Хотелось бы узнать, как в ULX сделать так, чтобы игрок получал бан за выход с сервера во время пребывания в Jail?
Либо же, чтобы после перезахода на сервер не спадал Jail и игроку приходилось бы досиживать в нем оставшееся время.
Хотелось бы узнать, как в ULX сделать так, чтобы игрок получал бан за выход с сервера во время пребывания в Jail?
Либо же, чтобы после перезахода на сервер не спадал Jail и игроку приходилось бы досиживать в нем оставшееся время.
*Что-то из разряда “как потерять игрока”*
Окей, тогда как сделать так, чтобы Jail не спадал даже после перезахода?
Вот это уже интереснее подход. Решение несколькими сообщениями ниже
Кстати, я когда-то у себя делал бан за лив с сервера во время jail. Но я жалею об этом
Код со скриншота можно не переписывать, он не заработает без некоторых правок
Может также быть интересно:
А ну ка, еще попытка. Если это не сработает, то второй вариант ниже. Он более уродлив, но сработает наверняка
addons/anyname/lua/autorun/server/ulx_keepjail.lua
или
addons/anyname/lua/ulx/modules/sh/ulx_keepjail.lua
if CLIENT then return end -- усли установлено по первому пути, то можно удалить
local jailedPlayers = {}
hook.Add("PlayerDisconnected", "JailDisconnected", function(pl)
jailedPlayers[pl:SteamID()] = pl.jail and pl:GetPos() or nil
end, HOOK_MONITOR_HIGH)
hook.Add("PlayerInitialSpawn", "JailInitialSpawn", function(pl)
if jailedPlayers[pl:SteamID()] then
pl:SetPos( jailedPlayers[pl:SteamID()] )
RunConsoleCommand("ulx", "jail", "$" .. pl:SteamID())
pl:ChatPrint("За попытку избежать наказания, вы не выйдете с тюрьмы до рестарта сервера")
end
end)
Второй вариант
if CLIENT then return end -- усли установлено по первому пути, то можно удалить
local jailedPlayers = {}
local doDetour = function()
ulx_original_unjail_hook = ulx_original_unjail_hook or hook.GetTable()["PlayerDisconnected"]["ULXJailDisconnectedCheck"]
if ulx_original_unjail_hook then
hook.Add("PlayerDisconnected", "ULXJailDisconnectedCheck", ulx_original_unjail_hook, HOOK_HIGH) -- смена приоритета хука
end
end
hook.Add(ulx and ulx.HOOK_ULXDONELOADING or "", "unjail_on_disconnect_detour", doDetour)
doDetour()
hook.Add("PlayerDisconnected", "JailDisconnected", function(pl)
jailedPlayers[pl:SteamID()] = pl.jail and pl:GetPos() or nil
end, HOOK_MONITOR_HIGH)
hook.Add("PlayerInitialSpawn", "JailInitialSpawn", function(pl)
if jailedPlayers[pl:SteamID()] then
pl:SetPos( jailedPlayers[pl:SteamID()] )
RunConsoleCommand("ulx", "jail", "$" .. pl:SteamID())
pl:ChatPrint("За попытку избежать наказания, вы не выйдете с тюрьмы до рестарта сервера")
end
end)
Не тестил, т.к я раздобыл аддон-модификатор под ULX, который при обычном !ban выдает профу забанненого и лишает всех возможностей спавнить, менять профессию и т.д + выдает профу забаненного после перезахода.
p.s. это не JailRoom
Не подскажешь, что за аддон?
самописный
за сколько отдашь?
Уже не отдам, хард на ссд менял и переустанавливал винду, сейвил только необходимые мне файлы. Так что модификатора больше нет, но если что, то можно просто переписать бан в ULX