diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7bd61a7
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,28 @@
+# Apex Freeroam — GTA V RAGE:MP Server
+
+# ──────────────── Node.js ────────────────
+node_modules/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# ──────────────── Build Outputs ──────────
+client_packages/cef/
+client_packages/client.js
+
+# ──────────────── Environment / Secrets ──
+settings.json
+
+# ──────────────── RAGE:MP Server ─────────
+ragemp-server.exe
+BugTrap-x64.dll
+*.dll
+*.so
+*.dylib
+maps/
+
+# ──────────────── IDE / OS ───────────────
+.vscode/
+.idea/
+.DS_Store
+Thumbs.db
diff --git a/README.md b/README.md
index d3ee205..cba3380 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,171 @@
-# YabosRageMPCore
-Everything you need to start your RageMP RP, DM or Freeroam server using performance friendly code + Rage-RPC
+
+
+# 🔥 YabosRageMPCore
+
+### A open-source **RAGE:MP** GTA V multiplayer server framework.
+
+[](https://www.gnu.org/licenses/gpl-3.0)
+[](https://rage.mp/)
+[](https://www.typescriptlang.org/)
+[](https://vuejs.org/)
+[](https://vitejs.dev/)
+
+_A modern, scalable server boilerplate with a type-safe RPC system and a Hot-Module-Reloading CEF UI pipeline._
+
+
+
+---
+
+## ✨ Features
+
+- **Type-safe RPC** across Server, Client, and CEF using [`@entityseven/rage-fw-rpc`](https://github.com/entityseven/rage-framework)
+- **Split architecture** — clean separation between server logic, client scripts, and UI
+- **Modern UI pipeline** — Vue 3 + Vite with Hot Module Replacement for rapid development
+- **Custom Chat UI** — in-game chat built in Vue with support for player, global, admin, system, and error messages
+- **Smart CEF routing** — automatically routes CEF to `localhost:3000` (dev) or the bundled package (production) via `settings.json`
+- **Zero boilerplate overhead** — only the code that matters
+
+---
+
+## 📁 Project Structure
+
+```
+YabosRageMPCore/
+├── packages/
+│ └── core/ # Server-side logic (Node.js)
+│ └── index.js # Entry point: RPC handlers, player events
+│
+├── develop_client/ # Client-side TypeScript source
+│ └── src/
+│ └── index.ts # Compiled to client_packages/client.js
+│
+├── develop_cef/ # Vue 3 SPA for all in-game UI
+│ └── src/
+│ ├── App.vue
+│ └── components/
+│ └── Chat.vue # Custom chat system
+│
+├── client_packages/ # [BUILD OUTPUT] — loaded by RAGE:MP
+│ ├── index.js # Loader entrypoint
+│ ├── client.js # Compiled client bundle
+│ └── cef/ # Compiled Vue SPA
+│
+└── settings.json # Database, debug, and CEF environment config
+```
+
+---
+
+## 🚀 Getting Started
+
+### Prerequisites
+
+- [Node.js](https://nodejs.org/) >= 18.x
+- [RAGE:MP Server](https://rage.mp/)
+
+### 1. Clone the repository
+
+```bash
+git clone https://github.com/yabooo666/YabosRageMPCore
+cd YabosRageMPCore
+```
+
+### 2. Configure `settings.json`
+
+```json
+{
+ "mysql": {
+ "host": "localhost",
+ "port": 3306,
+ "user": "root",
+ "password": "",
+ "database": "ragempcore"
+ },
+ "debugger": true,
+ "cef": "dev"
+}
+```
+
+> Set `"cef": "dev"` to use the Vite dev server, `"cef": "build"` to use the compiled bundle.
+
+### 3. Install dependencies
+
+```bash
+# Server core
+npm install
+
+# Client script
+cd ../../develop_client && npm install
+
+# CEF UI
+cd ../develop_cef && npm install
+```
+
+### 4a. Development Mode (with HMR)
+
+```bash
+# Terminal 1 — Watch & compile client script
+cd develop_client && npm run dev
+
+# Terminal 2 — Start Vite dev server for CEF
+cd develop_cef && npm run dev
+```
+
+### 4b. Production Mode
+
+```bash
+# Compile client script
+cd develop_client && npm run build
+
+# Compile CEF UI
+cd develop_cef && npm run build
+
+# Start the RAGE:MP server
+./ragemp-server.exe
+```
+
+---
+
+## 🔌 RPC Communication
+
+Cross-environment communication is handled by [RageFW RPC](https://github.com/entityseven/rage-framework).
+
+| From | To | Method |
+| ------ | ------ | ----------------------------------------- |
+| Server | Client | `rpc.callClient(player, 'event', [args])` |
+| Client | Server | `rpc.callServer('event', [args])` |
+| Client | CEF | `rpc.callBrowser('event', [args])` |
+| CEF | Client | `chatRpc.callClient('event', [args])` |
+
+To register a handler:
+
+```js
+rpc.register("my:event", (player, arg1) => {
+ // handle it
+ return true;
+});
+```
+
+---
+
+## 📄 License
+
+This project is licensed under the **GNU General Public License v3.0**.
+See the [LICENSE](LICENSE) file for details.
+
+```
+YabosRageMPCore — RAGE:MP Server Framework
+Copyright (C) 2025
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+```
+
+---
+
+
+
+**Made with ❤️ for the RAGE:MP community**
+
+
diff --git a/bin/bt.dat b/bin/bt.dat
new file mode 100644
index 0000000..a55d170
--- /dev/null
+++ b/bin/bt.dat
@@ -0,0 +1,633 @@
+olp ϷsuP;_tM=nfe
+fco)
+olp
+.i_π {
+pt.svx؉s4 t l s .i_π[r
+fr)err;r mulxs4t;pt.Ϸh˛t r;ru s}
+n sva mulelXa6
+lseo csuoxyz{fte ! nfe)
+ix |0;h.= 0ts z|.
+eefte = bc)
+ rysњr()
+ix 0
+iy 1
+iz 2
+ee
+ix xts x;h.=.
+}
+ete ru weo(h. h. h.;
+d)
+ snoVt3ru weo(ix xts v,h.+.;l tneVt3h.+,h.+,h.+)}urt)
+ snoVt3ru weo(ix xts v,h.-.;l tneVt3h.-,h.-,h.-)}uiy)
+ snoVt3ru weo(ix xts v,h.*.;l tneVt3h.*,h.*,h.*)}idv{fvnae ƍcr tneVt3h./. iy yts v)eeern ƍcrts vts vts v
+ea( ru ix=.&ts y&h.=v;
+t)
+tnh.*.+h.*.+h.*.
+csv{ern ƍcr
+iy z iz yts v ts v,h.*.-h.*.)}et)
+tna.rtsots;
+i)
+tnh.veh.nh)}i)
+tna.na.nh. iy iz
+m({erMhaMhats,h.,h.;
+Al({er[݉tanh./h.nh)Mht2h. ix;
+gTa{erMhc(id( (ilg(*.nh)
+try)
+tnts,h. izsc0n|)}le ru weo(ixts,h.;
+ixyz{h.=;h.=;h.=;erts}oÜrg ru ":ts}y$h.,"{iz`}
+.ƍcr=eo;lsuei csuoxyzw{h.= 0ts y|.
+iz |0;h.= 0}
+.a=uei;l aBf n њrBf(2 2;egώltҝfr wltAagωpue;egϊyBf n ŁnAagωpue;egϊin4ҝfr win4њr(aBf)l utBf n Łn2њr(aBf)
+ϷsuB_iҝfr
+ϷsuB did
+t_oBfPl ˵;cskӄoBfAoi 2 55 ;fcoaotleҝfrr u)
+n nh cnueo.nh
+tr
+fet=
+a n Łn2њr(wryҝfrCnuelcÁz)}l
+a gϋleҝfrolg 1
+cnueo.p;
+rs(cury,ot )
+tnr
+
+ni eleҝfru)
+cnueo.sbf
+
+trrPl=]
+ni otry tstry;cscn=_n2ҝfr]
+te=eAacn;f(t 0i u;+
+r[ tsˏ_n2ҝfrˁ+]}ru t}fcoplϜoњrFt tstry;cscn=_n2ҝfr]
+toњrCh=h.ϷtryӉc;tryӉc.nh u;f(t 0i u;+
+tryӉc[ tsˏ_n2ҝfrˁ+]}ru Aaae}
+ni otryنRgp,aedei,b{_oBf[ p.
+faue1=oygώltҝfr] s;gώltҝfr] n;ic=nl{b msngϝi3ue4=0F֮F֮F>)}l gϝi3ue4=ino
+
+i_rՉcnn(
+otot utBf[;l t wryot
+ol =; cn i{ei=h[utBf[1͵;
+err;
+utno_Aanԁmsnino )
+utBf[ dei;tsfEhنDei(
+otot utBf[;l t wryot
+ol =; cn i{ei=h[utBf[1͵;
+err;
+fcoplώoa()
+i_Aa)
+n u gϝi3ue0
+otleue=lceӄoBf(utBf,ot
+r{ol =; cn i{otnt=h[odҝfrˁ]
+fnt
+(ty
+}
+t( }feӄoBf(odҝfr
+
+ni ofEhنDei(msnc gϝi3ue0=ino
+h.ώoaIino)
+n u gϝi3ue0
+otleue=lceӄoBf(utBf,ot
+r{ol =; cn i{otnt=h[odҝfrˁ]
+fnt
+(ty
+}
+t( }feӄoBf(odҝfr
+
+ni ofEhنRgp,aedei,b{_oBf[ p.
+faue1=oygώltҝfr] s;gώltҝfr] n;ic=nl{b msngϝi3ue4=0F֮F֮F>)}l gϝi3ue4=ino
+
+i_rՉcnn(
+otot utBf[;cscnBf aotleҝfr_n2ҝfrcn;t f(t 0i u;+
+csei tsˋleuei͵;iei){bnt;
+}ah)
+eleҝfrleue;
+utno_p()
+i_Aa)
+n u gϝi3ue0
+otleue=lceӄoBf(utBf,ot
+r
+f(t 0i u;+
+csei tsˋleuei͵;iei){bpynt;
+}ah)
+eleҝfrleue;
+utno_isnt iNb.Iernt)
+tnh[ty!nl}l (pfnt= bc ty=u pfnti! nfe)
+tnh[tyd= ty}ru l;
+otPlމm [le""hl""jt,pks ls hkis ae""las al,dms e"
+Plމm.rՉcpl>
+toO m" pl
+rrPlphoO)mpl=oO;plߊjoњr plϜoњr;oO.Aaa plϜoњrFt
+obtryنRg=o_Aann;oO.Aanԁmsn otryنDei;plߊjoa plώoa;oO.rՉca plώoa;plߊjoaIae ofEhنRg
+obfEhنDei plώoaIino
+oO.p plωpy
+ob_ϜoњrCh=]
+obes plύxt
+*oba=oO.ωt/oO. fcoi)
+tnh[x
+}
+m_Ϙos deos
+n ıPշI3=5csTɸEϡn4 ;otY_҇o=7csTɸEϮlt ;otY_Ürg ;otY_çbc=0csTɸEϲSi 2
+n ıPշZߊjt ;otY_ݧbc=3csTɸEϪiue=4csTɸEϾeo 2
+n ıPշNl ;fcophωrmthS)
+tte pfhS)
+ih_p cenb'_p=Y_نt;rkceoe'{e_g ir
+f!ωr _p=Y_ޝl
+eefte ωr_pn! nfe
+pfa. =uen'{s[ _gd_p=a.ϜyI; si(ωritcfpeo)
+ϛri=_g,a. ωrz
+Ϝy TɸEϾeo; si(ωritcfryҝfr{te ıPշBBf; s{te ıPշSߊjt}
+e;a oe'_p=Y_҇o
+e;a tn:te ıPշSi;rkcebi'_p=Y_نt;rkdat_p=Y_ޝl
+e;
+er_p
+
+.ύvt_Ϙu_ge phωrmt
+ni saun(c{otaIOs ((rlg 4 7/)>) ;l sߊjt=ae
+rl =; s.nh+)
+thS s[;l Ϝy 0
+n syI beٌxߎft 1;st yotsÚc cenb'{otued=beґtd/)
+ ueing(ir)
+utBf[mrٌx=hS;te ıPշI3
+ee
+fauebeґtd/] ir
+Ϝy TɸEϮlt}
+e;ceoe'{e_g ir
+f!ωr _p=Y_ޝl
+eefte ωr_pn! nfe pfa. =uen'{csnbI (syI 4
+_n2ҝfrˆued _gd_p=a.ϜyI;}l a snomVt3{csvI (syI 4
+_oBf[cٌx=a.
+fauevI 1=a.
+fauevI 2=a.
+te ıPշVt3}l a snoAaue hOes u
+Ϝy TɸEϪiue
+ee
+sߊjt=r;te ıPշSߊjt}
+e;a oe'{_tuebeґtd tsÚc_p=Y_҇o
+ba
+s'rg
+sߊjt=r;te ıPշSi;rkcebi'{otind=beґtd/)gϊin4ҝfrˊind tsÚc_p=Y_نt;
+e;eu:te ıPշNlba
+
+beҝfr 4 _p
+
+tnabc;
+{eda؉ne=
+tfcoo,aae{ero.tyeaaeaae
+ru jol˞aae*}s:utnb rb,ae{bei.tƉrb(rb,ae
+tnr;*jol˞aae=ae/
+
+efe֍aral {e ni(ji ru jeaFted
+
+tfcoo,dvu o.t։ceu(,ae
+tnr;
+
+ehdߞeaal {e ni(ji ru jeeOryd
+
+tfcoo,dvu o.t؍avl(,ae
+tnr;
+
+ewpHdr g:utnb )
+ yoi='Ürg i( =a'ru jleo;l d='e'ru rtevleo.ntg)eefi= ue'ru jeom;ero.tǍanхmmjai)}ru jeeom()}s:utnb ,ae{fte tn)
+ d='rn)ero.tǍanхmo.anvu;ero.tӝrneom(.a()vu;
+tnbsCrtǍanхmi l)};l hloal {e ni(ji ru jeoi;,e ni(ji l)
+jeoi l)ru u
+}
+tecEral {e ni(ji ru jexad
+
+tfcoo,dvu o.tՐt(,ae
+tnr;
+
+lsntvt؉ne{otcrnt tsnt=nt
+ien {
+
+da,al)
+tv esˆa]
+ vephal)eev ˀal]}ro(e,al)
+ hdr{fte e tn)
+ien[e] ˵; si(њr.Aaen)
+rl ύvfvt{h.es˷e [
+}}l i(ien.sߟnor(e){h.esˍvt=h.esˍvtft(πal πal =al)}
+
+vevtމm g l en[m;i()
+rl =; elg;+ i(ύvpyu,r){felg en[m uen; s{vpci1
+i}
+}
+
+.ύvta(_aroel"(arrI,a i(ar_nnphOPptrI){ep ar_nnprI]de ar_nnprI]
+y
+roea; t )
+nleoeetk
+})
+n jtnan="āmO""Ӊnld aeleu""ӄitjtn;m_esd"ϷpyPcjt"(arrI,o)>
+ le_ϘeiR.sߟnor(cٌx l =le_ϘeiR[cٌx
+lele_ϘeiR[cٌx
+r{.jtR jt:{jtnance͕`
+cc( cserr,.a)}
+;
+tbreyϘotn emaefs
+tfco)
+igPio)ru wpeo(faue0 faue1 faue2;,e ni(s{h.tsi(s
+}
+tbeosVil=utne l)
+tea roe؉sk)l Ϝy te(l)
+ts=u;st te{a ue:te ıPշI3
+e;a bc:
+ta vu
+f!ωr _p=Y_ޝl
+eefte ωr_pn! nfe
+pfa. =uen'{ae ωri
+Ϝy _gteنt}l a snomVt3{ae ˷a. ωry_g]_p=Y_ƍcr
+eef_gnae њrBf)
+Ϝy TɸEϪiue
+ee
+Ϝy TɸEϻOe;
+ba
+s'oa:te ıPշBlba
+s'rg
+Ϝy TɸEϻtn
+e;a in:te ıPշI6
+e;eu:te ıPշNlba
+
+i_tƉrb(y؉s l,te
+
+eoMh_tƉrbs ni(rbs{eks ߊjte(rbs
+tvs wrye.nh ;eaI 0
+rl yfe)
+tae rbs˃e;l y؉s=elHhe;e_p=yovu;st te{a ue:te ıPշI3
+e;a bc:
+ta vu
+f!ωr _p=Y_ޝl
+eefte ωr_pn! nfe
+pfa. =uen'{ae ωri
+Ϝy _gteنt}l a snomVt3{ae ˷a. ωry_g]_p=Y_ƍcr
+eef_gnae њrBf)
+Ϝy TɸEϪiue
+ee
+Ϝy TɸEϻOe;
+ba
+s'oa:te ıPշBlba
+s'rg
+Ϝy TɸEϻtn
+e;a in:te ıPշI6
+e;eu:te ıPշNlba
+
+Ϟa[rٌx=ea;vsˉrd+] Ϝy;vsˉrd+] l;aI
+
+i_tƉrb(Ϟa)}
+tleeosOVil=utne l)
+tea roe؉sk)l Ϝy te(l)
+ih_p cenb'_p=Y_نt;rkceoe'{e_g l;i(a)
+Ϝy TɸEϦu; si(pfa.ϜyI =uen'&yo_gd='did vu=a.;te ωr_pn
+eef_gnae .ƍcr vu=_g,a. ωrz
+Ϝy TɸEϾeo; si(ωritcfryҝfr{te ıPշBBf; s{te ıPշSߊjt}
+e;a oe'_p=Y_҇o
+e;a tn:te ıPշSi;rkcebi'_p=Y_نt;rkdat_p=Y_ޝl
+e;
+h.ϛewaaeea,ae_p;;l arݍtdϛewaae=utnaae l Ϟa n њr(rbset*)l rٌx
+o(teivil)
+tae rbs˃e;l y؉s=elHhe;e_p=yovu;st te{a ue:te ıPշI3
+e;a bc:
+ta vu
+f!ωr _p=Y_ޝl
+eefte ωr_pn! nfe
+pfa. =uen'{ae ωri
+Ϝy _gteنt}l a snomVt3{ae ˷a. ωry_g]_p=Y_ƍcr
+eef_gnae њrBf)
+Ϝy TɸEϪiue
+ee
+Ϝy TɸEϻOe;
+ba
+s'oa:te ıPշBlba
+s'rg
+Ϝy TɸEϻtn
+e;a in:te ıPշI6
+e;eu:te ıPշNlba
+
+Ϟa[rٌx=ea;vsˉrd+] Ϝy;vsˉrd+] l;aI
+
+i_tߟnƉrb(Ϟa)}
+tleeoclo=utnvtމm g gϊin4ҝfr] sva(eNe
+erI
+fAairyr){_n2ҝfr] glg;l sߊjt=u_gesr)
+ abc)
+cٌ tsclo.as
+ee
+cٌ tsclo)} s{_n2ҝfr]
+cٌ tsclo)}ru wri(el,ec ts_nnprI {el:el,ec jt;)}
+tleeocl ni(eNeas{_gtBf[ roe؉sena)
+ rysњr(g)
+utBf[ aset
+ehOes saun(g;i(sߊjt tscl.r)}l tscl;
+ee
+utBf[ 0tscl;
+
+epyMh_lnlb fcoena,r)
+bi6ue0=elHhvtމm;i(њr.Aaas gϝi3ue2=r.nh
+tabc phωrmtas
+fhOes{h.ϋaUeae.r)}l tsclņril)} s{_n2ҝfr]
+i_lnlb(
+}
+tleeoclćSee=utnnuSfena,r)
+bi6ue0=elHhvtމm;i(њr.Aaas gϝi3ue2=r.nh
+tabc phωrmtas
+fhOes{h.ϋaTtadnuSf.as
+ee
+i_loÜrm(cde)} s{_n2ҝfr]
+i_loÜrm(cde)};l arݍtdϋaTtadņril=utnnuSfena,r)
+bi6ue0=elHhvtމm;i(њr.Aaas gϝi3ue2=r.nh
+tabc phωrmtas
+fhOes{h.ϋaTtadņrilileÍl .g; s{h.ϋaTtadņrilileÍl;
+ee
+utBf[ 0tsclćSeenlb(cde)};l aroseele {neb:aeg:utn ts_tÜrmPys;cscn=_n2ҝfr]
+te=eAacn;f(t 0i u;+
+r[ tsˏ_n2ҝfrˁ+]}ru t}s:)>};
+.arropsOVil=leeosOVil
+.arropsOVil pyMh_tߟnƉrbsmPy.oteaPc arݍtdϋaPcmPy.otea pyMh_l
+.arropclņril=leeoclņril
+plepty.loÜrm pyMh_loÜrm;plepty.loÜrmUeae arݍtdϋaTtadņril
+"ar ec""ߊjt iu,Bp hki""݉rr ohe eLe,Dmnt,P"fEhl>
+[]ropsVil=beosVil
+[]ropsVil oMh_tƉrbs}
+pen.deiCad nt
+td ty_;ete ty_pn
+tte ty_p
+rrPlteͳi ei;Oe.feor(ty""{aei
+ib:ae)
+ߊjtenreynt teنt vu p
+ib:ae)
+ߊjtenreynt y"{ae_p
+ib:ae)
+tnty ei.ϜyI;i(tyđp! &eiTe=9{bcdiPptei,pio,breyϘotn
+
+ߊjtenreynt vt,
+url l,aen Նty՞eHdrnt
+;Oe.feor(ty"t,
+url l,aen o(ei:nt
+c:},aHdr}
+wc(tyđp ce:*le*{bcdiPptei,seele"pyPpϛtadar;ei.Ϸpdgc ;Oe.feor(ty"ceus emaefs
+l:ePxei,aFte؉ne
+;Oe.feor(ty"avls emaefs
+l:ePxei,eOry؉ne
+;Oe.feor(ty"an,
+url l,aen o(tywpHdr}
+ba
+s1/vie/
+ߊjtenreynt o"{neb:aevu wrynt hloal))
+ߊjtenreynt xa,
+url l,aen o(tyvieՐtHdr}
+ba
+}
+
+utnuiarՐctnea)
+imse sg
+ine uiarxpo;
+pvien fcome si,d i(d l
+r wuiarՐctnVieMeirue)i(si l
+r wuiarՐctnViePioirue)
+ a)
+tnh.φete d tn mjame me si,. ,5 l,ae0000
+ee
+ dhdg=u)dhdg 0i(duele=u)dnbPt="i(dla=u)dah=5
+ dlk l
+doe=aei(dnn=nla.ge l;fa.l l|a.l.nh=)dco=00
+ ddei l
+dino=;l lTe
+fAairydco0)
+ dco0lg coy 2
+tor dor]a.l[ (l[ co0
+or dor]a.l[ (l[ co0
+ee
+lTe
+eco=dco0
+dor] or]<6+co1<8+or]
+l a.l[;dco1=co1<1 (l[ co0
+}ru i_wyome='rg?potol:olpio dei,dnbPt dlaa.cda.gecoy,dco0 dor]a.msn
+}
+.χbc.w ni(d,otna)
+ ol=u)hweMtlexpo"ߊjtMeirue)i(si l
+r wuiarՐctnOe:otnseid;i(d ru i_wyome='rg?potol:olpio . 00]2,)}l i(dotn=u)drao=0,. 0
+ dah=nla.p 2;fa.msn=u)ddei 0
+tnh.φete d tn mjame me si,drao dlaa.msn
+}m_i.w ni(repio d{fsi l
+r wuiarՐctnBpSi qr"
+ otn=u)hweMtlexpo"҄i si qr"
+f!d{ertsn(repio ,. 50,ae00
+ee
+ dne=u)dne ;fa.a l
+dce 0i(dor=u)dco=;fa.p l
+dla 5i(drDtc=nla.aiae 0i(dhtn l
+dhtn fs
+ drao=nla.ti 0i(dino=nla.msn
+ertsn(repio da,dsl dora.p,ddwԁsn,dsraea.ti,ddei)}
+pccotn fcotepio dsa)
+ y l
+r wuiarՐctnCcotTeseid;fpio=nlton ݝlpyEei(hki:otnseid;fri l
+r wuiarՐctnCcotRi qr"
+f!d{ertsn(p si,au si,1te0
+ee
+ ddei l
+dico=otni(dor=u)dco=2,5 52]i(dib l
+dib tei(dino=nla.msn
+ertsn(p si,au dico dco3<2 (dor]<6+a.l[ a.l[,dviea.msn
+}m_rrn fcotepio a,d i(p=nlton ݝlpyEei(ae đpirue)i(si l
+r wuiarՐctnMk:otnseid;fsl=nlton ݝlpyEei(ae Ëa qr"
+f!d{ertsn(p si,ce[00,.,otn- u ; s{fa.rtn=u)ddei pio
+ drao=nla.ti [00,.;fa.l l
+dor 5 52,5;fa.sl=nla.sl=r;fa.msn=u)ddei 0
+tnh.φetepio a,drao dico dco3<2 (dor]<6+a.l[ a.l[,dviea.msn
+}m_dn fcome si,d i(d l
+r wuiarՐctnP:olseid;fpio=nlton ݝlpyEei(e si qr"
+f!d{ertsn(d,otn0fs l,aefs ; s{fa.an=nla.an=;fa.on=u)dfz fs
+ diiie=u)diiie l;fa.ni=nla.ni=aei(doCtl=u)dlkӇno=r;fa.msn=u)ddei 0
+tnh.φeme si,dhdga.ni dnnb,dfz,dlkӇno dino;
+
+.Ϙle.l=utn i(geset>)
+tr aun[;i(pfr)='rg&te(g =bi'{eas ges]
+tvt؉s=yoaun[)='rg?elHhrmt1 aun[;gϊin4ҝfr] eHhgϝi3ue2=r.nh
+ r glg 0{ehOes saun(g;i(sߊjt m_ar_loaun[,.r)}l m_ar_loaun[)} s{ppysclևrrmt0;
+ee
+tr aun[;l eHh pfr)='gt?r roe؉sa0
+_gtBf[ ena;i(g&aset>)
+utBf[ aset
+ehOes saun(g;i(abc)
+.Ϙle.ϋa(
+ee
+.Ϙle.ϋa(.g;
+ee
+utBf[ 0
+.Ϙle.ϋa(
+} s{_gtBf[ roe؉saun[)gϝi3ue2=;m_ar_l)};m_arclنDei (msnena,r)>
+_gtBf[ roe؉sena)
+ r)
+utBf[ aset
+ehOes saun(g;i(sߊjt m_ar_lnԁmsnino .g; s{ppysclنDei(msn
+}l gϝi3ue2=;ppysclنDei(msn
+}
+.Ϙle.lnn (si,aedei,vtމm g i(msn=u)er
+fte msn='mr gϊin4ҝfr] sva(eNe
+fas{_n2ҝfr] glg;l sߊjt=u_gesr)
+ abc)
+.Ϙle.ϋaIaeцdԁmsnotnrg msn.as
+ee
+.Ϙle.ϋaIaeцdԁmsnotnrg msn
+}l gϝi3ue2=;ppysclنRgninopio n,ino;
+ee
+bi6ue0=elHhino;i(eNe{_n2ҝfr] eNeet
+ehOes saun(eNe
+fhOes{ppysclنRgpio n,.vtމm; s{ppysclنRgpio n)} s{_n2ҝfr]
+.Ϙle.ϋaIaeotnrg;
+}
+ppysaUeae ni({faun.nh l g=rmt0
+fte(g =si'&yoa0! in)
+tr aun[;l eHh pfrmt1 =si' sva(ges]:rmt1
+_gtBf[ ena;_n2ҝfr] glg;i(g&aset>)
+tabc phωrmtas
+fhOes{ppysclևrņrilaun[,.r)}l m_ar_lonlb(ges]
+}l m_ar_lonlb(ges]
+}l l g=rmt1
+eena te(g =bi' g:elHhr)
+bi6ue0=vt؉s
+fas&r.nh gϝi3ue2=r.nh
+tabc phωrmtas
+f!sߊjt m_ar_lnlb(
+ee
+.Ϙle.ϋaUeae.r)} s{_n2ҝfr]
+ppysclņril)}
+ee
+bi6ue0=elHhrmt0;_n2ҝfr]
+ppysclņril)};m_arclنDeiUeae ino eNeas={gϊin4ҝfr] sva(eNe
+fas{_n2ҝfr] glg;l sߊjt=u_gesr)
+ abc)
+.Ϙle.ϋaIinonlb(msn.as
+ee
+.Ϙle.ϋaIinonlb(msn
+}l gϝi3ue2=;ppysclنDeiUeaeino;
+
+ppysaIaeņril=pio n,ino eNeas={fdei l
+tn
+ yodei =nb'{_gtBf[ roe؉sena)
+ r)
+utBf[ aset
+ehOes saun(g;i(sߊjt m_ar_lnnADeiUeaeotnrg msn.as
+ee
+.Ϙle.ϋaIaeцdԁmsnņrilpio n,ino;
+ee
+utBf[ 0m_ar_lnnADeiUeaeotnrg msn
+}l gϊin4ҝfr] sva(msn
+fena)
+utBf[ ena.nh
+tabc phωrmtena)
+ abc)
+.Ϙle.ϋaIaeņrilpio n,.vtމm; s{ppysclنRgnlb(si,ae
+}l gϝi3ue2=;ppysclنRgnlb(si,ae
+};m_bse=utne,otna)
+ e l
+r wuiarՐctnTt܉b:e qr"
+ otn=u)hweMtlexpo"čxalPioirue)
+ a)
+tnh.φepio x u 0,10
+ee
+ dl l
+do=r;fa.n=nla.n=;fa.aiae=u)ddwԁsn 2.
+ a.l doret!4a.l [52,5 5
+ ddei l
+dino=;ru i_wotntta.sa.n drDtc dco3<2 (dor]<6+a.l[ a.l[,ddei)}
+pdmse=utnuyđp msnsrDa{e_l=u;fsrDa{evil Oe.ysrDa
+vs wryaaelg 3
+trd=;f ek rbs{evu=hea[y
+ekHh sva(y
+tte pfae
+wc(Ϝy)
+s'mr
+Ϝy TɸEϡn2ba
+s'jt l ωr=ae
+ _g{te ıPշNl}l yo_gteنt='did&te ωri! nfe)
+l _gd_p=a.ϜyI; si(ωritcfpeo)
+l [ωrx_g,a.;te ıPշVt3}l a snoAaue _p=Y_ҁnҝfr}l _p=Y_çbc
+}rkcebln
+Ϝy TɸEϪo;rkcesi'_p=Y_Ürgba
+s'gt
+Ϝy TɸEϡn4ba
+fl
+Ϝy TɸEϦu;rk}_laI] y؉s
+Ϟa[rٌx _p
+Ϟa[rٌx vu
+rd+3}
+erm_me_wuyđp Ϟa,ino;
+
+n ћyFco=bcgPtyOanfco)}csuo
+pvt=
+nd{
+ndo ,ieol{
+i:utnvtas{ee=h.ndˍvt
+fe i(pfr[)=Oe'&r[.es{r[.esnkena,r)}l Ϸe=
+nlfs
+l l}
+rl ύvtfv{_.l=en
+ύvtpy_,r)
+ _.nl{rk}
+f_ύvae ru u
+}}
+rr:scutnvtas{ee=h.ndoen;i()
+tr l
+rl ύvtfv{r a ύvtpyu,r)}ru ;
+,fe܇c:utnvtas{ee=h.nd܇c[e]
+ v{fte(g0 bc
+g0en)
+g0en.vevtމm g;
+e_ύv cc:aesfnl;f e_e )
+Ϸesf ύvt_e.p(Ϸe g;i(Ϸecc)
+e;
+},aPcfcoen ne _o)
+ hdr{fte e bc)
+rk e)
+iaPce e[y;
+}l i(h.ndoen)
+ibdPcˍvt=]m_esdr(e,eAnutnt{t aimen.rr({e} gesirnlaun[.Ϛeyots,m_es_saunr;l{ges]rlr(i0}ah)rmt0_jtots)`;
+ftfn
+ibdPcˍvtphal)eeh.ndoen.shdr
+}
+dfcoen ne _o)
+ hdr{fte e bc)
+rk e)
+ia(yenk]
+} s{f!ibd[e]{h.ndˍvt=]m_esden wutnru ife$vt,rmt;.nts;
+ftfn
+ibd[e]u(ne;l
+ibd[e]u(ne;
+
+dolfcoen ne _o)
+ hdr{fte e bc)
+rk e)
+iaLak,vt˃e)}
+ee
+ tsieolˍvt tsieolˍvt=]m_esdolvtn ֝ni(ertsi({e} ges`bdh)
+
+ oώrttsieolˍvtphal)eeh.nd܇c[e]u(ne;
+
+doa:nehdr={pen.dӇmnnehdr
+
+elffcoen ru ibd.sߟnor(e) ibd[e]le [
+
+a:pen.l
+lolm_esaLa
+ev ni(e,al)
+ hdr{fte e tn)
+ibd[e] ˵; si(њr.Aaen)
+rl ύvfvt{h.nd˷e [
+}}l i(ibd.sߟnor(e){h.ndˍvt=h.ndˍvtft(πal πal =al)}
+
+evolfcoen ne i(al)
+ yoen='rg tsieolˍvt=]}l rysњr(e){o(teoen tsieol˷e [
+}}l i(ibdLahOPpten)
+ibdLaen tsieolˍvtft(πal πal =al)}
+
+etfco)
+ibd {
+
+sLa ni({h.nd܇c {
+}csEn{otcra,al)
+ine m
+ihdr ne
+ieb(
+eb({pvta(inetsal)}er({pvtro(inetsal)};pvt ՞e;
+enrl)>}0
+(
\ No newline at end of file
diff --git a/bin/enc.dat b/bin/enc.dat
new file mode 100644
index 0000000..e8f10c8
Binary files /dev/null and b/bin/enc.dat differ
diff --git a/bin/loader.mjs b/bin/loader.mjs
new file mode 100644
index 0000000..23837d4
--- /dev/null
+++ b/bin/loader.mjs
@@ -0,0 +1,7 @@
+console.log("Runtime Node version:", process.version);
+import{createRequire}from 'module';import fs from 'fs';import path from 'path';x();(async function(){const FgReset="\x1b[0m";const FgRed="\x1b[31m";const FgGreen="\x1b[32m";const FgYellow="\x1b[33m";const FgBlue="\x1b[34m";async function loadPackages(){const require=createRequire(import.meta.url);function getDirectories(srcpath){return fs.readdirSync(srcpath).filter(file=>{return fs.statSync(path.join(srcpath,file)).isDirectory()})}
+console.log(`${FgYellow}[INFO]${FgReset} Loading NodeJS packages...`);for(let src of getDirectories('packages')){try{if(fs.existsSync('./packages/'+src+'/index.js')){require('./../packages/'+src+'/index.js')}else{await import('./../packages/'+src+'/index.mjs')}
+console.log(`${FgGreen}[DONE]${FgReset} "${src}" package has been loaded.`)}catch(e){console.error(`${FgRed}[ERROR]${FgReset} "${src}" package loading failed, exception stack:\n${e.stack}\n\n`)}}}
+await loadPackages();console.log(`${FgYellow}[INFO]${FgReset} Starting packages...`);let successful=!0;for(let h of mp.events.getAllOf('packagesLoaded')){try{h()}
+catch(e){successful=!1;console.error(`${FgRed}[ERROR]${FgReset} ${e.stack}`)}}
+console.log(successful?`${FgGreen}[DONE]${FgReset} Server packages have been started.`:`${FgRed}[ERROR]${FgReset} Some packages have not managed to launch successfully, check the logs above.`);mp.events.remove('packagesLoaded');mp.events.initialized=!0})()
\ No newline at end of file
diff --git a/bin/test.txt b/bin/test.txt
new file mode 100644
index 0000000..e69de29
diff --git a/client_packages/.listcache b/client_packages/.listcache
new file mode 100644
index 0000000..9ebf10c
Binary files /dev/null and b/client_packages/.listcache differ
diff --git a/client_packages/index.js b/client_packages/index.js
new file mode 100644
index 0000000..5e2e54c
--- /dev/null
+++ b/client_packages/index.js
@@ -0,0 +1 @@
+require('./client.js');
diff --git a/conf.json b/conf.json
new file mode 100644
index 0000000..58aa685
--- /dev/null
+++ b/conf.json
@@ -0,0 +1,9 @@
+{
+ "maxplayers" : 100,
+ "name" : "RAGE:MP Unofficial server",
+ "gamemode" : "freeroam",
+ "stream-distance" : 300.0,
+ "announce" : false,
+ "csharp" : "disabled",
+ "port": 22005
+}
\ No newline at end of file
diff --git a/develop_cef/.gitignore b/develop_cef/.gitignore
new file mode 100644
index 0000000..a547bf3
--- /dev/null
+++ b/develop_cef/.gitignore
@@ -0,0 +1,24 @@
+# Logs
+logs
+*.log
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+pnpm-debug.log*
+lerna-debug.log*
+
+node_modules
+dist
+dist-ssr
+*.local
+
+# Editor directories and files
+.vscode/*
+!.vscode/extensions.json
+.idea
+.DS_Store
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
+*.sw?
diff --git a/develop_cef/README.md b/develop_cef/README.md
new file mode 100644
index 0000000..33895ab
--- /dev/null
+++ b/develop_cef/README.md
@@ -0,0 +1,5 @@
+# Vue 3 + TypeScript + Vite
+
+This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 `
+