OnItemDeployed
OxideItemvoid OnItemDeployed(Deployer deployer, ItemModDeployable itemModDeployable, BaseEntity baseEntity)
void OnItemDeployed(Deployer deployer, BaseEntity baseEntity, BaseEntity baseEntity)Работает — метод игры в этой сборке тот же, под который написан хук.
Параметры
- deployer
- Deployer
- itemModDeployable
- ItemModDeployable
- baseEntity
- BaseEntity
Возвращаемое значение
voidВозвращаемое значение игнорируется — хук только уведомляет.
Пример
private void OnItemDeployed(Deployer deployer, ItemModDeployable itemModDeployable, BaseEntity baseEntity)
{
Puts("OnItemDeployed");
}Работает и в Oxide, и в Carbon: Carbon загружает плагины Oxide без изменений.
Место встраивания 1
Rust.opj (Oxide)
void Deployer.DoDeploy_Regular(Deployable, Ray)
Передаёт: Deployer deployer, ItemModDeployable itemModDeployable, BaseEntity baseEntity
РаботаетReturnBehavior: ContinueArgumentBehavior: UseArgumentString (this, l5, l6)Assembly-CSharp.dll
Где вызывается (код игры этой ветки)
// …
Debug.LogWarning("Couldn't create prefab:" + modDeployable.entityPrefab.resourcePath);
return;
}
baseEntity.skinID = ownerItem.skin;
baseEntity.SendMessage("SetDeployedBy", ownerPlayer, SendMessageOptions.DontRequireReceiver);
baseEntity.OwnerID = ownerPlayer.userID;
baseEntity.Spawn();
modDeployable.OnDeployed(baseEntity, ownerPlayer);
Interface.CallHook("OnItemDeployed", this, modDeployable, baseEntity);
Analytics.Azure.OnEntityBuilt(baseEntity, ownerPlayer);
UseItemAmount(1);
}
}Место встраивания 2
Rust.opj (Oxide)
void Deployer.DoDeploy_Slot(Deployable, Ray, NetworkableId)
Передаёт: Deployer deployer, BaseEntity baseEntity, BaseEntity baseEntity
РаботаетReturnBehavior: ContinueArgumentBehavior: UseArgumentString (this, l1, l4)Assembly-CSharp.dll
Где вызывается (код игры этой ветки)
// …
{
WorldPosition = baseEntity2.transform.position,
UintIdentifier = baseEntity2.prefabID,
IntIdentifier = GetOwnerItemDefinition().itemid
}, 1f);
}
}
modDeployable.OnDeployed(baseEntity2, ownerPlayer);
Interface.CallHook("OnItemDeployed", this, baseEntity, baseEntity2);
Analytics.Azure.OnEntityBuilt(baseEntity2, ownerPlayer);
if (!ownerPlayer.IsInCreativeMode || !Creative.freeBuild)
{
UseItemAmount(1);
}
}Источники: Rust.opj из OxideMod/Oxide.Rust (MIT) и метаданные хуков документации Carbon (MIT). Код методов — декомпиляция сервера этой ветки.