Guest User

Jail

a guest
Aug 27th, 2013
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 8.47 KB | None | 0 0
  1. --***********************************--
  2. --***********************************--
  3. --            Jail System            --
  4. --            By Al3grab             --
  5. --            Server Side            --
  6. --***********************************--
  7. --***********************************--
  8. Command = get("command") -- getTheCommand
  9.  
  10. rRoot = getResourceRootElement(getThisResource())
  11. ------
  12. function getData(to)
  13.     local file = xmlLoadFile("data.xml")
  14.          jTable = {}
  15.          tTable = {}
  16.     if file then
  17.         for k,v in ipairs (xmlNodeGetChildren(xmlFindChild(file,"Jails",0)))do
  18.             local name = xmlNodeGetAttribute(v,"name")
  19.             local posX,posY,posZ = xmlNodeGetAttribute(v,"posX"),xmlNodeGetAttribute(v,"posY"),xmlNodeGetAttribute(v,"posZ")
  20.             local int = xmlNodeGetAttribute(v,"int")
  21.             local dim = xmlNodeGetAttribute(v,"dim")
  22.             table.insert(jTable, {name,posX,posY,posZ,int,dim})
  23.         end
  24.         for k,v in ipairs (xmlNodeGetChildren(xmlFindChild(file,"time",0)))do
  25.             local times = xmlNodeGetAttribute(v,"times")
  26.                 for i =1,50 do
  27.                     local iTime = gettok ( times, i, string.byte(',') )
  28.                     if iTime then
  29.                     -- 
  30.                     if tonumber(iTime) > 59.5 then
  31.                         iTime = math.floor(iTime / 60)
  32.                         iTimeDes = "Minutes"
  33.                             if iTime > 59.5 then
  34.                                 iTime = math.floor(iTime / 60)
  35.                                 iTimeDes = "Hours"
  36.                             end
  37.                     else
  38.                         iTimeDes = "Seconds"
  39.                     end
  40.                         table.insert(tTable,{iTime,iTimeDes})
  41.                     end
  42.                 end
  43.         end
  44.     end
  45.     triggerClientEvent(to,"sendDataz",to,jTable,tTable) -- sending to client event
  46. end
  47. addEvent("getDataz",true)
  48. addEventHandler("getDataz",root,getData)
  49.  
  50.  
  51. addCommandHandler ( Command, -- Adding The Command Handler
  52.     function ( player, cmd )
  53.         if hasObjectPermissionTo ( player, "function.banPlayer" ) then
  54.             triggerClientEvent(player,"jailShow",player)
  55.         else
  56.         outputChatBox(" Access Denied ",player,255,0,0)
  57.     end
  58. end
  59. )
  60.  
  61. anims = {
  62.     "F_smklean_loop",
  63.     "M_smklean_loop",
  64.     "M_smkstnd_loop",
  65.     "M_smk_drag",
  66.     "M_smk_in",
  67.     "M_smk_loop",
  68.     "M_smk_out",
  69.     "M_smk_tap" ,
  70. }
  71.  
  72. function removeVehicle(thePlayer)
  73.     if isPedInVehicle(thePlayer) then destroyElement(getPedOccupiedVehicle(thePlayer)) end
  74. end
  75. function JailHim(jailed,theJails,time,timeDes,showWho,timeReady)
  76.         thePlayer = getPlayerFromName(jailed)
  77.         if not thePlayer then outputChatBox("** #FFFF00Please Select a Player !",source,255,0,0,true) return end
  78.         removePedFromVehicle(thePlayer)
  79.         for k,v in ipairs (  jTable  ) do
  80.                 if theJails == v[1] then
  81.                     theJail = v
  82.                 end
  83.         end
  84.         if theJail  then
  85.         if tostring(time) then
  86.             if timeReady == true then
  87.               theTimex = tonumber(time)
  88.             else
  89.              theTimex = gettok ( time, 1, string.byte(timeDes) )
  90.             end
  91.             if timeDes == "Hours" then
  92.                 theTimex = math.floor(theTimex*60*60*1000)
  93.                 elseif timeDes == "Minutes" then
  94.                 theTimex = math.floor(theTimex*60*1000)
  95.                 elseif timeDes == "Seconds" then
  96.                 theTimex = math.floor(theTimex*1000)
  97.             end
  98.             startJailTimer ( thePlayer , theTimex )
  99.         local x,y,z = theJail[2],theJail[3],theJail[4]
  100.         local int = theJail[5]
  101.         local dim = theJail[6]
  102.         setElementInterior ( thePlayer, int )
  103.         setElementDimension ( thePlayer, dim )
  104.         setElementPosition (thePlayer,x,y,z )
  105.         setElementData(thePlayer,"jailed",true)
  106.         setElementData(rRoot,""..getPlayerSerial(thePlayer).."-j",true)
  107.         toggleControl(thePlayer,"fire",false)
  108.         if showWho ~= true then
  109.         outputChatBox("** #FFFF00You Jailed [ "..getPlayerName(thePlayer).." #FFFF00] at "..theJail[1].." For "..time,source,255,0,0,true)
  110.         outputChatBox("** #FFFF00You Have Been Jailed By [ "..getPlayerName(source).." #FFFF00] at "..theJail[1].." For "..time,thePlayer,255,0,0,true)
  111.         end
  112.         outputChatBox("** #FFFF00[ "..getPlayerName(thePlayer).." #FFFF00] Has Been Jailed For "..time,root,255,0,0,true)
  113.         local randomAnim
  114.         setPedAnimation(thePlayer,"SMOKING",anims[math.random(#anims)],theTimex/2)
  115.         else
  116.         outputChatBox("** #FFFF00Please Select Time !",source,255,0,0,true)
  117.         end
  118.         else
  119.         outputChatBox("** #FFFF00Please Select a Jail !",source,255,0,0,true)
  120.         end
  121. end
  122. addEvent("JailHimx",true)
  123. addEventHandler("JailHimx",root,JailHim)
  124.  
  125. function unJailHim(jailed,showWho)
  126.     thePlayer = getPlayerFromName(jailed)
  127.     if not thePlayer then outputChatBox("** #FFFF00Please Select a Player !",source,255,0,0,true) return end
  128. --if getElementData(thePlayer,"jailed") == true then
  129.         setElementInterior ( thePlayer, 0)
  130.         setElementDimension ( thePlayer, 0 )
  131.         setElementPosition ( thePlayer, 1552.9108886719, -1675.5844726563, 16.1953125)
  132.         setElementData(thePlayer,"jailed",false)
  133.         setElementData(rRoot,""..getPlayerSerial(thePlayer).."-j",false)
  134.         if showWho ~= true then
  135.         outputChatBox("** #FFFF00You Released [ "..getPlayerName(thePlayer).." #FFFF00]",source,255,0,0,true)
  136.         outputChatBox("** #FFFF00You Have Been Released by [ "..getPlayerName(source).." #FFFF00]",thePlayer,255,0,0,true)
  137.         end
  138.         outputChatBox("** #FFFF00[ "..getPlayerName(thePlayer).." #FFFF00] Has Been Released ",root,255,0,0,true)
  139.         setPedAnimation(thePlayer)
  140.         stopJailTimer(Player)
  141.         toggleControl(thePlayer,"fire",true)
  142.     --  setTimer(killPed,1500,1,thePlayer)
  143. --else
  144.     --  outputChatBox("The Player is Not Jailed !",source,255,0,0,true)
  145. --end
  146. end
  147. addEvent("unJailHim",true)-- unJail
  148. addEventHandler("unJailHim",root,unJailHim)
  149.  
  150. addEvent("onJailEnd",true)
  151. addEventHandler("onJailEnd",root,function(player)
  152. unJailHim(getPlayerName(player),true)
  153. end )
  154.  
  155. addEventHandler("onPlayerSpawn",root, -- Check If He Is Jailed [ OnSpawn ]
  156. function()
  157. if getElementData(source,"jailed") == true then
  158.  randomJail = jTable[math.random(#jTable)]
  159. if randomJail then
  160.     x,y,z = randomJail[2],randomJail[3],randomJail[4]
  161.     int = randomJail[5]
  162.     dim = randomJail[6]
  163.     setElementInterior ( source, int )
  164.     setElementDimension(source,dim)
  165.     setElementPosition (source,x,y,z )
  166. end
  167. end
  168. end)
  169.  
  170. addEventHandler("onPlayerJoin",root, -- Check If He Is Jailed - By Serial [ OnJoin ]
  171. function()
  172. if getElementData(rRoot,""..getPlayerSerial(source).."-j") == true then
  173.  
  174.  randomJail = jTable[math.random(#jTable)]
  175. if randomJail then
  176.     x,y,z = randomJail[2],randomJail[3],randomJail[4]
  177.     int = randomJail[5]
  178.     dim = randomJail[6]
  179.     setElementInterior ( source, int )
  180.     setElementDimension(source,dim)
  181.     setElementPosition (source,x,y,z )
  182.     --
  183.     time = getElementData(rRoot,""..getPlayerSerial(source).."-t",time) or 5 * 1000
  184.     startJailTimer(source,time)
  185.     setElementData(source,"jailed",true)
  186. end
  187. end
  188. end )
  189.  
  190. ----
  191.  
  192. function startJailTimer(Player,theTime) -- to start mission timer ..
  193.     if Player then
  194.         TimerDisplay = textCreateDisplay()
  195.         m,s,cs = msToTimeStr(theTime)
  196.         fullTime = m..":"..s
  197.         TimerText = textCreateTextItem ( "Time Left : "..tostring(fullTime).."", 0.39, 0.7 ,"medium",0,255,0,255,2.0,"left","center",255)
  198.         textDisplayAddText ( TimerDisplay, TimerText )
  199.         textDisplayAddObserver ( TimerDisplay, Player )
  200.         sortTimerShit(Player,TimerText,theTime)
  201.     end
  202. end
  203.  
  204. --Robbed from JailTimerr resource , and it was robbed from arc_ :p
  205. function msToTimeStr(ms)
  206.     if not ms then
  207.         return ''
  208.     end
  209.    
  210.     if ms < 0 then
  211.         return "0","00","00"
  212.     end
  213.    
  214.     local centiseconds = tostring(math.floor(math.fmod(ms, 1000)/10))
  215.     if #centiseconds == 1 then
  216.         centiseconds = '0' .. centiseconds
  217.     end
  218.     local s = math.floor(ms / 1000)
  219.     local seconds = tostring(math.fmod(s, 60))
  220.     if #seconds == 1 then
  221.         seconds = '0' .. seconds
  222.     end
  223.     local minutes = tostring(math.floor(s / 60))
  224.    
  225.     return minutes, seconds, centiseconds
  226. end
  227.  
  228. function sortTimerShit(plr,timer,time) -- to sort timer's shit ..
  229.     if timer and time then
  230.             if isTimer(timerShitTimer) then
  231.         killTimer(timerShitTimer)
  232.     end
  233.         timerShitTimer = setTimer(function(plr)
  234.                 time = time - 70
  235.                 m,s,cs = msToTimeStr(time)
  236.                 fullTime = m..":"..s
  237.                 textItemSetText(timer,"Time Left : "..tostring(fullTime).."")
  238.                 if plr then
  239.                 setElementData(rRoot,""..getPlayerSerial(plr).."-t",time)
  240.                 end
  241.                 if ( tonumber(m) <= 0 and tonumber(s) <= 0 and tonumber(cs) <= 0 ) then
  242.                     onTimerFinish(plr,timer)
  243.                 end
  244.         end , 50 , 0 ,plr )
  245.     end
  246. end
  247.  
  248. function stopJailTimer(Player)
  249.     textDestroyDisplay(TimerDisplay)
  250.     if TimerText then
  251.     textDestroyTextItem(TimerText)
  252.     end
  253.     if isTimer(timerShitTimer) then
  254.         killTimer(timerShitTimer)
  255.     end
  256. end
  257.  
  258. function onTimerFinish(Player) -- on timer end
  259.     stopJailTimer(Player)
  260.     triggerEvent("onJailEnd",Player,Player)
  261. end
Advertisement
Add Comment
Please, Sign In to add comment