Page cover
For the complete documentation index, see llms.txt. This page is also available as Markdown.

Accessible files

Here you can find all the files which can be edite to make the asset compatible with your server.​

config.lua
----------------------------------------------------------------------------------------------
-------------------------------------| BRUTAL RADIAL :) |-------------------------------------
----------------------------------------------------------------------------------------------

--[[
Hi, thank you for buying our script, We are very grateful!

For help join our Discord server:     https://discord.gg/85u2u5c8q9
More informations about the script:   https://docs.brutalscripts.com
--]]

Config = {
    Core = 'ESX',  -- 'ESX' / 'QBCORE' | Other core setting on the 'core' folder.
    BrutalNotify = true, -- Buy here: (4€+VAT) https://store.brutalscripts.com | Or set up your own notify >> cl_utils.lua
    BackgroundBlur = true, -- true / false
    PanelColor = '#C337FB',
    PanelEditingButton = {FivemControl = 244, JsButton = 'm', Character = 'M'}, -- FivemControl: https://docs.fivem.net/docs/game-references/controls/#controls 
    AllowWhileDead = true, -- Allow the menu to be used while dead | true / false

    Commands = {  -- to turn off a command just simply leave empty the command line, like this: Command = '',
        RadialMenu = {
            Command = 'radialmenu',
            Control = '',  -- Controls list:  https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/
            Suggestion = 'Open Radial Menu'
        },
    },

    Menu = {

        {
            label = 'Personal',
            icon = '<img src="assets/person.png"></img>', -- you can set an image or an icon like this: <i class="fa-solid fa-id-card"></i> For more: https://fontawesome.com/search
            description = 'Personal documents, etc.',
            table = {
                {label = 'Show ID', icon = '<img src="assets/id.png"></img>', description = 'Example Description...', allowedjobs = false, blacklistedjobs = false, event = 'client:something'},  
                {label = 'Show Licence', icon = '<img src="assets/license.png"></img>', description = 'Example Description...', allowedjobs = false, blacklistedjobs = false, event = 'client:something'},
                {label = 'Inventory', icon = '<img src="assets/inventory.png"></img>', description = 'Example Description...', allowedjobs = false, blacklistedjobs = false, event = 'brutal_radial_client:OpenInventory'}, -- You can create an eventhandler like this in the cl-utils.lua to manage actions which can't be added with only one event
                {label = 'Wallet', icon = '<img src="assets/wallet.png"></img>', description = 'Example Description...', allowedjobs = false, blacklistedjobs = false, event = 'client:something'},
                {label = 'Phone', icon = '<img src="assets/phone.png"></img>', description = 'Example Description...', allowedjobs = false, blacklistedjobs = false, event = 'client:something'},
            }
        },

        {
            label = 'Emergency',
            icon = '<img src="assets/siren.png"></img>',
            description = 'Request for help',
            table = {
                {label = 'Police', icon = '<img src="assets/police.png"></img>', description = 'Example Description...', allowedjobs = false, blacklistedjobs = false, event = 'brutal_policejob:client:OpenCitizenCall'},
                {label = 'Ambulance', icon = '<img src="assets/ambulance.png"></img>', description = 'Example Description...', allowedjobs = false, blacklistedjobs = false, event = 'brutal_ambulancejob:client:CitizenCallMenu'},
                {label = 'Bennys', icon = '<img src="assets/mechanic1.png"></img>', description = 'Example Description...', allowedjobs = false, blacklistedjobs = false, event = 'brutal_mechanicjob:client:OpenMechanicCall'},
                {label = 'Los Santos Customs', icon = '<img src="assets/mechanic2.png"></img>', description = 'Example Description...', allowedjobs = false, blacklistedjobs = false, event = 'brutal_mechanicjob:client:OpenMechanicCall'},
            }
        },

        {
            label = 'Billing Menu',
            allowedjobs = false,  -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it. | Can only be used if 'blacklistedjobs' is also set to 'false'.
            blacklistedjobs = false, -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it. 
            icon = '<img src="assets/bill.png"></img>',
            description = 'To open the Billing Menu',
            event = 'brutal_billing:client:OpenMenu', -- it's basically compatible with the Brutal Billing
        },

        {
            label = 'GYM Menu',
            allowedjobs = false,  -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it. | Can only be used if 'blacklistedjobs' is also set to 'false'.
            blacklistedjobs = false, -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it
            icon = '<img src="assets/gym.png"></img>',
            description = 'To open the GYM Menu',
            event = 'brutal_skills:client:OpenMenu', -- it's basically compatible with the Brutal GYM system
        },

        {
            label = 'Reports',
            allowedjobs = false,  -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it. | Can only be used if 'blacklistedjobs' is also set to 'false'.
            blacklistedjobs = false, -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it
            icon = '<img src="assets/report.png"></img>',
            description = 'To open the reports Menu',
            event = 'brutal_reports:client:OpenMenu', -- it's basically compatible with the Brutal Reports
        },

        {
            label = 'Vehicle',
            allowedjobs = false,  -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it. | Can only be used if 'blacklistedjobs' is also set to 'false'.
            blacklistedjobs = false, -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it
            icon = '<img src="assets/vehicle.png"></img>',
            description = 'To open the Vehicle Control',
            event = '', -- add your custom triggger
        },

        {
            label = 'Gang Menu',
            allowedjobs = false, -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it. | Can only be used if 'blacklistedjobs' is also set to 'false'. | If you have the Brutal Gangs the gang members will automatically see this icon 
            blacklistedjobs = false, -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it
            icon = '<img src="assets/tablet.png"></img>',
            description = 'To open the Gang Menu',
            event = 'brutal_gangs:client:opengangmenu', -- it's basically compatible with the Brutal Gangs
        },

        {
            label = 'Police MDT',
            allowedjobs = {'police'}, -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it. | Can only be used if 'blacklistedjobs' is also set to 'false'.
            blacklistedjobs = false, -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it
            icon = '<img src="assets/tablet.png"></img>',
            description = 'To open the police MDT',
            event = 'brutal_policejob:client:MDTCommand', -- it's basically compatible with the Brutal Policejob
        },

        {
            label = 'EMS Menu',
            allowedjobs = {'ambulance'}, -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it. | Can only be used if 'blacklistedjobs' is also set to 'false'.
            blacklistedjobs = false, -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it
            icon = '<img src="assets/tablet.png"></img>',
            description = 'To open the EMS Menu',
            event = 'brutal_ambulancejob:client:MDTCommand', -- it's basically compatible with the Brutal Ambulancejob
        },

        {
            label = 'Mechanic',
            allowedjobs = {'mechanic'}, -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it. | Can only be used if 'blacklistedjobs' is also set to 'false'.
            blacklistedjobs = false, -- Both 'allowedjobs' and 'blacklistedjobs' must be 'false' for everyone to use it
            icon = '<img src="assets/tablet.png"></img>',
            description = 'To open the Mechanic Menu',
            event = 'brutal_mechanicjob:DiagnosticTablet', -- it's basically compatible with the Brutal Ambulancejob
        },
    }
}
client-utils.lua
ESX = Core
QBCore = Core

-- Buy here: (4€+VAT) https://store.brutalscripts.com
function notification(title, text, time, type)
    if Config.BrutalNotify then
        exports['brutal_notify']:SendAlert(title, text, time, type)
    else
        -- Put here your own notify and set the Config.BrutalNotify to false

        -- Default ESX Notify:
        --TriggerEvent('esx:showNotification', text)

        -- Default QB Notify:
        --TriggerEvent('QBCore:Notify', text, 'info', 5000)

        -- OKOK Notify:
        -- exports['okokNotify']:Alert('Radial Menu', text, time, type, false)

    end
end

function isPlayerDead()
    if GetResourceState("brutal_ambulancejob") == "started" then
        return exports.brutal_ambulancejob:IsDead()
    elseif GetResourceState("wasabi_ambulance") == "started" then
        return exports.wasabi_ambulance:isPlayerDead()
    else
        if IsEntityDead(PlayerPedId()) then
            return true
        else
            return false
        end
    end
end

function OpenMenuUtil()
    -- Here you can add a trigger to hide your HUD system

    Citizen.CreateThread(function()
        while InMenu do
            N_0xf4f2c0d4ee209e20() -- it's disable the AFK camera zoom
            Citizen.Wait(15000)
        end 
    end)

    DisplayRadar(false)
end

function CloseMenuUtil()
    -- Here you can add a trigger to enable your HUD system

    DisplayRadar(true)
end

RegisterNetEvent('brutal_radial_client:OpenInventory')
AddEventHandler('brutal_radial_client:OpenInventory', function()
    local PlayerServerId = GetPlayerServerId(PlayerId())

    if GetResourceState("ox_inventory") == "started" then
        exports.ox_inventory:openInventory('player', PlayerServerId)  -- OxInventory open players inventory 
    end
end)
client-core.lua
 Core = nil

if Config['Core']:upper() == 'ESX' then
    local _esx_ = 'new' -- 'new' / 'old'

    if _esx_ then
        Core = exports['es_extended']:getSharedObject()
    else
        while Core == nil do
            TriggerEvent('esx:getSharedObject', function(obj) Core = obj end)
            Citizen.Wait(0)
        end
    end

    LoadedEvent = 'esx:playerLoaded'
    onPlayerDeath = 'esx:onPlayerDeath'
    JobUpdateEvent = 'esx:setJob'
    TSCB = Core.TriggerServerCallback

    function GetPlayerJobDatas()
        return Core.GetPlayerData().job
    end

    function GetClosestPlayerFunction()
        return Core.Game.GetClosestPlayer()
    end

    function GetClosestVehicleFunction(coords, modelFilter)
        return Core.Game.GetClosestVehicle(coords, modelFilter)
    end

elseif Config['Core']:upper() == 'QBCORE' then
    Core = exports['qb-core']:GetCoreObject()

    LoadedEvent = 'QBCore:Client:OnPlayerLoaded'
    JobUpdateEvent = 'QBCore:Client:OnJobUpdate'
    TSCB = Core.Functions.TriggerCallback

    function GetPlayerJobDatas()
        return Core.Functions.GetPlayerData().gang
    end

    function GetClosestPlayerFunction()
        return Core.Functions.GetClosestPlayer()
    end

    function GetClosestVehicleFunction(coords, modelFilter)
        return Core.Functions.GetClosestVehicle(coords, modelFilter)
    end
    
end

Last updated