Dice Posted April 4, 2013 Share Posted April 4, 2013 --server function jailPlayer( player, cmd, target, ttime ) if isPlayerAdmin ( player ) then jailedPlayer = getPlayerFromName ( target ) if jailedPlayer then if getElementData ( jailedPlayer, "jailed" ) == false then if isPedInVehicle ( jailedPlayer ) then removePedFromVehicle ( jailedPlayer ) end local jx, jy, jz = unpack(jailcells[math.random(#jailcells)]) setElementDimension ( jailedPlayer, 60601 ) setElementInterior ( jailedPlayer, 12 ) setElementPosition ( jailedPlayer, jx, jy, jz ) setElementData ( jailedPlayer, "jailed", true ) triggerClientEvent ( root, "clientStartTimer", jailedPlayer, jailedPlayer ) else outputChatBox ( "This Player is already jailed!", player, 255, 0, 0 ) end else outputChatBox ( "Player does not exist!", player, 255, 0, 0 ) end end end addCommandHandler ( "jail", jailPlayer ) --client function startTimer ( jailedPlayer, ttime ) ttimef = ttime setTimer ( clientUnJail, ttimef, 1, localPlayer ) end addEvent ( "clientStartTimer", true ) addEventHandler ( "clientStartTimer", resourceRoot, startTimer ) function clientUnJail ( localPlayer ) triggerServerEvent ( "sUnJail", localPlayer ) end ---server function unjailPlayer ( jailedPlayer ) setElementData ( jailedPlayer, "jailed", false ) setElementDimension ( jailedPlayer, 0 ) setElementInterior ( jailedPlayer, 0 ) setElementPosition ( jailedPlayer, 2492.408, 2773.22, 10.80 ) end addEvent ( "sUnJail", true ) addEventHandler ( "sUnJail", root, unjailPlayer ) Hi, im trying to get the timer to work on this jail system can someoen help? Link to comment
PaiN^ Posted April 4, 2013 Share Posted April 4, 2013 There's no need to use client side ! [server] timeToJail = 1 -- In minutes ! function jailPlayer( player, cmd, target, ttime ) if isPlayerAdmin ( player ) then jailedPlayer = getPlayerFromName ( target ) if jailedPlayer then if getElementData ( jailedPlayer, "jailed" ) == false then if isPedInVehicle ( jailedPlayer ) then removePedFromVehicle ( jailedPlayer ) end local jx, jy, jz = unpack(jailcells[math.random(#jailcells)]) setElementDimension ( jailedPlayer, 60601 ) setElementInterior ( jailedPlayer, 12 ) setElementPosition ( jailedPlayer, jx, jy, jz ) setElementData ( jailedPlayer, "jailed", true ) setTimer ( function ( ) setElementData ( jailedPlayer, "jailed", false ) setElementDimension ( jailedPlayer, 0 ) setElementInterior ( jailedPlayer, 0 ) setElementPosition ( jailedPlayer, 2492.408, 2773.22, 10.80 ) end, ( timeToJail * 1000 ) * 60, 1 ) else outputChatBox ( "This Player is already jailed!", player, 255, 0, 0 ) end else outputChatBox ( "Player does not exist!", player, 255, 0, 0 ) end end end addCommandHandler ( "jail", jailPlayer ) Just change the ' timeToJail ' to the time you want .. Link to comment
Dice Posted April 4, 2013 Author Share Posted April 4, 2013 Will this work if I jail multiple people. Link to comment
Dice Posted April 4, 2013 Author Share Posted April 4, 2013 like if i do /jail #Pai_[N] 10 then i do /jail Dik120 10 will that overwrite something? Link to comment
PaiN^ Posted April 4, 2013 Share Posted April 4, 2013 function jailPlayer( player, cmd, target, ttime ) if isPlayerAdmin ( player ) then jailedPlayer = getPlayerFromName ( target ) if jailedPlayer then if getElementData ( jailedPlayer, "jailed" ) == false then if isPedInVehicle ( jailedPlayer ) then removePedFromVehicle ( jailedPlayer ) end local jx, jy, jz = unpack(jailcells[math.random(#jailcells)]) setElementDimension ( jailedPlayer, 60601 ) setElementInterior ( jailedPlayer, 12 ) setElementPosition ( jailedPlayer, jx, jy, jz ) setElementData ( jailedPlayer, "jailed", true ) setTimer ( function ( ) setElementData ( jailedPlayer, "jailed", false ) setElementDimension ( jailedPlayer, 0 ) setElementInterior ( jailedPlayer, 0 ) setElementPosition ( jailedPlayer, 2492.408, 2773.22, 10.80 ) end, ( ttime * 1000 ) * 60, 1 ) else outputChatBox ( "This Player is already jailed!", player, 255, 0, 0 ) end else outputChatBox ( "Player does not exist!", player, 255, 0, 0 ) end end end addCommandHandler ( "jail", jailPlayer ) This should do it, Give it a try .. Link to comment
Dice Posted April 4, 2013 Author Share Posted April 4, 2013 ,hmm i will just use a table thanks. Link to comment
Moderators IIYAMA Posted April 4, 2013 Moderators Share Posted April 4, 2013 Don't forget to check after the timer ends, if the player is an element else you will have warnings when he leaves before the timer ends. isElement() --- or as you said, put the timer in a table with the player user data as key. +argument timer location. When he leaves you can stop the timer easily. [player] ={timer,timer,timer} There are many possibility's. Link to comment
Moderators IIYAMA Posted April 4, 2013 Moderators Share Posted April 4, 2013 local runningTimers = {} function jailPlayer( player, cmd, target, ttime ) if isPlayerAdmin ( player ) then jailedPlayer = getPlayerFromName ( target ) if jailedPlayer then if getElementData ( jailedPlayer, "jailed" ) == false then if isPedInVehicle ( jailedPlayer ) then removePedFromVehicle ( jailedPlayer ) end local jx, jy, jz = unpack(jailcells[math.random(#jailcells)]) setElementDimension ( jailedPlayer, 60601 ) setElementInterior ( jailedPlayer, 12 ) setElementPosition ( jailedPlayer, jx, jy, jz ) setElementData ( jailedPlayer, "jailed", true ) if not runningTimers[jailedPlayer] then runningTimers[jailedPlayer] = {} end local newTabPos = #runningTimers[jailedPlayer] +1 runningTimers[player][newTabPos] = setTimer ( function (newTabPos,jailedPlayer) runningTimers[player][newTabPos] = nil setElementData ( jailedPlayer, "jailed", false ) setElementDimension ( jailedPlayer, 0 ) setElementInterior ( jailedPlayer, 0 ) setElementPosition ( jailedPlayer, 2492.408, 2773.22, 10.80 ) end,1000,1,newTabPos,jailedPlayer) else outputChatBox ( "This Player is already jailed!", player, 255, 0, 0 ) end else outputChatBox ( "Player does not exist!", player, 255, 0, 0 ) end end end addCommandHandler ( "jail", jailPlayer ) addEventHandler ( "onPlayerQuit", getRootElement(), function() if runningTimers[source] then if next(runningTimers[source]) then for i,timer in pairs(runningTimers[source]) do if isTimer(timer) then killTimer(timer) end end end runningTimers[source] = nil end end) and no I haven't test anything, there may some mistakes/bugs, but I don't have much time. Killing timers before executing will safe you some power. This system is only efficient when you use more then 1 timer. Link to comment
Dice Posted April 5, 2013 Author Share Posted April 5, 2013 line 20 why is [player] shouldnt that be jailedPlayer? i'm confused, i'm a noob at tables when it comes to this extent, I just dont get what is going on here. Link to comment
ZL|LuCaS Posted April 5, 2013 Share Posted April 5, 2013 line 20 why is [player] shouldnt that be jailedPlayer? i'm confused, i'm a noob at tables when it comes to this extent, I just dont get what is going on here. /debugscript 3 is showing some error? Link to comment
Dice Posted April 5, 2013 Author Share Posted April 5, 2013 No, it works fine, just wondering if that is how it is suppose to be. Link to comment
ZL|LuCaS Posted April 5, 2013 Share Posted April 5, 2013 No, it works fine, just wondering if that is how it is suppose to be. the script is correct. Link to comment
Moderators IIYAMA Posted April 5, 2013 Moderators Share Posted April 5, 2013 line 20 why is [player] shouldnt that be jailedPlayer? i'm confused, i'm a noob at tables when it comes to this extent, I just dont get what is going on here. yes, it should be jailedPlayer. Here fixed. local runningTimers = {} function jailPlayer( player, cmd, target, ttime ) if isPlayerAdmin ( player ) then jailedPlayer = getPlayerFromName ( target ) if jailedPlayer then if getElementData ( jailedPlayer, "jailed" ) == false then if isPedInVehicle ( jailedPlayer ) then removePedFromVehicle ( jailedPlayer ) end local jx, jy, jz = unpack(jailcells[math.random(#jailcells)]) setElementDimension ( jailedPlayer, 60601 ) setElementInterior ( jailedPlayer, 12 ) setElementPosition ( jailedPlayer, jx, jy, jz ) setElementData ( jailedPlayer, "jailed", true ) if not runningTimers[jailedPlayer] then runningTimers[jailedPlayer] = {} end local newTabPos = #runningTimers[jailedPlayer] +1 runningTimers[jailedPlayer][newTabPos] = setTimer ( function (newTabPos,jailedPlayer) runningTimers[jailedPlayer][newTabPos] = nil setElementData ( jailedPlayer, "jailed", false ) setElementDimension ( jailedPlayer, 0 ) setElementInterior ( jailedPlayer, 0 ) setElementPosition ( jailedPlayer, 2492.408, 2773.22, 10.80 ) end,1000,1,newTabPos,jailedPlayer) else outputChatBox ( "This Player is already jailed!", player, 255, 0, 0 ) end else outputChatBox ( "Player does not exist!", player, 255, 0, 0 ) end end end addCommandHandler ( "jail", jailPlayer ) addEventHandler ( "onPlayerQuit", getRootElement(), function() if runningTimers[source] then if next(runningTimers[source]) then for i,timer in pairs(runningTimers[source]) do if isTimer(timer) then killTimer(timer) end end end runningTimers[source] = nil end end) No, it works fine, just wondering if that is how it is suppose to be. There are many ways to Rome. If I let somebody else, script this. It probably will look differed. I like to build my timers in to a table core, so I can easily manage them. With manage I mean: stop them when they should be stopped. With this you can add more timers in to the same system. When somebody leaves the server, all timers that have been managed will be killed before executing. local runningTimers = {} function timerset() local newTabPos = #runningTimers[myPlayer] +1 runningTimers[myPlayer][newTabPos] = setTimer ( function (newTabPos,myPlayer) runningTimers[myPlayer][newTabPos] = nil end,30000,1,newTabPos,myPlayer) end addEventHandler ( "onPlayerQuit", getRootElement(), function() if runningTimers[source] then if next(runningTimers[source]) then for i,timer in pairs(runningTimers[source]) do if isTimer(timer) then killTimer(timer) end end end runningTimers[source] = nil end end) Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now