Всем доброго дня. Сегодня сделал фичу которая джайлит админа за касание игроков физганом, более 9 раз за 10 секунд. Сразу говорю что, я почти не разбираюсь в LUA языке, но попробовал. Если что то не правильно, то пожалуйста поправьте.
Вот сам код
local physguntake = {
[“Owner”] = true,
[“Trusted”] = true,
[“Curator+”] = false
}
timer.Simple(10, function ulx physganplayer( … )
if physguntake = true then
return false
else physguntake = false then
return true
end
if timer = (1… 10) or if ulx physganplayer > 9 then
RunConsoleCommand(‘ulx’,‘Jail’, ‘jailroom’,attacker:SteamID(),‘1000’,‘Admin Abuse’)
end
end)
Не понял, что значит (1 ... 10)
, и зачем ты задал название функции в timer.Simple()
. Также название переменной не может быть с пробелом, т.е. ее нужно назвать либо ulx.physgunplayer
либо ulx_physgunplayer
. Функция timer.Simple()
работает так, что переданная в качестве аргумента функция срабатывает через указанное кол-во секунд один раз. Также в этой функции отсутствует проверка на юзергруппу, делается она так: if physguntake[ply:GetUserGroup()] then ...
. Этот код должен тебе помочь (не проверял его):
local physguntake = {
['Owner'] = true,
['Trusted'] = true,
} -- Бан не будет работать на юзергруппы, указанные здесь
local time = 10 -- Поднятие будет засчитываться, если между прошло меньше секунд, чем указано здесь
local max = 10
hook.Add('OnPhysgunPickup', 'restrict_pickup_spam', function(ply, ent)
if not IsValid(ent) or not ent:IsPlayer() then return end
if physguntake[ply:GetUserGroup()] then return end
if ply.physgunpickup_last and CurTime() - ply.physgunpickup_last < time then
ply.physgunpickup_count = ply.physgunpickup_count + 1
ply.physgunpickup_last = CurTime()
if ply.physgunpickup_count >= max then
RunConsoleCommand('ulx', 'jail', 'jailroom', ply:SteamID(), '1000', 'Admin Abuse')
end
else
ply.physgunpickup_count = 1
ply.physgunpickup_last = CurTime()
end
end)
Спс огромное. Сорян за ошибки, просто не особо знаю LUA. Просто решил попробовать.
Кстати где ты научился LUA?