Skip to content

Подарки

Система подарков FH позволяет игрокам подбирать коробки с положительными или отрицательными эффектами. Вы можете регистрировать собственные.

Свои эффекты

gifts.AddPositiveEffect(name, desc, num, func, [req]) SERVER

Регистрирует положительный эффект подарка.

ПараметрТипОписание
namestringТехническое имя эффекта
descstringОписание для игрока (можно вписать переводимую строку или оставить пустым)
numintЧисло для подстановки в %i описания (если ≥ 0)
funcfunctionФункция, выполняемая при получении эффекта
reqfunction (опц.)Условие выдачи эффекта

Пример: выдать монтировку игроку, если у него её нет.

lua
gifts.AddPositiveEffect(
    "give_crowbar",
    "fazhunt.gifts.crowbar_received",
    -1,
    function(ply)
        ply:Give("weapon_crowbar")
    end,
    function(ply)
        -- Выдавать только если монтировки ещё нет
        return not ply:HasWeapon("weapon_crowbar")
    end
)

gifts.AddNegativeEffect(name, desc, num, func) SERVER

Регистрирует отрицательный эффект подарка. Параметры — те же, кроме req.

lua
gifts.AddNegativeEffect(
    "slow_player",
    "fazhunt.gifts.slowed",
    -1,
    function(ply)
        ply:SetWalkSpeed(100)
        ply:SetRunSpeed(150)
    end
)

gifts.GrantEffect(ply, name) SERVER

Выдаёт игроку позитивный эффект с подарков.

lua
hook.Add( "PlayerSay", "ChatGift", function( ply, text )
	if ply:IsAdmin() and string.StartWith( string.lower( text ), "/gift " ) then
		gifts.GrantEffect(ply, string.sub( text, 7 )) 
		-- Мы написали 7 в string.sub потому что это длина "/gift " + 1
		return ""
	end
end )

Хуки

FH_ShouldPlayerReceiveGifts HOOK SERVER

Вызывается перед тем, как заспавнить подарок игроку. Возврат false — игрок не получит подарок.

lua
hook.Add("FH_ShouldPlayerReceiveGifts", "NoGiftsForAdmins", function(ply)
	-- Админы не получают подарки.
    if ply:IsAdmin() then return false end
end)

См. также