# Red Valley — Dev Teams API Reference (2nd Brain) > Echipe: **17 Movement**, **Wasabi Scripts**, **Quasar Store**, **KuzQuality**, **rCore**, **T1GER** > Documentație oficială + scan cod sursă. Ultima actualizare: 2026-03-29 --- ## 🟠 17 MOVEMENT (17mov) **Resurse pe server:** `17mov_CharacterSystem`, `17mov-plugin-char-creator`, `17mov_Hud`, `17mov_JobCenter`, `17mov_Electrician`, `17mov_BuilderJob`, `17mov_Deliverer`, `17mov_GarbageCollector`, `17mov_Lumberjack`, `17mov_Miner`, `17mov_OilRig`, `17mov_Postman`, `17mov_TreasureHunter`, `17mov_WindowCleaning` **Docs:** https://docs.17movement.net/ ### 17mov_CharacterSystem — Exports & Events > **IMPORTANT**: Acest script bridge-uiește `qb-clothing`, `illenium-appearance`, `skinchanger`, `esx_skin`. > Pentru exports illenium-appearance, folosește `exports["illenium-appearance"]` NU `exports["17mov_CharacterSystem"]`! | Event/Export | Tip | Descriere | |---|---|---| | `TriggerEvent("17mov_CharacterSystem:SaveCurrentSkin")` | Client Event | Salvează skin-ul curent al playerului în DB | | `TriggerEvent("17mov_CharacterSystem:OpenOutfitsMenu")` | Client Event | Deschide meniul de outfits | | `TriggerEvent("qb-clothing:client:openOutfitMenu")` | Client Event (bridged) | Alias → deschide outfit menu | | `TriggerEvent("qb-clothing:client:openMenu")` | Client Event (bridged) | Alias → deschide clothing full menu | | `TriggerEvent("qb-clothing:client:openMenuCommand")` | Client Event (bridged) | Alias → clothing menu command | | `TriggerEvent("qb-clothing:client:loadOutfit", data)` | Client Event (bridged) | Aplică un outfit (ex: parașută) | | `TriggerServerEvent("qb-clothing:saveSkin", model, skin)` | Server Event (bridged) | Salvează skin pe server | | `exports['qs-inventory']:setInClothing(bool)` | Export apelat | Blochează/deblochează inventory la clothing menu | | `exports["illenium-appearance"]:setPedComponents()` | Export apelat | Setează componente ped (bridge) | **Config critice:** - `configs/Config.lua` → `Config.Outfits` (job outfits per gender/grade) - `configs/Skin.lua` → Presets, BlacklistedInputValues - `configs/Bridge.lua` → Selecția de clothing/housing bridges **Cine apelează CharacterSystem:** | Resursă | Ce apelează | Cum | |---|---|---| | t1ger_mechanic | `Config.Outfits['mechanic']` | Citește config pentru duty outfit | | qs-housing | `qb-clothing:client:openOutfitMenu` | Wardrobe din casă | | qs-advancedgarages | `qb-clothing:client:openOutfitMenu` | Wardrobe din garaj | | qb-management | `qb-clothing:client:openOutfitMenu` | Boss/gang outfit menu | | wasabi_ambulance | `qb-clothing:client:openMenu` | Clothing full menu | | qb-smallresources | `qb-clothing:client:loadOutfit` | Parașută outfit load | | 17mov-plugin-char-creator | `17mov_CharacterSystem:SaveCurrentSkin` | Ascultă save | --- ### 17mov_Hud — Exports & Events **Docs:** https://docs.17movement.net/advanced-hud/usage-in-other-resources | Export/Event | Tip | Params | Descriere | |---|---|---|---| | `exports["17mov_Hud"]:ShowNotification(text, type, title, time)` | Client Export | text:string, type:"info"/"error"/"success", title:string, time:ms | Arată notificare | | `TriggerEvent("17mov_Hud:ShowNotification", text, type, title, time)` | Client Event | same | Alias event | | `TriggerClientEvent("17mov_Hud:ShowNotification", src, text)` | Server→Client | same | Din server | | `exports["17mov_Hud"]:ToggleDisplay(state)` | Client Export | state:boolean | Ascunde/arată HUD | | `TriggerEvent("17mov_Hud:ToggleDisplay", state)` | Client Event | same | Alias | | `exports["17mov_Hud"]:HideRadar(state)` | Client Export | state:boolean | Forțează radar hidden | | `exports["17mov_Hud"]:ShowHelpNotification(text)` | Client Export | text:string | Help notification (fără loop!) | | `exports["17mov_Hud"]:HideHelpNotification()` | Client Export | - | Ascunde help notif | | `exports["17mov_Hud"]:ShowHelpNotificationWhile(text)` | Client Export | text:string | Help notif in while loop (auto-hide) | | `exports["17mov_Hud"]:StartProgress(action, onStart, onTick, onFinish)` | Client Export | action:object | Progress bar | | `exports["17mov_Hud"]:StopProgress()` | Client Export | - | Oprește progress bar | | `exports["17mov_Hud"]:OpenSettings()` | Client Export | - | Deschide setări HUD | | `exports["17mov_Hud"]:GetTheme(cb)` | Client Export | cb:function(theme) | Returnează culorile HUD | | `exports["17mov_Hud"]:GetSettings(cb)` | Client Export | cb:function(settings) | Returnează setările HUD | | `RegisterNetEvent("17mov_Hud:UpdateTheme", function(theme))` | Client Event | theme:object | Listener: când se schimbă tema | | `RegisterNetEvent("17mov_Hud:UpdateSettings", function(settings))` | Client Event | settings:object | Listener: când se schimbă setările | **HUD Stress/Needs Events (nu sunt 17mov-specifice, dar HUD le ascultă):** | Event | Direcție | Cine emite | |---|---|---| | `hud:server:GainStress` | Client→Server | 17mov_Hud, qs-inventory | | `hud:server:RelieveStress` | Client→Server | wasabi_ambulance, qs-inventory, qb-smallresources | | `hud:client:UpdateNeeds` | Server→Client | qb-core, qs-inventory, wasabi_ambulance, luxu_admin, qb-smallresources | | `hud:client:UpdateStress` | Server→Client | 17mov_Hud (server), qb-smallresources | **Cine apelează HUD exports:** | Resursă | Export/Event | Scop | |---|---|---| | qb-core | `exports["17mov_Hud"]:ShowNotification(...)` | Toate notificările QBCore | | ox_lib | `exports["17mov_Hud"]:ShowNotification(...)` | ox_lib notify bridge | | 0r_idcard | `exports["17mov_Hud"]:ShowNotification(...)` | Notificări ID | | bit-driverschool | `exports["17mov_Hud"]:ShowNotification(...)` | Notificări școală auto | | qb-smallresources | `TriggerClientEvent("17mov_Hud:ShowNotification")` | Stress relief notif | --- ## 🟢 WASABI SCRIPTS **Resurse pe server:** `wasabi_bridge`, `wasabi_police`, `wasabi_ambulance` (v1) **Versiune curentă:** V1 (upgrade la V2 planificat) **Docs:** https://docs.wasabiscripts.com/wasabi-scripts ### wasabi_bridge — Framework Bridge - **Scop**: Librărie Lua cu UI components — bridge pentru toate scripturile Wasabi - **Folosit de**: wasabi_police, wasabi_ambulance (v1) - **Funcționalitate**: Notifications, text UI, targets, frameworks abstraction - **Config**: notifications, target system, framework selection - **Dependințe**: qb-core (sau ESX) **Bridge Events:** | Event | Tip | Descriere | |---|---|---| | `wasabi_bridge:onPlayerDeath` | Client | Trigger la moartea playerului | | `wasabi_bridge:onPlayerSpawn` | Client | Trigger la spawn | | `QBCore:Client:OnPlayerLoaded` | Client (listener) | Detectează player loaded | | `QBCore:Client:OnJobUpdate` | Client (listener) | Detectează schimbare job | ### wasabi_police — Job Poliție (V1) ✅ INSTALAT - **Versiune**: 1.10.8 - **Dependențe**: wasabi_bridge, oxmysql, qb-core - **Integrare cu**: qs-vehiclekeys (via bridge), qs-inventory, codem-mdt, codem-dispatch, rcore_prison - **Job name**: `police` (definit în `qb-core/shared/jobs.lua`) - **Config Jail**: `Config.Jail.jail = 'rcore'` — integrat cu rcore_prison - **Provides**: `esx_policejob`, `qb-policejob` **Exports Client:** | Export | Return | Descriere | |---|---|---| | `exports['wasabi_police']:IsHandcuffed()` | `false`/`'soft'`/`'hard'` | Status cătușe player | | `exports['wasabi_police']:openOutfits(station)` | void | Meniu uniformă | | `exports['wasabi_police']:escortPlayer(targetId)` | void | Escortează player | | `exports['wasabi_police']:searchPlayer(player)` | void | Percheziție inventar | **Exports Server:** | Export | Return | Descriere | |---|---|---| | `exports['wasabi_police']:getPoliceOnline()` | number | Polițiști on-duty | | `exports['wasabi_police']:IsPlayerInJail(target)` | boolean | E în închisoare? | **Events (triggerabile din alte resurse cu Config.AllowedResources):** ```lua wasabi_police:handcuffPlayer -- încătușare wasabi_police:escortPlayer -- escortare wasabi_police:inVehiclePlayer -- pune în vehicul wasabi_police:outVehiclePlayer -- scoate din vehicul ``` **State Bags:** | State Bag | Valori | Descriere | |---|---|---| | `Player(id).state.isHandcuffed` | `false`/`'soft'`/`'hard'` | Status cătușe | | `Player(id).state.isEscorted` | `boolean` | Status escortare | **Items necesare (adăugate în qs-inventory + qb-core):** - `handcuffs`, `bobby_pin`, `tracking_bracelet` ### wasabi_ambulance — Job Ambulanță (V1) ✅ INSTALAT - **Versiune**: 1.14.2 - **Dependențe**: wasabi_bridge, oxmysql, ox_lib, qb-core - **Integrare cu**: qs-inventory, 17mov_CharacterSystem, 17mov_Hud, codem-dispatch - **Job name**: `ambulance` (definit în `qb-core/shared/jobs.lua`) - **Provides**: `esx_ambulancejob`, `qb-ambulancejob` **Exports Client (13):** | Export | Params | Descriere | |---|---|---| | `isPlayerDead(serverId?)` | opt | `true/false` death status | | `diagnosePlayer(target?)` | `true`/number/nil | Diagnose player | | `treatPatient(injury)` | `'shot'`/`'stabbed'`/`'beat'`/`'burned'` | Tratează | | `reviveTarget()` | — | CPR + revive (necesită defib) | | `healTarget()` | — | Self-heal sau heal nearby | | `useSedative()` | — | Sedează player | | `placeInVehicle()` | — | Pune player în vehicul | | `loadStretcher()` | — | Pune pe stretcher | | `openOutfits(hospital)` | string | Meniu uniformă | | `clearPlayerInjury(clearVitals)` | bool | Șterge injuries | | `disableKnockoutLoop(disabled)` | bool | Disable knockout | | `manuallyKnockout(enabled)` | bool | Force knockout | **Exports Server (3):** | Export | Params | Descriere | |---|---|---| | `RevivePlayer(serverId)` | number | Revive player | | `disableKnockoutLoop(source, disabled)` | source, bool | Disable knockout server-side | | `manuallyKnockout(source, enabled)` | source, bool | Force knockout server-side | **State Bags:** | State Bag | Valori | Descriere | |---|---|---| | `Player(id).state.dead` | `false`/`nil`/`'dead'`/`'laststand'` | Status death | - **Cross-resource calls**: - `TriggerEvent('qb-clothing:client:openMenu')` → 17mov_CharacterSystem - `TriggerServerEvent('hud:server:RelieveStress', 100)` → 17mov_Hud - `TriggerClientEvent('hud:client:UpdateNeeds', src, 100, 100)` → 17mov_Hud - `Config.policeCanTreat` → wasabi_police (polițiștii pot trata pacienți) ### Upgrade V1 → V2 Notes > V2 folosește un bridge complet diferit. Când faci upgrade: > - wasabi_bridge se actualizează automat > - Verifică custom events în `game/client/` și `game/server/` > - Testează clothing integration cu 17mov_CharacterSystem > - Testează stress/needs events cu 17mov_Hud --- ## 🔵 QUASAR STORE (qs) **Resurse pe server:** `qs-inventory`, `qs-vehiclekeys`, `qs-advancedgarages`, `qs-shops`, `qs-smartphone-pro`, `qs-housing`, `qs-weed` **Docs:** https://www.quasar-store.com/docs ### qs-inventory — Inventar **Commands:** | Command | Descriere | |---|---| | `/clearinv [id]` | Golește inventar | | `/giveitem [id] [item] [amount]` | Dă item | | `/resetinv` | Reset inventory | **Key Exports (din scan cod sursă):** | Export | Side | Descriere | |---|---|---| | `exports['qs-inventory']:GetItemByName(name)` | Client | Returnează datele item-ului | | `exports['qs-inventory']:GetItemsByName(name)` | Client | Returnează toate instanțele | | `exports['qs-inventory']:setInClothing(bool)` | Client | Lock inventory în clothing mode | | `exports['qs-inventory']:OpenInventory()` | Client | Deschide inventarul | | `exports['qs-inventory']:CloseInventory()` | Client | Închide inventarul | | `exports['qs-inventory']:HasItem(item, amount)` | Client | Verifică dacă are item | | `exports['qs-inventory']:AddItem(source, item, amount)` | Server | Adaugă item | | `exports['qs-inventory']:RemoveItem(source, item, amount)` | Server | Scoate item | | `exports['qs-inventory']:GetItemBySlot(source, slot)` | Server | Item din slot | | `exports['qs-inventory']:CreateUsableItem(name, cb)` | Server | Înregistrează item usable | | `exports['qs-inventory']:OpenInventoryById(source, type, slots, maxWeight, label, other)` | Server | Deschide stash | | `exports['qs-inventory']:RegisterStash(id, label, slots, weight)` | Server | Registrează stash | **Events emise:** | Event | Descriere | |---|---| | `inventory:client:ItemBox` | Notificare item add/remove | | `hud:client:UpdateNeeds` | Update hunger/thirst | | `hud:server:GainStress` / `RelieveStress` | Stress via items | ### qs-vehiclekeys — Chei Vehicule 🔑 **Commands:** | Command | Descriere | |---|---| | `/givekey [id]` | Dă cheie vehicul curent | **Key Exports (din scan cod sursă):** | Export | Side | Descriere | |---|---|---| | `exports['qs-vehiclekeys']:GetVehicleKeys(plate)` | Client | Verifică dacă are cheile | | `exports['qs-vehiclekeys']:GiveKeys(plate)` | Client/Server | Dă cheile pentru plate | | `exports['qs-vehiclekeys']:RemoveKeys(plate)` | Client/Server | Scoate cheile | | `exports['qs-vehiclekeys']:SetVehicleLocked(vehicle, locked)` | Client | Lock/unlock vehicul | | `exports['qs-vehiclekeys']:AreKeysJobShared(vehicle)` | Client | Verifică chei shared pt job | | `exports['qs-vehiclekeys']:IsBlacklistedVehicle(vehicle)` | Client | Verifică blacklist | **Cine apelează qs-vehiclekeys:** | Resursă | Export | Scop | |---|---|---| | 0r_idcard | `GiveKeys` | La obținere permis | | bit-driverschool | `GiveKeys` | La test auto | | ac-carcontrol | `GetVehicleKeys / SetVehicleLocked` | Control vehicul | | qs-advancedgarages | `GiveKeys / RemoveKeys` | La scos/pus mașina | | qs-smartphone-pro | `SetVehicleLocked` | Remote lock/unlock | | rcore_fuel | `GetVehicleKeys` | Verificare owner la pump | | luxu_admin | `GiveKeys` | Admin key management | | qb-target | `GetVehicleKeys` | Target interactions | | wasabi_bridge | `GiveKeys` | Bridge police/ambulance | ### qs-advancedgarages — Garaje Avansate **Key Exports:** | Export | Side | Descriere | |---|---|---| | `exports['qs-advancedgarages']:GetVehicleGarage(plate)` | Server | Returnează garajul vehiculului | **Dependințe directe:** - qs-vehiclekeys (keys la scos/pus) - qs-inventory (stash în garaj) - 17mov_CharacterSystem (wardrobe bridge) - qb-core, oxmysql ### qs-smartphone-pro — Telefon **Key Exports:** | Export | Side | Descriere | |---|---|---| | `exports['qs-smartphone-pro']:hasPhone()` | Client | Are telefon? | | `exports['qs-smartphone-pro']:isPhoneOpen()` | Client | E telefonul deschis? | | `exports['qs-smartphone-pro']:openPhone()` | Client | Deschide telefonul | | `exports['qs-smartphone-pro']:closePhone()` | Client | Închide telefonul | **Dependințe directe:** - pma-voice (call system) - qs-vehiclekeys (remote lock/unlock) - qs-inventory (item telefon) - phone-radio + xsound (radio) - screenshot-basic (camera) ### qs-shops — Magazine **Dependințe**: qb-core, qs-inventory, oxmysql **Config**: `json/shops-inventory.json` ### qs-housing — Case **Dependințe**: qb-core, qs-inventory, oxmysql **Cross-resource**: `qb-clothing:client:openOutfitMenu` → 17mov_CharacterSystem --- ## 🔍 KEYWORD LOOKUP — Quick Search ### 🔑 "key" / "keys" — Tot ce se leagă de chei: ``` SISTEM PRINCIPAL: qs-vehiclekeys ├── Exports: GiveKeys, RemoveKeys, GetVehicleKeys, SetVehicleLocked ├── Command: /givekey [id] ├── DB: player_vehicles (keys column) │ ├── CINE DĂ CHEI: │ ├── bit-driverschool → GiveKeys la test auto │ ├── 0r_idcard → GiveKeys la driving license │ ├── qs-advancedgarages → GiveKeys la scos mașina │ ├── luxu_admin → giveVehicleKeys (admin) │ ├── wasabi_bridge → GiveKeys (police/ambulance vehicles) │ └── jg-dealerships → GiveKeys implicit la cumpărare │ ├── CINE VERIFICĂ CHEI: │ ├── ac-carcontrol → GetVehicleKeys (lock/engine) │ ├── qb-target → GetVehicleKeys (target menu pe vehicul) │ ├── rcore_fuel → GetVehicleKeys (verificare owner la pump) │ └── qs-smartphone-pro → remote lock (SetVehicleLocked) │ ├── CINE SCOATE CHEI: │ ├── qs-advancedgarages → RemoveKeys la pus mașina │ └── qb-smallresources → cleanup la disconnect │ ├── ITEMS LEGATE: vehiclekey (metadata cu plate) ├── CONFIG: qs-vehiclekeys/config.lua └── HOTWIRE: dispatch → codem-dispatch / wasabi_police alert ``` ### 👕 "outfit" / "clothing" / "skin" — Tot ce se leagă de haine: ``` SISTEM PRINCIPAL: 17mov_CharacterSystem ├── Events: SaveCurrentSkin, OpenOutfitsMenu, qb-clothing:* ├── Config: Config.Outfits (job outfits), Skin.lua (presets) │ ├── CINE SCHIMBĂ OUTFITS: │ ├── t1ger_mechanic → duty outfit (mechanic) │ ├── wasabi_police → duty outfit (police) │ ├── wasabi_ambulance → clothing menu │ ├── qs-housing → wardrobe │ ├── qs-advancedgarages → wardrobe │ └── qb-management → boss/gang outfit │ ├── FLOW: Duty ON → SaveCurrentSkin → Apply Job Outfit │ Duty OFF → Restore Civil Outfit │ ├── INVENTORY LOCK: exports['qs-inventory']:setInClothing(true/false) └── PLUGIN: 17mov-plugin-char-creator (ascultă SaveCurrentSkin) ``` ### 📱 "phone" / "telefon" — Tot ce se leagă de telefon: ``` SISTEM PRINCIPAL: qs-smartphone-pro ├── Exports: hasPhone, isPhoneOpen, openPhone, closePhone ├── Item: phone (qs-inventory) │ ├── INTEGRĂRI: │ ├── pma-voice → call system (apeluri) │ ├── qs-vehiclekeys → remote lock/unlock │ ├── phone-radio → radio (xsound) │ ├── screenshot-basic → camera photos │ ├── luxu_admin → phone control │ └── qs-inventory → item management │ ├── EVENTS ASCULTATE: │ ├── QBCore:Client:OnPlayerLoaded → init phone │ └── QBCore:Client:OnJobUpdate → refresh job apps │ └── WEBHOOK: Necesită configurare (pending) ``` ### 🔔 "notify" / "notification" — Tot ce se leagă de notificări: ``` SISTEM PRINCIPAL: 17mov_Hud ├── Export: exports["17mov_Hud"]:ShowNotification(text, type, title, time) ├── Event: TriggerEvent("17mov_Hud:ShowNotification", ...) │ ├── CINE TRIMITE NOTIFICĂRI: │ ├── qb-core → client/functions.lua (TOATE notificările QBCore) │ ├── ox_lib → resource/interface/client/notify.lua (ox_lib → 17mov bridge) │ ├── 0r_idcard → config.lua (direct export) │ ├── bit-driverschool → config.lua (direct export) │ └── qb-smallresources → server/consumables.lua (server→client event) │ ├── TIPURI: "info", "error", "success" ├── DEFAULT TITLE: Config.Lang["DefaultNotification"] └── DEFAULT TIME: string.len(text) * 0.09 + 2000 ms ``` ### 📦 "inventory" / "item" / "stash" — Tot ce se leagă de inventar: ``` SISTEM PRINCIPAL: qs-inventory ├── Exports: AddItem, RemoveItem, HasItem, CreateUsableItem, RegisterStash, ... ├── Items definite în: qb-core/shared/items.lua │ ├── CINE FOLOSEȘTE STASH: │ ├── t1ger_lib → mechanic/tuning stash │ ├── qs-advancedgarages → trunk/glovebox │ ├── qs-housing → stash case │ └── qs-shops → shop inventory │ ├── CINE ADAUGĂ/SCOATE ITEMS: │ ├── qb-core → bridge AddItem/RemoveItem │ ├── luxu_admin → admin item management │ ├── qb-smallresources → consumables │ └── mBossmenu → society items │ └── HUD EVENTS: ├── hud:client:UpdateNeeds → hunger/thirst ├── hud:server:GainStress → stress └── hud:server:RelieveStress → relax ``` ### 💼 "job" / "duty" — Tot ce se leagă de joburi: ``` DEFINIȚII: qb-core/shared/jobs.lua EVENTS: QBCore:Client:OnJobUpdate, QBCore:Server:SetDuty │ ├── JOBURI ACTIVE PE SERVER: │ ├── police → wasabi_police (rv-mdt, codem-dispatch) │ ├── ambulance → wasabi_ambulance │ ├── mechanic → t1ger_mechanic (t1ger_lib, t1ger_tuningsystem) │ ├── electrician → 17mov_Electrician │ ├── bus → aty_busjob │ └── unemployed → 17mov_JobCenter │ ├── DUTY TOGGLE FLOW: │ 1. Player clicks duty point │ 2. qb-core: TriggerEvent('QBCore:Server:SetDuty', src, true/false) │ 3. 17mov_CharacterSystem: Save civilian → Apply job outfit (or restore) │ 4. Listeners: 17mov_Hud, qb-target, qs-shops, qs-smartphone-pro, etc. │ ├── SOCIETY MONEY: qb-management (boss menu, billing) ├── OUTFIT SYSTEM: 17mov_CharacterSystem/configs/Config.lua → Config.Outfits │ └── ASCULTĂ OnJobUpdate (30+ resurse): 17mov_Hud, 17mov_JobCenter, qs-shops, qs-smartphone-pro, qs-advancedgarages, qs-housing, qb-target, qb-management, wasabi_bridge, t1ger_mechanic, codem-mdt, codem-dispatch, jg-dealerships, kq_carheist, kq_dyno, rcore_fuel, rcore_casino, aty_busjob ``` --- ## 🟡 KUZQUALITY (kq) **Resurse pe server:** `kq_carheist`, `kq_dyno`, `kq_wheeldamage` **Docs:** https://docs.kuzquality.com/ **Update System:** KQ Link (Git-based auto-update + licensing) ### kq_carheist — Car Heist Minigame - **Descriere**: Script de furt vehicule cu misiuni, NPC, liste de mașini, dispatch alerts - **Tip**: Standalone cu bridge QBCore - **Dependințe directe**: qb-core (framework), oxmysql (DB) - **Cross-resource**: - `QBCore:Client:OnPlayerLoaded` → init player data - `QBCore:Client:OnJobUpdate` → verificare job blacklist - Dispatch event → `codem-dispatch` (policeAlert la furt) - `qs-vehiclekeys` → hotwire implicit - **Config**: `config.lua` — vehicle lists, spawn points, rewards, cooldowns - **Items**: Necesită items definite în `qb-core/shared/items.lua` ### kq_dyno — Car Dyno Bench - **Descriere**: Dyno bench testing — măsoară HP, torque, viteza vehiculelor - **Tip**: Mostly standalone (vehicle physics native) - **Dependințe directe**: qb-core (framework) - **Cross-resource**: - `QBCore:Client:OnPlayerLoaded` → player init - `QBCore:Client:OnJobUpdate` → job check (mechanic access) - Poate fi legat de `t1ger_mechanic` → acces dyno doar pt mecanici - **Config**: `config.lua` — locații dyno, animații, restricții - **Install**: Necesită KQ Link active ### kq_wheeldamage — Realistic Wheel Damage - **Descriere**: Damage realist pe roți — burst, deformation, handling degradation - **Tip**: Fully standalone (vehicle physics override) - **Dependințe directe**: Niciuna (standalone, nu depinde de framework) - **Cross-resource**: Niciun export/event cross-resource - **Config**: `config.lua` — damage multipliers, burst thresholds, vehicle blacklist ### KQ Link — Update & License System - **Scop**: Sistem de auto-update via Git pentru toate resursele KQ - **Exports disponibile**: - `exports['kq_link']:getVersion(resource)` → versiunea curentă - `exports['kq_link']:checkUpdate(resource)` → check for updates - **Docs**: https://docs.kuzquality.com/kq-link/developer-reference **Impact KQ pe server:** ``` kq_carheist → qb-core (framework), codem-dispatch (police alert) kq_dyno → qb-core (framework), t1ger_mechanic (job check opțional) kq_wheeldamage → standalone (zero cross-resource deps) ``` --- ## 🔴 RCORE (rc) **Resurse pe server:** `rcore_fuel`, `rcore_casino`, `rcore_prison`, `rcore_doorlock` **Docs:** https://documentation.rcore.cz/ **Licensing:** CFX Auth System (Cfx.re asset escrow) ### rcore_fuel — Sistem Combustibil - **Descriere**: Fuel system complet — benzinării, jerry can, consum realistic, tipuri combustibil, fuel capacity per vehicul - **Dependințe directe**: qb-core (framework), oxmysql (DB) - **Cross-resource**: - `qs-vehiclekeys` → verificare keys la pump (owner check) - `QBCore:Client:OnPlayerLoaded` → init player data - `QBCore:Client:OnJobUpdate` → job-based fuel stations - `qs-inventory` → jerry can items **Key Exports (Client):** | Export | Return | Descriere | |---|---|---| | `exports["rcore_fuel"]:GetVehicleFuelLiters(vehicle)` | float | Fuel curent în litri | | `exports["rcore_fuel"]:GetVehicleFuelPercentage(vehicle)` | float | Fuel curent 0-100% | | `exports["rcore_fuel"]:GetMaximumFuelCapacityForVehicle(vehicle)` | float | Capacitate maximă litri | | `exports["rcore_fuel"]:GetVehicleMaxCurrentDrivingRange(vehicle)` | float | Range maxim curent | | `exports["rcore_fuel"]:GetVehicleFuelConsumptionEfficiency(vehicle)` | float | Eco-friendliness % | | `exports["rcore_fuel"]:SetVehicleFuel(vehicle, percentage)` | void | Setează fuel % | | `exports["rcore_fuel"]:AddVehicleFuelLiter(vehicle, fuel)` | void | Adaugă litri | | `exports["rcore_fuel"]:RemoveVehicleFuelLiter(vehicle, fuel)` | void | Scoate litri | | `exports["rcore_fuel"]:AddVehicleFuelPercentage(vehicle, pct)` | void | Adaugă % | | `exports["rcore_fuel"]:RemoveVehicleFuelPercentage(vehicle, pct)` | void | Scoate % | **Config**: `config.lua` — fuel stations, types (gasoline/diesel/electric), vehicle capacities, prices **Items**: `jerrycan` (qs-inventory / qb-core items) --- ### rcore_casino — Casino Complet - **Descriere**: Casino high-end — blackjack, poker, roulette, slots, lucky wheel, inside track, bar, VIP - **Dependințe directe**: qb-core (framework), oxmysql (DB) - **Cross-resource**: - `QBCore:Client:OnPlayerLoaded` → init casino data - `QBCore:Client:OnJobUpdate` → job casino (grad 1+ → deliver podium vehicle) - `qs-inventory` → casino chips items, bar items - `17mov_CharacterSystem` → clothing bridge (casino outfit opțional) **CasinoControl Exports (Server):** | Export / Function | Descriere | |---|---| | `exports["rcore_casino"]:GetCasinoControl()` | Returnează obiectul Casino Control | | `Casino.GetCasinoPlayer(playerId)` | PlayerData (nil dacă nu e în casino) | | `Casino.GetCasinoPlayers()` | Array toți jucătorii din casino | | `Casino.IsPlayerInCasino(playerId)` | boolean — e în casino? | | `Casino.IsPlayerBusy(playerId)` | boolean — joacă un joc? | | `Casino.StopPlaying(playerId)` | Forțează stop joc | | `Casino.BlockPlaying(playerId)` | Blochează accesul la jocuri | | `Casino.AllowPlaying(playerId)` | Deblochează accesul | | `Casino.KickPlayer(playerId)` | Kick din clădire | | `Casino.ToggleVIP(playerId, vip)` | Toggle VIP membership | | `Casino.ToggleCasino(enabled)` | Pornește/oprește casinoul | | `Casino.ToggleCasinoActivity(activity, enabled)` | Toggle activitate specifică | **Server Events:** | Event | Descriere | |---|---| | `AddEventHandler("PlayerJoinedCasino", function(playerId))` | Când intră în casino | | `AddEventHandler("PlayerLeftCasino", function(playerId))` | Când iese din casino | **Client Events:** | Event | Descriere | |---|---| | `TriggerEvent("Casino:GetPlayerState", function(o))` | Get local player state (chips, VIP, items) | **Activities**: `slots`, `luckywheel`, `insidetrack`, `drinkingbar`, `roulette`, `poker`, `blackjack`, `cashier`, `seating`, `cameras` **DB**: Tabele proprii (casino_players, casino_settings) **Job**: `casino` (definit în qb-core/shared/jobs.lua) --- ### rcore_prison — Sistem Închisoare V2 - **Descriere**: Închisoare all-in-one — jail, sentence, activities, prison break, solitary, community service, gym - **Tip**: Plug and Play (auto-DB, no SQL files needed) - **Dependințe directe**: qb-core (framework), oxmysql (auto-managed) - **Cross-resource**: - `qs-inventory` → prison items, consumables - `qb-target` → target interactions in prison - `ox_lib` → context menus opțional - `qb-menu` → menus opțional - `17mov_CharacterSystem` → prison clothing (illenium-appearance bridge) - `wasabi_police` → jail integration (police can jail via /jail) - `codem-dispatch` → dispatch la prison break **Commands:** | Command | Descriere | |---|---| | `/jailcp` | Manage prisoners panel | | `/jail [id] [time] [reason]` | Jail citizen | | `/unjail [id]` | Unjail citizen | | `/startcs [id] [amount]` | Community service | | `/removescs [id]` | Remove community service | | `/stopalarm` | Stop prison alarm | | `/solitary [id] [time]` | Put in solitary | | `/rsolitary [id]` | Remove from solitary | **Supported Integrations**: QBCore, qs-inventory, qb-target, ox_lib, illenium-appearance, codem-dispatch, qb-smallresources **API**: Client + Server events/exports (https://documentation.rcore.cz/paid-resources/rcore_prison/api) --- ### rcore_doorlock — Sistem Uși & Business - **Descriere**: Door lock system — uși, business management, keychain, crafting, permissions, presets - **Dependințe directe**: qb-core (framework), oxmysql (DB) - **Cross-resource**: - `qs-inventory` → keychain items, lockpick - `qb-target` → door interactions **Key Exports (Client):** | Export | Return | Descriere | |---|---|---| | `exports.rcore_doorlock:openDoorsManagement()` | void | Deschide UI management uși | | `exports.rcore_doorlock:getDoorsCreatedBy(createdBy)` | table | Uși create de admin/business | | `exports.rcore_doorlock:openCrafting(businessName)` | void | Crafting pt business | | `exports.rcore_doorlock:openBossActions(businessName)` | void | Boss actions business | | `exports.rcore_doorlock:getBusinessGrade()` | grade, name | Grade jucător în business | | `exports.rcore_doorlock:hasPlayerBusinessPermision(perm)` | boolean | Check permisiune | | `exports.rcore_doorlock:changeDoorStateLocalNotPersist(id, state)` | boolean | Lock/unlock local | **Key Exports (Server):** | Export | Return | Descriere | |---|---|---| | `exports.rcore_doorlock:changeDoorState(doorId, state)` | boolean | Lock/unlock persistent (0=unlock, 1=lock) | | `exports.rcore_doorlock:addDoor(door, client)` | boolean | Adaugă ușă în DB | | `exports.rcore_doorlock:getPlayerBusiness(playerId)` | name, biz, job | Business-ul jucătorului | | `exports.rcore_doorlock:getSqlDoors()` | table | Toate ușile din DB | | `exports.rcore_doorlock:getLoadedDoors()` | table | Toate ușile încărcate | **Shared Exports:** | Export | Return | Descriere | |---|---|---| | `exports.rcore_doorlock:getBusinesses()` | table | Toate business-urile din config | | `exports.rcore_doorlock:getBridgeInfo()` | table | Info bridge framework | | `exports.rcore_doorlock:translate(key, ...)` | string | Traducere locale | **Config**: `config.lua`, `config.business.lua` — doors, permissions, businesses **Impact rCore pe server:** ``` rcore_fuel → qb-core, qs-vehiclekeys (verify keys), qs-inventory (jerry can) rcore_casino → qb-core, qs-inventory (chips/items), oxmysql, casino job rcore_prison → qb-core, qs-inventory, qb-target, 17mov_CharacterSystem (clothing), wasabi_police (jail), codem-dispatch (prison break) rcore_doorlock → qb-core, qs-inventory (keychain), qb-target, oxmysql ``` --- ## 📚 Docs Reference Links | Echipă | Resursă | Docs URL | |---|---|---| | 17mov | CharacterSystem Exports | https://docs.17movement.net/character-system/exports-events | | 17mov | HUD Usage in Resources | https://docs.17movement.net/advanced-hud/usage-in-other-resources | | 17mov | HUD Custom Indicators | https://docs.17movement.net/advanced-hud/custom-indicators | | 17mov | Multiplayer Jobs Structure | https://docs.17movement.net/multiplayer-jobs/understanding-our-structure | | Wasabi | wasabi_bridge | https://docs.wasabiscripts.com/wasabi-scripts/dependency/wasabi_bridge | | Wasabi | wasabi_police | https://docs.wasabiscripts.com/wasabi-scripts/advanced-series/wasabi_police | | Wasabi | wasabi_ambulance v1 | https://docs.wasabiscripts.com/wasabi-scripts/advanced-series/wasabi_ambulance-v1 | | Wasabi | wasabi_ambulance v2 | https://docs.wasabiscripts.com/wasabi-scripts/advanced-series/wasabi_ambulance_v2 | | Quasar | qs-inventory Exports | https://www.quasar-store.com/docs/inventory/commands-and-exports | | Quasar | qs-vehiclekeys Exports | https://www.quasar-store.com/docs/vehiclekeys/commands-and-exports | | Quasar | qs-advancedgarages | https://www.quasar-store.com/docs/advanced-garages/commands-and-exports | | Quasar | qs-smartphone-pro | https://www.quasar-store.com/docs/smartphone-pro/commands-and-exports | | Quasar | qs-shops | https://www.quasar-store.com/docs/shops-creator/commands-and-exports | | Quasar | qs-housing | https://www.quasar-store.com/docs/housing-creator/commands-and-exports | | KuzQuality | Car Heist | https://docs.kuzquality.com/resources/premium-resources/car-heist | | KuzQuality | Car Dyno | https://docs.kuzquality.com/resources/premium-resources/car-dyno | | KuzQuality | Wheel Damage | https://docs.kuzquality.com/resources/premium-resources/realistic-wheel-damage | | KuzQuality | KQ Link Dev Ref | https://docs.kuzquality.com/kq-link/developer-reference | | rCore | rcore_fuel | https://documentation.rcore.cz/paid-resources/rcore_fuel | | rCore | rcore_fuel API | https://documentation.rcore.cz/paid-resources/rcore_fuel/integrations/api | | rCore | rcore_casino | https://documentation.rcore.cz/paid-resources/rcore_casino | | rCore | rcore_casino Exports | https://documentation.rcore.cz/paid-resources/rcore_casino/casinocontrol-exports | | rCore | rcore_prison | https://documentation.rcore.cz/paid-resources/rcore_prison | | rCore | rcore_prison API | https://documentation.rcore.cz/paid-resources/rcore_prison/api | | rCore | rcore_doorlock | https://documentation.rcore.cz/paid-resources/rcore_doorlock | | rCore | rcore_doorlock API | https://documentation.rcore.cz/paid-resources/rcore_doorlock/api | | T1GER | Overview | https://docs.t1ger.net/ | | T1GER | t1ger_mechanic | https://docs.t1ger.net/resources/t1ger-mechanic | | T1GER | t1ger_mechanic Exports | https://docs.t1ger.net/resources/t1ger-mechanic/exports | | T1GER | t1ger_library | https://docs.t1ger.net/resources/t1ger-library | | T1GER | t1ger_tuning-system | https://docs.t1ger.net/resources/t1ger-tuning-system | | T1GER | t1ger_tuning API | https://docs.t1ger.net/resources/t1ger-tuning-system/api | --- ## 🟢 T1GER (t1ger) **Resurse pe server:** `t1ger_mechanic`, `t1ger_tuningsystem`, `t1ger_lib`, `t1ger_carlift`, `t1ger_mechanicprops` **Docs:** https://docs.t1ger.net/ ### t1ger_lib (T1GER Library) — Core dependency > Dependință obligatorie pt toate resursele T1GER. Bridge pentru framework, inventory, target, notifications, vehicle DB. **Config critice (t1ger_lib/config.lua):** - `Config.Framework` — `'qb-core'` / `'es_extended'` / `'qbox'` - `Config.Inventory` — `'qs-inventory'` / `'ox_inventory'` / `'qb-inventory'` - `Config.TargetSystem` — `'qb-target'` / `'ox_target'` - `Config.UseFrameworkNotification` — `true` = QB/ESX notif, `false` = ox_lib | Export | Tip | Descriere | |---|---|---| | `exports['t1ger_lib']:CreateVehicleMeta(plate, src)` | Server Export | Creează metadata vehicul + sync mecanic | | `GetAllVehicles(citizenid)` | Server Function | Returnează lista de vehicule owned din DB | | `UpdateOwnedVehicle(src, stored, garage, props)` | Server Function | Update stare vehicul (spawn/store) | | `ShowNotification(data)` | Client Function | Notificare bridge ({title, message, type}) | **DB tables folosite:** `owned_vehicles` / `player_vehicles` **Coloane critice:** `plate`, `vehicle`/`mods`, `stored`/`state`, `garage`/`parking`, `fuel`, `engine`, `body` ### t1ger_mechanic — Exports & Features > Cel mai imersiv script de mecanic pentru FiveM. Shop management dinamic, mileage tracking 1:1, componente realiste. **Features principale:** - Dynamic Shop Creation (in-game, no restart) - Ownable mechanic shops cu duty, boss, garage, storage, crafting markers - Realistic Component Structure (Service Parts + Core Parts) - 1:1 Real-world Mileage Tracking - Core Part Malfunctions (4 health states → engine disable) - Service History per vehicle - Body Repair System cu diagnostic tool - Repair Kits (basic/advanced) - Car Lifts & Jacks (custom props) - Repair Stations (public pay-per-use) - NPC Missions (tow, roadside, scrap) - Flatbed Towing (attach/detach) - Billing System (itemized invoices) - Crafting Workbenches + Supplier System | Export | Tip | Descriere | |---|---|---| | `exports['t1ger_mechanic']:TrimPlate(plate)` | Server | Formatează plate string | | `exports['t1ger_mechanic']:IsPlayerEmployee(src, shopId)` | Server | Check dacă player e angajat la shop | | `exports['t1ger_mechanic']:SaveVehicleData(plate, data)` | Server | Salvează date mecanice în DB | | `exports['t1ger_mechanic']:AddServiceHistory(plate, shopId, mechanicId, serviceData)` | Server | Adaugă istoric service | **Dependențe:** `qb-core`, `oxmysql`, `t1ger_lib`, `qb-target`, `qs-inventory` **Cross-resource impact:** - `17mov_CharacterSystem` → Config.Outfits['mechanic'] (duty outfit) - `qs-inventory` → items mecanice, repair kits, crafting materials - `qb-target` → interact cu vehicule, markers shop - `qb-management` → society billing via t1ger_lib ### t1ger_tuningsystem — Features & API > Tuning system complet — visual mods, engine swaps, dyno tuning, nitrous, mod orders. **Features principale:** - Admin Management Menu (create/manage tuner shops in-game) - Tuner Shops cu markers: Duty, Boss, Garage, Storage, Workbench, Laptop, Customs, Tuning Bay - Vehicle Tuning (all GTA mods incl. DLC, respray, custom plates) - Advanced Pricing (tiered, escalation, parts acquisition cost) - Tuner Tablet (diagnostics, bills, NPC jobs, mod orders) - Mod Orders (workflow UI, item-based installation) - Drift Tyres (install/reinstall stock) - Engine Swaps (sound-only, per class, custom/GTA sounds) - Nitrous System (kits, purge, burst, dyno-integrated) - Dyno Tuning (torque, power, brakes modifiers) - NPC Jobs (Salvage, Mobile Tuning) - Mod Stations (self-service for whitelisted jobs) - Billing System | Export | Tip | Descriere | |---|---|---| | `exports['t1ger_tuningsystem']:IsPlayerTuner()` | Client | Returnează boolean, shopId | | `exports['t1ger_tuningsystem']:GetVehicleNitrousProperties(veh)` | Client | NOS details instalat | | `exports['t1ger_tuningsystem']:GetVehicleDynoProperties(veh)` | Client | Statistici performanță | | `exports['t1ger_tuningsystem']:GetAccountMoney(shopId)` | Server | Banii shop-ului | | `exports['t1ger_tuningsystem']:AddAccountMoney(shopId, amount)` | Server | Adaugă bani la shop | | `exports['t1ger_tuningsystem']:RemoveAccountMoney(shopId, amount)` | Server | Scade bani din shop | **Dependențe:** `qb-core` / `es_extended`, `oxmysql`, `t1ger_lib`, `qb-target` / `ox_target`, `qs-inventory` / `ox_inventory` ### t1ger_carlift — Car Lift Props > Props custom pentru ridicare vehicule la mecanic. Integrare cu `t1ger_mechanic`. ### t1ger_mechanicprops — Stream Assets > Prop-uri 3D custom pentru animații mecanice (unelte, piese, etc).