Jump to content

Police job


Linttamummo

Recommended Posts

Hi. I made police job system, that I type /poliisi, I spawn as a police in SFPD. It worked well, I mean that spawn without arrest functions. But when i add those arrest functions onto it, it stopped to work. I dont know where is problem, but here is the server.lua:

function createTeamsOnStart ( ) 
    poliisi1 = createTeam ( "Poliisi", 0,0,255 )
end
addEventHandler ( "onResourceStart", resourceRoot, createTeamsOnStart )
 
function kytta ( thePlayer )
    local level = getPlayerWantedLevel ( thePlayer )
    if ( level > 0 ) then
        outputChatBox ( "Sinulla on Wanted tähtiä, joten et voi olla poliisi.", thePlayer, 255,0,0 )
        return
    else
        outputChatBox ( "Tervetuloa työvuorollesi. Turvallista matkaa.", thePlayer, 0,0,255 )
        setPlayerTeam ( thePlayer, poliisi1 )
        setPlayerNametagColor ( thePlayer, 0,0,255 )
        spawnPlayer ( thePlayer, -1606, 675, -5 )
        setElementModel ( thePlayer, 280 )
        takeAllWeapons ( thePlayer )
        giveWeapon ( thePlayer, 3, 1 )
        giveWeapon ( thePlayer, 22, 250 )
        giveWeapon ( thePlayer, 25, 100 )
        giveWeapon ( thePlayer, 29, 125 )
        giveWeapon ( thePlayer, 31, 125 )
        giveWeapon ( thePlayer, 41, 2000 )
    end
end
addCommandHandler ( "poliisi", kytta )
 
function pidattaminen ( pidattaja, weapon, bodypart, loss )
    if (pidattaja) and (weapon == 3) then
        if getElementParent (pidattaja) == poliisi1 then
            local maija = pidattaja
            local vanki = source
            local tahti = getPlayerWantedLevel ( source )
            if  (getElementData ( vanki, "currentstatus" ) ~= "pidatetty") and (tahti > 0) then
                if (getElementData ( pidattaja, "currentarrests" ) ~= "single" ) and (getElementData ( pidattaja, "currentarrests" ) ~= "double" ) then
                    setElementData ( maija, "currentarrests", "single" )
                    triggerClientEvent(maija,"copdirections",maija)
                elseif (getElementData ( pidattaja, "currentarrests" ) == "single" ) then
                    setElementData ( maija, "currentarrests", "double" )
                end
                setElementData ( vanki, "currentstatus", "pidatetty" )
                setElementData ( vanki, "captor", maija )
                showCursor ( source, true )
                toggleAllControls ( source, false, true, false )
                walktheprisoner ( maija, vanki )
                setElementData ( vanki, "arrestTimeout", setTimer ( freetheguy, 180000, 1, vanki ))
            end
        end
    end
end
addEventHandler ( "onPlayerDamage", getRootElement (), pidattaminen )
 
function yankhimout(player, seat, jacker)
    if isElement(jacker) then
        if getElementParent(jacker) == poliisi1 then
            local tahti = getPlayerWantedLevel( player )
            if tahti > 0 then
                if (getElementData ( jacker, "currentarrests" ) ~= "single" ) and (getElementData ( jacker, "currentarrests" ) ~= "double" ) then
                    local maija = jacker
                    local vanki = player
                    setElementData ( vanki, "currentstatus", "pidatetty" )
                    setElementData ( vanki, "captor", maija )
                    setElementData ( maija, "currentarrests", "single" )
                    triggerClientEvent(maija,"copdirections",maija)
                    showCursor ( vanki, true )
                    toggleAllControls ( vanki, false, true, false )    
                    walktheprisoner ( maija, vanki )
                    setElementData ( vanki, "arrestTimeout", setTimer ( freetheguy, 180000, 1, vanki ))
                elseif (getElementData ( jacker, "currentarrests" ) == "single" ) then
                    local maija = jacker
                    local vanki = player
                    setElementData ( vanki, "currentstatus", "pidatetty" )
                    setElementData ( vanki, "captor", maija )
                    setElementData ( maija, "currentarrests", "double" )
                    showCursor ( vanki, true )
                    toggleAllControls ( vanki, false, true, false )
                    walktheprisoner ( maija, vanki )
                    setElementData ( vanki, "arrestTimeout", setTimer ( freetheguy, 180000, 1, vanki ))
                end            
            end
        end
    end
end
addEventHandler ( "onVehicleExit", getRootElement(), yankhimout )
 
function walktheprisoner(maija, vanki)
    if (getElementData ( vanki, "currentstatus" ) == "pidatetty") and (getPedOccupiedVehicle ( vanki ) == false ) then
        local copx, copy, copz = getElementPosition ( maija )
        local prisonerx, prisonery, prisonerz = getElementPosition ( vanki )
        copangle = ( 360 - math.deg ( math.atan2 ( ( copx - prisonerx ), ( copy - prisonery ) ) ) ) % 360
        setPedRotation ( vanki, copangle )
        setCameraTarget ( vanki, vanki )
        local dist = getDistanceBetweenPoints2D ( copx, copy, prisonerx, prisonery )
        if ( dist > 16 ) then
            freetheguy ( vanki ) --FREES PRISONER IF HE GETS FAR AWAY
        elseif ( dist > 12 ) then
            setControlState ( vanki, "sprint", true )
            setControlState ( vanki, "walk", false )
            setControlState ( vanki, "forwards", true )
            local zombify = setTimer ( walktheprisoner, 500, 1, maija, vanki )
        elseif ( dist > 6 ) then
            setControlState ( vanki, "sprint", false )
            setControlState ( vanki, "walk", false )
            setControlState ( vanki, "forwards", true )
            local zombify = setTimer ( walktheprisoner, 500, 1, maija, vanki )
        elseif ( dist > 1.5 ) then
            setControlState ( vanki, "sprint", false )
            setControlState ( vanki, "walk", true )
            setControlState ( vanki, "forwards", true )
            local zombify = setTimer ( walktheprisoner, 500, 1, maija, vanki )
        elseif ( dist < 1.5 ) then
            setControlState ( vanki, "sprint", false )
            setControlState ( vanki, "walk", false )
            setControlState ( vanki, "forwards", false )
            local zombify = setTimer ( walktheprisoner, 500, 1, maija, vanki )
        end
    end
end
 
function freetheguy (vanki)
    local thecaptor = (getElementData ( vanki, "captor" ))
    setElementData ( vanki, "currentstatus", "none" )
    setElementData ( vanki, "captor", "none" )
    showCursor ( vanki, false )
    setControlState ( vanki, "sprint", false )
    setControlState ( vanki, "walk", false )
    setControlState ( vanki, "forwards", false )
    toggleAllControls (vanki, true) 
    local prisonercheck = setTimer ( checkforprisoners, 1500, 1, thecaptor )
    TimoutTimer = (getElementData ( vanki, "arrestTimeout" ))
    if isTimer(TimoutTimer) then
         killTimer(TimoutTimer)
         setElementData ( vanki, "arrestTimeout", nil)
         TimeoutTimer = nil
    end
end
 
function checkforprisoners(maija)
    if isElement(maija) then
        local prisoners = 0
        local players = getElementsByType ( "player" )
        for theKey,thePlayer in ipairs(players) do
            if (getElementData ( thePlayer, "captor" ) == maija ) then
                prisoners = prisoners+1
            end
        end
        if prisoners == 0 then
            setElementData ( maija, "currentarrests", "none" )
            triggerClientEvent( maija,"clearcopdirections",maija)
        elseif prisoners == 1 then
            setElementData ( maija, "currentarrests", "single" )
        elseif prisoners == 2 then
            setElementData ( maija, "currentarrests", "double" )
        end
    end
end
 
function cheatescape (playerSource)
    freetheguy ( playerSource )
    setPlayerWantedLevel( playerSource, 0 )
end
addCommandHandler ( "minaolenvanki", cheatescape )
]]
 
function someonedied( ammo, pidattaja, weapon, bodypart )
    local tahti = getPlayerWantedLevel( source )
    if tahti > 0 then
        if isElement(pidattaja) then
            if getElementParent(pidattaja) == poliisi1 then
                local Kreward = get("legalsystem.Kreward")
                local thisreward = tahti*Kreward
                givePlayerMoney ( pidattaja, thisreward ) -- REWARDS A KILL IF THE PLAYER HAS A WANTED LEVEL
            end
        end
    end
    if (getElementData ( source, "currentstatus" ) == "pidatetty") then
        freetheguy ( source ) --IF A PRISONER DIES, FREES THEM FOR RESPAWN
    end
    if (getElementData ( source, "currentarrests" ) == "single" ) or (getElementData ( source, "currentarrests" ) == "double" ) then
        setElementData ( source, "currentarrests", "none" )
        local players = getElementsByType ( "player" )
        for theKey,thePlayer in ipairs(players) do
            if (getElementData ( thePlayer, "captor" ) == source ) then
                freetheguy ( thePlayer ) --IF A COP DIES, FREES ALL HIS PRISONERS
            end
        end
    end
end
addEventHandler ( "onPlayerWasted", getRootElement(), someonedied )
 
function playergotout( player, seat, jacker )
    if isElement(jacker) then
        if (getElementData ( player, "currentarrests" ) == "single" ) or (getElementData ( player, "currentarrests" ) == "double" ) then
            local players = getElementsByType ( "player" )
            for theKey,thePlayer in ipairs(players) do
                if (getElementData ( thePlayer, "captor" ) == player ) then
                    freetheguy ( thePlayer )
                end
            end
        end
    end
end
addEventHandler ( "onVehicleExit", getRootElement(), playergotout )
 
function aplayerleft()
    if (getElementData ( source, "currentarrests" ) == "single" ) or (getElementData ( source, "currentarrests" ) == "double" ) then
        local players = getElementsByType ( "player" )
        for theKey,thePlayer in ipairs(players) do
            if (getElementData ( thePlayer, "captor" ) == source ) then
                freetheguy ( thePlayer ) -- IF A COP DISCONNECTS, FREES HIS PRISONERS
            end
        end
    end
end
addEventHandler ( "onPlayerQuit", getRootElement(), aplayerleft )
 
function copcarenter (vehicle, seat, jacked )
    local carid =  getElementModel( vehicle )
    if carid == 598 or carid == 596 or carid == 597 or carid == 427 or carid == 490 then
        if getElementParent(source) == poliisi1 then
            if (getElementData ( source, "currentarrests" ) == "single" ) or (getElementData ( source, "currentarrests" ) == "double" ) then
                local players = getElementsByType ( "player" )
                for theKey,thePlayer in ipairs(players) do
                    if (getElementData ( thePlayer, "captor" ) == source ) then
                        local copx, copy, copz = getElementPosition ( source )
                        local prisonerx, prisonery, prisonerz = getElementPosition ( thePlayer )
                        local dist = getDistanceBetweenPoints2D ( copx, copy, prisonerx, prisonery )
                        if ( dist < 6 ) then
                            if (getVehicleOccupant ( vehicle, 2 ) == false) then
                                warpPedIntoVehicle ( thePlayer, vehicle, 2 )
                            elseif (getVehicleOccupant ( vehicle, 3 ) == false) then
                                warpPedIntoVehicle ( thePlayer, vehicle, 3 )
                            end
                        end
                    end
                end
            end
        end
    elseif carid == 599 then
    if getElementParent(source) == poliisi1 then
            if (getElementData ( source, "currentarrests" ) == "single" ) or (getElementData ( source, "currentarrests" ) == "double" ) then
                local players = getElementsByType ( "player" )
                for theKey,thePlayer in ipairs(players) do
                    if (getElementData ( thePlayer, "captor" ) == source ) then
                        local copx, copy, copz = getElementPosition ( source )
                        local prisonerx, prisonery, prisonerz = getElementPosition ( thePlayer )
                        local dist = getDistanceBetweenPoints2D ( copx, copy, prisonerx, prisonery )
                        if ( dist < 6 ) then
                            if (getVehicleOccupant ( vehicle, 2 ) == false) then
                                warpPedIntoVehicle ( thePlayer, vehicle, 1 )
                            end
                       
Link to comment

Whole edit of message:

So, i tried to do some version of police script with "jail" and timer, and it looks like this. Fix something if I made mistake :)

function createTeamsOnStart ( ) 
    poliisi1 = createTeam ( "Poliisi", 0,0,255 ) 
end 
addEventHandler ( "onResourceStart", resourceRoot, createTeamsOnStart ) 
  
function kytta ( thePlayer ) 
    local level = getPlayerWantedLevel ( thePlayer ) 
    if ( level > 0 ) then 
        outputChatBox ( "Sinulla on Wanted tähtiä, joten et voi olla poliisi.", thePlayer, 255,0,0 ) 
        return 
    else 
        outputChatBox ( "Tervetuloa työvuorollesi. Turvallista matkaa.", thePlayer, 0,0,255 ) 
        setPlayerTeam ( thePlayer, poliisi1 ) 
        setPlayerNametagColor ( thePlayer, 0,0,255 ) 
        spawnPlayer ( thePlayer, -1606, 675, -5 ) 
        setElementModel ( thePlayer, 280 ) 
        takeAllWeapons ( thePlayer ) 
        giveWeapon ( thePlayer, 3, 1 ) 
        giveWeapon ( thePlayer, 22, 250 ) 
        giveWeapon ( thePlayer, 25, 100 ) 
        giveWeapon ( thePlayer, 29, 125 ) 
        giveWeapon ( thePlayer, 31, 125 ) 
        giveWeapon ( thePlayer, 41, 2000 ) 
    end 
end 
addCommandHandler ( "poliisi", kytta ) 
  
function pidattaminen (attackerweapon, poliisi, bodypart) 
    local poliisi = attacker 
    local uhri = source 
    local tahti = getPlayerWantedLevel ( source ) 
    if  ( tahti > 0 ) then 
        getElementType ( source, "uhri" ) 
        if (poliisi) and (attackerweapon == 3) then 
            if  getTeamName( theTeam ) == "Poliisi" then 
                setPedFrozen ( source, frozen ) 
                setElementInterior (source, 6, 264, 78, 1002) 
                setElementDimension (source, 1) 
                local timer = setTimer ( source, 120000, 1 ) 
                if isTimer ( timer ) then killTimer ( timer ) 
                setElementInterior (source, nil, 1544, -1670, 14) 
                setElementDimension (source, 0) 
                setPedFrozen ( source, not frozen ) 
                setPlayerWantedLevel ( source, 0 ) 
                end 
            end 
        end 
    end 
end 
addEventHandler ( "onPlayerDamage", getRootElement (), pidattaminen )    

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...