2026-03-29 21:41:17 +03:00
|
|
|
|
# Red Valley Roleplay — Server Knowledge Base
|
|
|
|
|
|
|
|
|
|
|
|
## 🔑 Quick Reference
|
|
|
|
|
|
|
|
|
|
|
|
| Key | Value |
|
|
|
|
|
|
|-----|-------|
|
|
|
|
|
|
| **Server Name** | Red Valley Roleplay |
|
|
|
|
|
|
| **Framework** | QBCore |
|
|
|
|
|
|
| **Database** | MySQL (`red-valley`) via `oxmysql` |
|
|
|
|
|
|
| **Character System** | 17mov_CharacterSystem v1.2.5 |
|
|
|
|
|
|
| **Admin Panel** | Luxu Admin |
|
|
|
|
|
|
| **Inventory** | qs-inventory (Quasar) |
|
|
|
|
|
|
| **Phone** | qs-smartphone-pro (Quasar) |
|
|
|
|
|
|
| **Garages** | qs-advancedgarages v5.0.20 (Quasar) |
|
|
|
|
|
|
| **Housing** | qs-housing (Quasar) |
|
|
|
|
|
|
| **Vehicle Keys** | qs-vehiclekeys (Quasar) |
|
|
|
|
|
|
| **Police Job** | wasabi_police v1.10.8 (Wasabi) |
|
|
|
|
|
|
| **Ambulance Job** | wasabi_ambulance v1.14.2 (Wasabi) |
|
|
|
|
|
|
| **Police MDT** | codem-mdt (CodeM) |
|
|
|
|
|
|
| **Mechanic Job** | t1ger_mechanic |
|
|
|
|
|
|
| **HUD** | 17mov_Hud |
|
|
|
|
|
|
| **Voice** | pma-voice |
|
|
|
|
|
|
| **Target System** | qb-target |
|
|
|
|
|
|
| **Server Port** | 30110 |
|
|
|
|
|
|
| **Max Clients** | 8 |
|
|
|
|
|
|
| **Game Build** | 3570 |
|
|
|
|
|
|
| **Locale** | ro-RO |
|
|
|
|
|
|
| **OneSync** | On (Infinity + Beyond) |
|
|
|
|
|
|
| **phpMyAdmin** | http://localhost/phpmyadmin/ |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 📁 Resource Structure
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
resources/
|
|
|
|
|
|
├── [cfx-default]/ # CFX default resources
|
|
|
|
|
|
├── [framework]/
|
|
|
|
|
|
│ ├── [core]/
|
|
|
|
|
|
│ │ ├── qb-core/ # QBCore framework
|
|
|
|
|
|
│ │ ├── qb-target/ # Target system
|
|
|
|
|
|
│ │ ├── qs-inventory/ # Quasar inventory
|
|
|
|
|
|
│ │ └── no-npc/ # Remove ambient NPCs
|
|
|
|
|
|
│ ├── [base]/
|
|
|
|
|
|
│ │ ├── [auth]/
|
|
|
|
|
|
│ │ │ ├── 17mov_CharacterSystem/ # Character select + creation
|
|
|
|
|
|
│ │ │ ├── 17mov-plugin-char-creator/ # Spawn outfit in creator
|
|
|
|
|
|
│ │ │ └── connectqueue/ # Queue system
|
|
|
|
|
|
│ │ ├── [ui]/
|
2026-04-01 20:23:47 +03:00
|
|
|
|
│ │ │ ├── 17mov_Hud/ # HUD system
|
|
|
|
|
|
│ │ │ └── rv-chat/ # ★ Custom RV chat (VPS only, lipsește din LOCAL — trebuie copiat)
|
2026-03-29 21:41:17 +03:00
|
|
|
|
│ │ └── [jobs]/
|
2026-04-01 20:23:47 +03:00
|
|
|
|
│ │ ├── 17mov_JobCenter/ # Job listing & apply (NUI, FXAP encrypted)
|
|
|
|
|
|
│ │ │ ├── Config.lua # ★ Editable: jobs, blips, NUI settings
|
|
|
|
|
|
│ │ │ ├── bridge/qb/server/main.lua # ★ Editable: SetPlayerJob (license check here)
|
|
|
|
|
|
│ │ │ ├── bridge/qb/client/main.lua # ★ Editable: events, UI hooks
|
|
|
|
|
|
│ │ │ ├── server/utils.lua # ★ Editable: FormatMoney
|
|
|
|
|
|
│ │ │ └── client/utils.lua # ★ Editable: target system
|
|
|
|
|
|
│ │ ├── [citizen]/
|
|
|
|
|
|
│ │ │ ├── 17mov_GarbageCollector/ # Garbage job (★ license check in server/functions.lua)
|
|
|
|
|
|
│ │ │ ├── 17mov_Deliverer/ # Delivery job
|
|
|
|
|
|
│ │ │ ├── 17mov_Postman/ # Postman job
|
|
|
|
|
|
│ │ │ ├── 17mov_Lumberjack/ # Lumberjack job
|
|
|
|
|
|
│ │ │ └── aty_busjob/ # Bus driver job
|
2026-03-29 21:41:17 +03:00
|
|
|
|
│ │ └── [legal]/
|
|
|
|
|
|
│ │ ├── [police]/
|
|
|
|
|
|
│ │ │ ├── wasabi_police/ # Police job (provides qb-policejob)
|
|
|
|
|
|
│ │ │ ├── codem-mdt/ # Police MDT
|
|
|
|
|
|
│ │ │ ├── codem-dispatch/ # Dispatch alerts
|
|
|
|
|
|
│ │ │ └── codem-mdtProp/ # MDT prop
|
|
|
|
|
|
│ │ ├── [ambulance]/
|
|
|
|
|
|
│ │ │ └── wasabi_ambulance/ # Ambulance job (provides qb-ambulancejob)
|
|
|
|
|
|
│ │ ├── [mechanic]/
|
|
|
|
|
|
│ │ │ └── t1ger_mechanic/ # Mechanic job
|
|
|
|
|
|
│ │ └── [tuner]/
|
|
|
|
|
|
│ │ └── t1ger_tuningsystem/ # Tuning system
|
|
|
|
|
|
│ ├── [depends]/
|
|
|
|
|
|
│ │ ├── bob74_ipl/ # IPL loader v2.6.0 (interiors, DLC maps)
|
|
|
|
|
|
│ │ ├── ox_lib/ # Overextended lib
|
|
|
|
|
|
│ │ ├── PolyZone/ # Zone management
|
|
|
|
|
|
│ │ ├── progressbar/ # Progress bars
|
|
|
|
|
|
│ │ ├── screenshot-basic/ # Screenshots
|
|
|
|
|
|
│ │ ├── VehicleDeformation/ # Vehicle damage
|
|
|
|
|
|
│ │ ├── wasabi_bridge/ # Wasabi framework bridge
|
|
|
|
|
|
│ │ └── xsound/ # Sound system
|
|
|
|
|
|
│ └── [addons]/
|
|
|
|
|
|
│ ├── 0r_idcard/ # ID card system
|
2026-04-01 20:23:47 +03:00
|
|
|
|
│ ├── bit-driverschool/ # Driving school (licences in metadata.licences)
|
|
|
|
|
|
│ ├── rv-license-dialog/ # ★ RED VALLEY: NUI dialog permis de conducere
|
2026-03-29 21:41:17 +03:00
|
|
|
|
│ ├── qs-advancedgarages/ # Garages (Quasar)
|
|
|
|
|
|
│ ├── qs-housing/ # Housing (Quasar)
|
|
|
|
|
|
│ ├── qs-shops/ # Shops (Quasar)
|
2026-04-01 20:23:47 +03:00
|
|
|
|
│ ├── kq_* / [kq]/ # Kuzkay addons (LOCAL: scattered, VPS: grouped in [kq]/)
|
2026-03-29 21:41:17 +03:00
|
|
|
|
│ └── qb-weathersync/ # Weather & time
|
|
|
|
|
|
├── [stream]/
|
|
|
|
|
|
│ ├── [admin-outfit]/AdminPack/ # Admin clothing streaming
|
|
|
|
|
|
│ ├── [mlos]/ # Map interiors
|
2026-04-01 20:23:47 +03:00
|
|
|
|
│ │ ├── soloty-southside-custom/ # Mechanic shop MLO
|
|
|
|
|
|
│ │ ├── rfc_los_santos_customs/ # Los Santos Customs MLO
|
2026-03-29 21:41:17 +03:00
|
|
|
|
│ │ ├── cfx-fm-fleeca-banks-v2/ # Fleeca banks
|
|
|
|
|
|
│ │ ├── cfx-fm-mrpd/ # Mission Row PD
|
|
|
|
|
|
│ │ └── ... # + hospital, prison, gas stations, etc.
|
|
|
|
|
|
│ └── [vehs]/ # Custom vehicles
|
|
|
|
|
|
├── [voice]/
|
2026-04-01 20:23:47 +03:00
|
|
|
|
│ ├── pma-voice/ # Voice system
|
|
|
|
|
|
│ └── codem-radio/ # Radio system (VPS only — NU e pe LOCAL)
|
2026-03-29 21:41:17 +03:00
|
|
|
|
└── luxu_admin/ # Admin panel (top-level)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Load Order (`resources.cfg`)
|
|
|
|
|
|
```
|
|
|
|
|
|
[cfx-default] → ox_lib → [core] → [depends] → [voice] → [auth] → [ui] →
|
2026-04-01 20:23:47 +03:00
|
|
|
|
[jobs] → [addons] → rv-license-dialog → kq_carheist → [mlos] → [vehs] → minimap → phone-props →
|
2026-03-29 21:41:17 +03:00
|
|
|
|
[casino] → [stream] → luxu_admin → [weapons]
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🎭 Character & Outfit System
|
|
|
|
|
|
|
|
|
|
|
|
### Character Creation Flow
|
|
|
|
|
|
1. Player connects → `connectqueue` (priority queue)
|
|
|
|
|
|
2. `17mov_CharacterSystem` → character select / create
|
|
|
|
|
|
3. **New character** → `creator` preset (DNA + Details only, 2 tabs)
|
|
|
|
|
|
4. `17mov-plugin-char-creator` → per-frame outfit loop on ped in creator (citizenid tracking)
|
|
|
|
|
|
5. After save → `ApplySpawnOutfit()` → gender-specific default clothes
|
|
|
|
|
|
6. `SaveCurrentSkin` → persist to DB (`playerskins`)
|
|
|
|
|
|
|
|
|
|
|
|
### Skin Menu Presets
|
|
|
|
|
|
| Context | Preset | Tabs Available |
|
|
|
|
|
|
|---------|--------|----------------|
|
|
|
|
|
|
| Character Creator | `creator` | DNA + Details (2 tabs) |
|
|
|
|
|
|
| Clothing Shop / Ambulance / Boss | `shop` | Details + Clothing + Accessories (3 tabs) |
|
|
|
|
|
|
| Admin `/skin` command | `skinCommand` | All 4 tabs |
|
|
|
|
|
|
|
|
|
|
|
|
### Spawn Outfit Defaults
|
|
|
|
|
|
- **Male:** torso2=539/2, pants=200/2, arms=96/0, shoes=77/8, t-shirt=15/0
|
|
|
|
|
|
- **Female:** torso2=583/1, pants=214/1, arms=18/0, shoes=81/10, t-shirt=15/0
|
|
|
|
|
|
- No mask for either gender
|
|
|
|
|
|
|
|
|
|
|
|
### Job Outfit System (pattern from mechanic)
|
|
|
|
|
|
- **ON duty** → `SaveCurrentOutfit()` saves civilian clothes → `ApplyOutfit(jobOutfit)` applies uniform
|
|
|
|
|
|
- **OFF duty** → `ApplyOutfit(savedCivilOutfit)` restores civilian clothes
|
|
|
|
|
|
- Outfit data per job stored in `17mov_CharacterSystem/configs/Config.lua` → `Config.Outfits['JOBNAME']`
|
|
|
|
|
|
- Structure: `[grade][outfitIndex]{outfitLabel, outfitData}` for male and female
|
|
|
|
|
|
- Workflow defined in `.agents/workflows/job-outfit-setup.md`
|
|
|
|
|
|
- **IMPORTANT**: Outfits NU apar la clothing shop-uri publice — se afișează DOAR prin `Config.ClothingRooms`
|
|
|
|
|
|
- ClothingRooms verifică `job.name == v.requiredJob` (stores.lua:285)
|
|
|
|
|
|
- Wasabi cloakroom pe QBCore e HIDDEN automat ("WILL NOT SHOW IN QBCORE")
|
|
|
|
|
|
|
|
|
|
|
|
### GTA Component IDs
|
|
|
|
|
|
```
|
|
|
|
|
|
Component 1 = mask Component 5 = bag
|
|
|
|
|
|
Component 3 = arms Component 6 = shoes
|
|
|
|
|
|
Component 4 = pants Component 7 = accessory (neck)
|
|
|
|
|
|
Component 8 = t-shirt Component 9 = vest
|
|
|
|
|
|
Component 11 = torso2 Prop 0 = hat, Prop 1 = glasses
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🗄️ Key Cross-Resource Dependencies
|
|
|
|
|
|
|
|
|
|
|
|
| Central File | Resources That Depend On It |
|
|
|
|
|
|
|--------------|-----------------------------|
|
|
|
|
|
|
| `qb-core/shared/jobs.lua` | wasabi_police, wasabi_ambulance, codem-mdt, codem-dispatch, luxu_admin, t1ger_mechanic, qs-inventory |
|
|
|
|
|
|
| `qb-core/shared/items.lua` | qs-inventory, qs-shops, wasabi_police (bobby_pin, tracking_bracelet, handcuffs) |
|
|
|
|
|
|
| `qb-core/server/events.lua` | All QBCore resources |
|
|
|
|
|
|
| `ox_lib/locales/ro.json` | All translated notifications |
|
|
|
|
|
|
| `17mov_CharacterSystem/configs/Bridge.lua` | Bridge selections: clothing, apartments, housing |
|
|
|
|
|
|
| `17mov_CharacterSystem/configs/Config.lua` | t1ger_mechanic (outfit system), wasabi_police (outfit system) |
|
|
|
|
|
|
| `wasabi_bridge/` | wasabi_police, wasabi_ambulance |
|
|
|
|
|
|
| `resources.cfg` | Ensure order — ensure [jobs] loads all legal jobs |
|
|
|
|
|
|
|
|
|
|
|
|
### Bridge Configuration (`17mov_CharacterSystem/configs/Bridge.lua`)
|
|
|
|
|
|
- `Config.Housing = "standalone"` (qs-housing not auto-detected)
|
|
|
|
|
|
- `Config.Apartments = "standalone"`
|
|
|
|
|
|
- Clothing bridge: `qb-clothing`
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🔔 Notification System
|
|
|
|
|
|
- **Standard**: `17mov_Hud` native notifications
|
|
|
|
|
|
```lua
|
|
|
|
|
|
exports['17mov_Hud']:ShowNotification(message, type)
|
|
|
|
|
|
```
|
|
|
|
|
|
- Previous systems migrated from: `qs-notify`, `codem-notification`, `jg-hud`
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🛡️ Admin & Permissions
|
|
|
|
|
|
|
|
|
|
|
|
### Admin Identifiers
|
|
|
|
|
|
| FiveM ID | Name | Permissions |
|
|
|
|
|
|
|----------|------|-------------|
|
|
|
|
|
|
| `fivem:44269` | Kotzu | group.admin |
|
|
|
|
|
|
| `fivem:6428737` | cata | group.admin + qbcore.god |
|
|
|
|
|
|
| `steam:11000013f508340` | rausse | group.admin + qbcore.god |
|
|
|
|
|
|
| `fivem:16062886` | kotzu pc | group.admin + qbcore.god |
|
|
|
|
|
|
|
|
|
|
|
|
### Permission Hierarchy
|
|
|
|
|
|
```
|
|
|
|
|
|
qbcore.god → group.admin → qbcore.admin → qbcore.mod
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Luxu Admin
|
|
|
|
|
|
- API Key configured in server.cfg
|
|
|
|
|
|
- Web panel with outfit system (Clone Yourself feature)
|
|
|
|
|
|
- `set luxu_admin_api_key` in server.cfg
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 📦 Database Notes
|
|
|
|
|
|
|
|
|
|
|
|
- **DB Name**: `red-valley`
|
|
|
|
|
|
- **Connection**: `server=127.0.0.1;database=red-valley;userid=root;` (via oxmysql)
|
|
|
|
|
|
- **Character Delete** (`qb-core/server/player.lua`): Many default tables commented out (apartments, bank_accounts, crypto_transactions, phone_invoices, phone_messages, player_contacts, player_houses, player_mails) — only `players`, `playerskins`, `player_outfits`, `player_vehicles` active
|
|
|
|
|
|
- **⚠️ PENDING**: `crypto_history` table has ~2,343 rows causing oversized queries — needs periodic cleanup or LIMIT
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## ⏳ Pending Tasks (from changelog)
|
|
|
|
|
|
|
|
|
|
|
|
- [x] **wasabi_police install**: Copiat din _preLoad, jail='rcore', items adăugate în qs-inventory
|
|
|
|
|
|
- [x] **wasabi_ambulance**: Deja pe server (v1.14.2)
|
|
|
|
|
|
- [x] **wasabi_police config review**: Eliminat 'reporter' din policeJobs, confirmat cloakroom QBCore=17mov (2026-03-29)
|
|
|
|
|
|
- [x] **wasabi_police outfit**: Config.Outfits['police'] EXISTA DEJA în 17mov (grade 0-4, male+female, 5 variante) (2026-03-29)
|
|
|
|
|
|
- [x] **Synapse Map update**: wasabi_police + wasabi_ambulance nodes + conexiuni (2026-03-29)
|
|
|
|
|
|
- [x] **t1ger_tuningsystem debug**: Eliminat 6× console.log din NUI JS `web/assets/index-DkGtvbUP.js` (2026-03-29)
|
2026-04-01 20:23:47 +03:00
|
|
|
|
- [x] **License Check NUI Custom**: Resursa `rv-license-dialog` cu NUI custom matching tema Job Center (bg #0D0F11, accent #ff1a35, border #121416). Backup ox_lib comentat în codul bridge/client. Ensure adăugat în resources.cfg.
|
|
|
|
|
|
- [x] **License Check Server Logic**: Verificare `metadata.licences.driver` în Job Center (`bridge/qb/server/main.lua`) + GarbageCollector (`server/functions.lua`). Joburi blocate: garbage, deliverer, postman, lumberjack, bus.
|
|
|
|
|
|
- [ ] **License Check Replicare**: Adaugă check permis în `IsHaveRequiredItem()` la Deliverer, Postman, Lumberjack, Busjob (aceeași structură ca GarbageCollector)
|
2026-03-29 21:41:17 +03:00
|
|
|
|
- [ ] **Webhooks** `qs-smartphone-pro`: configure in `server/custom/webhooks/webhooks.lua`
|
|
|
|
|
|
- [ ] **Webhooks** `qs-advancedgarages`: configure in `server/custom/misc/*.lua`
|
|
|
|
|
|
- [ ] **oxmysql oversized query**: `crypto_history` cleanup (DELETE rows older than 7 days)
|
|
|
|
|
|
- [ ] **Version updates**: `qs-inventory` 3.7.16→3.7.17, `qs-vehiclekeys` 4.0.13→4.0.29, `t1ger_mechanic` 3.6.7→3.6.9
|
|
|
|
|
|
- [ ] **Admin outfit setup**: Configure Luxu panel Clone Yourself + test outfit stack
|
|
|
|
|
|
- [ ] **Admin jacket blacklist**: Add in `Skin.BlacklistedInputValues`
|
|
|
|
|
|
- [ ] **spawn_mask** item: Custom usable item (mask 134/2 male, 134/3 female)
|
2026-04-01 20:23:47 +03:00
|
|
|
|
- [ ] **Copiat rv-chat din VPS → LOCAL**: `_preLoad/server-v2-main/resources/[framework]/[base]/[ui]/rv-chat/` → `resources/[framework]/[base]/[ui]/rv-chat/`
|
|
|
|
|
|
- [ ] **Copiat codem-radio din VPS → LOCAL**: `_preLoad/server-v2-main/resources/[voice]/codem-radio/`
|
|
|
|
|
|
- [ ] **Sincronizare VPS**: Upload `rv-license-dialog/` + ensure line + modificări JobCenter/GarbageCollector pe VPS
|
|
|
|
|
|
- [ ] **qs-inventory update**: Portal v3.7.17 → LOCAL (merge safe: păstrează `shared/items.lua`, `config/*`, `html/images/*`, `client/custom/**`, `server/custom/**`)
|
|
|
|
|
|
- [ ] **KQ plugins path unify**: Pe VPS sunt în `[kq]/`, pe LOCAL direct în `[addons]/` — de unificat
|
2026-03-29 21:41:17 +03:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 📋 Quasar Resources Documentation Status
|
|
|
|
|
|
|
|
|
|
|
|
| Resource | Status |
|
|
|
|
|
|
|----------|--------|
|
|
|
|
|
|
| qs-inventory | ✅ Documented (`docs/qs_inventory_reference.md`) |
|
|
|
|
|
|
| qs-housing | ⚠️ Partial |
|
|
|
|
|
|
| qs-advancedgarages | ❌ Not documented |
|
|
|
|
|
|
| qs-shops | ❌ Not documented |
|
|
|
|
|
|
| qs-smartphone-pro | ❌ Not documented |
|
|
|
|
|
|
| qs-vehiclekeys | ❌ Not documented |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🔧 Useful Commands & Exports
|
|
|
|
|
|
|
|
|
|
|
|
### qs-inventory (Server)
|
|
|
|
|
|
```lua
|
|
|
|
|
|
exports['qs-inventory']:AddItem(source, item, amount, slot, info)
|
|
|
|
|
|
exports['qs-inventory']:RemoveItem(source, item, amount, slot)
|
|
|
|
|
|
exports['qs-inventory']:GetInventory(source)
|
|
|
|
|
|
exports['qs-inventory']:RegisterStash(id, slots, weight)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Admin Commands
|
|
|
|
|
|
- `/getoutfit` — Print clothing component IDs (from `t1ger_mechanic/getoutfit.lua`)
|
|
|
|
|
|
- `/skin` — Open full skin menu (all 4 tabs, `skinCommand` preset)
|
|
|
|
|
|
|
|
|
|
|
|
### 🖥️ Server Start (din IDE terminal)
|
|
|
|
|
|
```powershell
|
|
|
|
|
|
# Pornire server simplu
|
|
|
|
|
|
cmd /c "e:\FiveMserver\server\start.bat"
|
|
|
|
|
|
```
|
|
|
|
|
|
- **CWD**: `e:\FiveMserver\server`
|
|
|
|
|
|
- **start.bat v2.0** = launcher compact (RED VALLEY header, `[OK]` checks, separator `=======`)
|
|
|
|
|
|
- **Console Wrapper Demo**: `console_demo.ps1` — ANSI Shadow banner, loading bar, categorized output
|
|
|
|
|
|
- **Console Template**: `docs/console_display_template.md` — full display spec + char mappings
|
|
|
|
|
|
- **Next**: `start_console.ps1` — real wrapper (pipes start.bat → filtered display)
|
|
|
|
|
|
- **Stop**: Ctrl+C → apoi tastezi `quit` în consolă
|
|
|
|
|
|
- **Artifact**: `E:\FiveMserver\server\artifacts\FXServer.exe`
|
|
|
|
|
|
- **IMPORTANT**: Nu porni serverul de mai multe ori — verifică cu `Get-Process FXServer` înainte
|
|
|
|
|
|
|
|
|
|
|
|
### 🔇 Console Cleanup History
|
|
|
|
|
|
| Resursă | Fix | Metodă |
|
|
|
|
|
|
|---------|-----|--------|
|
|
|
|
|
|
| t1ger_mechanic | DETECTED SYSTEMS/GARAGE/KEYS | Comentat print-uri (bridge/init.lua) |
|
|
|
|
|
|
| t1ger_tuningsystem | 6× console.log NUI | Eliminat din web/assets |
|
|
|
|
|
|
| t1ger_tuningsystem | has mechanic system | Comentat print (shared/config.lua:258) |
|
|
|
|
|
|
| rcore_casino | [Casino] Framework/drunk | Print filter override (const.lua) |
|
|
|
|
|
|
| pma-voice | Starting/finished init | Comentat print-uri (client/init/init.lua) |
|
|
|
|
|
|
| qs-inventory | jobs_creator warning | Comentat Warning() (jaksam.lua:5) |
|
|
|
|
|
|
| qs-vehiclekeys | Debug prints | `Config.Debug = false` (deja setat) |
|
|
|
|
|
|
| bit-driverschool | 5× outdated warning | Comentat version.lua din fxmanifest |
|
|
|
|
|
|
| 17mov_CharacterSystem | ASCII banner + changelog | Config: DisplayAsciiArt/Changelog/Files = false |
|
|
|
|
|
|
| cfx-gabz-mapdata | Parse error | ⚠️ Nerezolvabil (compiled bytecode) |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 📂 Key File Locations
|
|
|
|
|
|
|
|
|
|
|
|
| Purpose | Path |
|
|
|
|
|
|
|---------|------|
|
|
|
|
|
|
| Server config | `server.cfg` |
|
|
|
|
|
|
| Resource load order | `resources.cfg` |
|
|
|
|
|
|
| QBCore jobs | `resources/[framework]/[core]/qb-core/shared/jobs.lua` |
|
|
|
|
|
|
| QBCore items | `resources/[framework]/[core]/qb-core/shared/items.lua` |
|
|
|
|
|
|
| Character system | `resources/[framework]/[base]/[auth]/17mov_CharacterSystem/` |
|
|
|
|
|
|
| Skin presets | `17mov_CharacterSystem/configs/Skin.lua` |
|
|
|
|
|
|
| Job outfits config | `17mov_CharacterSystem/configs/Config.lua` |
|
|
|
|
|
|
| Bridge config | `17mov_CharacterSystem/configs/Bridge.lua` |
|
|
|
|
|
|
| HUD config | `resources/[framework]/[base]/[ui]/17mov_Hud/Config.lua` |
|
|
|
|
|
|
| Mechanic job | `resources/[framework]/[base]/[jobs]/[legal]/[mechanic]/t1ger_mechanic/` |
|
|
|
|
|
|
| Police job | `resources/[framework]/[base]/[jobs]/[legal]/[police]/wasabi_police/` |
|
|
|
|
|
|
| Ambulance job | `resources/[framework]/[base]/[jobs]/[legal]/[ambulance]/wasabi_ambulance/` |
|
|
|
|
|
|
| Police MDT | `resources/[framework]/[base]/[jobs]/[legal]/[police]/codem-mdt/` |
|
|
|
|
|
|
| Dispatch | `resources/[framework]/[base]/[jobs]/[legal]/[police]/codem-dispatch/` |
|
|
|
|
|
|
| Changelog | `changelog.md` |
|
|
|
|
|
|
| Cross-resource tracking | `cross_resource_modifications.md` |
|
|
|
|
|
|
| DB SQL dump | `red-valley.sql` (430KB) |
|
|
|
|
|
|
| Server start script | `start.bat` |
|
|
|
|
|
|
| Pre-load assets | `_preLoad/` |
|
|
|
|
|
|
| Cfx.re catalog | `docs/cfx_assets_catalog.md` (142 assets total) |
|
2026-04-01 20:23:47 +03:00
|
|
|
|
| Resource comparison | `docs/resource_comparison.md` (LOCAL vs VPS diff) |
|
|
|
|
|
|
| NUI Simulator | `nui-simulator/` (Node.js standalone, `node server.js --open`, port 3200) |
|
|
|
|
|
|
| VPS backup | `_preLoad/server-v2-main/resources/` (snapshot producție) |
|
2026-03-29 21:41:17 +03:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🚗 Cfx.re Assets Overview (142 total)
|
|
|
|
|
|
|
2026-04-01 00:20:23 +03:00
|
|
|
|
Key devTeams: Quasar Store, ak4y, Malizniakk (17mov), T1GER, Kuzkay, rcore, wasabirobby, ThaC (CodeM), Eichenholz (sky_), OnexScripts, Gabz, 0Resmondev
|
2026-03-29 21:41:17 +03:00
|
|
|
|
|
|
|
|
|
|
Notable assets on server:
|
|
|
|
|
|
- 17mov Character System, 17mov Hud, 17mov multiplayer jobs (12+)
|
|
|
|
|
|
- T1GER Mechanic System, Tuning System, Car Lift, Prop Pack
|
|
|
|
|
|
- Quasar: Inventory, Housing, Garages, Shops, Smartphone PRO, Vehicle Keys, Banking, Fuel, etc.
|
|
|
|
|
|
- Wasabi: Police, Ambulance, Bridge, Evidence, Crutch
|
|
|
|
|
|
- rcore: Casino, Prison, Doorlock, Tattoos, Clothes, Fuel, Stats, Shortcuts
|
|
|
|
|
|
- Luxu Admin
|
|
|
|
|
|
- Various MLO packs (Gabz PDM, MRPD, Vespucci LSPD, Fleeca Banks)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 📜 Changelog Summary (reverse chronological)
|
|
|
|
|
|
|
|
|
|
|
|
| Date | Focus |
|
|
|
|
|
|
|------|-------|
|
2026-04-01 20:23:47 +03:00
|
|
|
|
| 2026-03-30 | NUI Simulator standalone (Node.js), Resource comparison LOCAL vs VPS (raport complet), qs-inventory item icons sync (7 imagini VPS→LOCAL), rv-chat descoperit pe VPS (lipsește local) |
|
|
|
|
|
|
| 2026-03-29 | wasabi_police install + config review, console cleanup (10 resurse), start.bat v2.0, bit-driverschool fix, 17mov banner off, bob74_ipl v2.6.0, Synapse Map, License Check system (Job Center + GarbageCollector), rv-license-dialog NUI |
|
2026-03-29 21:41:17 +03:00
|
|
|
|
| 2026-03-28 | Driving School integration, ID Card notifications, Weather sync |
|
|
|
|
|
|
| 2026-03-27 | Spawn Outfit System, Character Delete fix, Skin presets, Char Creator plugin |
|
|
|
|
|
|
| 2026-03-04 | Mechanic Job Outfit System (auto-equip on duty) |
|
|
|
|
|
|
| 2026-03-03 | Mechanic Garage & Keys, 6 Bug Fixes, 17mov update v1.2.4→v1.2.5 |
|
|
|
|
|
|
| 2026-03-02 | Server Architecture Research, Cfx.re Audit, Admin Outfit Research |
|
|
|
|
|
|
| 2026-03-01 | HUD Migration (jg-hud→17mov), Luxu Admin update, No-NPC, QBCore updates |
|
|
|
|
|
|
| 2026-02-27 | Luxu Admin install, rv-mdt creation, BMW M3 F80, QBCore server events refactor |
|
|
|
|
|
|
| 2026-02-19 | Remove mChat, resource updates |
|
|
|
|
|
|
| 2026-02-17 | QS-Inventory core update |
|
|
|
|
|
|
| 2026-02-02 | Remove codem-pausemenu, vehicle swaps, TLS |
|
|
|
|
|
|
| 2026-01-19 | Helnius Xero24 Gas Station MLO |
|
|
|
|
|
|
| 2026-01-18 | ConnectQueue, Wasabi Police, Bank MLO, Codem Radio, QS-Shops |
|
|
|
|
|
|
| 2026-01-07 | Cache cleanup |
|
2026-04-01 20:23:47 +03:00
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🔐 License Check System (Red Valley Custom)
|
|
|
|
|
|
|
|
|
|
|
|
### Architecture
|
|
|
|
|
|
```
|
|
|
|
|
|
Player Apply @ Job Center Player DutyToggle @ Job Location
|
|
|
|
|
|
│ │
|
|
|
|
|
|
▼ ▼
|
|
|
|
|
|
bridge/qb/server/main.lua server/functions.lua
|
|
|
|
|
|
SetPlayerJob() IsHaveRequiredItem()
|
|
|
|
|
|
│ │
|
|
|
|
|
|
▼ ▼
|
|
|
|
|
|
Check metadata.licences.driver Check metadata.licences.driver
|
|
|
|
|
|
│ │
|
|
|
|
|
|
┌────┴────┐ ┌────┴────┐
|
|
|
|
|
|
Has No License Has No License
|
|
|
|
|
|
│ │ │ │
|
|
|
|
|
|
▼ ▼ ▼ ▼
|
|
|
|
|
|
SetJob return false continue return false
|
|
|
|
|
|
+ TriggerClient + Notify
|
|
|
|
|
|
"rv:showLicenseDialog" + TriggerClient
|
|
|
|
|
|
"rv:showLicenseDialog"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Resursa `rv-license-dialog`
|
|
|
|
|
|
- **Locație**: `resources/[framework]/[addons]/rv-license-dialog/`
|
|
|
|
|
|
- **Fișiere**: `fxmanifest.lua`, `client.lua`, `html/index.html`
|
|
|
|
|
|
- **Event**: `rv:showLicenseDialog` (server → client)
|
|
|
|
|
|
- **NUI Callbacks**: `close` (închide dialog), `route` (waypoint la școală)
|
|
|
|
|
|
- **Coordonate Școală**: `vector3(214.45, -1400.163, 30.57)` (bit-driverschool)
|
|
|
|
|
|
- **Tema**: Job Center (bg #0D0F11, accent #ff1a35, border #121416)
|
|
|
|
|
|
- **Backup ox_lib**: Comentat în `bridge/qb/client/main.lua` și `client/functions.lua`
|
|
|
|
|
|
|
|
|
|
|
|
### Jobs cu License Check
|
|
|
|
|
|
| Job | Locație Check | Note |
|
|
|
|
|
|
|-----|--------------|-------|
|
|
|
|
|
|
| garbage | ✅ Job Center + ✅ IsHaveRequiredItem | Implementat complet |
|
|
|
|
|
|
| deliverer | ✅ Job Center | TODO: IsHaveRequiredItem |
|
|
|
|
|
|
| postman | ✅ Job Center | TODO: IsHaveRequiredItem |
|
|
|
|
|
|
| lumberjack | ✅ Job Center | TODO: IsHaveRequiredItem |
|
|
|
|
|
|
| bus | ✅ Job Center | TODO: IsHaveRequiredItem |
|
|
|
|
|
|
|
|
|
|
|
|
### 17mov Jobs — Editable Files (escrow_ignore)
|
|
|
|
|
|
Toate resursele 17mov au fișiere encrypted (FXAP) dar următoarele sunt **editabile**:
|
|
|
|
|
|
- `Config.lua` — configurație completă
|
|
|
|
|
|
- `client/functions.lua` — hooks client-side (Notify, ChangeClothes, etc.)
|
|
|
|
|
|
- `client/target.lua` — target system hooks
|
|
|
|
|
|
- `server/functions.lua` — `IsHaveRequiredItem()`, `Pay()`, `PayPenalty()`, `GetPlayerJob()`
|
|
|
|
|
|
- `locale/*.lua` — traduceri
|
|
|
|
|
|
- `bridge/**/*.lua` — framework bridge (QB/ESX)
|
|
|
|
|
|
|
|
|
|
|
|
### Driver License Storage (bit-driverschool → QBCore)
|
|
|
|
|
|
```lua
|
|
|
|
|
|
-- Stored in: PlayerData.metadata.licences
|
|
|
|
|
|
{
|
|
|
|
|
|
driver = true/false, -- Permis B (mașină) — Config.licenseNameCar = "driver"
|
|
|
|
|
|
moto = true/false, -- Permis A (motocicletă) — Config.licenseNameMoto = "moto"
|
|
|
|
|
|
truck = true/false -- Permis C (camion) — Config.licenseNameTruck = "truck"
|
|
|
|
|
|
}
|
|
|
|
|
|
-- Persistent in SQL: players.metadata JSON column
|
|
|
|
|
|
-- Also gives item: driver_license (but item can be in car/stash, metadata is authoritative)
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🎯 Interaction System (qb-target)
|
|
|
|
|
|
|
|
|
|
|
|
De la **2026-03-31**, toate resursele folosesc **qb-target** (third-eye system) ca sistem de interacțiune.
|
|
|
|
|
|
|
|
|
|
|
|
### Config Flag per DevTeam
|
|
|
|
|
|
| DevTeam | Config Key | Valoare |
|
|
|
|
|
|
|--------|-----------|---------|
|
|
|
|
|
|
| **17mov** | `Config.UseTarget = true` | în Config.lua |
|
|
|
|
|
|
| **Quasar** | `Config.UseTarget = true` | în config/config.lua |
|
|
|
|
|
|
| **QBCore** | `setr UseTarget true` | în server.cfg |
|
|
|
|
|
|
| **rcore** | `UseTarget = true, TargetZoneType = 3` | în config.lua |
|
|
|
|
|
|
| **aty_busjob** | `Target = "qb"` | în config.lua |
|
|
|
|
|
|
| **wasabi** | `Config.useTarget = true` | era deja activat |
|
|
|
|
|
|
| **T1GER** | via t1ger_lib | era deja activat |
|
|
|
|
|
|
|
|
|
|
|
|
### Excepție
|
|
|
|
|
|
- **qs-advancedgarages** — nu suportă qb-target (doar ox_target / qb-radialmenu / none)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🖥️ 17mov_Hud — API Reference
|
|
|
|
|
|
|
|
|
|
|
|
> Full docs: `docs/17mov-hud-api-reference.md`
|
|
|
|
|
|
> Sursă: https://docs.17movement.net/advanced-hud/
|
|
|
|
|
|
|
|
|
|
|
|
### Exports disponibile din alte resurse
|
|
|
|
|
|
| Export | Ce face |
|
|
|
|
|
|
|--------|---------|
|
|
|
|
|
|
| `ToggleDisplay(bool)` | Ascunde/afișează HUD complet |
|
|
|
|
|
|
| `HideRadar(bool)` | Forțează ascundere minimap |
|
|
|
|
|
|
| `ShowNotification(text, type, title, time)` | Notificare (info/error/success) |
|
|
|
|
|
|
| `ShowHelpNotification(text)` | Help text (suportă ~INPUT_CONTEXT~) |
|
|
|
|
|
|
| `HideHelpNotification()` | Ascunde help |
|
|
|
|
|
|
| `ShowHelpNotificationWhile(text)` | Help pt while loops (auto-hide) |
|
|
|
|
|
|
| `StartProgress(action, onStart, onTick, onFinish)` | Progress bar cu animație + props |
|
|
|
|
|
|
| `StopProgress()` | Oprește progress bar |
|
|
|
|
|
|
| `OpenSettings()` | Deschide setări HUD |
|
|
|
|
|
|
| `GetTheme(callback)` | Returnează culori HUD ca hex |
|
|
|
|
|
|
| `GetSettings(callback)` | Returnează setări curente |
|
|
|
|
|
|
|
|
|
|
|
|
### Custom Indicators (adaugă elemente noi pe HUD)
|
|
|
|
|
|
```lua
|
|
|
|
|
|
-- Adaugă cerc (ca viața) sau card (text colț)
|
|
|
|
|
|
exports["17mov_Hud"]:RegisterComponent("name", { type="status"|"card", label="...", icon={...} })
|
|
|
|
|
|
exports["17mov_Hud"]:UpdateComponentValue("name", value) -- float 0-1 sau string
|
|
|
|
|
|
exports["17mov_Hud"]:ToggleComponentVisibility("name", bool) -- arată/ascunde
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### Fișiere NUI Configurabile
|
|
|
|
|
|
| Fișier | Locație | Ce controlează |
|
|
|
|
|
|
|--------|---------|----------------|
|
|
|
|
|
|
| `colors.css` | `17mov_CharacterSystem/web/web/colors.css` | Toate culorile NUI |
|
|
|
|
|
|
| `config.json` (loading) | `17mov_CharacterSystem/web/web/loadingscreen/config.json` | Loading screen |
|
|
|
|
|
|
| `images/` (loading) | `17mov_CharacterSystem/web/web/loadingscreen/images/` | Logo + slides |
|
|
|
|
|
|
| `songs/` (loading) | `17mov_CharacterSystem/web/web/loadingscreen/songs/` | Muzică loading |
|
|
|
|
|
|
|
|
|
|
|
|
> ⚠️ Folderul `web/loadingscreen/` (fără web/) NU e cel activ! Config-ul real e în `web/web/loadingscreen/`.
|
|
|
|
|
|
|
|
|
|
|
|
### Culori Red Valley (aplicate 2026-04-01)
|
|
|
|
|
|
```css
|
|
|
|
|
|
--color-accent: 255 26 53; /* Roșu RV (#ff1a35) — loading bar, titluri, accente */
|
|
|
|
|
|
--color-background-primary: 255 255 255; /* Alb transparent — carduri UI */
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## 🆕 Resurse Custom Red Valley
|
|
|
|
|
|
|
|
|
|
|
|
### rv-props (Custom Props)
|
|
|
|
|
|
- **Locație**: `resources/[stream]/rv-props/`
|
|
|
|
|
|
- **Scop**: Props custom branded (prop_rv_tablet)
|
|
|
|
|
|
- **Consumat de**: 17mov_JobCenter (tabletă animație)
|
|
|
|
|
|
- **Tip**: Standalone (stream, zero cod Lua)
|
|
|
|
|
|
|
|
|
|
|
|
### rv-qb-target (Target QoL — în dezvoltare)
|
|
|
|
|
|
- **Locație**: `resources/[framework]/[core]/rv-qb-target/`
|
|
|
|
|
|
- **Scop**: Highlight entități interactabile când qb-target e activ (ALT)
|
|
|
|
|
|
- **Design**: DrawSprite deasupra capului, vizibil prin ziduri, doar entități cu target înregistrat
|
|
|
|
|
|
- **Depinde de**: qb-target (exports + event trigger)
|
|
|
|
|
|
- **Status**: Planificat, research complet, cod nescris
|
|
|
|
|
|
|
|
|
|
|
|
|