Config Files
The script is fully configurable, allowing complete customization of its behavior and features. Below is a list of configuration files included in the resource.
Useful Articles
File Location > Config/MainConfig.lua
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Dependency Check Helper
-- (Information) βΊ Returns the first matching started resource alias from provided table.
-- (Information) βΊ Used by Fuel/Keys/TextUI/Inventory/Target detection above.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
function scriptCheck(data) -- Do not modify unless you know what you're doing.
for k, v in pairs(data) do
if GetResourceState(k):find('started') ~= nil then
return v
end
end
return false
end
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- OTHERPLANET / OP Gangs 2.0 Main CONFIGURATION
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- This configuration file controls all customizable behaviour of OP Gangs 2.0.
-- Always make a backup before editing.
-- Wrong edits can break the resource.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config = {}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Locale & Debug
-- (Information) βΊ Locale controls which language file from locales/* will be used.
-- (Information) βΊ Debug enables extra logging to help with issue tracking.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.Locale = "en" -- Supported: PL / ES / LT / HU / EN / FR / IT / PT / SK / TW / HR / EL / CZ / SI / AR / TR / DE / SV / NL
Config.Debug = false -- true = verbose debug output in console.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Fuel Dependency Detection
-- (Information) βΊ Auto-detects your active fuel resource.
-- (Information) βΊ To add support for another fuel script, extend the list below and
-- (Information) βΊ handle logic in the integrations where fuel is used.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local fuelScripts = {
['cdn-fuel'] = "cdn-fuel",
['ox_fuel'] = "ox-fuel",
['LegacyFuel'] = "LegacyFuel",
['qs-fuelstations'] = "qs-fuel",
['rcore_fuel'] = "rcore-fuel",
['codem-xfuel'] = "codem-xfuel",
['lc_fuel'] = "lc_fuel",
['stg-fuel'] = "stg-fuel",
}
Config.FuelDependency = scriptCheck(fuelScripts) or 'none'
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Vehicle Keys Dependency Detection
-- (Information) βΊ Auto-detects supported vehicle key systems.
-- (Information) βΊ If none is found, script will behave as if no key system is present.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local keyScripts = {
['brutal_keys'] = "brutal_keys",
['qs-keys'] = "qs-keys",
['qb-vehiclekeys'] = "qb-keys",
['wasabi_carlock'] = "wasabi_carlock",
['sna-vehiclekeys'] = "sna-vehiclekeys",
['dusa_vehiclekeys'] = "dusa_vehiclekeys",
['Renewed-Vehiclekeys']= "Renewed-Vehiclekeys",
['tgiann-hotwire'] = "tgiann-keys",
['ak47_vehiclekeys'] = "ak47_vehiclekeys",
['ak47_qb_vehiclekeys']= "ak47_qb_vehiclekeys",
['mVehicle'] = "mVehicle",
['sy_carkeys'] = "sy_carkeys",
['MrNewbVehicleKeys'] = "MrNewbVehicleKeys",
}
Config.KeysDependency = scriptCheck(keyScripts) or 'none'
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Text UI Dependency Detection
-- (Information) βΊ Auto-detects supported 3D/2D Text UI libraries.
-- (Information) βΊ If none is found, some prompts may fallback to default behaviour.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local textUIScripts = {
['ox_lib'] = "ox_lib",
['jg-textui'] = "jg-textui",
['okokTextUI'] = "okokTextUI",
['brutal_textui'] = "brutal_textui",
['0r-textui'] = "0r-textui",
}
Config.TextUI = scriptCheck(textUIScripts) or 'none'
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Garage Script
-- (Information) βΊ Manual selection of external garage script integration.
-- (Information) βΊ If set to 'none', OP-Crime will handle garage logic internally where applicable.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.GarageScript = 'none' -- Options: 'none', 'op-garages', 'jg-advancedgarages'
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Additional Script Integrations
-- (Information) βΊ Toggle support for optional helper resources.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.AdditionalScripts = {
kq_shellcreator = false, -- (Information) βΊ true if you are using kq_shellcreator.
advancedParking = false -- (Information) βΊ true if you use AdvancedParking.
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Inventory System Detection
-- (Information) βΊ Auto-detects currently started inventory system.
-- (Information) βΊ To support more inventories, extend the list and update inventory integration.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local inventoryScripts = {
['ox_inventory'] = "ox_inventory",
['qb-inventory'] = "qb-inventory",
['codem-inventory'] = "codem-inventory",
['qs-inventory'] = "quasar_inventory",
['tgiann-inventory'] = "tgiann_inventory",
['origen_inventory'] = "origen_inventory",
}
-- If you're using QB Inventory and it's not working properly set below option to:
-- Config.Inventory = {
-- inventoryScript = 'old-qb-inventory'
-- }
Config.Inventory = {
inventoryScript = scriptCheck(inventoryScripts) or 'none'
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Currency Formatting
-- (Information) βΊ Visual formatting of money values in the UI (JS Intl.NumberFormat).
-- (Information) βΊ This does NOT change internal game currency logic, only display.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.CurrencySettings = {
-- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat
currency = "USD", -- 'USD','EUR','PLN', etc.
style = "currency", -- 'currency','decimal','percent','unit'
format = "en-US" -- Locale string for formatting.
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Dirty Money Handling
-- (Information) βΊ ESX: Uses default 'black_money' account automatically.
-- (Information) βΊ QB/QBOX: Uses configured item as dirty cash equivalent.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.DirtyMoney = {
itemName = "dirty_money" -- Dirty money item name on QB/QBOX.
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- βοΈ MISC CONFIGURATION βοΈ
-- (Information) βΊ General behaviour, markers, notifications, ranking limits, etc.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local targets = { -- Target libraries detection
['ox_target'] = "ox-target",
['qb-target'] = "qb-target"
}
local notifyScripts = { -- Notify libraries detection
['op-hud'] = "op_hud",
['okokNotify'] = "okokNotify",
['vms_notify'] = "vms_notify",
['ox_lib'] = "ox_lib",
['brutal_notify'] = "brutal_notify",
['brutal_notify'] = "brutal_notify",
}
Config.Misc = {
AccessMethod = scriptCheck(targets) or 'none', -- 'ox-target' / 'qb-target' / 'none'
zoneSize = 1.2, -- Marker radius for interaction zones.
zoneColor = { -- Marker color (RGB).
r = 219,
g = 0,
b = 0,
},
TowingTime = 5, -- Towing time in seconds.
Notify = scriptCheck(notifyScripts) or 'none', -- Notify system: none / ESX / QBCORE / QBOX or auto detected from list 'notifyScripts'
stashCapacityUpgradePer = 5, -- One stash upgrade = +X KG. Note: Changing this requires your changes in Locale file! UI description (will still display that upgrade adds 5kg until you adjust translation)
ranksLimit = 5, -- Max number of ranks per organisation.
membersLimit = 20, -- Max number of members per organisation.
limitBossMenu = false, -- true = only one player can access bossmenu at once. Note: You can limit bossmenu to one player at a time!
disableGarage = false, -- true = completely disable garages & vehicle shop in bossmenu.
disableDarkChat = false, -- true = disable darkchat in crime tablet.
disableDarkChatNotificationAboveMap = false, -- true = disable on-screen darkchat notifications.
disableRanking = false, -- true = disable ranking page in tablet.
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Admin Commands & Permissions
-- (Information) βΊ Configure admin commands and who is allowed to use them.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.AdminPanelCommand = "crimeadmin" -- Command for Crime Admin Panel.
Config.SetJobCommand = "setcrimejob" -- Command to set selected player's crime job.
Config.AddCrimeVehicle = "addcrimecar" -- Command to add vehicle to selected organisation.
Config.FireCommand = "firemember" -- Command to fire member from current organisation.
Config.ResetGangsStats = "resetgangstats" -- Wipes all gangs stats (zones, missions, etc.) used in ranking.
-- List of allowed identifiers to use admin Commands /setcrimejob and /addcrimecar
-- (Information) βΊ Use identifiers from txAdmin -> IDs (no hardware IDs!).
-- (Information) βΊ You can also use character identifiers or citizenid on QBOX/QB.
-- E.g.: char1:7e0ec7b80d186fd8c29f6631e4377e75812fe8fd
Config.AdminCommandsPlayers = {
['license:94792cad7ae764305aae8f1372d3cd287848ae7c'] = true,
['discord:571105311251890186'] = true,
}
-- List of allowed identifiers to use /crimeadmin
-- Same rules as above (txAdmin IDs / character identifiers / citizenid).
Config.AdminPanelPlayers = {
['license:94792cad7ae764305aae8f1372d3cd287848ae7c'] = true,
['discord:571105311251890186'] = true,
}
Config.SellVehiclePercentage = 20 -- Percentage of original vehicle price when selling in bossmenu.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- π± TABLET CONFIGURATION π±
-- (Information) βΊ Controls how crime tablet is accessed and how missions are handled.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.Tablet = {
tabletASItem = false, -- true = tablet is usable item, false = command-based.
commandName = "crimetablet", -- Command used when tabletASItem is false.
item = {
name = "crime_tablet" -- Required item name if tabletASItem is true.
},
MissionsPerRestart = 8, -- How many missions per organisation per update.
DisableSeasonPass = false, -- true = disable season pass feature Completly (As well from Boss Menu and Admin Panel).
DisableFrames = false, -- true = hide tablet frame UI elements.
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- π BLIPS CONFIGURATION π
-- (Information) βΊ Map blips for organisations, garages, zones and money laundry.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.Blips = {
BlipScale = 0.8, -- Global blip scale.
ShowBlipsOnMap = true, -- false = hide money laundry, garages and illegal medic blips.
ZonesShowBlipsOnMap = true, -- false = hide PVP/turf zone blips.
Medic = { blipId = 51, blipColor = 7 },
Organisation = { blipId = 437, blipColor = 1 },
Zone = { blipId = 379, blipColor = 3 },
Garage = { blipId = 357, blipColor = 2 },
MoneyLaundry = { blipId = 318, blipColor = 25 },
MoneyLaundryLocation = { blipId = 478, blipColor = 1 },
LaundryLocationRadiusBlip = {
Color = 49,
Alpha = 222,
Radius = 60.0
}
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- π§Ό MONEY LAUNDRY CONFIGURATION π§Ό
-- (Information) βΊ Settings for dirty money washing missions.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.MoneyLaundry = {
Disable = false, -- true = disable entire money laundry feature.
laundryAmountPerOneStop = 20000, -- Amount of dirty money cleaned per location.
laundryPercentage = 15, -- Tax percentage taken from laundered amount.
Ped = { -- Set to false to disable ped (Ped = false,).
model = "a_m_m_afriamer_01",
gender = "male", -- options: male/female
},
laundryMisc = {
location = vec4(78.8508, 112.5588, 80.1682, 161.7077),
vehicleSpawnCoords = vec4(68.4445, 119.2293, 79.1232, 161.5234),
vehicleModel = 'boxville4',
-- LAUNDRY MISSION OUTFIT IS LOCATED NOW IN config/ClothingConfig.lua
},
laundryLocations = {
{
coords = vec4(237.7540, 22.6503, 82.6137, 341.4727)
},
{
coords = vec4(-77.5555, -1200.6666, 26.6352, 92.4784)
},
{
coords = vec4(232.4930, -1771.4315, 27.6610, 48.4330)
},
{
coords = vec4(967.5204, -1823.1718, 30.0824, 229.1019)
},
{
coords = vec4(947.5532, -1698.1992, 29.0851, 84.8497)
},
}
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- π₯ MEDIC CONFIGURATION π₯
-- (Information) βΊ Illegal medic / healing spot configuration.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.Medic = {
Disable = false, -- true = disable this feature.
HealingTime = 10, -- Healing time in seconds.
Ped = {
model = "s_m_m_scientist_01",
gender = "male",
animation = {
Dict = "missheistdockssetup1clipboard@base",
Lib = "base",
Prop = {
Prop = 'prop_notepad_01',
PropBone = 18905,
PropPlacement = {
0.1,
0.02,
0.05,
10.0,
0.0,
0.0
}
}
}
}
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- π PVP ZONES CONFIGURATION π
-- (Information) βΊ Non-turf PVP zones. For Turf Zones see: config/TurfConfig.lua
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- THIS IS SECTION FOR PVP ZONES (NO TURFZONES)
-- IF YOU WANT TO CONFIGURE TURF ZONES - GO TO config/TurfConfig.lua
Config.ZonesMisc = {
PerOnePlayerInside = 1, -- Time (in seconds) for 1% capture progress for one org.
-- If there are 2 organisations in zone the zone capturing percentage will stop.
ZonesCooldown = 15, -- Cooldown time (in minutes) after a capture.
ZoneCaptureEXP = 150, -- EXP given per zone capture.
Disable = false, -- true = disable PVP zones completely.
}
Config.Zones = { -- Add custom PVP zones here.
-- To create new zones use /pzcreate poly
-- To add new point to created poly use /pzadd
-- More info: https://github.com/mkafrin/PolyZone
{
label = "Sandy Scrapy Yard",
index = "sandyscrapy",
coords = vec3(2404.2021, 3104.1765, 48.1648),
Zone = function()
return PolyZone:Create({
vector2(2329.3020019532, 3053.681640625),
vector2(2330.888671875, 3081.3254394532),
vector2(2361.8330078125, 3087.1943359375),
vector2(2379.0219726562, 3105.4108886718),
vector2(2404.3395996094, 3163.1628417968),
vector2(2437.2124023438, 3160.5307617188),
vector2(2434.8149414062, 3024.4143066406),
vector2(2329.9057617188, 3024.9143066406)
}, {
name = "SandyScrapyYard",
})
end,
},
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- ROPE MENU
-- (Information) βΊ Enables rope item / keybind usage with optional target integration.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.Rope = {
Enable = true, -- false = disable rope completly
Item = {
Enable = true,
ItemName = "rope" -- Rope item name.
},
Keybind = {
Enable = true,
Bind = "F6" -- Keybind used for rope menu when enabled.
},
Target = {
Enable = true -- true = add target options to every player.
-- When it's enabled - will add options to every player on the server.
}
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- AIRDROPS
-- (Information) βΊ Global configuration for Airdrop events, guards and rewards.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.AirDrop = {
Guards = {
enable = false,
amount = 20,
weaponsList = {
`weapon_SNSPISTOL`,
`WEAPON_SNSPISTOL_MK2`,
`WEAPON_VINTAGEPISTOL`,
`WEAPON_PISTOL`
},
guardModels = {
"s_m_y_blackops_01",
"s_m_y_blackops_02",
"s_m_m_armoured_01",
"s_m_m_marine_01"
}
},
StartCommand = {
Enable = true, -- Allow your admins to start AirDrop manually.
CommandName = "startAirDrop" -- Command name to start Airdrop.
},
TimeToLand = 2, -- Time in minutes before airdrop starts going down.
Enable = true, -- Master toggle for Airdrop system.
Timer = 2, -- Interval in hours between automatic airdrops.
DespawnTime = 25, -- Minutes after which unopened airdrop will despawn.
Locations = {
vec4(470.7527, 2942.3884, 40.7600, 95.2011),
vec4(1350.2504, 4354.7686, 42.7147, 315.9569),
vec4(2034.9507, 4764.8198, 40.0590, 290.3700),
vec4(3700.1226, 4533.2456, 22.2974, 193.3774),
vec4(1518.1498, 6341.2002, 23.0057, 171.9430),
vec4(-70.5034, 1910.8385, 195.1936, 196.7471),
},
Exp = 100, -- EXP given for opening Airdrop.
Blip = {
EnableRadiusBlip = true,
Blip = 550,
BlipColor = 3,
},
RewardsAmount = 3, -- Number of random rewards per airdrop.
Rewards = {
--[[
{
rewardType = "item", ---@param rewardType "item" | "money" | "blackmoney"
itemName = "spray_can",
amount = 10,
chance = 50,
},
{
rewardType = "item", ---@param rewardType "item" | "money" | "blackmoney"
itemName = "spray_remover",
amount = 10,
chance = 50,
},
{
rewardType = "blackmoney", ---@param rewardType "item" | "money" | "blackmoney"
itemName = "black_money",
amount = 100000,
chance = 50,
},
]]
{
rewardType = "item", ---@param rewardType "item" | "money" | "blackmoney"
itemName = "testitem",
amount = 15,
chance = 50,
metadata = {
testmeta = 69
}
},
-- [Note]: Metadata currently works only for ox_inventory.
-- If you want metadata compatible with your inventory script:
-- Files that need to be edited: `integrations/server/inventory/`
-- and one of `framework/server` functions Fr.AddItem
},
ProgressTime = 10000, -- Time in milliseconds for opening progress bar.
SkillCheck = function() -- Custom skill check function (uses ox_lib by default).
return lib.skillCheck({'easy', 'easy', 'medium', 'easy', 'medium'}, {'w', 'a', 's', 'd'})
end
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Garage Disable Marker Helper
-- (Information) βΊ Some external garage scripts manage their own markers/blips.
-- (Information) βΊ This helper allows OP-Crime to disable its own markers when needed.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Do not touch function below if you don't know what you're changing!
Config.GarageDisableMarker = function()
if Config.GarageScript == 'jg-advancedgarages' then
return true
else
return false
end
end-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Turf Zones System Configuration
-- (Information) βΊ Controls all core behavior of Turf Zones, including graffiti,
-- racketeering, rivalry conflicts and drug-selling influence.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Turf Zones Base
-- (Information) βΊ Enables or disables the entire turf zone mechanic.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.DisableTurfZones = false -- Disable all Turf Zone features
Config.DisableEnterNotifications = true -- Disable enter/leave zone notifications
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Rivalry System
-- (Information) βΊ A timed gangβvsβgang conflict inside a turf zone.
-- (Information) βΊ EXP and costs scale with your server economy.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.Rivalry = {
Disable = false, -- Disable/Enable rivalry system
RivalryStartPrice = 5000, -- Cost (dirty money). Set to 0 for free rivalry.
RivalryDuration = 1, -- Duration in HOURS
RivalryWinEXP = 250, -- EXP reward for winning rivalry
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Graffiti System
-- (Information) βΊ Allows gangs to paint and remove graffiti inside turf zones.
-- (Information) βΊ Graffiti contributes to zone loyalty and gang EXP.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.Graffiti = {
Disable = false, -- Disable/Enable graffiti system
RenderDistance = 30.0, -- Distance at which graffiti becomes visible
CooldownTime = 1, -- Minutes between spraying graffiti
CooldownTimeRemover = 1, -- Minutes between removing graffiti
Items = { -- Required items
graffitiSpray = "spray_can",
graffitiRemover = "spray_remover"
},
loyality = { -- Loyalty mechanics
LoyalityPerGraffiti = 75, -- Loyalty gained when gang paints graffiti
loyalityIncreaseOnRemove = 15, -- Loyalty for removing enemy graffiti
loyalityDecreaseOnRemove = 15, -- Loyalty lost when enemy removes your graffiti
loyalityDecreaseOnPaint = 5, -- Loyalty lost when enemy paints in your zone
-- Zone ownership changes when a gang reaches β₯51% loyalty.
},
exp = {
SprayingEXPgain = 50, -- EXP for successfully spraying
RemovingGraffitiEXPgain = 50 -- EXP for removing enemy graffiti
-- Note: Removing your own graffiti gives no EXP.
},
-- Turf zone graffiti blips (only visible to gang members)
Blip = {
Enable = true,
Radius = 80.0, -- Min 25. Larger radius = bigger zone highlight.
},
Settings = {
MaxSize = 9.75, -- Optimal max graffiti size
MinSize = 1.75, -- Optimal min graffiti size
},
CleanGraffitiInterval = 24, -- Every X hours all graffiti is auto-cleaned
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Racketeering System
-- (Information) βΊ βProtectionβ spots generating EXP and rewards for controlling gangs.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.Racketeering = {
Cooldown = 30, -- Minutes between collect attempts
Exp = 50, -- EXP for claiming a racketeering point
Blip = {
BlipId = 358,
BlipColor = 1,
}
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Drug Selling Integration
-- (Information) βΊ Influence for selling drugs inside turf zones.
-- (Information) βΊ Supports custom drug scripts via integrations.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local drugSellingAvailable = {
['drugs_creator'] = "jaksam_drugs",
['envi-trap-phone'] = "envi-trapphone",
}
Config.DrugSelling = {
expOnDrugSell = 15, -- EXP per drug transaction in zone
loyality = {
-- Ownership uses the β₯51% loyalty rule
LoyalityPerTransaction = 50, -- Loyalty gained when gang sells drugs in zone
loyalityDecreaseOnOtherOrgs = 15 -- Loyalty lost when OTHER gang sells in your zone
},
-- Integration Drug Script (follow docs to integrate)
-- (Information) βΊ This is regarding fetching data of sold drugs inside turf zones to add loyality etc.
DrugScript = scriptCheck(drugSellingAvailable) or 'none',
-- Full integration documentation:
-- https://docs.otherplanet.dev/scripts/op-gangs/integrations
--
-- Fully supported (no config change needed):
-- - op-drugselling (FREE)
-- - nc-drugselling
-- - visualz_selldrugs
-- - tk_drugs
-- - lunar_drugscreator
-- - fs_trapphone
-- - lation_selling
}File Location > Config/Missions/MissionsConfig.lua
-- β οΈ Each mission must be configured using the structure below! β οΈ
--- @param type: car / weapon / money / black_money / item
--- Description:
--- - "car" β Must be a vehicle available in the Vehicle Store. Otherwise, it will not appear.
--- - To assign a vehicle as a mission reward, enable "vehicle visibility" from the Admin Panel
--- and provide the model name using:
--- @param ModelName
-- π‘ Mission-related functions are located in:
-- config/Missions/MissionsFunctions.lua
Config.Missions = {
["find_vehicle"] = {
UI = {
missionLabel = "FIND VEHICLE ON STREET",
missionDescription = "Find vehicle model which we will send to you and bring us, no damaged.",
missionExp = 100,
missionReward = {
label = "Ammo 9mm x500",
nameSpawn = "ammo-9mm",
amount = 500,
img = "https://cdn3d.iconscout.com/3d/premium/thumb/ammo-3d-icon-download-in-png-blend-fbx-gltf-file-formats--ammunition-case-metal-box-bullet-military-pack-weapon-icons-9555390.png",
rare = "red",
type = "item"
}
},
OnMissionStart = function()
startFindVehicleMission()
end,
},
["laundry_100k"] = {
UI = {
missionLabel = "LAUNDRY 100 000$ OF DIRTY MONEY",
missionDescription = "Laundry 100 000$ of dirty money at laundry point. To do this your organisation have to unlock Laundry upgrade!",
missionExp = 250,
missionReward = {
label = "15x Vintage Pistol",
nameSpawn = "weapon_vintagepistol",
amount = 15,
img = "https://data.otherplanet.dev/fivemicons/%5bweapons%5d/weapon_vintagepistol.png",
rare = "purple",
type = "item"
}
},
OnMissionStart = function()
startLaundryMission()
end,
},
["capture_1Zone"] = {
UI = {
missionLabel = "Capture at least 1 Zone.",
missionDescription = "Capture at least 1 zone to claim extra rewards and EXP points for your organisation.",
missionExp = 150,
missionReward = {
label = "20 000$",
nameSpawn = "",
amount = 20000,
img = "https://cdn-icons-png.flaticon.com/512/7630/7630510.png",
rare = "blue",
type = "money"
}
},
OnMissionStart = function()
startZoneCaptureMission()
end,
},
["spray_graffiti"] = {
UI = {
missionLabel = "Graffiti Mission",
missionDescription = "Spray at least 3 graffiti in Turf Zones",
missionExp = 180,
missionReward = {
label = "20 000$",
nameSpawn = "",
amount = 20000,
img = "https://cdn-icons-png.flaticon.com/512/7630/7630510.png",
rare = "blue",
type = "money"
}
},
OnMissionStart = function()
startSprayGraffitiMission()
end,
},
["remove_graffiti"] = {
UI = {
missionLabel = "Graffiti Mission",
missionDescription = "Remove at least 5 graffiti of enemy's gang",
missionExp = 180,
missionReward = {
label = "20 000$",
nameSpawn = "",
amount = 20000,
img = "https://cdn-icons-png.flaticon.com/512/7630/7630510.png",
rare = "blue",
type = "money"
}
},
OnMissionStart = function()
startRemoveGraffitiMission()
end,
},
["sell_drugs"] = {
UI = {
missionLabel = "Sell Drugs",
missionDescription = "Sell Drugs to 50 people of any choosen drug inside Turf Zone",
missionExp = 180,
missionReward = {
label = "20 000$",
nameSpawn = "",
amount = 20000,
img = "https://cdn-icons-png.flaticon.com/512/7630/7630510.png",
rare = "blue",
type = "money"
}
},
OnMissionStart = function()
startSellingDrugsMission()
end,
},
["steal_van"] = {
UI = {
missionLabel = "Steal Van",
missionDescription = "Steal Van with Drugs from armored Gangsters and deliver it safely",
missionExp = 180,
missionReward = {
label = "35 000$",
nameSpawn = "",
amount = 35000,
img = "https://cdn-icons-png.flaticon.com/512/7630/7630510.png",
rare = "purple",
type = "money"
}
},
OnMissionStart = function()
deliverVanMission()
end,
},
["drug_sell_npc"] = {
UI = {
missionLabel = "Deliver Drugs",
missionDescription = "Deliver 50G of Marihuana to Marked Location.",
missionExp = 120,
missionReward = {
label = "15 000$",
nameSpawn = "",
amount = 15000,
img = "https://cdn-icons-png.flaticon.com/512/7630/7630510.png",
rare = "purple",
type = "money"
}
},
OnMissionStart = function()
startWeedDelivey()
end,
},
--[[
-------------------------------------------------
-- ONLY FOR VEHICLE THEFT SCRIPT ----------------
-- https://www.otherplanet.dev/product/6503031 --
-------------------------------------------------
["vehicleTheft"] = {
UI = {
missionLabel = "Complete Vehicle Theft Hacking",
missionDescription = "Start and complete vehicle theft hacking proccess.",
missionExp = 350,
missionReward = {
label = "50 000$",
nameSpawn = "",
amount = 15,
img = "https://cdn-icons-png.flaticon.com/512/7630/7630510.png",
rare = "blue",
type = "money"
}
},
OnMissionStart = function()
startVehicleTheftMission()
end,
},]]--
}-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Server-Side Configuration
-- (Information) βΊ Core server behaviour, external APIs, and integration options.
-- (Information) βΊ These settings affect backend operations such as logging, Steam avatar
-- fetching, and optional compatibility modes.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ServerConfig = {}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- QB Gangs Integration
-- (Information) βΊ Enables compatibility mode for qb-gangs data structures.
-- (Information) βΊ Requires modified versions of qb-core or qbx_core.
-- (Information) βΊ Refer to documentation before enabling:
-- https://docs.otherplanet.dev/scripts/op-gangs/integrations/gangs-qb-core-qbox
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ServerConfig.EnableQBgangsIntegrations = false
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Steam API Key
-- (Information) βΊ Used to fetch player Steam avatars for UI and logs.
-- (Information) βΊ Optional β leave empty to disable avatar fetching.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ServerConfig.SteamApiKey = "" -- e.g. "YOUR_STEAM_API_KEY"
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Discord Webhooks
-- (Information) βΊ Webhook URLs for sending server logs and admin actions.
-- (Information) βΊ Leave blank to disable Discord logging.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ServerConfig.DiscordWebHook = '' -- General logs (boss menu actions, missions, etc.)
ServerConfig.DiscordWebHookAdmin = '' -- Admin panel logs (bans, wipes, resets)-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Clothing System Detection
-- (Information) βΊ Detects your character appearance system automatically.
-- (Information) βΊ This is used for outfit switching during the laundry mission.
-- (Information) βΊ Add new integrations by expanding the list below and implementing
-- the logic inside your clothing adapter handlers.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
local compatibleClothingList = {
['skinchanger'] = "skinchanger",
['illenium-appearance'] = "illenium-appearance",
['fivem-appearance'] = "fivem-appearance",
['17mov_CharacterSystem'] = "17mov_CharacterSystem",
['rcore_clothing'] = "rcore_clothing",
['crm-appearance'] = "crm-appearance",
['tgiann-clothing'] = "tgiann_clothing",
}
Config.Clothing = {
clothingScript = scriptCheck(compatibleClothingList) or 'none'
}
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- Laundry Mission: Outfit Configuration
-- (Information) βΊ Defines the outfit the player will wear during the Laundry Mission.
-- (Information) βΊ Each clothing script uses its own format (components, props, ids, etc.)
-- (Information) βΊ Use /getMyOutfit in-game to print your current outfit to the F8 console.
-- (Information) βΊ Do not mix formats between systems. Only edit the block of the system
-- you are using. Wrong formatting will break outfit application.
-- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Config.LaundryClothing = {
enable = false, -- Enable/disable outfit swapping during laundry missions.
-- (Information) βΊ Outfit lists per clothing script.
-- (Information) βΊ The script will automatically choose the correct block based on the
-- detected clothing system (Config.Clothing.clothingScript).
playerOutFit = {
['crm-appearance'] = { {
crm_texture = 0,
crm_style = 0
}, {
crm_texture = 0,
crm_id = 0,
crm_style = 0
}, {
crm_texture = 0,
crm_id = 1,
crm_style = 0
}, {
crm_texture = 0,
crm_id = 3,
crm_style = 4
}, {
crm_texture = 5,
crm_id = 4,
crm_style = 0
}, {
crm_texture = 0,
crm_id = 5,
crm_style = 0
}, {
crm_texture = 0,
crm_id = 6,
crm_style = 3
}, {
crm_texture = 0,
crm_id = 7,
crm_style = 0
}, {
crm_texture = 0,
crm_id = 8,
crm_style = 15
}, {
crm_texture = 0,
crm_id = 9,
crm_style = 0
}, {
crm_texture = 0,
crm_id = 10,
crm_style = 0
}, {
crm_texture = 0,
crm_id = 11,
crm_style = 12
} },
['rcore_clothing'] = {
components = {
["3"] = "nondlcgta5--3--0--0",
["8"] = "8_15_0",
["11"] = "nondlcgta5--11--9--14"
},
props = {}
},
['skinchanger'] = {
chain_2 = 0,
mask_1 = 0,
pants_2 = 1,
torso_1 = 14,
bproof_1 = 0,
shoes_1 = 57,
bproof_2 = 0,
glasses_2 = 0,
glasses_1 = 0,
helmet_2 = 1,
tshirt_1 = 15,
bags_1 = 0,
decals_1 = 0,
mask_2 = 0,
arms_2 = 0,
tshirt_2 = 0,
torso_2 = 7,
bags_2 = 0,
shoes_2 = 10,
chain_1 = 0,
pants_1 = 6,
arms = 0,
helmet_1 = 45,
decals_2 = 0
},
['illenium-appearance'] = {
{ component_id = 0, drawable = 0, texture = 0 },
{ component_id = 1, drawable = 10, texture = 0 },
{ component_id = 2, drawable = 0, texture = 0 },
{ component_id = 3, drawable = 0, texture = 0 },
{ component_id = 4, drawable = 0, texture = 0 },
{ component_id = 5, drawable = 0, texture = 0 },
{ component_id = 6, drawable = 0, texture = 0 },
{ component_id = 7, drawable = 0, texture = 0 },
{ component_id = 8, drawable = 0, texture = 0 },
{ component_id = 9, drawable = 0, texture = 0 },
{ component_id = 10, drawable = 0, texture = 0 },
{ component_id = 11, drawable = 10, texture = 0 }
},
['fivem-appearance'] = {
{ component_id = 0, drawable = 0, texture = 0 },
{ component_id = 1, drawable = 10, texture = 0 },
{ component_id = 2, drawable = 0, texture = 0 },
{ component_id = 3, drawable = 0, texture = 0 },
{ component_id = 4, drawable = 0, texture = 0 },
{ component_id = 5, drawable = 0, texture = 0 },
{ component_id = 6, drawable = 0, texture = 0 },
{ component_id = 7, drawable = 0, texture = 0 },
{ component_id = 8, drawable = 0, texture = 0 },
{ component_id = 9, drawable = 0, texture = 0 },
{ component_id = 10, drawable = 0, texture = 0 },
{ component_id = 11, drawable = 10, texture = 0 }
},
['17mov_CharacterSystem'] = { {
component_id = 1,
texture = 0,
drawable = 0
}, {
component_id = 3,
texture = 0,
drawable = 0
}, {
component_id = 4,
texture = 2,
drawable = 15
}, {
component_id = 5,
texture = 0,
drawable = 0
}, {
component_id = 6,
texture = 0,
drawable = 114
}, {
component_id = 7,
texture = 0,
drawable = 0
}, {
component_id = 8,
texture = 0,
drawable = 15
}, {
component_id = 9,
texture = 0,
drawable = 0
}, {
component_id = 10,
texture = 0,
drawable = 0
}, {
component_id = 11,
texture = 0,
drawable = 36
}},
}
}Last updated