⚙️ Settings (Config File)
⚙️ Settings (Configuration)
This master config holds everything! Balance the exact XP required to reach Level 50, modify the Skill Tree bonuses (like how much Stealth reduces police alerts), dictate the spawn points for the vehicles, and construct the scanner's beep intervals here.
Config = {}
Config.Locale = 'en' -- 'tr' or 'en'
-- ============================================================
-- FRAMEWORK AYARI
-- ============================================================
-- 'auto' → Otomatik algılar (qb-core, qbx_core, es_extended)
-- 'qb' → QBCore
-- 'qbox' → QBox (qbx_core)
-- 'esx' → ESX (es_extended)
Config.Framework = 'auto'
-- ============================================================
-- BİLDİRİM (NOTIFY) SİSTEMİ
-- ============================================================
Config.NotifySystem = {
-- 'auto' | 'ox_lib' | 'okok' | 'mythic' | 'qb' | 'esx' | 'standalone'
type = 'auto',
title = '', -- Başlık yok (boş)
position = 'top-right', -- ox_lib konum: 'top-right' | 'top-left' | 'bottom-right'
defaultDuration = 5000, -- ms
-- ÖNEMLİ: true yaparsan ox_lib + NUI = 2 bildirim görünür!
-- Sadece standalone modda veya tablet içi ekstra toast istiyorsan true yap.
showTabletToast = false,
standaloneChat = false,
}
-- [[ TEMEL SİSTEM AYARLARI ]]
Config.UseTarget = true
Config.DispatchEnabled = true
Config.DispatchChance = 100 -- Her parça sokumunda dispatch tetiklenme şansı (%)
Config.PreventOwnedVehicles = true
Config.MinimumPolice = 0
Config.Cooldown = 0 -- Dakika cinsinden (0 = bekleme yok)
-- ============================================================
-- DİSPATCH SİSTEMİ
-- ============================================================
Config.DispatchSystem = {
-- 'auto' → Kurulu sistemi otomatik algılar
-- 'ps' → ps-dispatch
-- 'cd' → cd_dispatch
-- 'linden' → linden_outrun
-- 'qs' → qs-dispatch
-- 'qb' → qb-dispatch
-- 'standalone' → Sadece sunucu tarafı polis alarmı (blip yok)
type = 'auto',
-- Dispatch mesaj kodu
code = "10-35",
-- Dispatch etiketi
label = "Araç Hırsızlığı",
-- Harita blip ayarları (dispatch blip'i)
blipId = 225, -- Araç ikonu
blipColor = 1, -- Kırmızı
-- Kaç saniyede bir dispatch gönderilebilir? (0 = sınırsız)
-- Çok fazla dispatch bildirimi önlemek için kullanın
cooldown = 10, -- saniye
}
-- [[ GEREKLİ EŞYALAR ]]
Config.RequiredItems = {
chop = "screwdriverset", -- Parçalama işlemi için gerekli ana alet
}
-- [[ YÖNETİM (ADMİN) AYARLARI ]]
Config.AdminList = {
"CRY55291", -- Manuel eklenen CitizenID'ler
}
-- [[ DISCORD LOG AYARLARI ]]
Config.Logs = {
enabled = true,
webhook = "BURAYA_WEBHOOK_URL_GELECEK", -- Discord Webhook URL
serverName = "EXIT Roleplay",
icon = "https://i.imgur.com/chop_icon.png"
}
-- [[ YÖNETİCİ NPC (BOSS) AYARLARI ]]
Config.BossNPC = {
enabled = false, -- Boss NPC devredışı, tablet üzerinden kontrol ediliyor
model = "s_m_y_garbage",
coords = vector4(-566.91, -1696.04, 20.04, 55.1),
label = "Büyük Usta",
blip = {
enabled = false,
sprite = 480,
color = 5,
scale = 0.7,
label = "Parçalayıcı Yönetimi"
}
}
-- [[ MİNİGAME SİSTEMİ ]]
Config.Minigame = {
enabled = true,
-- 'internal' (kendi şık sistemimiz) | 'ox_lib' | 'ps-ui' | 'qb-skillbar'
type = "internal",
-- Dahili Minigame (Internal) için Stil Ayarları:
-- 'gauge' -> Yatay bar (Sinyal yakalama)
-- Parça başına özel zorluklar (Bar Yakalama):
difficulty = {
door = {
style = "gauge",
speed = 1.6,
width = 16,
steps = 2
},
wheel = {
style = "gauge",
speed = 1.8,
width = 14,
steps = 3
},
plate = {
style = "gauge",
speed = 2.0,
width = 12,
steps = 2
},
bumper = {
style = "gauge",
speed = 1.6,
width = 16,
steps = 1
},
engine = {
style = "gauge",
speed = 2.4,
width = 10,
steps = 4
},
hacker = { stages = 2 }
}
}
-- [[ HACKER MİNİGAME AYARLARI ]]
-- Her aşama arası bekleme süresi bu aralıktan rastgele seçilir (saniye cinsinden)
Config.HackerMinigame = {
-- Her aşamada kaç oyun oynandığı (sırasıyla artar)
-- Örnek: stage 1 = 1 oyun, stage 2 = 2 oyun, stage 3 = 3 oyun
gamesPerStage = {
[1] = 1, -- 1. aşamada 1 oyun
[2] = 2, -- 2. aşamada 2 oyun
[3] = 3, -- 3. aşamada 3 oyun
[4] = 4, -- 4. aşamada 4 oyun
},
defaultGamesPerStage = 1, -- Tanımsız aşamalar için varsayılan
-- Aşama arası bekleme süreleri (saniye, random aralık)
stageCooldowns = {
[1] = { min = 15, max = 20 },
[2] = { min = 18, max = 25 },
[3] = { min = 22, max = 30 },
},
defaultCooldown = { min = 15, max = 20 },
}
-- [[ GRUP SİSTEMİ (CO-OP) ]]
Config.Groups = {
enabled = true,
maxMembers = 4,
groupBonus = 0.20 -- %20 ekstra para bonusu (eklenen her üye başına)
}
-- [[ GÖREV (KONTRAT) SİSTEMİ ]]
Config.MissionSystem = {
Enabled = true,
RequireMission = true,
RequireTablet = true, -- Tablet öğesine ihtiyaç var mı? (Geriye kalan işlemleri TabletItem üzerinden yapar)
TabletItem = "chop_tablet",
Currency = "chop_coins",
EnableContractTransfer = true,
UseRadar = true,
RadarRadius = 250.0,
SpawnDistance = 150.0,
RefreshInterval = 10, -- DAKİKA: 10 dakikada bir yeni kontrat seti üretilir
MaxContracts = 6,
-- Tier bazlı kontrat son kullanma süreleri (saniye)
ContractExpiry = {
['D'] = 3600, -- 1 saat (Novice - bol kontrat)
['C'] = 5400, -- 1.5 saat
['B'] = 7200, -- 2 saat
['A'] = 9000, -- 2.5 saat
['S'] = 10800, -- 3 saat (Legend - nadir ama çok değerli)
},
Tiers = {
['D'] = { label = "Novice", minLevel = 0, bonus = 1.0, icon = "D", buyPrice = 0, allowedTasks = {"chop"}, vehicles = {"blista", "futo", "intruder", "kuruma", "oracle", "schwarzer", "sentinel", "asbo", "kanjo", "prairie"} },
['C'] = { label = "Apprentice", minLevel = 10, bonus = 1.2, icon = "C", buyPrice = 50, allowedTasks = {"chop"}, vehicles = {"cavalcade", "dubsta", "huntley", "mesa", "radi", "baller", "granger", "rocoto", "seminole", "patriot"} },
['B'] = { label = "Professional", minLevel = 25, bonus = 1.5, icon = "B", buyPrice = 150, allowedTasks = {"chop", "dropoff"}, vehicles = {"elegy", "jester", "massacro", "penumbra", "zion", "comet2", "surano", "ninef", "rapidgt", "banshee", "coquette"} },
['A'] = { label = "Master", minLevel = 40, bonus = 2.0, icon = "A", buyPrice = 300, allowedTasks = {"chop", "dropoff"}, vehicles = {"adder", "osiris", "t20", "zentorno", "bullet", "cheetah", "entityxf", "turismor", "infernus", "vacca"} },
['S'] = { label = "Legend", minLevel = 50, bonus = 3.0, icon = "S", buyPrice = 600, allowedTasks = {"chop", "dropoff", "vinscratch"}, vehicles = {"nero", "tempesta", "prototipo", "italigto", "thrax", "emerus", "krieger", "tezeract", "autarch", "tyrant", "visione"} }
},
SpawnLocations = {
vector4(150.44, -3079.09, 5.33, 358.28),
vector4(788.55, -2974.52, 5.47, 272.95),
vector4(1295.3, -3068.97, 5.34, 276.74),
vector4(-656.05, -2452.2, 13.38, 265.81),
vector4(472.11, -1874.25, 26.28, 292.18),
vector4(-333.59, -1565.19, 24.67, 247.39),
vector4(179.91, -1653.36, 29.24, 353.8),
vector4(1068.43, -2379.73, 30.19, 262.39),
vector4(-1013.18, -2600.55, 38.54, 354.12),
vector4(-319.66, -1006.87, 29.82, 312.17),
vector4(311.27, -1244.7, 29.21, 273.72),
vector4(474.23, -582.13, 27.94, 350.03),
vector4(2010.8, 3033.4, 46.5, 30.0),
vector4(1720.49, 3689.53, 34.03, 20.91),
vector4(115.5, 6610.1, 31.8, 45.5)
}
}
-- [[ TESLİMAT VE ARAÇ SEÇENEKLERİ ]]
-- Şu an aktif: Sadece Parçalama (Chop)
-- DropOff ve VINScratch ileride eklenecek
Config.DeliveryOptions = {
Chop = { enabled = true, label = "Parçala" },
}
-- [[ SİNYAL KESİCİ (JAMMER) ]]
Config.JammerSystem = {
enabled = true,
affectedTiers = {"A", "S"},
item = "jammer",
signalInterval = 12000,
}
-- [[ ARAÇ TARAYICI (VEHICLE SCANNER) ]]
-- Oyuncu bu item'ı envanterinde taşıdığı sürece,
-- aktif görevi varsa araca yaklaştıkça bip sesi ve HUD gösterilir.
-- Scanner yoksa: Oyuncu sadece harita üzerindeki bölgeyi görür, araç tam konumu gösterilmez.
Config.ScannerSystem = {
enabled = true,
item = "chop_scanner", -- Envanterde olması gereken eşya adı
maxRange = 350.0, -- Tarayıcının çalışmaya başladığı maksimum mesafe
-- Bip aralıkları (milisaniye) - mesafeye göre
beepIntervals = {
veryClose = { dist = 20, interval = 250 }, -- 20m altı → çok hızlı
close = { dist = 50, interval = 600 }, -- 50m altı → hızlı
medium = { dist = 100, interval = 1200 }, -- 100m altı → orta
far = { dist = 200, interval = 2200 }, -- 200m altı → yavaş
veryFar = { dist = 350, interval = 3500 }, -- 350m altı → çok yavaş
},
hudPosition = { x = 0.75, y = 0.92 }, -- Ekrandaki HUD pozisyonu (0.0-1.0)
}
-- [[ PARÇALAMA LOKASYONLARI ]]
Config.Locations = {
{ id = "main_chop", name = "Antrepo Parçalama", coords = vector3(-557.64, -1695.82, 19.16), heading = 27.77, blip = { enabled = true, sprite = 380, color = 1, scale = 0.8, label = "Parçalama Noktası" }, requiredLevel = 1, isHidden = false, multiplierBonus = 1.0 },
{ id = "desert_spot", name = "Çöl Noktası", coords = vector3(2352.17, 3133.29, 48.21), heading = 90.0, blip = { enabled = false }, requiredLevel = 10, isHidden = true, multiplierBonus = 1.5 },
{ id = "cypress_flats", name = "Endüstri Bölgesi", coords = vector3(1013.9, -2526.9, 28.3), heading = 270.0, blip = { enabled = false }, requiredLevel = 2, isHidden = true, multiplierBonus = 1.1 },
{ id = "murrieta_oil", name = "Petrol Tesisi", coords = vector3(1202.9, -3118.8, 5.5), heading = 85.0, blip = { enabled = false }, requiredLevel = 3, isHidden = true, multiplierBonus = 1.2 },
{ id = "paleto_yard", name = "Paleto Mezarlığı", coords = vector3(44.3, 6668.6, 31.7), heading = 45.0, blip = { enabled = false }, requiredLevel = 8, isHidden = true, multiplierBonus = 1.4 }
}
-- [[ PARÇA LİSTESİ VE ÖDÜLLER ]]
Config.Parts = {
{id = 0, label = "Sol Ön Kapı", bone = "door_dside_f", type = "door", reward = "aracparcalari", amount = {1, 2}},
{id = 1, label = "Sağ Ön Kapı", bone = "door_pside_f", type = "door", reward = "aracparcalari", amount = {1, 2}},
{id = 2, label = "Sol Arka Kapı", bone = "door_dside_r", type = "door", reward = "aracparcalari", amount = {1, 2}},
{id = 3, label = "Sağ Arka Kapı", bone = "door_pside_r", type = "door", reward = "aracparcalari", amount = {1, 2}},
{id = 5, label = "Bagaj", bone = "trunk", type = "door", reward = "aracparcalari", amount = {1, 2}},
{id = 4, label = "Kaput", bone = "bonnet", type = "door", reward = "kaput", amount = {1, 1}},
{id = 6, label = "Ön Tampon", bone = "bumper_f", type = "bumper", reward = "ontampon", amount = {1, 1}},
{id = 7, label = "Arka Tampon", bone = "bumper_r", type = "bumper", reward = "arkatampon", amount = {1, 1}},
{id = 0, label = "Sol Ön Jant", bone = "wheel_lf", type = "wheel", reward = "jant", amount = {1, 1}},
{id = 1, label = "Sağ Ön Jant", bone = "wheel_rf", type = "wheel", reward = "jant", amount = {1, 1}},
{id = 2, label = "Sol Arka Jant", bone = "wheel_lr", type = "wheel", reward = "jant", amount = {1, 1}},
{id = 3, label = "Sağ Arka Jant", bone = "wheel_rr", type = "wheel", reward = "jant", amount = {1, 1}},
{id = 99, label = "Araç Plakası", bone = "plate", type = "plate", reward = "plaka", amount = {1, 1}}
}
-- [[ ÇARPANLAR VE BONUSLAR ]]
Config.ClassMultipliers = {
[0] = {multiplier = 1.0, points = 50, label = "Compact", alertChance = 10},
[1] = {multiplier = 1.2, points = 80, label = "Sedan", alertChance = 15},
[2] = {multiplier = 1.5, points = 120, label = "SUV", alertChance = 25},
[3] = {multiplier = 1.3, points = 100, label = "Coupe", alertChance = 20},
[4] = {multiplier = 1.4, points = 110, label = "Muscle", alertChance = 30},
[5] = {multiplier = 1.6, points = 150, label = "Sports Classic", alertChance = 50},
[6] = {multiplier = 1.8, points = 200, label = "Sports", alertChance = 70},
[7] = {multiplier = 2.0, points = 350, label = "Super", alertChance = 100},
[9] = {multiplier = 1.1, points = 70, label = "Off-road", alertChance = 15},
}
Config.ConditionBonuses = {
pristine = 1.3, good = 1.1, normal = 1.0, damaged = 0.8, wreck = 0.6
}
Config.EnginePart = {
label = "Motor & Teknik", reward = "aku", amount = {1, 1}, time = 10000,
extraRewards = {
{item = "radyo", chance = 50, amount = {1, 1}},
{item = "koltuk", chance = 30, amount = {1, 2}}
}
}
Config.FinalReward = {
['D'] = {
Chop = { giveMoney = true, moneyAccount = "cash", moneyAmount = {300, 600}, giveCoins = true, coinAmount = {20, 40} },
DropOff = { giveMoney = true, moneyAccount = "cash", moneyAmount = {800, 1200}, giveCoins = true, coinAmount = {40, 80} }
},
['C'] = {
Chop = { giveMoney = true, moneyAccount = "cash", moneyAmount = {500, 1000}, giveCoins = true, coinAmount = {40, 70} },
DropOff = { giveMoney = true, moneyAccount = "cash", moneyAmount = {1500, 2500}, giveCoins = true, coinAmount = {80, 150} }
},
['B'] = {
Chop = { giveMoney = true, moneyAccount = "cash", moneyAmount = {800, 1500}, giveCoins = true, coinAmount = {60, 100} },
DropOff = { giveMoney = true, moneyAccount = "cash", moneyAmount = {2500, 4500}, giveCoins = true, coinAmount = {120, 250} }
},
['A'] = {
Chop = { giveMoney = true, moneyAccount = "cash", moneyAmount = {2000, 4000}, giveCoins = true, coinAmount = {0, 0} }, -- A Sınıfı sadece para örneği
DropOff = { giveMoney = true, moneyAccount = "cash", moneyAmount = {5000, 8000}, giveCoins = true, coinAmount = {0, 0} }
},
['S'] = {
Chop = { giveMoney = true, moneyAccount = "cash", moneyAmount = {5000, 10000}, giveCoins = true, coinAmount = {200, 500} }, -- S Sınıfı Efsanevi Ödül
DropOff = { giveMoney = true, moneyAccount = "cash", moneyAmount = {15000, 25000}, giveCoins = true, coinAmount = {500, 1000} }
}
}
-- [[ KARANLIK MARKET ]]
Config.Market = {
enabled = true,
currency = "chop_coins",
label = "Karanlık Market",
items = {
{item = "screwdriverset", label = "Gelişmiş Tornavida Seti", coinPrice = 300, price = 1500, description = "Daha hızlı parça sökmenizi sağlar."},
{item = "lockpick", label = "Maymuncuk", coinPrice = 50, price = 200, description = "Araçların kapısını açmak için."},
{item = "advancedlockpick", label = "Gelişmiş Maymuncuk", coinPrice = 150, price = 800, description = "Daha dayanıklı ve hızlı."},
{item = "radio", label = "Telsiz", coinPrice = 200, price = 1200, description = "Ekibinle iletişim kur."},
{item = "jammer", label = "Sinyal Kesici (Jammer)", coinPrice = 400, price = 2000, description = "Sinyal Takipçilerini engeller."},
{item = "aracparcalari", label = "Hurda Paketi", coinPrice = 10, price = 50, description = "Çeşitli metal parçaları."},
{item = "fake_plate", label = "Sahte Plaka", coinPrice = 500, price = 2500, description = "VIN kazıma için gereklidir."},
{item = "chop_scanner", label = "Araç Tarayıcı (Scanner)", coinPrice = 250, price = 1200, description = "Hedef araca yaklaştıkça sesli uyarı verir. Araç tespitini kolaylaştırır."},
}
}
-- [[ XP VE SEVİYE SİSTEMİ ]]
Config.XPSystem = {
enabled = true,
baseXPPerPart = 10,
baseXPPerChop = 50,
levelMultiplier = 1.5,
baseRequiredXP = 100,
maxLevel = 50,
skillPointsPerLevel = 1,
}
Config.LevelBonuses = {
[5] = {type = "multiplier", value = 0.05, label = "Kazanç +5%"},
[10] = {type = "multiplier", value = 0.10, label = "Kazanç +10%"},
[15] = {type = "speed", value = 0.10, label = "Hız +10%"},
[20] = {type = "multiplier", value = 0.15, label = "Kazanç +15%"},
[25] = {type = "skillpoint", value = 2, label = "+2 Beceri Puanı"},
[30] = {type = "multiplier", value = 0.20, label = "Kazanç +20%"},
[35] = {type = "speed", value = 0.20, label = "Hız +20%"},
[40] = {type = "multiplier", value = 0.25, label = "Kazanç +25%"},
[45] = {type = "skillpoint", value = 3, label = "+3 Beceri Puanı"},
[50] = {type = "multiplier", value = 0.50, label = "Kazanç +50% (MAX)"},
}
-- [[ BECERİ AĞACI ]]
Config.Skills = {
{ id = "speed_1", name = "Hızlı Eller", icon = "bolt", description = "Parça sökme hızını %10 artırır", maxLevel = 3, cost = 1, effect = {type = "speed", value = 0.10} },
{ id = "speed_2", name = "Usta Tamirci", icon = "wrench", description = "Parça sökme hızını %20 artırır", maxLevel = 3, cost = 2, requires = "speed_1", effect = {type = "speed", value = 0.20} },
{ id = "speed_3", name = "Yıldırım Hızı", icon = "bolt-lightning", description = "Parça sökme hızını %30 artırır", maxLevel = 1, cost = 3, requires = "speed_2", effect = {type = "speed", value = 0.30} },
{ id = "money_1", name = "Pazarlık Ustası", icon = "dollar", description = "Kazancı %15 artırır", maxLevel = 3, cost = 1, effect = {type = "money", value = 0.15} },
{ id = "money_2", name = "Değerli Göz", icon = "gem", description = "Kazancı %25 artırır", maxLevel = 3, cost = 2, requires = "money_1", effect = {type = "money", value = 0.25} },
{ id = "money_3", name = "Altın Dokunuş", icon = "crown", description = "Kazancı %40 artırır", maxLevel = 1, cost = 3, requires = "money_2", effect = {type = "money", value = 0.40} },
{ id = "xp_1", name = "Hızlı Öğrenen", icon = "book", description = "XP kazancını %20 artırır", maxLevel = 3, cost = 1, effect = {type = "xp", value = 0.20} },
{ id = "xp_2", name = "Deneyim Avcısı", icon = "target", description = "XP kazancını %35 artırır", maxLevel = 2, cost = 2, requires = "xp_1", effect = {type = "xp", value = 0.35} },
{ id = "lucky", name = "Şanslı Bulucu", icon = "clover", description = "Ekstra item bulma şansını %30 artırır", maxLevel = 3, cost = 2, effect = {type = "luck", value = 0.30} },
{ id = "group_bonus", name = "Takım Oyuncusu", icon = "users", description = "Grup halinde %20 bonus kazanç", maxLevel = 2, cost = 2, effect = {type = "group", value = 0.20} },
{ id = "stealth", name = "Gölge", icon = "stealth", description = "Polis bildirimi şansını %50 azaltır", maxLevel = 3, cost = 3, effect = {type = "stealth", value = 0.50} }
}
-- [[ BAŞARIMLAR ]]
Config.Achievements = {
{ id = "first_chop", name = "İlk Parçalama", icon = "🎉", description = "İlk aracını parçala", requirement = {type = "total_chops", value = 1}, reward = {type = "xp", value = 50} },
{ id = "millionaire", name = "Milyoner", icon = "💰", description = "$1,000,000 kazan", requirement = {type = "total_money", value = 1000000}, reward = {type = "skillpoint", value = 10} },
{ id = "level_50", name = "Efsane", icon = "👑", description = "50. seviyeye ulaş", requirement = {type = "level", value = 50}, reward = {type = "skillpoint", value = 10} }
}
-- [[ UI AYARLARI ]]
Config.UI = {
enabled = true,
showOnStart = false,
updateInterval = 1000,
leaderboardSize = 10,
notificationDuration = 5000
}
-- [[ YARDIMCI FONSİYONLAR ]]
-- Gerçek implementasyon shared/notify.lua içindeki ExitNotify'a
-- yönlendirir. shared/notify.lua yüklenince Config.Notify override edilir.
-- Bu tanım sadece dosya yükleme sırası nedeniyle bir fallback'tir.
Config.Notify = function(msg, ntype, duration)
-- notify.lua yüklendikten sonra bu fonksiyon override edilir.
-- Fallback: sadece dahili toast
if ExitNotify then
ExitNotify(msg, ntype, duration)
else
TriggerEvent('exit-fragmentation:client:showToast', msg, ntype)
end
end
Config.SendDispatch = function(coords, vehicle)
if exports['ps-dispatch'] then exports['ps-dispatch']:VehicleTheft(vehicle)
else TriggerServerEvent('police:server:policeAlert', 'Süpheli Araç Parçalama') end
end