RustTip

CanSetRelationship

OxideCarbonPlayer

Called to determine whether to set relationship.

Return true to allow the action and false to block it.

object CanSetRelationship(BasePlayer player, BasePlayer otherPlayer, RelationshipManager.RelationshipType type, int weight)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

player
BasePlayer
otherPlayer
BasePlayer
type
RelationshipManager.RelationshipType
weight
int

Возвращаемое значение

objectВерните не null, чтобы отменить действие игры.

Пример

object — можно повлиять на игру: вернуть значение, чтобы изменить или отменить действие.

private object CanSetRelationship(BasePlayer player, BasePlayer otherPlayer, RelationshipManager.RelationshipType type, int weight)
{
    Puts("CanSetRelationship");

    // ничего не меняем — игра продолжит как обычно
    return null;

    // повлиять на игру:
    // return false; // не null — действие игры отменяется
}

Работает и в Oxide, и в Carbon: Carbon загружает плагины Oxide без изменений.

Место встраивания

Rust.opj (Oxide)
void RelationshipManager.SetRelationship(BasePlayer, BasePlayer, RelationshipManager.RelationshipType, int, bool)

Передаёт: BasePlayer player, BasePlayer otherPlayer, RelationshipManager.RelationshipType type, int weight

РаботаетReturnBehavior: ExitWhenValidTypeArgumentBehavior: UseArgumentString (a0, a1, a2, a3)Assembly-CSharp.dll

Где вызывается (код игры этой ветки)

// …
	return;
}
ulong num = player.userID.Get();
ulong num2 = otherPlayer.userID.Get();
if (player == null || player == otherPlayer || player.IsNpc || (otherPlayer != null && otherPlayer.IsNpc))
{
	return;
}
if (Interface.CallHook("CanSetRelationship", player, otherPlayer, type, weight) != null)
{
	return;
}
PlayerRelationships playerRelationships = GetRelationships(num);
otherPlayer.requestingReputationUpdate = true;
if (!CleanupOldContacts(playerRelationships, num))
{
	CleanupOldContacts(playerRelationships, num, RelationshipType.Enemy);
// …

Источники: Rust.opj из OxideMod/Oxide.Rust (MIT) и метаданные хуков документации Carbon (MIT). Код методов — декомпиляция сервера этой ветки.