Jump to content

ممكن حل فى مشكلة jail


Recommended Posts

ممكن حل مشكلة jail

police ما فية مشاكل

انا بعمل areest طبيعى جدا

لكن المشكلة ان jail

ما بينقص الوقت بيزود الوقت اذا اللاعب تحرك

الكود سيرفر

function resume_jail(totalAmmo, killer, killerWeapon, bodypart, stealth) 
    if jail_data.is_jailed[source] then 
        -- Get and save weapons temporary 
        weapons[source] = { 0,0,0,0,0,0,0,0,0,0,0,0 } 
        ammo[source] = { 0,0,0,0,0,0,0,0,0,0,0,0 } 
        for k,wep in ipairs(weapons) do 
            weapons[source][k] = getPedWeapon(source, k) 
            setPedWeaponSlot(source, getSlotFromWeapon(weapons[source][k])) 
            ammo[source][k] = getPedTotalAmmo(source, k) 
        end 
  
        local rand_x = math.random(1,10) 
        local rand_y = math.random(1,10) 
        fadeCamera(source, false, 2, 135, 135, 135) 
        setTimer(spawnPlayer, 2100, 1, source, -2965+((-5)+rand_x), 2305+((-5)+rand_y), 8, 180, getElementModel(source), 0, 0, getTeamFromName("Criminals")) 
        setTimer(set_control_states, 3000, 1, source, false) 
        setTimer(fadeCamera, 2500, 1, source, true, 3) 
  
        -- Set occupation to prisoner after 5 seconds, you can't escape until this time has passed 
        setTimer(setElementData, 5000, 1, source, "Occupation", "Prisoner") 
  
        -- Restore weapons 
        if weapons[source] then 
            for k,wep in ipairs(weapons[source]) do 
                if weapons[source][k] and ammo[source][k] then 
                    if ammo[source][k] > 5000 then ammo[source][k] = 5000 end 
                    setTimer(giveWeapon, 3000, 1, source, weapons[source][k], ammo[source][k], false) 
                end 
            end 
        end 
    end 
end 
addEventHandler("onPlayerWasted", root, resume_jail) 
  
--[[ Release from jail (if not escaped )]]-- 
function Unjail(crim, police_dept, reason, admin) 
    if not crim or not isElement(crim) or getElementType(crim) ~= "player" then return end 
    if not police_dept then outputServerLog("CUD-RPG: (Wanted) Please specify a police department") end 
    if not jail_data.is_jailed[crim] then 
        exports.CUDtopbar:dm(getPlayerName(crim).." is already in free!", crim, 255, 150, 0) 
        return 
    end 
  
    -- Get release point and it's coordinates 
    local name,x,y,z,rot = release_locations[police_dept][1], 
        release_locations[police_dept][2],release_locations[police_dept][3], 
        release_locations[police_dept][4],release_locations[police_dept][5] 
  
    -- Inform the suspect 
    exports.CUDtopbar:dm("You have been released from jail! Location: "..name, crim, 0, 255, 0) 
    set_control_states(crim, true) 
  
    -- Clear memory, the player is free 
    jail_data.is_jailed[crim] = nil 
    jail_data.last_location[crim] = nil 
    if isTimer(jail_data.release_timers[crim]) then 
        killTimer(jail_data.release_timers[crim]) 
    end 
    jail_data.release_timers[crim] = nil 
    if isTimer(jail_data.info_timers[crim]) then 
        killTimer(jail_data.info_timers[crim]) 
    end 
    jail_data.info_timers[crim] = nil 
    setElementData(crim, "Jailed", nil) 
    setElementData(crim, "arrested", nil) 
    exports.CUDwanted:setWl(crim, 0, 0) 
  
    -- Dispaly why the unjail was issued if admin jailed 
    if admin then 
        outputChatBox("You have been released by: "..getPlayerName(admin), crim, 200, 0, 0) 
        outputServerLog("ADMIN: "..getPlayerName(crim).." was released by: "..getPlayerName(admin)) 
    end 
  
    -- Get and save weapons temporary 
    weapons[crim] = { 0,0,0,0,0,0,0,0,0,0,0,0 } 
    ammo[crim] = { 0,0,0,0,0,0,0,0,0,0,0,0 } 
    for k,wep in ipairs(weapons[crim]) do 
        weapons[crim][k] = getPedWeapon(crim, k) 
        setPedWeaponSlot(crim, getSlotFromWeapon(weapons[crim][k])) 
        ammo[crim][k] = getPedTotalAmmo(crim, k) 
    end 
  
    -- Release and spawn 
    local rand_x = math.random(1,5) 
    local rand_y = math.random(1,5) 
    local own_skin = exports.CUDclothes:getBoughtSkin(crim) or getElementModel(crim) or 0 
    setTimer(spawnPlayer, 1100, 1, crim, x+((-2)+rand_x), y+((-2)+rand_y), z, rot, own_skin, 0, 0, getTeamFromName("Criminal")) 
    fadeCamera(crim, false) 
    setTimer(fadeCamera, 1500, 1, crim, true) 
  
    -- Restore weapons 
    if weapons[crim] then 
        for k,wep in ipairs(weapons[crim]) do 
            if weapons[crim][k] and ammo[crim][k] then 
                if ammo[crim][k] > 5000 then ammo[crim][k] = 5000 end 
                setTimer(giveWeapon, 1500, 1, crim, weapons[crim][k], ammo[crim][k], false) 
            end 
        end 
    end 
  
    -- Set team and occupation 
    setPlayerNametagColor(crim, 170, 0, 0) 
    setElementData(crim, "Occupation", "Criminal") 
end 
  
-- Check escape 
function check_escape() 
    for k,v in pairs(getElementsByType("player")) do 
        if getElementData(v, "Occupation") == "Prisoner" then 
            local x,y,z = getElementPosition(v) 
            local dist = getDistanceBetweenPoints3D(-3030, 2255, 8, x,y,z) 
            if dist > 220 and getElementInterior(v) == 0 and getElementDimension(v) == 0 then 
                jail_escape(v) 
                outputChatBox(getPlayerName(v).." escaped from jail") 
            end 
        end 
    end 
end 
  
--[[ Extend the time in jail due to crimes commited inside the walls ]]-- 
function extend_jail_time(crim, time_s) 
    -- Verify that the timers is running 
    if not isTimer(jail_data.release_timers[crim]) or 
        not isTimer(jail_data.info_timers[crim]) then return end 
  
    -- Get time left 
    local time_left_ms,i2,i3 = getTimerDetails(jail_data.release_timers[crim]) 
  
    -- Update graphical part 
    setElementData(crim, "jailTime", (time_left_ms+(time_s*1000))+getTickCount()) 
    setElementData(crim, "jailTime2", getTickCount()) 
  
    -- Reset current timers 
    if isTimer(jail_data.release_timers[crim]) then 
        killTimer(jail_data.release_timers[crim]) 
    end 
    jail_data.release_timers[crim] = nil 
    if isTimer(jail_data.info_timers[crim]) then 
        killTimer(jail_data.info_timers[crim]) 
    end 
    jail_data.info_timers[crim] = nil 
  
    -- Get police department for release 
    local police_dept = getElementData(crim, "CUDjail.pdr") or "LSPD" 
  
    -- Make new timers 
    jail_data.release_timers[crim] = setTimer(Unjail, (time_left_ms+(time_s*1000)), 1, crim, police_dept) 
    jail_data.info_timers[crim] = setTimer(sync_time_display, 1000, math.floor(time_left_ms/1000)+time_s, crim) 
end 
  
function increase_wl_on_hitting_guards(attacker, weapon, bodypart, loss) 
    if not jail_data.is_jailed[attacker] then return end 
    extend_jail_time(attacker, math.floor(loss*6)) 
end 
addEventHandler("onPlayerDamage", root, increase_wl_on_hitting_guards) 
  
-- Escape 
function jail_escape(crim) 
    if not crim or not isElement(crim) or getElementType(crim) ~= "player" then return end 
  
    -- Clear memory, the player is free 
    if isTimer(jail_data.release_timers[crim]) then 
        killTimer(jail_data.release_timers[crim]) 
    end 
    jail_data.is_jailed[crim] = nil 
    jail_data.last_location[crim] = nil 
    jail_data.release_timers[crim] = nil 
    if isTimer(jail_data.info_timers[crim]) then 
        killTimer(jail_data.info_timers[crim]) 
    end 
    jail_data.info_timers[crim] = nil 
    setElementData(crim, "Jailed", nil) 
    setElementData(crim, "arrested", nil) 
    set_control_states(crim, true) 
    setElementData(crim, "Occupation", "Criminal") 
  
    -- Notify cops 
    for k,v in pairs(getElementsByType("player")) do 
        if getPlayerTeam(v) and getPlayerTeam(v) == getTeamFromName("Government") then 
            outputChatBox(getPlayerName(crim).." has escaped from jail! Kill him", v, 255, 100, 0) 
            exports.CUDtopbar:dm(getPlayerName(crim).." has escaped from jail! Kill him", v, 255, 100, 0) 
        end 
    end 
  
    -- Set the wanted level 
    exports.CUDwanted:setWl(crim, 1, 240, "You committed the crime of jailbreak") 
end 
  
-- Show the time left when jailed 
function sync_time_display(crim) 
    if isElement(crim) then 
        -- Count down 
        local time = getTickCount() 
        setElementData(crim, "jailTime2", time) 
  
        -- Make sure guns are disabled 
        set_control_states(crim, false) 
        setPedWeaponSlot(crim, 0) 
    end 
end 
  
function isJailed(crim) 
    if not crim or not isElement(crim) or getElementType(crim) ~= "player" then return false end 
    if jail_data.is_jailed[crim] then return true 
    else return false end 
end 
  
function set_control_states(crim, n_state) 
    --toggleControl(crim, "fire", n_state) 
    toggleControl(crim, "aim_weapon", n_state) 
    toggleControl(crim, "enter_exit", n_state) 
    toggleControl(crim, "next_weapon", n_state) 
    toggleControl(crim, "previous_weapon", n_state) 
end 
  
-- Check if anyone escaped on regular intervalls 
setTimer(check_escape, 10000, 0) 

Link to comment

تقريبا مشكلتك من هالكود

setElementData(crim, "jailTime", (time_left_ms+(time_s*1000))+getTickCount()) 

استبدله بالكود هذا

setElementData(crim, "jailTime", (time_left_ms-(time_s*1000))-getTickCount()) 

ما جربته بس هذا اللي لمحته على السريع :mrgreen:

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