rv-props-tablet add + Loading Edit + qb-target
- rv-props: prop tableta custom cu logo-ul serverului (prop_rv_tablet) - 17mov_JobCenter: trigger tableta custom cand playerul este la Job Center - Loading Screen: logo 320px, texte in romana, accent rosu #cc1133, card info RV - qb-target: punctul (eye) dublu ca size (8px→16px), hover text rosu #cc1133 - 17mov_JobCenter: GlobalColor #cc1133 (accent mai inchis) - colors.css: tema Red Valley pe toate NUI-urile (accent, background alb transparent) - docs: 17mov_Hud API reference complet, server knowledge update
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# Red Valley Roleplay — Resource Dependency Map
|
||||
|
||||
> Scanat din codul sursă: exports, TriggerEvent, TriggerServerEvent, TriggerClientEvent.
|
||||
> Ultima actualizare: 2026-03-29
|
||||
> Ultima actualizare: 2026-04-01
|
||||
|
||||
---
|
||||
|
||||
@@ -297,6 +297,22 @@
|
||||
└── Framework → qb-core
|
||||
```
|
||||
|
||||
### Dacă modifici `rv-props` (Custom Props):
|
||||
```
|
||||
├── Streamed → [stream]/rv-props/stream/ (YDR, YTYP)
|
||||
├── Consumat de → 17mov_JobCenter (prop_rv_tablet)
|
||||
├── TextureDictionary → prop_cs_tablet (GTA V Legacy)
|
||||
└── Dependințe → niciunul (standalone stream resource)
|
||||
```
|
||||
|
||||
### Dacă modifici `rv-qb-target` (Target QoL — în dezvoltare):
|
||||
```
|
||||
├── Depinde de → qb-target (exports + event trigger)
|
||||
├── Funcționalitate → Highlight entități interactabile la ALT
|
||||
├── Vizual → DrawSprite deasupra capului (vizibil prin ziduri)
|
||||
└── CPU → Zero când inactiv (event-driven)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 Diagrama Vizuală a Dependințelor
|
||||
@@ -342,6 +358,9 @@ graph TD
|
||||
TL --> |target| QBT[qb-target]
|
||||
TL --> |society| QM
|
||||
|
||||
RVP[rv-props] --> |prop_rv_tablet| JC[17mov_JobCenter]
|
||||
RVQBT[rv-qb-target] -.-> |exports + events| QBT
|
||||
|
||||
IDC --> |notif| HUD
|
||||
BDS --> |notif| HUD
|
||||
BDS --> |license| IDC
|
||||
@@ -355,6 +374,9 @@ graph TD
|
||||
style CS fill:#ff9900,color:#fff
|
||||
style HUD fill:#ff9900,color:#fff
|
||||
style LA fill:#9933cc,color:#fff
|
||||
style RVP fill:#33aa33,color:#fff
|
||||
style RVQBT fill:#33aa33,color:#fff
|
||||
style JC fill:#3399ff,color:#fff
|
||||
```
|
||||
|
||||
---
|
||||
@@ -376,3 +398,5 @@ graph TD
|
||||
| Character delete | qb-core/server/player.lua → playertables array |
|
||||
| Stash/storage | qs-inventory, t1ger_lib |
|
||||
| Phone features | qs-smartphone-pro ↔ pma-voice, qs-vehiclekeys |
|
||||
| Custom props (rv-props) | 17mov_JobCenter (prop_rv_tablet) |
|
||||
| qb-target behavior | rv-qb-target, t1ger_lib, toate resursele cu AddTargetEntity/Model |
|
||||
|
||||
@@ -47,8 +47,21 @@ resources/
|
||||
│ │ │ ├── 17mov-plugin-char-creator/ # Spawn outfit in creator
|
||||
│ │ │ └── connectqueue/ # Queue system
|
||||
│ │ ├── [ui]/
|
||||
│ │ │ └── 17mov_Hud/ # HUD system
|
||||
│ │ │ ├── 17mov_Hud/ # HUD system
|
||||
│ │ │ └── rv-chat/ # ★ Custom RV chat (VPS only, lipsește din LOCAL — trebuie copiat)
|
||||
│ │ └── [jobs]/
|
||||
│ │ ├── 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
|
||||
│ │ └── [legal]/
|
||||
│ │ ├── [police]/
|
||||
│ │ │ ├── wasabi_police/ # Police job (provides qb-policejob)
|
||||
@@ -72,29 +85,32 @@ resources/
|
||||
│ │ └── xsound/ # Sound system
|
||||
│ └── [addons]/
|
||||
│ ├── 0r_idcard/ # ID card system
|
||||
│ ├── bit-driverschool/ # Driving school
|
||||
│ ├── bit-driverschool/ # Driving school (licences in metadata.licences)
|
||||
│ ├── rv-license-dialog/ # ★ RED VALLEY: NUI dialog permis de conducere
|
||||
│ ├── qs-advancedgarages/ # Garages (Quasar)
|
||||
│ ├── qs-housing/ # Housing (Quasar)
|
||||
│ ├── qs-shops/ # Shops (Quasar)
|
||||
│ ├── kq_* / [kq]/ # Kuzkay addons (LOCAL: scattered, VPS: grouped in [kq]/)
|
||||
│ └── qb-weathersync/ # Weather & time
|
||||
├── [stream]/
|
||||
│ ├── [admin-outfit]/AdminPack/ # Admin clothing streaming
|
||||
│ ├── [mlos]/ # Map interiors
|
||||
│ │ ├── soloty-southside-custom/ # Mechanic shop MLO (t1ger_mechanic blips/markere)
|
||||
│ │ ├── rfc_los_santos_customs/ # Los Santos Customs MLO (RFC Mapping)
|
||||
│ │ ├── soloty-southside-custom/ # Mechanic shop MLO
|
||||
│ │ ├── rfc_los_santos_customs/ # Los Santos Customs MLO
|
||||
│ │ ├── cfx-fm-fleeca-banks-v2/ # Fleeca banks
|
||||
│ │ ├── cfx-fm-mrpd/ # Mission Row PD
|
||||
│ │ └── ... # + hospital, prison, gas stations, etc.
|
||||
│ └── [vehs]/ # Custom vehicles
|
||||
├── [voice]/
|
||||
│ └── pma-voice/ # Voice system
|
||||
│ ├── pma-voice/ # Voice system
|
||||
│ └── codem-radio/ # Radio system (VPS only — NU e pe LOCAL)
|
||||
└── luxu_admin/ # Admin panel (top-level)
|
||||
```
|
||||
|
||||
### Load Order (`resources.cfg`)
|
||||
```
|
||||
[cfx-default] → ox_lib → [core] → [depends] → [voice] → [auth] → [ui] →
|
||||
[jobs] → [addons] → kq_carheist → [mlos] → [vehs] → minimap → phone-props →
|
||||
[jobs] → [addons] → rv-license-dialog → kq_carheist → [mlos] → [vehs] → minimap → phone-props →
|
||||
[casino] → [stream] → luxu_admin → [weapons]
|
||||
```
|
||||
|
||||
@@ -211,7 +227,9 @@ qbcore.god → group.admin → qbcore.admin → qbcore.mod
|
||||
- [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)
|
||||
- [ ] **Console Wrapper (start_console.ps1)**: start.bat rămâne foreground (raw output), adaugă în .bat o linie care lansează și start_console.ps1 într-un al doilea terminal (organizat). Abordare: 2 ferestre — raw debug + clean display. Demo: `console_demo.ps1`. Template: `docs/console_display_template.md`
|
||||
- [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)
|
||||
- [ ] **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)
|
||||
@@ -219,6 +237,11 @@ qbcore.god → group.admin → qbcore.admin → qbcore.mod
|
||||
- [ ] **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)
|
||||
- [ ] **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
|
||||
|
||||
---
|
||||
|
||||
@@ -303,6 +326,9 @@ cmd /c "e:\FiveMserver\server\start.bat"
|
||||
| Server start script | `start.bat` |
|
||||
| Pre-load assets | `_preLoad/` |
|
||||
| Cfx.re catalog | `docs/cfx_assets_catalog.md` (142 assets total) |
|
||||
| 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) |
|
||||
|
||||
---
|
||||
|
||||
@@ -325,7 +351,8 @@ Notable assets on server:
|
||||
|
||||
| Date | Focus |
|
||||
|------|-------|
|
||||
| 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 |
|
||||
| 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-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) |
|
||||
@@ -339,3 +366,152 @@ Notable assets on server:
|
||||
| 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 |
|
||||
|
||||
---
|
||||
|
||||
## 🔐 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
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user