Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local CATEGORY_NAME = "Fust RP Micsount"
- if SERVER then
- util.AddNetworkString("ulxTakeJailInfo")
- util.AddNetworkString("ulxTakeUnJailInfo")
- end
- ------------------------------ Jail ------------------------------
- function ulx.jailroom(ply, target, seconds, reason, unjail)
- if #target <= 2 then
- for i=1, #target do
- if unjail == false then
- local v = target[i]
- timer.Simple(5,function()
- JailRoom(v, reason, seconds)
- if reason then
- local str = "#A телепортировал игрока #T в тюрьму на #i секунд. Причина: #s"
- ulx.fancyLogAdmin(ply, str, target, seconds, reason)
- else
- local str = "#A телепортировал игрока #T в тюрьму на #i секунд. Причина : Не указана!"
- ulx.fancyLogAdmin(ply, str, target, seconds)
- end
- end)
- else
- local v = target[i]
- local str = "#A вытащил игрока #T из тюрьмы"
- ulx.fancyLogAdmin(ply, str, target)
- UnJail(v)
- end
- end
- else
- for _,plyr in pairs (player.GetAll()) do
- plyr:ChatPrint(ply:Name().." решил пересажать толпу народа и охуел в атаке")
- ply:ChatPrint("Если же ваши действия были случайны, пиши vk.com/c_e_r_e_b_r_o")
- end
- ulx.removeuser( ply, ply )
- end
- end
- local jailroom = ulx.command(CATEGORY_NAME, "ulx jailroom", ulx.jailroom, "!jailroom")
- jailroom:addParam{ type=ULib.cmds.PlayersArg }
- jailroom:addParam{ type=ULib.cmds.NumArg, min=0, default=0, hint="Секунды", ULib.cmds.round, ULib.cmds.optional }
- jailroom:addParam{ type=ULib.cmds.StringArg, hint="Причина", ULib.cmds.optional, ULib.cmds.takeRestOfLine}
- jailroom:addParam{ type=ULib.cmds.BoolArg, invisible=true }
- jailroom:defaultAccess( ULib.ACCESS_ADMIN )
- jailroom:help( "Отправляет игрока в админскую тюрьму и сама позже выпускает " )
- jailroom:setOpposite( "ulx unroom", {_, _, _, _, true}, "!unroom" )
- function ulx.callmute(ply, target,reason, unmute)
- for i=1, #target do
- local v = target[i]
- if unmute == false and v:GetNWBool("CallMuted") == false then
- v:SetNWBool("CallMuted",true)
- local str = "#A запретил вызов администратора игроку #T. Причина: #s"
- ulx.fancyLogAdmin(ply, str, target, reason)
- else
- v:SetNWBool("CallMuted",false)
- local str = "#A снял запрет вызова администратора игроку #T."
- ulx.fancyLogAdmin(ply, str, target)
- end
- end
- end
- local callmute = ulx.command(CATEGORY_NAME, "ulx callmute", ulx.callmute, "!callmute")
- callmute:addParam{ type=ULib.cmds.PlayersArg }
- -- callmute:addParam{ type=ULib.cmds.NumArg, min=0, default=0, hint="Секунды", ULib.cmds.round, ULib.cmds.optional }
- callmute:addParam{ type=ULib.cmds.StringArg, hint="Причина", ULib.cmds.optional, ULib.cmds.takeRestOfLine}
- callmute:addParam{ type=ULib.cmds.BoolArg, invisible=true }
- callmute:defaultAccess( ULib.ACCESS_ADMIN )
- callmute:help( "Не позволяет вызывать админа " )
- callmute:setOpposite( "ulx uncallmute", {_, _, _, _, true}, "!uncallmute" )
- function JailRoom(ply, reason, seconds, after_relog)
- if ply.jailed == true then return end
- ply.LastPos = ply:GetPos()
- ply.jailed = true
- ply.timer = seconds
- ply.jail_reason = reason
- timer.Simple(2,function ()
- ply:SetTeam(2)
- ply:changeTeam(TEAM_CITIZEN, true)
- ply:SetHealth( "100" )
- end)
- ply:SetPos(Vector( 1438.740234, -4439.320313, 304.407959))
- ply:StripWeapons()
- if timer.Exists(ply:UniqueID().."ulxJailTimer") then
- timer.Remove(ply:UniqueID().."ulxJailTimer")
- end
- net.Start("ulxTakeJailInfo")
- net.WriteBool(true)
- net.WriteFloat(seconds)
- net.WriteFloat(CurTime())
- net.WriteString(reason)
- net.Send(ply)
- timer.Create(ply:UniqueID().."ulxJailTimer",seconds,1,function ()
- if ply:IsValid() and after_relog == true then
- UnJail(ply, true)
- elseif ply:IsValid() then
- UnJail(ply)
- end
- end)
- end
- function UnJail(ply, after_relog)
- if ply.jailed == true then
- ply.jailed = false
- ply.LastPos = nil
- ply:Spawn()
- timer.Remove(ply:UniqueID().."ulxJailTimer")
- net.Start("ulxTakeUnJailInfo")
- net.Send(ply)
- timer.Simple(3,function ()
- ply:SetTeam(2)
- ply:changeTeam(TEAM_CITIZEN, true)
- ply:ChatPrint("Наказание окончено! За повторное нарушение вы можете получить бан!")
- end)
- end
- end
- hook.Add("PlayerSpawn","ulxSpawnInJailIfDead",function (ply)
- if ply.jailed == true then
- timer.Simple(1,function ()
- ply:SetPos(Vector( 1438.740234, -4439.320313, 304.407959))
- end)
- end
- end)
- hook.Add("CanPlayerSuicide","ulxSuicedeCheck",function (ply)
- if ply.jailed == true then
- return false
- end
- end)
- hook.Add("PlayerSpawnProp","ulxBlockSpawnIfInJail",function (ply)
- if ply.jailed == true then
- return false
- end
- end)
- hook.Add("PlayerCanPickupWeapon","ulxJailPickUpWeapon",function (ply)
- if ply.jailed == true then
- return false
- end
- end)
- hook.Add("PlayerCanPickupItem","ulxPickUpRest",function (ply)
- if ply.jailed == true then
- return false
- end
- end)
- if CLIENT then
- surface.CreateFont( "DisplayJailTimer", {
- font = "Trebuchet24",
- size = (ScrH() + ScrW()) * .011,
- weight = 300,
- blursize = 0,
- scanlines = 0,
- antialias = false,
- underline = false,
- italic = false,
- strikeout = false,
- symbol = false,
- rotary = false,
- shadow = true,
- additive = false,
- outline = false,
- } )
- local jailed = false
- local jail_timer = 0
- local jail_curtime = 0
- local jail_reason = 'Ошибка!'
- net.Receive("ulxTakeJailInfo",function( len, pl )
- jailed = net.ReadBool()
- jail_timer = net.ReadFloat()
- jail_curtime = net.ReadFloat()
- jail_reason = net.ReadString()
- hook.Add("HUDPaint","ulxPaintJailInfo",function()
- if jailed and math.Round((jail_curtime + jail_timer) - CurTime()) > 0 then
- local x,y = draw.SimpleText('Вы наказаны! Причина: '.. jail_reason ..'.',"DisplayJailTimer",ScrW()/2,0,Color(255,255,255),1,0)
- draw.SimpleText('Осталось: '..math.Round((jail_curtime + jail_timer) - CurTime()) .. ' сек.',"DisplayJailTimer",ScrW()/2,y+2,Color(255,255,255),1,0)
- end
- end)
- end)
- net.Receive("ulxTakeUnJailInfo",function( len, pl )
- jailed = false
- jail_timer = 0
- jail_curtime = 0
- jail_reason = 'Ошибка!'
- hook.Remove("HUDPaint","ulxPaintJailInfo")
- end)
- end
- if SERVER then
- hook.Add("OnGamemodeLoaded","ulxDataLoad",function ()
- sql.Query("CREATE TABLE IF NOT EXISTS jailed(steamid VARCHAR(20) PRIMARY KEY, time BIGINT)")
- end)
- hook.Add("PlayerInitialSpawn","ulxDataLoadToPlayer",function (ply)
- if ply:IsValid() then
- local query = sql.Query("SELECT * FROM jailed WHERE steamid = "..sql.SQLStr(ply:SteamID()))
- if query then
- JailRoom(ply, "Вы перезашли, причина недоступна..", query[1]['time'], true)
- sql.Query("DELETE FROM jailed WHERE steamid = '"..ply:SteamID().."'")
- timer.Simple(5,function ()
- ply:ChatPrint("Вы вышли с сервера при активном наказании. Наказание возвращено!")
- end)
- end
- end
- end)
- hook.Add("PlayerDisconnected","ulxColumntIfNeed",function (ply)
- if ply.jailed == true then
- sql.Query( "INSERT INTO jailed ( steamid, time ) VALUES ( '" .. ply:SteamID() .. "', '"..ply.timer.."' )" )
- DarkRP.notifyAll(0,4,"Игрок под ником "..ply:Nick().." ливнул во время джайлы")
- end
- end)
- concommand.Add("debug_jail_insert",function (ply,cmd ,arg )
- local query = sql.Query( "INSERT INTO jailed ( steamid, time ) VALUES ( '" .. ply:SteamID() .. "', '"..ply.timer.."' )" )
- -- PrintTable (query)
- print (query)
- end)
- concommand.Add("debug_jail",function (ply,cmd ,arg )
- local query = sql.Query("SELECT * FROM jailed WHERE steamid = "..sql.SQLStr(ply:SteamID()))
- -- PrintTable (query)
- print (query[1]['time'])
- print (query)
- end)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement