Copy -- ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
-- 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