Brutal Scripts
YouTubeDiscordStore
  • 🙉About Us
  • ↗️Translate
  • Informations
    • 🔒Escrow System
    • 🔥Common Problems
  • Scripts
    • 📄Notify
      • Accessible files
      • Installation guide
    • 🔠Text-UI
      • Installation guide
      • Exports & How to use
      • Integrations
    • 🤟Gangs
      • Accessible files
      • Installation guide
      • exports / triggers
      • Create a new gang
    • 🏡Housing
      • Accessible files
      • Installation guide
      • exports / triggers
    • 🔑Keys
      • Accessible files
      • Installation guide
      • exports / triggers
    • 💥Gang Actions
      • Accessible files
      • Installation guide
      • exports / triggers
      • Controlling the menu
    • ⭕Radial
      • Accessible files
      • Installation guide
      • Adding new buttons
    • 🎯Executions
      • Accessible files
      • Installation guide
      • exports / triggers
    • 🐶Pets + K9 V2
      • Accessible files
      • Installation guide
    • 👮Police Job
      • Accessible files
      • Installation guide
      • exports / triggers
    • 🚑Ambulance Job
      • Accessible files
      • Installation guide
      • exports / triggers
    • 🔧Mechanic Job
      • Accessible files
      • Installation guide
      • exports / triggers
    • 💪GYM with Skills V2
      • Accessible files
      • Installation guide
      • exports / triggers
    • 🔫Paintball
      • Accessible files
      • Installation guide
      • exports / triggers
    • 🥊Boxing
      • Accessible files
      • Installation guide
      • exports / triggers
    • 🔨Crafting
      • Accessible files
      • Installation guide
      • Creating a new crafting table
    • 🏦Banking
      • Accessible files
      • Installation guide
      • Paycheck transactions
      • Registering transactions
    • 🎳Bowling
      • Accessible files
      • Installation guide
      • exports / triggers
    • 🦌Hunting
      • Accessible files
      • Installation guide
    • 🏁Racing Script
      • Accessible files
      • Installation guide
    • 🐛Reports
      • Accessible files
      • Installation guide
    • 🛒Shop Robbery
      • Accessible files
      • Installation guide
    • 🛥️Yacht Heist
      • Accessible files
      • Installation guide
    • 🧾Billing
      • Accessible files
      • Installation guide
      • Triggers
    • 💰Truck Robbery
      • Accessible files
      • Installation guide
    • 🏧Atm Robbery
      • Accessible files
      • Installation guide
    • 👶Baby script
      • Installation guide
      • How to add more babys
  • Others
    • Register Key Mapping
    • Drill Minigame
    • Discord Webhook
Powered by GitBook
On this page

Was this helpful?

  1. Scripts
  2. Gangs

Accessible files

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

config.lua
Config = {
    Core = 'ESX',  -- 'ESX' / 'QBCORE' | Other core setting on the 'core' folder.
    Inventory = 'ox_inventory', -- 'ox_inventory' / 'qb_inventory' / 'quasar_inventory' / 'chezza_inventory' / 'codem_inventory' / 'core_inventory' // Custom can be add in the cl_utils.lua!!!
    TextUI = 'brutal_textui', -- false / 'brutal_textui' / 'ox_lib' / 'okokTextUI' / 'ESXTextUI' / 'QBDrawText' // Custom can be add in the cl_utils.lua!!!
    Target = '', -- 'oxtarget' / 'qb-target' // if the TextUI is set to false target will step its place 
    BrutalNotify = true, -- Buy here: (4€+VAT) https://store.brutalscripts.com | Or set up your own notify >> cl_utils.lua
    SteamName = true, -- true = Steam name | false = character name
    DateFormat = '%d/%m/%Y', -- Date format

    UnemployedJob = "unemployed",
    HQBlip = {use = true, sprite = 40, color = 32, size = 0.8},
    Marker = {marker = 20, bobUpAndDown = true, rotate = false, size = {0.3, 0.2, 0.2}, rgb = {15, 100, 210}},

    Commands = {
        GangMenu = {
            Command = 'gangmenu', 
            Suggestion = 'To open the gang menu'
        },

        GetGangVehicleBack = {
            Command = 'getgangvehicleback', --  /getgangvehicleback all | /getgangvehicleback DHR 432
            Suggestion = 'To get back your vehicle(s)'
        },

        CreateGraffiti = {
            Command = 'graffiti',
            Suggestion = 'To create a new graffiti',
            Item = "spraycan"
        },

        CleanGraffiti = {
            Command = 'cleangraffiti',
            Suggestion = 'To clean a graffiti',
            Item = "sprayremover"
        },

        -- Admin commands

        EditGangs = {
            AdminGroups = {'superadmin', 'admin', 'mod', 'god'},
            Command = 'editgangs', 
            Suggestion = 'To edit the gangs'
        },

        SetGangLeader = {
            AdminGroups = {'superadmin', 'admin', 'mod', 'god'},
            Command = 'setgangleader', 
            Suggestion = 'To set up the gang leader'
        },
    },

    Levels = {
        [0] = {
            maxMembersCount = 6,

            vehicles = {amount = 6, price = nil},
            stash = {size = 100, price = nil},
            ranks = {amount = 3, price = nil},
            raid = {available = false, price = nil},
        },

        [1] = {
            price = {money = 50000, rep = 3750},
            maxMembersCount = 12,

            vehicles = {amount = 18, price = {money = 15000, rep = 525}},
            stash = {size = 200, price = {money = 5000, rep = 175}},
            safe = {available = true, size = 20, price = {money = 25000, rep = 875}},
            ranks = {amount = 6, price = {money = 0, rep = 650}},
            raid = {available = false, price = nil},
        },

        [2] = {
            price = {money = 150000, rep = 11250},
            maxMembersCount = 18,

            vehicles = {amount = 30, price = {money = 15000, rep = 525}},
            stash = {size = 300, price = {money = 5000, rep = 175}},
            safe = {available = true, size = 30, price = {money = 3000, rep = 105}},
            ranks = {amount = 9, price = {money = 0, rep = 650}},
            raid = {available = true, price = {money = 25000, rep = 875}},
        },

        [3] = {
            price = {money = 250000, rep = 18750},
            maxMembersCount = 24,

            vehicles = {amount = 48, price = {money = 15000, rep = 525}},
            stash = {size = 400, price = {money = 5000, rep = 175}},
            safe = {available = true, size = 40, price = {money = 3000, rep = 105}},
            ranks = {amount = 12, price = {money = 0, rep = 650}},
            raid = {available = true, price = {money = 25000, rep = 875}},
        },
    },

    HQS = {
        ["ballas"] = {
            MapPosition = {
                vector2(-36.8547, -1753.4171),
                vector2(-61.3669, -1785.3739),
                vector2(-21.2381, -1821.4756),
                vector2(-50.6818, -1858.8644),
                vector2(29.3174, -1930.7737),
                vector2(86.4986, -1860.3062),
            },

            MiddlePoint = vector3(7.7007, -1816.5464, 25.3697),
            HQCanBeCaptured = true,

            DefaultCoords = {
                Cloakrooms = {
                    vector3(0.7138, -1819.6553, 29.1527),
                },
    
                Stashes = {
                    vector3(2.5605, -1817.7943, 29.1526),
                },

                BalanceManages = {
                    vector3(-0.4499, -1809.0541, 29.1527),
                },

                Garages = {
                    {
                        open = vector3(11.8271, -1817.3561, 25.2843),
                        spawn = vector4(13.5363, -1820.2806, 24.7847, 143.9035)
                    },
                },
            },
        },

        ["triads"] = {
            MapPosition = {
                vector2(-641.1872, -1268.0148),
                vector2(-568.8250, -1197.5732),
                vector2(-548.0913, -1102.7590),
                vector2(-552.4677, -966.7898),
                vector2(-624.6595, -969.4564),
                vector2(-636.4352, -1035.5703),
                vector2(-666.9618, -1072.7643),
                vector2(-749.0092, -1121.3713),
            },

            MiddlePoint = vector3(-641.7220, -1234.5129, 11.5514),
            HQCanBeCaptured = true,

            DefaultCoords = {
                Cloakrooms = {
                    vector3(-648.8576, -1229.3621, 11.5516),
                },
    
                Stashes = {
                    vector3(-652.6179, -1230.2782, 11.5516),
                },

                BalanceManages = {
                    vector3(-644.4189, -1244.2264, 11.5516),
                },

                Garages = {
                    {
                        open = vector3(-645.2076, -1221.4576, 11.0470),
                        spawn = vector4(-644.1460, -1217.9924, 10.8716, 303.2067)
                    },
                },
            },
        },

        ["vagos"] = {
            MapPosition = {
                vector2(326.2715, -2140.4065),
                vector2(248.8809, -2071.6580),
                vector2(355.7063, -1947.0470),
                vector2(427.0373, -2020.0443),
            },

            MiddlePoint = vector3(338.9244, -2042.7440, 21.2988),
            HQCanBeCaptured = true,

            DefaultCoords = {
                Cloakrooms = {
                    vector3(325.5719, -1999.3409, 24.2077),
                },
    
                Stashes = {
                    vector3(329.4389, -1998.6117, 24.2077),
                },

                BalanceManages = {
                    vector3(338.2400, -1979.8922, 24.2078),
                },

                Garages = {
                    {
                        open = vector3(323.1876, -2017.5780, 21.2353),
                        spawn = vector4(321.0982, -2021.5391, 20.3820, 141.2121)
                    },
                },
            },
        },

        ["lostmc"] = {
            MapPosition = {
                vector2(931.9505, -122.5973),
                vector2(986.2697, -156.0796),
                vector2(1022.2856, -119.8539),
                vector2(980.7446, -76.5461),
            },

            MiddlePoint = vector3(969.5955, -126.4073, 74.3605),
            HQCanBeCaptured = true,

            DefaultCoords = {
                Cloakrooms = {
                    vector3(971.9257, -98.7307, 74.8464),
                },
    
                Stashes = {
                    vector3(986.6417, -92.7903, 74.8459),
                },

                BalanceManages = {
                    vector3(976.9885, -103.8749, 74.8452),
                },

                Garages = {
                    {
                        open = vector3(960.9912, -123.2064, 74.3532),
                        spawn = vector4(961.9102, -125.5999, 74.0335, 134.2543)
                    },
                },
            },
        },

        ["families"] = {
            MapPosition = {
                vector2(-181.5696, -1765.1079),
                vector2(-49.3258, -1607.2705),
                vector2(-252.9951, -1444.2129),
                vector2(-274.8223, -1535.6073),
                vector2(-340.4381, -1653.6207),
                vector2(-252.6444, -1706.5421),
            },
            
            MiddlePoint = vector3(-194.6743, -1606.9457, 34.0031),
            HQCanBeCaptured = true,

            DefaultCoords = {
                Cloakrooms = {
                    vector3(-162.5451, -1612.9545, 33.6494),
                },
    
                Stashes = {
                    vector3(-164.0853, -1607.2548, 33.6494),
                },

                BalanceManages = {
                    vector3(-163.7477, -1619.0095, 33.6494),
                },

                Garages = {
                    {
                        open = vector3(-142.5249, -1631.2947, 32.9337),
                        spawn = vector4(-138.1050, -1634.1799, 31.8673, 321.9159)
                    },
                },
            },
        },

        ["angels"] = {
            MapPosition = {
                vector2(1186.1561, -1819.9590),
                vector2(1401.5608, -1750.3341),
                vector2(1377.2861, -1690.7479),
                vector2(1275.9623, -1539.6001),
                vector2(1175.1179, -1611.6343),
                vector2(1112.2068, -1621.6501),
            },
            
            MiddlePoint = vector3(1252.8992, -1676.1508, 44.0245),
            HQCanBeCaptured = true,

            DefaultCoords = {
                Cloakrooms = {
                    vector3(1272.4738, -1714.6812, 54.7714),
                },
    
                Stashes = {
                    vector3(1268.7084, -1710.2638, 54.7714),
                },

                BalanceManages = {
                    vector3(1275.4862, -1710.6750, 54.7714),
                },

                Garages = {
                    {
                        open = vector3(1286.8423, -1726.0486, 53.0865),
                        spawn = vector4(1287.5776, -1728.0398, 52.8059, 114.7845)
                    },
                },
            },
        },
    },

    Scout = {
        MaximumTime = 15, -- in minutes
        MinimumOnlineMembers = 1, -- minimum members online to start
    },

    Raid = {
        Price = {money = 15000, rep = 1750},
        MaximumTime = 30, -- in minutes
        MinimumOnlineMembers = 1, -- minimum members online to start
        CooldownAfterDeath = 10, -- in minutes
        StashLooting = {use = true, time = 5}, -- use: true / false | time = 1 = 1min
        Limit = 72, -- in hours
    },

    Graffiti = {
        ShowDistance = 100.0,

        MinDistances = 10.0,
        MaxGraffitiPerGang = 25,

        LimitPerMember = 10, -- in minutes
        CleanLimitPerMember = 10, -- in minutes

        PlaceReputation = 50,
        CleanReputation = 25,

        BlacklistedZones = {
            {coords = vector3(455.81, -997.04, 43.69), radius = 200.0}, -- Police
            {coords = vector3(324.76, -585.72, 59.15), radius = 100.0}, -- Hospital
            {coords = vector3(-376.73, -119.47, 40.73), radius = 100.0}, -- Mechanic
        },

        Icons = {
            {name = "Vagos", prop = "sprays_vagos", png = "Vagos.png"},
            {name = "The Mandnem", prop = "sprays_mandem", png = "The_Mandnem.png"},
            {name = "The Guild", prop = "sprays_guild", png = "The_Guild.png"},
            {name = "Street Team", prop = "sprays_st", png = "Street_Team.png"},
            {name = "Seaside", prop = "sprays_seaside", png = "Seaside.png"},
            {name = "SCU", prop = "sprays_scu", png = "SCU.png"},
            {name = "Rust", prop = "sprays_rust", png = "Rust.png"},
            {name = "Ron", prop = "sprays_ron", png = "Ron.png"},
            {name = "Ramee", prop = "sprays_ramee", png = "Ramee.png"},
            {name = "NBC", prop = "sprays_nbc", png = "NBC.png"},
            {name = "Mayhem", prop = "sprays_mayhem", png = "Mayhem.png"},
            {name = "Lost MC", prop = "sprays_lost", png = "Lost_MC.png"},
            {name = "Kingz", prop = "sprays_kingz", png = "Kingz.png"},
            {name = "Hydra", prop = "sprays_hydra", png = "Hydra.png"},
            {name = "Hoa", prop = "sprays_hoa", png = "Hoa.png"},
            {name = "Gulag Gang", prop = "sprays_gg", png = "Gulag_Gang.png"},
            {name = "GSF", prop = "sprays_gsf", png = "GSF.png"},
            {name = "Chang Gang", prop = "sprays_cg", png = "Chang_Gang.png"},
            {name = "Cerberus", prop = "sprays_cerberus", png = "Cerberus.png"},
            {name = "BSK", prop = "sprays_bsk", png = "BSK.png"},
            {name = "Bondi Boys MC", prop = "sprays_bcf", png = "Bondi_Boys_Mc.png"},
            {name = "BCF", prop = "sprays_bcf", png = "BCF.png"},
            {name = "Ballas", prop = "sprays_ballas", png = "Ballas.png"},
            {name = "Angels", prop = "sprays_angels", png = "Angels.png"},
        },
    },

    Tasks = {
        ["drug"] = {
            Label = "NARCOTICS HEIST",
            Description = "In the Narcotics Heist, steal a drug shipment from a cartel and sell it before they catch you.",
            TimeToCompletion = 20, -- in minutes
            TimeToRestart = 1440, -- in minutes
            Reward = {money = {min = 5000, max = 20000}, rep = {min = 250, max = 1000}},

            VanPosition = {
                {
                    Van = vector4(-463.3471, -63.0104, 44.2518, 218.4606),
                    Guards = {
                        {model = "g_m_y_korean_02", coords = vector4(-459.7697, -62.7800, 44.5134, 42.0405), weapon = "WEAPON_ASSAULTRIFLE"},
                        {model = "g_m_y_korean_01", coords = vector4(-468.8365, -62.5431, 44.5134, 345.1089), weapon = "WEAPON_ASSAULTRIFLE"},
                        {model = "g_m_y_mexgoon_03", coords = vector4(-459.6652, -56.9242, 44.5134, 75.7623), weapon = "WEAPON_ASSAULTRIFLE"},
                    },
                },

                {
                    Van = vector4(155.0316, -1233.0797, 28.9633, 254.9915),
                    Guards = {
                        {model = "g_m_y_korean_02", coords = vector4(149.0482, -1230.9833, 29.1985, 223.3919), weapon = "WEAPON_ASSAULTRIFLE"},
                        {model = "g_m_y_korean_01", coords = vector4(147.3018, -1232.9353, 29.1985, 250.9159), weapon = "WEAPON_ASSAULTRIFLE"},
                        {model = "g_m_y_mexgoon_03", coords = vector4(146.1674, -1235.1293, 29.1985, 255.9488), weapon = "WEAPON_ASSAULTRIFLE"},
                    },
                },
            },
            EndingPoint = {
                {
                    MainCoords = vector3(1162.4951, -1496.4705, 34.4312), 
                    CustomersVehicle = vector4(1158.1821, -1490.3347, 34.4314, 2.1476),
                    Customers = {
                        {model = "g_m_y_mexgoon_03", coords = vector4(1156.4387, -1493.8158, 33.6925, 239.6427)},
                        {model = "g_m_y_mexgang_01", coords = vector4(1159.7421, -1493.9291, 33.6925, 142.1639)},
                    },
                },

                {
                    MainCoords = vector3(676.3511, -2648.5149, 5.8198), 
                    CustomersVehicle = vector4(668.6371, -2655.3589, 5.8093, 152.9441),
                    Customers = {
                        {model = "g_m_y_mexgoon_03", coords = vector4(671.9014, -2653.2356, 5.0812, 15.0290)},
                        {model = "g_m_y_mexgang_01", coords = vector4(668.8821, -2651.4241, 5.0812, 286.6457)},
                    },
                },
            }
        },

        ["disposalofthebody"] = {
            Label = "BODY DISPOSAL",
            Description = "You must discreetly get rid of evidence by disposing of a body without leaving any trace for law enforcement.",
            TimeToCompletion = 20, -- in minutes
            TimeToRestart = 1440, -- in minutes
            Reward = {money = {min = 10000, max = 15000}, rep = {min = 500, max = 800}},

            VanPosition = {
                {coords = vector4(679.8264, 68.4786, 83.2498, 182.2196)},
            },
            DeadBodyPosition = {
                {coords = vector3(-1077.0720, 712.9972, 163.4137), heading = 127.0},
            },
            EndingPoint = {
                {
                    MainCoords = vector3(67.0433, -2755.7847, 6.0046), 
                    Boat = {model = 'tropic', coords = vector4(8.6673, -2797.2100, 0.2756, 181.5510)},
                    ThrowPoint = vector3(-250.7096, -4219.0371, -3.2772),
                },
            }
        },

        ["homeless"] = {
            Label = "HOMELESS KIDNAPPING",
            Description = "You must abduct a target from the streets without drawing attention from bystanders or authorities.",
            TimeToCompletion = 20, -- in minutes
            TimeToRestart = 1440, -- in minutes
            Reward = {money = {min = 6000, max = 12000}, rep = {min = 450, max = 1350}},

            HomelessPedPosition = {
                {coords = vector3(18.5995, -1228.6848, 28.4795), heading = 280.0},
                {coords = vector3(357.6796, -835.1513, 28.2916), heading = 176.0},
                {coords = vector3(-517.6873, -865.7912, 28.5060), heading = 280.0},
            },
            EndingPoint = {
                {
                    MainCoords = vector3(1377.6155, -747.5517, 66.47), 
                    CustomersVehicle = {model = 'dubsta2', coords = vector4(1386.2517, -742.9697, 67.2858, 339.2372)},
                    Customers = {
                        {model = "g_m_y_mexgang_01", coords = vector4(1387.3867, -745.9840, 66.1903, 90.7682)},
                        {model = "g_m_y_mexgoon_03", coords = vector4(1383.4774, -744.2767, 66.1852, 151.0328)},
                    },
                },

                {
                    MainCoords = vector3(-1157.2125, -1454.5078, 3.4823), 
                    CustomersVehicle = {model = 'dubsta2', coords = vector4(-1155.9701, -1462.3113, 4.3237, 125.4273)},
                    Customers = {
                        {model = "g_m_y_mexgoon_03", coords = vector4(-1151.7054, -1462.2007, 3.4187, 20.5159)},
                        {model = "g_m_y_mexgang_01", coords = vector4(-1156.8384, -1460.3912, 3.3861, 311.5188)},
                    },
                },
            }
        },

        ["assassination"] = {
            Label = "ASSASSINATION CONTRACT",
            Description = "You must eliminate a high-value target quickly and discreetly, leaving no witnesses behind.",
            TimeToCompletion = 20, -- in minutes
            TimeToRestart = 1440, -- in minutes
            Reward = {money = {min = 7500, max = 30000}, rep = {min = 250, max = 1150}},

            TargetPedPosition = {
                {startcoords = vector3(-332.3789, -672.7446, 32.3814), finishcoords = vector3(304.8678, -740.3984, 29.3166)},
                {startcoords = vector3(553.8753, 152.7980, 99.2896), finishcoords = vector3(-239.1566, 244.2611, 92.0406)},
                {startcoords = vector3(-1274.0237, 315.4701, 65.5117), finishcoords = vector3(-1392.7247, -299.2366, 43.6122)},
            },
            EndingPoint = {
                {
                    MainCoords = vector3(265.9774, 3178.4739, 41.6437), 
                    Customers = {
                        {model = "g_m_y_mexgoon_03", coords = vector4(260.6587, 3178.2278, 41.7484, 283.4235)},
                    },
                },
                {
                    MainCoords = vector3(1534.0110, 6328.8813, 23.4418), 
                    Customers = {
                        {model = "g_m_y_mexgoon_03", coords = vector4(1538.7380, 6324.4023, 23.0684, 37.5559)},
                    },
                },
            }
        },
    },
   
    -----------------------------------------------------------
    -----------------------| TRANSLATE |-----------------------
    -----------------------------------------------------------

    MoneyForm = '$', -- Money form

    Locales = {
        CurrencyForm = "USD",
        ReputationForm = "REP",

        DefaultGradeName = "Member",
        
        MemberRankName = "Member",
        LeaderRankName = "Leader",

        Cloakrooms = "Cloakroom",
        Stashes = "Stash",
        BalanceManages = "Balance Manage",
        Garages = "Garage",
        Safe = "Safe",

        Vehicles = "Vehicles",
        VehiclesDescription = "With this upgrade you can store more cars in the gang garage.",
        Stash = "Stash",
        StashDescription = "This upgrade will increase the storage capacity of the stash.",
        MaxRanks = "Max Ranks",
        MaxRanksDescription = "With this upgrade the gang leader can create more ranks.",
        Raid = "Raid",
        RaidDescription = "With this upgrade your gang will be able to start a raid against another gang.",
        Safe = "Safe",
        SafeDescription = "With this upgrade you get a safe that only special gang members can access.",
        SafeDescription2 = "This upgrade will increase the storage capacity of the safe.",

        CoordsEditingText = "~y~Press ~INPUT_CELLPHONE_SELECT~ to set the new coords.~w~\nPress ~INPUT_CELLPHONE_CANCEL~ to ~r~cancel~w~ the process.",

        TaskStart = "Task Start",

        Blips = {
            HQ = "HQ",

            Safe = "Safe",
            Vehicle = "Vehicle",
            House = "House",
            Port = "Port",
            Boat = "Boat",
            Drop = "Drop",
            Company = "Company",
            DrugSelling = "Drug Selling",
            Money = "Get Money",
            Homeless = "Homeless",
            MeetingPoint = "Meeting point",
            Target = "Target",
        }
    },

    Texts = {
        [1] = {'[E] - Dress Menu', 38, 'Open the dress menu', 'fa-solid fa-person-half-dress'},
        [2] = {'[E] - Stash Menu', 38, 'Open the stash menu', 'fa-solid fa-box-open'}, 
        [3] = {'[E] - Garage Menu', 38, 'Open the garage menu', 'fa-solid fa-warehouse'}, 
        [4] = {'[E] - Vehicle storage', 38, 'To storage the vehicle', 'fa-solid fa-car'}, 
        [5] = {'[E] - Safe Menu', 38, 'Open the safe menu', 'fa-solid fa-shield'}, 
        [6] = {'[E] - Balance Manage', 38, 'Open the balance menu', 'fa-solid fa-coins'}, 
        [7] = {'[E] - Continue the task', 38},
        [8] = {'[E] - Start the task', 38},  
    },
    
    -- Notify function EDITABLE >> cl_utils.lua
    Notify = { 
        [1] = {"Gangs", "You're too far!", 5000, "error"},
        [2] = {"Gangs", "The job already exists!", 5000, "error"},
        [3] = {"Gangs", "You don't have permission to do this.", 5000, "error"},
        [4] = {"Gangs", "You've successfully invited a new member!", 5000, "success"},
        [5] = {"Gangs", "You've been successfully added to a gang!", 5000, "success"},
        [6] = {"Gangs", "You've kicked them out of the gang!", 5000, "success"},
        [7] = {"Gangs", "You've been kicked out of the gang!", 5000, "info"},
        [8] = {"Gangs", "Invalid Gang!", 5000, "error"},
        [9] = {"Gangs", "S/he is already a leader!", 5000, "error"},
        [10] = {"Gangs", "You have successfully added a new leader!", 5000, "success"},
        [11] = {"Gangs", "You're a gang leader now!", 5000, "info"},
        [12] = {"Gangs", "Invalid Player ID!", 5000, "error"},
        [13] = {"Gangs", "This rank already exists!", 5000, "error"},
        [14] = {"Gangs", "You've successfully created the new rank!", 5000, "success"},
        [15] = {"Gangs", "You've deleted the selected rank!", 5000, "success"},
        [16] = {"Gangs", "Before deleting make sure that nobody have this rank!", 5000, "error"},
        [17] = {"Gangs", "For example: /setgangleader [id] [job]", 5000, "error"},
        [18] = {"Gangs", "Successfully update!", 5000, "success"},
        [19] = {"Gangs", "There isn't enough money for that!", 5000, "error"},
        [20] = {"Gangs", "You can't turn this vehicle into a gang car because it's not yours!", 7000, "error"},
        [21] = {"Gangs", "The vehicle is not in the garage!", 5000, "error"},
        [22] = {"Gangs", "You've got it back:", 5000, "success"},
        [23] = {"Gangs", "No vehicle to get back!", 5000, "error"},
        [24] = {"Gangs", "Upgrade needed for this action!", 5000, "error"},
        [25] = {"Gangs", "Another vehicle occupies the space!", 5000, "error"},
        [26] = {"Gangs", "S/he is already a member of the group!", 5000, "error"},
        [27] = {"Gangs", "Fill in all the fields!", 5000, "error"},
        [28] = {"Gangs", "You cannot delete it!", 5000, "error"},
        [29] = {"Gangs", "You're too far from the middle of hq!", 5000, "error"},
        [30] = {"Gangs", "This HQ is already in use!", 5000, "error"},
        [31] = {"Gangs", "Invalid HQ! The hq isn't defined in the config!", 5000, "error"},
        [32] = {"Gangs", "Successful pin!", 5000, "success"},
        [33] = {"Gangs", "Your rank has been changed to:", 5000, "info"},
        [34] = {"Gangs", "The rank's name must be between 3-12 characters!", 5000, "error"},
        [35] = {"Gangs", "You have already reached today's limit!", 5000, "error"},
        [36] = {"Gangs", "You've successfully started!", 5000, "success"},
        [37] = {"Gangs", "You cannot start it right now!", 5000, "error"},
        [38] = {"Gangs", "New level of gang:", 5000, "success"},
        [39] = {"Gangs", "There isn't that much money available in the safe!", 5000, "error"},
        [40] = {"Gangs", "You don't have enough money!", 5000, "error"},
        [41] = {"Gangs", "Your gang is under attack!", 5000, "info"},
        [42] = {"Gangs", "You have successfully deleted the job!", 5000, "success"},
        [43] = {"Gangs", "You cannot put graffiti on this place.", 5000, "error"},
        [44] = {"Gangs", "Someone has already put graffiti nearby.", 5000, "error"},
        [45] = {"Gangs", "You have reached maximum graffiti in the team!", 5000, "error"},
        [46] = {"Gangs", "There is no near graffiti!", 5000, "error"},
        [47] = {"Gangs", "You do not have the necessary item!", 5000, "error"},
        [48] = {"Gangs", "You have to get out of the car!", 5000, "error"},
        [49] = {"Gangs", "You have to park your car here!", 5000, "error"},
        [50] = {"Gangs", "You failed!", 5000, "error"},
        [51] = {"Gangs", "For example: /setgangleader [job] [player id]", 5000, "error"},
        [52] = {"Gangs", "No drugs on your hands!", 5000, "error"},
        [53] = {"Gangs", "The gang name and label must be at least 3 characters long!", 5000, "error"},
        [54] = {"Gangs", "You have successfully created the job!", 5000, "success"},
        [55] = {"Gangs", "You have successfully saved it!", 5000, "success"},
        [56] = {"Gangs", "The task has failed!", 5000, "error"},
        [57] = {"Gangs", "There is already a task in progress!", 5000, "error"},
        [58] = {"Gangs", "The selected task is already in use!", 5000, "error"},
        [59] = {"Gangs", "You have successfully completed the task!", 5000, "success"},
        [60] = {"Gangs", "You can only graffiti every 10 minutes! Try again later!", 5000, "error"},
        [61] = {"Gangs", "You can only clean graffiti every 10 minutes!", 5000, "error"},
        [62] = {"Gangs", "They all must die!", 5000, "error"},
        [63] = {"Gangs", "The vehicle must be empty!", 5000, "error"},
        [64] = {"Gangs", "There must be a vehicle near!", 5000, "error"},
        [65] = {"Gangs", "Catch the homeless man!", 5000, "info"},
        [66] = {"Gangs", "Already in progress!", 5000, "error"},
        [67] = {"Gangs", "No spaces in the gang name!", 5000, "error"},
    },

    TaskMessages = {
        TaskStarted = "TASK STARTED",
        NextPart = "NEXT PART",
        TaskCompleted = "TASK COMPLETED",
        Warning = '<span style="color:red;">WARNING</span>',
        Success = '<span style="color:lightgreen;">SUCCESS</span>',
        Failed = '<span style="color:red;">FAILED</span>',
        Info = '<span style="color:lightblue;">INFORMATION</span>',

        Scout = "Watch your enemies to get information about them!",
        Scout2 = "You have successfully got the data on them!",
        Scout3 = "The task could not be completed in time!",

        Raid1 = "Stay on the enemy's HQ until time runs out!",
        Raid2 = "Defend your HQ and kill your enemies!",
        Raid3 = "You've lost the raid!",
        Raid4 = "You've won the raid!",

        StashLoot1 = "STASH LOOT",
        StashLoot2 = "Now you can loot out the enemy's stash",

        DriveTo = "Drive to the designated place!",

        BodyDisposal1 = "Break the car!",
        BodyDisposal2 = "Drive to the location and pick up the body!",
        BodyDisposal3 = "Put it in the car!",
        BodyDisposal4 = "Go to the port!",
        BodyDisposal5 = "Get the body bag out of the trunk!",
        BodyDisposal6 = "Put the body bag in the boat!",
        BodyDisposal7 = "Drop the body in the water at the designated place!",
        BodyDisposal8 = "Go back to the port!",
        BodyDisposal9 = "Let's go back to the starting point!",

        Drug1 = "Steal the van full of drugs!",
        Drug2 = "Go to your customers!",
        Drug3 = "Move the drugs to the other car.",
        Drug4 = "Pick up the money from the customer!",

        Homeless1 = "Catch and put the homeless man in the trunk!",
        Homeless2 = "Go to your customers!",
        Homeless3 = "Put the homeless man in the customer's trunk!",
        Homeless4 = "Pick up the money from the customer!",

        Assassination1 = "Kill the target without getting close!",
        Assassination2 = "Put the body on your shoulders!",
        Assassination3 = "Put the body in the trunk!",
        Assassination4 = "Go to your customers!",
        Assassination5 = "Drop the body!",
        Assassination6 = "Pick up the money from the customer!",
    },
    
    Webhooks = {
        Locale = {
            ['editGangDatas1'] = "⌛ Gang details updated...",
            ['gangCreation1'] = "🆕 New gang has been created...",
            ['gangDeleted1'] = "🆕 Gang has been deleted...",
            ['scout1'] = "🔍 They got the data from another gang...",
            ['raidStart1'] = "⚔️ Raid has started...",
            ['raidEnd1'] = "⚔️ Raid has ended...",

            ['editGangDatas2'] = "edited the gang's data.",
            ['gangCreation2'] = "created a new gang.",
            ['gangDeleted2'] = "deleted a gang.",
            ['scout2'] = "started the scouting...",
            ['raidStart2'] = "started a raid...",

            ['Identifier'] = "Identifier",
            ['GangName'] = "Gang Name",
            ['GangLabel'] = "Gang Label",
            ['Balance'] = "Balance",
            ['Reputation'] = "Reputation Points",
            ['Status'] = "Status 📈",
            ['Enemy'] = "Enemy 😈",
            ['TargetGang'] = "Target Gang",
            ['Table'] = "Table",
            ['Lost'] = "LOST",
            ['Won'] = "WON",

            ['Time'] = "Time ⏲️"
        },

        -- To change a webhook color you need to set the decimal value of a color, you can use this website to do that - https://www.mathsisfun.com/hexadecimal-decimal-colors.html
        Colors = {
            ['editGangDatas1'] = 3093151, 
            ['gangCreation1'] = 3145375,
            ['gangDeleted1'] = 16121856,
            ['scout1'] = 3145375,
            ['raidStart1'] = 3145375,
            ['raidEnd1'] = 5845663,
        }
    },
}
client-utils.lua
-- 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
        SetNotificationTextEntry("STRING")
        AddTextComponentString(text)
        DrawNotification(0,1)

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

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

        -- OKOK Notify:
        -- exports['okokNotify']:Alert('POLICE JOB',title, text, time, type, false)

    end
end

function TextUIFunction(type, text)
    if type == 'open' then
        if Config.TextUI:lower() == 'ox_lib' then
            lib.showTextUI(text)
        elseif Config.TextUI:lower() == 'okoktextui' then
            exports['okokTextUI']:Open(text, 'darkblue', 'right')
        elseif Config.TextUI:lower() == 'esxtextui' then
            ESX.TextUI(text)
        elseif Config.TextUI:lower() == 'qbdrawtext' then
            exports['qb-core']:DrawText(text,'left')
        elseif Config.TextUI:lower() == 'brutal_textui' then
            exports['brutal_textui']:Open(text, "blue")
        end
    elseif type == 'hide' then
        if Config.TextUI:lower() == 'ox_lib' then
            lib.hideTextUI()
        elseif Config.TextUI:lower() == 'okoktextui' then
            exports['okokTextUI']:Close()
        elseif Config.TextUI:lower() == 'esxtextui' then
            ESX.HideUI()
        elseif Config.TextUI:lower() == 'qbdrawtext' then
            exports['qb-core']:HideText()
        elseif Config.TextUI:lower() == 'brutal_textui' then
            exports['brutal_textui']:Close()
        end
    end
end

function InventoryOpenFunction(type, job, size)
    if type == 'stash' then
        if Config.Inventory:lower() == 'ox_inventory' then
            exports.ox_inventory:openInventory('stash', { id = "stash_"..job})
        elseif Config.Inventory:lower() == 'qb_inventory' then
            TriggerServerEvent("inventory:server:OpenInventory", "stash", "stash_"..job, { label = Config.Locales.Stashes, maxweight = size*1000, slots = 100 })
            TriggerEvent("inventory:client:SetCurrentStash", "stash_"..job)
        elseif Config.Inventory:lower() == 'quasar_inventory' then
            TriggerServerEvent("inventory:server:OpenInventory", "stash", "stash_"..job, { label = Config.Locales.Stashes, maxweight = size*1000, slots = 100 })
            TriggerEvent("inventory:client:SetCurrentStash", "stash_"..job)
        elseif Config.Inventory:lower() == 'codem_inventory' then
            TriggerServerEvent("inventory:server:OpenInventory", "stash", "stash_"..job, { label = Config.Locales.Stashes, maxweight = size*1000, slots = 100 })
            TriggerEvent("inventory:client:SetCurrentStash", "stash_"..job)
        elseif Config.Inventory:lower() == 'chezza_inventory' then
            TriggerEvent('inventory:openStorage', Config.Locales.Stashes, "stash_"..job, size, 1000, {job})
        elseif Config.Inventory:lower() == 'core_inventory' then
            TriggerServerEvent('core_inventory:server:openInventory', "stash_"..job, "big_storage")
        end
    elseif type == 'safe' then
        if Config.Inventory:lower() == 'ox_inventory' then
            exports.ox_inventory:openInventory('stash', { id = "safe_"..job})
        elseif Config.Inventory:lower() == 'qb_inventory' then
            TriggerServerEvent("inventory:server:OpenInventory", "stash", "safe_"..job, { label = Config.Locales.Safe, maxweight = size*1000, slots = 50 })
            TriggerEvent("inventory:client:SetCurrentStash", "stash_"..job)
        elseif Config.Inventory:lower() == 'quasar_inventory' then
            TriggerServerEvent("inventory:server:OpenInventory", "stash", "safe_"..job, { label = Config.Locales.Safe, maxweight = size*1000, slots = 50 })
            TriggerEvent("inventory:client:SetCurrentStash", "stash_"..job)
        elseif Config.Inventory:lower() == 'codem_inventory' then
            TriggerServerEvent("inventory:server:OpenInventory", "stash", "safe_"..job, { label = Config.Locales.Safe, maxweight = size*1000, slots = 50 })
            TriggerEvent("inventory:client:SetCurrentStash", "stash_"..job)
        elseif Config.Inventory:lower() == 'chezza_inventory' then
            TriggerEvent('inventory:openStorage', Config.Locales.Stashes, "safe_"..job, size, 1000, {job})
        elseif Config.Inventory:lower() == 'core_inventory' then
            TriggerServerEvent('core_inventory:server:openInventory', "safe_"..job, "stash")
        end
    end
end

function setPlayerSkin(skinTable)
    if Config['Core']:upper() == 'ESX' then
        TriggerEvent('skinchanger:loadSkin', skinTable.skin)
    elseif Config['Core']:upper() == 'QBCORE' then
        TriggerEvent("qb-clothes:loadSkin", false, tonumber(skinTable.model), skinTable.skin)
        TriggerServerEvent("brutal_gangs:server:qbcore-loadPlayerSkin", tonumber(skinTable.model), skinTable.skin)
    end
end

RegisterNetEvent('brutal_gangs:client:utils:CreateVehicle')
AddEventHandler('brutal_gangs:client:utils:CreateVehicle', function(Vehicle)
    SetVehicleFuelLevel(Vehicle, 100.0)
    DecorSetFloat(Vehicle, "_FUEL_LEVEL", GetVehicleFuelLevel(Vehicle))

    if Config['Core']:upper() == 'QBCORE' then
        TriggerEvent("vehiclekeys:client:SetOwner", QBCore.Functions.GetPlate(Vehicle))
    end
end)

RegisterNetEvent('brutal_gangs:client:utils:DeleteVehicle')
AddEventHandler('brutal_gangs:client:utils:DeleteVehicle', function(Vehicle)
    DeleteEntity(Vehicle)
end)

function OpenMenuUtil()
    InMenu = true
    SetNuiFocus(true, true)

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

    DisplayRadar(false)
end

function DisableMinimap()
    DisplayRadar(false)
    -- Here you can add a trigger to hide your HUD system
end

function EnableMinimap()
    DisplayRadar(true)
    -- Here you can add a trigger to enable your HUD system
end
server-utils.lua
local YourWebhook = 'YOUR-WEBHOOK'  -- help: https://docs.brutalscripts.com/site/others/discord-webhook

function GetWebhook()
    return YourWebhook
end

RESCB("brutal_gangs:server:StaffCheck",function(source,cb,groups)
    local src = source

    cb(StaffCheck(src, groups))
end)

function StaffCheck(source, AdminGroups)
    local staff = false

    if Config.Core:upper() == 'ESX'then
        local player = Core.GetPlayerFromId(source)
        local playerGroup = player.getGroup()

        for i, Group in ipairs(AdminGroups) do
            if playerGroup == Group then
                staff = true
                break
            end
        end
    elseif Config.Core:upper() == 'QBCORE' then
        local player = Core.Functions.GetPlayer(source)

        for i, Group in ipairs(AdminGroups) do
            if Core.Functions.HasPermission(source, Group) or IsPlayerAceAllowed(source, Group) then
                staff = true
                break
            end
        end
    end

    return staff
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'
    ReviveEvent = 'esx_ambulancejob:revive'
    JobUpdateEvent = 'esx:setJob'
    TSCB = Core.TriggerServerCallback

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

    function GetPlayersFunction()
        return Core.Game.GetPlayers()
    end

    function GetVehiclePropertiesFunction(vehicle)
        return Core.Game.GetVehicleProperties(vehicle)
    end

    function SetVehiclePropertiesFunction(vehicle, properties)
        return Core.Game.SetVehicleProperties(vehicle, properties)
    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'
    ReviveEvent = 'hospital:client:Revive'
    JobUpdateEvent = 'QBCore:Client:OnJobUpdate'
    TSCB = Core.Functions.TriggerCallback

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

    function GetPlayersFunction()
        return Core.Functions.GetPlayers()
    end

    function GetVehiclePropertiesFunction(vehicle)
        return Core.Functions.GetVehicleProperties(vehicle)
    end

    function SetVehiclePropertiesFunction(vehicle, properties)
        return Core.Functions.SetVehicleProperties(vehicle, properties)
    end

    function GetClosestVehicleFunction(coords, modelFilter)
        return Core.Functions.GetClosestVehicle(coords, modelFilter)
    end
    
end
server-core.lua
Core = nil

if Config['Core']:upper() == 'ESX' then
    local _esx_ = 'new' -- 'new' / 'old'
    
    if _esx_ == 'new' then
        Core = exports['es_extended']:getSharedObject()
    else
        Core = nil
        TriggerEvent('esx:getSharedObject', function(obj) Core = obj end)
        while Core == nil do
            Citizen.Wait(0)
        end
    end

    RESCB = Core.RegisterServerCallback
    GETPFI = Core.GetPlayerFromId
    RUI = Core.RegisterUsableItem
    SetJobEvent = 'esx:setJob'
    onPlayerDeath = 'esx:onPlayerDeath'

    function GetIdentifier(source)
        local xPlayer = GETPFI(source)
        while xPlayer == nil do
            Citizen.Wait(1000)
            xPlayer = GETPFI(source) 
        end
        return xPlayer.identifier
    end

    function GetPlayerByIdentifier(identifier)
        return Core.GetPlayerFromIdentifier(identifier)
    end

    function GetAccountMoney(source,account)
        local xPlayer = GETPFI(source)
        if account == 'bank' then
            return xPlayer.getAccount(account).money
        elseif account == 'money' then
            return xPlayer.getMoney()
        end
    end

    function AddMoneyFunction(source, account, amount)
        local xPlayer = GETPFI(source)
        if account == 'bank' then
            xPlayer.addAccountMoney('bank', amount)
        elseif account == 'money' then
            xPlayer.addMoney(amount)
        end
    end

    function RemoveAccountMoney(source, account, amount)
        local xPlayer = GETPFI(source)
        if account == 'bank' then
            xPlayer.removeAccountMoney('bank', amount)
        elseif account == 'money' then
            xPlayer.removeMoney(amount)
        end
    end

    function GetItemCount(source, item)
        local xPlayer = GETPFI(source)

        if _esx_ == 'new' then
            return xPlayer.getInventoryItem(item).count
        else
            if string.sub(item, 0, 6):lower() == 'weapon' then
                local loadoutNum, weapon = xPlayer.getWeapon(item:upper())

                if weapon then
                    return true
                else
                    return false
                end
            else
                return xPlayer.getInventoryItem(item).count
            end
        end
    end
    
    function RemoveItem(source, item, amount)
        local xPlayer = GETPFI(source)
        if _esx_ == 'new' then
            xPlayer.removeInventoryItem(item, amount)
        else
            if string.sub(item, 0, 6):lower() == 'weapon' then
                xPlayer.removeWeapon(item)
            else
                xPlayer.removeInventoryItem(item, amount)
            end
        end
    end

    function AddItem(source, item, count, info)
        local xPlayer = GETPFI(source)
        if _esx_ == 'new' then
            xPlayer.addInventoryItem(item, count, info)
        else
            if string.sub(item, 0, 6):lower() == 'weapon' then
                xPlayer.addWeapon(item, 90)
            else
                xPlayer.addInventoryItem(item, count)
            end
        end
    end

    function GetPlayerNameFunction(source)
        local name
        if Config.SteamName then
            name = GetPlayerName(source) or 'No Data'
        else
            local xPlayer = GETPFI(source)
            name = xPlayer.getName() or 'No Data'
        end
        return name
    end

    function GetPlayerJob(source)
        local xPlayer = GETPFI(source)
        return xPlayer.job.name
    end

    function CreateCoreJob(name, label, grades)
        Core.CreateJob(name, label, grades)
    end

    function SetCoreJob(source, job, grade)
        local xPlayer = GETPFI(source)
        xPlayer.setJob(job, grade)
    end

    function SetCoreJobOffline(identifier, job, grade)
        MySQL.update('UPDATE users SET job = ?, job_grade = ? WHERE identifier = ?', {job, grade, identifier})
    end

elseif Config['Core']:upper() == 'QBCORE' then

    Core = exports['qb-core']:GetCoreObject()
    
    RESCB = Core.Functions.CreateCallback
    GETPFI = Core.Functions.GetPlayer
    RUI = Core.Functions.CreateUseableItem
    SetJobEvent = 'QBCore:Server:SetGang'
    onPlayerDeath = GetResourceState("brutal_ambulancejob") == "started" and 'onPlayerDeath' or 'hospital:server:SetDeathStatus'

    function GetIdentifier(source)
        local xPlayer = GETPFI(source)
        while xPlayer == nil do
            Citizen.Wait(1000)
            xPlayer = GETPFI(source) 
        end
        return xPlayer.PlayerData.citizenid
    end

    function GetPlayerByIdentifier(identifier)
        return Core.Functions.GetPlayerByCitizenId(identifier)
    end

    function GetAccountMoney(source, account)
        local xPlayer = GETPFI(source)
        if account == 'bank' then
            return xPlayer.PlayerData.money.bank
        elseif account == 'money' then
            return xPlayer.PlayerData.money.cash
        end
    end

    function AddMoneyFunction(source, account, amount)
        local xPlayer = GETPFI(source)
        if account == 'bank' then
            xPlayer.Functions.AddMoney('bank', amount)
        elseif account == 'money' then
            xPlayer.Functions.AddMoney('cash', amount)
        end
    end

    function RemoveAccountMoney(source, account, amount)
        local xPlayer = GETPFI(source)
        if account == 'bank' then
            xPlayer.Functions.RemoveMoney('bank', amount)
        elseif account == 'money' then
            xPlayer.Functions.RemoveMoney('cash', amount)
        end
    end

    function GetItemCount(source, item)
        local xPlayer = GETPFI(source)
        local items = xPlayer.Functions.GetItemByName(item)
        local item_count = 0
        if items ~= nil then
            item_count = items.amount
        else
            item_count = 0
        end
        return item_count
    end

    function RemoveItem(source, item, amount)
        local xPlayer = GETPFI(source)
        xPlayer.Functions.RemoveItem(item, amount)
    end

    function AddItem(source, item, count, info)
        local xPlayer = GETPFI(source)
        xPlayer.Functions.AddItem(item, count, nil, info)
    end

    function GetPlayerNameFunction(source)
        local name
        if Config.SteamName then
            name = GetPlayerName(source)
        else
            local xPlayer = GETPFI(source)
            name = xPlayer.PlayerData.charinfo.firstname..' '..xPlayer.PlayerData.charinfo.lastname
        end
        return name
    end

    function GetPlayerJob(source)
        local xPlayer = GETPFI(source)
        return xPlayer.PlayerData.gang.name
    end

    function CreateCoreJob(name, label, grades)
        Core.Functions.UpdateGang(name, 
        {
            label = label,
            grades = grades,
        })
    end

    function UpdateCoreJob(name, label, grades)
        Core.Functions.UpdateGang(name, {
            label = label,
            grades = grades,
        })
    end

    function RemoveCoreJob(name)
        Core.Functions.RemoveGang(name)
    end

    function SetCoreJob(source, job, grade)
        local xPlayer = GETPFI(source)
        xPlayer.Functions.SetGang(job, grade)
    end

    function SetCoreJobOffline(identifier, job, grade)
        MySQL.update('UPDATE players SET gang = ? WHERE citizenid = ?', {{grade = {level = grade, name = "Member"}, name = job, isboss = false, label = Gangs[job].label}, identifier})
    end
    
end
PreviousGangsNextInstallation guide

Last updated 6 months ago

Was this helpful?

🤟
Page cover image