HEX
HexscriptsClassicAdmin Menu

Configurations

Here you will get all configurations & open source files that are included within this script.

Config Files

Config = {}

Config.Debug = true -- Set to true to enable debug messages in the console
Config.Locale = 'en' -- automatic, en, de, es, fr, it, nl, pl, pt, tr, ar
Config.Framework = 'esx' -- automatic, esx, qbcore, standalone

Config.MenuHeader = {
    ['main_menu'] = 'https://cdn.resync.me/attachments/scripts/hex_ui_header.png',
    ['self_menu'] = 'https://cdn.resync.me/attachments/scripts/hex_ui_header.png',
    ['self_ped_menu'] = 'https://cdn.resync.me/attachments/scripts/hex_ui_header.png',
    ['self_special_menu'] = 'https://cdn.resync.me/attachments/scripts/hex_ui_header.png',
    ['vehicle_menu'] = 'https://cdn.resync.me/attachments/scripts/hex_ui_header.png',
    ['framework_menu'] = 'https://cdn.resync.me/attachments/scripts/hex_ui_header.png'
}

Config.MenuAlligment = {
    premade = 'left'
}

Config.AdminDutyStyle = 'FiveM' -- (FiveM) Classic with Premade Outfits, (Rage) for Grand Style System. 
Config.AdminDutyDrawDistanceRage = 25.0 -- The distance at which the nametags will be drawn when using the Rage style. This is only used if AdminDutyStyle is set to 'Rage'.
Config.AdminDutyRageLabels = {
    ['owner'] = '~r~Owner\n%s\nID: %s',
    ['superadmin'] = '~r~Superadmin\n%s\nID: %s',
    ['admin'] = '~r~Administrator\n%s\nID: %s',
    ['mod'] = '~g~Moderator\n%s\nID: %s',
    ['support'] = '~b~Supporter\n%s\nID: %s'
}

Config.AdminDutyDefaultKey = 'F9' -- The default key to toggle admin duty. This can be changed in the settings menu in-game, but this is the default keybind.
Config.NoClipDefaultKey = 'F10' -- The default key to toggle noclip. This can be changed in the settings menu in-game, but this is the default keybind.

Config.AntiAbuse = true -- If this is enabled, Godmode, Noclip and Nametags will only work when the Staff is in Admin Duty.
Config.AntiAbuseBypass = { 'owner' } -- This is the permission that will bypass the anti-abuse check.
Config.SelfNametags = true -- only works when AdminDutyStyle is set to 'FiveM'.

Config.AdutyToggle = {
    ['nametags'] = true, -- Toggles nametags when going in the admin duty
    ['godmode'] = true -- Toggles godmode when going in admin duty
}

Config.Permissions = {
    ['self_menu'] = {
        ['godmode'] = { 'support', 'admin', 'owner' },
        ['nametags'] = { 'support', 'admin', 'owner' },
        ['noclip'] = { 'admin', 'owner' }
    },

    ['ped_menu'] = {
        ['clean_ped'] = { 'support', 'admin', 'owner' },
        ['add_health'] = { 'admin', 'owner' },
        ['add_armour'] = {  'admin', 'owner' },
        ['ped_changer'] = { 'admin', 'owner' }
    },

    ['special_menu'] = {
        ['superjump'] = { 'admin', 'owner' },
        ['noragdoll'] = { 'admin', 'owner' },
        ['superspeed'] = { 'admin', 'owner' },
        ['superpunch'] = { 'admin', 'owner' },
        ['supersize'] = { 'admin', 'owner' }
    },

    ['vehicle_menu'] = {
        ['spawn_vehicle'] = { 'support', 'admin', 'owner' },
        ['delete_vehicle'] = { 'admin', 'owner' },
        ['repair_vehicle'] = { 'admin', 'owner' },
        ['flip_vehicle'] = { 'admin', 'owner' }
    },

    ['framework_menu'] = {
        ['giveitem'] = { 'admin', 'owner' },
        ['giveweapon'] = { 'admin', 'owner' },
        ['givemoney'] = { 'admin', 'owner' },
        ['givevehicle'] = { 'admin', 'owner' },

        ['clear_peds'] = { 'admin', 'owner' },
        ['clear_vehicles'] = { 'admin', 'owner' },
        ['clear_objects'] = { 'admin', 'owner' }
    }
}

Config.AdminDutyOutfits = {
    ['owner'] = {
        ['male'] = {
            sex = 0,
            face = 0,
            skin = 0,
            hair_1 = 0, hair_2 = 0,
            hair_color_1 = 0, hair_color_2 = 0,
            decals_1 = 0, decals_2 = 0,
            tshirt_1 = 15, tshirt_2 = 13,
            torso_1 = 287, torso_2 = 0,
            arms = 3,
            pants_1 = 114, pants_2 = 0,
            shoes_1 = 78, shoes_2 = 0,
            mask_1 = 135, mask_2 = 0,
            bproof_1 = 0, bproof_2 = 0,
            bags_1 = 0, bags_2 = 0,
            beard_1 = 0, beard_2 = 0, beard_3 = 0, beard_4 = 0,
            helmet_1 = -1, helmet_2 = 0,
            chain_1 = 0, chain_2 = 0,
            glasses_1 = 0, glasses_2 = 0
        },
        ['female'] = { -- todo
            sex = 1,
            face = 0,
            skin = 0,
            hair_1 = 0, hair_2 = 0,
            hair_color_1 = 0, hair_color_2 = 0,
            decals_1 = 0, decals_2 = 0,
            tshirt_1 = 14, tshirt_2 = 0,
            torso_1 = 300, torso_2 = 0,
            arms = 10,
            pants_1 = 121, pants_2 = 0,
            shoes_1 = 82, shoes_2 = 0,
            mask_1 = 135, mask_2 = 0,
            bproof_1 = 0, bproof_2 = 0,
            bags_1 = 0, bags_2 = 0,
            beard_1 = 0, beard_2 = 0, beard_3 = 0, beard_4 = 0,
            helmet_1 = -1, helmet_2 = 0,
            chain_1 = 0, chain_2 = 0,
            glasses_1 = 0, glasses_2 = 0
        }
    },

    ['superadmin'] = {
        ['male'] = {
            sex = 0,
            face = 0,
            skin = 0,
            hair_1 = 0, hair_2 = 0,
            hair_color_1 = 0, hair_color_2 = 0,
            decals_1 = 0, decals_2 = 0,
            tshirt_1 = 15, tshirt_2 = 13,
            torso_1 = 287, torso_2 = 1,
            arms = 3,
            pants_1 = 114, pants_2 = 1,
            shoes_1 = 78, shoes_2 = 1,
            mask_1 = 135, mask_2 = 1,
            bproof_1 = 0, bproof_2 = 0,
            bags_1 = 0, bags_2 = 0,
            beard_1 = 0, beard_2 = 0, beard_3 = 0, beard_4 = 0,
            chain_1 = 0, chain_2 = 0,
            helmet_1 = -1, helmet_2 = 0,
            glasses_1 = 0, glasses_2 = 0
        },
        ['female'] = {
            sex = 1,
            face = 0,
            skin = 0,
            hair_1 = 0, hair_2 = 0,
            hair_color_1 = 0, hair_color_2 = 0,
            decals_1 = 0, decals_2 = 0,
            tshirt_1 = 14, tshirt_2 = 0,
            torso_1 = 300, torso_2 = 1,
            arms = 10,
            pants_1 = 121, pants_2 = 1,
            shoes_1 = 82, shoes_2 = 1,
            mask_1 = 135, mask_2 = 1,
            bproof_1 = 0, bproof_2 = 0,
            bags_1 = 0, bags_2 = 0,
            beard_1 = 0, beard_2 = 0, beard_3 = 0, beard_4 = 0,
            helmet_1 = -1, helmet_2 = 0,
            chain_1 = 0, chain_2 = 0,
            glasses_1 = 0, glasses_2 = 0
        }
    },

    ['admin'] = {
        ['male'] = {
            sex = 0,
            face = 0,
            skin = 0,
            hair_1 = 0, hair_2 = 0,
            hair_color_1 = 0, hair_color_2 = 0,
            decals_1 = 0, decals_2 = 0,
            tshirt_1 = 15, tshirt_2 = 0,
            torso_1 = 287, torso_2 = 2,
            arms = 3,
            pants_1 = 114, pants_2 = 2,
            shoes_1 = 78, shoes_2 = 2,
            mask_1 = 135, mask_2 = 2,
            bproof_1 = 0, bproof_2 = 0,
            bags_1 = 0, bags_2 = 0,
            beard_1 = 0, beard_2 = 0, beard_3 = 0, beard_4 = 0,
            chain_1 = 0, chain_2 = 0,
            helmet_1 = -1, helmet_2 = 0,
            glasses_1 = 0, glasses_2 = 0
        },
        ['female'] = {
            sex = 1,
            face = 0,
            skin = 0,
            hair_1 = 0, hair_2 = 0,
            hair_color_1 = 0, hair_color_2 = 0,
            decals_1 = 0, decals_2 = 0,
            tshirt_1 = 14, tshirt_2 = 0,
            torso_1 = 300, torso_2 = 2,
            arms = 10,
            pants_1 = 121, pants_2 = 2,
            shoes_1 = 82, shoes_2 = 2,
            mask_1 = 135, mask_2 = 2,
            bproof_1 = 0, bproof_2 = 0,
            bags_1 = 0, bags_2 = 0,
            beard_1 = 0, beard_2 = 0, beard_3 = 0, beard_4 = 0,
            helmet_1 = -1, helmet_2 = 0,
            chain_1 = 0, chain_2 = 0,
            glasses_1 = 0, glasses_2 = 0
        }
    },

    ['mod'] = {
        ['male'] = {
            sex = 0,
            face = 0,
            skin = 0,
            hair_1 = 0, hair_2 = 0,
            hair_color_1 = 0, hair_color_2 = 0,
            decals_1 = 0, decals_2 = 0,
            tshirt_1 = 15, tshirt_2 = 13,
            torso_1 = 287, torso_2 = 4,
            arms = 3,
            pants_1 = 114, pants_2 = 4,
            shoes_1 = 78, shoes_2 = 4,
            mask_1 = 135, mask_2 = 4,
            bproof_1 = 0, bproof_2 = 0,
            bags_1 = 0, bags_2 = 0,
            beard_1 = 0, beard_2 = 0, beard_3 = 0, beard_4 = 0,
            chain_1 = 0, chain_2 = 0,
            helmet_1 = -1, helmet_2 = 0,
            glasses_1 = 0, glasses_2 = 0
        },
        ['female'] = {
            sex = 1,
            face = 0,
            skin = 0,
            hair_1 = 0, hair_2 = 0,
            hair_color_1 = 0, hair_color_2 = 0,
            decals_1 = 0, decals_2 = 0,
            tshirt_1 = 14, tshirt_2 = 0,
            torso_1 = 300, torso_2 = 4,
            arms = 10,
            pants_1 = 121, pants_2 = 4,
            shoes_1 = 82, shoes_2 = 4,
            mask_1 = 135, mask_2 = 4,
            bproof_1 = 0, bproof_2 = 0,
            bags_1 = 0, bags_2 = 0,
            beard_1 = 0, beard_2 = 0, beard_3 = 0, beard_4 = 0,
            helmet_1 = -1, helmet_2 = 0,
            chain_1 = 0, chain_2 = 0,
            glasses_1 = 0, glasses_2 = 0
        }
    },

    ['support'] = {
        ['male'] = {
            sex = 0,
            face = 0,
            skin = 0,
            hair_1 = 0, hair_2 = 0,
            hair_color_1 = 0, hair_color_2 = 0,
            decals_1 = 0, decals_2 = 0,
            tshirt_1 = 15, tshirt_2 = 13,
            torso_1 = 287, torso_2 = 5,
            arms = 3,
            pants_1 = 114, pants_2 = 5,
            shoes_1 = 78, shoes_2 = 5,
            mask_1 = 135, mask_2 = 5,
            bproof_1 = 0, bproof_2 = 0,
            bags_1 = 0, bags_2 = 0,
            beard_1 = 0, beard_2 = 0, beard_3 = 0, beard_4 = 0,
            chain_1 = 0, chain_2 = 0,
            helmet_1 = -1, helmet_2 = 0,
            glasses_1 = 0, glasses_2 = 0
        },
        ['female'] = {
            sex = 1,
            face = 0,
            skin = 0,
            hair_1 = 0, hair_2 = 0,
            hair_color_1 = 0, hair_color_2 = 0,
            decals_1 = 0, decals_2 = 0,
            tshirt_1 = 14, tshirt_2 = 0,
            torso_1 = 300, torso_2 = 5,
            arms = 10,
            pants_1 = 121, pants_2 = 5,
            shoes_1 = 82, shoes_2 = 5,
            mask_1 = 135, mask_2 = 5,
            bproof_1 = 0, bproof_2 = 0,
            bags_1 = 0, bags_2 = 0,
            beard_1 = 0, beard_2 = 0, beard_3 = 0, beard_4 = 0,
            helmet_1 = -1, helmet_2 = 0,
            chain_1 = 0, chain_2 = 0,
            glasses_1 = 0, glasses_2 = 0
        }
    }
}

Opensource Files

if Config.Framework ~= 'esx' then return end

local ESX = nil

function loadFramework()
    local status, ESXLOAD = pcall(function()
        return exports['es_extended']:getSharedObject()
    end)

    ESX = ESXLOAD

    if not status then
        while not ESX do
            TriggerEvent("esx:getSharedObject", function(object) ESX = object end)
            Citizen.Wait(50)
        end
    end

    while ESX.GetPlayerData().job == nil do
        Citizen.Wait(50)
    end

    while not ESX.IsPlayerLoaded() do
        Citizen.Wait(50)
    end

    ESX.PlayerData = ESX.GetPlayerData()

    local name = GetPlayerName(PlayerId())

    if ESX.PlayerData.firstName ~= '' then
        name = ESX.PlayerData.firstName .. ' ' .. ESX.PlayerData.lastName
    end

    Player(GetPlayerServerId(PlayerId())).state:set('rpName', name, true)
end

function GetItemLabel(itemName)
	for k, v in ipairs(ESX.PlayerData.inventory) do
		if v.name == itemName then
            return v.label
		end
	end

    return itemName
end

function GetWeaponLabel(weaponName)
    return ESX.GetWeaponLabel(weaponName)
end

function TriggerServerCallback(name, cb, ...)
    ESX.TriggerServerCallback(name, function(result)
        cb(result)
    end, ...)
end

function GetAllItems()
    if GetResourceState('ox_inventory') == 'started' then
        local inventory = {}
        local items = exports.ox_inventory:Items()

        for itemName, itemData in pairs(items) do
            inventory[#inventory + 1] = {
                name = itemName,
                label = itemData.label
            }
        end

        return inventory
    elseif GetResourceState('jaksam_inventory') == 'started' then
        local inventory = {}
        local items = exports.jaksam_inventory:getStaticItemsList()

        for itemName, itemData in pairs(items) do
            inventory[#inventory + 1] = {
                name = itemName,
                label = itemData.label
            }
        end

        return inventory
    end

    return ESX.PlayerData.inventory
end

function GetAllWeapons()
    return ESX.GetWeaponList()
end

function ResetSkin()
    TriggerServerCallback('esx_skin:getPlayerSkin', function(skin)
        TriggerEvent('skinchanger:loadSkin', skin)
    end)
end

function GetAdutySex()
    local p = promise.new()

    TriggerEvent('skinchanger:getSkin', function(skin)
        p:resolve(skin.sex == 0 and 'male' or 'female')
    end)

    return Citizen.Await(p)
end

function LoadAdutySkin(skin)
    TriggerEvent('skinchanger:loadSkin', skin)
end

function GetPlayerIdentifier()
    return ESX.PlayerData.identifier
end

function GetPlayerGroup()
    return ESX.PlayerData.group
end

RegisterNetEvent('esx:setGroup', function(group)
    if source == '' then return end

    ESX.PlayerData.group = group
end)

RegisterNetEvent('esx:updatePlayerData', function(variables)
    if source == '' then return end

    if variables.firstName and variables.lastName then
        ESX.PlayerData.firstName = variables.firstName
        ESX.PlayerData.lastName = variables.lastName

        local name = ESX.PlayerData.firstName .. ' ' .. ESX.PlayerData.lastName
        Player(GetPlayerServerId(PlayerId())).state:set('rpName', name, true)
    end
end)

AddEventHandler('esx:setPlayerData', function(key, value)
    if key == 'firstName' or key == 'lastName' then
        ESX.PlayerData[key] = value

        local name = ESX.PlayerData.firstName .. ' ' .. ESX.PlayerData.lastName
        Player(GetPlayerServerId(PlayerId())).state:set('rpName', name, true)
    end
end)