Jump to content

disable warping


5150

Recommended Posts

is it possible to unbind someones f1 in a certain area, then rebind when they leave? or maybe just disable any warping functions while in an area? i have a jail cell im building in interior 6, and i dont want the criminals to just warp out

Link to comment
function jailCell(thePlayer) 
    toggleControl(thePlayer, "fire", false) 
    toggleControl(thePlayer, "previouse_weapon", false) 
    if isKeyBound("F1", "down") then cancelEvent() end 
    toggleControl(thePlayer, "next_weapon", false) 
    toggleControl(thePlayer, "anim_weapon", false) 
    setPedWeaponSlot(thePlayer, 0) 
end 

add this to jail script and i guess will work

Link to comment

1. will that enable f1 once he is released? and 2. where in the script?

maybe it would be easier to copy the script so here, take a look:

client

lp = getLocalPlayer() 
rRoot = getResourceRootElement(getThisResource()) 
setElementData(lp,"jailed",false) 
------ 
addEventHandler("onClientResourceStart",rRoot,function() 
triggerServerEvent("getDataz",lp,lp) 
outputDebugString("Jail System v2.1 By Al3grab | Started") 
end ) 
desz = {} 
addEvent("sendDataz",true) 
addEventHandler("sendDataz",root,function(jTable,tTable) 
  
------ 
  
jWin = guiCreateWindow(460,172,445,416,"Jail System",false) 
--- Center Window --- 
local screenW,screenH=guiGetScreenSize() 
local windowW,windowH=guiGetSize(jWin,false) 
local x,y = (screenW-windowW)/2,(screenH-windowH)/2 
guiSetPosition(jWin,x,y,false) 
----- Center Window ----- 
guiSetVisible(jWin,false) 
guiWindowSetSizable(jWin,false) 
------------------------- 
jBut = guiCreateButton(247,338,167,31,"Jail Him",false,jWin) 
tGrid = guiCreateGridList(240,184,190,144,false,jWin) 
guiGridListSetSelectionMode(tGrid,0) 
------- 
-- 
sEdit = guiCreateEdit(14,380,217,23,"Search ..",false,jWin) 
-- 
-------- 
local timeC = guiGridListAddColumn( tGrid, "Time", 0.85 ) 
if timeC then 
for k,v in ipairs ( tTable ) do 
local time = v[1] 
local des = v[2] 
local row = guiGridListAddRow ( tGrid ) 
desz[row] = des 
guiGridListSetItemText ( tGrid, row, timeC, time.." "..des, false, true ) 
end 
local row = guiGridListAddRow ( tGrid ) 
guiGridListSetItemText ( tGrid, row, timeC,"Other ..", false, true ) 
end 
-------- 
jGrid = guiCreateGridList(240,31,190,144,false,jWin) 
guiGridListSetSelectionMode(jGrid,0) 
-------- 
local jailC = guiGridListAddColumn( jGrid, "Jail", 0.85 ) 
for k,v in ipairs ( jTable ) do 
local name = v[1] 
local row = guiGridListAddRow ( jGrid ) 
guiGridListSetItemText ( jGrid, row, jailC, name, false, false ) 
end 
jcBut = guiCreateButton(246,378,172,24,"Close",false,jWin) 
  
function jailShow () 
    guiSetVisible(jWin,not guiGetVisible ( jWin ) ) 
    showCursor(guiGetVisible ( jWin ) ) 
    guiSetInputEnabled(guiGetVisible ( jWin ) ) 
    destroyElement(pList) 
    -- Players List 
         pList = guiCreateGridList(14,31,218,338,false,jWin)     
         column = guiGridListAddColumn( pList, "Player", 0.85 ) 
        if ( column ) then 
        for id, player in ipairs(getElementsByType("player")) do 
             row = guiGridListAddRow ( pList ) 
            guiGridListSetItemText ( pList, row, column, getPlayerName ( player ), false, false ) 
        end 
        end 
    -- Players List 
end 
addEvent("jailShow",true) 
addEventHandler("jailShow",root,jailShow) 
  
function changeText(button,state,x,y) 
        selectedRow, selectedCol = guiGridListGetSelectedItem( pList ) 
        sPlayer = guiGridListGetItemText( pList, selectedRow, selectedCol ) 
        local thePlr = getPlayerFromName(sPlayer) 
        if thePlr then 
            local isJailed = getElementData(thePlr,"jailed") 
            if isJailed == false then 
                guiSetText(jBut,"Jail Him") 
            elseif isJailed == true then 
                guiSetText(jBut,"Release Him") 
            end 
        end 
     
end 
addEventHandler("onClientGUIClick",root,changeText) 
  
function onClick (button, state, absoluteX, absoluteY) 
    selectedRow, selectedCol = guiGridListGetSelectedItem( pList ) 
        sPlayer = guiGridListGetItemText( pList, selectedRow, selectedCol ) 
        jail = guiGridListGetItemText ( jGrid, guiGridListGetSelectedItem ( jGrid ), 1 ) 
        time = guiGridListGetItemText ( tGrid, guiGridListGetSelectedItem ( tGrid ), 1 ) 
        timeDes = tostring(desz[guiGridListGetSelectedItem ( tGrid )]) 
    if ( source == jBut ) then 
        if guiGetText(jBut) == "Jail Him" then 
            if time ~= "Other .." then 
                triggerServerEvent("JailHimx",lp,sPlayer,jail,time,timeDes) 
            else 
                createTimeSelect(sPlayer,jail) 
            end 
        elseif guiGetText(jBut) == "Release Him" then 
            triggerServerEvent("unJailHim",lp,sPlayer) 
    end 
---------- 
elseif ( source == jcBut ) then 
    guiSetVisible (jWin, false) 
    showCursor (false) 
    guiSetInputEnabled(false) 
    end 
    end 
addEventHandler( "onClientGUIClick", root, onClick ) 
  
------------ 
end ) 
  
addEventHandler("onClientPlayerDamage",root,function(at) 
if getElementData(source,"jailed") == true then 
if at then cancelEvent() end 
end 
end ) 
  
------- 
  
addEventHandler("onClientGUIClick",root,function() 
if source == sEdit then 
    guiSetText(sEdit,"") 
    --[[ 
else 
    guiSetText(sEdit,"Search ..") 
    --]] 
end end ) 
  
addEventHandler("onClientGUIChanged",root,function() 
if source == sEdit then 
    ------ 
    guiGridListClear(pList) 
    for k,v in ipairs ( getElementsByType("player") ) do 
        local name = string.lower(getPlayerName(v)) 
        if name then 
            if string.find (name,string.lower(guiGetText(sEdit)) ) then 
                row = guiGridListAddRow ( pList ) 
                guiGridListSetItemText ( pList, row, column, getPlayerName ( v ), false, false ) 
                end 
            end 
        end 
    end 
    ------ 
end ) 
------ 
function createTimeSelect(theJailed,theJail) 
    if not tostring(theJailed) then outputChatBox("** #FFFF00Please Select a Player!",255,0,0,true) return  end 
    if not tostring(theJail) then outputChatBox("** #FFFF00Please Select a Jail!",255,0,0,true) return end   
    if isElement(TimeSelect_Window) then return end  
    TimeSelect_Window = guiCreateWindow(550,397,270,125,"Enter Time",false) 
    -- 
    local screenW,screenH=guiGetScreenSize() 
    local windowW,windowH=guiGetSize(TimeSelect_Window,false) 
    local x,y = (screenW-windowW)/2,(screenH-windowH)/2 
    guiSetPosition(TimeSelect_Window,x,y,false) 
    -- 
--  guiSetVisible(jWin,false) 
    -- 
    TimeSelect_Edit = guiCreateEdit(15,37,89,26,"",false,TimeSelect_Window) 
    TimeSelect_Label = guiCreateLabel(110,41,10,15,"in",false,TimeSelect_Window) 
    TimeSelect_Grid = guiCreateGridList(126,31,130,95,false,TimeSelect_Window) 
    guiGridListSetSelectionMode(TimeSelect_Grid,2) 
    --- 
    column = guiGridListAddColumn( TimeSelect_Grid, "", 0.80 ) 
    r1 = guiGridListAddRow(TimeSelect_Grid) 
    r2 = guiGridListAddRow(TimeSelect_Grid) 
    r3 = guiGridListAddRow(TimeSelect_Grid) 
    guiGridListSetItemText ( TimeSelect_Grid , r1, column, "Hours", false, false ) 
    guiGridListSetItemText ( TimeSelect_Grid , r2, column,"Minutes", false, false ) 
    guiGridListSetItemText ( TimeSelect_Grid , r3, column, "Seconds", false, false ) 
    TimeSelect_Button = guiCreateButton(14,72,91,40,"OK",false,TimeSelect_Window) 
    -- 
    function onOk() 
    if source == TimeSelect_Button then 
        -- 
        removeEventHandler("onClientGUIClick",root,onOk) 
        -- 
        ---------------- 
        theTime = guiGetText(TimeSelect_Edit) 
        timeType = guiGridListGetItemText ( TimeSelect_Grid, guiGridListGetSelectedItem ( TimeSelect_Grid ) ) 
        -- 
        destroyElement(TimeSelect_Window) 
        jailShow () 
        -- 
        if tonumber(theTime) then 
            if tostring(timeType) then 
                triggerServerEvent("JailHimx",lp,theJailed,theJail,theTime.." "..timeType,timeType,true) 
            else 
                outputChatBox("** #FFFF00Please Select , Hours or Minutes or Seconds!",255,0,0,true) 
            end 
        else 
            outputChatBox("** #FFFF00Please Enter a Number!",255,0,0,true) 
        end 
        ---------------- 
    end 
    end 
    addEventHandler("onClientGUIClick",root,onOk) 
end 

server

--***********************************-- 
--***********************************--
--            Jail System            --
--            By Al3grab             --
--            Server Side            --
--***********************************--
--***********************************--
Command = get("command") -- getTheCommand
 
rRoot = getResourceRootElement(getThisResource())
------
function getData(to)
    local file = xmlLoadFile("data.xml")
         jTable = {}
         tTable = {}
    if file then
        for k,v in ipairs (xmlNodeGetChildren(xmlFindChild(file,"Jails",0)))do
            local name = xmlNodeGetAttribute(v,"name")
            local posX,posY,posZ = xmlNodeGetAttribute(v,"posX"),xmlNodeGetAttribute(v,"posY"),xmlNodeGetAttribute(v,"posZ")
            local int = xmlNodeGetAttribute(v,"int")
            local dim = xmlNodeGetAttribute(v,"dim")
            table.insert(jTable, {name,posX,posY,posZ,int,dim})
        end
        for k,v in ipairs (xmlNodeGetChildren(xmlFindChild(file,"time",0)))do
            local times = xmlNodeGetAttribute(v,"times")
                for i =1,50 do
                    local iTime = gettok ( times, i, string.byte(',') )
                    if iTime then
                    -- 
                    if tonumber(iTime) > 59.5 then
                        iTime = math.floor(iTime / 60)
                        iTimeDes = "Minutes"
                            if iTime > 59.5 then
                                iTime = math.floor(iTime / 60)
                                iTimeDes = "Hours"
                            end
                    else
                        iTimeDes = "Seconds"
                    end
                        table.insert(tTable,{iTime,iTimeDes})
                    end
                end
        end
    end
    triggerClientEvent(to,"sendDataz",to,jTable,tTable) -- sending to client event
end
addEvent("getDataz",true)
addEventHandler("getDataz",root,getData)
 
 
addCommandHandler ( Command, -- Adding The Command Handler
    function ( player, cmd )
        if hasObjectPermissionTo ( player, "function.banPlayer" ) then
            triggerClientEvent(player,"jailShow",player)
        else
        outputChatBox(" Access Denied ",player,255,0,0)
    end
end
)
 
anims = {
    "F_smklean_loop",
    "M_smklean_loop",
    "M_smkstnd_loop",
    "M_smk_drag",
    "M_smk_in",
    "M_smk_loop",
    "M_smk_out",
    "M_smk_tap" ,
}
 
function removeVehicle(thePlayer)
    if isPedInVehicle(thePlayer) then destroyElement(getPedOccupiedVehicle(thePlayer)) end
end
function JailHim(jailed,theJails,time,timeDes,showWho,timeReady)
        thePlayer = getPlayerFromName(jailed)
        if not thePlayer then outputChatBox("** #FFFF00Please Select a Player !",source,255,0,0,true) return end
        removePedFromVehicle(thePlayer)
        for k,v in ipairs (  jTable  ) do
                if theJails == v[1] then
                    theJail = v
                end
        end
        if theJail  then
        if tostring(time) then
            if timeReady == true then
              theTimex = tonumber(time)
            else
             theTimex = gettok ( time, 1, string.byte(timeDes) )
            end
            if timeDes == "Hours" then
                theTimex = math.floor(theTimex*60*60*1000)
                elseif timeDes == "Minutes" then
                theTimex = math.floor(theTimex*60*1000)
                elseif timeDes == "Seconds" then
                theTimex = math.floor(theTimex*1000)
            end
            startJailTimer ( thePlayer , theTimex )
        local x,y,z = theJail[2],theJail[3],theJail[4]
        local int = theJail[5]
        local dim = theJail[6]
        setElementInterior ( thePlayer, int )
        setElementDimension ( thePlayer, dim )
        setElementPosition (thePlayer,x,y,z )
        setElementData(thePlayer,"jailed",true)
        setElementData(rRoot,""..getPlayerSerial(thePlayer).."-j",true)
        toggleControl(thePlayer,"fire",false)
        if showWho ~= true then
        outputChatBox("** #FFFF00You Jailed [ "..getPlayerName(thePlayer).." #FFFF00] at "..theJail[1].." For "..time,source,255,0,0,true)
        outputChatBox("** #FFFF00You Have Been Jailed By [ "..getPlayerName(source).." #FFFF00] at "..theJail[1].." For "..time,thePlayer,255,0,0,true)
        end
        outputChatBox("** #FFFF00[ "..getPlayerName(thePlayer).." #FFFF00] Has Been Jailed For "..time,root,255,0,0,true)
        local randomAnim
        setPedAnimation(thePlayer,"SMOKING",anims[math.random(#anims)],theTimex/2)
        else
        outputChatBox("** #FFFF00Please Select Time !",source,255,0,0,true)
        end
        else
        outputChatBox("** #FFFF00Please Select a Jail !",source,255,0,0,true)
        end
end 
addEvent("JailHimx",true)
addEventHandler("JailHimx",root,JailHim)
 
function unJailHim(jailed,showWho)
    thePlayer = getPlayerFromName(jailed)
    if not thePlayer then outputChatBox("** #FFFF00Please Select a Player!",source,255,0,0,true) return end
--if getElementData(thePlayer,"jailed") == true then
        setElementInterior ( thePlayer, 0)
        setElementDimension ( thePlayer, 0 )
        setElementPosition ( thePlayer, 1552.9108886719, -1675.5844726563, 16.1953125)
        setElementData(thePlayer,"jailed",false)
        setElementData(rRoot,""..getPlayerSerial(thePlayer).."-j",false)
        if showWho ~= true then
        outputChatBox("** #FFFF00You Released [ "..getPlayerName(thePlayer).." #FFFF00]",source,255,0,0,true)
        outputChatBox("** #FFFF00You Have Been Released by [ "..getPlayerName(source).." #FFFF00]",thePlayer,255,0,0,true)
        end
        outputChatBox("** #FFFF00[ "..getPlayerName(thePlayer).." #FFFF00] Has Been Released ",root,255,0,0,true)
        setPedAnimation(thePlayer)
        stopJailTimer(Player)
        toggleControl(thePlayer,"fire",true)
    --  setTimer(killPed,1500,1,thePlayer)
--else
    --  outputChatBox("The Player is Not Jailed !",source,255,0,0,true)
--end
end 
addEvent("unJailHim",true)-- unJail
addEventHandler("unJailHim",root,unJailHim)
 
addEvent("onJailEnd",true)
addEventHandler("onJailEnd",root,function(player)
unJailHim(getPlayerName(player),true)
end )
 
addEventHandler("onPlayerSpawn",root, -- Check If He Is Jailed [ OnSpawn ]
function()
if getElementData(source,"jailed") == true then
 randomJail = jTable[math.random(#jTable)]
if randomJail then
    x,y,z = randomJail[2],randomJail[3],randomJail[4]
    int = randomJail[5]
    dim = randomJail[6]
    setElementInterior ( source, int )
    setElementDimension(source,dim)
    setElementPosition (source,x,y,z )
end
end
end)
 
addEventHandler("onPlayerJoin",root, -- Check If He Is Jailed - By Serial [ OnJoin ]
function()
if getElementData(rRoot,""..getPlayerSerial(source).."-j") == true then
 
 randomJail = jTable[math.random(#jTable)]
if randomJail then
    x,y,z = randomJail[2],randomJail[3],randomJail[4]
    int = randomJail[5]
    dim = randomJail[6]
    setElementInterior ( source, int )
    setElementDimension(source,dim)
    setElementPosition (source,x,y,z )
    --
    time = getElementData(rRoot,""..getPlayerSerial(source).."-t",time) or 5 * 1000
    startJailTimer(source,time)
    setElementData(source,"jailed",true)
end
end
end )
 
----
 
function startJailTimer(Player,theTime) -- to start mission timer ..
    if Player then
        TimerDisplay = textCreateDisplay()
        m,s,cs = msToTimeStr(theTime)
        fullTime = m..":"..s
        TimerText = textCreateTextItem ( "Time Left : "..tostring(fullTime).."", 0.39, 0.7 ,"medium",0,255,0,255,2.0,"left","center",255)
        textDisplayAddText ( TimerDisplay, TimerText )
        textDisplayAddObserver ( TimerDisplay, Player )
        sortTimerShit(Player,TimerText,theTime)
    end
end
 
--Robbed from JailTimerr resource , and it was robbed from arc_
function msToTimeStr(ms)
    if not ms then
        return ''
    end
   
    if ms < 0 then
        return "0","00","00"
    end
   
    local centiseconds = tostring(math.floor(math.fmod(ms, 1000)/10))
    if #centiseconds == 1 then
        centiseconds = '0' .. centiseconds
    end
    local s = math.floor(ms / 1000)
    local seconds = tostring(math.fmod(s, 60))
    if #seconds == 1 then
        seconds = '0' .. seconds
    end
    local minutes = tostring(math.floor(s / 60))
   
    return minutes, seconds, centiseconds
end
 
function sortTimerShit(plr,timer,time) -- to sort timer's shit ..
    if timer and time then
            if isTimer(timerShitTimer) then
        killTimer(timerShitTimer)
    end
        timerShitTimer = setTimer(function(plr)
                time = time - 70
                m,s,cs = msToTimeStr(time)
                fullTime = m..":"..s
                textItemSetText(timer,"Time Left : "..tostring(fullTime).."")
                if plr then
                setElementData(rRoot,""..getPlayerSerial(plr).."-t",time)
                end
                if ( tonumber(m) <= 0 and tonumber(s) <= 0 and tonumber(cs) <= 0 ) then
                    onTimerFinish(plr,timer)
                end
        end , 50 , 0 ,plr )
    end
end
 
function stopJailTimer(Player)
   
Link to comment

try to make a RadarArea/Zone within the whole jail, and add a function when he leaves the RadarArea the Function that disables F1 will disable.

try these functions maybe, dont forget to make a colshape. oncolshapehit and oncolshapeleave, you'll need to add an eventhandler.

createRadarArea 
onColShapeHit 
onColShapeLeave 

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...