Page cover image

โš™๏ธConfiguration

Discover how to config your script.

To ensure you have everything you need, we are constantly updating our config files.

-- Change the framework to 'QB' or 'ESX':
zr_config.framework = 'QB'

-- If you have custom frameworks names, you can change them here:
zr_config.QB = 'qb-core'
zr_config.ESX = 'es_extended'

-- Set it to true if you want the Logout Button to Open Multicharacter instead of making you leave the server.
zr_config.MulticharacterLogout = false

-- You can change the background blur from here:
zr_config.zr_blur = 'MenuMGIn'

-- Change disconnect message from here:
zr_config.disconnect = '[zr-pausemenu] You have been disconnected from the server'

-- Put here your discord server invite link:
zr_config.discord = 'https://discord.gg/FwedjEV6kY'

-- Here you can add/remove jobs
zr_config.jobs = {
    {id='police', name='police', suivname='officers', color='#00A8FF'},
    {id='taxi', name='taxi', suivname='drivers', color='#FFFF00'},
    {id='ems', name='ems', suivname='doctors', color='#FF5D5D'},
    {id='mechanic', name='mechanic', suivname='technician', color='#00FFCB'},
    {id='realestate', name='realestate', suivname='brokers', color='#FF9900'},
    {id='trucker', name='trucker', suivname='drivers', color='#DB61FF'},
}

-- Here you can translate the script to the language you prefer
zr_trans.discord = 'join our discord.'
zr_trans.maps = 'MAPS'
zr_trans.mapstxt = 'SHOW THE MAP OF THE CITY.'
zr_trans.settings = 'SETTINGS'
zr_trans.settingstxt = 'OPEN GAME SETTINGS MENU.'
zr_trans.rulestitle = 'SERVER RULES'
zr_trans.rules = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker."
zr_trans.back = 'Go back to game.'
zr_trans.disconnect = 'Disconnect from server.'
zr_trans.infostitle = 'Character Information.'
zr_trans.fname = 'First Name'
zr_trans.lname = 'Last Name'
zr_trans.gender = 'Gender'
zr_trans.male = 'MALE'
zr_trans.female = 'FEMALE'
zr_trans.dob = 'Birthdate'
zr_trans.job = 'Job'
zr_trans.cash = 'Cash'
zr_trans.bank = 'Bank'
zr_trans.currency = '$'

Client Side :

local zr_menu_enabled = true

RegisterKeyMapping("zr-pausemenu:show", "", "keyboard", "ESCAPE")
RegisterCommand('zr-pausemenu:show', function ()
	if not IsPauseMenuActive() and not IsNuiFocused() then
		if not IsEntityDead(GetPlayerPed(-1)) then
			if (zr_menu_enabled) then
				zr_pausemenu_show()
			end
		end
	end
end)

function zr_pausemenu_hide()
    StopScreenEffect(zr_config.zr_blur)
    DisableIdleCamera(false)
	SetNuiFocus(false, false)
	SetNuiFocusKeepInput(false)
	SendNUIMessage({
		type = "zr-pausemenu:hide",
		toggle = false,
	});
end

RegisterNetEvent('zr-pausemenu:hide')
AddEventHandler('zr-pausemenu:hide', function()
	zr_pausemenu_hide()
end)

RegisterNetEvent('zr-pausemenu:disable')
AddEventHandler('zr-pausemenu:disable', function()
	zr_menu_enabled = false
end)

RegisterNetEvent('zr-pausemenu:enable')
AddEventHandler('zr-pausemenu:enable', function()
	zr_menu_enabled = true
end)

-- You can also add custom events to happen when you click on the disconnecting button.
function zr_call_logout()
	TriggerEvent('zr-multicharacter:start') -- Replace this event to whatever you want event you want to be triggered after clicking on the Disconnect Button.
	-- TriggerEvent('qb-multicharacter:client:chooseChar') For default qb-multicharacter
end
  • Step 1 : Open qb-ambulancejob -> client -> laststand.lua

  • Step 2 : Search for the SetLastStand function.

    function SetLaststand(bool)
  • Step 3 : Add the following events

    TriggerEvent('zr-pausemenu:hide')
    TriggerEvent('zr-pausemenu:disable')
    
    -----------------------------------------------------------------------------------
                                     How it should be: 
    -----------------------------------------------------------------------------------
    
    
    function SetLaststand(bool)
        local ped = PlayerPedId()
        if bool then
            Wait(1000)
            while GetEntitySpeed(ped) > 0.5 or IsPedRagdoll(ped) do Wait(10) end
            local pos = GetEntityCoords(ped)
            local heading = GetEntityHeading(ped)
            TriggerServerEvent("InteractSound_SV:PlayOnSource", "demo", 0.1)
            LaststandTime = Laststand.ReviveInterval
            if IsPedInAnyVehicle(ped) then
                local veh = GetVehiclePedIsIn(ped)
                local vehseats = GetVehicleModelNumberOfSeats(GetHashKey(GetEntityModel(veh)))
                for i = -1, vehseats do
                    local occupant = GetPedInVehicleSeat(veh, i)
                    if occupant == ped then
                        NetworkResurrectLocalPlayer(pos.x, pos.y, pos.z + 0.5, heading, true, false)
                        SetPedIntoVehicle(ped, veh, i)
                    end
                end
            else
                NetworkResurrectLocalPlayer(pos.x, pos.y, pos.z + 0.5, heading, true, false)
            end
            SetEntityHealth(ped, 150)
            if IsPedInAnyVehicle(ped, false) then
                LoadAnimation("veh@low@front_ps@idle_duck")
                TaskPlayAnim(ped, "veh@low@front_ps@idle_duck", "sit", 1.0, 8.0, -1, 1, -1, false, false, false)
            else
                LoadAnimation(lastStandDict)
                TaskPlayAnim(ped, lastStandDict, lastStandAnim, 1.0, 8.0, -1, 1, -1, false, false, false)
            end
            InLaststand = true
            TriggerEvent('zr-pausemenu:hide')
            TriggerEvent('zr-pausemenu:disable')
            TriggerServerEvent('hospital:server:ambulanceAlert', Lang:t('info.civ_down'))
            CreateThread(function()
                while InLaststand do
                    ped = PlayerPedId()
                    local player = PlayerId()
                    if LaststandTime - 1 > Laststand.MinimumRevive then
                        LaststandTime = LaststandTime - 1
                        Config.DeathTime = LaststandTime
                    elseif LaststandTime - 1 <= Laststand.MinimumRevive and LaststandTime - 1 ~= 0 then
                        LaststandTime = LaststandTime - 1
                        Config.DeathTime = LaststandTime
                    elseif LaststandTime - 1 <= 0 then
                        QBCore.Functions.Notify(Lang:t('error.bled_out'), "error")
                        SetLaststand(false)
                        local killer_2, killerWeapon = NetworkGetEntityKillerOfPlayer(player)
                        local killer = GetPedSourceOfDeath(ped)
                        if killer_2 ~= 0 and killer_2 ~= -1 then killer = killer_2 end
                        local killerId = NetworkGetPlayerIndexFromPed(killer)
                        local killerName = killerId ~= -1 and GetPlayerName(killerId) .. " " .. "("..GetPlayerServerId(killerId)..")" or Lang:t('info.self_death')
                        local weaponLabel = Lang:t('info.wep_unknown')
                        local weaponName = Lang:t('info.wep_unknown')
                        local weaponItem = QBCore.Shared.Weapons[killerWeapon]
                        if weaponItem then
                            weaponLabel = weaponItem.label
                            weaponName = weaponItem.name
                        end
                        TriggerServerEvent("qb-log:server:CreateLog", "death", Lang:t('logs.death_log_title', {playername = GetPlayerName(-1), playerid = GetPlayerServerId(player)}), "red", Lang:t('logs.death_log_message', {killername = killerName, playername = GetPlayerName(player), weaponlabel = weaponLabel, weaponname = weaponName}))
                        deathTime = 0
                        OnDeath()
                        DeathTimer()
                    end
                    Wait(1000)
                end
            end)
        else
            TaskPlayAnim(ped, lastStandDict, "exit", 1.0, 8.0, -1, 1, -1, false, false, false)
            InLaststand = false
            LaststandTime = 0
        end
        TriggerServerEvent("hospital:server:SetLaststandStatus", bool)
    end
  • Step 4 : Open qb-ambulance -> client -> main.lua

  • Step 5 : Go to 'hospital:client:Revive' event

    RegisterNetEvent('hospital:client:Revive', function()
  • Step 6 : Add the following Trigger after or before ResetAll()

    TriggerEvent('zr-pausemenu:enable')
    ResetAll()
    
    -----------------------------------------------------------------------------------
                                     How it should be: 
    -----------------------------------------------------------------------------------
    
    RegisterNetEvent('hospital:client:Revive', function()
        local player = PlayerPedId()
    
        if isDead or InLaststand then
            local pos = GetEntityCoords(player, true)
            NetworkResurrectLocalPlayer(pos.x, pos.y, pos.z, GetEntityHeading(player), true, false)
            isDead = false
            SetEntityInvincible(player, false)
            SetLaststand(false)
        end
    
        if isInHospitalBed then
            loadAnimDict(inBedDict)
            TaskPlayAnim(player, inBedDict , inBedAnim, 8.0, 1.0, -1, 1, 0, 0, 0, 0 )
            SetEntityInvincible(player, true)
            canLeaveBed = true
        end
    
        TriggerServerEvent("hospital:server:RestoreWeaponDamage")
        SetEntityMaxHealth(player, 200)
        SetEntityHealth(player, 200)
        ClearPedBloodDamage(player)
        SetPlayerSprint(PlayerId(), true)
        ResetAll()
        ResetPedMovementClipset(player, 0.0)
        TriggerServerEvent('hud:server:RelieveStress', 100)
        TriggerServerEvent("hospital:server:SetDeathStatus", false)
        TriggerServerEvent("hospital:server:SetLaststandStatus", false)
        TriggerEvent('zr-pausemenu:enable')
        emsNotified = false
        QBCore.Functions.Notify(Lang:t('info.healthy'))
    end)
    

Configuration for ESX :

  • Step 1 : Open esx_ambulancejob > client -> main.lua

  • Step 2 : Add the following events under function OnPlayerDeath()

    TriggerEvent('zr-pausemenu:hide')
    TriggerEvent('zr-pausemenu:disable')
    
    -----------------------------------------------------------------------------------
                                     How it should be: 
    -----------------------------------------------------------------------------------
    
    function OnPlayerDeath()
        isDead = true
        ESX.CloseContext()
        ClearTimecycleModifier()
        SetTimecycleModifier("REDMIST_blend")
        SetTimecycleModifierStrength(0.7)
        SetExtraTimecycleModifier("fp_vig_red")
        SetExtraTimecycleModifierStrength(1.0)
        SetPedMotionBlur(PlayerPedId(), true)
        TriggerServerEvent('esx_ambulancejob:setDeathStatus', true)
        StartDeathTimer()
        StartDeathCam()
        StartDistressSignal()
        TriggerEvent('zr-pausemenu:hide')
        TriggerEvent('zr-pausemenu:disable')
    end
  • Step 3 : Add the following Event in 'esx_ambulancejob:revive' event

    TriggerEvent('zr-pausemenu:enable')
    
    -----------------------------------------------------------------------------------
                                     How it should be: 
    -----------------------------------------------------------------------------------
    
    RegisterNetEvent('esx_ambulancejob:revive')
    AddEventHandler('esx_ambulancejob:revive', function()
      local playerPed = PlayerPedId()
      local coords = GetEntityCoords(playerPed)
      TriggerServerEvent('esx_ambulancejob:setDeathStatus', false)
    
      DoScreenFadeOut(800)
    
      while not IsScreenFadedOut() do
        Wait(50)
      end
    
      local formattedCoords = {x = ESX.Math.Round(coords.x, 1), y = ESX.Math.Round(coords.y, 1), z = ESX.Math.Round(coords.z, 1)}
    
      RespawnPed(playerPed, formattedCoords, 0.0)
      isDead = false
      TriggerEvent('zr-pausemenu:enable')
      ClearTimecycleModifier()
      SetPedMotionBlur(playerPed, false)
      ClearExtraTimecycleModifier()
      EndDeathCam()
      DoScreenFadeIn(800)
    end)
    

Last updated