807 lines
38 KiB
Markdown
807 lines
38 KiB
Markdown
# 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).
|