Configuration

This section includes all configurable files for the selected script. Most settings are configured automatically, but each config.lua file contains a header comment explaining the purpose and usage of every configuration type. Be sure to read the header of each file carefully to fully understand how to customize and adapt the system for QBCORE, ESX, or standalone environments, ensuring seamless integration with your server.


chevron-rightqs-radialmenu/config/config.luahashtag
Config = {}

-- ============================================
-- CONFIGURAÇÕES GERAIS
-- ============================================

-- Locale/Language setting
-- Available: 'en' (English), 'pt' (Portuguese), 'es' (Spanish), 'fr' (French), 
--            'de' (German), 'it' (Italian), 'nl' (Dutch), 'ru' (Russian), 
--            'ar' (Arabic), 'zh' (Chinese)
Config.Language = 'en'

-- Key to open the radial menu (default: F3)
-- See: https://docs.fivem.net/docs/game-references/controls/
-- Examples: F1 = 288, F2 = 289, F3 = 170, F5 = 166, etc.
Config.OpenKey = 170 -- F3

-- Shape of menu buttons
-- Options: "hexagon" or "circle"
Config.Shape = "circle" -- "hexagon" or "circle"

-- Enable carousel rotation animation when menu opens (default: true)
-- Set to false for better performance on low-end PCs
-- Players can override this in settings menu (F3 > Settings)
Config.EnableCarouselAnimation = true

-- Navigation button texts
Config.ButtonTexts = {
    back = "Voltar",    -- Back button text
    home = "Inicio",    -- Home button text
    closeInstruction = "Pressione ESC para fechar"  -- Close instruction text
}

-- Default colors for radial menu
Config.Colors = {
    buttonBgFrom = "#0a1929",
    buttonBgTo = "#051220",
    buttonBorder = "#1e5f8f",
    buttonGlow = "#2b7bc4",
    iconColor = "#60a5fa",
    textColor = "#e2e8f0",
    backgroundOpacity = 0.8
}

-- Color presets/templates for the settings UI
-- These templates appear in the gradient presets picker
Config.ColorPresets = {
    {
        name = "Default",
        colors = {
            buttonBgFrom = "#0a1929",
            buttonBgTo = "#051220",
            buttonBorder = "#1e5f8f",
            buttonGlow = "#2b7bc4",
            iconColor = "#60a5fa",
            textColor = "#e2e8f0"
        }
    },
    {
        name = "Dark Gray",
        colors = {
            buttonBgFrom = "#1f2937",
            buttonBgTo = "#111827",
            buttonBorder = "#4b5563",
            buttonGlow = "#6b7280",
            iconColor = "#9ca3af",
            textColor = "#e5e7eb"
        }
    },
    {
        name = "Purple",
        colors = {
            buttonBgFrom = "#581c87",
            buttonBgTo = "#3b0764",
            buttonBorder = "#7e22ce",
            buttonGlow = "#9333ea",
            iconColor = "#c4b5fd",
            textColor = "#f3e8ff"
        }
    },
    {
        name = "Emerald",
        colors = {
            buttonBgFrom = "#064e3b",
            buttonBgTo = "#022c22",
            buttonBorder = "#065f46",
            buttonGlow = "#059669",
            iconColor = "#6ee7b7",
            textColor = "#d1fae5"
        }
    },
    {
        name = "Red",
        colors = {
            buttonBgFrom = "#7f1d1d",
            buttonBgTo = "#450a0a",
            buttonBorder = "#991b1b",
            buttonGlow = "#b91c1c",
            iconColor = "#fca5a5",
            textColor = "#fee2e2"
        }
    },
    {
        name = "Orange",
        colors = {
            buttonBgFrom = "#7c2d12",
            buttonBgTo = "#431407",
            buttonBorder = "#9a3412",
            buttonGlow = "#c2410c",
            iconColor = "#fdba74",
            textColor = "#fed7aa"
        }
    }
}

-- Debug mode (enable to see job detection logs)
Config.Debug = false
Config.EditCommand = "radialsettings"
Config.OpenCommand = "radial"

Config.Menu = {
    title = 'Menu Principal',
    items = {
        -- Personaje
        {
            label = 'Personaje',
            icon = 'User',
            type = 'category',
            items = {
                {
                    label = 'Recargar skin',
                    icon = 'RotateCcw',
                    type = 'item',
                    action = function()
                        ExecuteCommand('reloadskin')
                    end
                },
                {
                    label = 'Cambiar de personaje',
                    icon = 'Users',
                    type = 'item',
                    action = function()
                        ExecuteCommand('qs:logout')
                    end
                },
                {
                    label = 'Limpiar props',
                    icon = 'Brush',
                    type = 'item',
                    action = function()
                        ExecuteCommand('clearstuckprops')
                    end
                },
                {
                    label = 'Trabajos',
                    icon = 'Briefcase',
                    type = 'item',
                    action = function()
                        ExecuteCommand('checkjob')
                    end
                },
                {
                    label = 'Tarjetas SIM',
                    icon = 'SimCard',
                    type = 'item',
                    action = function()
                        ExecuteCommand('simcards')
                    end
                }
            }
        },

        -- Customización
        {
            label = 'Customización',
            icon = 'Paintbrush',
            type = 'category',
            items = {
                {
                    label = 'Configurar HUD',
                    icon = 'Monitor',
                    type = 'item',
                    action = function()
                        ExecuteCommand('configure_hud') -- en el original venía "/configure_hud"
                    end
                }
            }
        },

        -- Apartments
        {
            label = 'Apartamentos',
            icon = 'Building',
            type = 'category',
            canInteract = function()
                return exports['qs-apartments']:InApartment()
            end,
            items = {
                {
                    label = 'Decorar apartamento',
                    icon = 'Sofa',
                    type = 'item',
                    action = function()
                        TriggerEvent('qs-apartments:client:decorate')
                    end
                },
                {
                    label = 'Configurar puntos',
                    icon = 'MapPin',
                    type = 'item',
                    action = function()
                        TriggerEvent('qs-apartments:client:locations')
                    end
                }
            }
        },

        -- Garage
        {
            label = 'Garajes',
            icon = 'Warehouse',
            type = 'category',
            job = { "mechanic", "realestate" },
            items = {
                {
                    label = 'Crear garaje de coches',
                    icon = 'Car',
                    type = 'item',
                    action = function()
                        TriggerEvent('advancedgarages:createVehicleGarage')
                    end
                },
                {
                    label = 'Crear garaje de barcos',
                    icon = 'Ship',
                    type = 'item',
                    action = function()
                        TriggerEvent('advancedgarages:createBoatGarage')
                    end
                },
                {
                    label = 'Crear garaje de aviones',
                    icon = 'Plane',
                    type = 'item',
                    action = function()
                        TriggerEvent('advancedgarages:createPlaneGarage')
                    end
                },
                {
                    label = 'Eliminar garaje',
                    icon = 'Trash2',
                    type = 'item',
                    action = function()
                        TriggerEvent('advancedgarages:deleteGarage')
                    end
                }
            }
        },

        -- Appearance
        {
            label = 'Tiendas de ropa',
            icon = 'Shirt',
            type = 'category',
            job = { "realestate" },
            items = {
                {
                    label = 'Crear tienda de ropa',
                    icon = 'PlusSquare',
                    type = 'item',
                    action = function()
                        ExecuteCommand('create_shop')
                    end
                },
                {
                    label = 'Eliminar tienda de ropa',
                    icon = 'Trash2',
                    type = 'item',
                    action = function()
                        ExecuteCommand('delete_shop')
                    end
                }
            }
        },

        -- Drugs Creator (Realestate)
        {
            label = 'Laboratorios',
            icon = 'FlaskConical',
            type = 'category',
            job = { "realestate" },
            items = {
                {
                    label = 'Crear laboratorio',
                    icon = 'TestTubes',
                    type = 'item',
                    action = function()
                        ExecuteCommand('drugscreator')
                    end
                }
            }
        },

        -- Housing Creator
        {
            label = 'Viviendas',
            icon = 'Home',
            type = 'category',
            job = { "realestate" },
            items = {
                {
                    label = 'Abrir creador de viviendas',
                    icon = 'Home',
                    type = 'item',
                    action = function()
                        ExecuteCommand('realestate')
                    end
                }
            }
        },

        -- Lab Menu (cuando está dentro)
        {
            label = 'Laboratorio',
            icon = 'FlaskConical',
            type = 'category',
            canInteract = function()
                return exports['qs-drugs-creator']:EnteredLab()
            end,
            items = {
                {
                    label = 'Menú del laboratorio',
                    icon = 'Settings',
                    type = 'item',
                    action = function()
                        ExecuteCommand('labMenu')
                    end
                },
                {
                    label = 'Decoración',
                    icon = 'PaintRoller',
                    type = 'item',
                    action = function()
                        ExecuteCommand('labDeco')
                    end
                }
            }
        },

        -- Mecánico
        {
            label = 'Mecánico',
            icon = 'Wrench',
            type = 'category',
            job = { "mechanic" },
            items = {
                {
                    label = 'Reparar vehículos',
                    icon = 'Tool',
                    type = 'item',
                    action = function()
                        ExecuteCommand('repairvehicle')
                    end
                },
                {
                    label = 'Enviar al depósito',
                    icon = 'Warehouse',
                    type = 'item',
                    action = function()
                        ExecuteCommand('impound')
                    end
                },
                {
                    label = 'Limpiar vehículos',
                    icon = 'Trash2',
                    type = 'item',
                    action = function()
                        ExecuteCommand('mdv')
                    end
                },
                {
                    label = 'Abrir Menú',
                    icon = 'Tools',
                    type = 'item',
                    action = function()
                        ExecuteCommand('mechanic_radial')
                    end
                }
            }
        },

        -- Motorhome
        {
            label = 'Motorhome',
            icon = 'Caravan',
            type = 'category',
            canInteract = function()
                return exports['qs-motorhome']:GetCurrentVanPlate() or exports['qs-motorhome']:getClosestVan()
            end,
            items = {
                {
                    label = 'Decorar carabana',
                    icon = 'Sofa',
                    type = 'item',
                    canInteract = function()
                        return exports['qs-motorhome']:GetCurrentVanPlate()
                    end,
                    action = function()
                        ExecuteCommand('vanDecoration')
                    end
                },
                {
                    label = 'Configurar puntos',
                    icon = 'MapPin',
                    type = 'item',
                    canInteract = function()
                        return exports['qs-motorhome']:GetCurrentVanPlate()
                    end,
                    action = function()
                        ExecuteCommand('vanLocation')
                    end
                },
                {
                    label = 'Acampar',
                    icon = 'MapPin',
                    type = 'item',
                    canInteract = function()
                        return exports['qs-motorhome']:getClosestVan()
                    end,
                    action = function()
                        ExecuteCommand('vanCamp')
                    end
                },
                {
                    label = 'Dar llaves',
                    icon = 'Key',
                    type = 'item',
                    canInteract = function()
                        return exports['qs-motorhome']:GetCurrentVanPlate() or exports['qs-motorhome']:getClosestVan()
                    end,
                    action = function()
                        TriggerEvent('qs-motorhome:client:givekeysNearest')
                    end
                }
            }
        },

        -- Diamond Casino
        {
            label = 'Casino',
            icon = 'Dices',
            type = 'category',
            job = { "casino" },
            items = {
                {
                    label = 'Abrir menú de casino',
                    icon = 'Dices',
                    type = 'item',
                    action = function()
                        ExecuteCommand('casino')
                    end
                }
            }
        },

        -- Admin
        {
            label = 'Administración',
            icon = 'Shield',
            type = 'category',
            canInteract = function()
                local flag = LocalPlayer.state.qs_isAdmin
                return flag == true
            end,
            items = {
                {
                    label = 'Abrir menú',
                    icon = 'ClipboardList',
                    type = 'item',
                    action = function()
                        ExecuteCommand('qadmin')
                    end
                },
                {
                    label = 'Crear Craft',
                    icon = 'Hammer',
                    type = 'item',
                    action = function()
                        ExecuteCommand('crafting_creator')
                    end
                },
                {
                    label = 'Reparar vehículos',
                    icon = 'Tool',
                    type = 'item',
                    action = function()
                        ExecuteCommand('repairvehicle')
                    end
                },
                {
                    label = 'Enviar al depósito',
                    icon = 'Warehouse',
                    type = 'item',
                    action = function()
                        ExecuteCommand('impound')
                    end
                },
                {
                    label = 'Limpiar vehículos',
                    icon = 'Brush',
                    type = 'item',
                    action = function()
                        ExecuteCommand('mdv')
                    end
                },
                {
                    label = 'Cambiar ropa',
                    icon = 'Shirt',
                    type = 'item',
                    action = function()
                        ExecuteCommand('appearance')
                    end
                },
                {
                    label = 'Crear tiendas',
                    icon = 'Store',
                    type = 'item',
                    action = function()
                        ExecuteCommand('shopcreator')
                    end
                },
                {
                    label = 'Crear hospitales',
                    icon = 'Hospital',
                    type = 'item',
                    action = function()
                        ExecuteCommand('hospital_creator')
                    end
                },
                {
                    label = 'Crear Mecánicos',
                    icon = 'Car',
                    type = 'item',
                    action = function()
                        ExecuteCommand('mechanic_creator')
                    end
                }
            }
        },

        -- Vehículo (contexto)
        {
            label = 'Vehículo',
            icon = 'CarFront',
            type = 'category',
            canInteract = function()
                return print('AA')
            end,
            items = {
                {
                    label = 'Puertas',
                    icon = 'DoorOpen',
                    type = 'category',
                    items = {
                        {
                            label = 'Conductor',
                            icon = 'Car',
                            type = 'item',
                            canInteract = function()
                                return QS_Radial.HasDoor(0)
                            end,
                            action = function()
                                TriggerEvent('radialmenu:door0')
                            end
                        },
                        {
                            label = 'Pasajero',
                            icon = 'Car',
                            type = 'item',
                            canInteract = function()
                                return QS_Radial.HasDoor(1)
                            end,
                            action = function()
                                TriggerEvent('radialmenu:door1')
                            end
                        },
                        {
                            label = 'Trasera Izq.',
                            icon = 'Car',
                            type = 'item',
                            canInteract = function()
                                return QS_Radial.HasDoor(2)
                            end,
                            action = function()
                                TriggerEvent('radialmenu:door2')
                            end
                        },
                        {
                            label = 'Trasera Der.',
                            icon = 'Car',
                            type = 'item',
                            canInteract = function()
                                return QS_Radial.HasDoor(3)
                            end,
                            action = function()
                                TriggerEvent('radialmenu:door3')
                            end
                        },
                        {
                            label = 'Capó',
                            icon = 'Car',
                            type = 'item',
                            canInteract = function()
                                return QS_Radial.HasDoor(4)
                            end,
                            action = function()
                                TriggerEvent('radialmenu:door4')
                            end
                        },
                        {
                            label = 'Maletero',
                            icon = 'Car',
                            type = 'item',
                            canInteract = function()
                                return QS_Radial.HasDoor(5)
                            end,
                            action = function()
                                TriggerEvent('radialmenu:door5')
                            end
                        }
                    }
                },
                {
                    label = 'Asientos',
                    icon = 'Armchair',
                    type = 'category',
                    items = {
                        {
                            label = 'Conductor',
                            icon = 'ChevronUp',
                            type = 'item',
                            canInteract = function()
                                return QS_Radial.HasSeat(-1)
                            end,
                            action = function()
                                TriggerEvent('radialmenu:seat_driver')
                            end
                        },
                        {
                            label = 'Pasajero',
                            icon = 'ChevronUp',
                            type = 'item',
                            canInteract = function()
                                return QS_Radial.HasSeat(0)
                            end,
                            action = function()
                                TriggerEvent('radialmenu:seat_passenger')
                            end
                        },
                        {
                            label = 'Trasero Izq.',
                            icon = 'ChevronUp',
                            type = 'item',
                            canInteract = function()
                                return QS_Radial.HasSeat(1)
                            end,
                            action = function()
                                TriggerEvent('radialmenu:seat_rl')
                            end
                        },
                        {
                            label = 'Trasero Der.',
                            icon = 'ChevronUp',
                            type = 'item',
                            canInteract = function()
                                return QS_Radial.HasSeat(2)
                            end,
                            action = function()
                                TriggerEvent('radialmenu:seat_rr')
                            end
                        }
                    }
                },
                {
                    label = 'Motor',
                    icon = 'Key',
                    type = 'item',
                    action = function()
                        TriggerEvent('radialmenu:toggleEngine')
                    end
                },
                {
                    label = 'Voltear vehículo',
                    icon = 'Car',
                    type = 'item',
                    action = function()
                        TriggerEvent('radialmenu:flipVehicle')
                    end
                }
            }
        },

        -- Carreras
        {
            label = 'Carreras',
            icon = 'FlagCheckered',
            type = 'category',
            items = {
                {
                    label = 'Menú',
                    icon = 'Gauge',
                    type = 'item',
                    action = function()
                        ExecuteCommand('openracingui')
                    end
                },
                {
                    label = 'Nitro',
                    icon = 'Zap',
                    type = 'item',
                    action = function()
                        ExecuteCommand('usenitro')
                    end
                },
                {
                    label = 'Drift',
                    icon = 'Car',
                    type = 'item',
                    action = function()
                        ExecuteCommand('drift')
                    end
                }
            }
        },

        -- Ambulancia
        {
            label = 'Ambulancia',
            icon = 'Ambulance',
            type = 'category',
            job = {
                ambulance = { grade = 1 },
            },
            items = {
                {
                    label = 'Abrir menú',
                    icon = 'Ambulance',
                    type = 'item',
                    action = function()
                        TriggerEvent('ambulance:openMenu')
                    end
                }
            }
        }
    }
}