> For the complete documentation index, see [llms.txt](https://spicytasty-docs.gitbook.io/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://spicytasty-docs.gitbook.io/docs/scripts/radio/config.md).

# Config

Here is the config of script.

This is only the configuration file, inside the script you can change menus, mini-games, etc.

{% tabs %}
{% tab title="config\_framework.lua" %}

```lua
Config = Config or {}
Locales = Locales or {}

--     __________  ___    __  __________       ______  ____  __ __
--    / ____/ __ \/   |  /  |/  / ____/ |     / / __ \/ __ \/ //_/
--   / /_  / /_/ / /| | / /|_/ / __/  | | /| / / / / / /_/ / ,<   
--  / __/ / _, _/ ___ |/ /  / / /___  | |/ |/ / /_/ / _, _/ /| |  
-- /_/   /_/ |_/_/  |_/_/  /_/_____/  |__/|__/\____/_/ |_/_/ |_|  
                                                            
--[[ 
    With the 'auto' option your framework will be automatically selected. 
    If you use a custom framework change to 'custom'. 
    If you only changed the name of your framework, leave it as automatic and change the names below.
]]

Config.Framework = 'auto' -- or ESX, QBCORE, QBX, CUSTOM
Config.FrameOptions = { 
    ESX = {
        name        = 'es_extended',            --- Name of your es_extended
        shared      = 'esx:getSharedObject',    --- Trigger of shared object
        loadPlayer  = 'esx:playerLoaded',       --- Event name of load player
        job         = 'esx:setJob',             --- Event name of job
        playerDeath = 'esx:onPlayerDeath',      --- Event when player death
        playerLogout= 'esx:onPlayerLogout'      --- Event when player disconnect/Unload
    },

    QBCORE = {
        name        = 'qb-core',                      --- Name of your qb-core
        loadPlayer  = 'QBCore:Player:SetPlayerData',  --- Event name of load player
        job         = 'QBCore:Client:OnJobUpdate',
        playerDeath = 'QBCore:Player:onPlayerDeath',  --- Event when player death
        playerLogout= 'QBCore:Client:OnPlayerUnload'  --- Event when player disconnect/Unload
    },

    QBX = {
        name        = 'qbx_core',                      --- Name of your qb-core
        loadPlayer  = 'qbx_core:client:onSetMetaData',  --- Event name of load player
        job         = 'QBCore:Client:OnJobUpdate', 
        playerDeath = 'QBCore:Player:onPlayerDeath',  --- Event when player death
        playerLogout= 'qbx_core:client:playerLoggedOut'  --- Event when player disconnect/Unload
    },

    CUSTOM = {
        name        = 'your-framework',                      --- Name of your qb-core
        loadPlayer  = 'your-framework:SetPlayerData',  --- Event name of load player
        job         = 'QBCore:Client:OnJobUpdate', 
        playerDeath = 'your-framework:onPlayerDeath',  --- Event when player death
        playerLogout= 'your-framework:OnPlayerUnload'  --- Event when player disconnect/Unload
    }
}
-- ❗ IMPORTANT ❗

--  If you need to change something in the files or modify more things like progress bar and so on, all files are open (not encrypted), except those inside _escrow_files and js.

-- ❗ IMPORTANT ❗

--     __                                          
--    / /   ___  ____  ____ ___  ______ _____ ____ 
--   / /   / _ \/ __ \/ __ `/ / / / __ `/ __ `/ _ \
--  / /___/  __/ / / / /_/ / /_/ / /_/ / /_/ /  __/
-- /_____/\___/_/ /_/\__, /\__,_/\__,_/\__, /\___/ 
--                  /____/            /____/ 
--[[  
    ❗ Remember to choose what is between ''
    'es' > Para español.
    'de' > Für Deutsch.
    'fr' > Pour le français.
    'pt' > Para português.
    'en' > For english.
]]
Config.Language = 'en'

--       ____                      __                  
--      /  _/___ _   _____  ____  / /_____  _______  __
--     / // __ \ | / / _ \/ __ \/ __/ __ \/ ___/ / / /
--   _/ // / / / |/ /  __/ / / / /_/ /_/ / /  / /_/ / 
--  /___/_/ /_/|___/\___/_/ /_/\__/\____/_/   \__, /  
--                                           /____/   
--[[ 
    ❗ Remember to choose what is between ''
    > auto > will be automatically selected
    > 'qs' > qs-inventory
    > 'ox' > ox_inventory
    > 'qb' > qb-inventory
    > 'lj' > lj-inventory
    > 'core' > core_inventory
    > 'ps' > ps-inventory
    > 'tgiann' > tgiann-inventory
    > 'codem' > codem-inventory
    > 'ak47' > ak47_inventory
    > 'custom' > custom inventory
]]
Config.Inventory = 'auto'

--      _   __      __  _ _____            __  _           
--     / | / /___  / /_(_) __(_)________ _/ /_(_)___  ____ 
--    /  |/ / __ \/ __/ / /_/ / ___/ __ `/ __/ / __ \/ __ \
--   / /|  / /_/ / /_/ / __/ / /__/ /_/ / /_/ / /_/ / / / /
--  /_/ |_/\____/\__/_/_/ /_/\___/\__,_/\__/_/\____/_/ /_/ 

--[[
    ❗ Remember to choose what is between ''
    ❗ > 'st' > stNotify Use the Discount Code "SpicyTasty" for 15% OFF https://spicytasty.tebex.io/category/2558543
    
    > 'default' > gta native
    > 'okok' > okokNotify
    > 'qs' > qs-notify
    > 'qb' > qb-core
    > 'esx' > esx notification
    > 'qbx' > qbx-core
    > 'custom' -> change on 'stRadio/client/notify/custom'
]]
Config.NotifyScript = 'default'

--[[
    ❗ Remember to choose what is between ''
    > 'auto' > will be automatically selected
    > 'salty' > salty-chat
    > 'pma' > pma-voice
    > 'yaca' > yava-voice
    > 'mumble' > mumble-voip dont tested
]]
Config.VoiceScript = 'auto'

-- It is not advisable to use another pma voice other than the official one, 
-- but if you change the name you should change this
-- https://github.com/AvarianKnight/pma-voice
Config.PMAVoice = 'pma-voice' -- If have another name change it
Config.SaltyName = 'saltychat'
Config.MumbleVoip = 'mumble-voip'
Config.YacaVoice = 'yaca-voice'

--[[
    ❗ Remember to choose what is between ''   
    > 'none' > For remove target and use draw text
    > 'auto' > will be automatically selected
    > 'ox' > ox-target
    > 'qb' > qb-target
]]

Config.Target = 'auto' -- in development

Config.Debug = false
```

{% endtab %}

{% tab title="config\_script.lua" %}

```lua
--     _____________   ____________  ___    __ 
--   / ____/ ____/ | / / ____/ __ \/   |  / / 
--  / / __/ __/ /  |/ / __/ / /_/ / /| | / /  
-- / /_/ / /___/ /|  / /___/ _, _/ ___ |/ /___
-- \____/_____/_/ |_/_____/_/ |_/_/  |_/_____/
                                        
-- Name of the item
Config.RadioItem = 'radio' -- I recommend not changing
-- Disconnect from radio when the user is dead
Config.DisconnectWhenDeath = true
-- Disconnect from radio when the users drop the item
Config.DisconnectWhenDropRadioItem = true
-- Disables the list of players inside the radio
Config.DisableListRadio = false
-- If you set in true this option, when you open the radio, it will connect 
-- to the latest frequency but will check the job and may fail to connect.
Config.CheckJob = false

-- Animation Settings
Config.TalkAnimation = {
    -- 'pma' -- Use the native animation of Pma voice
    -- 'custom' -- Use the stRadio animation
    -- 'DLC' -- Use the stRadioAnimationsDLC
    type = 'custom',
    Hand = {
        Animation = {
            dict = 'anim@male@holding_radio',
            anim = 'holding_radio_clip'
        },
        Parameters = {
            blendInSpeed = 8.0,
            blendOutSpeed = -8.0,
            duration = -1,
            flag = 50,
            playbackRate = 0,
            lockX = false,
            lockY = false,
            lockZ = false
        },
        Bone = {
            bone = 28422,
            xPos = 0.0750,
            yPos = 0.0230,
            zPos = -0.0230,
            xRot = -90.0000,
            yRot = 0.0,
            zRot = -59.9999,
            rotationOrder = 2,
        },
    },
    Shoulder = {
        Animation = {
            dict = 'random@arrests',
            anim = 'generic_radio_enter'
        },
        Parameters = {
            blendInSpeed = 8.0,
            blendOutSpeed = 2.0,
            duration = -1,
            flag = 50,
            playbackRate = 2.0,
            lockX = false,
            lockY = false,
            lockZ = false
        },
        Bone = {
            bone = 64729,
            xPos = 0.1,
            yPos = 0.04,
            zPos = -0.05,
            xRot = -50.0,
            yRot = 190.0,
            zRot = 180.0,
            rotationOrder = 1,
        },
    }
}
--    __________  _   ____________  ____  __   _____
--   / ____/ __ \/ | / /_  __/ __ \/ __ \/ /  / ___/
--  / /   / / / /  |/ / / / / /_/ / / / / /   \__ \ 
-- / /___/ /_/ / /|  / / / / _, _/ /_/ / /______/ / 
-- \____/\____/_/ |_/ /_/ /_/ |_|\____/_____/____/  
                                               
Config.KeyBinds = {
    OpenRadio = 'F5' -- Fast key to open radio
}

Config.DisableWhenTalking = {
    -- DISABLE KEYS WHEN HAVE THE RADIO OPEN or TALKING ON RADIO
    JUMP = true,
    SPRINT = false,
    ENTERTOVEHICLE = false,
    HANDBRAKE = false,
    AIM = true,
    -- go to stRadio/client/utils.lua and have the "EnableAim/DisabledAim" function
}

--     ____  ___    ____  ________     _____ _______________________   _____________
--    / __ \/   |  / __ \/  _/ __ \   / ___// ____/_  __/_  __/  _/ | / / ____/ ___/
--   / /_/ / /| | / / / // // / / /   \__ \/ __/   / /   / /  / //  |/ / / __ \__ \ 
--  / _, _/ ___ |/ /_/ // // /_/ /   ___/ / /___  / /   / / _/ // /|  / /_/ /___/ / 
-- /_/ |_/_/  |_/_____/___/\____/   /____/_____/ /_/   /_/ /___/_/ |_/\____//____/  
     
-- Default prop and battery when give a radio
Config.DefaultOptions = {
    prop = 'radio_grey',
    battery = 'bat_low',
}

Config.AliasSettings = {
    Prefix = 'ST-', -- User prefix that appears in the initial metadata alias
    Length = 5 -- Number and letters after the prefix
}

Config.RadioDistance = {
    ENABLE = true,
    
    veryClose = 1000, -- It is heard clearly
    close = 1500, -- Can be heard with a little interference
    distant = 2500, -- It is heard with interference
    farAway = 3500, -- It is heard with a lot of interference
    outOfRange = 5000, -- It can be heard with only interference
}

Config.Effects = {
    ['radio_veryclose'] = {
        effects = {
            freq_low = 100.0,
            freq_hi = 5000.0,
            rm_mod_freq = 300.0,
            rm_mix = 0.2,
            fudge = 4.0,
            o_freq_lo = 300.0,
            o_freq_hi = 5000.0,
        },
        volume = {
            frontLeft = 1.0,
            frontRight = 1.0,
            rearLeft = 0.0,
            rearRight = 0.0,
            channel5 = 1.0,
            channel6 = 1.0
        }
    },
    ['radio_close'] = {
        effects = {
            freq_low = 100.0,
            freq_hi = 5000.0,
            rm_mod_freq = 300.0,
            rm_mix = 0.4,
            fudge = 8.0,
            o_freq_lo = 300.0,
            o_freq_hi = 5000.0,
        },
        volume = {
            frontLeft = 0.8,
            frontRight = 0.6,
            rearLeft = 0.0,
            rearRight = 0.0,
            channel5 = 1.0,
            channel6 = 1.0
        }
    },
    ['radio_distant'] = {
        effects = {
            freq_low = 100.0,
            freq_hi = 5000.0,
            rm_mod_freq = 300.0,
            rm_mix = 0.6,
            fudge = 16.0,
            o_freq_lo = 300.0,
            o_freq_hi = 5000.0,
        },
        volume = {
            frontLeft = 0.6,
            frontRight = 0.8,
            rearLeft = 0.0,
            rearRight = 0.0,
            channel5 = 1.0,
            channel6 = 1.0
        }
    },
    ['radio_farAway'] = {
        effects = {
            freq_low = 100.0,
            freq_hi = 5000.0,
            rm_mod_freq = 300.0,
            rm_mix = 0.8,
            fudge = 24.0,
            o_freq_lo = 300.0,
            o_freq_hi = 5000.0,
        },
        volume = {
            frontLeft = 0.8,
            frontRight = 0.4,
            rearLeft = 0.0,
            rearRight = 0.0,
            channel5 = 1.0,
            channel6 = 1.0
        }
    },
    ['radio_outOfRange'] = {
        effects = {
            freq_low = 0.0,
            freq_hi = 1000.0,
            rm_mod_freq = 300.0,
            rm_mix = 1.0,
            fudge = 60.0,
            o_freq_lo = 0.0,
            o_freq_hi = 0.0,
        },
        volume = {
            frontLeft = 0.6,
            frontRight = 0.5,
            rearLeft = 0.2,
            rearRight = 0.7,
            channel5 = 0.0,
            channel6 = 0.0
        }
    },
}

Config.ConnectionSettings = {
    canFail = {
        ENABLE = true, -- When connecting, can it fail and not connect?
        percentageToFail = 5, -- % Percentage that can fail
    },
    timeoutToConnect = { -- Time it takes for the radio to connect
        min = 1, -- seconds
        max = 10, -- seconds
    },
    frequencies = {
        MaxFrequency = 200, -- Maximum frequencies in which they can be connected
        MinFrequency = 1, -- Minimum frequencies at which they can be connected
        MaxTenths = 2 -- Maximum number of numbers that can be placed after . example : 125.24
    },
    savedRadios = { 
        Max = 5 -- Maximum number of radios that the user can save in their radio
    }
}

Config.LockScreen = {
    maxTrys = 3, -- Maximum number of times you can try to unlock your radio.
    maxTime = 10, -- seconds | Time to try to unlock the radio.

    hackMaXTime = 60, -- seconds
    hackComplete = 2 -- seconds
}

Config.ChannelJobs = {
    ENABLE = true,
    RadioChannels = {
        [1] = {
            jobs = {'police', 'sheriff', 'lspd'},
            frequencies = {1, 2, 3, 4, 5},
            range = true -- if put false, this channel dont have range
        },
        [2] = {
            jobs = {'ems', 'ambulance'},
            frequencies = {6, 7, 8, 9, 10},
            range = true
        },
        [3] = {
            jobs = {'mechanic'},
            frequencies = {11, 12},
            range = true
        },
        [4] = {
            jobs = {'bennys'},
            frequencies = {13, 14},
            range = true
        },
        [5] = {
            jobs = {'taxi'},
            frequencies = {15},
            range = true
        },
    --[[ remove this line    

        [6] = {  ❗ "Follow the order of the numbers, if the last one is 5, the next one is 6"
            jobs = {'your_job', 'your_job2'}, ❗ Add if you want a job or more
            frequencies = {999} ❗ Choose exclusive frequencies
        } 

    remove this line ]]
    }
}

--     ___    ____  ____        ____  _   _______
--    /   |  / __ \/ __ \      / __ \/ | / / ___/
--   / /| | / / / / / / /_____/ / / /  |/ /\__ \ 
--  / ___ |/ /_/ / /_/ /_____/ /_/ / /|  /___/ / 
-- /_/  |_/_____/_____/      \____/_/ |_//____/  
                                           
Config.Addons = {
    secure = {
        ENABLE = false, -- You need to download the DLC "stRadioSecureDLC" in order to be able to set true.
        items = {
            server = 'radio_server',
            monitor = 'radio_monitor',
            battery = 'radio_server_bat',
            cables = 'radio_cables'
        },
        savePosition = true, -- in developent
        spawnRange = 50,
        placeObjectsTime = 10, -- segs
        DestroySecureWithShot = true,
        frequencies = {
            MaxFrequency = 600,
            MinFrequency = 500
        }
    },
    jammer = {
        ENABLE = false, -- You need to download the DLC "stRadioJammerDLC" in order to be able to set true.
        item = 'radio_jammer',
        range = 20, -- meters
        savePosition = false, -- in developent
        placeObjectsTime = 1, -- segs
        DestroyJammerWithShot = true,
        -- The minimum is 1 minute for optimization reasons
        deleteAfter = 120 -- time in seconds // 2 minutes
    },
    water = {
        ENABLE = true,
        repairItem = 'radio_tool',
        brokenRadio = 'radio_broken',
        detele = {
        -- canBreak -> After using the radio tool it has a probability of destroying the item.
        -- delete -> After using the radio tool it is destroyed. 
            afterUse = 'canBreak',
            chanceToBreak = 50,  -- %
            minigame = true,
            timeToRepair = 10 -- segs
        },
    },
    list = {
        ENABLE = false,
        hideCommand = 'radiolist'
    },
    Animations = {
        ENABLE = false, -- If you activate this you have to go to line 25 and in type put DLC
        openCommand = 'radioanimation'
    }
}

--      __  ___          __      __         
--     /  |/  /___  ____/ /_  __/ /__  _____
--    / /|_/ / __ \/ __  / / / / / _ \/ ___/
--   / /  / / /_/ / /_/ / /_/ / /  __(__  ) 
--  /_/  /_/\____/\__,_/\__,_/_/\___/____/                          
Config.RadioModules = {
    battery = {
        -- Don't change
        -- ↑↑↑↑
        ['bat_low']     = 'bat_low', -- Can change the item name
        ['bat_medium']  = 'bat_medium', -- item name 
        ['bat_high']    = 'bat_high' -- item name
    },
    colors = {
        ['radio_red']       = 'radio_red', -- item name
        ['radio_blue']      = 'radio_blue', -- item name
        ['radio_purple']    = 'radio_purple', -- item name
        ['radio_pink']      = 'radio_pink', -- item name
        ['radio_lightblue'] = 'radio_lightblue', -- item name
        ['radio_orange']    = 'radio_orange', -- item name
        ['radio_yellow']    = 'radio_yellow',  -- item name
        ['radio_green']     = 'radio_green', -- item name
        ['radio_white']     = 'radio_white',   -- item name
        ['radio_grey']      = 'radio_grey'   -- item name
    },
    specials = {
        ['chip_5g']         = 'chip_5g',-- item name
        ['chip_ghost']      = 'chip_ghost',-- item name
        ['chip_antihack']   = 'chip_antihack',-- item name
        ['chip_waterproof'] = 'chip_waterproof' -- item name
    },
    mic = {
        ['mic_walkie'] = 'mic_walkie'
    }
}

Config.HackRadioItem = 'hack_chip'
Config.MiniGame = {
    background = 4, -- from 0 to 6
    timeMin = 100, -- tiempo que cambia las columnas, maximo entre 0 a 255
    timeMax = 200,
    lives = 4,

    bruteforceWords = {
        'PELELESS',
        'IMSTUPID',
        'ABCDEFGH',
        'MAMAHUEV',
        'STRADIOU',
        'MANDALOR',
        'OBIWANKE',
        'ANNAKINS',
        'XWINGXV2',
        'REBELST4',
    }
}

Config.Battery = {
    -- You can use the command "/radiobat number" exampel: "/radiobat 100" to set 100% of battery or only /radiobat to set 0
    -- You need set true on Debug config on config_framework to use that command.
    ENABLE = true,
    WHITELISTJOBS = {police = false, ambulance = false}, -- Add the job name here and true, if the user has the job the radio will not consume battery power you can add more jobs. (Weird idea)
--[[     
        Each interval is the battery refresh, the higher this number is, the slower the battery will drain, 
        1 minute is recommended 
        if you want it to be a little bit faster, set 0.5 
]]
    INTERVAL = 1, -- Minutes
--[[     
    This is the interval when charging the battery with the powerbank.
    Every 5 seconds a part of the powerbank battery is transferred.
    If you want the charging to be faster = set a lower number 1 is the minimum.
    If you want the charging to be slower, set a higher number 10 seconds.   
]]
    INTERVALCHARGING = 5, -- Seconds 
    ['radio_powerbank'] = {
        item = 'radio_powerbank',
        mAh = 3000, -- Battery size.
        animationDuration = 3, -- Seconds
        animation = 'hassle_intro_loop_f',
        animationDict = 'missheistfbisetup1',
    },
    ['bat_low'] = {
        mAh = 2000,      -- Battery size.
        idle = 5,        -- Consumes 5% when the radio is stored and was opened for the first time.
        onUse = 8,       -- Consumes 8% when the radio is open (NUI open).
        connected = 2.5, -- Consumes 2.5% when connected to a radio.
        fail = 5,        -- Possibility of battery failure and complete discharge.
    },
    ['bat_medium'] = {
        mAh = 4500,
        idle = 3, -- %
        onUse = 5, -- %
        connected = 1.5,
        fail = 3, -- %
    },
    ['bat_high'] = {
        mAh = 6000,
        idle = 2, -- %
        onUse = 3, -- %
        connected = 0.5,
        fail = 1, -- %
    },
}

--     ____  ____  ____  ____  _____
--    / __ \/ __ \/ __ \/ __ \/ ___/
--   / /_/ / /_/ / / / / /_/ /\__ \ 
--  / ____/ _, _/ /_/ / ____/___/ / 
-- /_/   /_/ |_|\____/_/    /____/  
                              
Config.RadioProps = {
    ['radio_red'] = 'spicyradio_01',
    ['radio_blue'] = 'spicyradio_02',
    ['radio_purple'] = 'spicyradio_03',
    ['radio_pink'] = 'spicyradio_04',
    ['radio_lightblue'] = 'spicyradio_05',
    ['radio_orange'] = 'spicyradio_06',
    ['radio_yellow'] = 'spicyradio_07',
    ['radio_green'] = 'spicyradio_08',
    ['radio_white'] = 'spicyradio_09',
    ['radio_grey'] = 'spicyradio_010',
}
```

{% endtab %}
{% endtabs %}
