Physgun Wiki

ENTITY:CanBeOpenedBy

 ENTITY:CanBeOpenedBy( Player ply )

Возвращает, есть ли у игрока «ключи» от двери: право запирать и отпирать её (например, из SWEP-а ключей).

Проверка доступа к замку, а не к +use. Применяется в SWEP-е ключей, см. туториал.

Проверки по порядку, первое совпадение решает:

  1. игрок является главным владельцем (IsDoorMainOwner);
  2. игрок является совладельцем (IsDoorSubOwner);
  3. дверь командная и ply:Team() совпадает с DoorTeam;
  4. дверь профессиональная и player_manager.GetPlayerClass(ply) совпадает с DoorJob;
  5. решение хука OnPlayerCanBeOpenDoor, по умолчанию false (у бесхозной двери ключей нет ни у кого).

Аргументы

1 Player ply
Проверяемый игрок.

Возвращает

1 boolean
true, если у игрока есть доступ к замку двери.

Пример

Реальное использование в entities/weapons/keys.lua (подробнее в туториале):

if not door:CanBeOpenedBy(ply) then self:Knock(door, hard) -- нет доступа: стук вместо Fire return end door:Fire(state)