Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.08 KB | None | 0 0
  1. local CATEGORY_NAME = "Fust RP Micsount"
  2. if SERVER then
  3. util.AddNetworkString("ulxTakeJailInfo")
  4. util.AddNetworkString("ulxTakeUnJailInfo")
  5. end
  6.  
  7. ------------------------------ Jail ------------------------------
  8.  
  9. function ulx.jailroom(ply, target, seconds, reason, unjail)
  10. if #target <= 2 then
  11. for i=1, #target do
  12. if unjail == false then
  13. local v = target[i]
  14. timer.Simple(5,function()
  15. JailRoom(v, reason, seconds)
  16.  
  17.  
  18. if reason then
  19. local str = "#A телепортировал игрока #T в тюрьму на #i секунд. Причина: #s"
  20. ulx.fancyLogAdmin(ply, str, target, seconds, reason)
  21. else
  22. local str = "#A телепортировал игрока #T в тюрьму на #i секунд. Причина : Не указана!"
  23. ulx.fancyLogAdmin(ply, str, target, seconds)
  24. end
  25. end)
  26. else
  27. local v = target[i]
  28. local str = "#A вытащил игрока #T из тюрьмы"
  29. ulx.fancyLogAdmin(ply, str, target)
  30. UnJail(v)
  31. end
  32. end
  33. else
  34. for _,plyr in pairs (player.GetAll()) do
  35. plyr:ChatPrint(ply:Name().." решил пересажать толпу народа и охуел в атаке")
  36. ply:ChatPrint("Если же ваши действия были случайны, пиши vk.com/c_e_r_e_b_r_o")
  37.  
  38. end
  39. ulx.removeuser( ply, ply )
  40. end
  41. end
  42. local jailroom = ulx.command(CATEGORY_NAME, "ulx jailroom", ulx.jailroom, "!jailroom")
  43. jailroom:addParam{ type=ULib.cmds.PlayersArg }
  44. jailroom:addParam{ type=ULib.cmds.NumArg, min=0, default=0, hint="Секунды", ULib.cmds.round, ULib.cmds.optional }
  45. jailroom:addParam{ type=ULib.cmds.StringArg, hint="Причина", ULib.cmds.optional, ULib.cmds.takeRestOfLine}
  46. jailroom:addParam{ type=ULib.cmds.BoolArg, invisible=true }
  47. jailroom:defaultAccess( ULib.ACCESS_ADMIN )
  48. jailroom:help( "Отправляет игрока в админскую тюрьму и сама позже выпускает " )
  49. jailroom:setOpposite( "ulx unroom", {_, _, _, _, true}, "!unroom" )
  50.  
  51. function ulx.callmute(ply, target,reason, unmute)
  52. for i=1, #target do
  53. local v = target[i]
  54. if unmute == false and v:GetNWBool("CallMuted") == false then
  55. v:SetNWBool("CallMuted",true)
  56. local str = "#A запретил вызов администратора игроку #T. Причина: #s"
  57. ulx.fancyLogAdmin(ply, str, target, reason)
  58. else
  59. v:SetNWBool("CallMuted",false)
  60. local str = "#A снял запрет вызова администратора игроку #T."
  61. ulx.fancyLogAdmin(ply, str, target)
  62. end
  63. end
  64. end
  65. local callmute = ulx.command(CATEGORY_NAME, "ulx callmute", ulx.callmute, "!callmute")
  66. callmute:addParam{ type=ULib.cmds.PlayersArg }
  67. -- callmute:addParam{ type=ULib.cmds.NumArg, min=0, default=0, hint="Секунды", ULib.cmds.round, ULib.cmds.optional }
  68. callmute:addParam{ type=ULib.cmds.StringArg, hint="Причина", ULib.cmds.optional, ULib.cmds.takeRestOfLine}
  69. callmute:addParam{ type=ULib.cmds.BoolArg, invisible=true }
  70. callmute:defaultAccess( ULib.ACCESS_ADMIN )
  71. callmute:help( "Не позволяет вызывать админа " )
  72. callmute:setOpposite( "ulx uncallmute", {_, _, _, _, true}, "!uncallmute" )
  73.  
  74.  
  75.  
  76. function JailRoom(ply, reason, seconds, after_relog)
  77.  
  78. if ply.jailed == true then return end
  79. ply.LastPos = ply:GetPos()
  80. ply.jailed = true
  81. ply.timer = seconds
  82. ply.jail_reason = reason
  83. timer.Simple(2,function ()
  84. ply:SetTeam(2)
  85. ply:changeTeam(TEAM_CITIZEN, true)
  86. ply:SetHealth( "100" )
  87. end)
  88. ply:SetPos(Vector( 1438.740234, -4439.320313, 304.407959))
  89.  
  90. ply:StripWeapons()
  91. if timer.Exists(ply:UniqueID().."ulxJailTimer") then
  92. timer.Remove(ply:UniqueID().."ulxJailTimer")
  93. end
  94. net.Start("ulxTakeJailInfo")
  95. net.WriteBool(true)
  96. net.WriteFloat(seconds)
  97. net.WriteFloat(CurTime())
  98. net.WriteString(reason)
  99. net.Send(ply)
  100. timer.Create(ply:UniqueID().."ulxJailTimer",seconds,1,function ()
  101. if ply:IsValid() and after_relog == true then
  102. UnJail(ply, true)
  103. elseif ply:IsValid() then
  104. UnJail(ply)
  105. end
  106. end)
  107. end
  108.  
  109. function UnJail(ply, after_relog)
  110. if ply.jailed == true then
  111. ply.jailed = false
  112. ply.LastPos = nil
  113. ply:Spawn()
  114.  
  115. timer.Remove(ply:UniqueID().."ulxJailTimer")
  116. net.Start("ulxTakeUnJailInfo")
  117. net.Send(ply)
  118. timer.Simple(3,function ()
  119. ply:SetTeam(2)
  120. ply:changeTeam(TEAM_CITIZEN, true)
  121. ply:ChatPrint("Наказание окончено! За повторное нарушение вы можете получить бан!")
  122.  
  123. end)
  124.  
  125. end
  126. end
  127.  
  128.  
  129. hook.Add("PlayerSpawn","ulxSpawnInJailIfDead",function (ply)
  130. if ply.jailed == true then
  131. timer.Simple(1,function ()
  132. ply:SetPos(Vector( 1438.740234, -4439.320313, 304.407959))
  133. end)
  134. end
  135. end)
  136.  
  137. hook.Add("CanPlayerSuicide","ulxSuicedeCheck",function (ply)
  138. if ply.jailed == true then
  139. return false
  140. end
  141. end)
  142.  
  143. hook.Add("PlayerSpawnProp","ulxBlockSpawnIfInJail",function (ply)
  144. if ply.jailed == true then
  145. return false
  146. end
  147. end)
  148.  
  149. hook.Add("PlayerCanPickupWeapon","ulxJailPickUpWeapon",function (ply)
  150. if ply.jailed == true then
  151. return false
  152. end
  153. end)
  154.  
  155. hook.Add("PlayerCanPickupItem","ulxPickUpRest",function (ply)
  156. if ply.jailed == true then
  157. return false
  158. end
  159. end)
  160.  
  161.  
  162. if CLIENT then
  163. surface.CreateFont( "DisplayJailTimer", {
  164. font = "Trebuchet24",
  165. size = (ScrH() + ScrW()) * .011,
  166. weight = 300,
  167. blursize = 0,
  168. scanlines = 0,
  169. antialias = false,
  170. underline = false,
  171. italic = false,
  172. strikeout = false,
  173. symbol = false,
  174. rotary = false,
  175. shadow = true,
  176. additive = false,
  177. outline = false,
  178. } )
  179.  
  180. local jailed = false
  181. local jail_timer = 0
  182. local jail_curtime = 0
  183. local jail_reason = 'Ошибка!'
  184. net.Receive("ulxTakeJailInfo",function( len, pl )
  185. jailed = net.ReadBool()
  186. jail_timer = net.ReadFloat()
  187. jail_curtime = net.ReadFloat()
  188. jail_reason = net.ReadString()
  189. hook.Add("HUDPaint","ulxPaintJailInfo",function()
  190. if jailed and math.Round((jail_curtime + jail_timer) - CurTime()) > 0 then
  191. local x,y = draw.SimpleText('Вы наказаны! Причина: '.. jail_reason ..'.',"DisplayJailTimer",ScrW()/2,0,Color(255,255,255),1,0)
  192. draw.SimpleText('Осталось: '..math.Round((jail_curtime + jail_timer) - CurTime()) .. ' сек.',"DisplayJailTimer",ScrW()/2,y+2,Color(255,255,255),1,0)
  193. end
  194. end)
  195. end)
  196. net.Receive("ulxTakeUnJailInfo",function( len, pl )
  197. jailed = false
  198. jail_timer = 0
  199. jail_curtime = 0
  200. jail_reason = 'Ошибка!'
  201. hook.Remove("HUDPaint","ulxPaintJailInfo")
  202. end)
  203. end
  204.  
  205. if SERVER then
  206. hook.Add("OnGamemodeLoaded","ulxDataLoad",function ()
  207. sql.Query("CREATE TABLE IF NOT EXISTS jailed(steamid VARCHAR(20) PRIMARY KEY, time BIGINT)")
  208. end)
  209.  
  210. hook.Add("PlayerInitialSpawn","ulxDataLoadToPlayer",function (ply)
  211. if ply:IsValid() then
  212. local query = sql.Query("SELECT * FROM jailed WHERE steamid = "..sql.SQLStr(ply:SteamID()))
  213. if query then
  214. JailRoom(ply, "Вы перезашли, причина недоступна..", query[1]['time'], true)
  215. sql.Query("DELETE FROM jailed WHERE steamid = '"..ply:SteamID().."'")
  216. timer.Simple(5,function ()
  217. ply:ChatPrint("Вы вышли с сервера при активном наказании. Наказание возвращено!")
  218. end)
  219. end
  220. end
  221. end)
  222.  
  223. hook.Add("PlayerDisconnected","ulxColumntIfNeed",function (ply)
  224. if ply.jailed == true then
  225. sql.Query( "INSERT INTO jailed ( steamid, time ) VALUES ( '" .. ply:SteamID() .. "', '"..ply.timer.."' )" )
  226. DarkRP.notifyAll(0,4,"Игрок под ником "..ply:Nick().." ливнул во время джайлы")
  227. end
  228. end)
  229.  
  230. concommand.Add("debug_jail_insert",function (ply,cmd ,arg )
  231. local query = sql.Query( "INSERT INTO jailed ( steamid, time ) VALUES ( '" .. ply:SteamID() .. "', '"..ply.timer.."' )" )
  232. -- PrintTable (query)
  233. print (query)
  234. end)
  235.  
  236. concommand.Add("debug_jail",function (ply,cmd ,arg )
  237. local query = sql.Query("SELECT * FROM jailed WHERE steamid = "..sql.SQLStr(ply:SteamID()))
  238. -- PrintTable (query)
  239. print (query[1]['time'])
  240. print (query)
  241. end)
  242. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement