Advertisement
Guest User

jail server

a guest
Jun 18th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.96 KB | None | 0 0
  1. -- jail command, obsolete
  2. TriggerEvent('es:addGroupCommand', 'jail', 'admin', function(source, args, user)
  3. if args[1] and GetPlayerName(args[1]) ~= nil and args[2] then
  4. TriggerEvent('esx_jailer:sendToJail', tonumber(args[1]), tonumber(args[2] * 60))
  5. else
  6. TriggerClientEvent('chatMessage', source, "SYSTEM", {255, 0, 0}, "Invalid player ID or jail time!")
  7. end
  8. end, function(source, args, user)
  9. TriggerClientEvent('chatMessage', source, "SYSTEM", {255, 0, 0}, "Insufficient Permissions.")
  10. end, {help = "Put a player in jail", params = {{name = "id", help = "target id"}, {name = "time", help = "jail time in minutes"}}})
  11.  
  12. -- unjail
  13. TriggerEvent('es:addGroupCommand', 'unjail', 'admin', function(source, args, user)
  14. if args[1] and GetPlayerName(args[1]) ~= nil then
  15. TriggerEvent('esx_jailer:unjailQuest', tonumber(args[1]))
  16. else
  17. TriggerEvent('esx_jailer:unjailQuest', source)
  18. end
  19. end, function(source, args, user)
  20. TriggerClientEvent('chatMessage', source, "SYSTEM", {255, 0, 0}, "Insufficient Permissions.")
  21. end, {help = "Unjail people from jail", params = {{name = "id", help = "target id"}}})
  22.  
  23. -- send to jail and register in database
  24. RegisterServerEvent('esx_jailer:sendToJail')
  25. AddEventHandler('esx_jailer:sendToJail', function(source, jailTime)
  26. local identifier = GetPlayerIdentifiers(source)[1]
  27. MySQL.Async.fetchAll('SELECT * FROM jail WHERE identifier=@id', {['@id'] = identifier}, function(gotInfo)
  28. if gotInfo[1] ~= nil then
  29. MySQL.Sync.execute("UPDATE jail SET jail_time=@jt WHERE identifier=@id", {['@id'] = identifier, ['@jt'] = jailTime})
  30. else
  31. MySQL.Async.execute("INSERT INTO jail (identifier,jail_time) VALUES (@identifier,@jail_time)", {['@identifier'] = identifier, ['@jail_time'] = jailTime})
  32. end
  33. end)
  34.  
  35. TriggerClientEvent('chatMessage', -1, _U('judge'), { 147, 196, 109 }, _U('jailed_msg', GetPlayerName(source), round(jailTime / 60)))
  36. TriggerClientEvent('esx_jailer:jail', source, jailTime)
  37. end)
  38.  
  39. -- should the player be in jail?
  40. RegisterServerEvent('esx_jailer:checkjail')
  41. AddEventHandler('esx_jailer:checkjail', function()
  42. local player = source -- cannot parse source to client trigger for some weird reason
  43. local identifier = GetPlayerIdentifiers(player)[1] -- get steam identifier
  44. MySQL.Async.fetchAll('SELECT * FROM jail WHERE identifier=@id', {['@id'] = identifier}, function(gotInfo)
  45. if gotInfo[1] ~= nil then
  46. TriggerClientEvent('chatMessage', -1, _U('judge'), { 147, 196, 109 }, _U('jailed_msg', GetPlayerName(player), round(gotInfo[1].jail_time / 60)))
  47. TriggerClientEvent('esx_jailer:jail', player, tonumber(gotInfo[1].jail_time))
  48. end
  49. end)
  50. end)
  51.  
  52. -- unjail via command
  53. RegisterServerEvent('esx_jailer:unjailQuest')
  54. AddEventHandler('esx_jailer:unjailQuest', function(source)
  55. if source ~= nil then
  56. unjail(source)
  57. end
  58. end)
  59.  
  60. -- unjail after time served
  61. RegisterServerEvent('esx_jailer:unjailTime')
  62. AddEventHandler('esx_jailer:unjailTime', function()
  63. unjail(source)
  64. end)
  65.  
  66. -- keep jailtime updated
  67. RegisterServerEvent('esx_jailer:updateRemaining')
  68. AddEventHandler('esx_jailer:updateRemaining', function(jailTime)
  69. local identifier = GetPlayerIdentifiers(source)[1]
  70. MySQL.Async.fetchAll('SELECT * FROM jail WHERE identifier=@id', {['@id'] = identifier}, function(gotInfo)
  71. if gotInfo[1] ~= nil then
  72. MySQL.Sync.execute("UPDATE jail SET jail_time=@jt WHERE identifier=@id", {['@id'] = identifier, ['@jt'] = jailTime})
  73. end
  74. end)
  75. end)
  76.  
  77. function unjail(target)
  78. local identifier = GetPlayerIdentifiers(target)[1]
  79. MySQL.Async.fetchAll('SELECT * FROM jail WHERE identifier=@id', {['@id'] = identifier}, function(gotInfo)
  80. if gotInfo[1] ~= nil then
  81. MySQL.Async.execute('DELETE from jail WHERE identifier = @id', {['@id'] = identifier})
  82. TriggerClientEvent('chatMessage', -1, _U('judge'), { 147, 196, 109 }, _U('unjailed', GetPlayerName(target)))
  83. end
  84. end)
  85. TriggerClientEvent('esx_jailer:unjail', target)
  86. end
  87.  
  88. function round(x)
  89. return x>=0 and math.floor(x+0.5) or math.ceil(x-0.5)
  90. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement