Compare commits

..

2 Commits

Author SHA1 Message Date
redvalley 1bcf0d9282 docs: sync knowledge base with April 8-10 changes
Synchronized docs/ folder with Knowledge Base (was behind since April 3):
- changelog.md: added qb-target migration (Apr 8) + resource cleanup (Apr 10) entries
- server_knowledge.md: complete resource structure post-cleanup, target section update
- cross_resource_modifications.md: added qb-target migration checklist
- resource_dependency_map.md: removed rv-qb-target, updated qb-target (ld-target engine)
- resource_map.html: updated qb-target node + 17mov_Electrician qtarget link
2026-06-17 16:53:15 +03:00
redvalley 3dcff3ce6d curatenie si fix target 2026-04-10 14:04:59 +03:00
1252 changed files with 22491 additions and 144427 deletions
+48
View File
@@ -7,6 +7,41 @@ git tkn: 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
---
## 2026-04-10 — Resource Cleanup + Knowledge Base Update
### 🧹 Resource Cleanup
- Mutat resurse neutilizate în `_preLoad/_backups 10-04-2026/`
- Verificat complet structura resurselor post-cleanup
- Actualizat knowledge base: `server_knowledge.md`, `resource_dependency_map.md`, `changelog.md`, `todo_lists.md`, `cross_resource_modifications.md`, `resource_map.html`
---
## 2026-04-08 — qb-target Migration (ld-target engine)
### 🎯 Target System Migration: rv-target → qb-target (ld-target engine)
- **Cauza erorilor**: Folderul se numea `rv-target` cu `provide 'qb-target'` — resursele nu găseau exporturile
- **Fix**: Folder redenumit la `qb-target` (cum era distribuit ld-target original)
- **provide qtarget**: Adăugat `provide 'qtarget'` în fxmanifest.lua pt compatibilitate cu `17mov_Electrician`
- **Demo peds cleanup**: `Config.Peds = {}` (golit tabel demo Lunny)
- **Blue branding NUI**: `#00F8B9``#5c97f7` în style.css, interaction.css, script.js, index.html
- **DrawSprite albastru**: Zone markers RGB(92,151,247) în client.lua
- **Fresh copy**: client.lua și NUI copiate proaspăt din `_preLoad/ld-target/Standalone/`
- **F8 curat**: Toate erorile `No such export` rezolvate
**Fișiere modificate:**
| Acțiune | Fișier |
|---------|--------|
| 🔄 REDENUMIT | `rv-target/``qb-target/` (folder rename) |
| ✏️ MOD | `qb-target/fxmanifest.lua` — name='qb-target', provide 'qtarget' |
| ✏️ MOD | `qb-target/init.lua` — Config.Peds = {} |
| ✏️ MOD | `qb-target/client.lua` — DrawSprite RGB(92,151,247) albastru |
| ✏️ MOD | `qb-target/html/style.css`#00F8B9#5c97f7 |
| ✏️ MOD | `qb-target/html/interaction.css`#00F8B9#5c97f7 |
| ✏️ MOD | `qb-target/html/script.js`#00F8B9#5c97f7 |
| ✏️ MOD | `qb-target/html/index.html`#00F8B9#5c97f7 |
---
## 2026-04-03 — Stabilizare Post-Migrare Quasar Inventory + Notify Centralizat
### 🔧 Fix: qb-core Post-Update Recovery (Quasar fork a suprascris custom changes)
@@ -20,6 +55,15 @@ git tkn: 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
- ✏️ `resources/[framework]/[core]/qb-core/client/events.lua` — Override `QBCore:Notify` event → `exports['17mov_Hud']:ShowNotification()` (linia ~193)
- **Efect:** TOATE resursele de pe server afișează notificări prin 17mov_Hud automat, fără modificări individuale
### 🎯 Suprimare DrawText [E] Global + qb-target Migration
- ✏️ `resources/[framework]/[core]/qb-core/client/drawtext.lua`**SUPRIMAT GLOBAL** — toate funcțiile DrawText/ChangeText/HideText/KeyPressed sunt no-ops. Resursele nu mai pot afișa prompt-uri [E]. Exporturile rămân funcționale (nu crashuiesc), dar nu fac nimic.
- ✏️ `resources/[framework]/[addons]/[housing]/qs-housing/client/custom/framework/qb.lua` — DrawText3D/DrawText3Ds/DrawTextBoard suprimare condițională: când `Config.UseTarget = true`, funcțiile devin no-ops (elimină textele [E] din codul encrypted)
- ✏️ `resources/[framework]/[addons]/[housing]/qs-housing/client/custom/target/qb-target.lua` — Adăugat BoxZone qb-target pe NPC-ul Real Estate + floating text "Agent Imobiliar" deasupra capului (utilizează native GTA, nu DrawText3D suprimat)
- **Efect:** Prompt-urile [E] au dispărut de pe tot serverul. Interacțiunile se fac prin qb-target (dot/eye target). Resursele cu `Config.UseTarget` rămân de setat individual pe `true` pe rând.
### ⏰ Time Freeze la 14:00
- ✏️ `resources/[framework]/[addons]/qb-weathersync/config.lua``Config.BaseTime = 14`, `Config.FreezeTime = true` (server locked la 14:00)
### 📋 Workflow & Rulebook Updates
- ✏️ `.agents/workflows/rulebook.md` — Regula 5 rescrisă complet: workflow obligatoriu `/resource-update`, qb-core checklist cu 7 puncte
- 🆕 `.agents/workflows/resource-update.md` — Workflow nou: git diff înainte/după, cross_resource_modifications.md check, post-update verificare
@@ -43,6 +87,10 @@ git tkn: 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
| 🆕 NOU | `.agents/workflows/resource-update.md` |
| ✏️ MOD | `.agents/workflows/rulebook.md` — regula 5 extinsă |
| ✏️ MOD | `cross_resource_modifications.md` — 7 puncte checklist qb-core |
| ✏️ SUPRIMAT | `qb-core/client/drawtext.lua` — DrawText/HideText no-ops global |
| ✏️ MOD | `qs-housing/client/custom/framework/qb.lua` — DrawText3D no-op când UseTarget=true |
| ✏️ MOD | `qs-housing/client/custom/target/qb-target.lua` — +NPC Real Estate target + floating text |
| ✏️ MOD | `qb-weathersync/config.lua` — time freeze 14:00 |
---
+87
View File
@@ -114,3 +114,90 @@ resources/[framework]/[core]/qb-core/shared/items.lua ← +chain, +vest, +brac
resources/[framework]/[core]/qb-core/server/player.lua ← playertables: -apartments, -phone_messages
resources/[framework]/[core]/[inventory]/qs-inventory/config/config.lua ← lang, servername, debug
```
---
## Feature: Global [E] Prompt Suppression → qb-target (2026-04-03)
### ⚠️ CRITICAL: Checklist la Update qb-core (drawtext)
Când se face update la `qb-core`, verifică:
- **`client/drawtext.lua`** → TOATE funcțiile sunt no-ops (DrawText, ChangeText, HideText, KeyPressed). La update, Quasar va restaura funcțiile originale!
### Fișiere modificate:
| Fișier | Resursă | Ce s-a modificat |
|--------|---------|------------------|
| `client/drawtext.lua` | `qb-core` | **SUPRIMAT GLOBAL** — DrawText/ChangeText/HideText/KeyPressed sunt no-ops cu `function() end`. Exporturile există dar nu fac nimic. |
### Note:
- Supresia este globală — NICIO resursă nu poate afișa prompt-uri [E] prin qb-core exports
- Resursele nu crashuiesc, dar textul nu apare
- Aceasta forțează migrarea la qb-target (dot/eye target) pe tot serverul
- Resursele trebuie setate individual cu `Config.UseTarget = true`
---
## Feature: qs-housing qb-target Migration (2026-04-03)
### ⚠️ CRITICAL: Checklist la Update qs-housing
Când se face update la `qs-housing`, verifică:
1. **`client/custom/framework/qb.lua`** → DrawText3D/DrawText3Ds/DrawTextBoard sunt no-ops când `Config.UseTarget = true`. Update-ul Quasar va restaura funcțiile originale!
2. **`client/custom/target/qb-target.lua`** → BoxZone `rv_realestate_npc` + floating text "Agent Imobiliar" pe NPC Real Estate. Secțiunea RED VALLEY de la sfârșitul fișierului!
### Fișiere modificate:
| Fișier | Resursă | Ce s-a modificat |
|--------|---------|------------------|
| `client/custom/framework/qb.lua` | `qs-housing` | DrawText3D/DrawText3Ds/DrawTextBoard devin no-ops condițional (doar când `Config.UseTarget = true`). Codul encrypted apelează aceste funcții native GTA, deci suprimarea din qb-core nu le prindea. |
| `client/custom/target/qb-target.lua` | `qs-housing` | Adăugat BoxZone qb-target pe NPC-ul Real Estate (`rv_realestate_npc`) la coordonatele din `Config.RealeStateNPC.location`. Opțiune: "Open House Browser" (execută `/housebrowser`). Floating text nativ "Agent Imobiliar" cu LOS check. |
### NPC Real Estate — Configurare:
- **Model:** `a_m_m_business_01` (din `Config.RealeStateNPC.pedModel`)
- **Locație:** `vec4(-253.978027, -970.457153, 31.217529, 161.574799)` (din `Config.RealeStateNPC.location`)
- **Target zone:** BoxZone 1.5×1.5, distance 2.5
- **Floating text:** Native GTA rendering, LOS check, 15m range
---
## Feature: Time Freeze 14:00 (2026-04-03)
### Fișiere modificate:
| Fișier | Resursă | Ce s-a modificat |
|--------|---------|------------------|
| `config.lua` | `qb-weathersync` | `Config.BaseTime = 14`, `Config.FreezeTime = true` — server locked la ora 14:00 permanent |
### Note:
- Necesită restart complet de server (ensure nu funcționează)
- `Config.RealTimeSync` era deja `false` (setat 2026-03-28)
---
## Feature: qb-target Migration (ld-target engine — 2026-04-08)
### ⚠️ CRITICAL: Checklist la Update qb-target
Când se face update/înlocuire la `qb-target`, verifică:
1. **`fxmanifest.lua`** → `provide 'qtarget'` TREBUIE să existe (17mov_Electrician depinde de el)
2. **`init.lua`** → `Config.Peds = {}` (fără demo NPC-uri Lunny)
3. **`client.lua`** → DrawSprite zone markers: RGB(92, 151, 247) = albastru
4. **`html/`** → Culorile NUI: `#5c97f7` albastru (style.css, interaction.css, script.js, index.html)
### Fișiere modificate:
| Fișier | Resursă | Ce s-a modificat |
|--------|---------|------------------|
| `fxmanifest.lua` | `qb-target` | `name='qb-target'`, `provide 'qtarget'` adăugat |
| `init.lua` | `qb-target` | `Config.Peds = {}` — golit tabel demo peds Lunny |
| `client.lua` | `qb-target` | DrawSprite zone markers: `(255,255,255)``(92,151,247)` albastru |
| `html/style.css` | `qb-target` | `#00F8B9``#5c97f7` |
| `html/interaction.css` | `qb-target` | `#00F8B9``#5c97f7` |
| `html/script.js` | `qb-target` | `#00F8B9``#5c97f7` |
| `html/index.html` | `qb-target` | `#00F8B9``#5c97f7` |
### Note:
- Folderul TREBUIE să se numească `qb-target` (nu `rv-target`) — resursele terțe hardcode `exports['qb-target']`
- `provide 'qtarget'` permite `exports['qtarget']` să rezolve la același resource
- Engine-ul este ld-target open-source (NP 4.0 inspired)
- Zone markers (puncte la distanță) funcționează doar pe **Zones** (BoxZone, CircleZone), NU pe entități adăugate cu `AddTargetEntity()`
- Sursele originale se găsesc în `_preLoad/ld-target/Standalone/`
+11 -9
View File
@@ -1,7 +1,7 @@
# Red Valley Roleplay — Resource Dependency Map
> Scanat din codul sursă: exports, TriggerEvent, TriggerServerEvent, TriggerClientEvent.
> Ultima actualizare: 2026-04-01
> Ultima actualizare: 2026-04-10
---
@@ -305,12 +305,16 @@
└── Dependințe → niciunul (standalone stream resource)
```
### Dacă modifici `rv-qb-target` (Target QoL — în dezvoltare):
### Dacă modifici `qb-target` (ld-target engine):
```
├── 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)
├── Engine → ld-target (NP 4.0 inspired, open-source)
├── Provides → qb-target + qtarget (17mov_Electrician)
├── Exports → AddBoxZone, AddTargetEntity, AddTargetModel, etc.
── Consumatori → t1ger_lib, toate resursele cu target options
├── NUI → html/ (style.css, interaction.css, script.js)
├── Texturi → stream/ (circle_marker.ytd, lunny_ui.ytd)
├── Zone markers → DrawSprite pe Zones (nu pe entități externe)
└── Dependență → PolyZone
```
---
@@ -359,7 +363,6 @@ graph TD
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
@@ -375,7 +378,6 @@ graph TD
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
```
@@ -399,4 +401,4 @@ graph TD
| 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 |
| qb-target behavior | t1ger_lib, toate resursele cu AddTargetEntity/Model, 17mov_Electrician (qtarget) |
+2 -1
View File
@@ -113,7 +113,7 @@ const teamMap={"17mov":"17 Movement",wasabi:"Wasabi",quasar:"Quasar",kq:"KuzQual
const nodes=[
// === QBCORE ===
{id:"qb-core",team:"qb",r:32,desc:"Nucleul QBCore — jobs, items, player, events",keywords:"framework core player job item shared"},
{id:"qb-target",team:"qb",r:16,desc:"Target system — interact cu entități",keywords:"target interact eye"},
{id:"qb-target",team:"qb",r:18,desc:"Target system (ld-target engine) — provides qb-target + qtarget",keywords:"target interact eye ld-target qtarget provide"},
{id:"qb-menu",team:"qb",r:10,desc:"Menu system QBCore",keywords:"menu context"},
{id:"qb-smallresources",team:"qb",r:14,desc:"Consumables, AFK, seatbelt etc",keywords:"consumable food drink stress seatbelt"},
{id:"qb-input",team:"qb",r:8,desc:"Input dialog QBCore",keywords:"input dialog form"},
@@ -246,6 +246,7 @@ const links=[
{s:"wasabi_bridge",t:"qb-core",type:"export",label:"GetCoreObject"},
{s:"luxu_admin",t:"qb-core",type:"export",label:"GetCoreObject"},
{s:"qb-target",t:"qb-core",type:"export",label:"GetCoreObject"},
{s:"17mov_Electrician",t:"qb-target",type:"export",label:"AddTargetEntity (via qtarget provide)"},
{s:"qb-menu",t:"qb-core",type:"export",label:"GetCoreObject"},
{s:"qb-smallresources",t:"qb-core",type:"export",label:"GetCoreObject"},
{s:"qb-management",t:"qb-core",type:"export",label:"GetCoreObject"},
+171 -49
View File
@@ -20,7 +20,7 @@
| **Mechanic Job** | t1ger_mechanic |
| **HUD** | 17mov_Hud |
| **Voice** | pma-voice |
| **Target System** | qb-target |
| **Target System** | qb-target (ld-target engine, provides qtarget) |
| **Server Port** | 30110 |
| **Max Clients** | 8 |
| **Game Build** | 3570 |
@@ -34,12 +34,28 @@
```
resources/
├── [cfx-default]/ # CFX default resources
├── [cfx-default]/
│ ├── [local]/ # .gitkeep (empty)
│ ├── [managers]/
│ │ ├── mapmanager/
│ │ └── spawnmanager/
│ └── [system]/
│ ├── [builders]/
│ ├── baseevents/
│ └── sessionmanager/
├── [framework]/
│ ├── [core]/
│ │ ├── qb-core/ # QBCore framework
│ │ ├── qb-target/ # Target system
│ │ ├── qs-inventory/ # Quasar inventory
│ │ ├── qb-core/ # QBCore framework (Quasar fork 1.3.0)
│ │ ├── qb-target/ # Target system (ld-target engine, provides qtarget)
│ │ ├── qb-menu/ # QBCore menu
│ │ ├── qb-smallresources/ # QBCore small resources
│ │ ├── ox_lib/ # Overextended lib
│ │ ├── [inventory]/ # ★ Quasar Advanced Inventory v1.5.66
│ │ │ ├── qs-inventory/ # Resursa principală
│ │ │ ├── qs-inventory-objects/ # Props stream
│ │ │ ├── qs-advancedshops/ # Shopuri avansate
│ │ │ ├── [sql]/ # SQL importat
│ │ │ └── [dlc]/
│ │ └── no-npc/ # Remove ambient NPCs
│ ├── [base]/
│ │ ├── [auth]/
@@ -47,20 +63,20 @@ resources/
│ │ │ ├── 17mov-plugin-char-creator/ # Spawn outfit in creator
│ │ │ └── connectqueue/ # Queue system
│ │ ├── [ui]/
│ │ │ ── 17mov_Hud/ # HUD system
│ │ │ └── rv-chat/ # ★ Custom RV chat (VPS only, lipsește din LOCAL — trebuie copiat)
│ │ │ ── 17mov_Hud/ # HUD system
│ │ └── [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_BuilderJob/ # Builder job
│ │ │ ├── 17mov_Deliverer/ # Delivery job
│ │ │ ├── 17mov_Postman/ # Postman job
│ │ │ ├── 17mov_Electrician/ # Electrician job (uses qtarget)
│ │ │ ├── 17mov_GarbageCollector/ # Garbage job (★ license check)
│ │ │ ├── 17mov_Lumberjack/ # Lumberjack job
│ │ │ ├── 17mov_Miner/ # Miner job
│ │ │ ├── 17mov_OilRig/ # Oil rig job
│ │ │ ├── 17mov_Postman/ # Postman job
│ │ │ ├── 17mov_TreasureHunter/ # Treasure hunter job
│ │ │ ├── 17mov_WindowCleaning/ # Window cleaning job
│ │ │ └── aty_busjob/ # Bus driver job
│ │ └── [legal]/
│ │ ├── [police]/
@@ -69,49 +85,72 @@ resources/
│ │ │ ├── codem-dispatch/ # Dispatch alerts
│ │ │ └── codem-mdtProp/ # MDT prop
│ │ ├── [ambulance]/
│ │ │ └── wasabi_ambulance/ # Ambulance job (provides qb-ambulancejob)
│ │ │ └── wasabi_ambulance/ # Ambulance job
│ │ ├── [mechanic]/
│ │ │ ── t1ger_mechanic/ # Mechanic job
│ │ │ ── t1ger_mechanic/ # Mechanic job
│ │ │ ├── t1ger_carlift/ # Car lift
│ │ │ ├── t1ger_mechanicprops/ # Mechanic props
│ │ │ └── jo_towtruck/ # Tow truck
│ │ └── [tuner]/
│ │ ── t1ger_tuningsystem/ # Tuning system
│ │ ── t1ger_tuningsystem/ # Tuning system
│ │ └── t1ger_lib/ # T1GER library
│ ├── [depends]/
│ │ ├── bob74_ipl/ # IPL loader v2.6.0 (interiors, DLC maps)
│ │ ├── ox_lib/ # Overextended lib
│ │ ├── Howdy-Minigame/ # Minigame lib
│ │ ├── MugShotBase64/ # Mugshot generation
│ │ ├── PolyZone/ # Zone management
│ │ ├── VehicleDeformation/ # Vehicle damage
│ │ ├── bob74_ipl/ # IPL loader v2.6.0
│ │ ├── interact-sound/ # Sound interactions
│ │ ├── mhacking/ # Hacking minigame
│ │ ├── oxmysql/ # MySQL adapter
│ │ ├── phone-radio/ # Phone radio
│ │ ├── phone-recorder/ # Phone recorder
│ │ ├── phone-render/ # Phone render
│ │ ├── progressbar/ # Progress bars
│ │ ├── screenshot-basic/ # Screenshots
│ │ ├── VehicleDeformation/ # Vehicle damage
│ │ ├── wasabi_bridge/ # Wasabi framework bridge
│ │ └── xsound/ # Sound system
│ └── [addons]/
│ ├── 0r_idcard/ # ID card system
│ ├── 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
│ ├── [housing]/
│ ├── qs-housing/ # Housing (Quasar)
├── qs-weed/ # Weed growing
│ └── [dlc/img/props/shells/sql]/ # Housing assets
│ ├── [notify]/
│ └── qs-notify/ # Quasar notifications
── [quasar]/
│ │ ├── qs-advancedgarages/ # Garages v5.0.20
│ │ ├── qs-shops/ # Shops
│ │ ├── qs-smartphone-pro/ # Smartphone PRO
│ │ └── qs-vehiclekeys/ # Vehicle keys v4.0.13
│ ├── ac-carcontrol/ # Car control
│ ├── bit-driverschool/ # Driving school
│ ├── qb-input/ # QBCore input dialog
│ ├── qb-interior/ # QBCore interiors
│ ├── qb-management/ # Boss/gang menus
│ ├── qb-weathersync/ # Weather & time
│ ├── rv-devtools/ # ★ RV dev tools
│ ├── rv-itemsonback/ # ★ RV items on back
│ ├── rv-license-dialog/ # ★ RV license dialog NUI
│ ├── rv-maphold/ # ★ RV map hold
│ └── svdden_banking/ # Banking system
├── [stream]/
│ ├── [admin-outfit]/AdminPack/ # Admin clothing streaming
│ ├── [mlos]/ # Map interiors
│ ├── 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
│ ├── [vehs]/ # Custom vehicles
│ ├── minimap/ # Custom minimap
│ ├── phone-props/ # Phone props
│ ├── rv-props/ # RV custom props
│ └── squidgame/ # Squid game MLO
├── [voice]/
── pma-voice/ # Voice system
│ └── codem-radio/ # Radio system (VPS only — NU e pe LOCAL)
── pma-voice/ # Voice system
└── luxu_admin/ # Admin panel (top-level)
```
### Load Order (`resources.cfg`)
```
[cfx-default] → ox_lib → [core] → [depends] → [voice] → [auth] → [ui] →
[jobs] → [addons] → rv-license-dialog → kq_carheist → [mlos] → [vehs] → minimap → phone-props →
[casino] → [stream] → luxu_admin → [weapons]
[cfx-default] → ox_lib → [core] → [depends] → [inventory] → [voice] → [auth] → [ui] →
[jobs] → [addons] → qs-weaponsonback → rv-license-dialog → kq_carheist →
[mlos] → [vehs] → minimap → phone-props → [casino] → [stream] → luxu_admin
```
---
@@ -214,8 +253,8 @@ qbcore.god → group.admin → qbcore.admin → qbcore.mod
- **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
- **Character Delete** (`qb-core/server/player.lua` L541): `playertables` — comentat `apartments` (tabel inexistent) și `phone_messages` (coloana citizenid nu există, qs-smartphone-pro). Restul active: players, bank_accounts, crypto_transactions, phone_invoices, playerskins, player_contacts, player_houses, player_mails, player_outfits, player_vehicles
- **⚠️ PENDING**: `crypto_history` table has ~3,971 rows causing oversized queries — needs periodic cleanup or LIMIT
---
@@ -433,9 +472,26 @@ Toate resursele 17mov au fișiere encrypted (FXAP) dar următoarele sunt **edita
---
## 🎯 Interaction System (qb-target)
## 🎯 Interaction System (qb-target / ld-target engine)
De la **2026-03-31**, toate resursele folosesc **qb-target** (third-eye system) ca sistem de interacțiune.
De la **2026-04-08**, sistemul de target este **qb-target** bazat pe **ld-target** (engine open-source NP 4.0 inspired).
### Fișiere Cheie
| Fișier | Scop |
|--------|------|
| `fxmanifest.lua` | `provide 'qtarget'` — compatibilitate cu 17mov_Electrician |
| `client.lua` | Engine principal (raycast, exports, zone markers) |
| `init.lua` | Config (DrawSprite=true, Peds={}) |
| `interaction/interaction.lua` | 3-stage interaction (dot→hexagon→menu) |
| `html/` | NUI (style.css, interaction.css, script.js, index.html) |
| `stream/` | circle_marker.ytd + lunny_ui.ytd (texturi interacțiune) |
### Exports Disponibile
`AddBoxZone`, `AddCircleZone`, `AddPolyZone`, `AddEntityZone`, `AddComboZone`, `RemoveZone`,
`AddTargetEntity`, `RemoveTargetEntity`, `AddTargetModel`, `RemoveTargetModel`, `AddTargetBone`, `RemoveTargetBone`,
`AddGlobalPed`, `AddGlobalVehicle`, `AddGlobalObject`, `AddGlobalPlayer`,
`RemoveGlobalPed`, `RemoveGlobalVehicle`, `RemoveGlobalObject`, `RemoveGlobalPlayer`,
`SpawnPed`, `RemoveSpawnedPed`, `DeletePeds`, `IsTargetActive`, `IsTargetSuccess`
### Config Flag per DevTeam
| DevTeam | Config Key | Valoare |
@@ -451,6 +507,11 @@ De la **2026-03-31**, toate resursele folosesc **qb-target** (third-eye system)
### Excepție
- **qs-advancedgarages** — nu suportă qb-target (doar ox_target / qb-radialmenu / none)
### Zone Markers
- Circle dots apar pe **Zones** (BoxZone, CircleZone) când ALT e ținut apăsat
- Entitățile adăugate cu `AddTargetEntity()` NU au markere la distanță (design original ld-target)
- Culoare DrawSprite: RGB(92, 151, 247) = #5c97f7 albastru
---
## 🖥️ 17mov_Hud — API Reference
@@ -507,11 +568,72 @@ exports["17mov_Hud"]:ToggleComponentVisibility("name", bool) -- arată/ascund
- **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
### qb-target (ld-target engine — migrat 2026-04-08)
- **Locație**: `resources/[framework]/[core]/qb-target/`
- **Engine**: ld-target (open-source, NP 4.0 inspired)
- **provide**: `qtarget` (compatibilitate 17mov_Electrician)
- **Config.Peds**: Golit (fără demo NPC-uri Lunny)
- **Culori NUI**: Teal original (#00F8B9) — planificat switch la #5c97f7 albastru
- **Dependență**: PolyZone
- **Status**: ✅ Funcțional complet, exports verificate, F8 curat
### rv-itemsonback (Items vizibile pe corp + Admin Menu)
- **Locație**: `resources/[framework]/[addons]/rv-itemsonback/`
- **Scop**: Afișare props pe corpul jucătorului din inventar (medikit, etc.) + admin menu live edit
- **Fișiere**: `fxmanifest.lua`, `config.lua`, `client.lua`, `server.lua`, `data/items.json`
- **Dependențe**: ox_lib, qb-core
- **Manifest**: `fx_version 'bodacious'` (NU cerulean — nu încarcă scripturile!)
- **Admin Menu**: `/itemsonback` — ox_lib context menu
- Search items din QBCore.Shared.Items
- Ajustare live pos/rot cu preview transparent
- Selectare bone (pelvis, spine, etc.)
- Salvare persistentă în `data/items.json`
- `/clearpreview` — cleanup emergency prop
- **Auto-cleanup**: Safety thread curăță preview-ul dacă rămâne blocat (3s)
- **Disable Idle**: `InvalidateIdleCam()` + `N_0xf4f2c0d4ee209e20()` + `SetPedCanPlayAmbientAnims(false)`
- **Target Dummy**: `/spawndummy` (NPC random, stă pe loc, rănibil, rămâne mort), `/killdummy` (cleanup)
- **Ensure**: În `[addons]` folder, pornește cu `ensure [addons]`
### qs-inventory Fixes (2026-04-01)
- **Config.Genders**: Adăugat `[0] = 'Male', [1] = 'Female'` — QBCore folosește 0-indexed, Quasar 1-indexed
- **Config.Framework**: Forțat `'qb'` (auto-detect eșua)
- **Config.Debug**: `false` (elimină spam consolă)
- **RemoveItem.lua**: `pcall` la `handleDeleteItem` export (previne crash qs-smartphone-pro vechi)
### Quasar Advanced Inventory Migration (2026-04-02)
- **qb-core fork**: Instalat Quasar pre-configured qb-core 1.3.0
- **StarterItems** (`qb-core/shared/main.lua` L6): DOAR `phone` + `map` (id_card de la mugshot, driver_license de la școală)
- **Clothing items** (`qb-core/shared/items.lua`): Adăugat `chain`, `vest`, `bracelets`, `watch` (copiate din qs-inventory items.lua)
- **playertables** (`qb-core/server/player.lua` L541): Comentat `apartments` + `phone_messages`
- **qs-inventory config**: `Language='ro'`, `ServerName='RED VALLEY'`, `Debug=true` (temporar)
- **qs-housing SQL**: Importat din docs + folder (houselocations, player_houses, house_decorations, etc.)
### ⚠️ CRITICAL: Checklist la Update qb-core
1. `shared/main.lua` → StarterItems: DOAR phone + map
2. `server/player.lua` → playertables: FĂRĂ apartments, FĂRĂ phone_messages
3. `shared/items.lua` → Clothing: chain, vest, bracelets, watch TREBUIE să existe
---
## 📜 Changelog Summary (reverse chronological)
| Date | Focus |
|------|-------|
| 2026-04-10 | **Resource cleanup**: mutat resurse neutilizate în backup, verificat structura completă, actualizat knowledge base |
| 2026-04-08 | **qb-target migration** (ld-target engine): folder rename rv-target→qb-target, provide qtarget, demo peds cleanup, blue branding NUI (#5c97f7), fresh copy din ld-target original, F8 erori rezolvate (toate exporturile funcționale) |
| 2026-04-02 | **Quasar Advanced Inventory migration** (v1.5.66), qb-core fork Quasar 1.3.0, qs-housing SQL import, clothing items fix (+chain/vest/bracelets/watch), playertables fix (-apartments/-phone_messages), StarterItems fix (phone+map only), rv-itemsonback v2.0 |
| 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) |
| 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 |
-4
View File
@@ -10,11 +10,7 @@ ensure [jobs]
ensure [addons]
ensure qs-weaponsonback # safety net ne asiguram ca se incarca
ensure rv-license-dialog
ensure kq_carheist
ensure [mlos]
ensure [vehs]
ensure minimap
ensure phone-props
ensure [casino]
ensure [stream]
ensure luxu_admin
@@ -1,3 +0,0 @@
You can view the guide here
https://documentation.rcore.cz/paid-resources/rcore_casino/lucky-wheel-and-podium-vehicle#replacing-the-podium-vehicle
@@ -1,296 +0,0 @@
QBCore = nil
ESX = nil
PlayerData = {}
function RefreshPlayerData()
if Framework.Active == 1 then
PlayerData = ESX.GetPlayerData()
elseif Framework.Active == 2 then
PlayerData = UpdatePlayerDataForQBCore()
elseif Framework.Active == 3 then
PlayerData = UpdatePlayerDataForStandalone()
elseif Framework.Active == 4 then
PlayerData = UpdatePlayerDataForCustomFramework()
end
return PlayerData
end
function IsPlayerWorkingAtCasino()
return (PlayerData.job and PlayerData.job.name == Config.JobName)
end
--- @param job string
--- @param GradeArray table
--- will return true/False if player is in this grade.
function IsAtJob(job, GradeArray, MinGrade, MaxGrade)
if PlayerData == nil or PlayerData.job == nil then
return false
end
if not MaxGrade then
MaxGrade = MinGrade
end
local gradeLevel = PlayerData.job.grade
if not gradeLevel then
gradeLevel = 0
end
if GradeArray == nil then
return PlayerData.job.name == job and gradeLevel >= MinGrade and gradeLevel <= MaxGrade
end
return PlayerData.job.name == job and
(GradeArray[PlayerData.job.grade_name] or (gradeLevel >= MinGrade and gradeLevel <= MaxGrade))
end
function RemovePlayerHunger(itemName)
if Framework.Active == 1 then
TriggerEvent('esx_status:add', 'hunger', 200000)
end
if Framework.Active == 2 then
TriggerEvent("consumables:client:Eat", itemName)
end
if Framework.Active == 4 then
-- implement function that removes player hunger
end
end
function RemovePlayerThirst(itemName)
if Framework.Active == 1 then
TriggerEvent('esx_status:add', 'thirst', 200000)
end
if Framework.Active == 2 then
TriggerEvent("consumables:client:Drink", itemName)
end
if Framework.Active == 4 then
-- implement function that removes player thirst
end
end
if Framework.Active == 1 then
CreateThread(function()
GetCoreObject(Framework.Active, Framework.ES_EXTENDED_RESOURCE_NAME, function(object)
ESX = object
if ESX and ESX.IsPlayerLoaded() then
PlayerData = ESX.GetPlayerData()
TriggerEvent("rcore_casino:PlayerDataLoaded")
end
end)
end, "GetPlayerData ESX")
RegisterNetEvent(Events.ES_PLAYER_LOADED, function(data)
PlayerData = data
TriggerEvent("rcore_casino:DataHasChanged")
end)
RegisterNetEvent(Events.ES_PLAYER_JOB_UPDATE, function(data)
PlayerData.job = data
TriggerEvent("rcore_casino:DataHasChanged")
end)
end
if Framework.Active == 4 then
function UpdatePlayerDataForCustomFramework()
local inventory = {}
local accounts = {}
local job = {}
-- client side player inventory
table.insert(inventory, {
name = "casino_chips",
count = 123
})
-- client side player accounts
table.insert(accounts, {
money = 123,
name = "cash",
label = "cash"
})
table.insert(accounts, {
money = 123,
name = "bank",
label = "bank"
})
-- client side player job data
job = {
id = -1,
name = "unemployed",
label = "unemployed",
grade_name = "unemployed",
grade = 0,
}
local structure = {
job = job,
inventory = inventory,
accounts = accounts
}
return structure
end
PlayerData = UpdatePlayerDataForCustomFramework()
end
if Framework.Active == 3 then
function UpdatePlayerDataForStandalone()
if not PLAYER_CACHE then
return {}
end
local inventory = {}
for k, v in pairs(PLAYER_CACHE.fakeInventory) do
table.insert(inventory, {
name = k,
count = v
})
end
local accounts = {}
for k, v in pairs(PLAYER_CACHE.fakeAccounts or {}) do
table.insert(accounts, {
money = v,
name = k,
label = k
})
end
local x = {
job = {
id = -1,
name = PLAYER_CACHE.jobGrade and "casino" or "unemployed",
label = PLAYER_CACHE.jobGrade and "casino" or "unemployed",
grade_name = PLAYER_CACHE.jobGrade,
grade = PLAYER_CACHE.jobGrade
},
inventory = inventory,
accounts = accounts
}
return x
end
PlayerData = UpdatePlayerDataForStandalone()
end
if Framework.Active == 2 then
function UpdatePlayerDataForQBCore()
local pData = QBCore.Functions.GetPlayerData()
local jobName = "none"
local gradeName = "none"
local grade = 0
if pData.job then
jobName = pData.job.name or "none"
-- I am not sure if I should check if its nil or not so I will just make sure so it wont break anything.
if pData.job.grade then
local gradeData = pData.job.grade
gradeName = gradeData.name
if gradeData.level then
grade = gradeData.level
end
elseif pData.job.grades then
grade = GetGreatestNumber(pData.job.grades)
end
end
local stacked = {}
local inventory = {}
if pData.items then
for slot = 1, 50, 1 do
local v = pData.items[slot]
if v and v.name then
if stacked[v.name] then
stacked[v.name] = stacked[v.name] + (v.amount or v.count)
else
stacked[v.name] = (v.amount or v.count)
end
end
end
end
for k, v in pairs(stacked) do
table.insert(inventory, {
name = k,
count = v
})
end
local accounts = {}
for k, v in pairs(pData.money or {}) do
table.insert(accounts, {
money = v,
name = k,
label = k
})
end
local x = {
job = {
id = -1,
name = jobName,
grade_name = gradeName,
grade = grade
},
inventory = inventory,
accounts = accounts
}
return x
end
CreateThread(function()
GetCoreObject(Framework.Active, Framework.QB_CORE_RESOURCE_NAME, function(object)
QBCore = object
if QBCore and QBCore.Functions.GetPlayerData() then
PlayerData = UpdatePlayerDataForQBCore()
TriggerEvent("rcore_casino:PlayerDataLoaded")
end
end)
end, "GetPlayerData QBCore")
RegisterNetEvent(Events.QB_PLAYER_LOADED, function()
PlayerData = UpdatePlayerDataForQBCore()
TriggerEvent("rcore_casino:DataHasChanged")
end)
RegisterNetEvent(Events.QB_PLAYER_JOB_UPDATE, function()
PlayerData = UpdatePlayerDataForQBCore()
TriggerEvent("rcore_casino:DataHasChanged")
end)
end
-- Built-In HUD
function RegisterBuiltInHud()
if not Framework.BUILTIN_HUD_CHIPS then
return
end
if Framework.Active == 1 then
local chipTpl = '<div><img src="img/accounts/' .. Framework.BUILTIN_HUD_CHIPS_ICON .. '"/>&nbsp;{{chips}}</div>'
ESX.UI.HUD.RegisterElement('casinochips', 0, 0, chipTpl, {
chips = ESX.Math.GroupDigits(PLAYER_CHIPS)
})
end
end
function UpdateBuiltInHud()
if not Framework.BUILTIN_HUD_CHIPS then
return
end
if Framework.Active == 1 then
ESX.UI.HUD.UpdateElement("casinochips", {
chips = ESX.Math.GroupDigits(PLAYER_CHIPS)
})
end
end
function UnregisterBuiltInHud()
if not Framework.BUILTIN_HUD_CHIPS then
return
end
if Framework.Active == 1 then
ESX.UI.HUD.RemoveElement("casinochips")
end
end
@@ -1,65 +0,0 @@
.key {
font-family: 'Segoe UI Light', sans-serif;
color: black;
background: white;
border-radius: 2px;
user-select: none;
height: 2.8vh;
line-height: 2.8vh;
margin-right: 0.7vh;
margin-left: 1.0vh;
display: inline-block;
text-align: center;
}
.keySmall {
-webkit-text-stroke: 1.00px;
font-size: 1.70vh;
width: 2.8vh;
justify-content: center;
}
.keyBig {
-webkit-text-stroke: 0.50px;
font-size: 1.50vh;
width: 4.5vh;
}
.keyCustom {
height: 2.8vh;
width: 2.8vh;
margin-right: 1.0vh;
margin-left: 0.8vh;
}
#instbuttons {
background: #000000c6;
color: white;
width: fit-content;
display: none;
justify-content: center;
align-items: center;
height: 3.5vh;
padding-left: 1.0vh;
position: absolute;
font-family: 'Segoe UI Light', sans-serif;
font-weight: 100;
font-size: 1.70vh;
line-height: 1.70vh;
-webkit-text-stroke: 0.10px;
border-radius: 3px;
position: absolute;
bottom: 1.70vh;
right: 1.35vw;
}
.justText {
user-select: none;
margin-top: 1.2vh;
margin-left: 1.2vh;
}
body {
background: url(./img/unknown.png);
}
@@ -1,21 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="./css/instbuttons.css" type="text/css">
</head>
<body style="background: transparent !important;">
<div id="instbuttons">
</div>
<div id="nuichips" style="height: 5vh;display:none;">
<img style="float: left; width: auto; height: 100%;"
src=" data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFUAAABVCAYAAAA49ahaAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAC4jAAAuIwF4pT92AAABiklEQVR42u2aWw6DMBDEQtX7X5l+gSpoIZCdfSD7AMmOW0EYaA0AAAAAAAAAAAAAIIgpeoCFeZ7n4TDTlCJP2BAWEk/DBUl23dRD5N+gjoJdNoqUuQvsIFe6QSaZu+BCubKFMwtdw4vEShatIHQVIBBrvmAloasEY7Gmi1UUuoowFPuKDvNEkCoAqQKQKgCpApAqgHNqsz+n8k8VwGNqhcfUhQpiSxUqC5nFlqz+vskkt3xJvYXXKTdYpJ0F8JTbO4uldGn1d2VQ71fUI7OezmG10JGYLO/jvWZ8eweJEOx9LXeR+i+gUnDkTdFd6lHwEcmpjm3WC2YK1y2BQiU/FCoUKsbhKxYqreWUqz7WUago9vAMRKFygyvlRJYvqR9bqFgKvrtnGamjAx/Jtl6znFTV8FnnolARkOrZP6pQsf5xQ1uqLZnOsyPw7C+4BNFSCXjkjaI7PIWKYWgKFePAFCqGQasWKr1k+kJFsqf3hlsUgqM/3giX+osroqMFAgAAAAAAAAAAAACk4gPL3+w48nO4igAAAABJRU5ErkJggg==" />
<div id="nuichipsvalue"
style="float: left; line-height: 5vh;vertical-align:middle; font-size: 3vh; font-weight: bold; color: white;">
12345</div>
</div>
</body>
<script src="./scripts/instbuttons.js" type="text/javascript"></script>
</html>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 372 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 322 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 341 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 177 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 453 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 241 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 568 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 690 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 349 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 596 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 761 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 903 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

@@ -1,111 +0,0 @@
var container = document.getElementById("instbuttons");
var inputId = 0;
var keyMap = {
44: [0, "Q.png", 2, "rb.png"],
46: [0, "E.png", 2, "dirr.png"],
49: [0, "F", 2, "y.png"],
134: [0, "D", 2, "rb.png"],
139: [0, "S", 0, "RT"],
176: [0, "176_pc.png", 2, "a.png"],
177: [1, "177_pc.png", 2, "b.png"],
187: [0, "187.png", 2, "dird.png"],
188: [0, "188.png", 2, "diru.png"],
189: [0, "189_pc.png", 2, "dirl.png"],
190: [0, "190_pc.png", 2, "dirr.png"],
193: [0, "193_pc.png", 2, "x.png"],
201: [0, "176_pc.png", 2, "a.png"],
202: [0, "Esc.png", 2, "b.png"],
203: [0, "193_pc.png", 2, "x.png"],
204: [0, "Tab.png", 2, "y.png"],
206: [0, "E.png", 2, "rb.png"],
207: [1, "207.png", 0, "LT"],
208: [1, "208.png", 0, "RT"],
210: [1, "LCtrl.png", 2, "r.png"],
237: [2, "237.png", 2, "237.png"],
238: [2, "238.png", 2, "238.png"],
};
function CreateKey(keyType, keyContent) {
if (keyType == 0) {
// square key small
var o = document.createElement("span");
o.className = "key keySmall";
if (keyContent.includes(".png")) {
o.innerHTML = "<img src='./keys/" + keyContent + "' style='width:100%;height:100%'>";
}
else {
o.innerHTML = keyContent;
}
return o;
}
else if (keyType == 1) {
//square key large
// square key small
var o = document.createElement("span");
o.className = "key keyBig";
if (keyContent.includes(".png")) {
o.innerHTML = "<img src='./keys/" + keyContent + "' style='width:100%;height:100%'>";
}
else {
o.innerHTML = keyContent;
}
return o;
}
else if (keyType == 2) {
//no square, just img
var o = document.createElement("span");
o.className = "keyCustom";
o.innerHTML = "<img src='./keys/" + keyContent + "' style='width:100%;height:100%'>";
return o;
}
}
function AppendKey(keyCode, keyCaption, extraKey) {
var keyType = keyMap[keyCode][inputId];
var keyContent = keyMap[keyCode][inputId + 1]
var c = document.createElement("p");
c.innerHTML = keyCaption;
c.className = "justText";
container.appendChild(c);
container.appendChild(CreateKey(keyType, keyContent));
if (extraKey) {
keyType = keyMap[extraKey][inputId];
keyContent = keyMap[extraKey][inputId + 1]
var o = CreateKey(keyType, keyContent);
o.style.marginLeft = "-0.00vh";
container.appendChild(o);
}
}
window.addEventListener('message', (event) => {
let action = event.data.action;
if (action == "drawInstButtons") {
container.innerHTML = "";
var buttons = event.data.buttons;
inputId = event.data.isGamepad == true ? 2 : 0;
container.style.display = (buttons && buttons.length > 0 ? "flex" : "none");
if (buttons) {
for (let index = buttons.length - 1; index >= 0; index--) {
const el = buttons[index];
AppendKey(el.key, el.title, el.extraKey)
}
}
}
if (action == "chipshud") {
document.getElementById("nuichipsvalue").innerHTML = event.data.chips;
document.getElementById("nuichips").style.display = event.data.chips != -1 ? "block" : "none";
}
})
@@ -1,342 +0,0 @@
-- cashier instances
local cashiers = {}
local history = {}
-- session
local s_cashierCoords = nil
local s_myCashier = nil
local s_lastMoneyLimit = 100
-- get cashier instance from coords
local function GetCashierFromCoords(coords)
if not coords then
return
end
DebugStart("GetCashierFromCoords")
for _, o in pairs(cashiers) do
if #(coords - o.coords) < 0.2 then
return o
end
end
return nil
end
-- generate list of balances (rageui)
function CashierGetBalanceOptions(balance, max)
DebugStart("CashierGetBalanceOptions")
if max < balance then
balance = max
end
local options = {}
local c = 0
local x = 0
while x < balance do
c = c + 1
if x < 100 then
x = x + 10
elseif x < 1000 then
x = x + 100
elseif x < 10000 then
x = x + 500
elseif x < 100000 then
x = x + 10000
elseif x < 1000000 then
x = x + 100000
else
x = x + 1000000
end
local option = Clamp(x, 1, balance)
option = math.ceil(option)
option = math.round(option / 10) * 10
if option >= 10 and balance >= option then
table.insert(options, option)
end
if c > 200 then
break
end
end
if #(options) == 0 then
table.insert(options, 0)
end
return options
end
function CashierGetMoneyBalanceOptions(balance)
DebugStart("CashierGetBalanceOptions")
local options = {}
local c = 0
local x = 0
balance = math.ceil(balance / Config.ExchangeRate)
while x < balance do
c = c + 1
if x < 100 then
x = x + 10
elseif x < 1000 then
x = x + 100
elseif x < 10000 then
x = x + 500
elseif x < 100000 then
x = x + 10000
elseif x < 1000000 then
x = x + 100000
else
x = x + 1000000
end
local option = Clamp(x, 1, balance)
option = math.ceil(option)
option = math.round(option / 10) * 10
if option >= 10 and balance >= option then
table.insert(options, option)
end
if c > 200 then
break
end
end
if #(options) == 0 then
table.insert(options, 0)
end
return options
end
-- get chips, pay with money
function Cashier_AcquireChips(amount)
DebugStart("Cashier_AcquireChips")
BlockPlayerInteraction(1500)
TriggerServerEvent("rcore_casino:AcquireChips", amount)
Stats_Increase("rcore_casino_cashier_used", 1)
end
-- get money, pay with chips
function Cashier_TradeInChips(amount)
DebugStart("Cashier_TradeInChips")
BlockPlayerInteraction(1500)
TriggerServerEvent("rcore_casino:TradeInChips", amount)
Stats_Increase("rcore_casino_cashier_used", 1)
end
-- get daily bonus, if enabled
function Cashier_DailyBonus()
DebugStart("Cashier_DailyBonus")
if Config.CASHIER_DAILY_BONUS == 0 then
return
end
if PLAYER_CACHE.lastDailyBonus and PLAYER_CACHE.lastDailyBonus == SERVER_DATE then
return
end
BlockPlayerInteraction(2000)
TriggerServerEvent("rcore_casino:DailyBonus")
end
function Cashier_RequestVIP()
if PROMPT_ACTIVE then
return
end
Cashier_OnQuit()
local message = string.format(Translation.Get("CASHIER_VIP_CONFIRM_MSG"), FormatPrice(Config.CASHIER_VIP_PRICE))
if Config.CASHIER_VIP_DURATION then
message = message ..
string.format(Translation.Get("CASHIER_VIP_CONFIRM_MSG_2"),
FormatTimestamp(Config.CASHIER_VIP_DURATION))
end
FullscreenPrompt(Translation.Get("CASHIER_VIP_CONFIRM_CAPT"), message, function(yes)
if yes then
DebugStart("Cashier_RequestVIP")
TriggerServerEvent("rcore_casino:BecomeVIP")
ResetCashierUISelection(s_lastMoneyLimit)
end
end)
end
function Cashier_OnInteraction(forceCoords)
if forceCoords then
s_cashierCoords = forceCoords
end
DebugStart("Cashier_OnInteraction")
if not CAN_INTERACT then
return
end
if PLAYER_DRUNK_LEVEL >= 1.0 then
return
end
BlockPlayerInteraction(2000)
local usedBefore = history[s_cashierCoords] and true or false
local isDrunk = PLAYER_DRUNK_LEVEL > 0.5
TriggerServerEvent("rcore_casino:Cashier:Use", s_cashierCoords, usedBefore, isDrunk)
end
function Cashier_OnBecomeVIP()
DebugStart("Cashier_OnBecomeVIP")
ResetCashierUISelection(s_lastMoneyLimit)
end
function Cashier_ShowNotifyUI(coords)
if Config.UseTarget then
return
end
DebugStart("Cashier_ShowNotifyUI")
local cashier = GetCashierFromCoords(coords)
if not cashier then
return
end
if cashier.playerId ~= -1 then
InfoPanel_UpdateNotification(Translation.Get("CASHIER_BEING_USED"))
return
end
InfoPanel_UpdateNotification(Translation.Get("CASHIER_PRESS_TO_USE"))
s_cashierCoords = coords
end
-- load cashiers
function Cashier_Load()
DebugStart("Cashier_Load")
for _, o in pairs(CashierDatas) do
if o.enabled then
local coords = o.coords
local head = o.heading
local model = GetHashKey(o.model)
RequestModelAndWait(model)
local cashier = {}
cashier.playerId = -1
cashier.coords = coords
cashier.ped = CreatePed(2, model, coords, head, false, false)
o.ped = cashier.ped
SetPedBrave(cashier.ped)
table.insert(cashiers, cashier)
-- target
local targetOffset = GetObjectOffsetFromCoords(coords, head, 0.0, 0.2, 0.5)
local targetData = {{
num = 1,
type = "client",
event = "rcore_casino:Target",
icon = 'fas fa-cash-register',
label = removePlaceholderText(Translation.Get("CASHIER_PRESS_TO_USE")),
targeticon = 'fas fa-cash-register',
canInteract = function(entity, distance, data)
return CAN_INTERACT
end,
drawColor = {255, 255, 255, 255},
successDrawColor = {30, 144, 255, 255},
eventAction = "cashier_enter",
cashierCoords = coords
}}
if Config.TargetUsePeds then
CreateTargetEntity(cashier.ped, targetData)
else
CreateTargetZone(vector3(targetOffset.x, targetOffset.y, targetOffset.z), 3.5, 6.0, 0.0, targetData)
end
end
end
SetCasinoBlip(cashiers[1].coords, 683, Translation.Get("BLIP_CASHIER"), false)
end
RegisterNetEvent("rcore_casino:Cashier:Use")
AddEventHandler("rcore_casino:Cashier:Use", function(coords, playerId, greetings, moneyLimit, canPurchaseVIP, maxMoney, extraData)
local cashier = GetCashierFromCoords(coords)
if not cashier then
return
end
cashier.playerId = playerId
PlayPedAmbientSpeechWithVoiceNative(cashier.ped, greetings, "u_f_m_casinocash_01", "SPEECH_PARAMS_FORCE_NORMAL", 0)
if playerId == GetMyPlayerId() then
UnblockPlayerInteraction()
SetInventoryBusy(true)
SetLastStartedGameType("cashier")
Cashier_ShowMenu(moneyLimit, canPurchaseVIP, maxMoney, extraData)
s_lastMoneyLimit = moneyLimit
s_cashierCoords = coords
s_myCashier = cashier
CAN_MOVE = false
end
end)
RegisterNetEvent("rcore_casino:Cashier:Sessions")
AddEventHandler("rcore_casino:Cashier:Sessions", function(sessions)
for _, v in pairs(sessions) do
local cashier = GetCashierFromCoords(v.coords)
if not cashier then
goto continue
end
cashier.playerId = v.playerId
cashier.coords = v.coords
::continue::
end
end)
RegisterNetEvent("rcore_casino:Cashier:Quit")
AddEventHandler("rcore_casino:Cashier:Quit", function(coords, playerId)
local cashier = GetCashierFromCoords(coords)
if playerId == GetMyPlayerId() then
CAN_MOVE = true
end
if not cashier then
return
end
cashier.playerId = -1
end)
-- trade results
RegisterNetEvent("rcore_casino:TradeResults")
AddEventHandler("rcore_casino:TradeResults", function(chipsNow, moneyNow, comment, moneyLimit, societyNow, pCache)
if chipsNow and chipsNow ~= -1 then
PLAYER_CHIPS = chipsNow
PLAYER_MONEY = moneyNow
s_lastMoneyLimit = moneyLimit
if pCache and type(pCache) == "table" then
PLAYER_CACHE = pCache
end
Casino_AnimateBalance()
if s_myCashier ~= nil then
PlayPedAmbientSpeechWithVoiceNative(s_myCashier.ped, comment, "u_f_m_casinocash_01",
"SPEECH_PARAMS_FORCE_NORMAL", 0)
ResetCashierUISelection(moneyLimit, societyNow)
end
else
Cashier_OnQuit()
local societyMoney = moneyNow
FullscreenPrompt(Translation.Get("CASHIER_TRADEIN_FAILED_CAPT"), Translation.Get("CASHIER_TRADEIN_FAILED_MSG"),
nil, string.format(Translation.Get("CASHIER_SOCIETY_BALANCE"), FormatPrice(societyMoney)))
PlaySound("CHECKPOINT_MISSED", "HUD_MINI_GAME_SOUNDSET")
end
end)
-- on quit
function Cashier_OnQuit()
DebugStart("Cashier_OnQuit")
if Config.CASHIER_MULTITASK then
local cashier = GetCashierFromCoords(s_cashierCoords)
if cashier then
cashier.playerId = -1
end
end
TriggerServerEvent("rcore_casino:Cashier:Quit")
CloseAllMenus()
CAN_MOVE = true
SetInventoryBusy(false)
ForgotLastStartedGameType("cashier")
end
-- destroy all cashiers
function Cashier_Destroy()
DebugStart("Cashier_Destroy")
for _, o in pairs(cashiers) do
ForceDeleteEntity(o.ped)
end
cashiers = {}
end
@@ -1,217 +0,0 @@
DoorSystem = {}
DoorSystem.Pool = {}
DoorSystem.Uid = 0
DoorSystem.EntranceLock = true
function DoorSystem:RegisterDoor(entity, coords, heading, model, group)
if entity then
coords = GetEntityCoords(entity)
model = GetEntityModel(entity)
if not heading then
heading = GetEntityHeading(heading) -- of closed state
end
end
if not group then
group = "casino"
end
local o = {}
o.handle = GetHashKey("casinodoors_" .. DoorSystem.Uid)
o.coords = coords
o.model = model
o.heading = heading
o.entity = entity
o.state = -1
o.group = group
local exist, existHandle = DoorSystemFindExistingDoor(coords.x, coords.y, coords.z, model)
if exist then
o.handle = existHandle
end
if not IsDoorRegisteredWithSystem(o.handle) then
AddDoorToSystem(o.handle, o.model, o.coords.x, o.coords.y, o.coords.z, false, false, false)
end
o.setState = function(state)
if o.state == state then
return
end
o.state = state
DoorSystemSetDoorState(o.handle, state, false, false)
end
o.refresh = function(relink)
if o.state >= 3 then -- this frame only states
DoorSystemSetDoorState(o.handle, o.state, false, true)
end
if not o.entity and relink then
o.entity = GetClosestObjectOfType(o.coords.x, o.coords.y, o.coords.z, 0.10, o.model, false, false, false)
end
if DoesEntityExist(o.entity) and (o.state == 1 or o.state == 4) then -- locked states
SetEntityHeading(o.entity, o.heading)
end
end
o.unlock = function()
o.setState(0)
end
o.lock = function()
o.setState(1)
end
o.open = function(forceUpdate)
o.unlock()
if not forceUpdate then
forceUpdate = false
end
DoorSystemSetOpenRatio(o.handle, -1.0, false, forceUpdate)
end
o.close = function(forceUpdate)
if not forceUpdate then
forceUpdate = false
end
DoorSystemSetOpenRatio(o.handle, 0.0, false, forceUpdate)
end
o.lockLoop = function()
o.setState(4)
end
o.unlockLoop = function()
o.setState(3)
end
o.openLoop = function()
o.open()
o.setState(5)
end
o.closeLoop = function()
o.close()
o.setState(6)
end
table.insert(DoorSystem.Pool, o)
DoorSystem.Uid = DoorSystem.Uid + 1
return o
end
function DoorSystem:GetDoors(group)
local list = {}
for k, v in pairs(DoorSystem.Pool) do
if v.group == group then
table.insert(list, v)
end
end
return list
end
function DoorSystem:Unregister(o)
for i = 1, #DoorSystem.Pool do
if DoorSystem.Pool[i] == o then
table.remove(DoorSystem.Pool, i)
break
end
end
end
function DoorSystem:InitializeCasino()
if #DoorSystem.Pool > 0 then
return
end
-- left wings (entrance)
DoorSystem:RegisterDoor(nil, vector3(927.676880, 49.645515, 81.543098), 328.15661621094 - 90.0, 21324050, "entrance")
DoorSystem:RegisterDoor(nil, vector3(926.188293, 47.248829, 81.543098), 328.15661621094 - 90.0, 21324050, "entrance")
DoorSystem:RegisterDoor(nil, vector3(924.706238, 44.862366, 81.543098), 328.15661621094 - 90.0, 21324050, "entrance")
-- right wings (entrance)
DoorSystem:RegisterDoor(nil, vector3(926.347046, 47.515320, 81.543098), 328.15661621094 + 90.0, 21324050, "entrance")
DoorSystem:RegisterDoor(nil, vector3(924.859009, 45.119484, 81.543098), 328.15661621094 + 90.0, 21324050, "entrance")
DoorSystem:RegisterDoor(nil, vector3(923.376038, 42.731743, 81.543098), 328.15661621094 + 90.0, 21324050, "entrance")
if Config.MapType == 1 then
-- garage <=> interior
DoorSystem:RegisterDoor(nil, vector3(930.422791, 33.263103, 81.242676), 150.0, 901693952, "int2garage")
-- office elevator (normal)
DoorSystem:RegisterDoor(nil, vector3(952.656677, 57.975616, 74.432373), 60.0, -1240156945, "officeelevator")
DoorSystem:RegisterDoor(nil, vector3(953.451599, 59.247688, 74.432373), -120.0, -1240156945, "officeelevator")
-- office elevator (down) (normal)
DoorSystem:RegisterDoor(nil, vector3(976.157166, 73.089081, 69.232674), 60.0, -1240156945, "officeelevator")
DoorSystem:RegisterDoor(nil, vector3(977.429199, 72.294205, 69.232674), -120.0, -1240156945, "officeelevator")
if CASHIER_DOORS then
-- casino staff cashier
local cashierDoors = DoorSystem:RegisterDoor(nil, CASHIER_DOORS.pos, CASHIER_DOORS.heading, 1266543998,
"cashier")
cashierDoors.close()
cashierDoors.lock()
end
elseif Config.MapType == 2 or Config.MapType == 3 then
-- office elevator (gabz)
DoorSystem:RegisterDoor(nil, vector3(993.200623, 55.761406, 74.059692), 60.0, -1240156945, "officeelevator")
DoorSystem:RegisterDoor(nil, vector3(993.992004, 57.035648, 74.059692), -120.0, -1240156945, "officeelevator")
-- office elevator (down) (gabz)
DoorSystem:RegisterDoor(nil, vector3(1016.659668, 70.939056, 68.859993), 60.0, -1240156945, "officeelevator")
DoorSystem:RegisterDoor(nil, vector3(1017.933899, 70.147675, 68.859993), -120.0, -1240156945, "officeelevator")
end
local elevators = DoorSystem:GetDoors("officeelevator")
for k, v in pairs(elevators) do
v.close(true)
end
end
local function RecheckEntranceLock()
local lock = IsActivityEnabled("casinoentrance")
if Config.LeaveThroughTeleport then
lock = false -- always lock if leaving through teleports
end
if lock ~= DoorSystem.EntranceLock then
DoorSystem.EntranceLock = lock
for k, v in pairs(DoorSystem.Pool) do
if v.group == "entrance" or v.group == "int2garage" then
if lock then
v.close()
v.unlock()
else
v.lockLoop()
v.close()
end
end
end
end
end
local function HandleDoors(relink)
local playerPosition = GetEntityCoords(PlayerPedId())
local sleepTime = 1000
if relink then
RecheckEntranceLock()
end
for k, v in pairs(DoorSystem.Pool) do
if #(playerPosition - v.coords) < 10.0 then
v.refresh(relink)
sleepTime = 0
end
end
Wait(sleepTime)
end
DoorSystem:InitializeCasino()
CreateThread(function()
local checkTime = GetGameTimer() + 2000
while true do
local timer = GetGameTimer()
local check = timer > checkTime
HandleDoors(check)
if check then
checkTime = timer + 2000
end
end
end, true)
@@ -1,85 +0,0 @@
2434503858;-2.3212890625;19.685930252075;-0.19699859619141;53.98041229248;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_CHAIR_FOOD;NOANIM;NOANIM;2
2526968950;-18.206115722656;5.7392959594727;0.19771575927734;341.53660888672;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL_EATING;NOANIM;NOANIM;3
2600762591;-18.9736328125;-19.563510894775;0.44073486328125;54.179363250732;0/3/0;1/0/0;2/3/0;3/5/0;4/3/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;-35.496276855469;-14.365493774414;0.069168090820313;159.56734924316;0/9/0;1/0/0;2/2/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-32.623840332031;-22.029476165771;0.45345306396484;162.71843261719;0/2/1;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
279228114;-20.952941894531;5.3609809875488;-0.15920257568359;100.40215301514;0/4/0;1/0/0;2/8/1;3/5/2;4/4/2;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
2434503858;9.7550659179688;-9.0881958007813;-0.7998046875;202.15742492676;0/11/2;1/0/0;2/14/1;3/13/2;4/8/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2434503858;-31.058898925781;-9.5620651245117;0.46534729003906;154.19045715332;0/12/2;1/0/0;2/15/1;3/15/2;4/10/2;5/0/0;6/7/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_HIGH_CLASS;NOANIM;NOANIM;2
279228114;-34.730529785156;-13.453735351563;0.041999816894531;-30.239999771118;0/3/0;1/0/0;2/7/0;3/3/1;4/2/2;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
337826907;-22.536804199219;-30.46821975708;1.2356948852539;42.482411193848;0/4/0;1/1/0;2/4/0;3/1/0;4/0/0;5/0/0;6/1/0;7/2/0;8/3/0;9/0/0;10/1/0;11/1/0;WORLD_HUMAN_STAND_IMPATIENT;NOANIM;NOANIM;1
2600762591;-9.4402465820313;7.5219421386719;-0.59600067138672;23.760000228882;0/10/2;1/0/0;2/15/0;3/1/1;4/11/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
337826907;13.319458007813;0.85515213012695;-0.97772979736328;253.39671020508;0/5/0;1/0/0;2/5/0;3/0/4;4/1/0;5/0/0;6/0/0;7/3/0;8/2/0;9/0/0;10/2/0;11/2/0;WORLD_HUMAN_SMOKING;NOANIM;NOANIM;1
279228114;0.71099853515625;11.82998085022;-0.55995941162109;125.95603637695;0/1/0;1/0/0;2/2/1;3/0/2;4/1/2;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;-33.015808105469;-3.6640548706055;0.44068908691406;144.64302062988;0/6/1;1/0/0;2/3/0;3/6/0;4/3/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;8.0192260742188;22.348573684692;-0.55995941162109;191.12475585938;0/5/2;1/0/0;2/4/0;3/5/2;4/2/2;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;check_out_b;clothingshirt;3
2600762591;-8.8323364257813;6.7239532470703;-0.59600067138672;222.76583557129;0/11/1;1/0/0;2/11/0;3/12/0;4/10/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
553826858;-12.514831542969;18.159801483154;0.035446166992188;29.78155708313;0/1/0;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_DECKCHAIR_DRINK;NOANIM;NOANIM;3
2434503858;-10.096435546875;6.5718841552734;-0.59600067138672;144.0;0/6/1;1/0/0;2/8/1;3/9/5;4/4/3;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
1278330017;-31.090637207031;-8.3707122802734;0.44069671630859;350.85969238281;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MUSCLE_FLEX;NOANIM;NOANIM;2
279228114;-35.916564941406;-13.393447875977;0.067863464355469;36.659759521484;0/1/2;1/0/0;2/4/0;3/1/2;4/1/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2600762591;-4.4703979492188;11.47047996521;-0.56785583496094;221.87998657227;0/0/0;1/0/0;2/12/0;3/0/0;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;EAR_TO_TEXT;NOANIM;NOANIM;2
279228114;-9.700927734375;1.3271408081055;-0.18263244628906;127.49905395508;0/4/2;1/0/0;2/9/0;3/6/2;4/5/0;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;-10.754211425781;-24.333232879639;0.44069671630859;174.93353271484;0/4/1;1/0/0;2/2/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
553826858;9.237548828125;-2.7126541137695;-0.82183837890625;347.5698425293;0/5/0;1/0/0;2/4/0;3/3/0;4/2/0;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
2600762591;-9.149658203125;-1.6710662841797;-0.15850067138672;-88.380012512207;0/13/2;1/0/0;2/9/0;3/13/2;4/9/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;8.816162109375;-8.6635551452637;-0.79960632324219;148.41452026367;0/3/2;1/0/0;2/7/2;3/4/2;4/3/1;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SECURITY_SHINE_TORCH;interview_short_anton;missmic4premiere;3
279228114;-17.254150390625;10.492946624756;-0.006988525390625;232.8263671875;0/0/2;1/0/0;2/0/0;3/1/0;4/0/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_COMPUTER;NOANIM;NOANIM;2
553826858;-17.671813964844;-20.024723052979;0.44068908691406;316.77166748047;0/7/1;1/0/0;2/3/0;3/7/2;4/4/1;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;11.544921875;-9.9813842773438;-0.7996826171875;229.26098632813;0/7/0;1/0/0;2/3/0;3/6/1;4/4/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;3
553826858;7.6781616210938;19.367282867432;-0.55995941162109;183.16337585449;0/7/2;1/0/0;2/3/0;3/6/2;4/3/2;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_WINDOW_SHOP_BROWSE;NOANIM;NOANIM;3
4150317356;-14.908264160156;1.1704330444336;-0.15917205810547;80.89026184082;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_BUM_STANDING;NOANIM;NOANIM;3
553826858;-8.1075439453125;-3.9700012207031;-0.18000030517578;-148.45899963379;0/3/1;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
279228114;0.44256591796875;12.959438323975;-0.56001281738281;35.283293914795;0/2/2;1/0/0;2/5/0;3/2/1;4/1/1;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
2434503858;-5.4266357421875;11.56548500061;-0.59600067138672;90.391998291016;0/9/1;1/0/0;2/11/2;3/12/2;4/7/1;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
279228114;9.5970458984375;-4.2397727966309;-0.79525756835938;231.06343383789;0/0/1;1/0/0;2/5/1;3/2/0;4/0/0;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRINKING_CASINO_TERRACE;NOANIM;NOANIM;1
279228114;-20.054809570313;5.9362335205078;-0.15920257568359;319.75811767578;0/1/2;1/0/0;2/2/0;3/1/2;4/0/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
55858852;13.678283691406;-5.1783676147461;-0.59566497802734;279.58372802734;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL;NOANIM;NOANIM;3
3138220789;-34.43603515625;6.0365447998047;0.44069671630859;6.3087017059326;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MOBILE_FILM_SHOCKING;NOANIM;NOANIM;3
279228114;-8.7015380859375;-3.2505035400391;-0.16000366210938;42.865997314453;0/2/1;1/0/0;2/1/1;3/0/1;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
2434503858;5.7977294921875;16.442882537842;-0.54164123535156;129.04111938477;0/11/1;1/0/0;2/13/0;3/14/1;4/9/1;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;10.246154785156;6.8676071166992;-1.0139999389648;227.17247314453;0/0/1;1/0/0;2/2/0;3/1/0;4/0/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_FACILITY;NOANIM;NOANIM;1
2600762591;9.1370849609375;6.6064262390137;-1.000114440918;151.72654724121;0/12/0;1/0/0;2/8/1;3/13/1;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;-37.6806640625;-17.387680053711;0.43772125244141;3.7649207115173;0/2/2;1/0/0;2/2/0;3/1/0;4/0/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CLUBHOUSE;NOANIM;NOANIM;1
2434503858;7.3496704101563;0.65901947021484;-1.0001678466797;181.88602905273;0/10/1;1/0/0;2/12/2;3/12/1;4/7/0;5/0/0;6/5/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
279228114;9.3544921875;7.8700561523438;-1.0359954833984;43.959365844727;0/1/1;1/0/0;2/4/0;3/2/2;4/0/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_TOURIST_MAP;NOANIM;NOANIM;1
553826858;-9.026123046875;16.151987075806;-0.57041931152344;4.5585260391235;0/8/1;1/0/0;2/1/0;3/8/0;4/6/0;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;EAR_TO_TEXT;NOANIM;NOANIM;1
279228114;5.8204956054688;12.256853103638;-0.56000518798828;243.84157104492;0/2/1;1/0/0;2/3/0;3/0/1;4/1/1;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_UPRIGHT;NOANIM;NOANIM;2
553826858;-16.626098632813;5.791446685791;-0.56474304199219;45.98267364502;0/3/0;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
2600762591;5.399169921875;13.381549835205;-0.54174041748047;334.91586303711;0/9/0;1/0/0;2/1/0;3/10/4;4/7/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
2600762591;12.949584960938;19.80983543396;-0.56000518798828;275.12399291992;0/5/0;1/0/0;2/4/1;3/6/0;4/4/3;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_STAND_IMPATIENT;NOANIM;NOANIM;3
279228114;-8.8939819335938;14.512456893921;-0.56764984130859;189.77952880859;0/4/0;1/0/0;2/9/1;3/6/1;4/5/1;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
279228114;1.642822265625;12.49750328064;-0.57600402832031;272.04014892578;0/0/0;1/0/0;2/5/1;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2434503858;2.5347290039063;6.9387321472168;-0.20298767089844;159.70381469727;0/3/1;1/0/0;2/5/2;3/5/2;4/2/0;5/0/0;6/1/3;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL;NOANIM;NOANIM;3
279228114;-11.734680175781;18.750513076782;-0.035064697265625;23.184113693237;0/2/2;1/0/0;2/2/0;3/2/1;4/0/1;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_BENCH_DRINK_BEER;NOANIM;NOANIM;3
450271392;-4.5588989257813;22.353923797607;-0.56000518798828;13.837906837463;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_HIGH_CLASS;NOANIM;NOANIM;3
4188740747;-0.9521484375;18.75630569458;-0.29718017578125;-48.959999084473;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_BENCH_DRINK_BEER;NOANIM;NOANIM;2
2600762591;-31.840637207031;-3.4384803771973;0.44069671630859;237.34228820801;0/7/1;1/0/0;2/7/0;3/8/3;4/5/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
967594628;-1.6597290039063;22.329448699951;-0.55992889404297;285.9864074707;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_LOW_CLASS;NOANIM;NOANIM;3
279228114;-32.937072753906;-2.4253196716309;0.44069671630859;341.03814697266;0/3/2;1/0/0;2/6/2;3/3/2;4/2/1;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;8.1873779296875;-4.0992813110352;-0.79987335205078;86.88433380127;0/1/0;1/0/0;2/2/1;3/0/2;4/1/2;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRINKING_FACILITY;NOANIM;NOANIM;1
553826858;-45.362609863281;4.3761596679688;0.44078826904297;79.912719726563;0/0/0;1/0/0;2/2/0;3/0/0;4/1/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_UPRIGHT_CLUBHOUSE;NOANIM;NOANIM;1
279228114;-9.0543212890625;1.9701614379883;-0.25605010986328;283.49948120117;0/1/2;1/0/0;2/1/0;3/1/2;4/0/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;-31.920166015625;-20.994541168213;0.45345306396484;324.58986206055;0/4/2;1/0/0;2/8/0;3/5/1;4/4/1;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
1415150394;-0.20037841796875;17.305589675903;-0.27812957763672;291.30180053711;0/0/0;1/-1/255;2/0/0;3/0/0;4/0/0;5/-1/255;6/0/0;7/-1/255;8/-1/255;9/-1/255;10/-1/255;11/0/0;PROP_HUMAN_SEAT_CHAIR_FOOD;NOANIM;NOANIM;2
-1860463438;11.875;6.2086639404297;-1.0001907348633;341.09956665039;0/7/1;1/0/0;2/9/0;3/8/1;4/4/2;5/0/0;6/3/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
279228114;-36.5263671875;7.1977615356445;0.44081878662109;297.2998046875;0/3/1;1/0/0;2/7/1;3/4/0;4/3/2;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING_POT;NOANIM;NOANIM;3
279228114;-52.217895507813;-14.667984008789;1.4408645629883;221.72512817383;0/4/1;1/0/0;2/9/1;3/6/0;4/5/2;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
-1860463438;-37.584777832031;7.0065307617188;0.44082641601563;26.39906578064;0/6/0;1/0/0;2/8/0;3/9/4;4/4/1;5/0/0;6/3/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING_POT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-28.341613769531;-0.0093727111816406;0.4407958984375;352.19938964844;0/0/2;1/0/0;2/2/0;3/1/0;4/1/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
279228114;-53.113586425781;-14.065052032471;1.4428405761719;59.699509429932;0/1/1;1/0/0;2/3/0;3/2/2;4/0/2;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1860463438;-53.912719726563;-6.995174407959;1.3979949951172;305.39948730469;0/9/0;1/0/0;2/12/0;3/12/0;4/7/2;5/0/0;6/5/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-63.516784667969;-3.9238929748535;1.4413681030273;65.999870300293;0/1/2;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
337826907;-43.256530761719;-25.443897247314;1.0408248901367;238.19868774414;0/3/2;1/0/0;2/3/2;3/1/3;4/1/0;5/0/0;6/0/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
337826907;-59.064392089844;-22.138889312744;1.4408569335938;184.74311828613;0/3/1;1/0/0;2/3/1;3/0/2;4/1/0;5/0/0;6/0/1;7/3/0;8/2/0;9/0/0;10/2/0;11/2/0;WORLD_HUMAN_STAND_MOBILE;NOANIM;NOANIM;1
-1860463438;-54.520812988281;-31.258235931396;1.0408248901367;43.798686218262;0/5/0;1/0/0;2/6/1;3/6/2;4/3/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MAID_CLEAN;NOANIM;NOANIM;1
553826858;-41.940856933594;1.7172203063965;0.44113922119141;192.89949035645;0/4/0;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_FACILITY;NOANIM;NOANIM;1
-1694204705;-23.35546875;-7.073802947998;-0.15924835205078;154.49736022949;0/6/2;1/0/0;2/6/2;3/8/1;4/6/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRUG_DEALER_HARD;NOANIM;NOANIM;3
553826858;-30.47998046875;-29.383121490479;0.44069671630859;150.89926452637;0/8/0;1/0/0;2/0/0;3/8/1;4/6/1;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STUPOR_CLUBHOUSE;NOANIM;NOANIM;3
279228114;-15.574096679688;-28.165584564209;0.82003021240234;360.24982910156;0/0/0;1/0/0;2/0/0;3/0/0;4/1/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_TOURIST_MOBILE;NOANIM;NOANIM;3
-1860463438;-31.451416015625;-28.793575286865;0.44167327880859;88.578625488281;0/8/1;1/0/0;2/10/2;3/11/1;4/6/1;5/0/0;6/4/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_JOG_STANDING;NOANIM;NOANIM;3
279228114;-25.285339355469;-20.848438262939;0.44087219238281;18.0;0/0/1;1/0/0;2/1/0;3/2/0;4/1/0;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
279228114;-26.120056152344;-21.742847442627;0.44075775146484;89.999969482422;0/2/0;1/0/0;2/5/0;3/1/1;4/0/1;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
279228114;-12.392761230469;-27.024753570557;0.84078216552734;268.74055175781;0/4/1;1/0/0;2/8/1;3/5/0;4/4/0;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_BUM_SLUMPED;NOANIM;NOANIM;3
553826858;-22.664489746094;-27.572383880615;0.82898712158203;275.99908447266;0/6/0;1/0/0;2/3/0;3/7/1;4/4/2;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
279228114;-23.663146972656;-27.995822906494;0.84578704833984;128.99987792969;0/0/2;1/0/0;2/5/1;3/1/0;4/1/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
@@ -1,26 +0,0 @@
951767867;-1547.1401367188;-595.23504638672;31.284715652466;226.82543945312;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_LEANING_CASINO_TERRACE;NOANIM;NOANIM;2
-1106743555;-1514.6903076172;-607.78692626953;31.284715652466;347.08923339844;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_LEANING_CASINO_TERRACE;NOANIM;NOANIM;2
808859815;-1531.8341064453;-601.88714599609;31.284715652466;140.11024475098;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT;NOANIM;NOANIM;2
808859815;-1532.4754638672;-602.65447998047;31.284715652466;320.11026000977;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
1750583735;-1512.1911621094;-580.49200439453;31.284715652466;151.92321777344;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
1750583735;-1513.0399169922;-581.02075195312;31.284715652466;271.92044067383;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
1750583735;-1512.1575927734;-581.49145507812;31.284715652466;31.922561645508;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-781039234;-1505.9663085938;-580.94018554688;35.246990203857;159.03387451172;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
808859815;-1507.3817138672;-580.75457763672;35.215034484863;186.89027404785;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
-1106743555;-1507.5667724609;-595.17730712891;31.284715652466;25.52347946167;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1106743555;-1507.9976806641;-594.27484130859;31.284715652466;205.52346801758;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
951767867;-1502.6485595703;-600.09118652344;31.284715652466;140.0563659668;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
1674107025;-1503.6446533203;-600.17932128906;31.284715652466;230.05635070801;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
115168927;-1503.5565185547;-601.17541503906;31.284715652466;320.05639648438;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT;NOANIM;NOANIM;2
-1106743555;-1502.5604248047;-601.08728027344;31.284715652466;50.056381225586;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
808859815;-1530.3522949219;-593.97863769531;31.284715652466;140.28826904297;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
808859815;-1531.2902832031;-594.32537841797;31.284715652466;260.28671264648;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
808859815;-1530.5209960938;-594.96435546875;31.284715652466;20.28737449646;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1760377969;-1499.4295654297;-581.31561279297;31.284715652466;180.16958618164;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-573920724;-1499.9270019531;-582.18304443359;31.284715652466;300.16485595703;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1106743555;-1498.9270019531;-582.18017578125;31.284715652466;60.16646194458;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
-1760377969;-1534.7135009766;-597.88433837891;31.284715652466;140.0563659668;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
-1760377969;-1535.7095947266;-597.97247314453;31.284715652466;230.05635070801;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1106743555;-1535.6214599609;-598.96856689453;31.284715652466;320.05639648438;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1606864033;-1534.6253662109;-598.88043212891;31.284715652466;50.056381225586;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-88831029;-1500.0230712891;-604.65411376953;35.246990203857;78.819747924805;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MOBILE_FILM_SHOCKING;NOANIM;NOANIM;2
@@ -1,57 +0,0 @@
2434503858;-16.539428710938;20.066440582275;0.062034606933594;242.67785644531;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_CHAIR_FOOD;NOANIM;NOANIM;2
2526968950;9.0155029296875;21.547157287598;-0.53272247314453;352.89311523437;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL_EATING;NOANIM;NOANIM;3
2600762591;-29.576232910156;34.75;-0.99781799316406;54.179363250732;0/3/0;1/0/0;2/3/0;3/5/0;4/3/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;-26.527709960938;22.44149017334;-0.99781799316406;159.56734924316;0/9/0;1/0/0;2/2/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-23.619934082031;41.76953125;-0.74790954589844;37.689247131348;0/2/1;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
2434503858;27.448669433594;54.079345703125;-0.75228881835938;170.31623840332;0/12/2;1/0/0;2/15/1;3/15/2;4/10/2;5/0/0;6/7/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_HIGH_CLASS;NOANIM;NOANIM;2
279228114;34.248046875;59.236511230469;-0.75218200683594;270.63166503906;0/3/0;1/0/0;2/7/0;3/3/1;4/2/2;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
337826907;0.126220703125;6.9256782531738;-0.997802734375;99.109677124023;0/4/0;1/1/0;2/4/0;3/1/0;4/0/0;5/0/0;6/1/0;7/2/0;8/3/0;9/0/0;10/1/0;11/1/0;WORLD_HUMAN_STAND_IMPATIENT;NOANIM;NOANIM;1
2600762591;-17.272521972656;14.673774719238;0.0020751953125;100.14435577393;0/10/2;1/0/0;2/15/0;3/1/1;4/11/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
553826858;-13.441101074219;39.570388793945;-0.74790954589844;197.78056335449;0/5/2;1/0/0;2/4/0;3/5/2;4/2/2;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;check_out_b;clothingshirt;3
2600762591;-26.021240234375;15.276123046875;-0.997802734375;14.268159866333;0/11/1;1/0/0;2/11/0;3/12/0;4/10/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
553826858;4.5505981445312;29.812873840332;-1.4491424560547;181.53439025879;0/1/0;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_DECKCHAIR_DRINK;NOANIM;NOANIM;3
1278330017;3.6876831054688;55.551239013672;-0.75191497802734;5.8032531738281;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MUSCLE_FLEX;NOANIM;NOANIM;2
279228114;9.8182983398438;54.887462615967;-0.74814605712891;237.46920471191;0/1/2;1/0/0;2/4/0;3/1/2;4/1/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2600762591;-31.528137207031;21.700531005859;-0.99781799316406;146.87956237793;0/0/0;1/0/0;2/12/0;3/0/0;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;EAR_TO_TEXT;NOANIM;NOANIM;2
2600762591;-5.8760986328125;63.231460571289;-0.997802734375;284.92987060547;0/13/2;1/0/0;2/9/0;3/13/2;4/9/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;-9.0887451171875;44.741523742676;-1.4879760742188;292.76510620117;0/0/2;1/0/0;2/0/0;3/1/0;4/0/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_COMPUTER;NOANIM;NOANIM;2
553826858;-7.312744140625;63.198497772217;-0.98562622070312;66.095741271973;0/7/1;1/0/0;2/3/0;3/7/2;4/4/1;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
4150317356;-34.441711425781;29.110229492188;-0.99781799316406;80.89026184082;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_BUM_STANDING;NOANIM;NOANIM;3
553826858;0.9083251953125;42.507026672363;-1.9978561401367;67.79065246582;0/3/1;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
279228114;-26.050476074219;29.326293945312;-0.99781799316406;338.28314208984;0/2/2;1/0/0;2/5/0;3/2/1;4/1/1;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
55858852;-23.331237792969;48.051246643066;-0.53583526611328;53.355727386475;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL;NOANIM;NOANIM;3
3138220789;-15.37548828125;58.843601226807;-1.0047302246094;353.63372802734;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MOBILE_FILM_SHOCKING;NOANIM;NOANIM;3
279228114;8.7046508789062;55.618816375732;-0.75180053710938;50.41070098877;0/2/1;1/0/0;2/1/1;3/0/1;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
2434503858;-6.4005126953125;26.978115081787;-0.7479248046875;251.22888183594;0/11/1;1/0/0;2/13/0;3/14/1;4/9/1;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-8.3335571289062;0.19869995117188;-0.99755096435547;160.42750549316;0/0/1;1/0/0;2/2/0;3/1/0;4/0/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_FACILITY;NOANIM;NOANIM;1
2600762591;-34.260803222656;37.929870605469;-0.99781799316406;138.22598571777;0/12/0;1/0/0;2/8/1;3/13/1;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;-37.065185546875;10.761161804199;-0.49797058105469;125.33883666992;0/2/2;1/0/0;2/2/0;3/1/0;4/0/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CLUBHOUSE;NOANIM;NOANIM;1
2434503858;-33.299865722656;38.499885559082;-0.99781799316406;328.88531494141;0/10/1;1/0/0;2/12/2;3/12/1;4/7/0;5/0/0;6/5/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
279228114;-14.153198242188;40.867530822754;-0.74791717529297;22.014518737793;0/1/1;1/0/0;2/4/0;3/2/2;4/0/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_TOURIST_MAP;NOANIM;NOANIM;1
279228114;1.0282592773438;62.239521026611;-0.99401092529297;336.11703491211;0/2/1;1/0/0;2/3/0;3/0/1;4/1/1;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_UPRIGHT;NOANIM;NOANIM;2
553826858;-23.837219238281;17.645526885986;-0.99775695800781;303.89767456055;0/3/0;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
2600762591;-38.518371582031;33.700042724609;-0.99781799316406;175.91569519043;0/9/0;1/0/0;2/1/0;3/10/4;4/7/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
279228114;13.83984375;58.789855957031;-0.49789428710938;32.13843421936;0/0/0;1/0/0;2/5/1;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2434503858;-11.468872070312;13.684150695801;0.080093383789062;322.46450805664;0/3/1;1/0/0;2/5/2;3/5/2;4/2/0;5/0/0;6/1/3;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL;NOANIM;NOANIM;3
279228114;32.301208496094;64.924987792969;0.50986480712891;348.60534667969;0/2/2;1/0/0;2/2/0;3/2/1;4/0/1;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_BENCH_DRINK_BEER;NOANIM;NOANIM;3
450271392;-26.030639648438;27.808471679688;-0.99781799316406;208.83740234375;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_HIGH_CLASS;NOANIM;NOANIM;3
4188740747;14.342468261719;23.734668731689;-0.53607940673828;45.757423400879;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_BENCH_DRINK_BEER;NOANIM;NOANIM;2
279228114;-25.882080078125;14.029033660889;-0.99785614013672;165.37129211426;0/1/0;1/0/0;2/2/1;3/0/2;4/1/2;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRINKING_FACILITY;NOANIM;NOANIM;1
553826858;-27.284729003906;28.546020507812;-0.99781799316406;79.912719726563;0/0/0;1/0/0;2/2/0;3/0/0;4/1/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_UPRIGHT_CLUBHOUSE;NOANIM;NOANIM;1
279228114;27.373779296875;55.725070953369;-0.75210571289062;339.65982055664;0/1/2;1/0/0;2/1/0;3/1/2;4/0/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
1415150394;-39.432434082031;36.948738098145;-0.99781799316406;291.30180053711;0/0/0;1/-1/255;2/0/0;3/0/0;4/0/0;5/-1/255;6/0/0;7/-1/255;8/-1/255;9/-1/255;10/-1/255;11/0/0;PROP_HUMAN_SEAT_CHAIR_FOOD;NOANIM;NOANIM;2
-1860463438;-26.393127441406;23.680450439453;-0.99781799316406;341.09956665039;0/7/1;1/0/0;2/9/0;3/8/1;4/4/2;5/0/0;6/3/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
-1860463438;-33.304443359375;28.243522644043;-0.99781799316406;236.39855957031;0/6/0;1/0/0;2/8/0;3/9/4;4/4/1;5/0/0;6/3/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING_POT_CLUBHOUSE;NOANIM;NOANIM;3
-1860463438;-15.694519042969;24.434471130371;0.0020751953125;95.439849853516;0/9/0;1/0/0;2/12/0;3/12/0;4/7/2;5/0/0;6/5/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-3.3563232421875;22.884216308594;-0.74485015869141;307.41641235352;0/1/2;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
337826907;-16.415222167969;14.173160552979;0.0021438598632812;237.56948852539;0/3/1;1/0/0;2/3/1;3/0/2;4/1/0;5/0/0;6/0/1;7/3/0;8/2/0;9/0/0;10/2/0;11/2/0;WORLD_HUMAN_STAND_MOBILE;NOANIM;NOANIM;1
-1860463438;-7.6656494140625;43.495449066162;-1.9978637695312;176.58346252441;0/5/0;1/0/0;2/6/1;3/6/2;4/3/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MAID_CLEAN;NOANIM;NOANIM;1
553826858;-18.405334472656;28.540252685547;-0.99781799316406;192.89949035645;0/4/0;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_FACILITY;NOANIM;NOANIM;1
-1694204705;-7.8748779296875;27.049724578857;-0.74791717529297;68.834759521484;0/6/2;1/0/0;2/6/2;3/8/1;4/6/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRUG_DEALER_HARD;NOANIM;NOANIM;3
553826858;-14.379638671875;49.119934082031;-0.99996948242188;295.34315795898;0/8/0;1/0/0;2/0/0;3/8/1;4/6/1;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STUPOR_CLUBHOUSE;NOANIM;NOANIM;3
279228114;-31.107788085938;33.973937988281;-0.99785614013672;263.70142822266;0/0/0;1/0/0;2/0/0;3/0/0;4/1/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_TOURIST_MOBILE;NOANIM;NOANIM;3
-1860463438;2.6519775390625;11.619575500488;-0.99782562255859;36.653053283691;0/8/1;1/0/0;2/10/2;3/11/1;4/6/1;5/0/0;6/4/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_JOG_STANDING;NOANIM;NOANIM;3
279228114;-14.629516601562;25.195140838623;0.0020751953125;323.02557373047;0/0/1;1/0/0;2/1/0;3/2/0;4/1/0;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
279228114;14.603271484375;57.999443054199;-0.49337768554688;237.84196166992;0/2/0;1/0/0;2/5/0;3/1/1;4/0/1;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
279228114;-6.6162109375;31.428741455078;0.0679931640625;308.77313232422;0/4/1;1/0/0;2/8/1;3/5/0;4/4/0;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_DECKCHAIR_DRINK;intro_loop_ped_d;anim@heists@fleeca_bank@hostages@intro;3
553826858;28.305786132812;54.878395080566;-0.74781799316406;254.76569824219;0/6/0;1/0/0;2/3/0;3/7/1;4/4/2;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
@@ -1,85 +0,0 @@
2434503858;-2.3212890625;19.685930252075;-0.19699859619141;53.98041229248;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_CHAIR_FOOD;NOANIM;NOANIM;2
2526968950;-18.206115722656;5.7392959594727;0.19771575927734;341.53660888672;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL_EATING;NOANIM;NOANIM;3
2600762591;-18.855163574219;-20.024723052979;0.44068908691406;54.179363250732;0/3/0;1/0/0;2/3/0;3/5/0;4/3/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;-35.496276855469;-14.365493774414;0.069168090820313;159.56734924316;0/9/0;1/0/0;2/2/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-32.623840332031;-22.029476165771;0.45345306396484;162.71843261719;0/2/1;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
279228114;-20.952941894531;5.3609809875488;-0.15920257568359;100.40215301514;0/4/0;1/0/0;2/8/1;3/5/2;4/4/2;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
2434503858;10.11376953125;-7.6902618408203;-0.7998046875;128.056640625;0/11/2;1/0/0;2/14/1;3/13/2;4/8/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2434503858;-31.058898925781;-9.5620651245117;0.46534729003906;154.19045715332;0/12/2;1/0/0;2/15/1;3/15/2;4/10/2;5/0/0;6/7/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_HIGH_CLASS;NOANIM;NOANIM;2
279228114;-34.730529785156;-13.453735351563;0.041999816894531;-30.239999771118;0/3/0;1/0/0;2/7/0;3/3/1;4/2/2;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
337826907;-22.536804199219;-30.46821975708;1.2389907836914;42.482411193848;0/4/0;1/1/0;2/4/0;3/1/0;4/0/0;5/0/0;6/1/0;7/2/0;8/3/0;9/0/0;10/1/0;11/1/0;WORLD_HUMAN_STAND_IMPATIENT;NOANIM;NOANIM;1
2600762591;-9.4402465820313;7.5219421386719;-0.59600067138672;23.760000228882;0/10/2;1/0/0;2/15/0;3/1/1;4/11/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
337826907;13.319458007813;0.85515213012695;-0.97772979736328;222.79661560059;0/5/0;1/0/0;2/5/0;3/0/4;4/1/0;5/0/0;6/0/0;7/3/0;8/2/0;9/0/0;10/2/0;11/2/0;WORLD_HUMAN_SMOKING;NOANIM;NOANIM;1
279228114;0.71099853515625;11.82998085022;-0.55995941162109;125.95603637695;0/1/0;1/0/0;2/2/1;3/0/2;4/1/2;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;-33.015808105469;-3.6640548706055;0.44068908691406;144.64302062988;0/6/1;1/0/0;2/3/0;3/6/0;4/3/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;8.0192260742188;22.348573684692;-0.55995941162109;191.12475585938;0/5/2;1/0/0;2/4/0;3/5/2;4/2/2;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;check_out_b;clothingshirt;3
2600762591;-8.8323364257813;6.7239532470703;-0.59600067138672;222.76583557129;0/11/1;1/0/0;2/11/0;3/12/0;4/10/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
553826858;-12.514831542969;18.159801483154;0.035446166992188;29.78155708313;0/1/0;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_DECKCHAIR_DRINK;NOANIM;NOANIM;3
2434503858;-10.096435546875;6.5718841552734;-0.59600067138672;144.0;0/6/1;1/0/0;2/8/1;3/9/5;4/4/3;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
1278330017;-31.090637207031;-8.3707122802734;0.44069671630859;350.85969238281;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MUSCLE_FLEX;NOANIM;NOANIM;2
279228114;-35.916564941406;-13.393447875977;0.067863464355469;36.659759521484;0/1/2;1/0/0;2/4/0;3/1/2;4/1/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2600762591;-4.4703979492188;11.47047996521;-0.56785583496094;221.87998657227;0/0/0;1/0/0;2/12/0;3/0/0;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;EAR_TO_TEXT;NOANIM;NOANIM;2
279228114;-9.700927734375;1.3271408081055;-0.18263244628906;127.49905395508;0/4/2;1/0/0;2/9/0;3/6/2;4/5/0;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;-10.754211425781;-24.333232879639;0.44069671630859;174.93353271484;0/4/1;1/0/0;2/2/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
553826858;10.245727539063;-3.0544052124023;-0.82183837890625;166.66883544922;0/5/0;1/0/0;2/4/0;3/3/0;4/2/0;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
2600762591;-9.149658203125;-1.6710662841797;-0.15850067138672;-88.380012512207;0/13/2;1/0/0;2/9/0;3/13/2;4/9/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;14.890075683594;-3.6628456115723;-0.79960632324219;148.1124420166;0/3/2;1/0/0;2/7/2;3/4/2;4/3/1;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SECURITY_SHINE_TORCH;interview_short_anton;missmic4premiere;3
279228114;-17.254150390625;10.492946624756;-0.006988525390625;232.8263671875;0/0/2;1/0/0;2/0/0;3/1/0;4/0/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_COMPUTER;NOANIM;NOANIM;2
553826858;-17.671813964844;-20.024723052979;0.44068908691406;316.77166748047;0/7/1;1/0/0;2/3/0;3/7/2;4/4/1;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;11.544921875;-9.9813842773438;-0.7996826171875;229.26098632813;0/7/0;1/0/0;2/3/0;3/6/1;4/4/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;3
553826858;7.6781616210938;19.367282867432;-0.55995941162109;183.16337585449;0/7/2;1/0/0;2/3/0;3/6/2;4/3/2;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_WINDOW_SHOP_BROWSE;NOANIM;NOANIM;3
4150317356;-14.908264160156;1.1704330444336;-0.15917205810547;80.89026184082;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_BUM_STANDING;NOANIM;NOANIM;3
553826858;-8.1075439453125;-3.9700012207031;-0.18000030517578;-148.45899963379;0/3/1;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
279228114;0.44256591796875;12.959438323975;-0.56001281738281;35.283293914795;0/2/2;1/0/0;2/5/0;3/2/1;4/1/1;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
2434503858;-5.4266357421875;11.56548500061;-0.59600067138672;90.391998291016;0/9/1;1/0/0;2/11/2;3/12/2;4/7/1;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
279228114;10.828247070313;-2.1398582458496;-0.79525756835938;231.06343383789;0/0/1;1/0/0;2/5/1;3/2/0;4/0/0;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRINKING_CASINO_TERRACE;NOANIM;NOANIM;1
279228114;-20.054809570313;5.9362335205078;-0.15920257568359;319.75811767578;0/1/2;1/0/0;2/2/0;3/1/2;4/0/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
55858852;8.4107666015625;-5.4996795654297;-0.59566497802734;161.08085327148;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL;NOANIM;NOANIM;3
3138220789;-34.43603515625;6.0365447998047;0.44069671630859;6.3087017059326;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MOBILE_FILM_SHOCKING;NOANIM;NOANIM;3
279228114;-8.7015380859375;-3.2505035400391;-0.16000366210938;42.865997314453;0/2/1;1/0/0;2/1/1;3/0/1;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
2434503858;5.7977294921875;16.442882537842;-0.54164123535156;129.04111938477;0/11/1;1/0/0;2/13/0;3/14/1;4/9/1;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;10.246154785156;6.8676071166992;-1.0139999389648;227.17247314453;0/0/1;1/0/0;2/2/0;3/1/0;4/0/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_FACILITY;NOANIM;NOANIM;1
2600762591;9.1370849609375;6.6064262390137;-1.000114440918;151.72654724121;0/12/0;1/0/0;2/8/1;3/13/1;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;-37.6806640625;-17.387680053711;0.43772125244141;3.7649207115173;0/2/2;1/0/0;2/2/0;3/1/0;4/0/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CLUBHOUSE;NOANIM;NOANIM;1
2434503858;7.3496704101563;0.65901947021484;-1.0001678466797;181.88602905273;0/10/1;1/0/0;2/12/2;3/12/1;4/7/0;5/0/0;6/5/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
279228114;9.3544921875;7.8700561523438;-1.0359954833984;43.959365844727;0/1/1;1/0/0;2/4/0;3/2/2;4/0/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_TOURIST_MAP;NOANIM;NOANIM;1
553826858;-9.026123046875;16.151987075806;-0.57041931152344;4.5585260391235;0/8/1;1/0/0;2/1/0;3/8/0;4/6/0;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;EAR_TO_TEXT;NOANIM;NOANIM;1
279228114;5.8204956054688;12.256853103638;-0.56000518798828;243.84157104492;0/2/1;1/0/0;2/3/0;3/0/1;4/1/1;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_UPRIGHT;NOANIM;NOANIM;2
553826858;-16.626098632813;5.791446685791;-0.56474304199219;45.98267364502;0/3/0;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
2600762591;5.399169921875;13.381549835205;-0.54174041748047;334.91586303711;0/9/0;1/0/0;2/1/0;3/10/4;4/7/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
2600762591;12.949584960938;19.80983543396;-0.56000518798828;275.12399291992;0/5/0;1/0/0;2/4/1;3/6/0;4/4/3;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_STAND_IMPATIENT;NOANIM;NOANIM;3
279228114;-8.8939819335938;14.512456893921;-0.56764984130859;189.77952880859;0/4/0;1/0/0;2/9/1;3/6/1;4/5/1;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
279228114;1.642822265625;12.49750328064;-0.57600402832031;272.04014892578;0/0/0;1/0/0;2/5/1;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2434503858;2.5347290039063;6.9387321472168;-0.20298767089844;159.70381469727;0/3/1;1/0/0;2/5/2;3/5/2;4/2/0;5/0/0;6/1/3;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL;NOANIM;NOANIM;3
279228114;-11.734680175781;18.750513076782;-0.035064697265625;23.184113693237;0/2/2;1/0/0;2/2/0;3/2/1;4/0/1;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_BENCH_DRINK_BEER;NOANIM;NOANIM;3
450271392;-4.5588989257813;22.353923797607;-0.56000518798828;13.837906837463;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_HIGH_CLASS;NOANIM;NOANIM;3
4188740747;-0.9521484375;18.75630569458;-0.29718017578125;-48.959999084473;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_BENCH_DRINK_BEER;NOANIM;NOANIM;2
2600762591;-31.840637207031;-3.4384803771973;0.44069671630859;237.34228820801;0/7/1;1/0/0;2/7/0;3/8/3;4/5/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
967594628;-1.6597290039063;22.329448699951;-0.55992889404297;285.9864074707;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_LOW_CLASS;NOANIM;NOANIM;3
279228114;-32.937072753906;-2.4253196716309;0.44069671630859;341.03814697266;0/3/2;1/0/0;2/6/2;3/3/2;4/2/1;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;9.7188720703125;-1.9393692016602;-0.79987335205078;86.88433380127;0/1/0;1/0/0;2/2/1;3/0/2;4/1/2;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRINKING_FACILITY;NOANIM;NOANIM;1
553826858;-45.362609863281;4.3761596679688;0.44078826904297;79.912719726563;0/0/0;1/0/0;2/2/0;3/0/0;4/1/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_UPRIGHT_CLUBHOUSE;NOANIM;NOANIM;1
279228114;-9.0543212890625;1.9701614379883;-0.25605010986328;283.49948120117;0/1/2;1/0/0;2/1/0;3/1/2;4/0/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;-31.920166015625;-20.994541168213;0.45345306396484;324.58986206055;0/4/2;1/0/0;2/8/0;3/5/1;4/4/1;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
1415150394;-0.20037841796875;17.305589675903;-0.27812957763672;291.30180053711;0/0/0;1/-1/255;2/0/0;3/0/0;4/0/0;5/-1/255;6/0/0;7/-1/255;8/-1/255;9/-1/255;10/-1/255;11/0/0;PROP_HUMAN_SEAT_CHAIR_FOOD;NOANIM;NOANIM;2
-1860463438;11.875;6.2086639404297;-1.0001907348633;341.09956665039;0/7/1;1/0/0;2/9/0;3/8/1;4/4/2;5/0/0;6/3/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
279228114;-36.5263671875;7.1977615356445;0.44081878662109;297.2998046875;0/3/1;1/0/0;2/7/1;3/4/0;4/3/2;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING_POT;NOANIM;NOANIM;3
279228114;-52.217956542969;-14.667984008789;1.4408645629883;221.72512817383;0/4/1;1/0/0;2/9/1;3/6/0;4/5/2;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
-1860463438;-37.584777832031;7.0065307617188;0.44082641601563;26.39906578064;0/6/0;1/0/0;2/8/0;3/9/4;4/4/1;5/0/0;6/3/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING_POT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-28.341613769531;-0.0093727111816406;0.4407958984375;352.19938964844;0/0/2;1/0/0;2/2/0;3/1/0;4/1/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
279228114;-53.113586425781;-14.065052032471;1.4428405761719;59.699509429932;0/1/1;1/0/0;2/3/0;3/2/2;4/0/2;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1860463438;-53.912780761719;-6.995174407959;1.3979949951172;305.39948730469;0/9/0;1/0/0;2/12/0;3/12/0;4/7/2;5/0/0;6/5/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-63.516784667969;-3.9238929748535;1.4413681030273;65.999870300293;0/1/2;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
337826907;-59.064392089844;-22.138889312744;1.4408569335938;184.74311828613;0/3/1;1/0/0;2/3/1;3/0/2;4/1/0;5/0/0;6/0/1;7/3/0;8/2/0;9/0/0;10/2/0;11/2/0;WORLD_HUMAN_STAND_MOBILE;NOANIM;NOANIM;1
-1860463438;-54.520812988281;-31.258235931396;1.0408248901367;43.798686218262;0/5/0;1/0/0;2/6/1;3/6/2;4/3/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MAID_CLEAN;NOANIM;NOANIM;1
553826858;-41.940856933594;1.7172203063965;0.44113922119141;192.89949035645;0/4/0;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_FACILITY;NOANIM;NOANIM;1
-1694204705;-23.35546875;-7.073802947998;-0.15924835205078;154.49736022949;0/6/2;1/0/0;2/6/2;3/8/1;4/6/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRUG_DEALER_HARD;NOANIM;NOANIM;3
553826858;-30.47998046875;-29.697948455811;0.44069671630859;175.4988067627;0/8/0;1/0/0;2/0/0;3/8/1;4/6/1;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STUPOR_CLUBHOUSE;NOANIM;NOANIM;3
279228114;-15.423950195313;-28.315578460693;0.82003021240234;360.24982910156;0/0/0;1/0/0;2/0/0;3/0/0;4/1/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_TOURIST_MOBILE;NOANIM;NOANIM;3
-1860463438;-31.451416015625;-28.793575286865;0.44167327880859;88.578625488281;0/8/1;1/0/0;2/10/2;3/11/1;4/6/1;5/0/0;6/4/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_JOG_STANDING;NOANIM;NOANIM;3
279228114;-25.285339355469;-20.848438262939;0.44087219238281;18.0;0/0/1;1/0/0;2/1/0;3/2/0;4/1/0;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
279228114;-26.120056152344;-21.742847442627;0.44075775146484;89.999969482422;0/2/0;1/0/0;2/5/0;3/1/1;4/0/1;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
279228114;-12.018310546875;-26.574199676514;1.452751159668;296.35328369141;0/4/1;1/0/0;2/8/1;3/5/0;4/4/0;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_DECKCHAIR_DRINK;intro_loop_ped_d;anim@heists@fleeca_bank@hostages@intro;3
553826858;-22.664489746094;-27.572383880615;0.83346557617188;275.99908447266;0/6/0;1/0/0;2/3/0;3/7/1;4/4/2;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
279228114;-23.663146972656;-27.995822906494;0.84578704833984;128.99987792969;0/0/2;1/0/0;2/5/1;3/1/0;4/1/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
337826907;-43.363220214844;-25.368274688721;1.0408325195313;248.69999694824;0/2/1;1/0/0;2/2/0;3/0/3;4/1/0;5/0/0;6/0/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND;NOANIM;NOANIM;3
@@ -1,86 +0,0 @@
2434503858;-13.5732421875;19.082153320313;-0.048599243164063;30.89669342041;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_CHAIR_FOOD;NOANIM;NOANIM;2
2526968950;-18.288818359375;-4.8194274902344;0.16125869750977;354.98463745117;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL_EATING;NOANIM;NOANIM;3
2600762591;-4.771728515625;-26.612487792969;0.40897369384766;322.75564575195;0/3/0;1/0/0;2/3/0;3/5/0;4/3/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;-39.382568359375;-3.3134155273438;0.069168090820313;159.56734924316;0/9/0;1/0/0;2/2/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-37.111328125;-11.207763671875;0.45345306396484;162.71843261719;0/2/1;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
279228114;-0.416015625;12.747192382813;-0.59174346923828;45.252239227295;0/4/0;1/0/0;2/8/1;3/5/2;4/4/2;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
2434503858;-5.093994140625;-2.5357055664063;-0.99837493896484;109.15727233887;0/11/2;1/0/0;2/14/1;3/13/2;4/8/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2434503858;-33.892578125;1.8054809570313;0.46534729003906;154.19045715332;0/12/2;1/0/0;2/15/1;3/15/2;4/10/2;5/0/0;6/7/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_HIGH_CLASS;NOANIM;NOANIM;2
279228114;-21.4853515625;-24.458312988281;0.408935546875;205.65797424316;0/3/0;1/0/0;2/7/0;3/3/1;4/2/2;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
337826907;-0.5859375;-36.301284790039;1.2090873718262;43.745446014404;0/4/0;1/1/0;2/4/0;3/1/0;4/0/0;5/0/0;6/1/0;7/2/0;8/3/0;9/0/0;10/1/0;11/1/0;WORLD_HUMAN_STAND_IMPATIENT;NOANIM;NOANIM;1
2600762591;3.93994140625;-3.7120666503906;-1.0216178894043;217.79685974121;0/10/2;1/0/0;2/15/0;3/1/1;4/11/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
337826907;-3.352294921875;-5.2702331542969;-1.0163269042969;303.4961730957;0/5/0;1/0/0;2/5/0;3/0/4;4/1/0;5/0/0;6/0/0;7/3/0;8/2/0;9/0/0;10/2/0;11/2/0;WORLD_HUMAN_SMOKING;NOANIM;NOANIM;1
279228114;11.18408203125;4.2882385253906;-0.83496475219727;21.42064781189;0/1/0;1/0/0;2/2/1;3/0/2;4/1/2;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;-42.044189453125;-35.110260009766;1.4089164733887;49.039932250977;0/6/1;1/0/0;2/3/0;3/6/0;4/3/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;-1.07666015625;29.732391357422;-0.55995941162109;191.12475585938;0/5/2;1/0/0;2/4/0;3/5/2;4/2/2;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;check_out_b;clothingshirt;3
2600762591;-12.741943359375;5.5121154785156;-0.59174728393555;116.42286682129;0/11/1;1/0/0;2/11/0;3/12/0;4/10/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
553826858;-20.212158203125;8.3562622070313;-0.012851715087891;58.932732391357;0/1/0;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_DECKCHAIR_DRINK;NOANIM;NOANIM;3
2434503858;-22.789794921875;-31.328582763672;0.007293701171875;111.67665863037;0/6/1;1/0/0;2/8/1;3/9/5;4/4/3;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
1278330017;-22.383544921875;-23.826431274414;0.44069671630859;41.859588623047;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MUSCLE_FLEX;NOANIM;NOANIM;2
279228114;-24.526611328125;-16.135284423828;0.50440216064453;36.659759521484;0/1/2;1/0/0;2/4/0;3/1/2;4/1/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2600762591;-10.65771484375;5.421630859375;-0.59173202514648;253.89924621582;0/0/0;1/0/0;2/12/0;3/0/0;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;EAR_TO_TEXT;NOANIM;NOANIM;2
279228114;3.62109375;11.665588378906;-1.0057983398438;54.070674133301;0/4/2;1/0/0;2/9/0;3/6/2;4/5/0;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;-16.979736328125;-17.825958251953;-0.16488265991211;174.93353271484;0/4/1;1/0/0;2/2/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
553826858;4.57373046875;-25.612670898438;0.40896987915039;233.4513092041;0/5/0;1/0/0;2/4/0;3/3/0;4/2/0;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
2600762591;-15.71630859375;-36.045700073242;0.40888595581055;225.82611083984;0/13/2;1/0/0;2/9/0;3/13/2;4/9/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;-2.894775390625;14.588287353516;-0.59175872802734;321.28866577148;0/3/2;1/0/0;2/7/2;3/4/2;4/3/1;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE;interview_short_anton;missmic4premiere;3
279228114;-28.95751953125;9.9549865722656;-0.006988525390625;232.8263671875;0/0/2;1/0/0;2/0/0;3/1/0;4/0/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_COMPUTER;NOANIM;NOANIM;2
553826858;-5.917236328125;-27.344268798828;0.40898132324219;147.80230712891;0/7/1;1/0/0;2/3/0;3/7/2;4/4/1;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;10.595947265625;7.5359802246094;-1.0052909851074;269.87001342773;0/7/0;1/0/0;2/3/0;3/6/1;4/4/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;3
553826858;-0.306640625;27.939727783203;-0.55995941162109;183.16337585449;0/7/2;1/0/0;2/3/0;3/6/2;4/3/2;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_WINDOW_SHOP_BROWSE;NOANIM;NOANIM;3
4150317356;-13.653076171875;-7.4779968261719;-0.19110870361328;75.460891723633;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_BUM_STANDING;NOANIM;NOANIM;3
553826858;-19.68798828125;1.8592224121094;-0.5653076171875;25.839921951294;0/3/1;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_PATROL;NOANIM;NOANIM;1
279228114;-7.8095703125;8.1486511230469;-0.59173202514648;145.72909545898;0/2/2;1/0/0;2/5/0;3/2/1;4/1/1;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
2434503858;-6.884521484375;9.6104736328125;-0.59170532226563;351.57077026367;0/9/1;1/0/0;2/11/2;3/12/2;4/7/1;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
279228114;16.960205078125;3.6361999511719;-0.86564254760742;43.004718780518;0/0/1;1/0/0;2/5/1;3/2/0;4/0/0;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRINKING_CASINO_TERRACE;NOANIM;NOANIM;1
279228114;-20.5947265625;-5.3287963867188;-0.15920257568359;30.557552337646;0/1/2;1/0/0;2/2/0;3/1/2;4/0/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
55858852;10.192626953125;0.016754150390625;-0.63654327392578;179.74023132324;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL;NOANIM;NOANIM;3
3138220789;-32.482177734375;-13.078338623047;0.41983413696289;37.753075408936;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MOBILE_FILM_SHOCKING;NOANIM;NOANIM;3
279228114;-10.235107421875;0.53091430664063;-0.59174346923828;210.88955688477;0/2/1;1/0/0;2/1/1;3/0/1;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
2434503858;8.063720703125;27.936950683594;-0.54164123535156;129.04111938477;0/11/1;1/0/0;2/13/0;3/14/1;4/9/1;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-5.639892578125;-18.439712524414;-0.19110870361328;202.60032653809;0/0/1;1/0/0;2/2/0;3/1/0;4/0/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_FACILITY;NOANIM;NOANIM;1
2600762591;0.703857421875;12.374053955078;-0.59170913696289;309.30047607422;0/12/0;1/0/0;2/8/1;3/13/1;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;-38.900146484375;-50.631622314453;1.4089202880859;189.63984680176;0/2/2;1/0/0;2/2/0;3/1/0;4/0/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CLUBHOUSE;NOANIM;NOANIM;1
2434503858;6.26416015625;4.3052062988281;-1.030330657959;202.58579711914;0/10/1;1/0/0;2/12/2;3/12/1;4/7/0;5/0/0;6/5/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
279228114;5.165771484375;11.414093017578;-1.0058135986328;251.85249023438;0/1/1;1/0/0;2/4/0;3/2/2;4/0/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_TOURIST_MAP;NOANIM;NOANIM;1
553826858;-16.988525390625;3.79296875;-0.59170913696289;121.62433624268;0/8/1;1/0/0;2/1/0;3/8/0;4/6/0;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;EAR_TO_TEXT;NOANIM;NOANIM;1
279228114;-6.27294921875;8.4688110351563;-0.59170532226563;243.84157104492;0/2/1;1/0/0;2/3/0;3/0/1;4/1/1;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_UPRIGHT;NOANIM;NOANIM;2
553826858;-26.22265625;-20.429656982422;0.40893173217773;133.40716552734;0/3/0;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
2600762591;-21.150146484375;-6.3165283203125;-0.19109344482422;158.85913085938;0/9/0;1/0/0;2/1/0;3/10/4;4/7/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
279228114;-8.770751953125;-30.092514038086;0.40898132324219;310.716796875;0/3/1;1/0/0;2/6/0;3/3/0;4/2/0;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
279228114;-10.02490234375;2.1296691894531;-0.59174728393555;329.93286132813;0/0/0;1/0/0;2/5/1;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2434503858;-1.3779296875;17.9814453125;-0.20298767089844;159.70381469727;0/3/1;1/0/0;2/5/2;3/5/2;4/2/0;5/0/0;6/1/3;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL;NOANIM;NOANIM;3
279228114;-20.5439453125;7.7368774414063;-0.018733978271484;59.994819641113;0/2/2;1/0/0;2/2/0;3/2/1;4/0/1;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_BENCH_DRINK_BEER;NOANIM;NOANIM;3
450271392;-9.806396484375;19.048797607422;-0.59174728393555;324.65447998047;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_HIGH_CLASS;NOANIM;NOANIM;3
4188740747;-12.35107421875;15.538024902344;-0.28887557983398;4.6533505439758;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_BENCH_DRINK_BEER;NOANIM;NOANIM;2
2600762591;-23.363037109375;-38.781524658203;0.3933219909668;135.68293762207;0/7/1;1/0/0;2/7/0;3/8/3;4/5/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
967594628;-10.4072265625;18.010192871094;-0.59170532226563;152.51422119141;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_LOW_CLASS;NOANIM;NOANIM;3
279228114;-39.653076171875;-22.253692626953;0.408935546875;163.98332214355;0/3/2;1/0/0;2/6/2;3/3/2;4/2/1;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;17.581298828125;2.9004821777344;-0.79987335205078;86.88433380127;0/1/0;1/0/0;2/2/1;3/0/2;4/1/2;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRINKING_FACILITY;NOANIM;NOANIM;1
553826858;-35.187744140625;10.183898925781;0.44078826904297;79.912719726563;0/0/0;1/0/0;2/2/0;3/0/0;4/1/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_UPRIGHT_CLUBHOUSE;NOANIM;NOANIM;1
279228114;-11.266357421875;1.4255676269531;-0.59174728393555;83.41187286377;0/1/2;1/0/0;2/1/0;3/1/2;4/0/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;-36.900146484375;-40.341003417969;1.4089393615723;235.8763885498;0/4/2;1/0/0;2/8/0;3/5/1;4/4/1;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
1415150394;-10.84375;15.41650390625;-0.29487609863281;353.35062866211;0/0/0;1/-1/255;2/0/0;3/0/0;4/0/0;5/-1/255;6/0/0;7/-1/255;8/-1/255;9/-1/255;10/-1/255;11/0/0;PROP_HUMAN_SEAT_CHAIR_FOOD;NOANIM;NOANIM;2
-1860463438;11.334228515625;2.9382934570313;-0.83710479736328;194.09878540039;0/7/1;1/0/0;2/9/0;3/8/1;4/4/2;5/0/0;6/3/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
279228114;-41.084228515625;-3.5946655273438;0.44081878662109;297.2998046875;0/3/1;1/0/0;2/7/1;3/4/0;4/3/2;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING_POT;NOANIM;NOANIM;3
279228114;-9.53076171875;-31.380828857422;0.40898132324219;150.59912109375;0/4/1;1/0/0;2/9/1;3/6/0;4/5/2;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
-1860463438;-26.864990234375;2.2797546386719;0.44082641601563;28.199049758911;0/6/0;1/0/0;2/8/0;3/9/4;4/4/1;5/0/0;6/3/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING_POT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-22.1328125;-9.9440307617188;0.4407958984375;352.19938964844;0/0/2;1/0/0;2/2/0;3/1/0;4/1/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
279228114;-40.210205078125;-21.170944213867;0.38017654418945;59.21212387085;0/1/1;1/0/0;2/3/0;3/2/2;4/0/2;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1860463438;12.467529296875;3.3342590332031;-0.83204650878906;229.77044677734;0/9/0;1/0/0;2/12/0;3/12/0;4/7/2;5/0/0;6/5/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-23.667236328125;-44.602325439453;1.0090484619141;263.33177490234;0/1/2;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
337826907;-54.858154296875;-27.075225830078;1.0408248901367;238.19868774414;0/3/2;1/0/0;2/3/2;3/1/3;4/1/0;5/0/0;6/0/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
337826907;-20.707275390625;6.1807250976563;-0.59172439575195;60.761502075195;0/3/1;1/0/0;2/3/1;3/0/2;4/1/0;5/0/0;6/0/1;7/3/0;8/2/0;9/0/0;10/2/0;11/2/0;WORLD_HUMAN_STAND_MOBILE;NOANIM;NOANIM;1
-1860463438;-29.437255859375;-56.013214111328;0.99850463867188;57.2177734375;0/5/0;1/0/0;2/6/1;3/6/2;4/3/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MAID_CLEAN;NOANIM;NOANIM;1
553826858;-51.260986328125;8.8157653808594;0.44113922119141;192.89949035645;0/4/0;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_FACILITY;NOANIM;NOANIM;1
-1694204705;-26.25;4.2784729003906;-0.5504035949707;103.49549407959;0/6/2;1/0/0;2/6/2;3/8/1;4/6/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRUG_DEALER_HARD;NOANIM;NOANIM;3
553826858;-11.3466796875;-42.34944152832;0.40894317626953;207.55474853516;0/8/0;1/0/0;2/0/0;3/8/1;4/6/1;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STUPOR_CLUBHOUSE;NOANIM;NOANIM;3
279228114;-8.035400390625;-37.1328125;0.82003021240234;360.24982910156;0/0/0;1/0/0;2/0/0;3/0/0;4/1/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_TOURIST_MOBILE;NOANIM;NOANIM;3
-1860463438;-13.244873046875;-41.6650390625;0.40895462036133;80.652603149414;0/8/1;1/0/0;2/10/2;3/11/1;4/6/1;5/0/0;6/4/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_JOG_STANDING;NOANIM;NOANIM;3
279228114;-15.371337890625;-27.090316772461;0.44087219238281;18.0;0/0/1;1/0/0;2/1/0;3/2/0;4/1/0;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
279228114;4.607666015625;-24.341110229492;0.40898895263672;342.3327331543;0/2/0;1/0/0;2/5/0;3/1/1;4/0/1;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;base;anim@amb@office@boardroom@boss@female@;1
279228114;3.045654296875;-30.727813720703;0.80910110473633;14.54231262207;0/4/1;1/0/0;2/8/1;3/5/0;4/4/0;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_BUM_SLUMPED;NOANIM;NOANIM;3
553826858;-30.8310546875;-35.971939086914;1.0158615112305;272.70567626953;0/6/0;1/0/0;2/3/0;3/7/1;4/4/2;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
279228114;-23.257080078125;-16.341064453125;0.44073867797852;263.99914550781;0/0/2;1/0/0;2/5/1;3/1/0;4/1/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
279228114;-21.9384765625;-30.499206542969;0.0088920593261719;305.99966430664;0/2/0;1/0/0;2/0/1;3/1/1;4/1/1;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;base;anim@amb@office@boardroom@boss@female@;3
279228114;-21.723388671875;-38.674728393555;0.40880966186523;277.17681884766;0/3/0;1/0/0;2/6/1;3/4/1;4/3/0;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
@@ -1,77 +0,0 @@
2434503858;-8.7872924804688;23.961009979248;-0.25996398925781;-0.020168560743332;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_CHAIR_FOOD;NOANIM;NOANIM;2
2526968950;16.277465820313;18.272291183472;-0.11618041992188;326.27932739258;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL_EATING;NOANIM;NOANIM;3
2600762591;-18.864318847656;-19.675247192383;-0.70819091796875;54.179363250732;0/3/0;1/0/0;2/3/0;3/5/0;4/3/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;-12.779235839844;15.591951370239;-0.67390441894531;110.77623748779;0/9/0;1/0/0;2/2/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
553826858;30.58642578125;-5.018985748291;-0.7552490234375;68.124870300293;0/2/1;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
279228114;-4.3040161132813;-32.721099853516;-0.67387390136719;336.61962890625;0/4/0;1/0/0;2/8/1;3/5/2;4/4/2;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
2434503858;11.405029296875;-6.0403289794922;-0.6871337890625;86.056533813477;0/11/2;1/0/0;2/14/1;3/13/2;4/8/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2434503858;-13.685974121094;-18.847267150879;-0.67822265625;217.37690734863;0/12/2;1/0/0;2/15/1;3/15/2;4/10/2;5/0/0;6/7/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_HIGH_CLASS;NOANIM;NOANIM;2
279228114;-28.88818359375;-14.186309814453;-0.67391967773438;63.763027191162;0/3/0;1/0/0;2/7/0;3/3/1;4/2/2;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
337826907;1.8112182617188;-7.6772880554199;-0.69148254394531;191.28015136719;0/5/0;1/0/0;2/5/0;3/0/4;4/1/0;5/0/0;6/0/0;7/3/0;8/2/0;9/0/0;10/2/0;11/2/0;WORLD_HUMAN_SMOKING;NOANIM;NOANIM;1
279228114;-2.0689086914063;18.453989028931;-0.66619873046875;112.45561523438;0/1/0;1/0/0;2/2/1;3/0/2;4/1/2;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;30.411071777344;3.8069267272949;-0.67398071289063;234.56781005859;0/6/1;1/0/0;2/3/0;3/6/0;4/3/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;-0.23419189453125;13.93713760376;-0.67386627197266;48.884963989258;0/5/2;1/0/0;2/4/0;3/5/2;4/2/2;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;check_out_b;clothingshirt;3
2600762591;-8.1416625976563;6.1239776611328;-0.66889953613281;342.76519775391;0/11/1;1/0/0;2/11/0;3/12/0;4/10/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
553826858;30.428283691406;-14.059211730957;0.030380249023438;216.07926635742;0/1/0;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_DECKCHAIR_DRINK;NOANIM;NOANIM;3
2434503858;-8.68505859375;5.3419342041016;-0.66512298583984;144.89999084473;0/6/1;1/0/0;2/8/1;3/9/5;4/4/3;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
1278330017;-14.859130859375;-18.609802246094;-0.6590576171875;92.956588745117;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MUSCLE_FLEX;NOANIM;NOANIM;2
279228114;12.797424316406;-26.692459106445;-0.67387390136719;186.74208068848;0/1/2;1/0/0;2/4/0;3/1/2;4/1/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2600762591;-5.9449462890625;12.739471435547;-0.66284942626953;221.87998657227;0/0/0;1/0/0;2/12/0;3/0/0;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;EAR_TO_TEXT;NOANIM;NOANIM;2
279228114;-10.22900390625;2.704345703125;-0.65725708007813;106.49894714355;0/4/2;1/0/0;2/9/0;3/6/2;4/5/0;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;-14.779968261719;-25.711486816406;-0.67388153076172;174.93353271484;0/4/1;1/0/0;2/2/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
553826858;10.816284179688;-3.3903579711914;-0.69092559814453;179.86836242676;0/5/0;1/0/0;2/4/0;3/3/0;4/2/0;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
2600762591;-7.91845703125;-4.1009788513184;-0.65665435791016;274.61987304688;0/13/2;1/0/0;2/9/0;3/13/2;4/9/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;14.529724121094;-3.6628456115723;-0.68708801269531;208.11218261719;0/3/2;1/0/0;2/7/2;3/4/2;4/3/1;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SECURITY_SHINE_TORCH;interview_short_anton;missmic4premiere;3
279228114;4.1708984375;24.064912796021;-0.10147094726563;139.71432495117;0/0/2;1/0/0;2/0/0;3/1/0;4/0/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_COMPUTER;NOANIM;NOANIM;2
553826858;-15.090759277344;-14.147415161133;-0.66891479492188;45.870944976807;0/7/1;1/0/0;2/3/0;3/7/2;4/4/1;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;11.544921875;-9.9813842773438;-0.7996826171875;229.26098632813;0/7/0;1/0/0;2/3/0;3/6/1;4/4/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;3
553826858;8.3779296875;19.84729385376;-0.733154296875;321.16220092773;0/7/2;1/0/0;2/3/0;3/6/2;4/3/2;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_WINDOW_SHOP_BROWSE;NOANIM;NOANIM;3
4150317356;-22.207153320313;-24.72492980957;-0.67391204833984;74.806259155273;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_BUM_STANDING;NOANIM;NOANIM;3
553826858;-8.6715087890625;-5.350414276123;-0.67018890380859;-148.45899963379;0/3/1;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
279228114;-1.6362915039063;19.790523529053;-0.64662170410156;25.383219909668;0/2/2;1/0/0;2/5/0;3/2/1;4/1/1;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
2434503858;-7.1082763671875;12.82543182373;-0.66837310791016;93.391899108887;0/9/1;1/0/0;2/11/2;3/12/2;4/7/1;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
279228114;11.49462890625;-2.0588569641113;-0.68126678466797;296.16398925781;0/0/1;1/0/0;2/5/1;3/2/0;4/0/0;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRINKING_CASINO_TERRACE;NOANIM;NOANIM;1
279228114;1.5167846679688;-24.610343933105;-0.75183868408203;6.0595998764038;0/1/2;1/0/0;2/2/0;3/1/2;4/0/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
55858852;24.944091796875;-13.559906005859;-0.35398101806641;140.65014343262;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL;NOANIM;NOANIM;3
3138220789;18.698974609375;9.9356842041016;-0.67382049560547;185.33483581543;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MOBILE_FILM_SHOCKING;NOANIM;NOANIM;3
279228114;-9.4822998046875;-4.0004692077637;-0.67018890380859;42.865997314453;0/2/1;1/0/0;2/1/1;3/0/1;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
2434503858;5.6478271484375;13.493465423584;-0.66499328613281;165.04089355469;0/11/1;1/0/0;2/13/0;3/14/1;4/9/1;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE;NOANIM;NOANIM;3
2600762591;23.150939941406;-14.019443511963;-0.57590484619141;141.49633789063;0/12/0;1/0/0;2/8/1;3/13/1;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;12.711547851563;19.106533050537;-0.67390441894531;330.55627441406;0/2/2;1/0/0;2/2/0;3/1/0;4/0/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CLUBHOUSE;NOANIM;NOANIM;1
2434503858;7.3496704101563;0.65901947021484;-1.0001678466797;181.88602905273;0/10/1;1/0/0;2/12/2;3/12/1;4/7/0;5/0/0;6/5/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
279228114;9.3544921875;7.8700561523438;-1.0359954833984;43.959365844727;0/1/1;1/0/0;2/4/0;3/2/2;4/0/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_TOURIST_MAP;NOANIM;NOANIM;1
553826858;-12.275817871094;16.312839508057;-0.67397308349609;29.177249908447;0/8/1;1/0/0;2/1/0;3/8/0;4/6/0;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;EAR_TO_TEXT;NOANIM;NOANIM;1
279228114;4.7060546875;12.79080581665;-0.66825103759766;243.84157104492;0/2/1;1/0/0;2/3/0;3/0/1;4/1/1;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_UPRIGHT;NOANIM;NOANIM;2
553826858;-17.613159179688;-1.2354278564453;-0.67396545410156;96.303718566895;0/3/0;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
2600762591;24.3603515625;10.715633392334;-0.67380523681641;298.25578613281;0/9/0;1/0/0;2/1/0;3/10/4;4/7/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
279228114;-7.5050659179688;-7.9612846374512;-0.67391967773438;272.57165527344;0/4/0;1/0/0;2/9/1;3/6/1;4/5/1;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
279228114;-0.59619140625;18.482517242432;-0.66362762451172;280.13953857422;0/0/0;1/0/0;2/5/1;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2434503858;3.2254028320313;3.212947845459;-0.20298767089844;153.4035369873;0/3/1;1/0/0;2/5/2;3/5/2;4/2/0;5/0/0;6/1/3;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL;NOANIM;NOANIM;3
450271392;0.6334228515625;35.269824981689;-0.67389678955078;339.43181152344;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_HIGH_CLASS;NOANIM;NOANIM;3
2600762591;14.848815917969;18.41828918457;-0.67387390136719;-1.1043182611465;0/7/1;1/0/0;2/7/0;3/8/3;4/5/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
967594628;-4.896728515625;28.99919128418;-0.67389678955078;350.97969360352;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_LOW_CLASS;NOANIM;NOANIM;3
279228114;-4.9805908203125;-33.754745483398;-0.67396545410156;92.30640411377;0/3/2;1/0/0;2/6/2;3/3/2;4/2/1;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;9.8928833007813;-2.8846740722656;-0.69168090820313;91.536666870117;0/1/0;1/0/0;2/2/1;3/0/2;4/1/2;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRINKING_FACILITY;NOANIM;NOANIM;1
553826858;-17.99072265625;-8.7537727355957;-0.67391967773438;258.76701660156;0/0/0;1/0/0;2/2/0;3/0/0;4/1/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_UPRIGHT_CLUBHOUSE;NOANIM;NOANIM;1
279228114;-8.9125366210938;2.7949981689453;-0.64796447753906;274.49938964844;0/1/2;1/0/0;2/1/0;3/1/2;4/0/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;31.346923828125;-5.9255180358887;-0.76172637939453;225.64598083496;0/4/2;1/0/0;2/8/0;3/5/1;4/4/1;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1860463438;11.875;6.2086639404297;-1.0001907348633;341.09956665039;0/7/1;1/0/0;2/9/0;3/8/1;4/4/2;5/0/0;6/3/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
279228114;24.313049316406;11.93147277832;-0.67381286621094;292.57995605469;0/3/1;1/0/0;2/7/1;3/4/0;4/3/2;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING_POT;NOANIM;NOANIM;3
279228114;15.574768066406;1.7040901184082;-0.69168853759766;143.32348632813;0/4/1;1/0/0;2/9/1;3/6/0;4/5/2;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
-1860463438;-14.354614257813;-9.681468963623;-0.67396545410156;154.81707763672;0/6/0;1/0/0;2/8/0;3/9/4;4/4/1;5/0/0;6/3/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING_POT_CLUBHOUSE;NOANIM;NOANIM;3
279228114;0.3314208984375;12.971771240234;-0.67397308349609;158.36950683594;0/1/1;1/0/0;2/3/0;3/2/2;4/0/2;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1860463438;-14.920471191406;-8.4204750061035;-0.67397308349609;45.343883514404;0/9/0;1/0/0;2/12/0;3/12/0;4/7/2;5/0/0;6/5/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;17.108093261719;0.73680114746094;-0.67396545410156;319.08322143555;0/1/2;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
337826907;-6.0908203125;19.376499176025;-0.67393493652344;56.572829437256;0/3/2;1/0/0;2/3/2;3/1/3;4/1/0;5/0/0;6/0/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
337826907;15.346069335938;-14.009948730469;-0.67397308349609;31.769347000122;0/3/1;1/0/0;2/3/1;3/0/2;4/1/0;5/0/0;6/0/1;7/3/0;8/2/0;9/0/0;10/2/0;11/2/0;WORLD_HUMAN_STAND_MOBILE;NOANIM;NOANIM;1
-1860463438;0.9892578125;23.701154708862;-0.7557373046875;79.969654846191;0/5/0;1/0/0;2/6/1;3/6/2;4/3/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MAID_CLEAN;NOANIM;NOANIM;1
553826858;-7.4312133789063;-15.935153961182;-0.67396545410156;164.74014587402;0/4/0;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_FACILITY;NOANIM;NOANIM;1
-1694204705;-25.307373046875;-4.5838394165039;-0.66722869873047;118.49718475342;0/6/2;1/0/0;2/6/2;3/8/1;4/6/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRUG_DEALER_HARD;NOANIM;NOANIM;3
553826858;23.643737792969;4.3163871765137;-0.687255859375;126.12964630127;0/8/0;1/0/0;2/0/0;3/8/1;4/6/1;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STUPOR_CLUBHOUSE;NOANIM;NOANIM;3
279228114;-4.7685546875;-24.110244750977;-0.66854858398438;32.302276611328;0/0/0;1/0/0;2/0/0;3/0/0;4/1/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_TOURIST_MOBILE;NOANIM;NOANIM;3
-1860463438;23.78125;5.5352439880371;-0.66900634765625;-0.32176947593689;0/8/1;1/0/0;2/10/2;3/11/1;4/6/1;5/0/0;6/4/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_JOG_STANDING;NOANIM;NOANIM;3
279228114;22.073547363281;-24.316719055176;-0.67396545410156;202.77962036133;0/0/1;1/0/0;2/1/0;3/2/0;4/1/0;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
279228114;-26.83056640625;-21.726509094238;-0.67394256591797;171.5920715332;0/2/0;1/0/0;2/5/0;3/1/1;4/0/1;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
279228114;2.4996337890625;-25.996803283691;-0.5816650390625;244.27853393555;0/4/1;1/0/0;2/8/1;3/5/0;4/4/0;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_BUM_SLUMPED;NOANIM;NOANIM;3
553826858;-28.075927734375;-15.321235656738;-0.65979766845703;130.39946746826;0/6/0;1/0/0;2/3/0;3/7/1;4/4/2;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
279228114;-27.674072265625;-13.950191497803;-0.67387390136719;350.48880004883;0/0/2;1/0/0;2/5/1;3/1/0;4/1/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
@@ -1,67 +0,0 @@
2434503858;-19.838256835938;-29.570804595947;-1.1579742431641;97.981251525879;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_CHAIR_FOOD;NOANIM;NOANIM;2
2526968950;-3.2247314453125;6.0386700630188;-1.1584243774414;5.1603555679321;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL_EATING;NOANIM;NOANIM;3
2600762591;-18.581481933594;-2.7016830444336;3.2426452636719;122.91455841064;0/3/0;1/0/0;2/3/0;3/5/0;4/3/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;-18.634338378906;-24.216781616211;3.2424926757812;258.56672668457;0/9/0;1/0/0;2/2/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
279228114;-3.8907470703125;-7.5634326934814;-1.1578826904297;183.09489440918;0/4/0;1/0/0;2/8/1;3/5/2;4/4/2;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
2434503858;-20.777893066406;-46.473964691162;-1.1580352783203;294.24591064453;0/11/2;1/0/0;2/14/1;3/13/2;4/8/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2434503858;-36.887329101562;-4.6235961914062;3.2421417236328;70.489926147461;0/12/2;1/0/0;2/15/1;3/15/2;4/10/2;5/0/0;6/7/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_HIGH_CLASS;NOANIM;NOANIM;2
279228114;-17.838562011719;25.154922485352;-1.1591644287109;351.74349975586;0/3/0;1/0/0;2/7/0;3/3/1;4/2/2;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
337826907;-41.81640625;-19.90637588501;4.0841064453125;69.922569274902;0/4/0;1/1/0;2/4/0;3/1/0;4/0/0;5/0/0;6/1/0;7/2/0;8/3/0;9/0/0;10/1/0;11/1/0;WORLD_HUMAN_STAND_IMPATIENT;NOANIM;NOANIM;1
2600762591;-16.094177246094;-12.426784515381;3.2424926757812;311.759765625;0/10/2;1/0/0;2/15/0;3/1/1;4/11/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
337826907;-14.289001464844;-15.702922821045;3.2422027587891;270.19537353516;0/5/0;1/0/0;2/5/0;3/0/4;4/1/0;5/0/0;6/0/0;7/3/0;8/2/0;9/0/0;10/2/0;11/2/0;WORLD_HUMAN_SMOKING;NOANIM;NOANIM;1
279228114;-64.581298828125;-47.360157012939;-1.1587371826172;77.157054138184;0/1/0;1/0/0;2/2/1;3/0/2;4/1/2;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;-21.361694335938;-24.310531616211;-1.1582260131836;134.51545715332;0/5/2;1/0/0;2/4/0;3/5/2;4/2/2;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;check_out_b;clothingshirt;3
2600762591;-23.511413574219;-16.296873092651;3.2424926757812;262.96563720703;0/11/1;1/0/0;2/11/0;3/12/0;4/10/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
2434503858;-17.903015136719;19.85259437561;-1.1586074829102;331.38000488281;0/6/1;1/0/0;2/8/1;3/9/5;4/4/3;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
1278330017;-23.456359863281;-1.909478187561;3.2424621582031;23.738506317139;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MUSCLE_FLEX;NOANIM;NOANIM;2
279228114;-42.659729003906;-51.848621368408;-1.1586303710938;62.385772705078;0/1/2;1/0/0;2/4/0;3/1/2;4/1/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2600762591;-2.8207397460938;-19.76473236084;-1.1576538085938;88.169021606445;0/0/0;1/0/0;2/12/0;3/0/0;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;EAR_TO_TEXT;NOANIM;NOANIM;2
279228114;-41.066284179688;-57.056888580322;-1.1588287353516;41.132080078125;0/4/2;1/0/0;2/9/0;3/6/2;4/5/0;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;-59.837280273438;-14.758823394775;-1.1579437255859;349.84075927734;0/4/1;1/0/0;2/2/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
553826858;-30.496154785156;-54.54740524292;-1.1585845947266;34.151985168457;0/5/0;1/0/0;2/4/0;3/3/0;4/2/0;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
279228114;-27.9765625;-7.6263027191162;3.2424697875977;184.26542663574;0/3/2;1/0/0;2/7/2;3/4/2;4/3/1;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SECURITY_SHINE_TORCH;interview_short_anton;missmic4premiere;3
553826858;-34.851257324219;-0.90953826904297;3.2424926757812;102.87080383301;0/7/1;1/0/0;2/3/0;3/7/2;4/4/1;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;-18.226257324219;-7.8966808319092;3.2424926757812;263.46086425781;0/7/0;1/0/0;2/3/0;3/6/1;4/4/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;3
553826858;-23.898803710938;-10.473737716675;3.2424926757812;-148.45899963379;0/3/1;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
279228114;-37.531372070312;20.085004806519;-1.1582336425781;247.05068969727;0/2/2;1/0/0;2/5/0;3/2/1;4/1/1;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
2434503858;-24.970703125;2.373908996582;3.2419586181641;104.87320709229;0/9/1;1/0/0;2/11/2;3/12/2;4/7/1;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
279228114;-23.373229980469;-12.906795501709;3.2424926757812;231.06343383789;0/0/1;1/0/0;2/5/1;3/2/0;4/0/0;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRINKING_CASINO_TERRACE;NOANIM;NOANIM;1
55858852;-24.515319824219;-16.84888458252;3.2424926757812;83.982151794434;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL;NOANIM;NOANIM;3
279228114;-4.0256958007812;-6.6103439331055;-1.1578826904297;8.6422243118286;0/2/1;1/0/0;2/1/1;3/0/1;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
2434503858;-62.109436035156;-54.607326507568;-0.76171875;237.62396240234;0/11/1;1/0/0;2/13/0;3/14/1;4/9/1;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-26.574279785156;-9.4267177581787;3.2424926757812;146.17247009277;0/0/1;1/0/0;2/2/0;3/1/0;4/0/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_FACILITY;NOANIM;NOANIM;1
2600762591;-20.761779785156;-24.113594055176;-1.1578063964844;358.81484985352;0/12/0;1/0/0;2/8/1;3/13/1;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;0.9691162109375;-13.886451721191;-1.1577987670898;232.85092163086;0/2/2;1/0/0;2/2/0;3/1/0;4/0/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CLUBHOUSE;NOANIM;NOANIM;1
2434503858;-21.216735839844;-22.905567169189;-1.1572723388672;235.99612426758;0/10/1;1/0/0;2/12/2;3/12/1;4/7/0;5/0/0;6/5/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
279228114;-23.967529296875;3.2760448455811;3.2424545288086;344.47076416016;0/1/1;1/0/0;2/4/0;3/2/2;4/0/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_TOURIST_MAP;NOANIM;NOANIM;1
553826858;-1.73388671875;-20.017433166504;-1.1577606201172;239.91159057617;0/8/1;1/0/0;2/1/0;3/8/0;4/6/0;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;EAR_TO_TEXT;NOANIM;NOANIM;1
279228114;-50.34912109375;-57.829402923584;-1.1599960327148;178.48895263672;0/2/1;1/0/0;2/3/0;3/0/1;4/1/1;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_UPRIGHT;NOANIM;NOANIM;2
553826858;-6.7276611328125;-7.3364143371582;-1.1577987670898;113.85373687744;0/3/0;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
2600762591;-23.480895996094;2.1632041931152;3.242301940918;280.94766235352;0/9/0;1/0/0;2/1/0;3/10/4;4/7/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
279228114;-38.39892578125;20.574663162231;-1.1583251953125;81.252288818359;0/4/0;1/0/0;2/9/1;3/6/1;4/5/1;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
279228114;-17.408569335938;-1.9984741210938;3.2425231933594;291.28167724609;0/0/0;1/0/0;2/5/1;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2434503858;-31.609375;-7.935697555542;3.2904663085938;159.70381469727;0/3/1;1/0/0;2/5/2;3/5/2;4/2/0;5/0/0;6/1/3;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL;NOANIM;NOANIM;3
279228114;-32.47314453125;-54.054599761963;-0.6007080078125;138.40638427734;0/2/2;1/0/0;2/2/0;3/2/1;4/0/1;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_BENCH_DRINK_BEER;NOANIM;NOANIM;3
450271392;-27.932067871094;25.281848907471;-1.1593322753906;297.02154541016;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_HIGH_CLASS;NOANIM;NOANIM;3
4188740747;-30.648803710938;-28.622646331787;3.2215423583984;84.741188049316;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_BENCH_DRINK_BEER;NOANIM;NOANIM;2
2600762591;-22.3310546875;-2.6285591125488;3.2424926757812;237.34228820801;0/7/1;1/0/0;2/7/0;3/8/3;4/5/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
967594628;-17.1943359375;-3.2479820251465;3.2424011230469;234.16453552246;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_LOW_CLASS;NOANIM;NOANIM;3
279228114;-17.928466796875;18.786331176758;-1.1584548950195;151.4581451416;0/3/2;1/0/0;2/6/2;3/3/2;4/2/1;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;-41.748474121094;-52.03600692749;-1.1585006713867;294.05926513672;0/1/2;1/0/0;2/1/0;3/1/2;4/0/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
1415150394;-17.000854492188;-6.6426639556885;2.9756393432617;239.10246582031;0/0/0;1/-1/255;2/0/0;3/0/0;4/0/0;5/-1/255;6/0/0;7/-1/255;8/-1/255;9/-1/255;10/-1/255;11/0/0;PROP_HUMAN_SEAT_CHAIR_FOOD;NOANIM;NOANIM;2
-1860463438;-28.666687011719;13.520670890808;-1.1578521728516;42.178745269775;0/7/1;1/0/0;2/9/0;3/8/1;4/4/2;5/0/0;6/3/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
279228114;-23.137817382812;-3.1716976165771;3.2424774169922;189.8394317627;0/3/1;1/0/0;2/7/1;3/4/0;4/3/2;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING_POT;NOANIM;NOANIM;3
279228114;-28.9453125;24.763179779053;-1.1584167480469;70.567970275879;0/4/1;1/0/0;2/9/1;3/6/0;4/5/2;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
279228114;-21.824951171875;-47.222465515137;-1.1579742431641;103.42781524658;0/1/1;1/0/0;2/3/0;3/2/2;4/0/2;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1860463438;-28.252807617188;-6.6486511230469;3.2424545288086;29.282115936279;0/9/0;1/0/0;2/12/0;3/12/0;4/7/2;5/0/0;6/5/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-52.179626464844;-16.19548034668;3.1614761352539;63.538203430176;0/1/2;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
337826907;-30.06640625;-55.486919403076;-1.1589050292969;178.40603637695;0/3/2;1/0/0;2/3/2;3/1/3;4/1/0;5/0/0;6/0/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
-1860463438;-12.838806152344;13.818646430969;-1.1583099365234;266.32236938477;0/5/0;1/0/0;2/6/1;3/6/2;4/3/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MAID_CLEAN;NOANIM;NOANIM;1
-1694204705;-0.46539306640625;-5.6159629821777;-1.1578903198242;65.928462219238;0/6/2;1/0/0;2/6/2;3/8/1;4/6/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRUG_DEALER_HARD;NOANIM;NOANIM;3
553826858;-30.702453613281;12.143587112427;3.2414321899414;51.978393554688;0/8/0;1/0/0;2/0/0;3/8/1;4/6/1;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STUPOR_CLUBHOUSE;NOANIM;NOANIM;3
279228114;-30.720703125;-4.3775596618652;3.2424926757812;255.25027770996;0/0/0;1/0/0;2/0/0;3/0/0;4/1/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_TOURIST_MOBILE;NOANIM;NOANIM;3
-1860463438;-67.253784179688;-48.930229187012;-0.76409912109375;354.1537902832;0/8/1;1/0/0;2/10/2;3/11/1;4/6/1;5/0/0;6/4/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_JOG_STANDING;NOANIM;NOANIM;3
279228114;-55.75927734375;-55.550403594971;-1.1589965820312;125.26559448242;0/0/1;1/0/0;2/1/0;3/2/0;4/1/0;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
279228114;-24.664611816406;-12.861818313599;3.2424926757812;89.999969482422;0/2/0;1/0/0;2/5/0;3/1/1;4/0/1;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
279228114;-36.048950195312;-3.2915649414062;3.2424926757812;31.740230560303;0/4/1;1/0/0;2/8/1;3/5/0;4/4/0;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_BUM_SLUMPED;NOANIM;NOANIM;3
279228114;-40.436889648438;-57.659236907959;-1.1587524414062;232.07540893555;0/0/2;1/0/0;2/5/1;3/1/0;4/1/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
@@ -1,85 +0,0 @@
2434503858;-2.3212890625;19.685930252075;-0.19699859619141;53.98041229248;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_CHAIR_FOOD;NOANIM;NOANIM;2
2526968950;-18.206115722656;5.7392959594727;0.19771575927734;341.53660888672;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL_EATING;NOANIM;NOANIM;3
2600762591;-18.9736328125;-19.563507080078;0.44073486328125;54.179363250732;0/3/0;1/0/0;2/3/0;3/5/0;4/3/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;-35.496276855469;-14.365493774414;0.069168090820313;159.56734924316;0/9/0;1/0/0;2/2/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-32.623840332031;-22.029472351074;0.45345306396484;162.71843261719;0/2/1;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
279228114;-20.952941894531;5.3609809875488;-0.15920257568359;100.40215301514;0/4/0;1/0/0;2/8/1;3/5/2;4/4/2;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
2434503858;9.7550659179688;-9.0881958007813;-0.7998046875;202.15742492676;0/11/2;1/0/0;2/14/1;3/13/2;4/8/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2434503858;-31.058898925781;-9.5620651245117;0.46534729003906;154.19045715332;0/12/2;1/0/0;2/15/1;3/15/2;4/10/2;5/0/0;6/7/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_HIGH_CLASS;NOANIM;NOANIM;2
279228114;-34.730529785156;-13.453735351563;0.041999816894531;-30.239999771118;0/3/0;1/0/0;2/7/0;3/3/1;4/2/2;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
337826907;-22.536804199219;-30.468215942383;1.2356948852539;42.482411193848;0/4/0;1/1/0;2/4/0;3/1/0;4/0/0;5/0/0;6/1/0;7/2/0;8/3/0;9/0/0;10/1/0;11/1/0;WORLD_HUMAN_STAND_IMPATIENT;NOANIM;NOANIM;1
2600762591;-9.4402465820313;7.5219421386719;-0.59600067138672;23.760000228882;0/10/2;1/0/0;2/15/0;3/1/1;4/11/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
337826907;13.319458007813;0.85515213012695;-0.97772979736328;253.39671020508;0/5/0;1/0/0;2/5/0;3/0/4;4/1/0;5/0/0;6/0/0;7/3/0;8/2/0;9/0/0;10/2/0;11/2/0;WORLD_HUMAN_SMOKING;NOANIM;NOANIM;1
279228114;0.71099853515625;11.829982757568;-0.55995941162109;125.95603637695;0/1/0;1/0/0;2/2/1;3/0/2;4/1/2;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;-33.015808105469;-3.6640548706055;0.44068908691406;144.64302062988;0/6/1;1/0/0;2/3/0;3/6/0;4/3/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;8.0192260742188;22.348573684692;-0.55995941162109;191.12475585938;0/5/2;1/0/0;2/4/0;3/5/2;4/2/2;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;check_out_b;clothingshirt;3
2600762591;-8.8323364257813;6.7239532470703;-0.59600067138672;222.76583557129;0/11/1;1/0/0;2/11/0;3/12/0;4/10/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
553826858;-12.514831542969;18.159801483154;0.035446166992188;29.78155708313;0/1/0;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_DECKCHAIR_DRINK;NOANIM;NOANIM;3
2434503858;-10.096435546875;6.5718841552734;-0.59600067138672;144.0;0/6/1;1/0/0;2/8/1;3/9/5;4/4/3;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
1278330017;-31.090637207031;-8.3707122802734;0.44069671630859;350.85969238281;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MUSCLE_FLEX;NOANIM;NOANIM;2
279228114;-35.916564941406;-13.393447875977;0.067863464355469;36.659759521484;0/1/2;1/0/0;2/4/0;3/1/2;4/1/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2600762591;-4.4703979492188;11.470481872559;-0.56785583496094;221.87998657227;0/0/0;1/0/0;2/12/0;3/0/0;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;EAR_TO_TEXT;NOANIM;NOANIM;2
279228114;-9.700927734375;1.3271408081055;-0.18263244628906;127.49905395508;0/4/2;1/0/0;2/9/0;3/6/2;4/5/0;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
553826858;-10.754211425781;-24.333236694336;0.44069671630859;174.93353271484;0/4/1;1/0/0;2/2/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
553826858;9.237548828125;-2.7126541137695;-0.82183837890625;347.5698425293;0/5/0;1/0/0;2/4/0;3/3/0;4/2/0;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
2600762591;-9.149658203125;-1.6710662841797;-0.15850067138672;-88.380012512207;0/13/2;1/0/0;2/9/0;3/13/2;4/9/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;8.816162109375;-8.6635551452637;-0.79960632324219;148.41452026367;0/3/2;1/0/0;2/7/2;3/4/2;4/3/1;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SECURITY_SHINE_TORCH;interview_short_anton;missmic4premiere;3
279228114;-17.254150390625;10.492946624756;-0.006988525390625;232.8263671875;0/0/2;1/0/0;2/0/0;3/1/0;4/0/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_COMPUTER;NOANIM;NOANIM;2
553826858;-17.671813964844;-20.024726867676;0.44068908691406;316.77166748047;0/7/1;1/0/0;2/3/0;3/7/2;4/4/1;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;11.544921875;-9.9813842773438;-0.7996826171875;229.26098632813;0/7/0;1/0/0;2/3/0;3/6/1;4/4/0;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;3
553826858;7.6781616210938;19.367282867432;-0.55995941162109;183.16337585449;0/7/2;1/0/0;2/3/0;3/6/2;4/3/2;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_WINDOW_SHOP_BROWSE;NOANIM;NOANIM;3
4150317356;-14.908264160156;1.1704330444336;-0.15917205810547;80.89026184082;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_BUM_STANDING;NOANIM;NOANIM;3
553826858;-8.1075439453125;-3.9700012207031;-0.18000030517578;-148.45899963379;0/3/1;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
279228114;0.44256591796875;12.959438323975;-0.56001281738281;35.283293914795;0/2/2;1/0/0;2/5/0;3/2/1;4/1/1;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
2434503858;-5.4266357421875;11.565483093262;-0.59600067138672;90.391998291016;0/9/1;1/0/0;2/11/2;3/12/2;4/7/1;5/0/0;6/5/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
279228114;9.5970458984375;-4.2397727966309;-0.79525756835938;231.06343383789;0/0/1;1/0/0;2/5/1;3/2/0;4/0/0;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRINKING_CASINO_TERRACE;NOANIM;NOANIM;1
279228114;-20.054809570313;5.9362335205078;-0.15920257568359;319.75811767578;0/1/2;1/0/0;2/2/0;3/1/2;4/0/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
55858852;8.4437255859375;-5.532341003418;-0.59566497802734;148.78296203613;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL;NOANIM;NOANIM;3
3138220789;-34.43603515625;6.0365447998047;0.44069671630859;6.3087017059326;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MOBILE_FILM_SHOCKING;NOANIM;NOANIM;3
279228114;-8.7015380859375;-3.2505035400391;-0.16000366210938;42.865997314453;0/2/1;1/0/0;2/1/1;3/0/1;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
2434503858;5.7977294921875;16.442882537842;-0.54164123535156;129.04111938477;0/11/1;1/0/0;2/13/0;3/14/1;4/9/1;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;10.246154785156;6.8676071166992;-1.0139999389648;227.17247314453;0/0/1;1/0/0;2/2/0;3/1/0;4/0/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_FACILITY;NOANIM;NOANIM;1
2600762591;9.1370849609375;6.6064262390137;-1.000114440918;151.72654724121;0/12/0;1/0/0;2/8/1;3/13/1;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
553826858;-37.6806640625;-17.387680053711;0.43772125244141;3.7649207115173;0/2/2;1/0/0;2/2/0;3/1/0;4/0/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CLUBHOUSE;NOANIM;NOANIM;1
2434503858;7.3496704101563;0.65901947021484;-1.0001678466797;181.88602905273;0/10/1;1/0/0;2/12/2;3/12/1;4/7/0;5/0/0;6/5/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
279228114;9.3544921875;7.8700561523438;-1.0359954833984;43.959365844727;0/1/1;1/0/0;2/4/0;3/2/2;4/0/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_TOURIST_MAP;NOANIM;NOANIM;1
553826858;-9.026123046875;16.151987075806;-0.57041931152344;4.5585260391235;0/8/1;1/0/0;2/1/0;3/8/0;4/6/0;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;EAR_TO_TEXT;NOANIM;NOANIM;1
279228114;5.8204956054688;12.256855010986;-0.56000518798828;243.84157104492;0/2/1;1/0/0;2/3/0;3/0/1;4/1/1;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_UPRIGHT;NOANIM;NOANIM;2
553826858;-16.626098632813;5.791446685791;-0.56474304199219;45.98267364502;0/3/0;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
2600762591;5.399169921875;13.381549835205;-0.54174041748047;334.91586303711;0/9/0;1/0/0;2/1/0;3/10/4;4/7/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
2600762591;12.949584960938;19.80983543396;-0.56000518798828;275.12399291992;0/5/0;1/0/0;2/4/1;3/6/0;4/4/3;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_STAND_IMPATIENT;NOANIM;NOANIM;3
279228114;-8.8939819335938;14.51245880127;-0.56764984130859;189.77952880859;0/4/0;1/0/0;2/9/1;3/6/1;4/5/1;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
279228114;1.642822265625;12.497505187988;-0.57600402832031;272.04014892578;0/0/0;1/0/0;2/5/1;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;3
2434503858;2.5347290039063;6.9387321472168;-0.20298767089844;159.70381469727;0/3/1;1/0/0;2/5/2;3/5/2;4/2/0;5/0/0;6/1/3;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SEAT_WALL;NOANIM;NOANIM;3
279228114;-11.734680175781;18.750513076782;-0.035064697265625;23.184113693237;0/2/2;1/0/0;2/2/0;3/2/1;4/0/1;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_BENCH_DRINK_BEER;NOANIM;NOANIM;3
450271392;-4.5588989257813;22.353923797607;-0.56000518798828;13.837906837463;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_HIGH_CLASS;NOANIM;NOANIM;3
4188740747;-0.9521484375;18.75630569458;-0.29718017578125;-48.959999084473;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;PROP_HUMAN_SEAT_BENCH_DRINK_BEER;NOANIM;NOANIM;2
2600762591;-31.840637207031;-3.4384803771973;0.44069671630859;237.34228820801;0/7/1;1/0/0;2/7/0;3/8/3;4/5/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
967594628;-1.6597290039063;22.329448699951;-0.55992889404297;285.9864074707;0/0/0;1/0/0;2/0/0;3/0/0;4/0/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PROSTITUTE_LOW_CLASS;NOANIM;NOANIM;3
279228114;-32.937072753906;-2.4253196716309;0.44069671630859;341.03814697266;0/3/2;1/0/0;2/6/2;3/3/2;4/2/1;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;8.1873779296875;-4.0992813110352;-0.79987335205078;86.88433380127;0/1/0;1/0/0;2/2/1;3/0/2;4/1/2;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRINKING_FACILITY;NOANIM;NOANIM;1
553826858;-45.362609863281;4.3761596679688;0.44078826904297;79.912719726563;0/0/0;1/0/0;2/2/0;3/0/0;4/1/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE_UPRIGHT_CLUBHOUSE;NOANIM;NOANIM;1
279228114;-9.0543212890625;1.9701614379883;-0.25605010986328;283.49948120117;0/1/2;1/0/0;2/1/0;3/1/2;4/0/2;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;3
279228114;-31.920166015625;-20.99454498291;0.45345306396484;324.58986206055;0/4/2;1/0/0;2/8/0;3/5/1;4/4/1;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
1415150394;-0.20037841796875;17.305589675903;-0.27812957763672;291.30180053711;0/0/0;1/-1/255;2/0/0;3/0/0;4/0/0;5/-1/255;6/0/0;7/-1/255;8/-1/255;9/-1/255;10/-1/255;11/0/0;PROP_HUMAN_SEAT_CHAIR_FOOD;NOANIM;NOANIM;2
-1860463438;11.875;6.2086639404297;-1.0001907348633;341.09956665039;0/7/1;1/0/0;2/9/0;3/8/1;4/4/2;5/0/0;6/3/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;3
279228114;-36.5263671875;7.1977615356445;0.44081878662109;297.2998046875;0/3/1;1/0/0;2/7/1;3/4/0;4/3/2;5/0/0;6/0/0;7/0/0;8/5/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING_POT;NOANIM;NOANIM;3
279228114;-52.217895507813;-14.667984008789;1.4408645629883;221.72512817383;0/4/1;1/0/0;2/9/1;3/6/0;4/5/2;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
-1860463438;-37.584777832031;7.0065307617188;0.44082641601563;26.39906578064;0/6/0;1/0/0;2/8/0;3/9/4;4/4/1;5/0/0;6/3/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING_POT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-28.341613769531;-0.0093727111816406;0.4407958984375;352.19938964844;0/0/2;1/0/0;2/2/0;3/1/0;4/1/0;5/0/0;6/1/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
279228114;-53.113586425781;-14.065052032471;1.4428405761719;59.699509429932;0/1/1;1/0/0;2/3/0;3/2/2;4/0/2;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1860463438;-53.912719726563;-6.995174407959;1.3979949951172;305.39948730469;0/9/0;1/0/0;2/12/0;3/12/0;4/7/2;5/0/0;6/5/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT_CLUBHOUSE;NOANIM;NOANIM;3
553826858;-63.516845703125;-3.9238929748535;1.4413681030273;65.999870300293;0/1/2;1/0/0;2/2/0;3/2/0;4/0/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
337826907;-43.256530761719;-25.443893432617;1.0408248901367;238.19868774414;0/3/2;1/0/0;2/3/2;3/1/3;4/1/0;5/0/0;6/0/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;1
337826907;-59.064392089844;-22.138885498047;1.4408569335938;184.74311828613;0/3/1;1/0/0;2/3/1;3/0/2;4/1/0;5/0/0;6/0/1;7/3/0;8/2/0;9/0/0;10/2/0;11/2/0;WORLD_HUMAN_STAND_MOBILE;NOANIM;NOANIM;1
-1860463438;-54.520812988281;-31.258232116699;1.0408248901367;43.798686218262;0/5/0;1/0/0;2/6/1;3/6/2;4/3/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MAID_CLEAN;NOANIM;NOANIM;1
553826858;-41.940856933594;1.7172203063965;0.44113922119141;192.89949035645;0/4/0;1/0/0;2/2/0;3/2/0;4/1/0;5/0/0;6/2/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_FACILITY;NOANIM;NOANIM;1
-1694204705;-23.35546875;-7.073802947998;-0.15924835205078;154.49736022949;0/6/2;1/0/0;2/6/2;3/8/1;4/6/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_DRUG_DEALER_HARD;NOANIM;NOANIM;3
553826858;-30.47998046875;-29.383125305176;0.44069671630859;150.89926452637;0/8/0;1/0/0;2/0/0;3/8/1;4/6/1;5/0/0;6/3/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STUPOR_CLUBHOUSE;NOANIM;NOANIM;3
279228114;-15.574096679688;-28.165588378906;0.82003021240234;360.24982910156;0/0/0;1/0/0;2/0/0;3/0/0;4/1/0;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_TOURIST_MOBILE;NOANIM;NOANIM;3
-1860463438;-31.451416015625;-28.793571472168;0.44167327880859;88.578625488281;0/8/1;1/0/0;2/10/2;3/11/1;4/6/1;5/0/0;6/4/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_JOG_STANDING;NOANIM;NOANIM;3
279228114;-25.285339355469;-20.848434448242;0.44087219238281;18.0;0/0/1;1/0/0;2/1/0;3/2/0;4/1/0;5/0/0;6/0/0;7/0/0;8/3/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
279228114;-26.120056152344;-21.742851257324;0.44075775146484;89.999969482422;0/2/0;1/0/0;2/5/0;3/1/1;4/0/1;5/0/0;6/0/0;7/0/0;8/2/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;1
279228114;-12.392761230469;-27.024757385254;0.84078216552734;268.74055175781;0/4/1;1/0/0;2/8/1;3/5/0;4/4/0;5/0/0;6/0/0;7/0/0;8/6/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_BUM_SLUMPED;NOANIM;NOANIM;3
553826858;-22.664489746094;-27.572380065918;0.82898712158203;275.99908447266;0/6/0;1/0/0;2/3/0;3/7/1;4/4/2;5/0/0;6/6/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
279228114;-23.663146972656;-27.995819091797;0.84578704833984;128.99987792969;0/0/2;1/0/0;2/5/1;3/1/0;4/1/0;5/0/0;6/0/0;7/0/0;8/4/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET_CLUBHOUSE;NOANIM;NOANIM;2
@@ -1,6 +0,0 @@
-1519253631;-1925.2986;-1326.1562;-2.6549;170.32;0/1/1;1/0/0;2/2/0;3/1/0;4/0/3;5/0/0;6/0/0;7/0/0;8/1/1;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_LEANING_CASINO_TERRACE;NOANIM;NOANIM;1
-1106743555;-1934.0895;-1337.6454;-2.6589;197.30;0/1/0;1/0/0;2/1/0;3/0/3;4/1/1;5/0/0;6/0/0;7/0/0;8/1/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
-771835772;-1933.7921;-1338.6002;-2.6589;17.30;0/0/1;1/0/0;2/0/0;3/0/1;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
-1606864033;-1924.4449;-1345.0160;-2.6665;111.35;0/1/0;1/0/0;2/1/0;3/1/2;4/1/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT;NOANIM;NOANIM;1
-1606864033;-1925.4336;-1344.8656;-2.6665;231.35;0/0/0;1/0/0;2/0/1;3/0/1;4/0/1;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING;NOANIM;NOANIM;1
-781039234;-1925.0695;-1345.7970;-2.6665;351.35;0/1/0;1/0/0;2/1/0;3/0/1;4/0/2;5/0/0;6/0/0;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;1
@@ -1,37 +0,0 @@
-1760377969;-1373.4498291016;-1060.470703125;11.466174125671;306.86770629883;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;2
1750583735;-1350.9283447266;-1064.3785400391;7.0069794654846;216.15802001953;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_LEANING_CASINO_TERRACE;NOANIM;NOANIM;2
1328415626;-1352.8482666016;-1072.0590820312;11.467930793762;140.0007019043;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
1328415626;-1353.8458251953;-1071.9892578125;11.467930793762;212.00015258789;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_MOBILE_FILM_SHOCKING;NOANIM;NOANIM;2
-1606864033;-1354.2204589844;-1072.9165039062;11.467930793762;284.00036621094;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1106743555;-1353.4543457031;-1073.5593261719;11.467930793762;356.00103759766;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
-88831029;-1352.6063232422;-1073.029296875;11.467930793762;68.003150939941;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1106743555;-1346.2290039062;-1051.2973632812;11.473196983337;139.99722290039;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
532905404;-1347.6236572266;-1051.4193115234;11.473196983337;229.99723815918;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
951767867;-1347.5017089844;-1052.8139648438;11.473196983337;319.99722290039;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_MOBILE;NOANIM;NOANIM;2
808859815;-1346.1070556641;-1052.6920166016;11.473196983337;49.997222900391;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING;NOANIM;NOANIM;2
-1106743555;-1351.5688476562;-1088.7530517578;14.461860656738;243.13638305664;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1606864033;-1351.1953125;-1089.8934326172;14.461860656738;333.13635253906;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING;NOANIM;NOANIM;2
-1106743555;-1350.0549316406;-1089.5198974609;14.461860656738;63.136360168457;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING;NOANIM;NOANIM;2
808859815;-1350.4284667969;-1088.3795166016;14.461860656738;153.13635253906;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1519253631;-1333.9119873047;-1057.4927978516;12.472941398621;88.437103271484;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-771835772;-1334.7640380859;-1056.9693603516;12.472941398621;208.43449401855;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING;NOANIM;NOANIM;2
-150026812;-1334.7913818359;-1057.9689941406;12.472941398621;328.43374633789;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT;NOANIM;NOANIM;2
808859815;-1357.7598876953;-1081.0675048828;14.461861610413;210.42828369141;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_LEANING_CASINO_TERRACE;NOANIM;NOANIM;2
-1029146878;-1319.0225830078;-1051.01953125;12.472941398621;157.19375610352;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;2
951767867;-1319.978515625;-1051.7448730469;12.472941398621;277.18634033203;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
1328415626;-1318.8723144531;-1052.2100830078;12.472941398621;37.194969177246;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING;NOANIM;NOANIM;2
532905404;-1354.3010253906;-1094.9360351562;14.461860656738;149.99716186523;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_SMOKING;NOANIM;NOANIM;2
1699403886;-1355.3403320312;-1095.5360107422;14.461860656738;270.0;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
1004114196;-1354.3010253906;-1096.1359863281;14.461860656738;30.002820968628;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
808859815;-1353.4924316406;-1069.5164794922;6.9393043518066;82.702194213867;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-88831029;-1354.4471435547;-1068.7893066406;6.9393043518066;202.70683288574;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
1750583735;-1354.5994873047;-1069.9796142578;6.9393043518066;322.70404052734;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1760377969;-1348.1529541016;-1075.0477294922;7.0343465805054;210.42851257324;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;2
1699403886;-1353.4696044922;-1051.2901611328;11.466174125671;140.00311279297;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_GUARD_STAND_CASINO;NOANIM;NOANIM;2
-771835772;-1354.5971679688;-1051.7005615234;11.466174125671;259.99493408203;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1519253631;-1353.6779785156;-1052.4719238281;11.466174125671;19.999492645264;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_HANG_OUT_STREET;NOANIM;NOANIM;2
-1606864033;-1339.2288818359;-1068.5532226562;11.467930793762;172.81280517578;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
532905404;-1339.3790283203;-1069.7438964844;11.467930793762;352.8127746582;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
-1760377969;-1360.1525878906;-1096.7788085938;14.607006072998;295.40869140625;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_LEANING_CASINO_TERRACE;NOANIM;NOANIM;2
1004114196;-1354.6751708984;-1079.1682128906;6.9393043518066;203.02227783203;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_PARTYING;NOANIM;NOANIM;2
532905404;-1354.2840576172;-1080.0886230469;6.9393043518066;23.022274017334;0/12/0;1/0/0;2/15/2;3/15/1;4/10/1;5/0/0;6/7/1;7/0/0;8/0/0;9/0/0;10/0/0;11/0/0;WORLD_HUMAN_STAND_IMPATIENT;NOANIM;NOANIM;2
@@ -1,205 +0,0 @@
local bossMenu = createMarker()
local vehReplacenent = createMarker()
local enterTeleport = nil
CreateThread(function()
bossMenu.setType(1)
bossMenu.setPosition(OfficeBossMarkerPosition)
bossMenu.setScale(vector3(1, 1, 1))
bossMenu.setInRadius(1.3)
bossMenu.setColor({
r = 225,
g = 125,
b = 250,
a = 50
})
bossMenu.setRotation(true)
bossMenu.setKeys({38})
bossMenu.on("enter", function()
ShowHelpNotification(Translation.Get("PRESS_TO_OPEN_BOSSMENU"))
end)
bossMenu.on("leave", function()
if ESX then
if ESX.UI then
ESX.UI.Menu.CloseAll()
end
end
-- I didnt found any way to close the qbcore menu seems like there isnt anything for this?
-- if you know the answer please contact us support and dont hesitate to help us!
if QBCore then
end
end)
bossMenu.setRenderJob(Config.JobName)
bossMenu.setGrades({
[Config.BossName] = true
})
bossMenu.setMinGrade(Config.BossGrade)
bossMenu.on("key", function()
if Framework.Active == 1 then
TriggerEvent(Events.ES_BOSS_MENU, Config.JobName, function(data, menu)
if menu then
menu.close()
end
end, {
withdraw = true,
deposit = true,
wash = true,
employees = true,
grades = true
})
elseif Framework.Active == 2 then
TriggerEvent(Events.QB_BOSS_MENU)
elseif Framework.Active == 4 then
-- implement function that opens bossmenu
end
end)
vehReplacenent.setType(36)
vehReplacenent.setPosition(vehicleReplacementCoords)
vehReplacenent.setScale(vector3(1, 1, 1))
vehReplacenent.setRotation(true)
vehReplacenent.setOnlyVehicle(1)
vehReplacenent.setInRadius(3.0)
vehReplacenent.setKeys({38})
vehReplacenent.setColor({
r = 255,
g = 255,
b = 255,
a = 125
})
vehReplacenent.setRenderJob(Config.JobName)
vehReplacenent.setGrades({
[Config.BossName] = true
})
vehReplacenent.setMinGrade(1)
vehReplacenent.on("enter", function()
ShowHelpNotification(Translation.Get("PRESS_TO_GIFT_LUCKYWHEEL_VEH"))
end)
vehReplacenent.on("key", function(key)
CasinoGarage_OnInteraction()
end)
vehReplacenent.on("leave", function()
if ESX then
if ESX.UI then
ESX.UI.Menu.CloseAll()
end
end
-- I didnt found any way to close the qbcore menu seems like there isnt anything for this?
-- if you know the answer please contact us support and dont hesitate to help us!
if QBCore then
end
end)
end)
-- Teleports
local function CreateTeleport(fromCoord, toCoord, message)
local enterTeleport = createMarker()
enterTeleport.setActivity("casinoteleporter")
enterTeleport.setType(1)
enterTeleport.setPosition(fromCoord)
enterTeleport.setScale(vector3(1.0, 1.0, 1.0))
enterTeleport.setRotation(true)
enterTeleport.setInRadius(3.0)
enterTeleport.setKeys({38})
enterTeleport.setColor({
r = 225,
g = 125,
b = 250,
a = 125
})
enterTeleport.on("enter", function()
ShowHelpNotification(message)
end)
enterTeleport.on("key", function(key)
CreateThread(function()
DoScreenFadeOut(500)
Wait(500)
SetEntityCoordsNoOffset(PlayerPedId(), toCoord)
Wait(500)
DoScreenFadeIn(500)
end, "custom tp")
end)
end
function BossMenu_Refresh()
bossMenu.setPosition(OfficeBossMarkerPosition)
vehReplacenent.setPosition(vehicleReplacementCoords)
-- refresh leave teleport for 5
if enterTeleport then
enterTeleport.destroy()
enterTeleport = nil
end
if Config.LeaveThroughTeleport then
enterTeleport = createMarker()
enterTeleport.setActivity("casinoteleporter")
enterTeleport.setType(1)
enterTeleport.setPosition(Config.EnterCheckpointPosition)
enterTeleport.setScale(vector3(1.0, 1.0, 1.0))
enterTeleport.setRotation(true)
enterTeleport.setInRadius(3.0)
enterTeleport.setKeys({38})
enterTeleport.setColor({
r = 225,
g = 125,
b = 250,
a = 125
})
enterTeleport.on("enter", function()
if OPEN_STATE[1] == true then
ShowHelpNotification(Translation.Get("PRESS_TO_ENTER_CASINO"))
else
local m = string.format(Translation.Get("OPENINGHOURS_CLOSED"), OPEN_STATE[2])
if FORCE_CLOSED then
m = Translation.Get("CASINO_TEMPORARY_CLOSED")
end
ShowHelpNotification(m)
end
end)
enterTeleport.on("key", function(key)
if OPEN_STATE[1] == true then
CreateThread(function()
Wait(500)
if Config.MapType ~= 5 then
DoScreenFadeOut(500)
SetEntityCoordsNoOffset(PlayerPedId(), Config.EnterPosition)
else
StartGTAOTPScene()
end
end, "teleport thread to casino")
else
Casino_ShowNotInOpenHoursPrompt(false)
end
end)
end
end
--[[
-- from casino to roof
CreateTeleport(vec3(919.722412, 41.050205, 80.095779), vec3(964.190613, 59.005474, 112.552979),
"Press [E] to go to the rooftop")
-- back
CreateTeleport(vec3(964.190613, 59.005474, 111.552979), vec3(919.722412, 41.050205, 80.095779),
"Press [E] to go back to the casino")
]]
File diff suppressed because it is too large Load Diff
@@ -1,273 +0,0 @@
local targetId = 5
local usedTargetModels = {}
local usedBoxZones = {}
local usedEntities = {}
local function GetUniqueTargetName()
targetId = targetId + 1
return "casinotarget_" .. targetId
end
TargetType = {
NO_TARGET = 0,
Q_TARGET = 1,
BT_TARGET = 2,
QB_TARGET = 3,
OX_TARGET = 4
}
TargetTypeResourceName = {
[TargetType.NO_TARGET] = "none",
[TargetType.Q_TARGET] = "qtarget",
[TargetType.BT_TARGET] = "bt-target",
[TargetType.QB_TARGET] = "qb-target",
[TargetType.OX_TARGET] = "ox_target"
}
function CreateTargetZone(coords, length, width, heading, options)
if not Config.UseTarget then
return
end
Config.ShowHowToPlayUI = 0
local resourceName = TargetTypeResourceName[Config.TargetZoneType]
local targetName = GetUniqueTargetName()
local job = TargetType.BT_TARGET and {"all"} or nil
local sameExports = {
[TargetType.Q_TARGET] = true,
[TargetType.BT_TARGET] = true,
[TargetType.QB_TARGET] = true
}
if Config.TargetZoneType == TargetType.OX_TARGET then
coords = vector3(coords.x, coords.y, coords.z - 0.5)
local zoneId = exports.ox_target:addBoxZone({
name = targetName,
coords = coords,
size = vector3(width, length, 2.0),
rotation = heading,
-- debug = true,
minZ = coords.z - length,
maxZ = coords.z + length,
options = options,
distance = 5.0
})
usedBoxZones[zoneId] = true
elseif sameExports[Config.TargetZoneType] then
local targetoptions = {
options = options,
distance = 5.0,
heading = heading,
job = job
}
exports[resourceName]:AddBoxZone(targetName, coords, length, width, {
name = targetName,
heading = heading,
-- debugPoly = true,
minZ = coords.z - length,
maxZ = coords.z + length
}, targetoptions)
end
end
function CreateTargetModel(model, options)
if not Config.UseTarget then
return
end
if not tonumber(model) then
model = GetHashKey(model)
end
usedTargetModels[model] = true
Config.ShowHowToPlayUI = 0
local resourceName = TargetTypeResourceName[Config.TargetZoneType]
local targetName = GetUniqueTargetName()
local job = TargetType.BT_TARGET and {"all"} or nil
local sameExports = {
[TargetType.Q_TARGET] = true,
[TargetType.BT_TARGET] = true,
[TargetType.QB_TARGET] = true
}
if Config.TargetZoneType == TargetType.OX_TARGET then
exports.ox_target:addModel(model, options)
elseif sameExports[Config.TargetZoneType] then
local targetoptions = {
options = options,
distance = 5.0,
job = job
}
if Config.TargetZoneType == TargetType.BT_TARGET then
model = {model}
end
exports[resourceName]:AddTargetModel(model, targetoptions)
end
end
function CreateTargetEntity(entity, options)
if not Config.UseTarget then
return
end
if usedEntities[entity] then
return
end
usedEntities[entity] = true
local resourceName = TargetTypeResourceName[Config.TargetZoneType]
if Config.TargetZoneType == TargetType.OX_TARGET then
exports[resourceName]:addLocalEntity(entity, options)
elseif Config.TargetZoneType == TargetType.QB_TARGET then
exports[resourceName]:AddTargetEntity(entity, {
distance = 5.0,
options = options
})
elseif Config.TargetZoneType == TargetType.Q_TARGET then
exports[resourceName]:AddTargetEntity(entity, options)
elseif Config.TargetZoneType == TargetType.BT_TARGET then
local entityCoords = GetEntityCoords(entity)
CreateTargetZone(entityCoords, 1.0, 1.0, GetEntityHeading(entity), options)
end
end
function RemoveAllTargetEntities()
local resourceName = TargetTypeResourceName[Config.TargetZoneType]
for entityId, v in pairs(usedEntities) do
if Config.TargetZoneType == TargetType.OX_TARGET then
exports[resourceName]:removeLocalEntity(entityId)
elseif Config.TargetZoneType == TargetType.QB_TARGET then
exports[resourceName]:RemoveTargetEntity(entityId)
elseif Config.TargetZoneType == TargetType.Q_TARGET then
exports[resourceName]:RemoveTargetEntity(entityId)
end
end
usedEntities = {}
end
function RemoveAllTargetZones()
if not Config.UseTarget then
return
end
local resourceName = TargetTypeResourceName[Config.TargetZoneType]
local targetName = GetUniqueTargetName()
local sameExports = {
[TargetType.Q_TARGET] = true,
[TargetType.BT_TARGET] = true,
[TargetType.QB_TARGET] = true
}
if Config.TargetZoneType == TargetType.OX_TARGET then
for k, v in pairs(usedTargetModels) do
exports.ox_target:removeModel(k)
end
for k, v in pairs(usedBoxZones) do
exports.ox_target:removeZone(k)
end
elseif sameExports[Config.TargetZoneType] then
for i = 5, targetId, 1 do
exports[resourceName]:RemoveZone("casinotarget_" .. i)
end
if Config.TargetZoneType ~= TargetType.BT_TARGET then -- bt target doesn't have RemoveTargetModel
for k, v in pairs(usedTargetModels) do
exports[resourceName]:RemoveTargetModel(k)
end
end
end
usedTargetModels = {}
usedBoxZones = {}
RemoveAllTargetEntities()
end
RegisterNetEvent("rcore_casino:Target")
AddEventHandler("rcore_casino:Target", function(data)
if not CAN_INTERACT or LAST_STARTED_GAME_TYPE ~= nil then
return
end
if not data or not data.eventAction then
return
end
if data.eventAction == "wheel_enter" then
LAST_INTERACTION_GAME = "luckywheel"
LuckyWheel_OnInteraction(true)
elseif data.eventAction == "wheel_info" then
LuckyWheel_ShowWelcome()
elseif data.eventAction == "slots_start" then
LAST_INTERACTION_GAME = "slots"
if not data.entity or not DoesEntityExist(data.entity) then
return
end
local model = GetEntityModel(data.entity)
local machineData = machineModels[model]
if not machineData then
return
end
Slots_OnInteraction(data.entity)
elseif data.eventAction == "slots_info" then
if not data.entity or not DoesEntityExist(data.entity) then
return
end
local model = GetEntityModel(data.entity)
Slots_ShowWelcome(model)
elseif data.eventAction == "cashier_enter" then
LAST_INTERACTION_GAME = "cashier"
Cashier_OnInteraction(data.cashierCoords)
elseif data.eventAction == "drinkingbar_ped" then
LAST_INTERACTION_GAME = "drinkingbar"
DrinkingBar_OnInteraction(data.bartenderCoords)
elseif data.eventAction == "drinkingbar_chair" then
LAST_INTERACTION_GAME = "drinkingbar"
Drinkingbar_UseChair(data.chairCoords)
elseif data.eventAction == "bj_enter" then
if not data.entity or not DoesEntityExist(data.entity) then
return
end
local tableCoords = GetEntityCoords(data.entity)
LAST_INTERACTION_GAME = "blackjack"
Blackjack_OnInteraction(tableCoords)
elseif data.eventAction == "bj_info" then
if not data.color or not BlackjackTableDatas[data.color] then
return
end
Blackjack_ShowWelcome(data.color)
elseif data.eventAction == "poker_enter" then
if not data.entity or not DoesEntityExist(data.entity) then
return
end
local tableCoords = GetEntityCoords(data.entity)
LAST_INTERACTION_GAME = "poker"
Poker_OnInteraction(tableCoords)
elseif data.eventAction == "poker_info" then
if not data.color or not PokerTableDatas[data.color] then
return
end
Poker_ShowWelcome(data.color)
elseif data.eventAction == "rl_enter" then
if not data.entity or not DoesEntityExist(data.entity) then
return
end
local tableCoords = GetEntityCoords(data.entity)
LAST_INTERACTION_GAME = "roulette"
Roulette_OnInteraction(tableCoords)
elseif data.eventAction == "rl_info" then
if not data.color or not RouletteTableDatas[data.color] then
return
end
Roulette_ShowWelcome(data.color)
elseif data.eventAction == "it_start" then
if not data.chairId then
return
end
LAST_INTERACTION_GAME = "insidetrack"
InsideTrack_OnInteraction()
elseif data.eventAction == "it_info" then
InsideTrack_ShowWelcome()
elseif data.eventAction == "podium_info" then
Podium_ShowFullscreenInfo()
elseif data.eventAction == "seat_enter" then
LAST_INTERACTION_GAME = "seating"
Seating_OnInteraction(data.chairIndex)
elseif data.eventAction == "elevator_enter" then
StartElevatorScene(data.elevator)
elseif data.eventAction == "cameras_enter" then
LAST_INTERACTION_GAME_TYPE = "cameras"
LAST_INTERACTION_GAME = "cameras"
Office.OnInteraction()
end
end)
File diff suppressed because it is too large Load Diff
@@ -1,185 +0,0 @@
---
--- @author Dylan MALANDAIN, Kalyptus
--- @version 1.0.0
--- created at [24/05/2021 10:02]
---
---CreateMenu
---@param Title string
---@param Subtitle string
---@param X number
---@param Y number
---@param TextureDictionary string
---@param TextureName string
---@param R number
---@param G number
---@param B number
---@param A number
---@return RageUIMenus
---@public
function RageUI.CreateMenu(Title, Subtitle, X, Y, TextureDictionary, TextureName, R, G, B, A)
local Menu = {}
Menu.Display = {};
Menu.ConfirmCaption = Translation.Get("BTN_CONFIRM")
Menu.ConfirmKey = 176
Menu.Display.Header = true
Menu.Display.Subtitle = true
Menu.Display.Background = true
Menu.Display.Navigation = true
Menu.Display.PageCounter = true
Menu.IsPlayerList = false
Menu.MugshotCache = {}
Menu.Title = Title or ""
Menu.TitleFont = 1
Menu.TitleScale = 1.2
Menu.Subtitle = string.upper(Subtitle) or nil
Menu.SubtitleHeight = -37
Menu.Description = nil
Menu.DescriptionHeight = RageUI.Settings.Items.Description.Background.Height
Menu.X = X or 0
Menu.Y = Y or 0
Menu.Parent = nil
Menu.WidthOffset = 0
Menu.Open = false
Menu.Controls = RageUI.Settings.Controls
Menu.Index = 1
Menu.Sprite = {
Dictionary = TextureDictionary or "commonmenu",
Texture = TextureName or "interaction_bgd",
Color = {
R = R,
G = G,
B = B,
A = A
}
}
Menu.Rectangle = nil
Menu.Pagination = {
Minimum = 1,
Maximum = 10,
Total = 10
}
Menu.Safezone = true
Menu.SafeZoneSize = nil
Menu.EnableMouse = false
Menu.Options = 0
Menu.Closable = false
if string.starts(Menu.Subtitle, "~") then
Menu.PageCounterColour = string.lower(string.sub(Menu.Subtitle, 1, 3))
else
Menu.PageCounterColour = ""
end
if Menu.Subtitle ~= "" then
local SubtitleLineCount = Graphics.GetLineCount(Menu.Subtitle, Menu.X + RageUI.Settings.Items.Subtitle.Text.X,
Menu.Y + RageUI.Settings.Items.Subtitle.Text.Y, 0, RageUI.Settings.Items.Subtitle.Text.Scale, 245, 245, 245,
255, nil, false, false, RageUI.Settings.Items.Subtitle.Background.Width + Menu.WidthOffset)
if SubtitleLineCount > 1 then
Menu.SubtitleHeight = 18 * SubtitleLineCount
else
Menu.SubtitleHeight = 0
end
end
return setmetatable(Menu, RageUIMenus)
end
---CreateSubMenu
---@param ParentMenu function
---@param Title string
---@param Subtitle string
---@param X number
---@param Y number
---@param TextureDictionary string
---@param TextureName string
---@param R number
---@param G number
---@param B number
---@param A number
---@return RageUIMenus
---@public
function RageUI.CreateSubMenu(ParentMenu, Title, Subtitle, X, Y, TextureDictionary, TextureName, R, G, B, A)
if ParentMenu ~= nil then
if ParentMenu() then
local Menu = RageUI.CreateMenu(Title or ParentMenu.Title,
string.upper(Subtitle) or string.upper(ParentMenu.Subtitle), X or ParentMenu.X, Y or ParentMenu.Y)
Menu.Parent = ParentMenu
Menu.WidthOffset = ParentMenu.WidthOffset
Menu.Safezone = ParentMenu.Safezone
if ParentMenu.Sprite then
Menu.Sprite = {
Dictionary = TextureDictionary or ParentMenu.Sprite.Dictionary,
Texture = TextureName or ParentMenu.Sprite.Texture,
Color = {
R = R or ParentMenu.Sprite.Color.R,
G = G or ParentMenu.Sprite.Color.G,
B = B or ParentMenu.Sprite.Color.B,
A = A or ParentMenu.Sprite.Color.A
}
}
else
Menu.Rectangle = ParentMenu.Rectangle
end
return setmetatable(Menu, RageUIMenus)
else
return nil
end
else
return nil
end
end
---SetSubtitle
---@param Subtitle string
---@return nil
---@public
function RageUIMenus:SetSubtitle(Subtitle)
self.Subtitle = string.upper(Subtitle) or string.upper(self.Subtitle)
if string.starts(self.Subtitle, "~") then
self.PageCounterColour = string.lower(string.sub(self.Subtitle, 1, 3))
else
self.PageCounterColour = ""
end
if self.Subtitle ~= "" then
local SubtitleLineCount = Graphics.GetLineCount(self.Subtitle, self.X + RageUI.Settings.Items.Subtitle.Text.X,
self.Y + RageUI.Settings.Items.Subtitle.Text.Y, 0, RageUI.Settings.Items.Subtitle.Text.Scale, 245, 245, 245,
255, nil, false, false, RageUI.Settings.Items.Subtitle.Background.Width + self.WidthOffset)
if SubtitleLineCount > 1 then
self.SubtitleHeight = 18 * SubtitleLineCount
else
self.SubtitleHeight = 0
end
else
self.SubtitleHeight = -37
end
end
---IsVisible
---@param Item fun(Item:Items)
---@param Panel fun(Panel:Panels)
function RageUIMenus:IsVisible(Item, Panel)
if (RageUI.Visible(self)) and (UpdateOnscreenKeyboard() ~= 0) and (UpdateOnscreenKeyboard() ~= 3) then
RageUI.Banner()
RageUI.Subtitle()
Item(Items);
RageUI.Background();
RageUI.Navigation();
RageUI.Description();
Panel(Panels);
RageUI.PoolMenus.Timer = 1
RageUI.Render()
end
end
function RageUIMenus:KeysRegister(Controls, ControlName, Description, Action)
RegisterKeyMapping(string.format('riv-%s', ControlName), Description, "keyboard", Controls)
RegisterCommand(string.format('riv-%s', ControlName), function(source, args)
if (Action ~= nil) then
Action();
end
end, false)
end
@@ -1,380 +0,0 @@
---
--- @author Dylan MALANDAIN, Kalyptus
--- @version 1.0.0
--- created at [24/05/2021 10:02]
---
RageUI.LastControl = false
local ControlActions = {'Left', 'Right', 'Select', 'Click'}
---GoUp
---@param Options number
---@return nil
---@public
function RageUI.GoUp(Options)
local CurrentMenu = RageUI.CurrentMenu;
if CurrentMenu ~= nil then
Options = CurrentMenu.Options
if CurrentMenu() then
if (Options ~= 0) then
if Options > CurrentMenu.Pagination.Total then
if CurrentMenu.Index <= CurrentMenu.Pagination.Minimum then
if CurrentMenu.Index == 1 then
CurrentMenu.Pagination.Minimum = Options - (CurrentMenu.Pagination.Total - 1)
CurrentMenu.Pagination.Maximum = Options
CurrentMenu.Index = Options
else
CurrentMenu.Pagination.Minimum = (CurrentMenu.Pagination.Minimum - 1)
CurrentMenu.Pagination.Maximum = (CurrentMenu.Pagination.Maximum - 1)
CurrentMenu.Index = CurrentMenu.Index - 1
end
else
CurrentMenu.Index = CurrentMenu.Index - 1
end
else
if CurrentMenu.Index == 1 then
CurrentMenu.Pagination.Minimum = Options - (CurrentMenu.Pagination.Total - 1)
CurrentMenu.Pagination.Maximum = Options
CurrentMenu.Index = Options
else
CurrentMenu.Index = CurrentMenu.Index - 1
end
end
if CurrentMenu.Options > 1 then
Audio.PlaySound(RageUI.Settings.Audio.UpDown.audioName, RageUI.Settings.Audio.UpDown.audioRef)
end
RageUI.LastControl = true
if (CurrentMenu.onIndexChange ~= nil) then
CurrentMenu.onIndexChange(CurrentMenu.Index)
end
else
Audio.PlaySound(RageUI.Settings.Audio.Error.audioName, RageUI.Settings.Audio.Error.audioRef)
end
end
end
end
---GoDown
---@param Options number
---@return nil
---@public
function RageUI.GoDown(Options)
local CurrentMenu = RageUI.CurrentMenu;
if CurrentMenu ~= nil then
Options = CurrentMenu.Options
if CurrentMenu() then
if (Options ~= 0) then
if Options > CurrentMenu.Pagination.Total then
if CurrentMenu.Index >= CurrentMenu.Pagination.Maximum then
if CurrentMenu.Index == Options then
CurrentMenu.Pagination.Minimum = 1
CurrentMenu.Pagination.Maximum = CurrentMenu.Pagination.Total
CurrentMenu.Index = 1
else
CurrentMenu.Pagination.Maximum = (CurrentMenu.Pagination.Maximum + 1)
CurrentMenu.Pagination.Minimum =
CurrentMenu.Pagination.Maximum - (CurrentMenu.Pagination.Total - 1)
CurrentMenu.Index = CurrentMenu.Index + 1
end
else
CurrentMenu.Index = CurrentMenu.Index + 1
end
else
if CurrentMenu.Index == Options then
CurrentMenu.Pagination.Minimum = 1
CurrentMenu.Pagination.Maximum = CurrentMenu.Pagination.Total
CurrentMenu.Index = 1
else
CurrentMenu.Index = CurrentMenu.Index + 1
end
end
if CurrentMenu.Options > 1 then
Audio.PlaySound(RageUI.Settings.Audio.UpDown.audioName, RageUI.Settings.Audio.UpDown.audioRef)
end
RageUI.LastControl = false
if (CurrentMenu.onIndexChange ~= nil) then
CurrentMenu.onIndexChange(CurrentMenu.Index)
end
else
Audio.PlaySound(RageUI.Settings.Audio.Error.audioName, RageUI.Settings.Audio.Error.audioRef)
end
end
end
end
function RageUI.GoActionControl(Controls, Action)
if Controls[Action or 'Left'].Enabled then
for Index = 1, #Controls[Action or 'Left'].Keys do
if not Controls[Action or 'Left'].Pressed then
if IsDisabledControlJustPressed(Controls[Action or 'Left'].Keys[Index][1],
Controls[Action or 'Left'].Keys[Index][2]) then
Controls[Action or 'Left'].Pressed = true
Citizen.CreateThread(function()
Controls[Action or 'Left'].Active = true
Citizen.Wait(0.01)
Controls[Action or 'Left'].Active = false
Citizen.Wait(175)
while Controls[Action or 'Left'].Enabled and
IsDisabledControlPressed(Controls[Action or 'Left'].Keys[Index][1],
Controls[Action or 'Left'].Keys[Index][2]) do
Controls[Action or 'Left'].Active = true
Citizen.Wait(1)
Controls[Action or 'Left'].Active = false
Citizen.Wait(124)
end
Controls[Action or 'Left'].Pressed = false
if (Action ~= ControlActions[5]) then
Citizen.Wait(10)
end
end)
break
end
end
end
end
end
function RageUI.GoActionControlSlider(Controls, Action)
if Controls[Action].Enabled then
for Index = 1, #Controls[Action].Keys do
if not Controls[Action].Pressed then
if IsDisabledControlJustPressed(Controls[Action].Keys[Index][1], Controls[Action].Keys[Index][2]) then
Controls[Action].Pressed = true
Citizen.CreateThread(function()
Controls[Action].Active = true
Citizen.Wait(1)
Controls[Action].Active = false
while Controls[Action].Enabled and
IsDisabledControlPressed(Controls[Action].Keys[Index][1], Controls[Action].Keys[Index][2]) do
Controls[Action].Active = true
Citizen.Wait(1)
Controls[Action].Active = false
end
Controls[Action].Pressed = false
end)
break
end
end
end
end
end
---Controls
---@return nil
---@public
function RageUI.Controls()
local CurrentMenu = RageUI.CurrentMenu;
if CurrentMenu ~= nil then
if CurrentMenu() then
if CurrentMenu.Open then
local Controls = CurrentMenu.Controls;
local Options = CurrentMenu.Options
RageUI.Options = CurrentMenu.Options
if CurrentMenu.EnableMouse then
DisableAllControlActions(2)
end
if not IsInputDisabled(2) then
for Index = 1, #Controls.Enabled.Controller do
EnableControlAction(Controls.Enabled.Controller[Index][1],
Controls.Enabled.Controller[Index][2], true)
end
else
for Index = 1, #Controls.Enabled.Keyboard do
EnableControlAction(Controls.Enabled.Keyboard[Index][1], Controls.Enabled.Keyboard[Index][2],
true)
end
end
if Controls.Up.Enabled then
for Index = 1, #Controls.Up.Keys do
if not Controls.Up.Pressed then
if IsDisabledControlJustPressed(Controls.Up.Keys[Index][1], Controls.Up.Keys[Index][2]) then
Controls.Up.Pressed = true
Citizen.CreateThread(function()
RageUI.GoUp(Options)
Citizen.Wait(175)
while Controls.Up.Enabled and
IsDisabledControlPressed(Controls.Up.Keys[Index][1], Controls.Up.Keys[Index][2]) do
RageUI.GoUp(Options)
Citizen.Wait(50)
end
Controls.Up.Pressed = false
end)
break
end
end
end
end
if Controls.Down.Enabled then
for Index = 1, #Controls.Down.Keys do
if not Controls.Down.Pressed then
if IsDisabledControlJustPressed(Controls.Down.Keys[Index][1], Controls.Down.Keys[Index][2]) then
Controls.Down.Pressed = true
Citizen.CreateThread(function()
RageUI.GoDown(Options)
Citizen.Wait(175)
while Controls.Down.Enabled and
IsDisabledControlPressed(Controls.Down.Keys[Index][1],
Controls.Down.Keys[Index][2]) do
RageUI.GoDown(Options)
Citizen.Wait(50)
end
Controls.Down.Pressed = false
end)
break
end
end
end
end
for i = 1, #ControlActions do
RageUI.GoActionControl(Controls, ControlActions[i])
end
RageUI.GoActionControlSlider(Controls, 'SliderLeft')
RageUI.GoActionControlSlider(Controls, 'SliderRight')
if Controls.Back.Enabled then
for Index = 1, #Controls.Back.Keys do
if not Controls.Back.Pressed then
if IsDisabledControlJustPressed(Controls.Back.Keys[Index][1], Controls.Back.Keys[Index][2]) then
Controls.Back.Pressed = true
Citizen.CreateThread(function()
Citizen.Wait(175)
Controls.Down.Pressed = false
end)
break
end
end
end
end
end
end
end
end
---Navigation
---@return nil
---@public
function RageUI.Navigation()
local CurrentMenu = RageUI.CurrentMenu;
if CurrentMenu ~= nil then
if CurrentMenu() and (CurrentMenu.Display.Navigation) then
if CurrentMenu.EnableMouse then
SetMouseCursorActiveThisFrame()
end
if RageUI.Options > CurrentMenu.Pagination.Total then
local UpHovered = false
local DownHovered = false
if not CurrentMenu.SafeZoneSize then
CurrentMenu.SafeZoneSize = {
X = 0,
Y = 0
}
if CurrentMenu.Safezone then
CurrentMenu.SafeZoneSize = RageUI.GetSafeZoneBounds()
SetScriptGfxAlign(76, 84)
SetScriptGfxAlignParams(0, 0, 0, 0)
end
end
if CurrentMenu.EnableMouse then
UpHovered = Graphics.IsMouseInBounds(CurrentMenu.X + CurrentMenu.SafeZoneSize.X, CurrentMenu.Y +
CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, RageUI.Settings
.Items.Navigation.Rectangle.Width + CurrentMenu.WidthOffset,
RageUI.Settings.Items.Navigation.Rectangle.Height)
DownHovered = Graphics.IsMouseInBounds(CurrentMenu.X + CurrentMenu.SafeZoneSize.X,
CurrentMenu.Y + RageUI.Settings.Items.Navigation.Rectangle.Height + CurrentMenu.SafeZoneSize.Y +
CurrentMenu.SubtitleHeight + RageUI.ItemOffset, RageUI.Settings.Items.Navigation.Rectangle
.Width + CurrentMenu.WidthOffset, RageUI.Settings.Items.Navigation.Rectangle.Height)
if CurrentMenu.Controls.Click.Active then
if UpHovered then
RageUI.GoUp(RageUI.Options)
elseif DownHovered then
RageUI.GoDown(RageUI.Options)
end
end
if UpHovered then
Graphics.Rectangle(CurrentMenu.X,
CurrentMenu.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, RageUI.Settings.Items
.Navigation.Rectangle.Width + CurrentMenu.WidthOffset,
RageUI.Settings.Items.Navigation.Rectangle.Height, 30, 30, 30, 255)
else
Graphics.Rectangle(CurrentMenu.X,
CurrentMenu.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, RageUI.Settings.Items
.Navigation.Rectangle.Width + CurrentMenu.WidthOffset,
RageUI.Settings.Items.Navigation.Rectangle.Height, 0, 0, 0, 200)
end
if DownHovered then
Graphics.Rectangle(CurrentMenu.X, CurrentMenu.Y +
RageUI.Settings.Items.Navigation.Rectangle.Height + CurrentMenu.SubtitleHeight +
RageUI.ItemOffset,
RageUI.Settings.Items.Navigation.Rectangle.Width + CurrentMenu.WidthOffset,
RageUI.Settings.Items.Navigation.Rectangle.Height, 30, 30, 30, 255)
else
Graphics.Rectangle(CurrentMenu.X, CurrentMenu.Y +
RageUI.Settings.Items.Navigation.Rectangle.Height + CurrentMenu.SubtitleHeight +
RageUI.ItemOffset,
RageUI.Settings.Items.Navigation.Rectangle.Width + CurrentMenu.WidthOffset,
RageUI.Settings.Items.Navigation.Rectangle.Height, 0, 0, 0, 200)
end
else
Graphics.Rectangle(CurrentMenu.X, CurrentMenu.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset,
RageUI.Settings.Items.Navigation.Rectangle.Width + CurrentMenu.WidthOffset,
RageUI.Settings.Items.Navigation.Rectangle.Height, 0, 0, 0, 200)
Graphics.Rectangle(CurrentMenu.X,
CurrentMenu.Y + RageUI.Settings.Items.Navigation.Rectangle.Height + CurrentMenu.SubtitleHeight +
RageUI.ItemOffset,
RageUI.Settings.Items.Navigation.Rectangle.Width + CurrentMenu.WidthOffset,
RageUI.Settings.Items.Navigation.Rectangle.Height, 0, 0, 0, 200)
end
Graphics.Sprite(RageUI.Settings.Items.Navigation.Arrows.Dictionary,
RageUI.Settings.Items.Navigation.Arrows.Texture, CurrentMenu.X +
RageUI.Settings.Items.Navigation.Arrows.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y +
RageUI.Settings.Items.Navigation.Arrows.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset,
RageUI.Settings.Items.Navigation.Arrows.Width, RageUI.Settings.Items.Navigation.Arrows.Height)
RageUI.ItemOffset = RageUI.ItemOffset + (RageUI.Settings.Items.Navigation.Rectangle.Height * 2)
end
end
end
end
---GoBack
---@return nil
---@public
function RageUI.GoBack()
local CurrentMenu = RageUI.CurrentMenu
if CurrentMenu ~= nil then
Audio.PlaySound(RageUI.Settings.Audio.Back.audioName, RageUI.Settings.Audio.Back.audioRef)
if CurrentMenu.Parent ~= nil then
if CurrentMenu.Parent() then
RageUI.NextMenu = CurrentMenu.Parent
else
RageUI.NextMenu = nil
RageUI.Visible(CurrentMenu, false)
end
else
RageUI.NextMenu = nil
RageUI.Visible(CurrentMenu, false)
end
end
end
@@ -1,479 +0,0 @@
-- cashier UI selection
local menu_TradeInListIndex = 1
local menu_AcquireListIndex = 1
local menu_confirmedIndex = -1
local moneyOptions = {0}
local chipsOptions = {0}
local dailyBonusUsed = false
local dailyDesc = nil
local vipItemDescription = nil
local vipItemEnabled = false
local confirmMessage = nil
local moneyPercentage = 100
local withdrawBadge = RageUI.BadgeStyle.None
local withdrawDesc = Translation.Get("CASHIER_TRADEIN_DESC")
local canPurchaseVIP = true
local extraTransferInfo = nil
local maxSocietyMoney = 0
local function RefreshCashierVIPItem()
vipItemEnabled = true
if PLAYER_IS_VIP then
vipItemDescription = string.format(Translation.Get("CASHIER_VIP_PURCHASE_COMPLETE"),
CommaValue(Config.CASHIER_VIP_PRICE), Config.PRICES_CURRENCY)
if Config.CASHIER_VIP_DURATION then
vipItemDescription = vipItemDescription ..
string.format(" " .. Translation.Get("CASHIER_VIP_VALID_FOR"),
FormatTimestamp(PLAYER_CACHE.vipUntil - SERVER_TIMER))
end
vipItemEnabled = false
else
if PLAYER_MONEY < Config.CASHIER_VIP_PRICE then
vipItemDescription = Translation.Get("CASHIER_VIP_NO_MONEY")
vipItemEnabled = true
else
vipItemDescription = string.format(Translation.Get("CASHIER_VIP_MEMBERSHIP_DESC"),
CommaValue(Config.CASHIER_VIP_PRICE), Config.PRICES_CURRENCY)
end
end
if not canPurchaseVIP then
vipItemEnabled = false
vipItemDescription = Translation.Get("CASHIER_VIP_PASS_ERROR")
end
end
function ResetCashierUISelection(moneyLimit, societyMoney)
moneyPercentage = moneyLimit
if societyMoney then
maxSocietyMoney = societyMoney
end
menu_TradeInListIndex = 1
menu_AcquireListIndex = 1
menu_confirmedIndex = -1
moneyOptions = CashierGetMoneyBalanceOptions(PLAYER_MONEY)
chipsOptions = CashierGetBalanceOptions(PLAYER_CHIPS, maxSocietyMoney / Config.ExchangeRate)
withdrawBadge = moneyPercentage == 100 and RageUI.BadgeStyle.None or RageUI.BadgeStyle.Alert
withdrawDesc = Translation.Get("CASHIER_TRADEIN_DESC")
if moneyPercentage == 0 then
withdrawDesc = Translation.Get("SOCIETY_CASHIER_MONEY_LIMIT_3")
elseif moneyPercentage < 100 then
withdrawDesc = withdrawDesc .. " " ..
string.format(Translation.Get("SOCIETY_CASHIER_MONEY_LIMIT"), moneyPercentage)
end
dailyBonusUsed = PLAYER_CACHE.lastDailyBonus and PLAYER_CACHE.lastDailyBonus == SERVER_DATE
dailyDesc = dailyBonusUsed and Translation.Get("CASHIER_DAILY_BONUS_USED") or
string.format(Translation.Get("CASHIER_DAILY_BONUS_DESC"), Config.CASHIER_DAILY_BONUS)
end
-- show cashier ui
function Cashier_ShowMenu(moneyLimit, vipAllowed, maxMoney, extraData)
canPurchaseVIP = vipAllowed
maxSocietyMoney = maxMoney
ResetCashierUISelection(moneyLimit, maxSocietyMoney)
InfoPanel_UpdateNotification(nil)
local cashierMenu = RageUI.CreateMenu("", Translation.Get("CASHIER_CAPT"), 25, 25, "shopui_title_casino_banner",
"shopui_title_casino_banner")
local exchangeRateDesc = nil
if Config.ExchangeRate ~= 1 then
exchangeRateDesc = string.format(Translation.Get("CASHIER_EXCHANGE_RATE_DESC"),
FormatPrice(math.ceil(10 * Config.ExchangeRate)))
end
function RageUI.PoolMenus:CashierUI()
cashierMenu:IsVisible(function(i)
RefreshCashierVIPItem()
if not Config.UseOnlyMoney then
i:AddList(Translation.Get("CASHIER_ACQUIRE_CAPT"), moneyOptions, menu_AcquireListIndex,
(menu_AcquireListIndex == menu_confirmedIndex and confirmMessage or
Translation.Get("CASHIER_ACQUIRE_DESC")), {
IsDisabled = moneyOptions[menu_AcquireListIndex] == 0 or not CAN_INTERACT
}, function(Index, onSelected, onListChange)
if (onListChange) then
menu_AcquireListIndex = Index;
menu_confirmedIndex = -1
end
if onSelected then
if not CAN_INTERACT then
return
end
if moneyOptions[Index] == nil then
return
end
if menu_confirmedIndex ~= Index then
menu_confirmedIndex = Index
local amount = CommaValue(moneyOptions[Index])
local realChipsValue = math.ceil(moneyOptions[Index] * Config.ExchangeRate)
confirmMessage = string.format(Translation.Get("CASHIER_YOU_SURE_ACQUIRE"), amount,
FormatPrice(realChipsValue))
if Config.ExchangeRate ~= 1 then
confirmMessage = string.format(Translation.Get("CASHIER_TRANSFER_INFO"),
CommaValue(amount), FormatPrice(realChipsValue)) .. confirmMessage
end
return
end
Cashier_AcquireChips(moneyOptions[Index])
end
end)
i:AddList(Translation.Get("CASHIER_TRADEIN_CAPT"), chipsOptions, menu_TradeInListIndex,
(menu_TradeInListIndex == menu_confirmedIndex and confirmMessage or withdrawDesc), {
IsDisabled = chipsOptions[menu_TradeInListIndex] == 0 or moneyPercentage <= 0 or
not CAN_INTERACT,
LeftBadge = withdrawBadge
}, function(Index, onSelected, onListChange)
if (onListChange) then
menu_TradeInListIndex = Index;
menu_confirmedIndex = -1
end
if onSelected then
if not CAN_INTERACT then
return
end
if chipsOptions[Index] == nil then
return
end
if menu_confirmedIndex ~= Index then
menu_confirmedIndex = Index
local amount = CommaValue(chipsOptions[Index])
local realChipsValue = math.ceil(chipsOptions[Index] * Config.ExchangeRate)
confirmMessage = string.format(Translation.Get("CASHIER_YOU_SURE_TRADE_IN"), amount)
if Config.ExchangeRate ~= 1 then
confirmMessage = string.format(Translation.Get("CASHIER_TRANSFER_INFO"),
CommaValue(amount), FormatPrice(realChipsValue)) .. confirmMessage
end
if moneyPercentage < 100 then
local reducedMoney = math.ceil((realChipsValue / 100) * moneyPercentage)
confirmMessage = confirmMessage .. " " ..
string.format(Translation.Get("SOCIETY_CASHIER_MONEY_LIMIT_2"),
CommaValue(reducedMoney), Config.PRICES_CURRENCY, amount, moneyPercentage)
end
return
end
Cashier_TradeInChips(chipsOptions[Index])
end
end)
end
if Config.CASHIER_DAILY_BONUS ~= 0 then
i:AddButton(Translation.Get("CASHIER_DAILY_BONUS_CAPT"), dailyDesc, {
IsDisabled = dailyBonusUsed,
RightLabelColor = RageUI.ItemsColour.White
}, nil, function()
Cashier_DailyBonus()
end)
end
i:AddButton(Translation.Get("CASHIER_VIP_MEMBERSHIP_CAPT"), vipItemDescription, {
IsDisabled = vipItemEnabled == false,
RightLabelColor = RageUI.ItemsColour.White,
RightBadge = RageUI.BadgeStyle.CasinoVIP
}, nil, function()
Cashier_RequestVIP()
end)
local canOrderDelivery = extraData.MoneyLoad and Config.JobsEnabled and
Config.Jobs.MONEYLOAD_STARTFROMCASHIERUI and
IsAtJob(Config.JobName, nil, Config.Jobs.MONEYLOAD_STARTJOBGRADE,
Config.Jobs.MONEYLOAD_STARTJOBGRADE)
if MONEYLOAD_TAKE or canOrderDelivery then
i:AddSeparator("Mission Options")
end
if MONEYLOAD_TAKE then
i:AddButton(Translation.Get("MONEYLOAD_CASHIER_CAPTION"),
string.format(Translation.Get("MONEYLOAD_CASHIER_DESC"), FormatPrice(MONEYLOAD_TAKE)), {
IsDisabled = dailyBonusUsed,
RightLabelColor = RageUI.ItemsColour.White,
RightBadge = RageUI.BadgeStyle.Package
}, nil, function()
MONEYLOAD_TAKE = nil
TriggerServerEvent("rcore_casino:CasinoMission:MoneyLoad:DeliverMoney")
Cashier_OnQuit()
RemoveMissionBlip("cashier")
-- give take animation
Citizen.CreateThread(function()
RequestAnimDictAndWait("mp_common")
if HasAnimDictLoaded("mp_common") then
TaskPlayAnim(PlayerPedId(), "mp_common", "givetake2_b", 3.0, 3.0, -1, 0, 0, true, true,
true)
for k, v in pairs(CashierDatas) do
if v.enabled and v.ped then
PlayPedAmbientSpeechWithVoiceNative(v.ped, "WELCOME_BACK_WINNER",
"u_f_m_casinocash_01", "SPEECH_PARAMS_FORCE_NORMAL", 0)
TaskPlayAnim(v.ped, "mp_common", "givetake2_a", 3.0, 3.0, -1, 0, 0, true, true,
true)
break
end
end
end
end)
end)
else
if canOrderDelivery then
local oderAllowed = true
local orderDesc = string.format(Translation.Get("MONEYLOAD_CASHIER_ORDER_DELIVERY_DESC"),
FormatPrice(Config.Jobs.MONEYLOAD_TAKE))
if #extraData.MoneyLoad.jobMembers > 0 then
orderDesc = orderDesc .. " " ..
string.format(Translation.Get("MONEYLOAD_CASHIER_MEMBERLIST"),
extraData.MoneyLoad.memberNames)
else
oderAllowed = false
orderDesc = Translation.Get("MONEYLOAD_CASHIER_MEMBERLIST_EMPTY")
end
if extraData.MoneyLoad.missionActive then
oderAllowed = false
orderDesc = Translation.Get("MONEYLOAD_CASHIER_ORDER_DELIVERY_ALREADYACTIVE")
end
i:AddButton(Translation.Get("MONEYLOAD_CASHIER_ORDER_DELIVERY"), orderDesc, {
IsDisabled = not oderAllowed,
RightLabelColor = RageUI.ItemsColour.White,
RightBadge = RageUI.BadgeStyle.Package
}, nil, function()
Cashier_OnQuit()
TriggerServerEvent("rcore_casino:CasinoMission:MoneyLoad:Order")
end)
end
end
if exchangeRateDesc then
i:AddSeparator(exchangeRateDesc, RageUI.ItemsColour.Yellow)
end
if Config.EnableSociety and Config.CASHIER_SHOW_SOCIETY_BALANCE then
i:AddSeparator(string.format(Translation.Get("AVAIABLE_SOCIETY_BALANCE"), FormatPrice(maxMoney)),
RageUI.ItemsColour.Yellow)
end
end, function(Panels)
end)
end
RageUI.Visible(cashierMenu, true)
end
-- opens up sitting menu (choose from snacks to eat/drink while sitting at the bar)
function DrinkingBar_ShowSittingMenu()
InfoPanel_UpdateNotification(nil)
local sittingMenu = RageUI.CreateMenu("", Translation.Get("BAR_SNACKS_CAPT"), 25, 25, "shopui_title_casino_banner",
"shopui_title_casino_banner")
function RageUI.PoolMenus:DrinksUI()
sittingMenu:IsVisible(function(i)
for x = 1, #CasinoInventoryItems do
local v = CasinoInventoryItems[x]
if v.itemType == 1 then
local key = v.key
if PLAYER_ITEMS[key] and PLAYER_ITEMS[key] > 0 then
i:AddButton(v.title, Translation.Get("BAR_SNACKS_DESC"), {
IsDisabled = false,
RightLabel = PLAYER_ITEMS[key],
RightLabelColor = RageUI.ItemsColour.White
}, nil, function()
SittingMenu_SnackSelected(key)
end)
end
end
end
end, function(Panels)
end)
end
RageUI.Visible(sittingMenu, true)
end
function DrinkingBar_ShowMenu()
-- CAN_MOVE = false
InfoPanel_UpdateNotification(nil)
local drinksMenu = RageUI.CreateMenu("", Translation.Get("BAR_MENU_TITLE"), 25, 25, "shopui_title_casino_banner",
"shopui_title_casino_banner")
function RageUI.PoolMenus:DrinksUI()
drinksMenu:IsVisible(function(i)
if Config.BarShowSnacks then
i:AddSeparator(Translation.Get("BAR_SNACKS_SEPARATOR_DRINKS"))
end
for x = 1, #CasinoInventoryItems do
local v = CasinoInventoryItems[x]
local k = v.key
if v.itemType == 2 then
local price = FormatPrice(v.price)
local forFree = v.luckyWheelAffected and PLAYER_CACHE.freeDrinksUntil and SERVER_TIMER <
PLAYER_CACHE.freeDrinksUntil
if forFree then
price = Translation.Get("BAR_SNACKS_PRICE_FREE")
end
local itemDescription = PLAYER_MONEY >= v.price and Translation.Get("BAR_MENU_DESC") or
string.format(Translation.Get("BAR_MENU_NO_MONEY"), price)
local itemDisabled = (forFree == false and PLAYER_MONEY < v.price)
if v.vip and not PLAYER_IS_VIP then
itemDisabled = true
itemDescription = Translation.Get("BUYING_ITEMS_VIP_RESTRICTION")
end
i:AddButton(v.title, itemDescription, {
IsDisabled = itemDisabled,
RightLabel = price,
RightLabelColor = RageUI.ItemsColour.GreenLight
}, nil, function()
DrinksMenu_DrinkSelected(k)
end)
end
end
if Config.BarShowSnacks then
i:AddSeparator(Translation.Get("BAR_SNACKS_SEPARATOR_SNACKS"))
for x = 1, #CasinoInventoryItems do
local v = CasinoInventoryItems[x]
local k = v.key
if v.itemType == 1 and x ~= 10 then
local price = FormatPrice(v.price)
i:AddButton(v.title, PLAYER_MONEY >= v.price and Translation.Get("BAR_MENU_DESC2") or
string.format(Translation.Get("BAR_MENU_NO_MONEY"), price), {
IsDisabled = PLAYER_MONEY < v.price,
RightLabel = FormatPrice(v.price),
RightLabelColor = RageUI.ItemsColour.OrangeLight
}, nil, function()
DrinksMenu_DrinkSelected(k)
end)
end
end
end
end, function(Panels)
end)
end
RageUI.Visible(drinksMenu, true)
end
function GameStates_ChipManagement(playerList)
InfoPanel_UpdateNotification(nil)
CloseAllMenus()
local playersMenu = RageUI.CreateMenu("", Translation.Get("ADMIN_MENU_CHIP_MNG"), 25, 25,
"shopui_title_casino_banner", "shopui_title_casino_banner")
function RageUI.PoolMenus:ChipMngUI()
playersMenu:IsVisible(function(i)
for k, v in pairs(playerList) do
i:AddButton(v.name, nil, {
IsDisabled = false,
RightLabel = v.chips,
RightLabelColor = RageUI.ItemsColour.White
}, nil, function()
ShowTextInputBox(Translation.Get("ADMIN_MENU_CHIPS_NEWBALANCE"), v.chips, function(newBalance)
newBalance = tonumber(newBalance)
if newBalance then
v.chips = newBalance
GameStates_ChipManagement(playerList)
TriggerServerEvent("rcore_casino:AdminEditPlayerChips", v.playerId, newBalance)
end
end)
end)
end
i:AddSeparator(" ")
i:AddButton(Translation.Get("BTN_CLOSE"), nil, {
IsDisabled = false,
RightLabelColor = RageUI.ItemsColour.White,
RightBadge = RageUI.BadgeStyle.Alert
}, nil, function()
CloseAllMenus()
end)
end, function(Panels)
end)
end
RageUI.Visible(playersMenu, true)
end
function GameStates_ShowMenu()
InfoPanel_UpdateNotification(nil)
CloseAllMenus()
local statesMenu = RageUI.CreateMenu("", Translation.Get("GAME_STATE_MENU_TITLE"), 25, 25,
"shopui_title_casino_banner", "shopui_title_casino_banner")
function RageUI.PoolMenus:CashierUI()
statesMenu:IsVisible(function(i)
i:AddSeparator(Translation.Get("ADMIN_MENU_CHIP_MNG"))
i:AddButton(Translation.Get("ADMIN_MENU_CHIP_MNG"), nil, {
IsDisabled = false,
RightLabelColor = RageUI.ItemsColour.White
}, nil, function()
TriggerServerEvent("rcore_casino:AdminChipManagement")
end)
i:AddSeparator(Translation.Get("ADMIN_MENU_GAMESTATES"))
for n = 1, #GameStates do
local v = GameStates[n]
i:AddButton(v.title, nil, {
IsDisabled = false,
RightLabelColor = RageUI.ItemsColour.White,
RightBadge = v.enabled and RageUI.BadgeStyle.Tick or RageUI.BadgeStyle.Lock
}, nil, function()
if v.enabled then
v.enabled = false
else
v.enabled = true
end
TriggerServerEvent("rcore_casino:AdminUpdateStates", GameStates)
end)
end
i:AddSeparator(" ")
i:AddButton(Translation.Get("BTN_CLOSE"), nil, {
IsDisabled = false,
RightLabelColor = RageUI.ItemsColour.White,
RightBadge = RageUI.BadgeStyle.Alert
}, nil, function()
CloseAllMenus()
end)
end, function(Panels)
end)
end
RageUI.Visible(statesMenu, true)
end
-- standalone: manage casino workers menu
function Workers_ShowMenu(workers)
InfoPanel_UpdateNotification(nil)
CloseAllMenus()
local gradeOptions = {"Unemployed", "Grade 0", "Grade 1", "Grade 2 (Boss)"}
local workersMenu = RageUI.CreateMenu("", "Casino Workers", 25, 25, "shopui_title_casino_banner",
"shopui_title_casino_banner")
function RageUI.PoolMenus:CashierUI()
workersMenu:IsVisible(function(i)
for k, v in pairs(workers) do
i:AddList(v.name, gradeOptions, v.actual, nil, {
IsDisabled = false
}, function(Index, onSelected, onListChange)
if (onListChange) then
v.actual = Index
local newGrade = v.actual - 2
TriggerServerEvent("rcore_casino:AdminEditWorkerGrade", v.playerId, newGrade)
end
if onSelected then
CloseAllMenus()
end
end)
end
end, function(Panels)
end)
end
RageUI.Visible(workersMenu, true)
end
function CloseAllMenus()
RageUI.CloseAll()
end
function OnMenusClosed()
-- print("Menus were closed.")
end
@@ -1,661 +0,0 @@
---
--- @author Dylan MALANDAIN, Kalyptus
--- @version 1.0.0
--- created at [24/05/2021 10:02]
---
RageUI = {};
---@class RageUIMenus
RageUIMenus = setmetatable({}, RageUIMenus)
---@return boolean
RageUIMenus.__call = function()
return true
end
RageUIMenus.__index = RageUIMenus
RageUI.CurrentMenu = nil
RageUI.NextMenu = nil
RageUI.Options = 0
RageUI.ItemOffset = 0
RageUI.StatisticPanelCount = 0
RageUI.PoolMenus = RageUI.PoolMenus or {
Timer = 0,
Name = nil
};
---@class Settings
RageUI.Settings = {
Debug = false,
Controls = {
Up = {
Enabled = true,
Active = false,
Pressed = false,
Keys = {{0, 172}, {1, 172}, {2, 172}, {0, 241}, {1, 241}, {2, 241}}
},
Down = {
Enabled = true,
Active = false,
Pressed = false,
Keys = {{0, 173}, {1, 173}, {2, 173}, {0, 242}, {1, 242}, {2, 242}}
},
Left = {
Enabled = true,
Active = false,
Pressed = false,
Keys = {{0, 174}, {1, 174}, {2, 174}}
},
Right = {
Enabled = true,
Pressed = false,
Active = false,
Keys = {{0, 175}, {1, 175}, {2, 175}}
},
SliderLeft = {
Enabled = true,
Active = false,
Pressed = false,
Keys = {{0, 174}, {1, 174}, {2, 174}}
},
SliderRight = {
Enabled = true,
Pressed = false,
Active = false,
Keys = {{0, 175}, {1, 175}, {2, 175}}
},
Select = {
Enabled = true,
Pressed = false,
Active = false,
Keys = {{0, 201}, {1, 201}, {2, 201}}
},
Back = {
Enabled = true,
Active = false,
Pressed = false,
Keys = {{0, 177}, {1, 177}, {2, 177}, {0, 199}, {1, 199}, {2, 199}}
},
Click = {
Enabled = true,
Active = false,
Pressed = false,
Keys = {{0, 24}}
},
Enabled = {
Controller = {{0, 2}, -- Look Up and Down
{0, 1}, -- Look Left and Right
{0, 25}, -- Aim
{0, 24} -- Attack
},
Keyboard = {{0, 201}, -- Select
{0, 195}, -- X axis
{0, 196}, -- Y axis
{0, 187}, -- Down
{0, 188}, -- Up
{0, 189}, -- Left
{0, 190}, -- Right
{0, 202}, -- Back
{0, 217}, -- Select
{0, 242}, -- Scroll down
{0, 241}, -- Scroll up
{0, 239}, -- Cursor X
{0, 240}, -- Cursor Y
{0, 31}, -- Move Up and Down
{0, 30}, -- Move Left and Right
{0, 21}, -- Sprint
{0, 22}, -- Jump
{0, 23}, -- Enter
{0, 75}, -- Exit Vehicle
{0, 71}, -- Accelerate Vehicle
{0, 72}, -- Vehicle Brake
{0, 59}, -- Move Vehicle Left and Right
{0, 89}, -- Fly Yaw Left
{0, 9}, -- Fly Left and Right
{0, 8}, -- Fly Up and Down
{0, 90}, -- Fly Yaw Right
{0, 76} -- Vehicle Handbrake
}
}
},
Audio = {
Id = nil,
UpDown = {
audioName = "HUD_FRONTEND_DEFAULT_SOUNDSET",
audioRef = "NAV_UP_DOWN"
},
LeftRight = {
audioName = "HUD_FRONTEND_DEFAULT_SOUNDSET",
audioRef = "NAV_LEFT_RIGHT"
},
Select = {
audioName = "HUD_FRONTEND_DEFAULT_SOUNDSET",
audioRef = "SELECT"
},
Back = {
audioName = "HUD_FRONTEND_DEFAULT_SOUNDSET",
audioRef = "BACK"
},
Error = {
audioName = "HUD_FRONTEND_DEFAULT_SOUNDSET",
audioRef = "ERROR"
},
Slider = {
audioName = "HUD_FRONTEND_DEFAULT_SOUNDSET",
audioRef = "CONTINUOUS_SLIDER",
Id = nil
}
},
Items = {
Title = {
Background = {
Width = 431,
Height = 107
},
Text = {
X = 215,
Y = 20,
Scale = 1.15
}
},
Subtitle = {
Background = {
Width = 431,
Height = 37
},
Text = {
X = 8,
Y = 3,
Scale = 0.35
},
PreText = {
X = 425,
Y = 3,
Scale = 0.35
}
},
Background = {
Dictionary = "commonmenu",
Texture = "gradient_bgd",
Y = 0,
Width = 431
},
Navigation = {
Rectangle = {
Width = 431,
Height = 18
},
Offset = 5,
Arrows = {
Dictionary = "commonmenu",
Texture = "shop_arrows_upanddown",
X = 190,
Y = -6,
Width = 50,
Height = 50
}
},
Description = {
Bar = {
Y = 4,
Width = 431,
Height = 4
},
Background = {
Dictionary = "commonmenu",
Texture = "gradient_bgd",
Y = 4,
Width = 431,
Height = 30
},
Text = {
X = 8,
Y = 10,
Scale = 0.35
}
}
},
Panels = {
Grid = {
Background = {
Dictionary = "commonmenu",
Texture = "gradient_bgd",
Y = 4,
Width = 431,
Height = 275
},
Grid = {
Dictionary = "pause_menu_pages_char_mom_dad",
Texture = "nose_grid",
X = 115.5,
Y = 47.5,
Width = 200,
Height = 200
},
Circle = {
Dictionary = "mpinventory",
Texture = "in_world_circle",
X = 115.5,
Y = 47.5,
Width = 20,
Height = 20
},
Text = {
Top = {
X = 215.5,
Y = 15,
Scale = 0.35
},
Bottom = {
X = 215.5,
Y = 250,
Scale = 0.35
},
Left = {
X = 57.75,
Y = 130,
Scale = 0.35
},
Right = {
X = 373.25,
Y = 130,
Scale = 0.35
}
}
},
Percentage = {
Background = {
Dictionary = "commonmenu",
Texture = "gradient_bgd",
Y = 4,
Width = 431,
Height = 76
},
Bar = {
X = 9,
Y = 50,
Width = 413,
Height = 10
},
Text = {
Left = {
X = 25,
Y = 15,
Scale = 0.35
},
Middle = {
X = 215.5,
Y = 15,
Scale = 0.35
},
Right = {
X = 398,
Y = 15,
Scale = 0.35
}
}
}
}
}
function RageUI.GetSafeZoneBounds()
local SafeSize = GetSafeZoneSize()
SafeSize = math.round(SafeSize, 2)
SafeSize = (SafeSize * 100) - 90
SafeSize = 10 - SafeSize
local W, H = 1920, 1080
return {
X = math.round(SafeSize * ((W / H) * 5.4)),
Y = math.round(SafeSize * 5.4)
}
end
RageUI.LastInstructionalState = nil
RageUI.LastInstructionalDevice = nil
-- RageUI.CurrentMenu.Pagination.Maximum
function RageUI.ShowInstructionalButtonsNUI()
local confirmKey = RageUI.CurrentMenu.ConfirmKey and RageUI.CurrentMenu.ConfirmKey or 176
local confirmCaption = RageUI.CurrentMenu.ConfirmCaption and RageUI.CurrentMenu.ConfirmCaption or "???"
local keys = {{
key = 177,
title = Translation.Get("MENU_LEAVE_OPTION")
}, {
key = 187,
title = Translation.Get("MENU_NAVIGATE_OPTION"),
extraKey = 188
}, {
key = confirmKey,
title = confirmCaption
}}
PushNUIInstructionalButtons(keys)
end
function RageUI.RefreshNUIInstructionalState()
local actualState = (RageUI.CurrentMenu and not RageUI.CurrentMenu.Closed)
local actualDevice = IsGamepadControl()
if actualState ~= RageUI.LastInstructionalState or actualDevice ~= RageUI.LastInstructionalDevice then
if actualState and not RageUI.CurrentMenu.NoHud then
RageUI.ShowInstructionalButtonsNUI()
elseif RageUI.WaitForClose and not PROMPT_ACTIVE then
RageUI.WaitForClose = false
PushNUIInstructionalButtons(nil)
end
RageUI.LastInstructionalDevice = actualDevice
RageUI.LastInstructionalState = actualState
end
end
RageUI.WaitForClose = false
function RageUI.Visible(Menu, Value)
if Menu ~= nil and Menu() then
if not Menu.NoHud then
RageUI.WaitForClose = true
end
if Value == true or Value == false then
if Value then
if RageUI.CurrentMenu ~= nil then
if RageUI.CurrentMenu.Closed ~= nil then
RageUI.CurrentMenu.Closed()
end
RageUI.CurrentMenu.Open = not Value
end
RageUI.CurrentMenu = Menu
else
RageUI.CurrentMenu = nil
end
Menu.Open = Value
RageUI.Options = 0
RageUI.ItemOffset = 0
RageUI.LastControl = false
else
return Menu.Open
end
end
end
function RageUI.CloseAll()
if RageUI.CurrentMenu ~= nil then
Audio.PlaySound(RageUI.Settings.Audio.Back.audioName, RageUI.Settings.Audio.Back.audioRef)
local parent = RageUI.CurrentMenu.Parent
while parent ~= nil do
parent.Index = 1
parent.Pagination.Minimum = 1
parent.Pagination.Maximum = parent.Pagination.Total
parent = parent.Parent
end
RageUI.CurrentMenu.Index = 1
RageUI.CurrentMenu.Pagination.Minimum = 1
RageUI.CurrentMenu.Pagination.Maximum = RageUI.CurrentMenu.Pagination.Total
RageUI.CurrentMenu.Open = false
RageUI.CurrentMenu = nil
end
RageUI.Options = 0
RageUI.ItemOffset = 0
RageUI.PoolMenus = {}
ResetScriptGfxAlign()
OnMenusClosed()
end
function RageUI.Banner()
local CurrentMenu = RageUI.CurrentMenu
if (CurrentMenu.Display.Header) then
RageUI.ItemsSafeZone(CurrentMenu)
if CurrentMenu.Sprite ~= nil then
if CurrentMenu.Sprite.Dictionary ~= nil then
if CurrentMenu.Sprite.Dictionary == "commonmenu" then
Graphics.Sprite(CurrentMenu.Sprite.Dictionary, CurrentMenu.Sprite.Texture, CurrentMenu.X,
CurrentMenu.Y, RageUI.Settings.Items.Title.Background.Width + CurrentMenu.WidthOffset,
RageUI.Settings.Items.Title.Background.Height, CurrentMenu.Sprite.Color.R,
CurrentMenu.Sprite.Color.G, CurrentMenu.Sprite.Color.B, CurrentMenu.Sprite.Color.A)
else
Graphics.Sprite(CurrentMenu.Sprite.Dictionary, CurrentMenu.Sprite.Texture, CurrentMenu.X,
CurrentMenu.Y, RageUI.Settings.Items.Title.Background.Width + CurrentMenu.WidthOffset,
RageUI.Settings.Items.Title.Background.Height, nil)
end
else
Graphics.Rectangle(CurrentMenu.X, CurrentMenu.Y,
RageUI.Settings.Items.Title.Background.Width + CurrentMenu.WidthOffset,
RageUI.Settings.Items.Title.Background.Height, CurrentMenu.Rectangle.R, CurrentMenu.Rectangle.G,
CurrentMenu.Rectangle.B, CurrentMenu.Rectangle.A)
end
else
Graphics.Rectangle(CurrentMenu.X, CurrentMenu.Y,
RageUI.Settings.Items.Title.Background.Width + CurrentMenu.WidthOffset,
RageUI.Settings.Items.Title.Background.Height, CurrentMenu.Rectangle.R, CurrentMenu.Rectangle.G,
CurrentMenu.Rectangle.B, CurrentMenu.Rectangle.A)
end
Graphics.Text(CurrentMenu.Title,
CurrentMenu.X + RageUI.Settings.Items.Title.Text.X + (CurrentMenu.WidthOffset / 2),
CurrentMenu.Y + RageUI.Settings.Items.Title.Text.Y, CurrentMenu.TitleFont, CurrentMenu.TitleScale, 255, 255,
255, 255, 1)
RageUI.ItemOffset = RageUI.ItemOffset + RageUI.Settings.Items.Title.Background.Height
end
end
function RageUI.Subtitle()
local CurrentMenu = RageUI.CurrentMenu
if (CurrentMenu.Display.Subtitle) then
RageUI.ItemsSafeZone(CurrentMenu)
if CurrentMenu.Subtitle ~= "" then
Graphics.Rectangle(CurrentMenu.X, CurrentMenu.Y + RageUI.ItemOffset,
RageUI.Settings.Items.Subtitle.Background.Width + CurrentMenu.WidthOffset,
RageUI.Settings.Items.Subtitle.Background.Height + CurrentMenu.SubtitleHeight,
CurrentMenu.SubColorR and CurrentMenu.SubColorR or 0,
CurrentMenu.SubColorG and CurrentMenu.SubColorG or 0,
CurrentMenu.SubColorB and CurrentMenu.SubColorB or 0,
CurrentMenu.SubColorA and CurrentMenu.SubColorA or 255)
Graphics.Text(CurrentMenu.PageCounterColour .. CurrentMenu.Subtitle,
CurrentMenu.X + RageUI.Settings.Items.Subtitle.Text.X,
CurrentMenu.Y + RageUI.Settings.Items.Subtitle.Text.Y + RageUI.ItemOffset, 0,
RageUI.Settings.Items.Subtitle.Text.Scale, 245, 245, 245, 255, nil, false, false,
RageUI.Settings.Items.Subtitle.Background.Width + CurrentMenu.WidthOffset)
if CurrentMenu.Index > CurrentMenu.Options or CurrentMenu.Index < 0 then
CurrentMenu.Index = 1
end
if (CurrentMenu ~= nil) then
if (CurrentMenu.Index > CurrentMenu.Pagination.Total) then
local offset = CurrentMenu.Index - CurrentMenu.Pagination.Total
CurrentMenu.Pagination.Minimum = 1 + offset
CurrentMenu.Pagination.Maximum = CurrentMenu.Pagination.Total + offset
else
CurrentMenu.Pagination.Minimum = 1
CurrentMenu.Pagination.Maximum = CurrentMenu.Pagination.Total
end
end
if CurrentMenu.Display.PageCounter then
if CurrentMenu.PageCounter == nil then
local counterContent = CurrentMenu.CustomCounter and CurrentMenu.CustomCounter or
(CurrentMenu.PageCounterColour .. CurrentMenu.Index .. " / " ..
CurrentMenu.Options)
Graphics.Text(counterContent,
CurrentMenu.X + RageUI.Settings.Items.Subtitle.PreText.X + CurrentMenu.WidthOffset,
CurrentMenu.Y + RageUI.Settings.Items.Subtitle.PreText.Y + RageUI.ItemOffset, 0,
RageUI.Settings.Items.Subtitle.PreText.Scale, 245, 245, 245, 255, 2)
else
Graphics.Text(CurrentMenu.PageCounter,
CurrentMenu.X + RageUI.Settings.Items.Subtitle.PreText.X + CurrentMenu.WidthOffset,
CurrentMenu.Y + RageUI.Settings.Items.Subtitle.PreText.Y + RageUI.ItemOffset, 0,
RageUI.Settings.Items.Subtitle.PreText.Scale, 245, 245, 245, 255, 2)
end
end
RageUI.ItemOffset = RageUI.ItemOffset + RageUI.Settings.Items.Subtitle.Background.Height
end
end
end
function RageUI.Background()
if RageUI.CurrentMenu == nil then
return
end
local CurrentMenu = RageUI.CurrentMenu;
if (CurrentMenu.Display.Background) then
RageUI.ItemsSafeZone(CurrentMenu)
SetScriptGfxDrawOrder(0)
Graphics.Sprite(RageUI.Settings.Items.Background.Dictionary, RageUI.Settings.Items.Background.Texture,
CurrentMenu.X, CurrentMenu.Y + RageUI.Settings.Items.Background.Y + CurrentMenu.SubtitleHeight,
RageUI.Settings.Items.Background.Width + CurrentMenu.WidthOffset, RageUI.ItemOffset, 0, 0, 0, 0, 255)
SetScriptGfxDrawOrder(1)
end
end
function RageUI.Description()
if RageUI.CurrentMenu == nil then
return
end
local CurrentMenu = RageUI.CurrentMenu;
local Description = RageUI.Settings.Items.Description;
if CurrentMenu.Description ~= nil then
RageUI.ItemsSafeZone(CurrentMenu)
Graphics.Rectangle(CurrentMenu.X,
CurrentMenu.Y + Description.Bar.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset,
Description.Bar.Width + CurrentMenu.WidthOffset, Description.Bar.Height, 0, 0, 0, 255)
Graphics.Sprite(Description.Background.Dictionary, Description.Background.Texture, CurrentMenu.X,
CurrentMenu.Y + Description.Background.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset,
Description.Background.Width + CurrentMenu.WidthOffset, CurrentMenu.DescriptionHeight, 0, 0, 0, 255)
Graphics.Text(CurrentMenu.Description, CurrentMenu.X + Description.Text.X,
CurrentMenu.Y + Description.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0,
Description.Text.Scale, 255, 255, 255, 255, nil, false, false,
Description.Background.Width + CurrentMenu.WidthOffset - 8.0)
RageUI.ItemOffset = RageUI.ItemOffset + CurrentMenu.DescriptionHeight + Description.Bar.Y
end
end
function RageUI.Render()
if RageUI.CurrentMenu == nil then
return
end
local CurrentMenu = RageUI.CurrentMenu;
if CurrentMenu.Safezone then
ResetScriptGfxAlign()
end
CurrentMenu.Options = RageUI.Options
CurrentMenu.SafeZoneSize = nil
RageUI.Controls()
RageUI.Options = 0
RageUI.StatisticPanelCount = 0
RageUI.ItemOffset = 0
if CurrentMenu.Controls.Back.Enabled then
if CurrentMenu.Controls.Back.Pressed and CurrentMenu.Closable then
CurrentMenu.Controls.Back.Pressed = false
Audio.PlaySound(RageUI.Settings.Audio.Back.audioName, RageUI.Settings.Audio.Back.audioRef)
if CurrentMenu.Closed ~= nil then
collectgarbage()
CurrentMenu.Closed()
end
if CurrentMenu.Parent ~= nil then
if CurrentMenu.Parent() then
RageUI.NextMenu = CurrentMenu.Parent
else
RageUI.NextMenu = nil
RageUI.Visible(CurrentMenu, false)
end
else
RageUI.NextMenu = nil
RageUI.Visible(CurrentMenu, false)
end
elseif CurrentMenu.Controls.Back.Pressed and not CurrentMenu.Closable then
CurrentMenu.Controls.Back.Pressed = false
end
end
if RageUI.NextMenu ~= nil then
if RageUI.NextMenu() then
RageUI.Visible(CurrentMenu, false)
RageUI.Visible(RageUI.NextMenu, true)
CurrentMenu.Controls.Select.Active = false
RageUI.NextMenu = nil
RageUI.LastControl = false
end
end
end
function RageUI.ItemsDescription(Description)
local CurrentMenu = RageUI.CurrentMenu;
if Description ~= "" or Description ~= nil then
if CurrentMenu.Description ~= Description then
CurrentMenu.Description = Description or nil;
local SettingsDescription = RageUI.Settings.Items.Description;
local DescriptionLineCount = Graphics.GetLineCount(CurrentMenu.Description,
CurrentMenu.X + SettingsDescription.Text.X, CurrentMenu.Y + SettingsDescription.Text.Y +
CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsDescription.Text.Scale, 255, 255, 255,
255, nil, false, false, SettingsDescription.Background.Width + (CurrentMenu.WidthOffset - 5.0))
if DescriptionLineCount > 1 then
CurrentMenu.DescriptionHeight = SettingsDescription.Background.Height * DescriptionLineCount
else
CurrentMenu.DescriptionHeight = SettingsDescription.Background.Height + 7
end
end
else
CurrentMenu.Description = nil;
end
end
function RageUI.ItemsMouseBounds(CurrentMenu, Selected, Option, SettingsButton)
local Hovered = false
Hovered = Graphics.IsMouseInBounds(CurrentMenu.X + CurrentMenu.SafeZoneSize.X,
CurrentMenu.Y + SettingsButton.Rectangle.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight +
RageUI.ItemOffset, SettingsButton.Rectangle.Width + CurrentMenu.WidthOffset, SettingsButton.Rectangle.Height)
if Hovered and not Selected then
Graphics.Rectangle(CurrentMenu.X,
CurrentMenu.Y + SettingsButton.Rectangle.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset,
SettingsButton.Rectangle.Width + CurrentMenu.WidthOffset, SettingsButton.Rectangle.Height, 255, 255, 255, 20)
if CurrentMenu.Controls.Click.Active then
CurrentMenu.Index = Option
Audio.PlaySound(RageUI.Settings.Audio.UpDown.audioName, RageUI.Settings.Audio.UpDown.audioRef)
end
end
return Hovered;
end
function RageUI.ItemsSafeZone(CurrentMenu)
if not CurrentMenu.SafeZoneSize then
CurrentMenu.SafeZoneSize = {
X = 0,
Y = 0
}
if CurrentMenu.Safezone then
CurrentMenu.SafeZoneSize = RageUI.GetSafeZoneBounds()
SetScriptGfxAlign(76, 84)
SetScriptGfxAlignParams(0, 0, 0, 0)
end
end
end
function RageUI.Pool()
for name, callback in pairs(RageUI.PoolMenus) do
if type(callback) == "function" and name ~= RageUI.PoolMenus.Name then
callback()
if RageUI.PoolMenus.Timer == 1 then
RageUI.PoolMenus.Name = name
return
end
end
end
end
Citizen.CreateThread(function()
while true do
RageUI.PoolMenus.Timer = 250
if RageUI.PoolMenus.Name ~= nil then
RageUI.PoolMenus[RageUI.PoolMenus.Name]()
end
Citizen.Wait(RageUI.PoolMenus.Timer)
if RageUI.PoolMenus.Timer == 250 then
RageUI.PoolMenus.Name = nil
RageUI.Pool();
end
end
end)
@@ -1,449 +0,0 @@
TimerBar = {}
-- consts
TimerBar.gfxAlignWidth = 0.952
TimerBar.gfxAlignHeight = 0.949
TimerBar.initialX = 0.795
TimerBar.initialY = 0.923
TimerBar.initialBusySpinnerY = 0.887
TimerBar.bgBaseX = 0.874
TimerBar.progressBaseX = 0.913
TimerBar.checkpointBaseX = 0.9445
TimerBar.bgOffset = 0.008
TimerBar.bgThinOffset = 0.012
TimerBar.textOffset = -0.006
TimerBar.playerTitleOffset = -0.005
TimerBar.barOffset = 0.012
TimerBar.checkpointOffsetX = 0.0094
TimerBar.checkpointOffsetY = 0.012
TimerBar.timerBarWidth = 0.165
TimerBar.timerBarHeight = 0.035
TimerBar.timerBarThinHeight = 0.028
TimerBar.timerBarMargin = 0.0399
TimerBar.timerBarThinMargin = 0.0319
TimerBar.progressWidth = 0.069
TimerBar.progressHeight = 0.011
TimerBar.checkpointWidth = 0.012
TimerBar.checkpointHeight = 0.023
TimerBar.titleScale = 0.288
TimerBar.titleWrap = 0.867
TimerBar.textScale = 0.494
TimerBar.textWrap = 0.95
TimerBar.playertitleScale = 0.447
TimerBar.timerbarUnique = 0
-- list of all created timerbars
TimerBar.pool = {}
-- timerbar types
TimerBar.Progress = 0
TimerBar.Player = 1
TimerBar.Text = 2
TimerBar.Checkpoint = 3
local function DrawTextLabel(label, position, options)
options.font = Config.UIFontID
SetTextFont(options.font)
SetTextScale(0.0, options.scale)
SetTextColour(options.color[1], options.color[2], options.color[3], options.color[4])
SetTextJustification(options.justification);
if options.wrap then
SetTextWrap(0.0, options.wrap);
end
if options.shadow then
SetTextDropShadow()
end
if options.outline then
SetTextOutline()
end
BeginTextCommandDisplayText(label);
EndTextCommandDisplayText(position[1], position[2]);
end
local function CreateTimerBarBase(title)
local o = {}
-- assign unique ID
TimerBar.timerbarUnique = TimerBar.timerbarUnique + 1
o._id = TimerBar.timerbarUnique
-- set initial styling props
o._thin = false
o._highlightColor = nil
-- assign TextEntry for title
o._titleGxtName = "TMRB_TITLE_" .. o._id
o._title = title
AddTextEntry(o._titleGxtName, title)
-- set initial styling for title
o.titleDrawParams = {
font = 0,
color = {240, 240, 240, 255},
scale = TimerBar.titleScale,
justification = 2,
wrap = TimerBar.titleWrap,
shadow = false,
outline = false
}
-- set new title
o.setTitle = function(title)
o._title = title
AddTextEntry(o._titleGxtName, title)
end
-- set new title color
o.setTitleColor = function(titleColor)
o.titleDrawParams.color = titleColor
end
-- set new highlight color
o.setHighlightColor = function(highlightColor)
o._highlightColor = highlightColor
end
-- draw background
o.drawBackground = function(y)
y = y + (o._thin and TimerBar.bgThinOffset or TimerBar.bgThinOffset)
-- draw highlight side of gradient, if it's set
if o._highlightColor then
DrawSprite("timerbars", "all_white_bg", TimerBar.bgBaseX, y, TimerBar.timerBarWidth,
(o._thin and TimerBar.timerBarThinHeight or TimerBar.timerBarHeight), 0.0, o._highlightColor[1],
o._highlightColor[2], o._highlightColor[3], o._highlightColor[4])
end
-- draw black side of gradient background
DrawSprite("timerbars", "all_black_bg", TimerBar.bgBaseX, y, TimerBar.timerBarWidth,
(o._thin and TimerBar.timerBarThinHeight or TimerBar.timerBarHeight), 0.0, 255, 255, 255, 140)
end
-- draw title
o.drawTitle = function(y)
DrawTextLabel(o._titleGxtName, {TimerBar.initialX, y}, o.titleDrawParams)
end
-- draw
o.draw = function(y)
-- draws background & title
o.drawBackground(y)
o.drawTitle(y)
end
-- on destroy
o.onDestroy = function()
AddTextEntry(o._titleGxtName, "")
end
return o
end
local function CreateBarTimerBar(title, progress)
local o = {}
-- create base class
o.base = CreateTimerBarBase(title)
-- progress background and fill props
o._bgColor = {155, 155, 155, 255};
o._fgColor = {240, 240, 240, 255};
o._fgWidth = 0.0;
o._fgX = 0.0;
-- set new progress
o.setProgress = function(v)
o._progress = Clamp(v, 0.0, 1.0)
o._fgWidth = TimerBar.progressWidth * o._progress
o._fgX = (TimerBar.progressBaseX - TimerBar.progressWidth * 0.5) + (o._fgWidth * 0.5)
end
o.draw = function(y)
-- draw TimerBarBase
o.base.draw(y)
-- draw progress
y = y + TimerBar.barOffset
-- progress background
DrawRect(TimerBar.progressBaseX, y, TimerBar.progressWidth, TimerBar.progressHeight, o._bgColor[1],
o._bgColor[2], o._bgColor[3], o._bgColor[4])
-- progress fill
DrawRect(o._fgX, y, o._fgWidth, TimerBar.progressHeight, o._fgColor[1], o._fgColor[2], o._fgColor[3],
o._fgColor[4])
end
o.setBackgroundColor = function(color)
o._bgColor = color
end
o.setForegroundColor = function(color)
o._fgColor = color
end
-- set initial progress
o._progress = progress;
-- show initial progress
o.setProgress(progress)
o.setHighlightColor = o.base.setHighlightColor
o.setTitleColor = o.base.setTitleColor
o._thin = o.base._thin
o._id = o.base._id
-- on destroy
o.onDestroy = function()
o.base.onDestroy()
end
return o
end
local function CreateTextTimerBar(title, text)
local o = {}
-- create base class
o.base = CreateTimerBarBase(title)
-- assign TextEntry for text
o._textGxtName = "TMRB_TEXT_" .. o.base._id
o._text = text
AddTextEntry(o._textGxtName, text)
-- assign defailt text params
o.textDrawParams = {
font = 0,
color = {238, 232, 170, 255},
scale = TimerBar.textScale,
justification = 2,
wrap = TimerBar.textWrap
};
o.setText = function(newText)
AddTextEntry(o._textGxtName, newText)
end
o.setTextColor = function(color)
o.textDrawParams.color = color
end
-- draw
o.draw = function(y)
-- draw TimerBarBase
o.base.draw(y)
-- draw text
y = y + TimerBar.textOffset;
DrawTextLabel(o._textGxtName, {TimerBar.initialX, y}, o.textDrawParams)
end
o.setHighlightColor = o.base.setHighlightColor
o.setTitleColor = o.base.setTitleColor
o._thin = o.base._thin
o._id = o.base._id
o.setTitle = o.base.setTitle
-- on destroy
o.onDestroy = function()
o.base.onDestroy()
AddTextEntry(o._textGxtName, "")
end
return o
end
local function CreatePlayerTimerBar(title, text)
local o = {}
-- create base class
o.base = CreateTextTimerBar(title, text)
-- override TextTimerBars title styling
local titleDrawParams = o.base.base.titleDrawParams
titleDrawParams.font = 4
titleDrawParams.color = {238, 232, 170, 255}
titleDrawParams.scale = TimerBar.playertitleScale
titleDrawParams.justification = 2
titleDrawParams.wrap = TimerBar.titleWrap
titleDrawParams.shadow = true
o.draw = function(y)
-- draw TimerBarBase background
o.base.base.drawBackground(y)
-- draw title
DrawTextLabel(o.base.base._titleGxtName, {TimerBar.initialX, y + TimerBar.playerTitleOffset}, titleDrawParams)
-- draw text
DrawTextLabel(o.base._textGxtName, {TimerBar.initialX, y + TimerBar.textOffset}, o.base.textDrawParams)
end
o.setTextColor = o.base.setTextColor
o.setHighlightColor = o.base.base.setHighlightColor
o.setTitleColor = o.base.base.setTitleColor
o._thin = o.base.base._thin
o._id = o.base.base._id
-- on destroy
o.onDestroy = function()
o.base.onDestroy()
end
return o
end
local function CreateCheckpointTimerBar(title, numCheckpoints)
local o = {}
-- create base class
o.base = CreateTimerBarBase(title)
o.base._thin = false
-- checkpoints
o._checkpointStates = {}
o._numCheckpoints = numCheckpoints
-- colors
o._color = {113, 204, 111, 255}
o._inProgressColor = {255, 255, 255, 51}
o._failedColor = {0, 0, 0, 255}
-- initialize list
for i = 1, numCheckpoints, 1 do
o._checkpointStates[i] = 0
end
-- set value on all checkpoints
o.toggleAll = function(toggle)
for i = 1, numCheckpoints, 1 do
o._checkpointStates[i] = toggle
end
end
-- change num checkpoints
o.changeNumCheckpoints = function(newCount)
o._numCheckpoints = newCount
-- initialize list
for i = 1, numCheckpoints, 1 do
o._checkpointStates[i] = 0
end
end
-- set all checkpoints checked
o.checkAll = function()
o.toggleAll(1)
end
-- set all checkpoints unchecked
o.uncheckAll = function()
o.toggleAll(0)
end
-- set checkpoint state
o.setCheckpointState = function(index, state)
if o._checkpointStates[index] == nil then
return
end
o._checkpointStates[index] = state
end
-- draw
o.draw = function(y)
o.base.draw(y)
y = y + TimerBar.checkpointOffsetY
local cpX = TimerBar.checkpointBaseX
for i = 1, o._numCheckpoints, 1 do
local state = o._checkpointStates[i]
local drawColor = (state == 0 and o._inProgressColor or (state == -1 and o._failedColor or o._color))
DrawSprite("timerbars", "circle_checkpoints", cpX, y, TimerBar.checkpointWidth, TimerBar.checkpointHeight,
0.0, drawColor[1], drawColor[2], drawColor[3], drawColor[4])
cpX = cpX - TimerBar.checkpointOffsetX;
end
end
o.setHighlightColor = o.base.setHighlightColor
o.setTitleColor = o.base.setTitleColor
o._thin = o.base._thin
o._id = o.base._id
o.setTextColor = o.base.setTextColor
-- on destroy
o.onDestroy = function()
o.base.onDestroy()
end
return o
end
TimerBar.Create = function(type, title, value)
local o = nil
if type == 0 then
o = CreateBarTimerBar(title, value)
elseif type == 1 then
o = CreatePlayerTimerBar(title, value)
elseif type == 2 then
o = CreateTextTimerBar(title, value)
elseif type == 3 then
o = CreateCheckpointTimerBar(title, value)
end
table.insert(TimerBar.pool, o)
o.visible = true
return o
end
TimerBar.Destroy = function(bar)
for index, value in pairs(TimerBar.pool) do
if value == bar then
bar.onDestroy()
table.remove(TimerBar.pool, index)
end
end
end
TimerBar.DestroyAll = function()
for index, value in pairs(TimerBar.pool) do
value.onDestroy()
end
TimerBar.pool = {}
end
TimerBar.BeginDraw = function()
HideHudComponentThisFrame(6); -- HUD_VEHICLE_NAME
HideHudComponentThisFrame(7); -- HUD_AREA_NAME
HideHudComponentThisFrame(8); -- HUD_VEHICLE_CLASS
HideHudComponentThisFrame(9); -- HUD_STREET_NAME
SetScriptGfxAlign(82, 66)
SetScriptGfxAlignParams(0.0, 0.0, TimerBar.gfxAlignWidth, TimerBar.gfxAlignHeight)
end
TimerBar.EndDraw = function()
ResetScriptGfxAlign()
end
TimerBar.DrawAll = function()
if #(TimerBar.pool) == 0 then
return
end
if not ENABLE_HUD then
return
end
TimerBar.BeginDraw()
local busySpinner = BusyspinnerIsOn()
local drawY = ((busySpinner or INSTRUCTIONAL_BUTTONS_ACTIVE) and TimerBar.initialBusySpinnerY or TimerBar.initialY)
for _, v in pairs(TimerBar.pool) do
if v.visible then
v.draw(drawY)
drawY = drawY - (v._thin and TimerBar.timerBarThinMargin or TimerBar.timerBarMargin);
end
end
TimerBar.EndDraw()
end
@@ -1,34 +0,0 @@
---
--- @author Dylan MALANDAIN, Kalyptus
--- @version 1.0.0
--- File created at [24/05/2021 00:00]
---
Audio = {}
---PlaySound
---
--- Reference : N/A
---
---@param Library string
---@param Sound string
---@param IsLooped boolean
---@return nil
---@public
function Audio.PlaySound(Library, Sound, IsLooped)
local audioId
if not IsLooped then
PlaySoundFrontend(-1, Sound, Library, true)
else
if not audioId then
Citizen.CreateThread(function()
audioId = GetSoundId()
PlaySoundFrontend(audioId, Sound, Library, true)
Citizen.Wait(0.01)
StopSound(audioId)
ReleaseSoundId(audioId)
audioId = nil
end)
end
end
end
@@ -1,176 +0,0 @@
---
--- @author Dylan MALANDAIN, Kalyptus
--- @version 1.0.0
--- File created at [24/05/2021 00:00]
---
local function StringToArray(str)
local charCount = #str
local strCount = math.ceil(charCount / 99)
local strings = {}
for i = 1, strCount do
local start = (i - 1) * 99 + 1
local clamp = math.clamp(#string.sub(str, start), 0, 99)
local finish = ((i ~= 1) and (start - 1) or 0) + clamp
strings[i] = string.sub(str, start, finish)
end
return strings
end
local function AddText(str)
local str = tostring(str)
local charCount = #str
if charCount < 100 then
AddTextComponentSubstringPlayerName(str)
else
local strings = StringToArray(str)
for s = 1, #strings do
AddTextComponentSubstringPlayerName(strings[s])
end
end
end
local function RText(text, x, y, font, scale, r, g, b, a, alignment, dropShadow, outline, wordWrap)
local Text, X, Y = text, (x or 0) / 1920, (y or 0) / 1080
SetTextFont(Config.UIFontID)
SetTextScale(1.0, scale or 0)
SetTextColour(r or 255, g or 255, b or 255, a or 255)
if dropShadow then
SetTextDropShadow()
end
if outline then
SetTextOutline()
end
if alignment ~= nil then
if alignment == 1 or alignment == "Center" or alignment == "Centre" then
SetTextCentre(true)
elseif alignment == 2 or alignment == "Right" then
SetTextRightJustify(true)
end
end
if wordWrap and wordWrap ~= 0 then
if alignment == 1 or alignment == "Center" or alignment == "Centre" then
SetTextWrap(X - ((wordWrap / 1920) / 2), X + ((wordWrap / 1920) / 2))
elseif alignment == 2 or alignment == "Right" then
SetTextWrap(0, X)
else
SetTextWrap(X, X + (wordWrap / 1920))
end
else
if alignment == 2 or alignment == "Right" then
SetTextWrap(0, X)
end
end
return Text, X, Y
end
Graphics = {};
function Graphics.MeasureStringWidth(str, font, scale)
BeginTextCommandGetWidth("CELL_EMAIL_BCON")
AddTextComponentSubstringPlayerName(str)
SetTextFont(Config.UIFontID)
SetTextScale(1.0, scale or 0)
return EndTextCommandGetWidth(true) * 1920
end
function Graphics.Rectangle(x, y, width, height, r, g, b, a)
local X, Y, Width, Height = (x or 0) / 1920, (y or 0) / 1080, (width or 0) / 1920, (height or 0) / 1080
DrawRect(X + Width * 0.5, Y + Height * 0.5, Width, Height, r or 255, g or 255, b or 255, a or 255)
end
function Graphics.Sprite(dictionary, name, x, y, width, height, heading, r, g, b, a)
local X, Y, Width, Height = (x or 0) / 1920, (y or 0) / 1080, (width or 0) / 1920, (height or 0) / 1080
if not HasStreamedTextureDictLoaded(dictionary) then
RequestStreamedTextureDict(dictionary, true)
end
DrawSprite(dictionary, name, X + Width * 0.5, Y + Height * 0.5, Width, Height, heading or 0, r or 255, g or 255,
b or 255, a or 255)
end
Graphics.LineCache = {}
function Graphics.GetLineCount(text, x, y, font, scale, r, g, b, a, alignment, dropShadow, outline, wordWrap)
if not text then
return 1
end
if Graphics.LineCache[text] then
return Graphics.LineCache[text]
end
local Text, X, Y = RText(text, x, y, font, scale, r, g, b, a, alignment, dropShadow, outline, wordWrap)
BeginTextCommandLineCount("CELL_EMAIL_BCON")
AddText(Text)
local cached = EndTextCommandLineCount(X, Y)
Graphics.LineCache[text] = cached
return cached
end
function Graphics.Text(text, x, y, font, scale, r, g, b, a, alignment, dropShadow, outline, wordWrap)
local Text, X, Y = RText(text, x, y, font, scale, r, g, b, a, alignment, dropShadow, outline, wordWrap)
BeginTextCommandDisplayText("CELL_EMAIL_BCON")
AddText(Text)
EndTextCommandDisplayText(X, Y)
end
function Graphics.IsMouseInBounds(X, Y, Width, Height)
local MX, MY = math.round(GetControlNormal(2, 239) * 1920) / 1920,
math.round(GetControlNormal(2, 240) * 1080) / 1080
X, Y = X / 1920, Y / 1080
Width, Height = Width / 1920, Height / 1080
return (MX >= X and MX <= X + Width) and (MY > Y and MY < Y + Height)
end
function Graphics.ConvertToPixel(x, y)
return (x * 1920), (y * 1080)
end
function Graphics.ScreenToWorld(distance, flags)
local camRot = GetGameplayCamRot(0)
local camPos = GetGameplayCamCoord()
local mouse = vector2(GetControlNormal(2, 239), GetControlNormal(2, 240))
local cam3DPos, forwardDir = Graphics.ScreenRelToWorld(camPos, camRot, mouse)
local direction = camPos + forwardDir * distance
local rayHandle = StartExpensiveSynchronousShapeTestLosProbe(cam3DPos, direction, flags, 0, 0)
local _, hit, endCoords, surfaceNormal, entityHit = GetShapeTestResult(rayHandle)
return (hit == 1 and true or false), endCoords, surfaceNormal, entityHit,
(entityHit >= 1 and GetEntityType(entityHit) or 0), direction, mouse
end
function Graphics.ScreenRelToWorld(camPos, camRot, cursor)
local camForward = Graphics.RotationToDirection(camRot)
local rotUp = vector3(camRot.x + 1.0, camRot.y, camRot.z)
local rotDown = vector3(camRot.x - 1.0, camRot.y, camRot.z)
local rotLeft = vector3(camRot.x, camRot.y, camRot.z - 1.0)
local rotRight = vector3(camRot.x, camRot.y, camRot.z + 1.0)
local camRight = Graphics.RotationToDirection(rotRight) - Graphics.RotationToDirection(rotLeft)
local camUp = Graphics.RotationToDirection(rotUp) - Graphics.RotationToDirection(rotDown)
local rollRad = -(camRot.y * math.pi / 180.0)
local camRightRoll = camRight * math.cos(rollRad) - camUp * math.sin(rollRad)
local camUpRoll = camRight * math.sin(rollRad) + camUp * math.cos(rollRad)
local point3DZero = camPos + camForward * 1.0
local point3D = point3DZero + camRightRoll + camUpRoll
local point2D = Graphics.World3DToScreen2D(point3D)
local point2DZero = Graphics.World3DToScreen2D(point3DZero)
local scaleX = (cursor.x - point2DZero.x) / (point2D.x - point2DZero.x)
local scaleY = (cursor.y - point2DZero.y) / (point2D.y - point2DZero.y)
local point3Dret = point3DZero + camRightRoll * scaleX + camUpRoll * scaleY
local forwardDir = camForward + camRightRoll * scaleX + camUpRoll * scaleY
return point3Dret, forwardDir
end
function Graphics.RotationToDirection(rotation)
local x, z = (rotation.x * math.pi / 180.0), (rotation.z * math.pi / 180.0)
local num = math.abs(math.cos(x))
return vector3((-math.sin(z) * num), (math.cos(z) * num), math.sin(x))
end
function Graphics.World3DToScreen2D(pos)
local _, sX, sY = GetScreenCoordFromWorldCoord(pos.x, pos.y, pos.z)
return vector2(sX, sY)
end
@@ -1,22 +0,0 @@
---
--- @author Dylan MALANDAIN, Kalyptus
--- @version 1.0.0
--- File created at [24/05/2021 00:00]
---
Keys = {};
---Register
---@param Controls string
---@param ControlName string
---@param Description string
---@param Action function
---@return Keys
---@public
function Keys.Register(Controls, ControlName, Description, Action)
RegisterKeyMapping(string.format('keys-%s', ControlName), Description, "keyboard", Controls)
RegisterCommand(string.format('keys-%s', ControlName), function()
if (Action ~= nil) then
Action();
end
end, false)
end
@@ -1,12 +0,0 @@
---
--- @author Dylan MALANDAIN, Kalyptus
--- @version 1.0.0
--- File created at [24/05/2021 09:57]
---
function math.round(num, numDecimalPlaces)
return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num))
end
function string.starts(String, Start)
return string.sub(String, 1, string.len(Start)) == Start
end
@@ -1,85 +0,0 @@
---
--- @author Dylan MALANDAIN, Kalyptus
--- @version 1.0.0
--- File created at [24/05/2021 00:00]
---
Visual = {};
local function AddLongString(txt)
for i = 100, string.len(txt), 99 do
local sub = string.sub(txt, i, i + 99)
AddTextComponentSubstringPlayerName(sub)
end
end
function Visual.Notification(args)
if (not args.dict) and (args.name) then
args.dict = args.name
end
if not HasStreamedTextureDictLoaded(args.dict) then
RequestStreamedTextureDict(args.dict, false)
while not HasStreamedTextureDictLoaded(args.dict) do
Wait(0)
end
end
if (args.backId) then
ThefeedNextPostBackgroundColor(args.backId)
end
BeginTextCommandThefeedPost("jamyfafi")
if (args.message) then
AddTextComponentSubstringPlayerName(args.message)
if string.len(args.message) > 99 then
AddLongString(args.message)
end
end
if (args.title) and (args.subtitle) and (args.name) then
EndTextCommandThefeedPostMessagetext(args.dict or "CHAR_DEFAULT", args.name or "CHAR_DEFAULT", true,
args.icon or 0, args.title or "", args.subtitle or "")
SetStreamedTextureDictAsNoLongerNeeded(args.dict)
end
EndTextCommandThefeedPostTicker(false, true)
end
function Visual.Subtitle(text, time)
ClearPrints()
BeginTextCommandPrint("STRING")
AddTextComponentSubstringPlayerName(text)
EndTextCommandPrint(time and math.ceil(time) or 0, true)
end
function Visual.FloatingHelpText(text, sound, loop)
BeginTextCommandDisplayHelp("jamyfafi")
AddTextComponentSubstringPlayerName(text)
if string.len(text) > 99 then
AddLongString(text)
end
EndTextCommandDisplayHelp(0, loop or 0, sound or false, -1)
end
function Visual.Prompt(text, spinner)
BeginTextCommandBusyspinnerOn("STRING")
AddTextComponentSubstringPlayerName(text)
EndTextCommandBusyspinnerOn(spinner or 1)
end
function Visual.PromptDuration(duration, text, spinner)
Citizen.CreateThread(function()
Citizen.Wait(0)
Visual.Prompt(text, spinner)
Citizen.Wait(duration)
if (BusyspinnerIsOn()) then
BusyspinnerOff();
end
end)
end
function Visual.FloatingHelpTextToEntity(text, x, y)
SetFloatingHelpTextScreenPosition(1, x, y)
SetFloatingHelpTextStyle(1, 1, 2, -1, 3, 0)
BeginTextCommandDisplayHelp("jamyfafi")
AddTextComponentSubstringPlayerName(text)
if string.len(text) > 99 then
AddLongString(text)
end
EndTextCommandDisplayHelp(2, false, false, -1)
end
@@ -1,337 +0,0 @@
---
--- @author Dylan MALANDAIN, Kalyptus
--- @version 1.0.0
--- created at [24/05/2021 10:02]
---
RageUI.BadgeStyle = {
-- DEFAULT BADGE
None = function()
return {
BadgeTexture = "",
BadgeDictionary = "commonmenu"
}
end,
BronzeMedal = function()
return {
BadgeTexture = "mp_medal_bronze"
}
end,
GoldMedal = function()
return {
BadgeTexture = "mp_medal_gold"
}
end,
SilverMedal = function()
return {
BadgeTexture = "medal_silver"
}
end,
Alert = function()
return {
BadgeTexture = "mp_alerttriangle"
}
end,
Crown = function(Selected)
return {
BadgeTexture = "mp_hostcrown",
BadgeColour = Selected and {
R = 0,
G = 0,
B = 0,
A = 255
} or {
R = 255,
G = 255,
B = 255,
A = 255
}
}
end,
Ammo = function(Selected)
return {
BadgeTexture = Selected and "shop_ammo_icon_b" or "shop_ammo_icon_a"
}
end,
Armour = function(Selected)
return {
BadgeTexture = Selected and "shop_armour_icon_b" or "shop_armour_icon_a"
}
end,
Barber = function(Selected)
return {
BadgeTexture = Selected and "shop_barber_icon_b" or "shop_barber_icon_a"
}
end,
Clothes = function(Selected)
return {
BadgeTexture = Selected and "shop_clothing_icon_b" or "shop_clothing_icon_a"
}
end,
Franklin = function(Selected)
return {
BadgeTexture = Selected and "shop_franklin_icon_b" or "shop_franklin_icon_a"
}
end,
Bike = function(Selected)
return {
BadgeTexture = Selected and "shop_garage_bike_icon_b" or "shop_garage_bike_icon_a"
}
end,
Car = function(Selected)
return {
BadgeTexture = Selected and "shop_garage_icon_b" or "shop_garage_icon_a"
}
end,
Boat = function(Selected)
return {
BadgeTexture = Selected and "mp_specitem_boat_black" or "mp_specitem_boat",
BadgeDictionary = "mpinventory"
}
end,
Heli = function(Selected)
return {
BadgeTexture = Selected and "mp_specitem_heli_black" or "mp_specitem_heli",
BadgeDictionary = "mpinventory"
}
end,
Plane = function(Selected)
return {
BadgeTexture = Selected and "mp_specitem_plane_black" or "mp_specitem_plane",
BadgeDictionary = "mpinventory"
}
end,
BoatPickup = function(Selected)
return {
BadgeTexture = Selected and "mp_specitem_boatpickup_black" or "mp_specitem_boatpickup",
BadgeDictionary = "mpinventory"
}
end,
Card = function(Selected)
return {
BadgeTexture = Selected and "mp_specitem_keycard_black" or "mp_specitem_keycard",
BadgeDictionary = "mpinventory"
}
end,
Gun = function(Selected)
return {
BadgeTexture = Selected and "shop_gunclub_icon_b" or "shop_gunclub_icon_a"
}
end,
Heart = function(Selected)
return {
BadgeTexture = Selected and "shop_health_icon_b" or "shop_health_icon_a"
}
end,
CasinoVIP = function(Selected)
return {
BadgeTexture = Selected and "shop_health_icon_b" or "shop_health_icon_a",
BadgeColour = Selected and {
R = 255,
G = 0,
B = 93,
A = 255
} or {
R = 255,
G = 0,
B = 93,
A = 255
}
}
end,
Makeup = function(Selected)
return {
BadgeTexture = Selected and "shop_makeup_icon_b" or "shop_makeup_icon_a"
}
end,
Mask = function(Selected)
return {
BadgeTexture = Selected and "shop_mask_icon_b" or "shop_mask_icon_a"
}
end,
Michael = function(Selected)
return {
BadgeTexture = Selected and "shop_michael_icon_b" or "shop_michael_icon_a"
}
end,
Star = function()
return {
BadgeTexture = "shop_new_star"
}
end,
Tattoo = function(Selected)
return {
BadgeTexture = Selected and "shop_tattoos_icon_b" or "shop_tattoos_icon_a"
}
end,
Trevor = function(Selected)
return {
BadgeTexture = Selected and "shop_trevor_icon_b" or "shop_trevor_icon_a"
}
end,
Lock = function(Selected)
return {
BadgeTexture = "shop_lock",
BadgeColour = Selected and {
R = 0,
G = 0,
B = 0,
A = 255
} or {
R = 255,
G = 255,
B = 255,
A = 255
}
}
end,
Tick = function(Selected)
return {
BadgeTexture = "shop_tick_icon",
BadgeColour = Selected and {
R = 0,
G = 0,
B = 0,
A = 255
} or {
R = 255,
G = 255,
B = 255,
A = 255
}
}
end,
Key = function(Selected)
return {
BadgeTexture = Selected and "mp_specitem_cuffkeys_black" or "mp_specitem_cuffkeys",
BadgeDictionary = "mpinventory"
}
end,
Coke = function(Selected)
return {
BadgeTexture = Selected and "mp_specitem_coke_black" or "mp_specitem_coke",
BadgeDictionary = "mpinventory"
}
end,
Heroin = function(Selected)
return {
BadgeTexture = Selected and "mp_specitem_heroin_black" or "mp_specitem_heroin",
BadgeDictionary = "mpinventory"
}
end,
Meth = function(Selected)
return {
BadgeTexture = Selected and "mp_specitem_meth_black" or "mp_specitem_meth",
BadgeDictionary = "mpinventory"
}
end,
Weed = function(Selected)
return {
BadgeTexture = Selected and "mp_specitem_weed_black" or "mp_specitem_weed",
BadgeDictionary = "mpinventory"
}
end,
Package = function(Selected)
return {
BadgeTexture = Selected and "mp_specitem_package_black" or "mp_specitem_package",
BadgeDictionary = "mpinventory"
}
end,
Cash = function(Selected)
return {
BadgeTexture = Selected and "mp_specitem_cash_black" or "mp_specitem_cash",
BadgeDictionary = "mpinventory"
}
end,
RP = function(Selected)
return {
BadgeTexture = "mp_anim_rp",
BadgeDictionary = "mphud"
}
end,
LSPD = function()
return {
BadgeTexture = "mpgroundlogo_cops",
BadgeDictionary = "3dtextures"
}
end,
Vagos = function()
return {
BadgeTexture = "mpgroundlogo_vagos",
BadgeDictionary = "3dtextures"
}
end,
Bikers = function()
return {
BadgeTexture = "mpgroundlogo_bikers",
BadgeDictionary = "3dtextures"
}
end,
-- CASINO
Badbeat = function()
return {
BadgeTexture = "badbeat",
BadgeDictionary = "mpawardcasino"
}
end,
CashingOut = function()
return {
BadgeTexture = "cashingout",
BadgeDictionary = "mpawardcasino"
}
end,
FullHouse = function()
return {
BadgeTexture = "fullhouse",
BadgeDictionary = "mpawardcasino"
}
end,
HighRoller = function()
return {
BadgeTexture = "highroller",
BadgeDictionary = "mpawardcasino"
}
end,
HouseKeeping = function()
return {
BadgeTexture = "housekeeping",
BadgeDictionary = "mpawardcasino"
}
end,
LooseCheng = function()
return {
BadgeTexture = "loosecheng",
BadgeDictionary = "mpawardcasino"
}
end,
LuckyLucky = function()
return {
BadgeTexture = "luckylucky",
BadgeDictionary = "mpawardcasino"
}
end,
PlayToWin = function()
return {
BadgeTexture = "playtowin",
BadgeDictionary = "mpawardcasino"
}
end,
StraightFlush = function()
return {
BadgeTexture = "straightflush",
BadgeDictionary = "mpawardcasino"
}
end,
StrongArmTactics = function()
return {
BadgeTexture = "strongarmtactics",
BadgeDictionary = "mpawardcasino"
}
end,
TopPair = function()
return {
BadgeTexture = "toppair",
BadgeDictionary = "mpawardcasino"
}
end
}
@@ -1,227 +0,0 @@
---
--- @author Dylan MALANDAIN, Kalyptus
--- @version 1.0.0
--- created at [24/05/2021 10:02]
---
RageUI.ItemsColour = {
MyRed = {255, 20, 20, 255},
MyOrange = {255, 141, 20, 255},
MyGreen = {82, 255, 20, 255},
PureWhite = {255, 255, 255, 255},
White = {240, 240, 240, 255},
Black = {0, 0, 0, 255},
Grey = {155, 155, 155, 255},
GreyLight = {205, 205, 205, 255},
GreyDark = {77, 77, 77, 255},
Red = {224, 50, 50, 255},
RedLight = {240, 153, 153, 255},
RedDark = {112, 25, 25, 255},
Blue = {93, 182, 229, 255},
BlueLight = {174, 219, 242, 255},
BlueDark = {47, 92, 115, 255},
Yellow = {240, 200, 80, 255},
YellowLight = {254, 235, 169, 255},
YellowDark = {126, 107, 41, 255},
Orange = {255, 133, 85, 255},
OrangeLight = {255, 194, 170, 255},
OrangeDark = {127, 66, 42, 255},
Green = {114, 204, 114, 255},
GreenLight = {185, 230, 185, 255},
GreenDark = {57, 102, 57, 255},
Purple = {132, 102, 226, 255},
PurpleLight = {192, 179, 239, 255},
PurpleDark = {67, 57, 111, 255},
Pink = {203, 54, 148, 255},
RadarHealth = {53, 154, 71, 255},
RadarArmour = {93, 182, 229, 255},
RadarDamage = {235, 36, 39, 255},
NetPlayer1 = {194, 80, 80, 255},
NetPlayer2 = {156, 110, 175, 255},
NetPlayer3 = {255, 123, 196, 255},
NetPlayer4 = {247, 159, 123, 255},
NetPlayer5 = {178, 144, 132, 255},
NetPlayer6 = {141, 206, 167, 255},
NetPlayer7 = {113, 169, 175, 255},
NetPlayer8 = {211, 209, 231, 255},
NetPlayer9 = {144, 127, 153, 255},
NetPlayer10 = {106, 196, 191, 255},
NetPlayer11 = {214, 196, 153, 255},
NetPlayer12 = {234, 142, 80, 255},
NetPlayer13 = {152, 203, 234, 255},
NetPlayer14 = {178, 98, 135, 255},
NetPlayer15 = {144, 142, 122, 255},
NetPlayer16 = {166, 117, 94, 255},
NetPlayer17 = {175, 168, 168, 255},
NetPlayer18 = {232, 142, 155, 255},
NetPlayer19 = {187, 214, 91, 255},
NetPlayer20 = {12, 123, 86, 255},
NetPlayer21 = {123, 196, 255, 255},
NetPlayer22 = {171, 60, 230, 255},
NetPlayer23 = {206, 169, 13, 255},
NetPlayer24 = {71, 99, 173, 255},
NetPlayer25 = {42, 166, 185, 255},
NetPlayer26 = {186, 157, 125, 255},
NetPlayer27 = {201, 225, 255, 255},
NetPlayer28 = {240, 240, 150, 255},
NetPlayer29 = {237, 140, 161, 255},
NetPlayer30 = {249, 138, 138, 255},
NetPlayer31 = {252, 239, 166, 255},
NetPlayer32 = {240, 240, 240, 255},
SimpleBlipDefault = {159, 201, 166, 255},
MenuBlue = {140, 140, 140, 255},
MenuGreyLight = {140, 140, 140, 255},
MenuBlueExtraDark = {40, 40, 40, 255},
MenuYellow = {240, 160, 0, 255},
MenuYellowDark = {240, 160, 0, 255},
MenuGreen = {240, 160, 0, 255},
MenuGrey = {140, 140, 140, 255},
MenuGreyDark = {60, 60, 60, 255},
MenuHighlight = {30, 30, 30, 255},
MenuStandard = {140, 140, 140, 255},
MenuDimmed = {75, 75, 75, 255},
MenuExtraDimmed = {50, 50, 50, 255},
BriefTitle = {95, 95, 95, 255},
MidGreyMp = {100, 100, 100, 255},
NetPlayer1Dark = {93, 39, 39, 255},
NetPlayer2Dark = {77, 55, 89, 255},
NetPlayer3Dark = {124, 62, 99, 255},
NetPlayer4Dark = {120, 80, 80, 255},
NetPlayer5Dark = {87, 72, 66, 255},
NetPlayer6Dark = {74, 103, 83, 255},
NetPlayer7Dark = {60, 85, 88, 255},
NetPlayer8Dark = {105, 105, 64, 255},
NetPlayer9Dark = {72, 63, 76, 255},
NetPlayer10Dark = {53, 98, 95, 255},
NetPlayer11Dark = {107, 98, 76, 255},
NetPlayer12Dark = {117, 71, 40, 255},
NetPlayer13Dark = {76, 101, 117, 255},
NetPlayer14Dark = {65, 35, 47, 255},
NetPlayer15Dark = {72, 71, 61, 255},
NetPlayer16Dark = {85, 58, 47, 255},
NetPlayer17Dark = {87, 84, 84, 255},
NetPlayer18Dark = {116, 71, 77, 255},
NetPlayer19Dark = {93, 107, 45, 255},
NetPlayer20Dark = {6, 61, 43, 255},
NetPlayer21Dark = {61, 98, 127, 255},
NetPlayer22Dark = {85, 30, 115, 255},
NetPlayer23Dark = {103, 84, 6, 255},
NetPlayer24Dark = {35, 49, 86, 255},
NetPlayer25Dark = {21, 83, 92, 255},
NetPlayer26Dark = {93, 98, 62, 255},
NetPlayer27Dark = {100, 112, 127, 255},
NetPlayer28Dark = {120, 120, 75, 255},
NetPlayer29Dark = {152, 76, 93, 255},
NetPlayer30Dark = {124, 69, 69, 255},
NetPlayer31Dark = {10, 43, 50, 255},
NetPlayer32Dark = {95, 95, 10, 255},
Bronze = {180, 130, 97, 255},
Silver = {150, 153, 161, 255},
Gold = {214, 181, 99, 255},
Platinum = {166, 221, 190, 255},
Gang1 = {29, 100, 153, 255},
Gang2 = {214, 116, 15, 255},
Gang3 = {135, 125, 142, 255},
Gang4 = {229, 119, 185, 255},
SameCrew = {252, 239, 166, 255},
Freemode = {45, 110, 185, 255},
PauseBg = {0, 0, 0, 255},
Friendly = {93, 182, 229, 255},
Enemy = {194, 80, 80, 255},
Location = {240, 200, 80, 255},
Pickup = {114, 204, 114, 255},
PauseSingleplayer = {114, 204, 114, 255},
FreemodeDark = {22, 55, 92, 255},
InactiveMission = {154, 154, 154, 255},
Damage = {194, 80, 80, 255},
PinkLight = {252, 115, 201, 255},
PmMitemHighlight = {252, 177, 49, 255},
ScriptVariable = {0, 0, 0, 255},
Yoga = {109, 247, 204, 255},
Tennis = {241, 101, 34, 255},
Golf = {214, 189, 97, 255},
ShootingRange = {112, 25, 25, 255},
FlightSchool = {47, 92, 115, 255},
NorthBlue = {93, 182, 229, 255},
SocialClub = {234, 153, 28, 255},
PlatformBlue = {11, 55, 123, 255},
PlatformGreen = {146, 200, 62, 255},
PlatformGrey = {234, 153, 28, 255},
FacebookBlue = {66, 89, 148, 255},
IngameBg = {0, 0, 0, 255},
Darts = {114, 204, 114, 255},
Waypoint = {164, 76, 242, 255},
Michael = {101, 180, 212, 255},
Franklin = {171, 237, 171, 255},
Trevor = {255, 163, 87, 255},
GolfP1 = {240, 240, 240, 255},
GolfP2 = {235, 239, 30, 255},
GolfP3 = {255, 149, 14, 255},
GolfP4 = {246, 60, 161, 255},
WaypointLight = {210, 166, 249, 255},
WaypointDark = {82, 38, 121, 255},
PanelLight = {0, 0, 0, 255},
MichaelDark = {72, 103, 116, 255},
FranklinDark = {85, 118, 85, 255},
TrevorDark = {127, 81, 43, 255},
ObjectiveRoute = {240, 200, 80, 255},
PausemapTint = {0, 0, 0, 255},
PauseDeselect = {100, 100, 100, 255},
PmWeaponsPurchasable = {45, 110, 185, 255},
PmWeaponsLocked = {240, 240, 240, 255},
ScreenBg = {0, 0, 0, 255},
Chop = {224, 50, 50, 255},
PausemapTintHalf = {0, 0, 0, 255},
NorthBlueOfficial = {0, 71, 133, 255},
ScriptVariable2 = {0, 0, 0, 255},
H = {33, 118, 37, 255},
HDark = {37, 102, 40, 255},
T = {234, 153, 28, 255},
TDark = {225, 140, 8, 255},
HShard = {20, 40, 0, 255},
ControllerMichael = {48, 255, 255, 255},
ControllerFranklin = {48, 255, 0, 255},
ControllerTrevor = {176, 80, 0, 255},
ControllerChop = {127, 0, 0, 255},
VideoEditorVideo = {53, 166, 224, 255},
VideoEditorAudio = {162, 79, 157, 255},
VideoEditorText = {104, 192, 141, 255},
HbBlue = {29, 100, 153, 255},
HbYellow = {234, 153, 28, 255},
VideoEditorScore = {240, 160, 1, 255},
VideoEditorAudioFadeout = {59, 34, 57, 255},
VideoEditorTextFadeout = {41, 68, 53, 255},
VideoEditorScoreFadeout = {82, 58, 10, 255},
HeistBackground = {37, 102, 40, 255},
VideoEditorAmbient = {240, 200, 80, 255},
VideoEditorAmbientFadeout = {80, 70, 34, 255},
Gb = {255, 133, 85, 255},
G = {255, 194, 170, 255},
B = {255, 133, 85, 255},
LowFlow = {240, 200, 80, 255},
LowFlowDark = {126, 107, 41, 255},
G1 = {247, 159, 123, 255},
G2 = {226, 134, 187, 255},
G3 = {239, 238, 151, 255},
G4 = {113, 169, 175, 255},
G5 = {160, 140, 193, 255},
G6 = {141, 206, 167, 255},
G7 = {181, 214, 234, 255},
G8 = {178, 144, 132, 255},
G9 = {0, 132, 114, 255},
G10 = {216, 85, 117, 255},
G11 = {30, 100, 152, 255},
G12 = {43, 181, 117, 255},
G13 = {233, 141, 79, 255},
G14 = {137, 210, 215, 255},
G15 = {134, 125, 141, 255},
Adversary = {109, 34, 33, 255},
DegenRed = {255, 0, 0, 255},
DegenYellow = {255, 255, 0, 255},
DegenGreen = {0, 255, 0, 255},
DegenCyan = {0, 255, 255, 255},
DegenBlue = {0, 0, 255, 255},
DegenMagenta = {255, 0, 255, 255},
Stunt1 = {38, 136, 234, 255},
Stunt2 = {224, 50, 50, 255}
}
@@ -1,73 +0,0 @@
---
--- @author Dylan MALANDAIN, Kalyptus
--- @version 1.0.0
--- created at [24/05/2021 10:02]
---
RageUI.PanelColour = {
HairCut = {{22, 19, 19}, -- 0
{30, 28, 25}, -- 1
{76, 56, 45}, -- 2
{69, 34, 24}, -- 3
{123, 59, 31}, -- 4
{149, 68, 35}, -- 5
{165, 87, 50}, -- 6
{175, 111, 72}, -- 7
{159, 105, 68}, -- 8
{198, 152, 108}, -- 9
{213, 170, 115}, -- 10
{223, 187, 132}, -- 11
{202, 164, 110}, -- 12
{238, 204, 130}, -- 13
{229, 190, 126}, -- 14
{250, 225, 167}, -- 15
{187, 140, 96}, -- 16
{163, 92, 60}, -- 17
{144, 52, 37}, -- 18
{134, 21, 17}, -- 19
{164, 24, 18}, -- 20
{195, 33, 24}, -- 21
{221, 69, 34}, -- 22
{229, 71, 30}, -- 23
{208, 97, 56}, -- 24
{113, 79, 38}, -- 25
{132, 107, 95}, -- 26
{185, 164, 150}, -- 27
{218, 196, 180}, -- 28
{247, 230, 217}, -- 29
{102, 72, 93}, -- 30
{162, 105, 138}, -- 31
{171, 174, 11}, -- 32
{239, 61, 200}, -- 33
{255, 69, 152}, -- 34
{255, 178, 191}, -- 35
{12, 168, 146}, -- 36
{8, 146, 165}, -- 37
{11, 82, 134}, -- 38
{118, 190, 117}, -- 39
{52, 156, 104}, -- 40
{22, 86, 85}, -- 41
{152, 177, 40}, -- 42
{127, 162, 23}, -- 43
{241, 200, 98}, -- 44
{238, 178, 16}, -- 45
{224, 134, 14}, -- 46
{247, 157, 15}, -- 47
{243, 143, 16}, -- 48
{231, 70, 15}, -- 49
{255, 101, 21}, -- 50
{254, 91, 34}, -- 51
{252, 67, 21}, -- 52
{196, 12, 15}, -- 53
{143, 10, 14}, -- 54
{44, 27, 22}, -- 55
{80, 51, 37}, -- 56
{98, 54, 37}, -- 57
{60, 31, 24}, -- 58
{69, 43, 32}, -- 59
{8, 10, 14}, -- 60
{212, 185, 158}, -- 61
{212, 185, 158}, -- 62
{213, 170, 115} -- 63
}
}
@@ -1,689 +0,0 @@
---
--- @author Dylan MALANDAIN, Kalyptus
--- @version 1.0.0
--- created at [24/05/2021 10:02]
---
local ItemsSettings = {
CheckBox = {
Textures = {"shop_box_blankb", -- 1
"shop_box_tickb", -- 2
"shop_box_blank", -- 3
"shop_box_tick", -- 4
"shop_box_crossb", -- 5
"shop_box_cross" -- 6
},
X = 380,
Y = -6,
Width = 50,
Height = 50
},
Rectangle = {
Y = 0,
Width = 431,
Height = 38
}
}
local function StyleCheckBox(Selected, Checked, Box, BoxSelect, OffSet)
local CurrentMenu = RageUI.CurrentMenu;
if OffSet == nil then
OffSet = 0
end
if Selected then
if Checked then
Graphics.Sprite("commonmenu", ItemsSettings.CheckBox.Textures[Box],
CurrentMenu.X + 380 + CurrentMenu.WidthOffset - OffSet,
CurrentMenu.Y + -6 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 50, 50)
else
Graphics.Sprite("commonmenu", ItemsSettings.CheckBox.Textures[1],
CurrentMenu.X + 380 + CurrentMenu.WidthOffset - OffSet,
CurrentMenu.Y + -6 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 50, 50)
end
else
if Checked then
Graphics.Sprite("commonmenu", ItemsSettings.CheckBox.Textures[BoxSelect],
CurrentMenu.X + 380 + CurrentMenu.WidthOffset - OffSet,
CurrentMenu.Y + -6 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 50, 50)
else
Graphics.Sprite("commonmenu", ItemsSettings.CheckBox.Textures[3],
CurrentMenu.X + 380 + CurrentMenu.WidthOffset - OffSet,
CurrentMenu.Y + -6 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 50, 50)
end
end
end
---@class Items
Items = {}
---AddButton
---
--- Add items button.
---
---@param Label string
---@param Description string
---@param Style table
---@param Actions fun(onSelected:boolean, onActive:boolean)
---@param Submenu any
---@public
---@return void
function Items:AddButton(Label, Description, Style, Actions, Submenu)
if not RageUI.CurrentMenu then
return
end
local CurrentMenu = RageUI.CurrentMenu
local Option = RageUI.Options + 1
if CurrentMenu.Pagination.Minimum <= Option and CurrentMenu.Pagination.Maximum >= Option then
local Active = CurrentMenu.Index == Option
RageUI.ItemsSafeZone(CurrentMenu)
local haveLeftBadge = Style.LeftBadge and Style.LeftBadge ~= RageUI.BadgeStyle.None
local haveRightBadge = (Style.RightBadge and Style.RightBadge ~= RageUI.BadgeStyle.None)
local LeftBadgeOffset = haveLeftBadge and 27 or 0
local RightBadgeOffset = haveRightBadge and 32 or 0
if Style.Color and Style.Color.BackgroundColor then
Graphics.Rectangle(CurrentMenu.X, CurrentMenu.Y + 0 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset,
431 + CurrentMenu.WidthOffset, 38, Style.Color.BackgroundColor[1], Style.Color.BackgroundColor[2],
Style.Color.BackgroundColor[3], Style.Color.BackgroundColor[4])
end
if Active then
if Style.Color and Style.Color.HightLightColor then
Graphics.Rectangle(CurrentMenu.X, CurrentMenu.Y + 0 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset,
431 + CurrentMenu.WidthOffset, 38, Style.Color.HightLightColor[1], Style.Color.HightLightColor[2],
Style.Color.HightLightColor[3], Style.Color.HightLightColor[4])
else
Graphics.Sprite("commonmenu", "gradient_nav", CurrentMenu.X,
CurrentMenu.Y + 0 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 431 + CurrentMenu.WidthOffset,
38)
end
end
if not (Style.IsDisabled) then
if haveLeftBadge then
if (Style.LeftBadge ~= nil) then
local LeftBadge = Style.LeftBadge(Active)
Graphics.Sprite(LeftBadge.BadgeDictionary or "commonmenu", LeftBadge.BadgeTexture or "",
CurrentMenu.X, CurrentMenu.Y + -2 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 40, 40, 0,
LeftBadge.BadgeColour and LeftBadge.BadgeColour.R or 255,
LeftBadge.BadgeColour and LeftBadge.BadgeColour.G or 255,
LeftBadge.BadgeColour and LeftBadge.BadgeColour.B or 255,
LeftBadge.BadgeColour and LeftBadge.BadgeColour.A or 255)
end
end
if haveRightBadge then
if (Style.RightBadge ~= nil) then
local RightBadge = Style.RightBadge(Active)
Graphics.Sprite(RightBadge.BadgeDictionary or "commonmenu", RightBadge.BadgeTexture or "",
CurrentMenu.X + 385 + CurrentMenu.WidthOffset,
CurrentMenu.Y + -2 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 40, 40, 0,
RightBadge.BadgeColour and RightBadge.BadgeColour.R or 255,
RightBadge.BadgeColour and RightBadge.BadgeColour.G or 255,
RightBadge.BadgeColour and RightBadge.BadgeColour.B or 255,
RightBadge.BadgeColour and RightBadge.BadgeColour.A or 255)
end
end
if Style.RightLabel then
Graphics.Text(Style.RightLabel, CurrentMenu.X + 420 - RightBadgeOffset + CurrentMenu.WidthOffset,
CurrentMenu.Y + 4 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.35,
Active and 0 or Style.RightLabelColor[1], Active and 0 or Style.RightLabelColor[2],
Active and 0 or Style.RightLabelColor[3], 255, 2)
end
Graphics.Text(Label, CurrentMenu.X + 8 + LeftBadgeOffset,
CurrentMenu.Y + 3 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.33, Active and 0 or 245,
Active and 0 or 245, Active and 0 or 245, 255)
else
local RightBadge = RageUI.BadgeStyle.Lock(Active)
Graphics.Sprite(RightBadge.BadgeDictionary or "commonmenu", RightBadge.BadgeTexture or "",
CurrentMenu.X + 385 + CurrentMenu.WidthOffset,
CurrentMenu.Y + -2 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 40, 40, 0,
RightBadge.BadgeColour and RightBadge.BadgeColour.R or 255,
RightBadge.BadgeColour and RightBadge.BadgeColour.G or 255,
RightBadge.BadgeColour and RightBadge.BadgeColour.B or 255,
RightBadge.BadgeColour and RightBadge.BadgeColour.A or 255)
Graphics.Text(Label, CurrentMenu.X + 8 + LeftBadgeOffset,
CurrentMenu.Y + 3 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.33, 163, 159, 148, 255)
end
RageUI.ItemOffset = RageUI.ItemOffset + 38
if (Active) then
RageUI.ItemsDescription(Description);
if not (Style.IsDisabled) then
local Selected = (CurrentMenu.Controls.Select.Active)
if Actions ~= nil then
Actions(Selected, Active)
end
if Selected then
Audio.PlaySound(RageUI.Settings.Audio.Select.audioName, RageUI.Settings.Audio.Select.audioRef)
if Submenu and Submenu() then
RageUI.NextMenu = Submenu
end
end
end
end
end
RageUI.Options = RageUI.Options + 1
end
function Items:AddExtraSubtitle(Label, RightLabel, R, G, B, A)
if not RageUI.CurrentMenu then
return
end
local CurrentMenu = RageUI.CurrentMenu
RageUI.ItemsSafeZone(CurrentMenu)
if CurrentMenu.Subtitle ~= "" then
Graphics.Rectangle(CurrentMenu.X, CurrentMenu.Y + RageUI.ItemOffset,
RageUI.Settings.Items.Subtitle.Background.Width + CurrentMenu.WidthOffset,
RageUI.Settings.Items.Subtitle.Background.Height + CurrentMenu.SubtitleHeight, R, G, B, A)
Graphics.Text(Label, CurrentMenu.X + RageUI.Settings.Items.Subtitle.Text.X,
CurrentMenu.Y + RageUI.Settings.Items.Subtitle.Text.Y + RageUI.ItemOffset, 0,
RageUI.Settings.Items.Subtitle.Text.Scale, 245, 245, 245, 255, nil, false, false,
RageUI.Settings.Items.Subtitle.Background.Width + CurrentMenu.WidthOffset)
if CurrentMenu.Index > CurrentMenu.Options or CurrentMenu.Index < 0 then
CurrentMenu.Index = 1
end
if (CurrentMenu ~= nil) then
if (CurrentMenu.Index > CurrentMenu.Pagination.Total) then
local offset = CurrentMenu.Index - CurrentMenu.Pagination.Total
CurrentMenu.Pagination.Minimum = 1 + offset
CurrentMenu.Pagination.Maximum = CurrentMenu.Pagination.Total + offset
else
CurrentMenu.Pagination.Minimum = 1
CurrentMenu.Pagination.Maximum = CurrentMenu.Pagination.Total
end
end
Graphics.Text(RightLabel, CurrentMenu.X + RageUI.Settings.Items.Subtitle.PreText.X + CurrentMenu.WidthOffset,
CurrentMenu.Y + RageUI.Settings.Items.Subtitle.PreText.Y + RageUI.ItemOffset, 0,
RageUI.Settings.Items.Subtitle.PreText.Scale, 245, 245, 245, 255, 2)
RageUI.ItemOffset = RageUI.ItemOffset + RageUI.Settings.Items.Subtitle.Background.Height
end
end
function Items:AddEmpty()
if not RageUI.CurrentMenu then
return
end
local CurrentMenu = RageUI.CurrentMenu
RageUI.ItemsSafeZone(CurrentMenu)
if CurrentMenu.Subtitle ~= "" then
if CurrentMenu.Index > CurrentMenu.Options or CurrentMenu.Index < 0 then
CurrentMenu.Index = 1
end
if (CurrentMenu ~= nil) then
if (CurrentMenu.Index > CurrentMenu.Pagination.Total) then
local offset = CurrentMenu.Index - CurrentMenu.Pagination.Total
CurrentMenu.Pagination.Minimum = 1 + offset
CurrentMenu.Pagination.Maximum = CurrentMenu.Pagination.Total + offset
else
CurrentMenu.Pagination.Minimum = 1
CurrentMenu.Pagination.Maximum = CurrentMenu.Pagination.Total
end
end
end
end
function Items:AddWinnerLoser(Label, Winnings, Mugshot, Description, Style, Actions, Submenu)
if not RageUI.CurrentMenu then
return
end
local CurrentMenu = RageUI.CurrentMenu
local Option = RageUI.Options + 1
if CurrentMenu.Pagination.Minimum <= Option and CurrentMenu.Pagination.Maximum >= Option then
local Active = CurrentMenu.Index == Option
RageUI.ItemsSafeZone(CurrentMenu)
local haveLeftBadge = Style.LeftBadge and Style.LeftBadge ~= RageUI.BadgeStyle.None
local haveRightBadge = (Style.RightBadge and Style.RightBadge ~= RageUI.BadgeStyle.None)
local LeftBadgeOffset = haveLeftBadge and 27 or 0
local RightBadgeOffset = haveRightBadge and 32 or 0
if Style.Color and Style.Color.BackgroundColor then
Graphics.Rectangle(CurrentMenu.X, CurrentMenu.Y + 0 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset,
431 + CurrentMenu.WidthOffset, 38, Style.Color.BackgroundColor[1], Style.Color.BackgroundColor[2],
Style.Color.BackgroundColor[3], Style.Color.BackgroundColor[4])
end
if not (Style.IsDisabled) then
if haveLeftBadge then
if (Style.LeftBadge ~= nil) then
local LeftBadge = Style.LeftBadge(Active)
Graphics.Sprite(LeftBadge.BadgeDictionary or "commonmenu", LeftBadge.BadgeTexture or "",
CurrentMenu.X, CurrentMenu.Y + -2 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 40, 40, 0,
LeftBadge.BadgeColour and LeftBadge.BadgeColour.R or 255,
LeftBadge.BadgeColour and LeftBadge.BadgeColour.G or 255,
LeftBadge.BadgeColour and LeftBadge.BadgeColour.B or 255,
LeftBadge.BadgeColour and LeftBadge.BadgeColour.A or 255)
end
end
if haveRightBadge then
if (Style.RightBadge ~= nil) then
local RightBadge = Style.RightBadge(Active)
Graphics.Sprite(RightBadge.BadgeDictionary or "commonmenu", RightBadge.BadgeTexture or "",
CurrentMenu.X + 385 + CurrentMenu.WidthOffset,
CurrentMenu.Y + -2 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 40, 40, 0,
RightBadge.BadgeColour and RightBadge.BadgeColour.R or 255,
RightBadge.BadgeColour and RightBadge.BadgeColour.G or 255,
RightBadge.BadgeColour and RightBadge.BadgeColour.B or 255,
RightBadge.BadgeColour and RightBadge.BadgeColour.A or 255)
end
end
if Style.RightLabel then
Graphics.Text(Style.RightLabel, CurrentMenu.X + 420 - RightBadgeOffset + CurrentMenu.WidthOffset,
CurrentMenu.Y + 4 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.35,
Style.RightLabelColor[1], Style.RightLabelColor[2], Style.RightLabelColor[3],
Style.RightLabelColor[4], 2)
end
Graphics.Text(Label, CurrentMenu.X + 8 + LeftBadgeOffset + 35,
CurrentMenu.Y + 3 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + 2, 0, 0.33,
Style.TextLabelColor[1], Style.TextLabelColor[2], Style.TextLabelColor[3], Style.TextLabelColor[4])
if Mugshot then
Graphics.Sprite(Mugshot, Mugshot, CurrentMenu.X,
CurrentMenu.Y + -2 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + 2, 37, 37, 0, 255, 255, 255,
255)
end
else
local RightBadge = RageUI.BadgeStyle.Lock(Active)
Graphics.Sprite(RightBadge.BadgeDictionary or "commonmenu", RightBadge.BadgeTexture or "",
CurrentMenu.X + 385 + CurrentMenu.WidthOffset,
CurrentMenu.Y + -2 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 40, 40, 0,
RightBadge.BadgeColour and RightBadge.BadgeColour.R or 255,
RightBadge.BadgeColour and RightBadge.BadgeColour.G or 255,
RightBadge.BadgeColour and RightBadge.BadgeColour.B or 255,
RightBadge.BadgeColour and RightBadge.BadgeColour.A or 255)
Graphics.Text(Label, CurrentMenu.X + 8 + LeftBadgeOffset,
CurrentMenu.Y + 3 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.33, 163, 159, 148, 255)
end
RageUI.ItemOffset = RageUI.ItemOffset + 38
if (Active) then
RageUI.ItemsDescription(Description);
if not (Style.IsDisabled) then
local Selected = (CurrentMenu.Controls.Select.Active)
if Actions ~= nil then
Actions(Selected, Active)
end
if Selected then
Audio.PlaySound(RageUI.Settings.Audio.Select.audioName, RageUI.Settings.Audio.Select.audioRef)
if Submenu and Submenu() then
RageUI.NextMenu = Submenu
end
end
end
end
end
RageUI.Options = RageUI.Options + 1
end
---CheckBox
---@param Label string
---@param Description string
---@param Checked boolean
---@param Style table
---@param Actions fun(onSelected:boolean, IsChecked:boolean)
function Items:CheckBox(Label, Description, Checked, Style, Actions)
local CurrentMenu = RageUI.CurrentMenu;
local Option = RageUI.Options + 1
if CurrentMenu.Pagination.Minimum <= Option and CurrentMenu.Pagination.Maximum >= Option then
local Active = CurrentMenu.Index == Option;
local Selected = false;
local LeftBadgeOffset = ((Style.LeftBadge == RageUI.BadgeStyle.None or Style.LeftBadge == nil) and 0 or 27)
local RightBadgeOffset = ((Style.RightBadge == RageUI.BadgeStyle.None or Style.RightBadge == nil) and 0 or 32)
local BoxOffset = 0
RageUI.ItemsSafeZone(CurrentMenu)
if (Active) then
Graphics.Sprite("commonmenu", "gradient_nav", CurrentMenu.X,
CurrentMenu.Y + 0 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 431 + CurrentMenu.WidthOffset, 38)
end
if (Style.IsDisabled == nil) or not (Style.IsDisabled) then
if Active then
Graphics.Text(Label, CurrentMenu.X + 8 + LeftBadgeOffset,
CurrentMenu.Y + 3 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.33, 0, 0, 0, 255)
else
Graphics.Text(Label, CurrentMenu.X + 8 + LeftBadgeOffset,
CurrentMenu.Y + 3 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.33, 245, 245, 245, 255)
end
if Style.LeftBadge ~= nil then
if Style.LeftBadge ~= RageUI.BadgeStyle.None then
local BadgeData = Style.LeftBadge(Active)
Graphics.Sprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "",
CurrentMenu.X, CurrentMenu.Y + -2 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 40, 40, 0,
BadgeData.BadgeColour and BadgeData.BadgeColour.R or 255,
BadgeData.BadgeColour and BadgeData.BadgeColour.G or 255,
BadgeData.BadgeColour and BadgeData.BadgeColour.B or 255,
BadgeData.BadgeColour and BadgeData.BadgeColour.A or 255)
end
end
if Style.RightBadge ~= nil then
if Style.RightBadge ~= RageUI.BadgeStyle.None then
local BadgeData = Style.RightBadge(Active)
Graphics.Sprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "",
CurrentMenu.X + 385 + CurrentMenu.WidthOffset,
CurrentMenu.Y + -2 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 40, 40, 0,
BadgeData.BadgeColour and BadgeData.BadgeColour.R or 255,
BadgeData.BadgeColour and BadgeData.BadgeColour.G or 255,
BadgeData.BadgeColour and BadgeData.BadgeColour.B or 255,
BadgeData.BadgeColour and BadgeData.BadgeColour.A or 255)
end
end
else
local LeftBadge = RageUI.BadgeStyle.Lock
LeftBadgeOffset = ((LeftBadge == RageUI.BadgeStyle.None or LeftBadge == nil) and 0 or 27)
if Active then
Graphics.Text(Label, CurrentMenu.X + 8 + LeftBadgeOffset,
CurrentMenu.Y + 3 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.33, 0, 0, 0, 255)
else
Graphics.Text(Label, CurrentMenu.X + 8 + LeftBadgeOffset,
CurrentMenu.Y + 3 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.33, 163, 159, 148, 255)
end
if LeftBadge ~= RageUI.BadgeStyle.None and LeftBadge ~= nil then
local BadgeData = LeftBadge(Active)
Graphics.Sprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "", CurrentMenu.X,
CurrentMenu.Y + -2 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 40, 40, 0,
BadgeData.BadgeColour.R or 255, BadgeData.BadgeColour.G or 255, BadgeData.BadgeColour.B or 255,
BadgeData.BadgeColour.A or 255)
end
end
if (Active) then
if Style.RightLabel ~= nil and Style.RightLabel ~= "" then
Graphics.Text(Style.RightLabel, CurrentMenu.X + 420 - RightBadgeOffset + CurrentMenu.WidthOffset,
CurrentMenu.Y + 4 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.35, 0, 0, 0, 255, 2)
BoxOffset = MeasureStringWidth(Style.RightLabel, 0, 0.35)
end
else
if Style.RightLabel ~= nil and Style.RightLabel ~= "" then
Graphics.Text(Style.RightLabel, CurrentMenu.X + 420 - RightBadgeOffset + CurrentMenu.WidthOffset,
CurrentMenu.Y + 4 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.35, 245, 245, 245, 255, 2)
BoxOffset = MeasureStringWidth(Style.RightLabel, 0, 0.35)
end
end
BoxOffset = RightBadgeOffset + BoxOffset
if Style.Style ~= nil then
if Style.Style == 1 then
StyleCheckBox(Active, Checked, 2, 4, BoxOffset)
elseif Style.Style == 2 then
StyleCheckBox(Active, Checked, 5, 6, BoxOffset)
else
StyleCheckBox(Active, Checked, 2, 4, BoxOffset)
end
else
StyleCheckBox(Active, Checked, 2, 4, BoxOffset)
end
if (Active) and (CurrentMenu.Controls.Select.Active) then
Selected = true;
Checked = not Checked
Audio.PlaySound(RageUI.Settings.Audio.Select.audioName, RageUI.Settings.Audio.Select.audioRef)
end
if (Active) then
Actions(Selected, Checked)
RageUI.ItemsDescription(Description)
end
RageUI.ItemOffset = RageUI.ItemOffset + 38
end
RageUI.Options = RageUI.Options + 1
end
---AddSeparator
---
--- Add separator
---
---@param Label string
---@public
---@return void
function Items:AddSeparator(Label, Color)
if not RageUI.CurrentMenu then
return
end
if not Color then
Color = {245, 245, 245, 150}
end
local CurrentMenu = RageUI.CurrentMenu
local Option = RageUI.Options + 1
if CurrentMenu.Pagination.Minimum <= Option and CurrentMenu.Pagination.Maximum >= Option then
local Active = CurrentMenu.Index == Option;
if (Label ~= nil) then
Graphics.Text(Label, CurrentMenu.X + 0 +
(CurrentMenu.WidthOffset * 2.5 ~= 0 and CurrentMenu.WidthOffset * 2.5 or 200),
CurrentMenu.Y + 4 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.33, Color[1], Color[2],
Color[3], Color[4], 1)
end
RageUI.ItemOffset = RageUI.ItemOffset + 38
if (Active) then
if (RageUI.LastControl) then
CurrentMenu.Index = Option - 1
if (CurrentMenu.Index < 1) then
CurrentMenu.Index = RageUI.CurrentMenu.Options
end
else
CurrentMenu.Index = Option + 1
end
RageUI.ItemsDescription(nil)
end
end
RageUI.Options = RageUI.Options + 1
end
---AddSeparator
---
--- Add separator
---
---@param Label string
---@public
---@return void
function Items:AddText(Label, yoffset)
if not RageUI.CurrentMenu then
return
end
local CurrentMenu = RageUI.CurrentMenu
local Option = RageUI.Options + 1
if CurrentMenu.Pagination.Minimum <= Option and CurrentMenu.Pagination.Maximum >= Option then
local Active = CurrentMenu.Index == Option;
if (Label ~= nil) then
local extraOffsetY = yoffset and yoffset or 0
Graphics.Text(Label, CurrentMenu.X + 0 +
(CurrentMenu.WidthOffset * 2.5 ~= 0 and CurrentMenu.WidthOffset * 2.5 or 10),
CurrentMenu.Y + 0 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + 7 + extraOffsetY, 0, 0.33, 245,
245, 245, 255, 0, false, false, 410)
end
local lineCount = Graphics.GetLineCount(Label, CurrentMenu.X + 0 +
(CurrentMenu.WidthOffset * 2.5 ~= 0 and CurrentMenu.WidthOffset * 2.5 or 10),
CurrentMenu.Y + 0 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.33, 245, 245, 245, 255, 0, false,
false, 410)
local totalTextHeight = 27 * lineCount
RageUI.ItemOffset = RageUI.ItemOffset + totalTextHeight
if (Active) then
if (RageUI.LastControl) then
CurrentMenu.Index = Option - 1
if (CurrentMenu.Index < 1) then
CurrentMenu.Index = RageUI.CurrentMenu.Options
end
else
CurrentMenu.Index = Option + 1
end
RageUI.ItemsDescription(nil)
end
end
RageUI.Options = RageUI.Options + 1
end
---AddList
---@param Label string
---@param Items table<any, any>
---@param Index number
---@param Style table<any, any>
---@param Description string
---@param Actions fun(Index:number, onSelected:boolean, onListChange:boolean))
---@param Submenu any
function Items:AddList(Label, Items, Index, Description, Style, Actions, Submenu)
if not RageUI.CurrentMenu then
return
end
local CurrentMenu = RageUI.CurrentMenu;
if not CurrentMenu then
return
end
local Option = RageUI.Options + 1
if CurrentMenu.Pagination.Minimum <= Option and CurrentMenu.Pagination.Maximum >= Option then
local Active = CurrentMenu.Index == Option;
local onListChange = false;
RageUI.ItemsSafeZone(CurrentMenu)
local LeftBadgeOffset = ((Style.LeftBadge == RageUI.BadgeStyle.None or Style.LeftBadge == nil) and 0 or 27)
local RightBadgeOffset = ((Style.RightBadge == RageUI.BadgeStyle.None or Style.RightBadge == nil) and 0 or 32)
local RightOffset = 0
local ListText = (type(Items[Index]) == "table") and string.format("← %s →", Items[Index].Name) or
string.format("← %s →", Items[Index]) or "NIL"
if (Active) then
Graphics.Sprite("commonmenu", "gradient_nav", CurrentMenu.X,
CurrentMenu.Y + 0 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 431 + CurrentMenu.WidthOffset, 38)
end
if (not Style.IsDisabled) then
if Active then
if Style.RightLabel ~= nil and Style.RightLabel ~= "" then
Graphics.Text(Style.RightLabel, CurrentMenu.X + 420 - RightBadgeOffset + CurrentMenu.WidthOffset,
CurrentMenu.Y + 4 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.35, 0, 0, 0, 255, 2)
RightOffset = Graphics.MeasureStringWidth(Style.RightLabel, 0, 0.35)
end
else
if Style.RightLabel ~= nil and Style.RightLabel ~= "" then
RightOffset = Graphics.MeasureStringWidth(Style.RightLabel, 0, 0.35)
Graphics.Text(Style.RightLabel, CurrentMenu.X + 420 - RightBadgeOffset + CurrentMenu.WidthOffset,
CurrentMenu.Y + 4 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.35, 245, 245, 245, 255,
2)
end
end
end
RightOffset = RightBadgeOffset * 1.3 + RightOffset
if (not Style.IsDisabled) then
if (Active) then
Graphics.Text(Label, CurrentMenu.X + 8 + LeftBadgeOffset,
CurrentMenu.Y + 3 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.33, 0, 0, 0, 255)
Graphics.Text(ListText, CurrentMenu.X + 403 + 15 + CurrentMenu.WidthOffset - RightOffset,
CurrentMenu.Y + 3 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.35, 0, 0, 0, 255, 2)
else
Graphics.Text(Label, CurrentMenu.X + 8 + LeftBadgeOffset,
CurrentMenu.Y + 3 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.33, 245, 245, 245, 255)
Graphics.Text(ListText, CurrentMenu.X + 403 + 15 + CurrentMenu.WidthOffset - RightOffset,
CurrentMenu.Y + 3 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.35, 245, 245, 245, 255, 2)
end
else
Graphics.Text(Label, CurrentMenu.X + 8 + LeftBadgeOffset,
CurrentMenu.Y + 3 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.33, 163, 159, 148, 255)
Graphics.Text(ListText, CurrentMenu.X + 403 + 15 + CurrentMenu.WidthOffset,
CurrentMenu.Y + 3 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, 0.35, 163, 159, 148, 255, 2)
end
if type(Style) == "table" then
if Style.Enabled == true or Style.Enabled == nil then
if type(Style) == 'table' then
if Style.LeftBadge ~= nil then
if Style.LeftBadge ~= RageUI.BadgeStyle.None then
local BadgeData = Style.LeftBadge(Active)
Graphics.Sprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "",
CurrentMenu.X, CurrentMenu.Y + -2 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 40,
40, 0, BadgeData.BadgeColour and BadgeData.BadgeColour.R or 255,
BadgeData.BadgeColour and BadgeData.BadgeColour.G or 255,
BadgeData.BadgeColour and BadgeData.BadgeColour.B or 255,
BadgeData.BadgeColour and BadgeData.BadgeColour.A or 255)
end
end
if Style.RightBadge ~= nil then
if Style.RightBadge ~= RageUI.BadgeStyle.None then
local BadgeData = Style.RightBadge(Active)
Graphics.Sprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "",
CurrentMenu.X + 385 + CurrentMenu.WidthOffset,
CurrentMenu.Y + -2 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 40, 40, 0,
BadgeData.BadgeColour and BadgeData.BadgeColour.R or 255,
BadgeData.BadgeColour and BadgeData.BadgeColour.G or 255,
BadgeData.BadgeColour and BadgeData.BadgeColour.B or 255,
BadgeData.BadgeColour and BadgeData.BadgeColour.A or 255)
end
end
end
else
local LeftBadge = RageUI.BadgeStyle.Lock
if LeftBadge ~= RageUI.BadgeStyle.None and LeftBadge ~= nil then
local BadgeData = LeftBadge(Active)
Graphics.Sprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "",
CurrentMenu.X, CurrentMenu.Y + -2 + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 40, 40, 0,
BadgeData.BadgeColour.R or 255, BadgeData.BadgeColour.G or 255, BadgeData.BadgeColour.B or 255,
BadgeData.BadgeColour.A or 255)
end
end
else
error("UICheckBox Style is not a `table`")
end
RageUI.ItemOffset = RageUI.ItemOffset + 38
if (Active) then
RageUI.ItemsDescription(Description);
if (not Style.IsDisabled) then
if (CurrentMenu.Controls.Left.Active) and not (CurrentMenu.Controls.Right.Active) then
Index = Index - 1
if Index < 1 then
Index = #Items
end
onListChange = true
Audio.PlaySound(RageUI.Settings.Audio.LeftRight.audioName, RageUI.Settings.Audio.LeftRight.audioRef)
elseif (CurrentMenu.Controls.Right.Active) and not (CurrentMenu.Controls.Left.Active) then
Index = Index + 1
if Index > #Items then
Index = 1
end
onListChange = true
Audio.PlaySound(RageUI.Settings.Audio.LeftRight.audioName, RageUI.Settings.Audio.LeftRight.audioRef)
end
local Selected = (CurrentMenu.Controls.Select.Active)
Actions(Index, Selected, onListChange, Active)
if (Selected) then
Audio.PlaySound(RageUI.Settings.Audio.Select.audioName, RageUI.Settings.Audio.Select.audioRef)
if Submenu ~= nil and type(Submenu) == "table" then
RageUI.NextMenu = Submenu[Index]
end
end
end
end
end
RageUI.Options = RageUI.Options + 1
end
---Heritage
---@param Mum number
---@param Dad number
function Items:Heritage(Mum, Dad)
local CurrentMenu = RageUI.CurrentMenu;
if Mum < 0 or Mum > 21 then
Mum = 0
end
if Dad < 0 or Dad > 23 then
Dad = 0
end
if Mum == 21 then
Mum = "special_female_" .. (tonumber(string.sub(Mum, 2, 2)) - 1)
else
Mum = "female_" .. Mum
end
if Dad >= 21 then
Dad = "special_male_" .. (tonumber(string.sub(Dad, 2, 2)) - 1)
else
Dad = "male_" .. Dad
end
Graphics.Sprite("pause_menu_pages_char_mom_dad", "mumdadbg", CurrentMenu.X,
CurrentMenu.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 431 + (CurrentMenu.WidthOffset / 1), 228)
Graphics.Sprite("char_creator_portraits", Dad, CurrentMenu.X + 195 + (CurrentMenu.WidthOffset / 2),
CurrentMenu.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 228, 228)
Graphics.Sprite("char_creator_portraits", Mum, CurrentMenu.X + 25 + (CurrentMenu.WidthOffset / 2),
CurrentMenu.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 228, 228)
RageUI.ItemOffset = RageUI.ItemOffset + 228
end
@@ -1,225 +0,0 @@
---
--- @author Dylan MALANDAIN, Kalyptus
--- @version 1.0.0
--- created at [24/05/2021 10:02]
---
---@class Panels
Panels = {};
local GridType = {
Default = 1,
Horizontal = 2,
Vertical = 3
}
local GridSprite = {
[GridType.Default] = {
Dictionary = "pause_menu_pages_char_mom_dad",
Texture = "nose_grid"
},
[GridType.Horizontal] = {
Dictionary = "RageUI_",
Texture = "horizontal_grid"
},
[GridType.Vertical] = {
Dictionary = "RageUI_",
Texture = "vertical_grid"
}
}
local Grid = {
Background = {
Dictionary = "commonmenu",
Texture = "gradient_bgd",
Y = 4,
Width = 431,
Height = 275
},
Grid = {
X = 115.5,
Y = 47.5,
Width = 200,
Height = 200
},
Circle = {
Dictionary = "mpinventory",
Texture = "in_world_circle",
X = 115.5,
Y = 47.5,
Width = 20,
Height = 20
},
Text = {
Top = {
X = 215.5,
Y = 15,
Scale = 0.35
},
Bottom = {
X = 215.5,
Y = 250,
Scale = 0.35
},
Left = {
X = 57.75,
Y = 130,
Scale = 0.35
},
Right = {
X = 373.25,
Y = 130,
Scale = 0.35
}
}
}
local function UIGridPanel(Type, StartedX, StartedY, TopText, BottomText, LeftText, RightText, Action, Index)
local CurrentMenu = RageUI.CurrentMenu
if (CurrentMenu.Index == Index) then
local X = Type == GridType.Default and StartedX or Type == GridType.Horizontal and StartedX or Type ==
GridType.Vertical and 0.5
local Y = Type == GridType.Default and StartedY or Type == GridType.Horizontal and 0.5 or Type ==
GridType.Vertical and StartedY
local Hovered = Graphics.IsMouseInBounds(CurrentMenu.X + Grid.Grid.X + CurrentMenu.SafeZoneSize.X + 20,
CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset +
20, Grid.Grid.Width + CurrentMenu.WidthOffset - 40, Grid.Grid.Height - 40)
local Selected = false
local CircleX = CurrentMenu.X + Grid.Grid.X + (CurrentMenu.WidthOffset / 2) + 20
local CircleY = CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + 20
if X < 0.0 or X > 1.0 then
X = 0.0
end
if Y < 0.0 or Y > 1.0 then
Y = 0.0
end
CircleX = CircleX + ((Grid.Grid.Width - 40) * X) - (Grid.Circle.Width / 2)
CircleY = CircleY + ((Grid.Grid.Height - 40) * Y) - (Grid.Circle.Height / 2)
Graphics.Sprite("commonmenu", "gradient_bgd", CurrentMenu.X,
CurrentMenu.Y + Grid.Background.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset,
Grid.Background.Width + CurrentMenu.WidthOffset, Grid.Background.Height)
Graphics.Sprite(GridSprite[Type].Dictionary, GridSprite[Type].Texture,
CurrentMenu.X + Grid.Grid.X + (CurrentMenu.WidthOffset / 2),
CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Grid.Grid.Width,
Grid.Grid.Height)
Graphics.Sprite(Grid.Circle.Dictionary, Grid.Circle.Texture, CircleX, CircleY, Grid.Circle.Width,
Grid.Circle.Height)
if (Type == GridType.Default) then
Graphics.Text(TopText or "", CurrentMenu.X + Grid.Text.Top.X + (CurrentMenu.WidthOffset / 2),
CurrentMenu.Y + Grid.Text.Top.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0,
Grid.Text.Top.Scale, 245, 245, 245, 255, 1)
Graphics.Text(BottomText or "", CurrentMenu.X + Grid.Text.Bottom.X + (CurrentMenu.WidthOffset / 2),
CurrentMenu.Y + Grid.Text.Bottom.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0,
Grid.Text.Bottom.Scale, 245, 245, 245, 255, 1)
Graphics.Text(LeftText or "", CurrentMenu.X + Grid.Text.Left.X + (CurrentMenu.WidthOffset / 2),
CurrentMenu.Y + Grid.Text.Left.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0,
Grid.Text.Left.Scale, 245, 245, 245, 255, 1)
Graphics.Text(RightText or "", CurrentMenu.X + Grid.Text.Right.X + (CurrentMenu.WidthOffset / 2),
CurrentMenu.Y + Grid.Text.Right.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0,
Grid.Text.Right.Scale, 245, 245, 245, 255, 1)
end
if (Type == GridType.Vertical) then
Graphics.Text(TopText or "", CurrentMenu.X + Grid.Text.Top.X + (CurrentMenu.WidthOffset / 2),
CurrentMenu.Y + Grid.Text.Top.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0,
Grid.Text.Top.Scale, 245, 245, 245, 255, 1)
Graphics.Text(BottomText or "", CurrentMenu.X + Grid.Text.Bottom.X + (CurrentMenu.WidthOffset / 2),
CurrentMenu.Y + Grid.Text.Bottom.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0,
Grid.Text.Bottom.Scale, 245, 245, 245, 255, 1)
end
if (Type == GridType.Horizontal) then
Graphics.Text(LeftText or "", CurrentMenu.X + Grid.Text.Left.X + (CurrentMenu.WidthOffset / 2),
CurrentMenu.Y + Grid.Text.Left.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0,
Grid.Text.Left.Scale, 245, 245, 245, 255, 1)
Graphics.Text(RightText or "", CurrentMenu.X + Grid.Text.Right.X + (CurrentMenu.WidthOffset / 2),
CurrentMenu.Y + Grid.Text.Right.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0,
Grid.Text.Right.Scale, 245, 245, 245, 255, 1)
end
if Hovered then
if IsDisabledControlPressed(0, 24) then
Selected = true
CircleX = math.round(GetControlNormal(2, 239) * 1920) - CurrentMenu.SafeZoneSize.X -
(Grid.Circle.Width / 2)
CircleY = math.round(GetControlNormal(2, 240) * 1080) - CurrentMenu.SafeZoneSize.Y -
(Grid.Circle.Height / 2)
if CircleX > (CurrentMenu.X + Grid.Grid.X + (CurrentMenu.WidthOffset / 2) + 20 + Grid.Grid.Width - 40) then
CircleX = CurrentMenu.X + Grid.Grid.X + (CurrentMenu.WidthOffset / 2) + 20 + Grid.Grid.Width - 40
elseif CircleX < (CurrentMenu.X + Grid.Grid.X + 20 - (Grid.Circle.Width / 2)) then
CircleX = CurrentMenu.X + Grid.Grid.X + 20 - (Grid.Circle.Width / 2)
end
if CircleY >
(CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + 20 +
Grid.Grid.Height - 40) then
CircleY = CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + 20 +
Grid.Grid.Height - 40
elseif CircleY <
(CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + 20 -
(Grid.Circle.Height / 2)) then
CircleY = CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + 20 -
(Grid.Circle.Height / 2)
end
X = math.round((CircleX - (CurrentMenu.X + Grid.Grid.X + (CurrentMenu.WidthOffset / 2) + 20) +
(Grid.Circle.Width / 2)) / (Grid.Grid.Width - 40), 2)
Y = math.round((CircleY -
(CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + 20) +
(Grid.Circle.Height / 2)) / (Grid.Grid.Height - 40), 2)
if (X ~= StartedX) and (Y ~= StartedY) then
Action(X, Y, (X * 2 - 1), (Y * 2 - 1))
-- Action.onPositionChange(X, Y, (X * 2 - 1), (Y * 2 - 1))
end
StartedX = X;
StartedY = Y;
if X > 1.0 then
X = 1.0
end
if Y > 1.0 then
Y = 1.0
end
end
end
RageUI.ItemOffset = RageUI.ItemOffset + Grid.Background.Height + Grid.Background.Y
if Hovered and Selected then
Audio.PlaySound(RageUI.Settings.Audio.Slider.audioName, RageUI.Settings.Audio.Slider.audioRef, true)
-- if (Action.onSelected ~= nil) then
-- Action.onSelected(X, Y, (X * 2 - 1), (Y * 2 - 1));
-- end
end
end
end
---Grid
---@param StartedX number
---@param StartedY number
---@param TopText string
---@param BottomText string
---@param LeftText string
---@param RightText string
---@param Action fun(X:number, Y:number, CharacterX:number, CharacterY:number)
---@param Index number
---@public
---@return void
function Panels:Grid(StartedX, StartedY, TopText, BottomText, LeftText, RightText, Action, Index)
UIGridPanel(GridType.Default, StartedX, StartedY, TopText, BottomText, LeftText, RightText, Action, Index)
end
---GridHorizontal
---@param StartedX number
---@param LeftText string
---@param RightText string
---@param Action fun(X:number, Y:number, CharacterX:number, CharacterY:number)
---@param Index number
---@public
---@return void
function Panels:GridHorizontal(StartedX, LeftText, RightText, Action, Index)
UIGridPanel(GridType.Horizontal, StartedX, nil, nil, nil, LeftText, RightText, Action, Index)
end
---GridVertical
---@param StartedY number
---@param TopText string
---@param BottomText string
---@param Action fun(X:number, Y:number, CharacterX:number, CharacterY:number)
---@param Index number
---@public
---@return void
function Panels:GridVertical(StartedY, TopText, BottomText, Action, Index)
UIGridPanel(GridType.Vertical, nil, StartedY, TopText, BottomText, nil, nil, Action, Index)
end
@@ -1,389 +0,0 @@
Config = {
-- Locale
Locale = "ro", -- en
-- Map
ActiveMaps = {5}, -- list of enabled map types (see below for types)
ActiveMapAutoDetect = true, -- automatically detect and enable map types based on running resources
-- 1: UncleJust Casino / DlcIplLoader
-- 2: Gabz Casino
-- 3: NoPixel Casino
-- 4: k4mb1 casino
-- 5: GTA:O Interior (rcore_casino_interior)
-- 6: Underground Casino PALETO
-- 7: K4MB1 old enterable casino (casinointerior & casinoexterior)
-- 8: patoche_casino
-- 9: Clawles: Casino Los Santos
-- 10: Molo Casino
-- 11: Jurassic Jackpot Casino
-- 12: Energy Atlantis Casino
-- 13: HG Designs: The Town Resort & Casino
-- 14: TStudio: Pearls Casino
-- make sure rcore_casino_interior is disabled when using another map type, and don't forget to remove rcore_casino_interior from dependencies in fxmanifest.lua as well
--[[
Gabz Casino
• copy "\extra\gabz-casino\gabz_vw_vwdlc_int_01.ytyp" to "cfx-gabz-casino\stream\ytyp\"
NoPixel Casino
• delete \stream\Main\ydr\vw_prop_vw_luckywheel_01a.ydr in NoPixel Casino
• copy "\extra\nopixel\gbz_vw_vwdlc_int_01.ytyp" inside stream\Main\ytyp in NoPixel Casino
• copy "\extra\nopixel\vw_vwint01_betting_desks.ydr" inside stream\Main\ydr in NoPixel Casino
K4MB1 old enterable casino
• copy "brown_casinoextended.ytyp" to "casinointerior\stream\base k4mb1-old-casino"
]]
-- Xmas trees
-- • configurable in xmas\xmas_cl.lua and xmas\xmas_sv.lua
Xmas = false,
-- Target
UseTarget = true, -- whether to use target zones or not
TargetZoneType = 3, -- 1: q_target, 2: bt_target, 3: qb-target, 4: ox_target
-- Chips, Inventory Settings
UseVirtualChips = false, -- false: use inventory for chips, true: use virtual chips which are saved in the casino_players table
InventoryResource = Inventory.QS, -- name of the inventory resource, set to Inventory.Framework if you want to use frameworks' inventory functions
--[[
choose InventoryResource = Inventory.AutoChoose for auto choose, or choose between:
Inventory.Framework for built in inventory functions
Inventory.OX for ox_inventory
Inventory.LJ for lj_inventory
Inventory.MF for mf_inventory
Inventory.PS for ps_inventory
Inventory.QS for qs-inventory
Inventory.CodeM for codem-inventory
]]
MoneyInventoryItemName = nil, -- name of the money inventory item, set to nil, if you don't want to use inventory item as the money
UseOnlyMoney = false, -- set to true if you want to play with money only, without casino chips
ExchangeRate = 1, -- set value of one casino chip, for example, set to 5, if 1 chip equals to 5$ (minimum: 0.1, rounded by 0.1, 0.5 or 1)
ChipsInventoryItem = "casino_chips",
UseBankMoney = false, -- cash or bank?
DailyWidthdrawLimit = 0, -- how much money can player withdraw from the cashier per day (24 hours), set to 0 to disable
-- Behave in casino?
RestrictControls = true, -- don't jump, don't attack inside the Casino
-- Bar
BarShowSnacks = true, -- disable, if you want to see only drinks in the bartender menu
-- Inside Track
IT_STARTING_SOON_TIME = 0, -- *starting soon screen* duration; def: 0
IT_MAIN_EVENT_MIN_PLAYERS = 1, -- min. players needed for the main event to start; def: 2
IT_MAIN_EVENT_ENABLED = true, -- when false, the main event will be disabled, big screen will show only purple idle screen; def: true
IT_MAIN_EVENT_BETTING_TIME = 60 * 5, -- time for players to place bets for main event, shows horses on screen; def: 60 * 5 (5 minutes)
IT_MAIN_EVENT_RACE_DURATION = 33, -- length of the main event race; def: 33
IT_MAIN_EVENT_HORSE_ODDS = {2, 5, 6, 15, 16, 30}, -- limit max horse odds for local game (1 to 30), def: {1, 5, 6, 15, 16, 30} (2 horses of odds from 1 to 5, 2 horses of odds from 6 to 15, 2 horses of odds from 16 to 30)
IT_MAIN_EVENT_RACE_MAX_BET = 10000, -- max. bet for the main event race
IT_MAIN_EVENT_RACE_MIN_BET = 10, -- min. bet for the main event race
IT_LOCAL_RACE_DURATION = 30, -- length of the local race (orange screen) def: 30
IT_LOCAL_RACE_HORSE_ODDS = {2, 5, 6, 15, 16, 30}, -- limit max horse odds for local game (1 to 30), def: {1, 5, 6, 15, 16, 30} (2 horses of odds from 1 to 5, 2 horses of odds from 6 to 15, 2 horses of odds from 16 to 30)
IT_LOCAL_RACE_MAX_BET = 10000, -- max. bet for the local race
IT_LOCAL_RACE_MIN_BET = 10, -- min. bet for the local race
IT_LOCAL_RACE_COOLDOWN = 0, -- how long until they can play another local game, in seconds, (def: 60 * 10)
IT_MAIN_EVENT_COOLDOWN = 0, -- how long until they can play another main event game, in seconds, (def: 60 * 10)
-- Win chance of horses are based on their odds, however, if you want to make the game more unlucky, lower the win chance:
IT_LOCAL_RACE_WIN_CHANCE = 50, -- win chance (from 0 to 100), def: 100, 100 means that it's not *unlucky* at all
IT_MAIN_EVENT_RACE_WIN_CHANCE = 50, -- win chance (from 0 to 100), def: 100, 100 means that it's not *unlucky* at all
-- Roulette
ROULETTE_JUNIOR_ENABLED = true, -- set if you want to have Roulette Junior (blue) table for newbies (low stakes)
ROULETTE_JUNIOR_COORDS = {1004.790, 57.295, 68.432},
-- Slots
SLOTS_1ST_PERSON = true, -- switch to 1st person when spinning slots
-- Lucky Wheel
LUCKY_WHEEL_ENABLED = true, -- set to false, if you don't want to use Lucky Wheel
LUCKY_WHEEL_FREE_DRINKS_FOR = (60 * 60 * 24), -- when someone spins "Free Drinks" at the Lucky Wheel, how long they get free drinks for. def: 24 hours (60 * 60 * 24)
LUCKY_WHEEL_COOLDOWN = (60 * 60 * 24), -- how long players have to wait for their next spin. def: 24 hours (60 * 60 * 24)
LUCKY_WHEEL_VEHICLE_ALTERNATIVE = "Money9", -- if player spins Vehicle, but there is no avaiable podium vehicle at the moment, spin to this item. Def: "Money50K" (the second biggest price)
LUCKY_WHEEL_CAR_WINABLE = true, -- true: players can win the car, false: car is just a decoration
LUCKY_WHEEL_PAY_TO_SPIN = 0, -- set price for the spin (chips), set 0 for free spins, or set to existing inventory name, for example LUCKY_WHEEL_PAY_TO_SPIN = "wheel_ticket" to pay with an inventory item
LUCKY_WHEEL_CAR_ONE_WINNER = true, -- set to true, if only one player can win the podium vehicle. the vehicle will disapear from the podium after someone wins it.
-- Blackjack
BLACKJACK_JUNIOR_ENABLED = true, -- set if you want to have Blackjack Junior (blue) table for newbies (low stakes)
BLACKJACK_JUNIOR_COORDS = {1004.183, 53.192, 68.432},
-- Poker
POKER_JUNIOR_ENABLED = true, -- set if you want to have Poker Junior (blue) table for newbies (low stakes)
POKER_JUNIOR_COORDS = {998.439, 61.031, 68.432},
-- Cashier
CASHIER_DAILY_BONUS = 1000, -- daily visitor bonus that players can request at the Cashier, set to 0 if you don't want any daily bonuses. def: 1000
CASHIER_VIP_PRICE = 50000, -- price of the VIP casino membership, def: 50000
CASHIER_VIP_DURATION = (60 * 60 * 24) * 7, -- VIP for player resets after this time, def: 7 days
CASHIER_SHOW_SOCIETY_BALANCE = false, -- whether to show avaiable society balance in cashier UI
-- Casino Settings (don't change unless you're told to :)
CAS_DOUBLECHECK_COORDS = vector3(984.528, 52.299, 70.238),
CASINO_ENABLE_AMBIENT_PEDS = true, -- standing peds
CASINO_ENABLE_AMBIENT_PEDS_SLOTS = false, -- peds playing slots
CASINO_ENABLE_AMBIENT_PEDS_POKER = false, -- peds playing poker
CASINO_ENABLE_AMBIENT_PEDS_BLACKJACK = false, -- peds playing blackjack
CASINO_ENABLE_AMBIENT_PEDS_ROULETTE = false, -- peds playing roulette
CASINO_AMBIENT_PEDS_DENSITY = 2, -- 1: a few, 2: medium, 3: all peds
CASINO_SAVE_TIMER = 30000, -- database update interval
DISABLE_IDLE_CAM = true, -- disable idle cam animations (looking around)
CASINO_ANIM_TIMEOUT = 750, -- pause between animations (in milliseconds), decrease this number to make interaction animations faster, be careful, smaller number can cause desync in animations if players have high ping. def: 750
PRICES_CURRENCY = "$", -- $, €, £, ¥, ₽, ₩, ₹ ...
RADAR_ZOOMLEVEL = 0.0, -- customize the radar zoom, from 0.0 (closest) to higher
ENTER_CASINO_FADEOUT = 2, -- whether to fadeout the screen when entering (loading) casino or not (0: disabled, 1: only first enter, 2: every time)
CASHIER_MULTITASK = true, -- multiple players can use the Cashier at the same time
LOAD_SCENE = true, -- load the whole casino playing area after entering (recommended)
CLEAR_OBJECTS_ON_ENTER = false, -- destroy all locally created peds/objects after entering the casino, to save up space, set to false
--
JOB_PODIUMCAR_OWNERSHIP_CHECK = true,
JOB_PODIUMCAR_OWNERSHIP_DELETE_ORIGINAL = true,
JOB_PODIUMCAR_DELETE_ORIGINAL_FUNCTION_CLIENT = function(vehicleId, plateNumber) -- client function that the car dealer executes after delivering the car
SetEntityAsMissionEntity(vehicleId, true, true)
DeleteVehicle(vehicleId)
end,
CASINO_BLIPS_SHORT_RANGE = true, -- true: blips are visible only to players near casino, false: blips are always visible
CASINO_BLIP_ID = 679, -- 679 is the diamond icon [https://docs.fivem.net/docs/game-references/blips/]
--
AMBIENT_SOUNDS = true, -- enable casino background interior sound
Debug = false,
-- if there are some errors this will help to indicate from what it is comming from. Such as CreateThread/Event/Etc.
ErrorDebug = false,
-- Plate Settings
PlateLetters = 3,
PlateNumbers = 3,
PlateUseSpace = true,
-- Drinking
DrunkSystem = 1,
-- 1 = auto-detect / built-in, resets drunk level after leaving casino
-- 2 = esx_status
-- 3 = evidence:client:SetStatus
-- 4 = rcore_drunk -- https://store.rcore.cz/package/5161129
-- Other Resources
EnableGuidebookIntegration = false, -- https://store.rcore.cz/package/5041989
-- Society
-- ⚠️ In order to make society work, please follow these instructions: https://documentation.rcore.cz/paid-resources/rcore_casino/society
EnableSociety = false, -- whether to enable society account
SocietyAutoInstall = true, -- auto install society account if it doesn't exist
SocietyName = "society_casino",
SocietyLimitFromBalance = 10000, -- if society account has less money than this, it will start paying out reduced money, (SocietyLimitPayoutPercentage)
SocietyLimitPayoutPercentage = 35, -- example: if SocietyLimitPayoutPercentage is 35%, and SocietyLimitFromBalance is 10000 => 1000 payout at the Cashier will be limited to 350, if the society bank account balance is less than 10 000
-- when enabled, all casino payments (Cashier, Bar, Lucky Wheel) go through the society account, players don't get paid if there's not enough money in the
SocietyFramework = Society.AutoChoose,
--[[
set Society.AutoChoose for auto choose, or choose between:
Society.QbBanking
Society.QbBossMenu
Society.QbManagement
Society.RenewedBanking
Society.OkokBanking
Society.Management710
Society.FdBanking
Society.EsxAddonAccount
Society.SnipeBanking
]]
-- visit /server/main/society.lua for custom society frameworks
-- Notifications
NotifySystem = 4,
--[[
1: default GTAV style notifications
2: okokNotify
3: esx_notify
4: qb_notify,
5: ox_notify
6: origen help notify
]]
-- Job
BossGrade = 2, -- the max grade (boss) for the casino job
BossName = "boss",
JobName = "casino", -- id of the job (not a title, I guess, don't change it)
-- Teleport In & Out
LeaveThroughTeleport = false, -- if enabled, people won't be able to leave the casino building, instead, they get prompted once they come near the entrance (useful if your map is too far from Los Santos)
EnterPosition = vector3(2469.584473, -280.015869, -58.267620),
EnterCheckpointPosition = vector3(923.470093, 47.249229, 79.8), -- custom marker for entering the casino, for example, in front of your custom Casino building in a different city, etc.
LeavePosition = vector3(919.127380, 51.120274, 80.898659), -- where the player appears *after leaving*, for example, in front of your custom Casino building in a different city, etc.
LeaveArea = vector3(2468.992188, -287.276459, -58.267506), -- where the player is prompted to leave the casino, for example, in front of the main doors,
-- Ui
UIFontName = nil, -- font for the UI, set to nil, if you don't want to use a custom font, set to a font name (with ""), if you wanna register and use a font that's inside your /stream/fonts folder
ShowHowToPlayUI = 1, -- How to play/Info about the game UI (Menu that shows after pressing 'E' to play. (0: disabled, 1: only once, 2: every time after pressing 'E')
ShowChipsHud = false, -- whether to use the built-in chips hud on the top-right corner
UseNUIHUD = false, -- whether to use chips hud on NUI (you can customize it in 'html/index.html')
-- Database
MongoDB = false, -- if you decide to use MongoDB instead of MYSQL, don't forget to edit your MongoDB queries in: server/main/cache.lua, server/main/casino.lua and server/utils/plateGenerator.lua
-- Mysql Resources
Ghmattimysql = false, -- if you're using "ghmattimysql" instead of mysql-async
-- Tweaks
VoiceTweak = false, -- keep it false, if you don't have amy voice problems inside casino
VehicleRGBTweak = false, -- save podium vehicle colors as RGB array (color1, color2), instead of numbers
-- Enable rcore_stats? (https://store.rcore.cz/package/6273968)
Rcore_Stats = GetResourceState("rcore_stats") ~= "missing",
ForceNormalKeyLabels = true, -- whether to replace blip icon codes (~INPUT_TALK~) with text ([E], [F], [G], etc.)
TargetUsePeds = false, -- use peds instead of zones for target zones, set to false, if you want to use zones
}
Framework = {
-- ⚠️ For Standalone version docs visit https://documentation.rcore.cz/paid-resources/rcore_casino/standalone-version
-- ⚠️ For Custom framework version docs visit https://documentation.rcore.cz/paid-resources/rcore_casino/custom-framework
Active = 5, -- Choose 1 for ESX, 2 for QBCore, 3 for Standalone, 4 for Custom, 5 for auto detect
-- Please follow the installation tutorial: --
-- https://documentation.rcore.cz/paid-resources/rcore_casino
-- esx resource name + shared object name
ES_EXTENDED_RESOURCE_NAME = "es_extended",
ESX_SHARED_OBJECT = "esx:getSharedObject",
-- esx extra settings
BUILTIN_HUD_CHIPS = false,
BUILTIN_HUD_CHIPS_ICON = "casinochip.png",
-- qbcore resource name + shared object name
QB_CORE_RESOURCE_NAME = "qb-core",
QBCORE_SHARED_OBJECT = "QBCore:GetObject",
-- standalone settings
STANDALONE_INITIAL_CHIPS = 100000 -- chips that everyone gets after first enter
}
if Framework.Active == 2 then
Config.PlateLetters = 4
Config.PlateNumbers = 4
Config.PlateUseSpace = false
end
Events = {
QB_PLAYER_LOADED = "QBCore:Client:OnPlayerLoaded",
QB_PLAYER_JOB_UPDATE = "QBCore:Client:OnJobUpdate",
QB_BOSS_MENU = "qb-bossmenu:client:OpenMenu",
-- use "qb-bossmenu:client:OpenMenu" for qb-management and "qb-bossmenu:client:openMenu" for qb-bossmenu
ES_PLAYER_LOADED = "esx:playerLoaded",
ES_PLAYER_JOB_UPDATE = "esx:setJob",
ES_BOSS_MENU = "esx_society:openBossMenu"
}
GameplayKeys = {
TableGamesMaxBet = 44, -- Choose between: (Tab = 204, E = 46, Q = 44, D = 134, Page Down = 207)
TableGamesGrabCards = 207,
RouletteHistoryKey = 204
}
AdminGroup = {
["god"] = true,
["admin"] = true,
["mod"] = true,
["moderator"] = true
}
-- Enable / Disable individual games/activities
GameStates = {{
activity = "slots",
title = "Slot Machines",
enabled = true
}, {
activity = "luckywheel",
title = "Lucky Wheel",
enabled = true
}, {
activity = "insidetrack",
title = "Inside Track",
enabled = true
}, {
activity = "drinkingbar",
title = "Drinking Bar",
enabled = true
}, {
activity = "roulette",
title = "Roulette",
enabled = true
}, {
activity = "poker",
title = "Poker",
enabled = true
}, {
activity = "blackjack",
title = "Blackjack",
enabled = true
}, {
activity = "cashier",
title = "Cashier",
enabled = true
}, {
activity = "seating",
title = "Seating",
enabled = true
}, {
activity = "cameras",
title = "Cameras",
enabled = true
}, {
activity = "casinoteleporter",
title = "Casino Teleporter (In)",
enabled = true
}, {
activity = "casinoentrance",
title = "Casino Entrance",
enabled = true
}}
-- opening hours
-- examples:
-- [1] = {0, 1, 2, 3, 4, 5, 6} -- From 0:00 til 6 AM
-- [1] = {-1} -- Open all day
Config.OpeningHours = {
[1] = {-1}, -- Sunday
[2] = {-1}, -- Monday
[3] = {-1}, -- Tuesday
[4] = {-1}, -- Wednesday
[5] = {-1}, -- Thursday
[6] = {-1}, -- Friday
[7] = {-1} -- Saturday
}
Config.ServerTimezoneOffsetHours = 0 -- Adjusts the server time based on the timezone difference
-- customize the blip function here
-- used blip icon ids:
-- Inside Track: 684, Lucky Wheel: 681, Cashier: 683, Table Games: 680, VIP Area / Exterior Icon: 679,
-- [https://docs.fivem.net/docs/game-references/blips/]
function SetCasinoBlip(coords, blipIcon, blipName, exterior)
local blip = -1
if type(coords) == "vector3" or type(coords) == "vector2" then
blip = AddBlipForCoord(coords.x, coords.y, coords.z)
elseif type(coords) == "number" and DoesEntityExist(coords) then
blip = AddBlipForEntity(coords)
end
--------------
SetBlipSprite(blip, blipIcon)
SetBlipDisplay(blip, 4)
SetBlipScale(blip, 0.6)
SetBlipColour(blip, 0)
SetBlipAsShortRange(blip, exterior and Config.CASINO_BLIPS_SHORT_RANGE or false)
--------------
BeginTextCommandSetBlipName("STRING")
AddTextComponentString(blipName)
EndTextCommandSetBlipName(blip)
if not exterior then
table.insert(CasinoBlips, blip)
end
return blip
end
function RemoveMissionBlip(name)
if MissionBlips[name] then
RemoveBlip(MissionBlips[name])
MissionBlips[name] = nil
end
end
@@ -1,6 +0,0 @@
ServerConfig = {
Discord = false, -- whether to enable Discord notifications (check config_server.lua)
DiscordInterval = 60000 * 15, -- 15 mins
HookUrl = "https://discord.com/api/webhooks/???!",
LogTransactions = false, -- log all transactions to transactions.log file, also print in server console
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1,147 +0,0 @@
fx_version 'adamant'
games { 'gta5' }
dependencies {
'/server:4752',
'/onesync',
'/gameBuild:2060',
'rcore_casino_assets',
-- 'rcore_casino_interior'
}
version '1.9.1'
client_scripts {
'@ox_lib/init.lua', -- for ox_notify
-- Rage UI
'client/ui/RageUI.lua',
'client/ui/Menu.lua',
'client/ui/MenuController.lua',
'client/ui/components/*.lua',
'client/ui/elements/*.lua',
'client/ui/items/*.lua',
"const.lua",
"config.lua",
"loader.lua",
"locales/*.lua",
"reporter.lua",
"client/framework/*.lua",
"coords.lua",
"client/main/utils.lua",
"client/main/target.lua",
"client/main/casino.lua",
"client/main/stats.lua",
"client/interior/announcer.lua",
"client/interior/cashier.lua",
"client/interior/seat.lua",
"client/games/slots.lua",
"client/interior/pricespinner.lua",
"client/games/insidetrack.lua",
"client/games/luckywheel.lua",
"client/interior/drinkingbar.lua",
"client/interior/peds.lua",
"client/main/sceneped.lua",
"client/ui/TimerBar.lua",
"client/main/mugshot.lua",
"client/main/casinocontrol.lua",
"client/games/roulette.lua",
"client/games/poker.lua",
"client/games/blackjack.lua",
"client/interior/clothing.lua",
"client/interior/office.lua",
"client/interior/doorsystem.lua",
'client/ui/MenuHandler.lua',
"client/utils/*.lua",
"client/job/*.lua",
"client/games/missions.lua",
"xmas/xmas_cl.lua",
}
server_scripts {
"@mysql-async/lib/MySQL.lua",
"const.lua",
"config.lua",
"loader.lua",
"locales/*.lua",
"config_server.lua",
"reporter.lua",
"server/framework/*.lua",
"server/games/slots.lua",
"server/games/insidetrack.lua",
"server/main/society.lua",
"server/main/inventory.lua",
"server/main/casino.lua",
"server/main/stats.lua",
"server/main/cache.lua",
"server/games/jobs.lua",
"server/games/luckywheel.lua",
"server/main/sceneped.lua",
"server/interior/drinkingbar.lua",
"server/games/roulette.lua",
"server/games/poker.lua",
"server/games/blackjack.lua",
"server/main/casinocontrol.lua",
"server/main/log.lua",
"server/utils/*.lua",
"server/games/missions.lua",
"xmas/xmas_sv.lua",
}
shared_scripts {
"shared/*.lua",
}
escrow_ignore {
"coords.lua",
"config.lua",
"translation.lua",
"config_server.lua",
"const.lua",
"client/main/casino.lua",
"client/main/utils.lua",
"server/utils/*.lua",
"server/main/casino.lua",
"server/main/stats.lua",
"server/main/society.lua",
"server/main/inventory.lua",
"shared/objectLoader.lua",
"shared/utils.lua",
"client/job/bossmenu.lua",
"stream/**/*.ytd",
"stream/**/*.ytf",
"client/interior/cashier.lua",
"client/interior/doorsystem.lua",
"server/main/cache.lua",
"server/utils/*.lua",
"client/framework/*.lua",
"server/framework/*.lua",
"xmas/xmas_cl.lua",
"xmas/xmas_sv.lua",
'client/ui/**/*.lua',
'locales/**/*.lua',
"client/main/target.lua",
}
ui_page 'client/html/index.html'
files {
'client/html/index.html',
'client/html/keys/*',
'client/html/css/*',
'client/html/scripts/*',
'client/interior/peddata.txt',
'client/interior/peddata_gabz.txt',
'client/interior/peddata_molo.txt',
'client/interior/peddata_k4mb1.txt',
'client/interior/peddata_gtao.txt',
'client/interior/peddata_oldk4mb1.txt',
'client/interior/peddata_cawles.txt',
'client/interior/peddata_atlantis.txt',
'client/interior/peddata_town.txt',
'client/interior/peddata_pearls.txt',
}
lua54 "yes"
dependency '/assetpacks'
@@ -1,677 +0,0 @@
Translation["en"] = {
PRESS_TO_OPEN_BOSSMENU = "Press ~INPUT_CONTEXT~ to open boss menu.",
PRESS_TO_GIFT_LUCKYWHEEL_VEH = "Press ~INPUT_CONTEXT~ to gift this vehicle to the Lucky Wheel Casino game.",
BAR_MENU_TITLE = "Bar Menu",
BAR_MENU_DESC = "Order a drink from the bar",
BAR_MENU_DESC2 = "Order a little snack from the bar",
BAR_MENU_NO_MONEY = "You don't have enough money (%s) for this item.",
BAR_SHAKE_NOTIFY = "Use ~INPUT_CREATOR_ACCEPT~ to shake the bottle",
BAR_USE_TO_SPRAY = "Use ~INPUT_SCRIPT_PAD_UP~ ~INPUT_SCRIPT_PAD_DOWN~ ~INPUT_SCRIPT_PAD_LEFT~ ~INPUT_SCRIPT_PAD_RIGHT~ to spray around",
BAR_ASK_SHOT = "Press ~INPUT_TALK~ to ask for one shot. Press ~INPUT_CELLPHONE_CANCEL~ to leave",
BAR_BARTENDER_BUSY = "This bartender is being busy with another player",
BAR_CHAIR_USED = "This chair is being used by another player",
BAR_PRESS_TO_ORDER = "Press ~INPUT_TALK~ to order a drink",
BAR_PRESS_TO_SIT_DOWN = "Press ~INPUT_TALK~ to sit down",
BAR_SIT_FUNCTIONS = "Press ~INPUT_TALK~ to use your casino snacks\nPress ~INPUT_CELLPHONE_CANCEL~ to leave your chair",
BAR_SIT_NOSNACKS = "You don't have any snacks. Buy some from one of the bartenders. Press ~INPUT_CELLPHONE_CANCEL~ to leave your chair.",
UI_PRESS_TO_PLAY = "Press ~INPUT_TALK~ to play",
ROULETTE_WELCOME_PART1 = "The objective if Roulette is to predict which number and/or color the ball will land on. This can be done by placing a single bet on a color, individual number, or by placing bets that cover a range of numbers, or whether the number will be an even/odd number.\n",
ROULETTE_WELCOME_PART2 = "A maximum of 10 bets can be placed at a time on the table.\n\nThis table uses the American style layout, which includes double zero.\n",
UI_CHAIR_USED = "This chair is being used by another player",
ROULETTE_RULES_PART1 = "Inside Bets\n\nStraight-up: A bet on an individual number.\nThis pays 35 to 1.\n\nSplit: A two-number bet that's placed on the line connecting two numbers. This pays 17 to 1.\n\nTrio: A three-number bet that includes zero, double zero, or both. This pays 11 to 1.\n\nCorner: A four-number bet that's placed at the corner of four numbers. This pays 8 to 1.",
ROULETTE_RULES_PART2 = "Street: A three-number bet that's placed at the end of a row of numbers. This pays 11 to 1.\n\nLine: A six-number bet that's placed at the junction of two street bets. This pays 5 to 1.\n\nFive-Number: A five-number bet covering 0, 00, 1, 2, and 3. This pays 6 to 1.",
ROULETTE_RULES_PART3 = "Outside Bets\n\nRed: An eighteen-number bet that covers all of the red numbers. This pays 1 to 1.\n\nBlack: An eighteen-number bet that covers all of the black numbers. This pays 1 to 1.\n\nEven: An eighteen-number bet that covers all of the even numbers. This pays 1 to 1.\n\nOdd: An eighteen-number bet that covers all of the odd numbers. This pays 1 to 1.",
ROULETTE_RULES_PART4 = "Halves: An eighteen-number bet that covers the 1st half (1-18) or the 2nd half (19-36). This pays 1 to 1.\n\nColumn: A twelve-number bet that covers all of the numbers in the corresponding column. This pays 2 to 1.\n\nDozen: A twelve-number bet that covers 1-12, 13-24, or 25-36. This pays 2 to 1.",
ROULETTE_RULES_BET_LIMITS = "Bet Limits",
ROULETTE_RULES_INSIDE_BETS = "Inside Bets",
ROULETTE_RULES_MINIMUM = "Minimum",
ROULETTE_RULES_CHIPS = "Chips",
ROULETTE_NUMBERS_MAXIMUM = "Maximum",
ROULETTE_RULES_OUTSIDE_BETS = "Outside Bets",
ROULETTE_RULES_TITLE = "Rules",
ROULETTE_HISTORY = "History",
ROULETTE_HISTORY_IS_EMPTY = "History is empty",
ROULETTE_BTN_CLOSE_RULES = "Close Rules",
ROULETTE_BTN_PLACE_BET = "Place Bet",
ROULETTE_BTN_REMOVE_THIS_BET = "Remove This Bet",
ROULETTE_BTN_MIN_BET = "Min Bet",
ROULETTE_BTN_MAX_BET = "Max Bet",
ROULETTE_BTN_ADJUST_BET = "Adjust Bet",
ROULETTE_TIMERBAR_ACTUAL_BET = "ACTUAL BET",
ROULETTE_TIMERBAR_BET = "BET",
ROULETTE_TIMERBAR_BETS_REMAINING = "BETS REMAINING",
ROULETTE_TIMERBAR_TIME = "TIME",
TABLE_CANT_AFFORD_PLAYING = "You need at least %s chips to be able to play at this table.",
SLOTS_CANT_AFFORD_PLAYING = "You need at least %s chips to be able to play %s.",
BTN_CAMERA = "Camera",
BTN_RULES = "Rules",
BTN_HISTORY = "History",
BTN_PREV_PAGE = "Previous Page",
BTN_NEXT_PAGE = "Next Page",
BTN_QUIT = "Quit",
WINNERS = "Winners",
NO_WINNERS = "Without Winners",
LOSERS = "Losers",
POKER_WELCOME_PART1 = "The aim of Three Card Poker is to make the best poker hand possible with three cards, comparing your hand against the Dealer's hand.\n\nBets can be placed on the Ante, Pair Plus, or both. Play and Ante bets pay out 1 to 1 if your hand beats the Dealer's hand. A Straight or higher is needed to receive the Ante Bonus.\n",
POKER_WELCOME_PART2 = "For Pair Plus, you are betting on your own hand only, and must have a Pair or better to receive a payout.\n",
POKER_ANTE_BET = "ANTE BET",
POKER_BET_DEFAULT = "BET",
POKER_PAIR_PLUS_BET = "PAIR PLUS BET",
POKER_PLAY_BET = "PLAY BET",
POKER_CONFIRM_ANTE = "Place Ante Bet",
POKER_SKIP_ANTE = "Decline Ante Bet",
POKER_PLAY_WAGER = "PLAY WAGER",
POKER_GRAB_CARDS = "Grab Cards",
BTN_FOLD = "Fold",
BTN_FOLD_PLAY = "Play",
POKER_CONFIRM_PAIRPLUS = "Place Pair Plus Bet",
POKER_SKIP_PAIRPLUS = "Decline Pair Plus Bet",
UI_WAITING_FOR_EVERYONE = "PLAYERS DONE",
POKER_RULES_PART1 = "The Pack\n\nA single standard 52-card pack is used.\nThis is shuffled at the start of every hand.\n",
POKER_RULES_PART2 = "Dealer Hand\n\nThe Dealer must have a Queen high or better to play. If the Dealer does not play, Ante wagers are paid 1 to 1 and Play wagers are returned.\n",
POKER_RULES_PART3 = "Player Hand\n\nPlayers can choose to bet on the Ante, Pair Plus, or both. After being dealt their cards, players that have bet the Ante must place an equal Play bet to compare their hand with the Dealer.",
POKER_RULES_PART3_2 = "Play and Ante bets pay out 1 to 1 if the player's hand beats the Dealer. The player needs a Straight or better to receive the Ante Bonus. For Pair Plus, the player must have a Pair or better to receive a payout. This is paid independently of what hand the Dealer has.\n",
POKER_RULES_PART4 = "Pair Plus Payouts\n\nStraight Flush: 40 to 1\nThree of a Kind: 30 to 1\nStraight: 6 to 1\nFlush: 4 to 1\nPair: 1 to 1\n",
POKER_RULES_PART5 = "Ante Bonus Payouts\n\nStraight Flush: 5 to 1\nThree of a Kind: 4 to 1\nStraight: 1 to 1\n",
POKER_RULES_ANTE_AND_PLAY = "Ante and Play",
POKER_RULES_PAIR_PLUS = "Pair Plus",
POKER_RESULTS_YOU_HAVE = "You have",
POKER_RESULTS_DEALER_DOESNT_QUALIFY = "The Dealer doesn't have Queen High or better and doesn't play.",
POKER_RESULTS_DEALER_HAS = "The Dealer has",
CASINO_RESULTS_YOU_WIN_X_COINS = "You win",
CASINO_RESULTS_ITS_DRAW = "Draw!",
CASINO_RESULTS_YOU_FOLDED = "You folded your cards.",
CASINO_RESULTS_YOU_DIDNT_BET_ANTE_PLAY = "You didn't bet on Ante & Play.",
CASINO_RESULTS_YOU_GOT_PAIRPLUS_BONUS = "You won the Pair Plus bet.",
CASINO_RESULTS_YOU_LOSE = "You lose",
CASINO_NOT_IN_ROUND = "Please wait, you will be able to bet the next round.",
POKER_STEP_INFO_1 = "Place an Ante bet to receive a hand that can be played against the Dealer.",
POKER_STEP_INFO_2 = "Pair Plus is a side bet. This will win if your hand has a Pair or higher.",
POKER_STEP_INFO_3 = "Place a Play bet equal to your Ante to compare your hand against the Dealer. Folding will forfeit your Ante bet.",
BLACKJACK_WELCOME_PART1 = "The aim of Blackjack is to beat the Dealer's hand without going over 21. This game uses four standard 52-card decks, which are shuffled at the start of every hand. Insurance is not offered if the Dealer's face up card is an ace.",
BLACKJACK_WELCOME_PART2 = "You can split your hand once if the first two cards have the same value. Drawing seven cards without going bust will automatically win.\n\nThe Dealer will stand on soft 17.\n",
BLACKJACK_BAR_MY_HAND = "MY HAND",
BLACKJACK_BAR_DEALERS_HAND = "DEALER'S HAND",
BLACKJACK_BAR_TOTAL_BETTINGS = "BETTINGS",
BLACKJACK_RULES_PART1 = "The Pack\n\nThis game uses four standard 52-card decks, which are shuffled at the start of every hand.\n",
BLACKJACK_RULES_PART2 = "Seven-Card Charlie\n\nA player will automatically win if they manage to draw seven cards without going bust.\n",
BLACKJACK_RULES_PART3 = "Double Down\n\nAfter a player has been dealt their two initial cards, they can double their bet in return for one additional card. This is also avaiable on both hands after splitting.\n",
BLACKJACK_RULES_PART4 = "Split\n\nYou can split your hand once if the first two cards have the same value. The same bet amount must be bet for the split hand.\n",
BLACKJACK_RULES_PART5 = "Card Values\n\nAce is worth 1 ot 11 points. Face cards are all worth 10 points and 2 to 10 are worth their pip value.\n",
BLACKJACK_RULES_PART6 = "Payout\n\nBlackjack pays 3 to 2 of the bet value. Other winning bets pay even money.\n",
BLACKJACK_RULES_PART7 = "Dealer Hand\n\nThe Dealer will continue taking cards until they hit at least soft 17 or go bust. If the Dealer and player both have Blackjack, this will result in a push.\n",
BLACKJACK_RULES_PART8 = "Soft Hand\n\nThe combination of an ace with a card other than a ten-card is know as a 'soft hand' because the player can count the ace as a 1 or 11. A soft hand cannot go bust by taking another card.\n",
BLACKJACK_YOU_HAVE_LEFT_HAND = "You have %s in your left hand",
BLACKJACK_YOU_HAVE_RIGHT_HAND = " and %s in your right hand",
BLACKJACK_DEALER_HAS_X = "The Dealer has %s",
BLACKJACK_DEALER_HAS_GONE_BUST = "The Dealer has gone bust",
BLACKJACK_UI_SPLIT = "Split",
BLACKJACK_UI_DOUBLEDOWN = "Double Down",
BLACKJACK_UI_STAND = "Stand",
BLACKJACK_UI_HIT = "Hit",
LUCKYWHEEL_COOLDOWN = "Sorry, but you have to wait before your next spin. Come back in: %s",
LUCKYWHEEL_RANDOMUNLOCKED = "You've got '%s' (%sx)",
TABLE_GAMES_VIP_RESTRICTION = "Only VIP members can play High Limit table games. Buy VIP membership at the Cashier.",
BUYING_ITEMS_VIP_RESTRICTION = "Only VIP members can buy this item. Buy VIP membership at the Cashier.",
DRUNK_MESSAGE = "You're too drunk that you don't even know where you are.",
SLOTS_PRESS_TO_PLAY = "Press ~INPUT_TALK~ to play %s.",
SLOTS_MACHINE_USED = "This slot machine is being used by another player.",
SLOTS_WELCOME = "Match three symbols or one to two Specials on the payline to receive the corresponding prize.\n\nThe payouts displayed on the front of the machine are based on the minimum bet.\n",
SLOTS_BTN_BET_ONE = "Bet One",
SLOTS_BTN_BET_MAX = "Bet Max",
SLOTS_BTN_SPIN = "Spin",
SLOTS_BTN_LEAVE = "Leave",
IT_PRESS_TO_PLAY = "Press ~INPUT_TALK~ to play Inside Track.",
IT_MACHINE_USED = "This betting machine is being used by another player.",
IT_WELCOME_1 = "The aim of Inside Track is to select the virtual horse that will place 1st in the race. Play alone in the Single Event or choose to bet on the Main Event with other players.\n\nHorse odds affect the chance of the horse placing 1st. Horses with lower odds have a higher chance or performing well on the race. There are no differences in the horse odds between the Single Event and the Main Event.",
IT_WELCOME_2 = "Each race will consist of two Favorites\n(Evens - 5 to 1), two Middle-of-the-Pack (6 to 1 - 15 to 1), and two Outliers (16 to 1 - 30 to 1).\n",
IT_BTN_LEAVE = "Leave",
IT_BTN_TOGGLE_MAIN_CAM = "Toggle Main Event Camera",
IT_BTN_OPEN_CONSOLE = "Open Console",
IT_BTN_CLOSE_CONSOLE = "Close Console",
IT_TIMERBAR_BET = "BET",
IT_TIMERBAR_ODDS = "ODDS",
IT_TIMERBAR_HORSE = "HORSE",
WHEEL_PRESS_BROKEN = "The Lucky Wheel disk holder broke and fell off. Wait for the electrical technician to do their job!",
WHEEL_PRESS_BROKEN_2 = "The Lucky Wheel disk holder broke and fell off. Press ~INPUT_TALK~ to start the repair.",
WHEEL_PRESS_TO_SPIN = "Press ~INPUT_TALK~ to start spinning the wheel, or press ~INPUT_CELLPHONE_CANCEL~ to leave.",
WHEEL_TIMERBAR_STRENGTH = "STRENGTH",
WHEEL_CHOOSE_STRENGTH = "Press ~INPUT_TALK~ to spin at your desired speed",
WHEEL_BEING_USED = "Lucky Wheel is being controlled by another player",
WHEEL_PRESS_TO_PLAY = "Press ~INPUT_TALK~ to spin the Lucky Wheel",
WHEEL_WELCOME = "Spin the Lucky Wheel for free once per day and get a prize.\n\nPrize Odds:\nPodium Vehicle: 1 in 20\nVehicle Discount: 1 in 20\nMystery: 1 in 20\nClothing: 4 in 20\nChips: 4 in 20\nCash: 4 in 20\nRP: 5 in 20",
WHEEL_PRICE_DRINKS_1 = "Free Drinks",
WHEEL_PRICE_DRINKS_2 = "unlocked.",
WHEEL_PRICE_DRINKS_3 = "for 24 hours",
WHEEL_PRICE_CAR_1 = "Special Vehicle",
WHEEL_PRICE_CAR_2 = "unlocked.",
WHEEL_PRICE_CAR_DEFAULTNAME = "a Custom Vehicle",
CASHIER_CAPT = "Cashier Services",
CASHIER_BEING_USED = "The Cashier is being used by another player.",
CASHIER_PRESS_TO_USE = "Press ~INPUT_TALK~ to say Hi.",
CASHIER_DAILY_BONUS_DESC = "Collect your free daily visitor bonus of %s Chips.",
CASHIER_DAILY_BONUS_USED = "You've already got your daily bonus. Come back again tomorrow!",
CASHIER_TRADEIN_CAPT = "Trade In Chips",
CASHIER_TRADEIN_DESC = "Select the number of Chips you'd like to trade in.",
CASHIER_YOU_SURE_TRADE_IN = "Are you sure you want to trade in %s Chips?",
CASHIER_DAILY_BONUS_CAPT = "Visitor Bonus",
CASHIER_VIP_MEMBERSHIP_CAPT = "VIP Membership",
CASHIER_VIP_MEMBERSHIP_DESC = "Buy VIP membership to play high stake table games, use VIP areas and enjoy all the features of the Diamond Casino. VIP membership costs %s %s.",
CASHIER_VIP_PURCHASE_COMPLETE = "You have purchased VIP membership for %s%s. Enjoy!",
CASHIER_VIP_NO_MONEY = "Sorry, but you can't afford the VIP membership.",
CASHIER_ACQUIRE_CAPT = "Acquire Chips",
CASHIER_ACQUIRE_DESC = "Select the number of Chips you'd like to acquire",
CASHIER_YOU_SURE_ACQUIRE = "Are you sure you want to acquire %s Chips for %s?",
BAR_SNACKS_CAPT = "Casino Snacks",
BAR_SNACKS_DESC = "Eat or drink your casino snacks.",
BAR_SNACKS_SEPARATOR_DRINKS = "Drinks",
BAR_SNACKS_SEPARATOR_SNACKS = "Snacks",
BAR_SNACKS_PRICE_FREE = "Free",
BAR_CHAMPAGNE_TIMERBAR_STRENGTH = "STRENGTH",
BAR_DRINKS_UNLOCKED = "Enjoy free drinks avaiable at the drinking bar. The offer will expire in 24 hours.",
SEATING_PRESS_TO_SIT = "Press ~INPUT_TALK~ to sit down",
SEATING_USED = "This seat is being used by another player",
SEATING_CHANGE_POSE_LEAVE = "Press ~INPUT_JUMP~ to change pose. Press ~INPUT_CELLPHONE_CANCEL~ to leave",
RESTRICTED_AREA = "This is a restricted area, only avaiable for VIP members. Purchase VIP at the Cashier to enter VIP areas or play High Stake tables.",
RESTRICTED_AREA_MANAGEMENT = "Only Casino Management can enter this area.",
BOSS_FULLSCREEN_PODIUM_CAPT = "Podium Vehicle",
BOSS_FULLSCREEN_PODIUM_DESC = "replaced.",
BOSS_REPLACE_QUESTION = "Are you sure you want to replace the current Lucky Wheel podium vehicle with this one? The previous one gets destroyed, if exists.",
BOSS_REPLACE_CAPTION = "gift vehicle?",
BOSS_REPLACE_NOJOB = "The vehicle couldn't be repaced, because you're not a casino worker.",
BOSS_REPLACE_OWNERSHIP_ERROR = "This vehicle can't be gifted to the Lucky Wheel competition, because it's not yours. You can only gift vehicles that you own",
MENU_PLAY_OPTION = "Play",
MENU_LEAVE_OPTION = "Leave",
MENU_NAVIGATE_OPTION = "Navigate",
BOSS_COMPUTER_USED = "The computer is being used by another player",
BOSS_PRESS_TO_USE_COMPUTER = "Press ~INPUT_TALK~ to sit down and access the Casino cameras",
BOSS_PRESS_TO_USE_ELEVATOR = "Press ~INPUT_TALK~ to use the elevator",
BOSS_SITTING_OPTIONS = "Press ~INPUT_TALK~ to use the Casino computer. Press ~INPUT_CELLPHONE_CANCEL~ to stand up",
BOSS_CAM_CONTROL_GAMEPAD = "Use ~INPUT_SCRIPT_PAD_LEFT~ ~INPUT_SCRIPT_PAD_RIGHT~ to switch between the cameras. ~INPUT_SCRIPT_PAD_UP~ ~INPUT_SCRIPT_PAD_DOWN~ to zoom in/out. Use ~INPUT_VEH_FLY_UNDERCARRIAGE~ to rotate.",
BOSS_CAM_CONTROL_KEYS = "Use ~INPUT_SCRIPT_PAD_LEFT~ ~INPUT_SCRIPT_PAD_RIGHT~ to switch between the cameras. ~INPUT_SCRIPT_PAD_UP~ ~INPUT_SCRIPT_PAD_DOWN~ to zoom in/out. Use ~INPUT_REPLAY_BACK~ ~INPUT_REPLAY_ADVANCE~ ~INPUT_REPLAY_FFWD~ ~INPUT_REPLAY_REWIND~ to rotate.",
BLIP_IT = "Inside Track",
BLIP_WHEEL = "Lucky Wheel",
BLIP_CASHIER = "Cashier",
BLIP_CASINO = "Casino",
BLIP_VIP = "VIP Area",
BLIP_INFO = "Info",
BLIP_TABLE_GAMES = "Table Games",
BTN_CONTINUE = "Continue",
BTN_CONFIRM = "Confirm",
CAPT_ERROR = "Error",
BTN_CLOSE = "Close",
GAME_STATE_DISABLED = "This activity is temporarily disabled by admin.",
GAME_STATE_MENU_TITLE = "Enable Or Disable Games",
SOCIETY_CASHIER_MONEY_LIMIT = "At the moment, Casino is limited and withdrawing only %d %% of the Chips value.",
SOCIETY_CASHIER_MONEY_LIMIT_2 = "At the moment, you can only get %s%s from %s Chips (%d %%).",
SOCIETY_CASHIER_MONEY_LIMIT_3 = "At the moment, Casino can't afford making payouts.",
CASHIER_VIP_PASS_ERROR = "You can't buy our VIP membership, because you don't own our special item.",
PRESS_TO_LEAVE_CASINO = "Press ~INPUT_TALK~ to leave the Diamond Casino.",
PRESS_TO_ENTER_CASINO = "Press ~INPUT_TALK~ to enter the Diamond Casino.",
CASHIER_TRANSFER_INFO = "%s casino chips equal to %s! ",
CASHIER_EXCHANGE_RATE_DESC = "Exchange Rate: 10 Chips = %s",
WHEEL_PRESS_TO_PLAY_PAID = "Press ~INPUT_TALK~ to spin the Lucky Wheel for %s Chips.",
WHEEL_CANT_AFFORD_PLAYING = "You need %s Chips to be able to spin the Lucky Wheel.",
WHEEL_PRESS_TO_PLAY_PAID_ITEM = "Press ~INPUT_TALK~ to spin the Lucky Wheel for one ticket.",
INSIDETRACK_COOLDOWN = "Sorry, but you have to wait before your next bet. Come back in: %s",
JOB_SLOTS_BROKEN = "This slot machine got fried and needs a new circuit board. Wait for the electrical technician to do the job.",
JOB_SLOTS_BROKEN_2 = "This slot machine got fried and needs a new circuit board. Press ~INPUT_TALK~ to start the job.",
CASHIER_VIP_CONFIRM_CAPT = "Purchase VIP",
CASHIER_VIP_CONFIRM_MSG = "Are you sure you want to purchase VIP for %s?",
CASHIER_VIP_CONFIRM_MSG_2 = " It vill be valid for %s.",
CASHIER_VIP_VALID_FOR = "Your VIP membership is valid for %s.",
CASHIER_TRADEIN_FAILED_CAPT = "Error trading-in chips",
CASHIER_TRADEIN_FAILED_MSG = "Right now, the Casino society doesn't have enough funds to complete your transaction. Try to withdraw lower amount, or come back later.",
CASHIER_SOCIETY_BALANCE = "Society Funds: %s",
CASHIER_FULLSCREEN_PURCHASE_VIP = "VIP",
CASHIER_FULLSCREEN_PURCHASE_VIP_2 = "PURCHASED.",
BTN_YES = "Yes",
BTN_NO = "No",
FUSE_BOX = "Fuse Box",
DIAMOND_WALL_BROKE = "The digital wall lost signal. Wait for electrical technician to do their job!",
DIAMOND_WALL_BROKE_2 = "The digital wall lost signal. Locate the fuse box to start the repair!",
DIAMOND_WALL_BROKE_4 = "The electricity went off. Wait for electrical technician to do their job!",
DIAMOND_WALL_BROKE_5 = "The electricity went off. Locate the fuse box to start the repair!",
DIAMOND_WALL_BROKE_3 = "Press ~INPUT_TALK~ to fix the electricity or signal.",
PODIUM_INFO = "~BLIP_681~ The Lucky Wheel jackpot is ~g~%s~w~. Come over to the Lucky Wheel and try your luck!",
PODIUM_INFO_2 = "Press ~INPUT_TALK~ if you wish to replace the Lucky Wheel jackpot.",
PODIUM_INFO_3 = "~BLIP_681~ The Lucky Wheel currently doesn't offer any vehicle.",
PODIUM_INFO_4 = "Casino workers can donate their vehicles to the Lucky Wheel. Waypoint of the garage was set on your map.",
LOADING_CASINO = "Loading Casino...",
XMAS_TREE = "Christmas Tree",
XMAS_PRESS_E = "Press ~INPUT_TALK~ to get your Christmas gift!",
XMAS_YOU_GOT_X = "You got %s! (%s)",
XMAS_ALREADY_GOT = "You've already got you daily Christmas gift :)",
XMAS_ALREADY_GOT_COOLDOWN = "You've already got you daily Christmas gift :). Come back in: %s",
CHIPS = "Casino Chips",
OPENINGHOURS_CLOSED = "The Diamond Casino is closed. Come back again %s",
OPENINGHOURS_TODAY = "today at %s",
OPENINGHOURS_TOMORROW = "tomorrow at %s",
OPENINGHOURS_INXDAYS = "in %d days, at %s",
OPENINGHOURS_NEVEROPEN = "(Date will be announced soon)",
OPENINGHOURS_OPEN = "Open",
OPENINGHOURS_CLOSED_TITLE = "Closed",
LUCKYWHEEL_YOU_GOT_MONEY = "You have won %s!",
LUCKYWHEEL_YOU_GOT_CHIPS = "You have won %s chips!",
LUCKYWHEEL_YOU_GOT_CAR = "You have won the podium vehicle!",
LUCKYWHEEL_YOU_GOT_NOTHING = "You have won nothing!",
AVAIABLE_SOCIETY_BALANCE = "Society balance: %s",
CASINO_TEMPORARY_CLOSED = "Casino is temporary closed.",
-- Poker Cards
STRAIGHT_FLUSH = "a Straight Flush",
THREE_OF_A_KIND = "Three of a Kind",
STRAIGHT = "a Straight",
FLUSH = "a Flush",
PAIR_OF_ACES = "Pair of Aces",
PAIR_OF_2 = "a Pair of Two",
PAIR_OF_3 = "a Pair of Three",
PAIR_OF_4 = "a Pair of Four",
PAIR_OF_5 = "a Pair of Five",
PAIR_OF_6 = "a Pair of Six",
PAIR_OF_7 = "a Pair of Seven",
PAIR_OF_8 = "a Pair of Eight",
PAIR_OF_9 = "a Pair of Nine",
PAIR_OF_10 = "a Pair of Ten",
PAIR_OF_JACKS = "a Pair of Jacks",
PAIR_OF_QUEENS = "a Pair of Queens",
PAIR_OF_KINGS = "a Pair of Kings",
CARD_2_HIGH = "Two High",
CARD_3_HIGH = "Three High",
CARD_4_HIGH = "Four High",
CARD_5_HIGH = "Five High",
CARD_6_HIGH = "Six High",
CARD_7_HIGH = "Seven High",
CARD_8_HIGH = "Eight High",
CARD_9_HIGH = "Nine High",
CARD_10_HIGH = "Ten High",
CARD_JACK_HIGH = "Jack High",
CARD_QUEEN_HIGH = "Queen High",
CARD_KING_HIGH = "King High",
CARD_ACE_HIGH = "Ace High",
-- Slot Displays
SLOTS_RT_BET = "Bet",
SLOTS_RT_LSTWIN = "Last Win",
-- SLOTS_MESP (Positive) SLOTS_MESM (Negative)
SLOTS_MESP501 = "You Have Been Blessed!",
SLOTS_MESN501 = "You Have Been Cursed!",
SLOTS_MESP502 = "The Pharaoh is Pleased!",
SLOTS_MESN502 = "The Gods Are Enraged!",
SLOTS_MESP503 = "Bask in the Glow!",
SLOTS_MESN503 = "You Angered the Gods!",
SLOTS_MESP504 = "Glory Awaits!",
SLOTS_MESN504 = "Ruined!",
SLOTS_MESP505 = "The Gods are Pleased!",
SLOTS_MESN505 = "Hope Eclipsed!",
SLOTS_MESP506 = "The Sphinx Awaits!",
SLOTS_MESN506 = "Kingdom Ruined",
SLOTS_MESP507 = "Build the Pyramids!",
SLOTS_MESN507 = "Dynasty in Shambles",
SLOTS_MESP508 = "Conquered!",
SLOTS_MESN508 = "Life's a Desert",
SLOTS_MESP509 = "Riches Await!",
SLOTS_MESN509 = "Tomb Prepared!",
SLOTS_MESP510 = "Prosperity is Coming!",
SLOTS_MESN510 = "Afterlife Awaits",
SLOTS_MESP511 = "Hail the New Pharaoh!",
SLOTS_MESN511 = "Dead and Buried",
SLOTS_MESP512 = "You Are the Golden God!",
SLOTS_MESN512 = "Sands Take You!",
SLOTS_MESP513 = "You Are Legend!",
SLOTS_MESN513 = "Your Fate is Sealed",
SLOTS_MESP514 = "Cats Are Great!",
SLOTS_MESN514 = "Dynasty in Ruins!",
SLOTS_MESP515 = "Magnificent Ruler!",
SLOTS_MESN515 = "Empire Destroyed!",
SLOTS_MESP516 = "A Bountiful Return!",
SLOTS_MESN516 = "Mummified!",
SLOTS_MESP801 = "You're Number One!",
SLOTS_MESN801 = "Washed up!",
SLOTS_MESP802 = "The 80's Rule!",
SLOTS_MESN802 = "You're C List Now!",
SLOTS_MESP803 = "You Won the War!",
SLOTS_MESN803 = "Vinewood Hates You!",
SLOTS_MESP804 = "Be an Action Hero!",
SLOTS_MESN804 = "The 80's Are Over!",
SLOTS_MESP805 = "America Loves You!",
SLOTS_MESN805 = "Your Career Is Done!",
SLOTS_MESP806 = "Party it Up!",
SLOTS_MESN806 = "Time to Retire",
SLOTS_MESP807 = "You're Unstoppable!",
SLOTS_MESN807 = "You've Been Forgotten!",
SLOTS_MESP808 = "You're the Biggest!",
SLOTS_MESN808 = "Eliminated",
SLOTS_MESP809 = "You're the Best!",
SLOTS_MESN809 = "Wasted",
SLOTS_MESP810 = "It's Never Over",
SLOTS_MESN810 = "Done!",
SLOTS_MESP811 = "You Saved America!",
SLOTS_MESN811 = "See Ya!",
SLOTS_MESP812 = "Over the Top!",
SLOTS_MESN812 = "America Hates You!",
SLOTS_MESP813 = "Blockbuster!",
SLOTS_MESN813 = "Straight to DVD",
SLOTS_MESP814 = "Pumped Up!",
SLOTS_MESN814 = "Box Office Bomb!",
SLOTS_MESP815 = "Big Leagues!",
SLOTS_MESN815 = "Recast!",
SLOTS_MESP816 = "Glory Days!",
SLOTS_MESN816 = "Only Terrorists Lose!",
SLOTS_MESP401 = "Famed!",
SLOTS_MESN401 = "Shamed!",
SLOTS_MESP402 = "Fame!",
SLOTS_MESN402 = "Embarrassing!",
SLOTS_MESP403 = "You Can Do It!",
SLOTS_MESN403 = "Terrible!",
SLOTS_MESP404 = "You're SO Talented",
SLOTS_MESN404 = "How Awful!",
SLOTS_MESP405 = "You're a Star",
SLOTS_MESN405 = "Voted Off!",
SLOTS_MESP406 = "Be Amazing!",
SLOTS_MESN406 = "So Sorry!",
SLOTS_MESP407 = "Do It!",
SLOTS_MESN407 = "That's a Fail!",
SLOTS_MESP408 = "You're Number One!",
SLOTS_MESN408 = "Well That Sucked!",
SLOTS_MESP409 = "You Got This!",
SLOTS_MESN409 = "No Talent!",
SLOTS_MESP410 = "You're the Best!",
SLOTS_MESN410 = "Is That You Lazlow?",
SLOTS_MESP411 = "You're #1",
SLOTS_MESN411 = "Suicide Watch!",
SLOTS_MESP412 = "Be Unstoppable!",
SLOTS_MESN412 = "Dropped by Sponsors",
SLOTS_MESP413 = "Terrifyingly Talented!",
SLOTS_MESN413 = "Career OVER!",
SLOTS_MESP414 = "You're on FIRE!",
SLOTS_MESN414 = "Upstaged!",
SLOTS_MESP415 = "So Hawt!",
SLOTS_MESN415 = "Boooo!",
SLOTS_MESP416 = "America's Darling!",
SLOTS_MESN416 = "What a Disaster!",
SLOTS_MESP301 = "Lock and Load!",
SLOTS_MESN301 = "Ouch!",
SLOTS_MESP302 = "Shoot One Off",
SLOTS_MESN302 = "That Ain't Good!",
SLOTS_MESP303 = "Get Some!",
SLOTS_MESN303 = "What the Hell?",
SLOTS_MESP304 = "Mission Accomplished!",
SLOTS_MESN304 = "Dead as Hell!",
SLOTS_MESP305 = "You're a Patriot!",
SLOTS_MESN305 = "Well I'll Be!",
SLOTS_MESP306 = "Mericuh!",
SLOTS_MESN306 = "You Even Tryin'?",
SLOTS_MESP307 = "Yee-Hah!",
SLOTS_MESN307 = "Shucks!",
SLOTS_MESP308 = "Let's Do This!",
SLOTS_MESN308 = "Confoundit!",
SLOTS_MESP309 = "Ya'll Havin Fun?",
SLOTS_MESN309 = "Dagnabbit!",
SLOTS_MESP310 = "Be a Hero!",
SLOTS_MESN310 = "Well Crud!",
SLOTS_MESP311 = "Oorah!",
SLOTS_MESN311 = "Blame Foreigners",
SLOTS_MESP312 = "Target Acquired!",
SLOTS_MESN312 = "Friggin Bullshit!",
SLOTS_MESP313 = "Nuke'Em from Orbit!",
SLOTS_MESN313 = "Total ClusterF!",
SLOTS_MESP314 = "Alien BBQ!",
SLOTS_MESN314 = "FUBAR!",
SLOTS_MESP315 = "Freedoms Protected!",
SLOTS_MESN315 = "Man Down!",
SLOTS_MESP316 = "Darn Tootin'!",
SLOTS_MESN316 = "KIA!",
SLOTS_MESP701 = "What a Tycoon!",
SLOTS_MESN701 = "Busted",
SLOTS_MESP702 = "Magnate!",
SLOTS_MESN702 = "Broke!",
SLOTS_MESP703 = "Get Mining!",
SLOTS_MESN703 = "Ouch!",
SLOTS_MESP704 = "So Prosperous!",
SLOTS_MESN704 = "Bankrupt!",
SLOTS_MESP705 = "Loaded!",
SLOTS_MESN705 = "Chapter 11",
SLOTS_MESP706 = "Dividends!",
SLOTS_MESN706 = "That hurts!",
SLOTS_MESP707 = "Bling!",
SLOTS_MESN707 = "Strapped for Cash!",
SLOTS_MESP708 = "Priceless!",
SLOTS_MESN708 = "Soup Line!",
SLOTS_MESP709 = "Rolling in It!",
SLOTS_MESN709 = "Urgh!",
SLOTS_MESP710 = "Easy!",
SLOTS_MESN710 = "You're No One!",
SLOTS_MESP711 = "Impeccable Taste!",
SLOTS_MESN711 = "Worthless",
SLOTS_MESP712 = "So Extravagant!",
SLOTS_MESN712 = "Spent!",
SLOTS_MESP713 = "Minted!",
SLOTS_MESN713 = "Bounced!",
SLOTS_MESP714 = "Fat Cat!",
SLOTS_MESN714 = "Ruined!",
SLOTS_MESP715 = "High Class!",
SLOTS_MESN715 = "Destitute!",
SLOTS_MESP716 = "Sparkling!",
SLOTS_MESN716 = "Faker!",
SLOTS_MESP101 = "Awesome!",
SLOTS_MESN101 = "Barf Me Out!",
SLOTS_MESP102 = "Tubular",
SLOTS_MESN102 = "Not Even!",
SLOTS_MESP103 = "Wow!",
SLOTS_MESN103 = "Grody!",
SLOTS_MESP104 = "Fantastic!",
SLOTS_MESN104 = "Gnarly",
SLOTS_MESP105 = "Groovy",
SLOTS_MESN105 = "Oh. My. God.",
SLOTS_MESP106 = "Radical!",
SLOTS_MESN106 = "Take a Chill Pill",
SLOTS_MESP107 = "Righteous!",
SLOTS_MESN107 = "So Lame!",
SLOTS_MESP108 = "Like Totally!",
SLOTS_MESN108 = "Hoser",
SLOTS_MESP109 = "Clutch!",
SLOTS_MESN109 = "Spazz",
SLOTS_MESP110 = "Illin!",
SLOTS_MESN110 = "You're Trippin'",
SLOTS_MESP111 = "Sick!",
SLOTS_MESN111 = "Harsh!",
SLOTS_MESP112 = "Tight",
SLOTS_MESN112 = "Gag Me!",
SLOTS_MESP113 = "Bitchin'!",
SLOTS_MESN113 = "Bummer Dude!",
SLOTS_MESP114 = "Totally Studly!",
SLOTS_MESN114 = "Bogus!",
SLOTS_MESP115 = "Whoa!",
SLOTS_MESN115 = "Major Buzz Kill!",
SLOTS_MESP116 = "Sweet!",
SLOTS_MESN116 = "Wipe out!",
SLOTS_MESP601 = "Take a Stab",
SLOTS_MESN601 = "Wasted",
SLOTS_MESP602 = "Make a Killing",
SLOTS_MESN602 = "Murdered",
SLOTS_MESP603 = "Kill it!",
SLOTS_MESN603 = "What a Massacre",
SLOTS_MESP604 = "Time to Kill It!",
SLOTS_MESN604 = "Stabbed",
SLOTS_MESP605 = "Play!",
SLOTS_MESN605 = "Annihilated!",
SLOTS_MESP606 = "Slay It!",
SLOTS_MESN606 = "Dead",
SLOTS_MESP607 = "Time for Blood",
SLOTS_MESN607 = "Foul Play!",
SLOTS_MESP608 = "Slaughter It!",
SLOTS_MESN608 = "Done!",
SLOTS_MESP609 = "Be the Hunter!",
SLOTS_MESN609 = "Cooked!",
SLOTS_MESP610 = "Bathe in Blood!",
SLOTS_MESN610 = "Slaughtered",
SLOTS_MESP611 = "Kill 'Em All!",
SLOTS_MESN611 = "What a Horror!",
SLOTS_MESP612 = "No Remorse!",
SLOTS_MESN612 = "Destroyed",
SLOTS_MESP613 = "Draw First Blood!",
SLOTS_MESN613 = "You're the Victim!",
SLOTS_MESP614 = "More Body Bags!",
SLOTS_MESN614 = "Fried",
SLOTS_MESP615 = "You're a Cutter!",
SLOTS_MESN615 = "No Escape!",
SLOTS_MESP616 = "Chop, Chop!",
SLOTS_MESN616 = "Eradicated!",
SLOTS_MESP201 = "You Can Do It!",
SLOTS_MESN201 = "Trigger Warning!",
SLOTS_MESP202 = "Breathe Deep!",
SLOTS_MESN202 = "Not Fair!",
SLOTS_MESP203 = "Keep It Up!",
SLOTS_MESN203 = "Pout!",
SLOTS_MESP204 = "Stay Positive!",
SLOTS_MESN204 = "Conservatives Suck!",
SLOTS_MESP205 = "You're a Good Person",
SLOTS_MESN205 = "Blame Conservatives!",
SLOTS_MESP206 = "You're in a Safe Space",
SLOTS_MESN206 = "Call Your Therapist",
SLOTS_MESP207 = "Virtue Signal!",
SLOTS_MESN207 = "Feeling Oppressed?",
SLOTS_MESP208 = "You're No Snowflake!",
SLOTS_MESN208 = "Trolled!",
SLOTS_MESP209 = "Do Yoga!",
SLOTS_MESN209 = "Check Your Privilege",
SLOTS_MESP210 = "Meditate More!",
SLOTS_MESN210 = "Support Public Radio",
SLOTS_MESP211 = "You Make a Difference!",
SLOTS_MESN211 = "You're Not Woke!",
SLOTS_MESP212 = "Recycle!",
SLOTS_MESN212 = "Be Conscious of Your Bias!",
SLOTS_MESP213 = "You're Precious!",
SLOTS_MESN213 = "Don't Be a Troll!",
SLOTS_MESP214 = "Enlightenment!",
SLOTS_MESN214 = "Woke!",
SLOTS_MESP215 = "Mindfulness!",
SLOTS_MESN215 = "Breathe Deep",
SLOTS_MESP216 = "Acknowledge Privilege!",
SLOTS_MESN216 = "Downvote!",
-- Inside Track Horse Names,
ITH_NAME_001 = "Bad Egg",
ITH_NAME_002 = "Banana Hammock",
ITH_NAME_003 = "Better Than Nothing",
ITH_NAME_004 = "Black Rock Rooster",
ITH_NAME_005 = "Bleet Me Baby",
ITH_NAME_006 = "Blue Dream",
ITH_NAME_007 = "Borrowed Sorrow",
ITH_NAME_008 = "Bouncy Blessed",
ITH_NAME_009 = "Cancelled Check",
ITH_NAME_010 = "Can't Be Wronger",
ITH_NAME_011 = "Clapback Charlie",
ITH_NAME_012 = "Constant Brag",
ITH_NAME_013 = "Country Stuck",
ITH_NAME_014 = "Crackers and Please",
ITH_NAME_015 = "Creepy Dentist",
ITH_NAME_016 = "Crock Janley",
ITH_NAME_017 = "Dancin' Pole",
ITH_NAME_018 = "Dancin' Shoes",
ITH_NAME_019 = "Darling Ricki",
ITH_NAME_020 = "Dead Fam",
ITH_NAME_021 = "Dead Heat Hattie",
ITH_NAME_022 = "Dexie Runner",
ITH_NAME_023 = "Divorced Doctor",
ITH_NAME_024 = "Doozy Floozy",
ITH_NAME_025 = "Downtown Renown",
ITH_NAME_026 = "Dr. Deez Reins",
ITH_NAME_027 = "Dream Shatterer",
ITH_NAME_028 = "Drone Warning",
ITH_NAME_029 = "Drunken Brandee",
ITH_NAME_030 = "Durban Poison",
ITH_NAME_031 = "Feed The Trolls",
ITH_NAME_032 = "Fire Hazards",
ITH_NAME_033 = "Flipped Wig",
ITH_NAME_034 = "Friendly Fire",
ITH_NAME_035 = "Getting Haughty",
ITH_NAME_036 = "Ghost Dank",
ITH_NAME_037 = "Glass or Tina",
ITH_NAME_039 = "Los Santos Savior",
ITH_NAME_040 = "Hard Time Done",
ITH_NAME_041 = "Hell for Weather",
ITH_NAME_042 = "Hennigan's Steed",
ITH_NAME_043 = "Hippie Crack",
ITH_NAME_044 = "Hot & Bothered",
ITH_NAME_045 = "Invade Grenade",
ITH_NAME_046 = "It's a Trap",
ITH_NAME_047 = "Kraff Running",
ITH_NAME_048 = "Lead is Out",
ITH_NAME_049 = "Lit As Truck",
ITH_NAME_050 = "Lonely Stepbrother",
ITH_NAME_051 = "Lover's Speed",
ITH_NAME_052 = "Measles Smeezles",
ITH_NAME_053 = "Micro Aggression",
ITH_NAME_054 = "Minimum Wager",
ITH_NAME_055 = "Miss Mary John",
ITH_NAME_056 = "Miss Triggered",
ITH_NAME_057 = "Mister Redacted",
ITH_NAME_058 = "Mister Scissors",
ITH_NAME_059 = "Money to Burn",
ITH_NAME_060 = "Moon Rocks",
ITH_NAME_061 = "Mr. Worthwhile",
ITH_NAME_062 = "Mud Dragon",
ITH_NAME_063 = "Night-time Mare",
ITH_NAME_064 = "Northern Lights",
ITH_NAME_065 = "Nuns Orders",
ITH_NAME_066 = "Ol' Skag",
ITH_NAME_067 = "Old Ill Will",
ITH_NAME_068 = "Omens and Ice",
ITH_NAME_069 = "Pedestrian",
ITH_NAME_070 = "Pretty as a Pistol",
ITH_NAME_071 = "Questionable Dignity",
ITH_NAME_072 = "Reach Around Town",
ITH_NAME_073 = "Robocall",
ITH_NAME_074 = "Salt 'N' Sauce",
ITH_NAME_075 = "Salty and Woke",
ITH_NAME_076 = "Scrawny Nag",
ITH_NAME_077 = "Sir Scrambled",
ITH_NAME_078 = "Sizzurp",
ITH_NAME_079 = "Snatched Your Mama",
ITH_NAME_080 = "Social Media Warrior",
ITH_NAME_081 = "Square to Go",
ITH_NAME_082 = "Study Buddy",
ITH_NAME_083 = "Stupid Money",
ITH_NAME_084 = "Sumptin Saucy",
ITH_NAME_085 = "Sweet Releaf",
ITH_NAME_086 = "Tax the Poor",
ITH_NAME_087 = "Tea Ache Sea",
ITH_NAME_088 = "Tenpenny",
ITH_NAME_089 = "There She Blows",
ITH_NAME_090 = "Throwing Shady",
ITH_NAME_091 = "Thunder Skunk",
ITH_NAME_092 = "Total Belter",
ITH_NAME_093 = "Turnt Mood",
ITH_NAME_094 = "Uptown Rider",
ITH_NAME_095 = "Wage of Consent",
ITH_NAME_096 = "Wee Scunner",
ITH_NAME_097 = "Worth a Kingdom",
ITH_NAME_098 = "Yay Yo Let's Go",
ITH_NAME_099 = "Yellow Sunshine",
HORSEGAME_PHOTO = "PHOTO FINISH",
HORSEGAME_UNDERWAY = "EVENT IN PROGRESS",
HORSEGAME_SINGLE_SUB = "PLAY WITH YOURSELF",
HORSEGAME_REPLAY = "BET AGAIN",
HORSEGAME_CTA = "PLACE BET",
HORSEGAME_RESULTS = "RESULTS",
HORSEGAME_PREV = "PREVIOUS",
HORSEGAME_MAIN = "MAIN EVENT",
HORSEGAME_VIEWBET = "VIEW BET",
HORSEGAME_RULES = "RULES",
HORSEGAME_CLOSE = "CLOSE",
HORSEGAME_MAIN_SUB = "PLAY WITH OTHERS",
HORSEGAME_THIRD = "3RD",
HORSEGAME_SECOND = "2ND",
HORSEGAME_FIRST = "1ST",
HORSEGAME_PAYOUT = "PAYOUT",
HORSEGAME_SINGLE_SUB2 = "STARTS WHEN BET IS PLACED",
HORSEGAME_CANCEL = "CANCEL",
HORSEGAME_SEL = "SELECT HORSE",
HORSEGAME_SINGLE = "SINGLE EVENT",
HORSEGAME_BALANCE = "CURRENT BALANCE",
HORSEGAME_STARTS = "EVENT STARTS IN",
ABOUT = "About",
ADMIN_MENU_CHIP_MNG = "Chip Management",
ADMIN_MENU_GAMESTATES = "Game States",
ADMIN_MENU_CHIPS_NEWBALANCE = "New Balance",
}

Some files were not shown because too many files have changed in this diff Show More