Physgun Wiki

GM:OnPlayerBuyDoor

 GM:OnPlayerBuyDoor( Player ply, Entity ent )

Вызывается из PLAYER:BuyDoor до покупки. Решает, разрешена ли покупка, и назначает цену.

Реализация по умолчанию сначала спрашивает класс профессии игрока (метод CanBuyDoor в jobs/*.lua или rp_player), и только если тот вернул nil, использует цену Config.Defaults.DoorCost:

function GM:OnPlayerBuyDoor(ply, ent) local canBuy, cost = player_manager.RunClass(ply, "CanBuyDoor", ent) if canBuy != nil then return canBuy, cost end return true, self.Config.Defaults.DoorCost end

Как и у всех хуков GMod, побеждает первый подписчик, вернувший не-nil: тогда дефолтная GM-реализация не вызывается. Если подписчик вернул true без цены, BuyDoor возьмёт цену из конфига.

Аргументы

1 Player ply
Покупатель.
2 Entity ent
Покупаемая дверь.

Возвращает

1 boolean
Разрешить ли покупку. false/nil: покупка отменяется.
2 number
Цена покупки. nil: используется Config.Defaults.DoorCost.

Пример

VIP-игроки покупают двери за полцены:

hook.Add("OnPlayerBuyDoor", "VIPDoorDiscount", function(ply, ent) if ply:IsUserGroup("vip") then return true, math.floor(GAMEMODE.Config.Defaults.DoorCost * 0.5) end end)