Files
red-valley/docs/changelog.md
2026-03-29 21:41:17 +03:00

684 lines
37 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
git tkn: 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
# Red Valley Roleplay — Changelog
> Changelog complet al tuturor modificărilor la server realizate în sesiunile noastre de lucru.
> Fiecare fișier este menționat cu path-ul complet și referințele cross-resource.
---
## 2026-03-29 — Wasabi Police Config Review & Cleanup
### 👮 wasabi_police — Config.policeJobs Cleanup
- **Eliminat** `'reporter'` din `Config.policeJobs` (linia 426 din config.lua)
- `reporter` era inclus default de Wasabi ca exemplu — nu este un job valid pe server
- Acum doar `'police'` rămâne activ (sheriff comentat)
- **Verificat** Cloakroom (linia 611-693): `enabled = true`, dar pe QBCore se folosește 17mov_CharacterSystem
- Notă wasabi: *"WILL NOT SHOW IN QBCORE INSTEAD USE QB-CLOTHING CONFIG!"*
- Outfiturile efective se aplică din `17mov_CharacterSystem/configs/Config.lua``Config.Outfits['police']`
- **Confirmat** alignment grade levels QBCore ↔ 17mov:
- `[0]` Cadet → Short Sleeve
- `[1]` Ofiter → Short Sleeve + Long Sleeve + Trooper Tan
- `[2]` Sergent → Short Sleeve + Long Sleeve + Trooper Tan + Trooper Black
- `[3]` Locotenent → Short Sleeve + Long Sleeve + Trooper Tan + Trooper Black + SWAT
- `[4]` Sef de Politie → Same as grade 3 (SWAT access)
### 👔 17mov_CharacterSystem — Outfit System Verification
- **Confirmat**: Uniformele de poliție NU apar la clothing shop-uri publice
- `Config.Outfits['police']` se afișează DOAR prin `Config.ClothingRooms` (requiredJob='police')
- Locații ClothingRooms police: LSPD Mission Row (454.68, -990.89, 29.69), Paleto Bay PD (314.76, 671.78, 14.73), Vinewood PD (-77.59, -129.17, 5.03)
- Verificare job se face la linia 285 în `stores.lua`: `job.name == v.requiredJob`
### 🔇 t1ger_tuningsystem — Console.log cleanup
- Eliminat 6× `console.log()` din `web/assets/index-DkGtvbUP.js` (funcția `_K()`)
### 🔇 t1ger_mechanic — Console.log cleanup
- Eliminat 6× `console.log()` din `web/assets/index-BFWVRtXt.js` (funcția `_K()`)
- Comentat 3× `print()` din `bridge/init.lua` (liniile 172, 175, 179): DETECTED SYSTEMS, DETECTED GARAGE SYSTEM, DETECTED VEHICLE KEYS SYSTEM
> Ambele resurse T1GER folosesc același template NUI (Vue + Naive UI). Mesaje eliminate: Initializing, App created, State management, UI components, NUI events, App mounted
### 🔇 rcore_casino — Print filter
- Adăugat print filter în `const.lua` (primul fișier ne-encrypted) care suprimă orice mesaj cu `[Casino]`
- Mesaje filtrate: `[Casino] Framework QBCore detected`, `[Casino] drunk system set to evidence`
- Metoda: override global `print()` cu check `msg:find("[Casino]")` — nu afectează alte resurse
### 🔇 t1ger_tuningsystem — Mechanic system print
- Comentat `print("has mechanic system:")` din `shared/config.lua:258` (fără debug flag)
### 🔇 pma-voice — Init prints
- Comentat 2× `print()` din `client/init/init.lua` (liniile 5, 49): `Starting script initialization`, `Script initialization finished`
- Nu au debug flag (`voice_debugMode` convar nu le acoperă)
### 🔇 qs-inventory — jobs_creator warning
- Comentat `Warning()` din `client/custom/misc/jaksam.lua:5` (fără debug flag)
### ⚠️ cfx-gabz-mapdata — Eroare cosmetică (nerezolvabilă)
- `gabz_ipl_blockers.lua` e compiled Lua bytecode → eroare la parsare: `unexpected symbol near '<\180>'`
- Nu afectează funcționalitatea, e eroare cosmetică din asset-pack Cfx.re
### 🔧 rfc_los_santos_customs — doortuning.ymt restaurat
- Warning: `could not find file doortuning.ymt (defined in fxmanifest.lua:21)`
- **Fix**: Copiat `doortuning.ymt` (54KB) din `_preLoad/rfc_los_santos_customs/rfc_los_santos_customs/`
- Fișierul controlează comportamentul ușilor (viteză, forță) din Los Santos Customs MLO
### 📝 soloty-southside-custom — Documentat
- MLO-ul **Mechanic Shop** (South Side Customs) — locația principală a job-ului `t1ger_mechanic`
- Asset oversized (59 MiB shell) — normal pentru interior detaliat, nu necesită fix
### 🚀 start.bat — Optimizare v2.0
- Rescris complet `start.bat` cu layout compact și profesional
- Header ASCII "RED VALLEY" cu `##` characters (compatibil cmd.exe, fără Unicode)
- Checks pe o singură linie: `[OK] Config : path` în loc de 3-5 linii
- Separator clar `=======` între launcher și FXServer output
- Info compactă: Artifact + Data dir pe 2 linii aliniate
- Eliminat 2× `timeout 1` (0 delay la startup)
- Rezultat: ~35 linii launcher → ~15 linii compacte
- Credit păstrat: `vlxre.cata` în header
### 🔇 bit-driverschool — Version check dezactivat
- Comentat `version.lua` din `fxmanifest.lua:13`
- Motivul: version check prost scris (compara `==` în loc de `>=`), raporta "outdated 3.5" când versiunea locală e 3.6
- Eliminat 5 linii de noise din consolă
### 🔇 17mov_CharacterSystem — Banner + changelog dezactivate
- `Config.VersionCheck.DisplayAsciiArt = false` în `configs/Config.lua:8`
- `Config.VersionCheck.DisplayChangelog = false` (linia 9)
- `Config.VersionCheck.DisplayFiles = false` (linia 10)
- `Enabled = true` păstrat — se afișează doar linia simplă cu versiunea
- Eliminat ~25 linii de ASCII art + changelog din consolă
## 2026-03-29 — Wasabi Police Install & 2nd Brain Update
### 👮 wasabi_police (v1.10.8) — Instalare din _preLoad
- **Copiat** `_preLoad/wasabi-police/``resources/[framework]/[base]/[jobs]/[legal]/[police]/wasabi_police/` (renamed cu underscore)
- **Config**: `Config.Jail.jail = 'rcore'` — integrat cu rcore_prison
- **Items**: `bobby_pin` + `tracking_bracelet` adăugate în `qs-inventory/shared/items.lua`
- **Imagini**: `bobby_pin.png`, `handcuffs.png`, `tracking_bracelet.png` copiate în `qs-inventory/html/images/`
- **Items QBCore**: Deja existau în `qb-core/shared/items.lua` (adăugate anterior)
- **Ensure**: Automat via `ensure [jobs]` din `resources.cfg`
- **SQL**: Nu e necesar pe QBCore (SQL-urile sunt doar pt ESX)
### 🗺️ bob74_ipl Update (v2.4.2 → v2.6.0)
- **Cauză**: `SCRIPT ERROR: @bob74_ipl/client.lua:183: attempt to index a nil value (global 'CriminalEnterpriseSmeonFix')`
- **Fix**: Update complet din GitHub (https://github.com/Bob74/bob74_ipl)
- **Fișier lipsă**: `gta_mpsum2/simeonfix.lua` — definește `CriminalEnterpriseSmeonFix` (DLC Criminal Enterprise 2022)
- **DLC-uri noi**: `dlc_casino/arcade`, `dlc_money` (Money Fronts build≥3570), `dlc_mansions` (Safehouse build≥3717)
- **Dependențe**: Zero — resource standalone, fără config custom
- **Backup**: `_preLoad/bob74_ipl-v2.4.2/`
### 🔇 t1ger_mechanic — Debug off
- `Config.Debug = false` în `shared/config.lua` (era `true`)
- Elimină spam-ul din F8: Initializing, App created, State management, UI components, NUI events, App mounted
- `qs-housing`: `Config.Debug = false` în `config/main.lua` linia 1541 (era `true`)
- Elimină spam-ul din F8: BuildDoorLocks, Initialized House Config, Blip cached, inside met
### 📚 2nd Brain Full Update
- Actualizat `server_knowledge.md` — structura folderelor, pending tasks, changelog
- Actualizat `wasabi_police_reference.md` — status INSTALAT, jail='rcore', workflow completat
- Actualizat `dev_teams_api_reference.md` — wasabi_police exports/events/state bags complete
- Creat `wasabi_ambulance_reference.md` — 13 exports client, 3 server, state bags, config complet
- Sincronizat toate fișierele cu Knowledge Base
**Fișiere modificate:**
| Acțiune | Fișier |
|---------|--------|
| 🆕 COPIAT | `resources/[framework]/[base]/[jobs]/[legal]/[police]/wasabi_police/` — întreg folderul |
| ✏️ MOD | `resources/[framework]/[core]/qs-inventory/shared/items.lua` — adăugat bobby_pin, tracking_bracelet |
| ✏️ MOD | `resources/[framework]/[base]/[jobs]/[legal]/[police]/wasabi_police/game/configuration/config.lua` — jail='rcore' |
| 🆕 COPIAT | `resources/[framework]/[core]/qs-inventory/html/images/bobby_pin.png` |
| 🆕 COPIAT | `resources/[framework]/[core]/qs-inventory/html/images/tracking_bracelet.png` |
| 🔄 UPDATE | `resources/[framework]/[depends]/bob74_ipl/` — v2.4.2→v2.6.0 (GitHub full replace) |
| 🆕 NOU | `docs/wasabi_ambulance_reference.md` |
| ✏️ MOD | `docs/server_knowledge.md`, `docs/wasabi_police_reference.md`, `docs/dev_teams_api_reference.md` |
| ✏️ MOD | `docs/changelog.md`, `docs/cross_resource_modifications.md`, `docs/qs_inventory_reference.md` |
---
## 2026-03-28 — Driving School Integration & QoL Updates
### 🚗 Driving School (`bit-driverschool`) Integration
- **Keys & Engine System**: Set `Config.useKeys = true`, updated `addKeys` function to support both 1-argument (`addKeys(vehicle)`) and 2-argument (`addKeys(playerID, vehicle)`) calls. Auto-starts engine when starting test.
- **Physical License Item**: Linked driving school with `0r_idcard`. Upon passing the test, the script now automatically grants the physical `driver_license` item (`xPlayer.Functions.AddItem`) in addition to setting the QBCore metadata (`metadata.licences.driver = true`).
- **Target System**: Enabled `qb-target` for driving school NPCs (`Config.useTarget = true`) instead of 3D text.
- **Prices**: Adjusted test prices (A = $100, B = $200, C = $300).
- **Notifications**: Migrated from `qs-notify` and `codem-notification` to `17mov_Hud` native notifications (`exports['17mov_Hud']:ShowNotification`).
- **Target Fix**: Wrapped `qb-target` `RaycastCamera` in `pcall` to prevent loading screen native crashes.
### 🪪 ID Card (`0r_idcard`) Updates
- **Notifications**: Migrated notifications to `17mov_Hud` native notifications.
### 🌤️ Weather & Time Sync (`qb-weathersync`)
- **Real-Time Sync**: Disabled `Config.RealTimeSync` to allow server admins to manually control the time via Luxu Admin `/settime` without it reverting to real-world time.
**Fișiere modificate:**
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[addons]/bit-driverschool/config.lua` — keys, target, items, prices, notifications |
| ✏️ MOD | `resources/[framework]/[addons]/0r_idcard/config.lua` — 17mov_Hud notifications |
| ✏️ MOD | `resources/[framework]/[addons]/qb-weathersync/config.lua` — disabled RealTimeSync |
| ✏️ MOD | `resources/[framework]/[core]/qb-target/client.lua` — pcall on RaycastCamera |
---
## 2026-03-27 — Spawn Outfit System
### 🆕 Auto-Echipare Outfit la Spawn
- Outfit-ul se aplică **doar la primul spawn** (new character, `isNew == true`)
- Playerii care se reconectează păstrează hainele salvate în DB
- **Outfituri separate pentru male și female** — detectare automată cu `GetEntityModel` / `GetHashKey("mp_f_freemode_01")`
- **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
- **Fără mască** la ambele sexe (playerii își văd fața la creare)
- Folosește native GTA `SetPedComponentVariation` / `ClearPedProp`
**Fișiere modificate:**
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[base]/[auth]/17mov_CharacterSystem/client/functions.lua``spawnOutfitMale` + `spawnOutfitFemale` tables, `ApplySpawnOutfit()` cu gender detection, apelat în `Location.PlayerSpawned()` |
| ✏️ MOD | `resources/[framework]/[base]/[auth]/17mov_CharacterSystem/client/functions.lua` — adăugat `TriggerEvent("17mov_CharacterSystem:SaveCurrentSkin")` după `ApplySpawnOutfit()` pentru salvare în DB |
| ✏️ MOD | `resources/[framework]/[base]/[auth]/17mov_CharacterSystem/configs/Skin.lua``Skin.RememberLastOutfit` setat de la `false` la `true` (outfiturile selectate din garderobă persistă prin relog) |
> **Referințe:** `Location.PlayerSpawned` este apelat de `client/location.lua` după ce playerul alege locația de spawn. Pattern-ul de apply outfit este identic cu cel din `t1ger_mechanic/client/shop/markers/duty.lua`. `SaveCurrentSkin` triggeruiește `qb-clothing:saveSkin` care salvează în tabelul `playerskins`.
---
### 🐛 Fix: Character Delete — tabele lipsă/incompatibile în DB
- QBCore `DeleteCharacter` folosea o tranzacție MySQL atomică — un singur query eșuat bloca ștergerea completă
- **Erori:** `apartments` (tabel inexistent), `phone_messages` (fără coloana `citizenid` — qs-smartphone schema diferită)
- Comentat toate tabelele incompatibile din `playertables`, păstrate doar cele funcționale: `players`, `playerskins`, `player_outfits`, `player_vehicles`
**Fișiere modificate:**
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[core]/qb-core/server/player.lua` — comentat `apartments`, `bank_accounts`, `crypto_transactions`, `phone_invoices`, `phone_messages`, `player_contacts`, `player_houses`, `player_mails` din `playertables` array (linia 550-563) |
---
### ✏️ Character Creator & Clothing Menu — Preset-uri per context
- **Char creator** (`creator` preset) → DNA + Details (2 tabs) — playerul customizează fața, restul e spawn outfit
- **Shop / Ambulance / Boss** (`shop` preset) → Details + Clothing + Accessories (3 tabs, fără DNA)
- **Admin `/skin`** (`skinCommand` preset) → Toate 4 tabs
- **Spawn outfit pe ped în creator** — resursă standalone `17mov-plugin-char-creator` cu smart polling (citizenid tracking), per-frame outfit loop, gender-specific, zero overhead in-game
- * TODO: `spawn_mask` — item custom cu script usable (mască 134/2 male, 134/3 female)
**Fișiere modificate:**
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[base]/[auth]/17mov_CharacterSystem/configs/Skin.lua``Skin.Presets["creator"]` restricționat la DNA+Details, adăugat preset `shop` (3 tabs fără DNA) |
| ✏️ MOD | `resources/[framework]/[base]/[auth]/17mov_CharacterSystem/bridge/clothing/qb-clothing/exports.lua``openMenu` → preset `shop`, `openMenuCommand` → preset `skinCommand` |
| ✏️ MOD | `resources/[framework]/[core]/qb-core/shared/main.lua` — scos `id_card` + `mask` din `StarterItems` (se primesc la mugshot / TODO) |
| 🆕 NEW | `resources/[framework]/[base]/[auth]/17mov-plugin-char-creator/` — resursă standalone: citizenid tracking, smart polling (zero overhead in-game), per-frame outfit loop, gender detection |
---
### ✏️ ID Card — se primește la mugshot, nu la spawn
- `id_card` scos din `QBShared.StarterItems` — la spawn primesc doar `phone`
- Prima poză la ped-ul de headshot → primește `id_card` automat (1 singură dată per license)
- Pozele ulterioare doar actualizează poza pe card (fără item nou)
- Fix erori `0r_idcard``pcall` pe `getExtendedPlayer`/`useIdCard`, refresh `Framework` pentru compatibilitate cu restart qb-core
**Fișiere modificate:**
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[addons]/0r_idcard/server/events.lua``saveHeadshot` verifică `id_card_given` din DB, dă item 1x |
| ✏️ MOD | `resources/[framework]/[addons]/0r_idcard/server/utils.lua``getExtendedPlayer` refresh `Framework` + `pcall` |
| 🗄️ SQL | `ALTER TABLE 0r_idcard ADD COLUMN id_card_given INT DEFAULT 0` |
---
## 2026-03-04 — Mechanic Job Outfit System
### 🆕 Auto-Echipare Uniformă la On/Off Duty
- **ON duty** → salvează hainele civile + pune uniforma de mecanic automat
- **OFF duty** → restaurează hainele civile
- Folosește native GTA `SetPedComponentVariation` / `SetPedPropIndex`
**Fișiere modificate/create:**
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[base]/[jobs]/[legal]/[mechanic]/t1ger_mechanic/client/shop/markers/duty.lua` — adăugat auto-apply/restore outfit |
| 🆕 NOU | `resources/[framework]/[base]/[jobs]/[legal]/[mechanic]/t1ger_mechanic/client/shop/markers/getoutfit.lua` — comandă admin `/getoutfit` |
| ✏️ MOD | `resources/[framework]/[base]/[auth]/17mov_CharacterSystem/configs/Config.lua``Config.Outfits['mechanic']` (grad 0-4, male+female), eliminat entry `[8]` din `Config.ClothingRooms` |
| ✏️ MOD | `resources/[framework]/[core]/qb-core/shared/jobs.lua` — label „Servicii Auto" → „Mecanic" |
| ✏️ MOD | `resources.cfg` — adăugat `ensure [stream]` |
| 🆕 NOU | `resources/[stream]/[admin-outfit]/AdminPack/fxmanifest.lua` — streaming clothing pack admin |
| 🆕 NOU | `_preLoad/AdminPack/fxmanifest.lua` — copie pre-staging |
| 🆕 NOU | `start_server.ps1` — PowerShell wrapper anti Ctrl+C |
| 🆕 NOU | `.agents/workflows/job-outfit-setup.md` — workflow refolosibil setup outfit per job |
> **Referințe:** `Config.Outfits` din `17mov_CharacterSystem` → folosit de `duty.lua` din `t1ger_mechanic`
---
## 2026-03-03 — Mechanic Job Garage & Key Management
### 🆕 Sistem Garaj Job Vehicule
- Vehicule job (flatbed) limitate la 1 per player, tracked server-side per `citizenid`
- Despawn automat la deconectare player
### 🆕 Key Management Logic
- Chei eliminate automat server-side când vehiculul job despawnează
- Flag `pendingKeyRemoval` setat de server, verificat la reconectare client
- Admin delete vehicul → șterge și cheile asociate
**Fișiere modificate:**
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[base]/[jobs]/[legal]/[mechanic]/t1ger_mechanic/` — garage.lua, duty.lua |
| ✏️ MOD | `resources/[framework]/[addons]/qs-advancedgarages/fxmanifest.lua` — verificat dependințe |
> **Referință:** Logica key removal cross-resource între `t1ger_mechanic` și `qs-advancedgarages`
---
## 2026-03-03 — Bug Fixes Session (6 fix-uri)
### 🔧 Fix 1: `qs-advancedgarages` — `attempt to index a nil value (field 'db')`
- **Cauza**: `fxmanifest.lua` referea `@mysql-async/lib/MySQL.lua` (serverul folosește `oxmysql`) + versiune veche v5.0.18
- **Soluție**: Update **v5.0.18 → v5.0.20** de pe Cfx.re, schimbat linia 53
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[addons]/qs-advancedgarages/fxmanifest.lua` — linia 53: `mysql-async``oxmysql` |
| ✏️ MOD | `resources/[framework]/[addons]/qs-advancedgarages/config/config.lua``Config.Locale = 'ro'` (păstrat) |
| ✏️ MOD | `resources/[framework]/[addons]/qs-advancedgarages/config/garages.lua` — garaj custom „Garaj Cazino" (păstrat) |
| 🆕 NOU | `_preLoad/quasar/qs-advancedgarages-old-5.0.18/` — backup versiune veche |
### 🔧 Fix 2: `qs-housing` — `Unknown column 'credit' in 'field list'`
- **Cauza**: Import SQL eșuat la linia 252 (`;` lipsă)
- **Soluție**: Executat manual SQL în phpMyAdmin (`red-valley`)
| Acțiune | Fișier |
|---------|--------|
| ✏️ SQL | `ALTER TABLE player_houses` — adăugat coloane `credit`, `creditPrice` |
| ✏️ SQL | `ALTER TABLE house_decorations` — adăugat coloana `price` |
| ✏️ SQL | `CREATE TABLE qs_housing_furniture_shops` |
| ✏️ SQL | `ALTER TABLE player_houses, houselocations` — CONVERT TO utf8mb4 |
### 🔧 Fix 3: `17mov_CharacterSystem` — Housing/Apartments warnings
- **Cauza**: Auto-detect caută `qb-houses`/`ps-housing`, dar `qs-housing` nu e suportat
- **Soluție**: Setat manual la `standalone`
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[base]/[auth]/17mov_CharacterSystem/configs/Bridge.lua``Config.Housing = "standalone"`, `Config.Apartments = "standalone"` (liniile 12, 22) |
### 🔧 Fix 4: `screenshot-basic` — `dist/ui.html` lipsă
- **Cauza**: webpack compilează în memory, nu pe disk
- **Soluție**: Copiat surse noi de pe GitHub (warning cosmetic, funcționează)
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[depends]/screenshot-basic/` — actualizat surse |
| 🆕 NOU | `_preLoad/screenshot-basic/` — surse GitHub |
### 🔧 Fix 5: `codem-radio` — build lipsă
- **Cauza**: `resources/build/index.html` nu exista
- **Soluție**: Șters complet resursa incompletă
| Acțiune | Fișier |
|---------|--------|
| ❌ ȘTERS | `resources/[voice]/codem-radio/` — întreg folderul |
### 🔧 Fix 6: Housing Asset Packs — SIGSEGV crash
- **Cauza**: Acumularea erorilor din `qs-advancedgarages` + `qs-housing` SQL
- **Soluție**: După fix-urile de mai sus, toate pachetele funcționează stabil
- **Testate**: `[dlc]` ✅, `[props]` ✅, `[shells]` ✅ (toate 3 împreună ✅)
---
## 2026-03-03 — 17mov CharacterSystem Update (v1.2.4 → v1.2.5)
### ✏️ Update Major — Fix bug overlay pe character select
- **Bug**: Overlay bloca click-ul pe personaj (trebuia ESC)
- **Soluție**: Update la v1.2.5 (web UI actualizat)
**Fișiere înlocuite (encrypted):**
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `17mov_CharacterSystem/client/core.lua`, `skin.lua`, `selector.lua`, `register.lua`, `loadingscreen.lua`, `photos.lua` |
| ✏️ MOD | `17mov_CharacterSystem/server/core.lua`, `selector.lua`, `register.lua`, `photos.lua`, `version.lua` |
| ✏️ MOD | `17mov_CharacterSystem/shared/core.lua`, `skingenerator.lua`, `translator.lua` |
| ✏️ MOD | `17mov_CharacterSystem/web/` — UI complet actualizat |
| ✏️ MOD | `17mov_CharacterSystem/.fxap`, `fxmanifest.lua` — v1.2.5 |
**Fișiere merged cu custom changes păstrate:**
| Acțiune | Fișier | Custom păstrat |
|---------|--------|----------------|
| ✏️ MOD | `17mov_CharacterSystem/configs/Config.lua` | `Config.Outfits['mechanic']` re-adăugat |
| ✏️ MOD | `17mov_CharacterSystem/configs/Bridge.lua` | `Config.Housing = "standalone"`, `Config.Apartments = "standalone"` |
| ✏️ MOD | `17mov_CharacterSystem/configs/Skin.lua` | Actualizat la v1.2.5 (EnableRefreshSkinCommand) |
| ✏️ MOD | `17mov_CharacterSystem/configs/Location.lua` | Opțiuni noi (EnableSpawningInHouse) |
| ✏️ MOD | `17mov_CharacterSystem/configs/Selector.lua` | Actualizat la v1.2.5 |
| ✏️ MOD | `17mov_CharacterSystem/configs/Discord.lua` | Actualizat la v1.2.5 |
| ✏️ MOD | `17mov_CharacterSystem/client/functions.lua` | Nil check fix la `FormatMoney` |
| ✏️ MOD | `17mov_CharacterSystem/client/location.lua` | Sistem locații actualizat |
| 🔁 PĂSTRAT | `17mov_CharacterSystem/locale/ro.lua` | Traduceri româneascasetup |
**Path complet**: `resources/[framework]/[base]/[auth]/17mov_CharacterSystem/`
**Backup**: `_preLoad/17mov/17mov_CharacterSystem/`
> **Referință cross-resource:**
> - Bridge-urile depind de: `qb-core`, `illenium-appearance`, `ps-housing`, `qb-apartments`
> - `configs/Bridge.lua` controlează selectarea bridge-urilor
> - `configs/Config.lua` afectează `t1ger_mechanic/duty.lua` (outfit system)
---
## 2026-03-02 — Research & Documentație Admin Outfit
### 📋 Cercetare Luxu Admin Outfit System
- Documentat cum funcționează sistemul de outfit admin existent din Luxu
- Descoperit: Luxu **deja are** outfit system complet per staff group (DB `luxu_admin_groups`)
- Documentat pașii: Clone Yourself → Select Gender → Save din web panel
### 📋 Cercetare FiveM Clothing Streaming
- Documentat cum funcționează streaming-ul de haine custom (AdminPack)
- AdminPack = **replace pack** (înlocuiește textura `jbib_013` din gunrunning DLC)
- Notat: Necesită **FiveM Patreon Element Club Argentum** pentru 9+ playeri
### 📋 Design Outfit Stack System
- Proiectat stack-ul: Civil (L1) → Job Outfit (L2) → Admin Outfit (L3)
- Documentat edge cases și cum Luxu gestionează restaurarea
### 📋 Blacklist System
- Documentat `Skin.BlacklistedInputValues` din 17mov pentru ascundere admin jacket de la playeri
- Documentat `Skin.WhitelistedInputValues` cu identifier-based access
---
## 2026-03-02 — QBCore Server Architecture Exploration
### 📋 Explorare completă server
- Analizat **toate** resursele de pe server
- Documentat structura folderelor, dependențe inter-resurse
- Creat diagramă Mermaid cu relațiile inter-resurse
### 📋 QBCore Framework Deep-Dive
- Documentat fiecare fișier din `qb-core/` cu scopul său
- Documentat flow-ul player: Connect → Login → CreatePlayer → Functions → Logout
- Notat sistemul de permisiuni, money, jobs, gangs
### 📋 Cfx.re Portal Audit
- Auditat **toate 142 asset-urile** de pe portalul Cfx.re
- Categorisit: ✅ pe server, 📦 disponibil/neinstalat, ❌ eliminat
- Identificat update-uri necesare: `t1ger_mechanic` 3.6.7→3.6.9, `qs-inventory` 3.7.16→3.7.17, `qs-vehiclekeys` 4.0.13→4.0.29
### 📋 Resource Load Order Fix
- Identificat și corectat conflicte de load order în `resources.cfg`
### 🔧 Fix: Load Order
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources.cfg` — corectare ordine ensure |
---
## 2026-03-01 — Fix HUD / Hygiene (`0fe1eaf4`)
### 🔧 Migrare HUD — jg-hud → 17mov_Hud
| Acțiune | Fișier |
|---------|--------|
| ❌ ȘTERS | `resources/[framework]/[base]/[ui]/jg-hud/` — întreg folder-ul (framework, locales, server, web, ~90 weapon images) |
| ✏️ MOD | `resources/[framework]/[depends]/ox_lib/resource/interface/client/notify.lua` — ajustare notificări |
> HUD-ul se configurează acum exclusiv din `resources/[framework]/[base]/[ui]/17mov_Hud/Config.lua`
---
## 2026-03-01 — CV Update: Admin + Police Overhaul (`9ed30cdf`)
### 🆕 Luxu Admin — Update Major
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/luxu_admin/fxmanifest.lua` |
| ✏️ MOD | `resources/luxu_admin/bridge/server/garage.lua`, `player.lua` |
| ✏️ MOD | `resources/luxu_admin/bridge/shared/inventory.lua` |
| 🆕 NOU | `resources/luxu_admin/config/commands/sv_commands.lua` |
| 🆕 NOU | `resources/luxu_admin/config/database/queries.d.ts` |
| ✏️ MOD | `resources/luxu_admin/config/database/queries.js` — refactorizat major |
| ✏️ MOD | `resources/luxu_admin/config/config.json` |
| ✏️ MOD | `resources/luxu_admin/server/index.js` — rewrite server core |
| ✏️ MOD | `resources/luxu_admin/web/assets/index.js`, `index.css` |
### 🆕 No-NPC Resource (înlocuiește garbage-fix)
| Acțiune | Fișier |
|---------|--------|
| 🆕 NOU | `resources/[framework]/[core]/no-npc/client.lua`, `fxmanifest.lua` |
| ❌ ȘTERS | `resources/[framework]/[core]/garbage-fix/fxmanifest.lua` |
### ✏️ QBCore Updates
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[core]/qb-core/client/functions.lua` |
| ✏️ MOD | `resources/[framework]/[core]/qb-core/config.lua` |
| ✏️ MOD | `resources/[framework]/[core]/qb-core/locale/ro.lua` |
| ✏️ MOD | `resources/[framework]/[core]/qb-core/shared/items.lua` (+13 linii) |
| ✏️ MOD | `resources/[framework]/[core]/qb-core/shared/jobs.lua` (+76 linii) |
### ✏️ QS-Inventory + Alte Modificări
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[core]/qs-inventory/client/custom/misc/robbery.lua` |
| ✏️ MOD | `resources/[framework]/[core]/qs-inventory/config/config.lua` |
| ✏️ MOD | `resources/[framework]/[core]/qs-inventory/locales/ro.lua` |
| ✏️ MOD | `resources/[framework]/[core]/qs-inventory/shared/items.lua` |
| ✏️ MOD | `resources/[framework]/[depends]/ox_lib/locales/ro.json` |
| ❌ ȘTERS | `resources/[stream]/vertex-hub/` (client.js, server.js, fxmanifest.lua) |
| ✏️ MOD | `resources/[voice]/codem-radio/Settings.lua` |
| ✏️ MOD | `server.cfg` |
---
## 2026-02-27 — Admin System + Police Job Overhaul (`2c6948ad`)
### 🆕 Luxu Admin — Prima Instalare
| Acțiune | Fișier |
|---------|--------|
| 🆕 NOU | `resources/luxu_admin/` — întreg folderul (server core, bridge, config, web panel, locales) |
### 🆕 RV-MDT — Police MDT System
| Acțiune | Fișier |
|---------|--------|
| 🆕 NOU | `resources/[framework]/[jobs]/[legal]/[police]/rv-mdt/` — întreg folderul |
| 🆕 NOU | `rv-mdt/client/main.lua`, `server/main.lua`, `server/db.lua` |
| 🆕 NOU | `rv-mdt/server/callbacks/` — admin, bolos, calls, cases, citizens, dashboard, evidence, map, misc, roster, units, vehicles, warrants |
| 🆕 NOU | `rv-mdt/shared/config.lua`, `sql/schema.sql` |
| 🆕 NOU | `rv-mdt/html/` — css/style.css, index.html, js/app.js, locales/en.json |
| 🆕 NOU | `rv-mdt/README.md`, `STRUCTURE.md` |
> **Dependințe MDT**: `qb-core/shared/jobs.lua`, `wasabi_police`, `server.cfg`
### 🆕 17mov CharacterSystem — Update Bridge Structure (v1.2.4 → v1.2.5)
| Acțiune | Fișier |
|---------|--------|
| 🆕 NOU | `17mov_CharacterSystem/configs/Bridge.lua` |
| 🆕 NOU | `17mov_CharacterSystem/bridge/apartaments/` — ps-housing, qb-apartments, standalone |
| 🆕 NOU | `17mov_CharacterSystem/bridge/clothing/` — esx_skin, illenium, qb-clothing, rcore |
| 🆕 NOU | `17mov_CharacterSystem/bridge/framework/` — esx, qb (client+server) |
| 🆕 NOU | `17mov_CharacterSystem/bridge/housing/` — ps-housing, qb-houses, standalone |
| ❌ ȘTERS | `17mov_CharacterSystem/bridge/illenium.lua` — bridge vechi |
| ❌ ȘTERS | `17mov_CharacterSystem/server/location.lua` — mutat în client |
| 🆕 NOU | `17mov_CharacterSystem/shared/functions.lua` |
**Path**: `resources/[framework]/[base]/[auth]/17mov_CharacterSystem/`
### 🆕 Vehicul BMW M3 F80 (înlocuire)
| Acțiune | Fișier |
|---------|--------|
| 🆕 NOU | `resources/[stream]/[vehs]/bmci/` — fxmanifest, carcols, carvariations, handling, vehicles, dlctext |
| ❌ ȘTERS | `resources/[stream]/[vehs]/upf80/` — vehiculul vechi |
### ✏️ QBCore Server Core + Alte
| Acțiune | Fișier |
|---------|--------|
| 🆕 NOU | `resources/[framework]/[core]/qb-core/server/debug.lua` |
| ✏️ MOD | `qb-core/server/events.lua` — refactorizare majoră |
| ✏️ MOD | `qb-core/server/exports.lua`, `functions.lua`, `player.lua` |
| ✏️ MOD | `wasabi_police/game/configuration/config.lua` |
| ✏️ MOD | `server.cfg`, `start.bat` |
---
## 2026-02-19 — Update Resources & Remove mChat (`5cc48fcb`)
### ❌ Ștergere mChat
| Acțiune | Fișier |
|---------|--------|
| ❌ ȘTERS | `resources/[framework]/[base]/[ui]/mChat/` — întreg folderul (client, server, html, shared, vue.js) |
### ✏️ Alte Modificări
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `rv-mdt/server/callbacks/roster.lua`, `server/main.lua` |
| ✏️ MOD | `17mov_Hud/Config.lua` |
| ✏️ MOD | `t1ger_tuningsystem/shared/config.lua` |
| ✏️ MOD | `server.cfg` |
---
## 2026-02-17 — Update QS-Inventory (`95449f19`)
### ✏️ QS-Inventory Core Update
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `qs-inventory/fxmanifest.lua`, `config/config.lua` (restructurat) |
| ✏️ MOD | `qs-inventory/html/js/app.js` + toate modulele JS |
| 🆕 NOU | `qs-inventory/server/custom/misc/SetInventoryData.lua` |
| 🆕 NOU | `qs-inventory/server/custom/misc/UseItem.lua` |
| ✏️ MOD | `qs-inventory/server/custom/misc/SaveInventory.lua` |
| 🆕 NOU | `qs-inventory/server/modules/hooks.lua` |
| ✏️ MOD | `qs-inventory/server/custom/framework/qb.lua` |
**Path**: `resources/[framework]/[core]/qs-inventory/`
---
## 2026-02-02 — Update Resources, Vehicles & TLS (`7ac0a69d`)
### ❌ Ștergere codem-pausemenu + Ferrari SF90xx
| Acțiune | Fișier |
|---------|--------|
| ❌ ȘTERS | `resources/[framework]/[base]/[ui]/codem-pausemenu/` — întreg folderul |
| ❌ ȘTERS | `resources/[stream]/[vehs]/fsf90xx/` — Ferrari SF90xx |
| 🆕 NOU | `resources/[stream]/[vehs]/upf80/` — restaurat vehicul upf80 |
---
## 2026-01-19 — Add Helnius Xero24 Gas Station MLO (`26881f7b`)
| Acțiune | Fișier |
|---------|--------|
| 🆕 NOU | `resources/[stream]/[mlos]/[gas-stations]/helnius_xero24/` — fxmanifest, client, config, paleto_bay_RemoveIpl, stream assets |
| 🆕 NOU | `resources/[stream]/[mlos]/[gas-stations]/helnius_xero24_mapdata/` — fxmanifest, gta5.meta, doortuning.ymt |
---
## 2026-01-18 — ConnectQueue + Wasabi Police + Bank MLO (`0700b073`, `549054be`, `47e3e777`)
### 🆕 ConnectQueue Logging System
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[base]/[auth]/connectqueue/shared/sh_queue.lua` — refactorizare majoră (+407/-44) |
| 🆕 NOU | `resources/[framework]/[base]/[auth]/connectqueue/README.md` |
### 🆕 Wasabi Police Job
| Acțiune | Fișier |
|---------|--------|
| 🆕 NOU | `resources/[framework]/[jobs]/[legal]/[police]/wasabi_police/` — întreg folderul (client 2600 linii, server 1175 linii, config, 16 locale-uri, UI) |
### ✏️ Wasabi Bridge Updates
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[depends]/wasabi_bridge/` — fxmanifest, customize, frameworks, inventories, ui |
### 🆕 Codem Radio (înlocuiește qb-radio)
| Acțiune | Fișier |
|---------|--------|
| 🆕 NOU | `resources/[voice]/codem-radio/` — client, server, Settings, React app |
| ❌ ȘTERS | `resources/[voice]/qb-radio/` — întreg folderul |
### ✏️ 17mov CharacterSystem + Bank MLO
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `17mov_CharacterSystem/client/functions.lua` (+54 linii) |
| ✏️ MOD | `17mov_CharacterSystem/server/functions.lua` (+20 linii) |
| ❌ ȘTERS | `17mov_CharacterSystem/configs/Register.lua` |
| ❌ ȘTERS | `resources/[stream]/[mlos]/[bank]/tstudio_fleeca/` — MLO vechi |
| 🆕 NOU | `resources/[stream]/[mlos]/cfx-fm-fleeca-banks-v2/` — MLO nou Fleeca banks |
---
## 2026-01-18 — QS-Shops Update (`4a8d11a0`)
| Acțiune | Fișier |
|---------|--------|
| ✏️ MOD | `resources/[framework]/[addons]/qs-shops/config.lua` |
| ✏️ MOD | `resources/[framework]/[addons]/qs-shops/json/shops-inventory.json` |
---
## 2026-01-07 — Curățare Cache (`581ade90`)
- Ștergere fișiere cache vechi pentru resurse multiple
---
## Referințe Cross-Resource
| Fișier Central | Resurse Afectate |
|----------------|------------------|
| `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) |
| `qs-inventory/shared/items.lua` | wasabi_police (bobby_pin, tracking_bracelet), wasabi_ambulance (defib, medikit, sedative) |
| `qb-core/server/events.lua` | Toate resursele QBCore |
| `qb-core/server/functions.lua` | Toate resursele server-side |
| `ox_lib/locales/ro.json` | Toate notificările traduse |
| `wasabi_bridge/` | wasabi_police, wasabi_ambulance |
| `17mov_CharacterSystem/configs/Bridge.lua` | Bridge-uri clothing, apartments, housing |
| `17mov_CharacterSystem/configs/Config.lua` | t1ger_mechanic (outfit system), wasabi_police (outfit — pending) |
| `qs-inventory/config/config.lua` | Inventar, shop-uri, crafting |
| `resources.cfg` | Ensure order — ensure [jobs] încarcă automat toate job-urile |
---
## Documentație & Artifacts Create
### Fișiere pe server:
| Fișier | Path | Scop |
|--------|------|------|
| `changelog.md` | `server/changelog.md` | Acest fișier |
| `cross_resource_modifications.md` | `server/cross_resource_modifications.md` | Tracking modificări cross-resource (mechanic outfit + garage/keys) |
| `start_server.ps1` | `server/start_server.ps1` | Script pornire cu protecție anti Ctrl+C |
| `job-outfit-setup.md` | `server/.agents/workflows/job-outfit-setup.md` | Workflow pas-cu-pas setup outfit per job |
| `connectqueue/README.md` | `resources/.../connectqueue/README.md` | Documentație logging connectqueue |
| `rv-mdt/README.md` | `resources/.../rv-mdt/README.md` | Documentație Police MDT |
| `rv-mdt/STRUCTURE.md` | `resources/.../rv-mdt/STRUCTURE.md` | Structura fișierelor rv-mdt |
### Artifacts din sesiunile Antigravity:
| Artifact | Sesiunea | Ce conține |
|----------|----------|------------|
| `walkthrough.md` | Sesiune 08cbc7f9 (02 Mar) | **QBCore Server Architecture** — structura completă, framework deep-dive, toate resursele, developer directory, DB schema, permissions, money system |
| `walkthrough.md` | Sesiune 31ed245f (02-04 Mar) | **Fix History** — 6 bug fixes detaliate + structura server + DB reference + rămase de rezolvat |
| `implementation_plan.md` | Sesiune 31ed245f | **17mov Update Plan** v1.2.4→v1.2.5 — comparison results, custom changes, merge strategy, verification steps |
| `server_index.md` | Sesiune 31ed245f | **Resource Index** complet — toate resursele, versiuni, dependențe, exports, comenzi, Cfx.re portal audit (142 assets), update-uri necesare |
| `quasar_documentation.md` | Sesiune 31ed245f | **Quasar Store Docs** — documentație detaliată qs-inventory, qs-housing, qs-garages, qs-shops, qs-smartphone, qs-vehiclekeys |
| `research_admin_outfit.md` | Sesiune 31ed245f | **Admin Outfit Research** — Luxu outfit system, AdminPack streaming, blacklist system, outfit stack design |
| `research_fivem_clothing_streaming.md` | Sesiune 31ed245f | **FiveM Clothing Streaming** — cum funcționează streaming-ul, naming conventions, Patreon requirement |
| `research_luxu_admin.md` | Sesiune 31ed245f | **Luxu Admin Research** — funcționalități, configurare, exports |
| `research_17mov_character_system.md` | Sesiune 31ed245f | **17mov Research** — structura resursă, configs, bridge system |
---
## Rămase de Rezolvat
- [x] **wasabi_police install**: Copiat din _preLoad, jail='rcore', items adăugate (2026-03-29)
- [x] **bob74_ipl update**: v2.4.2→v2.6.0 din GitHub — fix CriminalEnterpriseSmeonFix (2026-03-29)
- [x] **Synapse Map update**: wasabi_police + wasabi_ambulance nodes + conexiuni (2026-03-29)
- [ ] **wasabi_police config review**: Verificare Config.policeJobs (scoatem 'reporter'?), cloakroom outfits
- [ ] **wasabi_police outfit**: Adăugare Config.Outfits['police'] în 17mov_CharacterSystem
- [ ] **Webhooks** `qs-smartphone-pro`: configurare în `server/custom/webhooks/webhooks.lua`
- [ ] **Webhooks** `qs-advancedgarages`: configurare în `server/custom/misc/*.lua`
- [ ] **oxmysql oversized query**: `SELECT * FROM crypto_history` (2339 results) — trebuie paginare sau LIMIT
- [ ] **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**: Configurare Luxu panel Clone Yourself + testare outfit stack
- [ ] **Admin jacket blacklist**: Adăugare în `Skin.BlacklistedInputValues`