diff --git a/resources/25Emergency/__resource.lua b/resources/25Emergency/23gmcleo/__resource.lua
similarity index 100%
rename from resources/25Emergency/__resource.lua
rename to resources/25Emergency/23gmcleo/__resource.lua
diff --git a/resources/25Emergency/23gmcleoslick/__resource.lua b/resources/25Emergency/23gmcleoslick/__resource.lua
new file mode 100644
index 000000000..fdc8dfb3a
--- /dev/null
+++ b/resources/25Emergency/23gmcleoslick/__resource.lua
@@ -0,0 +1,17 @@
+resource_manifest_version '77731fab-63ca-442c-a67b-abc70f28dfa5'
+
+-- Leaked By: Leaking Hub | Joshua Y. | https://discord.gg/aXWXXst
+
+files {
+ 'vehicles.meta',
+ 'carvariations.meta',
+ 'carcols.meta',
+ 'handling.meta',
+ 'vehiclelayouts.meta',
+}
+
+data_file 'HANDLING_FILE' 'handling.meta'
+data_file 'VEHICLE_METADATA_FILE' 'vehicles.meta'
+data_file 'CARCOLS_FILE' 'carcols.meta'
+data_file 'VEHICLE_VARIATION_FILE' 'carvariations.meta'
+data_file 'VEHICLE_LAYOUTS_FILE' 'vehiclelayouts.meta'
diff --git a/resources/25Emergency/23sierrafire/__resource.lua b/resources/25Emergency/23sierrafire/__resource.lua
new file mode 100644
index 000000000..fdc8dfb3a
--- /dev/null
+++ b/resources/25Emergency/23sierrafire/__resource.lua
@@ -0,0 +1,17 @@
+resource_manifest_version '77731fab-63ca-442c-a67b-abc70f28dfa5'
+
+-- Leaked By: Leaking Hub | Joshua Y. | https://discord.gg/aXWXXst
+
+files {
+ 'vehicles.meta',
+ 'carvariations.meta',
+ 'carcols.meta',
+ 'handling.meta',
+ 'vehiclelayouts.meta',
+}
+
+data_file 'HANDLING_FILE' 'handling.meta'
+data_file 'VEHICLE_METADATA_FILE' 'vehicles.meta'
+data_file 'CARCOLS_FILE' 'carcols.meta'
+data_file 'VEHICLE_VARIATION_FILE' 'carvariations.meta'
+data_file 'VEHICLE_LAYOUTS_FILE' 'vehiclelayouts.meta'
diff --git a/resources/25Emergency/24rampumper/__resource.lua b/resources/25Emergency/24rampumper/__resource.lua
new file mode 100644
index 000000000..fdc8dfb3a
--- /dev/null
+++ b/resources/25Emergency/24rampumper/__resource.lua
@@ -0,0 +1,17 @@
+resource_manifest_version '77731fab-63ca-442c-a67b-abc70f28dfa5'
+
+-- Leaked By: Leaking Hub | Joshua Y. | https://discord.gg/aXWXXst
+
+files {
+ 'vehicles.meta',
+ 'carvariations.meta',
+ 'carcols.meta',
+ 'handling.meta',
+ 'vehiclelayouts.meta',
+}
+
+data_file 'HANDLING_FILE' 'handling.meta'
+data_file 'VEHICLE_METADATA_FILE' 'vehicles.meta'
+data_file 'CARCOLS_FILE' 'carcols.meta'
+data_file 'VEHICLE_VARIATION_FILE' 'carvariations.meta'
+data_file 'VEHICLE_LAYOUTS_FILE' 'vehiclelayouts.meta'
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/.fxap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/.fxap
new file mode 100644
index 000000000..666a183d0
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/.fxap differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/README.md b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/README.md
new file mode 100644
index 000000000..82ce7666c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/README.md
@@ -0,0 +1,10 @@
+# Unlock file for customization :
+
+gn_bc_ext_firestation_txd.ytd
+gn_bc_firestation_txd.ytd
+prop_gn_fire_logo_01.ydr
+prop_gn_fire_logo_02.ydr
+prop_gn_fire_logo_dcl_01.ydr
+prop_gn_fire_logo_dcl_02.ydr
+prop_gn_fire_logo_dcl_03.ydr
+prop_gn_fire_logo_def_02.ydr
\ No newline at end of file
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/audio/audio_firestation_game.dat151.rel b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/audio/audio_firestation_game.dat151.rel
new file mode 100644
index 000000000..1a8ea9b77
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/audio/audio_firestation_game.dat151.rel differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/audio/int_firestation_game.dat151.rel b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/audio/int_firestation_game.dat151.rel
new file mode 100644
index 000000000..5c36b3a11
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/audio/int_firestation_game.dat151.rel differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/fxmanifest.lua b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/fxmanifest.lua
new file mode 100644
index 000000000..844522ad5
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/fxmanifest.lua
@@ -0,0 +1,37 @@
+fx_version 'cerulean'
+game 'gta5'
+
+author 'G&N_s Studio'
+description 'Blaine County - Fire Department'
+version '4.0.0'
+
+this_is_a_map 'yes'
+
+dependencies {
+ '/gameBuild:2189',
+ 'cfx_gn_collection'
+}
+
+data_file 'AUDIO_GAMEDATA' 'audio/audio_firestation_game.dat'
+data_file 'AUDIO_GAMEDATA' 'audio/int_firestation_game.dat'
+data_file 'TIMECYCLEMOD_FILE' 'gn_fire_timecycle.xml'
+
+files {
+ 'audio/audio_firestation_game.dat151.rel',
+ 'audio/int_firestation_game.dat151.rel',
+ 'gn_fire_timecycle.xml'
+}
+
+escrow_ignore {
+ 'stream/base/**/*',
+ 'stream/**/*.ytd',
+ 'stream/interior/ydr/prop_gn_fire_logo_01.ydr',
+ 'stream/interior/ydr/prop_gn_fire_logo_02.ydr',
+ 'stream/interior/ydr/prop_gn_fire_logo_dcl_01.ydr',
+ 'stream/interior/ydr/prop_gn_fire_logo_dcl_02.ydr',
+ 'stream/interior/ydr/prop_gn_fire_logo_dcl_03.ydr',
+ 'stream/interior/ydr/prop_gn_fire_logo_def_02.ydr',
+ 'stream/exterior/ydr/gn_bc_firestation_details.ydr'
+}
+
+dependency '/assetpacks'
\ No newline at end of file
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/gn_fire_timecycle.xml b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/gn_fire_timecycle.xml
new file mode 100644
index 000000000..eb99a2dba
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/gn_fire_timecycle.xml
@@ -0,0 +1,30 @@
+
+
+ 0.000 0.000
+ 0.410 0.000
+ 0.000 1.000
+ 0.000 1.000
+ 0.000 1.000
+ 0.400 0.000
+ 0.000 0.000
+ 0.875 1.000
+ 0.910 1.000
+ 0.894 1.000
+ 0.400 0.000
+ 0.839 1.000
+ 0.859 1.000
+ 0.875 1.000
+ 0.200 0.000
+ 0.600 0.000
+ 0.600 0.000
+ 0.750 0.000
+ 73.000 73.000
+ 0.000 0.000
+ 5.000 0.000
+ 5.000 0.000
+ 50.000 0.000
+ 20.000 0.000
+ 0.000 0.000
+ 0.700 0.000
+
+
\ No newline at end of file
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/1303082753.ymt b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/1303082753.ymt
new file mode 100644
index 000000000..5b9933b60
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/1303082753.ymt differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/_manifest.ymf b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/_manifest.ymf
new file mode 100644
index 000000000..98db6e807
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/_manifest.ymf differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/country_02_metadata_011_strm.ytyp b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/country_02_metadata_011_strm.ytyp
new file mode 100644
index 000000000..5ce432153
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/country_02_metadata_011_strm.ytyp differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_0.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_0.ybn
new file mode 100644
index 000000000..92a0f3755
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_0.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_5.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_5.ybn
new file mode 100644
index 000000000..6caf5d511
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_5.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_bldn_gas_slod1_children.ydd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_bldn_gas_slod1_children.ydd
new file mode 100644
index 000000000..67d5dbae0
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_bldn_gas_slod1_children.ydd differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_carwash_forecourt_dec.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_carwash_forecourt_dec.ydr
new file mode 100644
index 000000000..6ebbce29e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_carwash_forecourt_dec.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b810dbb23822fff31d61cbc098a1dfce52baa43151626533e6167231bd04c67d
+size 299069
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_carwash_forecourta_dec.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_carwash_forecourta_dec.ydr
new file mode 100644
index 000000000..36a4acd63
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_carwash_forecourta_dec.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0ada4453aca31e089475c3f63ffab6b29de138f9ba91f3a22fcc66306577ec36
+size 1123749
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_emissive_gasa.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_emissive_gasa.ydr
new file mode 100644
index 000000000..df27be121
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_emissive_gasa.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a89d4411bddb74de7fb230f6420baf40a7a7530a0f643e832632c1c3a964e471
+size 30736
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_land_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_land_04.ydr
new file mode 100644
index 000000000..78306d8a7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_land_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:56fb15ad362822c0ede35bb3e42a26e05ee9d2bef9db601fc5932a7a4c38ce95
+size 404430
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_land_slod1_children.ydd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_land_slod1_children.ydd
new file mode 100644
index 000000000..542af5f3e
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_land_slod1_children.ydd differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_props_prop17_slod_children.ydd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_props_prop17_slod_children.ydd
new file mode 100644
index 000000000..28facb7d9
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_04_props_prop17_slod_children.ydd differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_occl_00.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_occl_00.ymap
new file mode 100644
index 000000000..f2091453f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_occl_00.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d7ff3f46bcbf8eded0bb74918ed9b18a7528baf077487a6accdd2a7374b7421d
+size 20125
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_rdprops_cs2_wires42.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_rdprops_cs2_wires42.ydr
new file mode 100644
index 000000000..1f4575895
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_rdprops_cs2_wires42.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a0494082e19b67d73d8b9448871184a0c122a897e40bd7c2fd12ad1a11146233
+size 2911
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_rdprops_cs2_wires51.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_rdprops_cs2_wires51.ydr
new file mode 100644
index 000000000..21c4dd037
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_rdprops_cs2_wires51.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:670b821ece97c9c1bcb6ac00f4094787657b0997a55d421c81586eaf3e09cd96
+size 10031
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_roads_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_roads_01.ydr
new file mode 100644
index 000000000..f3da07821
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_roads_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:80620744915d2c18a0b04dcf25386f88b3adb59454a976442c8e5ba864343f18
+size 78112
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_roads_wires_elec_stan15.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_roads_wires_elec_stan15.ydr
new file mode 100644
index 000000000..cc5d459b1
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_roads_wires_elec_stan15.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c999d44bb13783e0dd0342573520fb24984eaa7cfe47a52830b9a7855705433f
+size 1749
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_roads_wires_tele_heavy20.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_roads_wires_tele_heavy20.ydr
new file mode 100644
index 000000000..37a599da6
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs2_roads_wires_tele_heavy20.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:316176b2fbb81f47ad4072abe89e3292a4531f8c80343e6b4a8dcb9dcdde69ad
+size 2892
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs4_rd_props_xwire20.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs4_rd_props_xwire20.ydr
new file mode 100644
index 000000000..0409720ec
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs4_rd_props_xwire20.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dc62a7e12d9c1d9e0f8a22ec711e2d972b954e72939623ac59594b08825273a5
+size 6132
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs4_rd_props_xwire38.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs4_rd_props_xwire38.ydr
new file mode 100644
index 000000000..1e323569e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs4_rd_props_xwire38.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f57b5d34e4b6ec296e04eeb086fcb84300d4d338220d4dea5e0a17c2f02f1497
+size 5985
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs4_roadsb02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs4_roadsb02.ydr
new file mode 100644
index 000000000..8fb0b624f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/cs4_roadsb02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eefb5a9ac38a260da7359d143813c0f9a6b7211a2f55e402fa7247ceef97ad37
+size 90705
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_critical_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_critical_0.ymap
new file mode 100644
index 000000000..9d384ae30
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_critical_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:24e679dee194f95017dbc93ff6a50a8ea4f0d51651c5f2c1186be10f9227dad3
+size 12723
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_grass_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_grass_0.ymap
new file mode 100644
index 000000000..04f83ba54
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_grass_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:83f0fe6ca076023faf0b07fd02e95d40ce7e95082afc8c09c2edb45a178b867c
+size 500856
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_long_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_long_0.ymap
new file mode 100644
index 000000000..01eccf9b6
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_long_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9af73b17b63e7fe04c71572cae944f63859f964424187c98459a4edf714f3375
+size 11617
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_strm_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_strm_0.ymap
new file mode 100644
index 000000000..58a4dd14e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_strm_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c44c2e08106d8d721d31b879686a28d9558da2d227030fa5787c00ed5190b737
+size 5389
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_strm_1.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_strm_1.ymap
new file mode 100644
index 000000000..12f5d5e31
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hei_cs2_04_strm_1.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:684008ebf860d8a3790f010493c13eb725dc08ba93cc81d0694f6247a0efcddf
+size 11131
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hi@cs2_04_0.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hi@cs2_04_0.ybn
new file mode 100644
index 000000000..9af2571ac
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/hi@cs2_04_0.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/sf_phones.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/sf_phones.ymap
new file mode 100644
index 000000000..0b3098271
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/base/sf_phones.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b057039e12a2d736babc9e4108846a7637eef5261eb99e232edb6b645d9f8e1c
+size 2145
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ybn/gn_bc_firestation_0.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ybn/gn_bc_firestation_0.ybn
new file mode 100644
index 000000000..22541047f
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ybn/gn_bc_firestation_0.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ybn/hi@gn_bc_firestation_0.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ybn/hi@gn_bc_firestation_0.ybn
new file mode 100644
index 000000000..dd0e769d5
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ybn/hi@gn_bc_firestation_0.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydd/gn_bs_firestation_slod1_children.ydd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydd/gn_bs_firestation_slod1_children.ydd
new file mode 100644
index 000000000..2c1fd26b7
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydd/gn_bs_firestation_slod1_children.ydd differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_build.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_build.ydr
new file mode 100644
index 000000000..6635d9881
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_build.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6e5023a958f2d1813c886d8dda3fdd81e3fbdf80c94558c56e0a8daebf0876f1
+size 80788
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_dcl.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_dcl.ydr
new file mode 100644
index 000000000..f536c828e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_dcl.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e241e87301fb4a9ea6ff64b6bb58a1c884b7f250bbe7d205bc02f1b54eb43f8
+size 11455
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_details.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_details.ydr
new file mode 100644
index 000000000..34708a608
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_details.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8a728e298e6c808867d7921cbaff6cfdb2c1278d9b987781c0de1cca7fc47acc
+size 183285
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_ground.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_ground.ydr
new file mode 100644
index 000000000..ce1b51f76
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_ground.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a20a8f64c0f971419d06bd3db7e8276322ea6b8bcd09f1e79dfd881a17198039
+size 123379
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_ground_dcl.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_ground_dcl.ydr
new file mode 100644
index 000000000..dbf02031f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_ground_dcl.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a9942d7df61a1509528724ff3c6999b690206febc2ccb409a6cd22f509526520
+size 5212
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_tower.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_tower.ydr
new file mode 100644
index 000000000..a85640249
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_tower.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:06a05b50f47909b2465b1419e476cb1419fe9077e25879be43d4d480554d78ed
+size 91309
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_tower_decals.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_tower_decals.ydr
new file mode 100644
index 000000000..074ac42da
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_tower_decals.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ad7ef0cc185e53d113684c37158db575246ac725a4b9c78aaf4a1a197158364
+size 13973
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_tower_glues.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_tower_glues.ydr
new file mode 100644
index 000000000..082b368de
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_tower_glues.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cd2562bb2a0b4c08cb5ef122d3873e53c943d1ed5b4d4e2bf672842b6c2db8f5
+size 4372
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_tower_stairs.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_tower_stairs.ydr
new file mode 100644
index 000000000..5fd6a80fa
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_tower_stairs.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4434192acd8525c8556cdaac1b66e8342689e908b9b60ce85352ecd6a777e213
+size 44261
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_wire.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_wire.ydr
new file mode 100644
index 000000000..a6765e3f0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_bc_firestation_wire.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:843aa124431efc8753f8c07f6f34ef900ebc80475b71e2ffb7300f0a29fdc11f
+size 4686
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_fire_emissive_night.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_fire_emissive_night.ydr
new file mode 100644
index 000000000..bf2545a98
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ydr/gn_fire_emissive_night.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e36d5047bc39154bf90bf85939ae4d310962a34f973adb50a949e78265b7b616
+size 392630
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ymap/gn_bc_firestation_criticals.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ymap/gn_bc_firestation_criticals.ymap
new file mode 100644
index 000000000..f752abf66
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ymap/gn_bc_firestation_criticals.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:53c55d8c4269e7a2b913a98b7aa5c6ac6e246354a33031c35d26347c025d38d4
+size 3666
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ymap/gn_bc_firestation_lod.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ymap/gn_bc_firestation_lod.ymap
new file mode 100644
index 000000000..81e4ece36
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ymap/gn_bc_firestation_lod.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:82d085b3e42079a3ba50ff388de90db07dafa83edff3192ca460fa7bdf36f0b6
+size 1231
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ymap/gn_bc_firestation_strm.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ymap/gn_bc_firestation_strm.ymap
new file mode 100644
index 000000000..57cdaf01f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ymap/gn_bc_firestation_strm.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1b1fa6d0cefb0e16541865b8a626c05223d1c6caf3b1fb8cf61d8ed7fadb0a08
+size 1421
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ymap/int_gn_bc_firestation_milo.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ymap/int_gn_bc_firestation_milo.ymap
new file mode 100644
index 000000000..e2cd72c28
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ymap/int_gn_bc_firestation_milo.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dd6bff55bbc99a9aec334c5d63bf5b731b9c328df492aa6b3ee8daaee63d1b61
+size 1233
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ytd/gn_bc_firestation_lod_txd.ytd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ytd/gn_bc_firestation_lod_txd.ytd
new file mode 100644
index 000000000..ba477bcf5
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ytd/gn_bc_firestation_lod_txd.ytd
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4f182539262f6ad9f4eac1a634552976e88080f26f12cd3469196d3b01a5f537
+size 66803
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ytyp/gn_bc_firestation_metadata.ytyp b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ytyp/gn_bc_firestation_metadata.ytyp
new file mode 100644
index 000000000..15370b97e
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ytyp/gn_bc_firestation_metadata.ytyp differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ytyp/gn_bc_firestation_strm.ytyp b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ytyp/gn_bc_firestation_strm.ytyp
new file mode 100644
index 000000000..0e3e8976b
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/exterior/ytyp/gn_bc_firestation_strm.ytyp differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ybn/hi@int_gn_bc_firestation.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ybn/hi@int_gn_bc_firestation.ybn
new file mode 100644
index 000000000..d4cdd5552
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ybn/hi@int_gn_bc_firestation.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ybn/int_gn_bc_firestation.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ybn/int_gn_bc_firestation.ybn
new file mode 100644
index 000000000..a009b2abb
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ybn/int_gn_bc_firestation.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_ext_firestation_txd.ytd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_ext_firestation_txd.ytd
new file mode 100644
index 000000000..6240c9b8e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_ext_firestation_txd.ytd
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5bd2951f986a64d0577c615a78f5569560726a1fde87d84fd9b01efb6eab020d
+size 8209366
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_bedroom_details.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_bedroom_details.ydr
new file mode 100644
index 000000000..76539d930
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_bedroom_details.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5766c29c059f0f5558efe4b22bb9a55eced61b2efa80b1cc0b5efd9ad7af4342
+size 104779
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_bedroom_proxy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_bedroom_proxy.ydr
new file mode 100644
index 000000000..c5616c624
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_bedroom_proxy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:df814a9afd41a32ab1d585d927f0f3086d69f409da81db1e0eada1e0c45273a9
+size 99175
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_corridor_m_details.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_corridor_m_details.ydr
new file mode 100644
index 000000000..16eef4d57
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_corridor_m_details.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:43977c21bbf8bbff54535dfdee587a57156f89a124424ab97fb422d2d3071159
+size 118838
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_corridor_m_proxy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_corridor_m_proxy.ydr
new file mode 100644
index 000000000..25320d445
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_corridor_m_proxy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:72f20a51176787bc775a28f396f73e1e33966f1c80da68540e4362ac98486554
+size 180464
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_cpt_off_details.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_cpt_off_details.ydr
new file mode 100644
index 000000000..c77374f38
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_cpt_off_details.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:694511f2c64f334ba0e272903da6a0b844b03175b871ccecd8dbce61c109daab
+size 13365
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_cpt_off_proxy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_cpt_off_proxy.ydr
new file mode 100644
index 000000000..dc54bc1d9
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_cpt_off_proxy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:52ed272008940b5b7d9be2c3147c1b3dab1729708d0521bf8bbdf909ab202ec6
+size 82468
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_cpt_off_win_frame.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_cpt_off_win_frame.ydr
new file mode 100644
index 000000000..aafcfe313
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_cpt_off_win_frame.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:40a678684c9de6bcf1b1052969e5f170b46dee24cea545f71d30102c5133e128
+size 40859
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_dispatch_details.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_dispatch_details.ydr
new file mode 100644
index 000000000..1396d198b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_dispatch_details.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:454083188497216f7a660d2259975f2af6c581bf008a66a948f42ca89110b4dc
+size 71984
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_dispatch_proxy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_dispatch_proxy.ydr
new file mode 100644
index 000000000..bac022b8e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_dispatch_proxy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b779dbb821574ec112c6200d22c7b645af920bb846503a781e9977fa1dad842
+size 90190
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_duct.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_duct.ydr
new file mode 100644
index 000000000..6c46e8d3a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_duct.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19c87a9182d6c954c5ff357bc073939931881d3cd0fcdd0089654a914bb65cc4
+size 80858
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_01.ydr
new file mode 100644
index 000000000..7ce0d45f3
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:43bbd7c53cb8f10b0a22faa9415a80892d851454337681add85e7241ec6a6308
+size 88047
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_02.ydr
new file mode 100644
index 000000000..8ad0f0c5a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fb32660c16bdfde6b5c1cd9d18d92b38204c68df5bd07031c53e9604dceebaaa
+size 204791
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_03.ydr
new file mode 100644
index 000000000..3eec139a5
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:43b7a4198a2bc2bd7f8884e9af92aa039429a3e8a7172d5518a2d674d87fcf13
+size 88486
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_04.ydr
new file mode 100644
index 000000000..e80171613
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1cdb4328d4e21debea475a58c1cddfc7ea0f1bca4315ba90e8fca5a8b883a3ed
+size 199105
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_05.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_05.ydr
new file mode 100644
index 000000000..030083cb0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_05.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dea35017c1ea42679466f3528287170f8cce2ab3d6cff5cf93a2717941ef62de
+size 87130
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_06.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_06.ydr
new file mode 100644
index 000000000..faae47b48
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_06.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:020fbeeaa9c12d7987154a7b0db360ed3a3037282e468d904456148fd29bf24e
+size 202869
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_07.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_07.ydr
new file mode 100644
index 000000000..66a1aafbd
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_07.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8b737ae64d9d75e4f1a7eee7177e1daa9baf31f9598c036bb090a9fbde3d3141
+size 88047
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_08.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_08.ydr
new file mode 100644
index 000000000..da5136724
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_coils_08.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f8ab7df23a3550c69dad38a4ce3f5bd9355e91e05451f9c70fae2722f9d68973
+size 199105
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_decals.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_decals.ydr
new file mode 100644
index 000000000..d08be8ee5
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_decals.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9f99c2628f56e5294bf747dd9f96714f9decae9d2c9751664bc955638e6bdc01
+size 20515
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_proxy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_proxy.ydr
new file mode 100644
index 000000000..f03941332
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_proxy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:578ad534252594ee6cb1c7526063490f0aad202dcf2a79738a2160a4bed72ecb
+size 470048
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_rails.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_rails.ydr
new file mode 100644
index 000000000..e89fd0232
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_rails.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:816cad438f68083f7bd85a8fae77bd2d8603da0e3341b46a65d50f9a7fb9c86f
+size 504750
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_tooldesk.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_tooldesk.ydr
new file mode 100644
index 000000000..193fa5bb0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_tooldesk.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b985c7b166eda009600febbf89d91050472102874ea516ff74407a5f725b0cae
+size 7958
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_walls.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_walls.ydr
new file mode 100644
index 000000000..779f7c6b9
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_garage_walls.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5fbf83a8465f4ffb650b95daa83f84217eaad0e9cb1b426833aac317b2705d5a
+size 17702
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_kitchen.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_kitchen.ydr
new file mode 100644
index 000000000..89b7e682c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_kitchen.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:be09ac820965a6d7a9348ff8f9bd0ed492080a4d4f77021db03d8c2d6325af71
+size 231188
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_kitchen_details.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_kitchen_details.ydr
new file mode 100644
index 000000000..5b42b55cd
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_kitchen_details.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:27b6a63746cbf32afde209ef380a7ce9580cf206838075d5e6a10efb764309d9
+size 120327
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_kitchen_foodporn.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_kitchen_foodporn.ydr
new file mode 100644
index 000000000..1f5a241d5
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_kitchen_foodporn.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1cf249333ab665231ee3cae42dd3ef90ba4cb73fe26785587fe719ca0c4ceab7
+size 981958
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_kitchen_proxy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_kitchen_proxy.ydr
new file mode 100644
index 000000000..3032f2d76
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_kitchen_proxy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a62b7066cc4f38e6bdd94919b57a5f40c4f85cac8dd7ce5ec7dd9e90535a7347
+size 120119
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_lobby_details.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_lobby_details.ydr
new file mode 100644
index 000000000..de10763a3
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_lobby_details.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d89ea5f5d2fc4d80c1f18ba0b5b0b2ee944c683d1edf10fcf3fa9e493c4e150d
+size 59101
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_lobby_enterframe.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_lobby_enterframe.ydr
new file mode 100644
index 000000000..31324da3f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_lobby_enterframe.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d37875abde4113ccf7e451154506082f3e27d2bf18e4eb2fbeec3a8ee1dc788f
+size 17402
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_lobby_proxy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_lobby_proxy.ydr
new file mode 100644
index 000000000..72b777473
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_lobby_proxy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d12b1d9d90d0109ae543916ffd73321a56c91c2950c7c76c284c9e2cad381790
+size 208899
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_locker_per_details.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_locker_per_details.ydr
new file mode 100644
index 000000000..d2f2804e7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_locker_per_details.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2204591ce5f03fb0aaff90ead595de7b063730c0408c8532cff01af216efb5ee
+size 226178
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_locker_per_miror.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_locker_per_miror.ydr
new file mode 100644
index 000000000..3b5f1df65
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_locker_per_miror.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:780a64aa619881793c91882c132e00fe7eb4586b42ecb2bd69a486691d0f79c3
+size 5263
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_locker_per_proxy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_locker_per_proxy.ydr
new file mode 100644
index 000000000..f01825e25
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_locker_per_proxy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d7512319129db3ff480bbf53c8af961741e9f27437902c033405051671bd77f9
+size 130088
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_locker_prop_proxy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_locker_prop_proxy.ydr
new file mode 100644
index 000000000..7b77f2874
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_locker_prop_proxy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00cfd10c678b36fe0bbc9fa23eecf7bc6b233e73e26f33aa59b2f43c64c0e32d
+size 44934
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_meeting_details.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_meeting_details.ydr
new file mode 100644
index 000000000..395c681dd
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_meeting_details.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bc17b29a0aeba8c594e6f10c77e457891b527e48096987369aac27778c851f6d
+size 10543
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_meeting_proxy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_meeting_proxy.ydr
new file mode 100644
index 000000000..493314e05
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_meeting_proxy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2b59c6535f0077f73f17b99c80ef92540448f8962b62b7d0a1fedee7b9927624
+size 89681
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_openspace_details.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_openspace_details.ydr
new file mode 100644
index 000000000..f49f38680
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_openspace_details.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1f86b3ec94a8879e8d6d2fb27141fd36e8750877247dba610c32f872b5927828
+size 66580
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_openspace_proxy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_openspace_proxy.ydr
new file mode 100644
index 000000000..614723896
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_openspace_proxy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5b6a03d936498e9393942d2af9f6bd8bce3c047a5d8516ee380a76758dfb5373
+size 112682
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_reception_details.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_reception_details.ydr
new file mode 100644
index 000000000..3904978ca
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_reception_details.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:267ef7f6b80f10ecba225f1c341092cd6cde734f7edf6a7f7ef38154d3a1e825
+size 40492
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_reception_proxy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_reception_proxy.ydr
new file mode 100644
index 000000000..929d3fd01
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_reception_proxy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0b742adfa27bc2afa378c7b27c4a37d33894b7a07a97cd347e7b29092ee68c1d
+size 84506
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_shell.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_shell.ydr
new file mode 100644
index 000000000..e9e6479cd
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_shell.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ffdab92338bf583bd93c3f17c89ea88481f4b1d6483bb29a00e2468eec4ff2e6
+size 119079
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_training_details.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_training_details.ydr
new file mode 100644
index 000000000..72ff07124
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_training_details.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9923316a55f4a3d1b3f6371b4bf952e3b46eb01f533cf086f5d3c14781df88d5
+size 61796
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_training_proxy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_training_proxy.ydr
new file mode 100644
index 000000000..3850763fb
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_bc_firestation_training_proxy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ed30ac0afbe8252cf8bbd2a1918d8e86e35f6a704aaeedb47b875738ad317deb
+size 73474
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_01.ydr
new file mode 100644
index 000000000..7fde7c3e7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dd85a0b774804dbac5090fd3a538b11390f20507afc0d877151f9cfb71462958
+size 30923
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_02.ydr
new file mode 100644
index 000000000..5e6b4bcbd
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a18deadac97e9816dba8dd43e3820312a42ee4289ef9f83d7646875a376e50cb
+size 29143
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_03.ydr
new file mode 100644
index 000000000..5b21212da
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44a09d14bd10756a5ee199cda4792a1ceee0e1074dd0aee7c51eda1d39992d04
+size 25871
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_04.ydr
new file mode 100644
index 000000000..cb283bba4
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d91f7675f48b5302791cf80e31425806452723aa0aa43ec74e4bf75323dbb576
+size 19549
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_05.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_05.ydr
new file mode 100644
index 000000000..8bfc1655c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_05.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d558d8a5591dc5fa95999ce2a00afb345bd6ba73e0b0cbd0ba123ce0db7ed012
+size 18453
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_06.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_06.ydr
new file mode 100644
index 000000000..98eea5458
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_06.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:366364dcfd1d15d632e4f16235583e27b14bfedb9cb8e4353489ffbf757ba982
+size 16741
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_07.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_07.ydr
new file mode 100644
index 000000000..42b581228
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_07.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4814c79c2c410bbee55791cd5254417affeec185df6fbdcec9537f6bc7ea7615
+size 38233
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_08.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_08.ydr
new file mode 100644
index 000000000..927c2179b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_door_08.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6858504a12d7164bd7906bdab946365f354d2a527c2c8164e319a4da5f28523f
+size 26325
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_enterdoor_d.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_enterdoor_d.ydr
new file mode 100644
index 000000000..f997fdab0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_enterdoor_d.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e1e846feb7fd96a96240737ca3659a29807d6798be32a9bdb8eee23e2abe5ae8
+size 8635
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_enterdoor_g.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_enterdoor_g.ydr
new file mode 100644
index 000000000..a25a4ff6d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_enterdoor_g.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3dc17df417624251abe243eb7a9c8bdbcad6bfe875aa09fb3bb24e6a1acec099
+size 8094
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_garage_door_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_garage_door_01.ydr
new file mode 100644
index 000000000..ad2431304
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_garage_door_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a8df0b79a3d268ddb6be50c07532b38110bf8c1684a0e5002b3a60da7aba0a61
+size 44483
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_wc_door_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_wc_door_01.ydr
new file mode 100644
index 000000000..1a7595852
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_fire_wc_door_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bed37f67748c4cea9c987c4f650756cd9ac64a7ccaa8c74b7f50e0eb77ce3699
+size 8182
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_ceiling_lamp.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_ceiling_lamp.ydr
new file mode 100644
index 000000000..456563854
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_ceiling_lamp.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:69e94e779c03a170e9765acffe4b54243b8f1e65ddc772d6bd5602abaac32f2f
+size 18171
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_corridor_decals_sandy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_corridor_decals_sandy.ydr
new file mode 100644
index 000000000..e81f89095
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_corridor_decals_sandy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2719a88c13b1d53aa87524aa402f800f2db976dd893be42a7a6a85aba9fce24a
+size 978
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_lobby_details_sandy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_lobby_details_sandy.ydr
new file mode 100644
index 000000000..ffe4450fb
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_lobby_details_sandy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8c0deb407f0d444539d5d4c743e892b70c30d66f751e04e701665226c1c5b585
+size 45835
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_meeting_details_sandy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_meeting_details_sandy.ydr
new file mode 100644
index 000000000..5db29fd5e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_meeting_details_sandy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9438fbdc4c8c343b8d4195865835b2e0cd7719254d8c89642414d966de9560b1
+size 27562
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_openspace_decals_sandy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_openspace_decals_sandy.ydr
new file mode 100644
index 000000000..82d7f3b68
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_openspace_decals_sandy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c89fc4cc6f8039428bf69c05641be15f1f1c0e97e8c84dbe94a26ad8c8ee6ad9
+size 1141
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_reception_proxy_sandy.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_reception_proxy_sandy.ydr
new file mode 100644
index 000000000..1e5885a38
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/gn_firestation_reception_proxy_sandy.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:04091eba451fa51084dcc6fac5082da441009173927e8cb769b71bf622845ce6
+size 2900
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_bc_firestation_bollard.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_bc_firestation_bollard.ydr
new file mode 100644
index 000000000..ba020eb91
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_bc_firestation_bollard.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:24532174d8fe0ff24172ee52080d20e17f6523928658a5d09a8c8a9f33279e01
+size 71275
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_bc_firestation_vacuum.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_bc_firestation_vacuum.ydr
new file mode 100644
index 000000000..bf97365c3
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_bc_firestation_vacuum.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:01d13903a066ca055ce60a3a383dda8f377bbdfe5eca2e0a29d897c83449b3db
+size 74227
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_chair_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_chair_01.ydr
new file mode 100644
index 000000000..ed5f64400
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_chair_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44c61bea9712ebd15f05804e42c66df8316365c8d65fb1e8b6c2e767e432104f
+size 44306
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_axe_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_axe_01.ydr
new file mode 100644
index 000000000..3f62b844e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_axe_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9618d09c012d519cae586bb89eff41e6a48d3384474d2cf888b2f9cd98d988cd
+size 22477
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_bed_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_bed_01.ydr
new file mode 100644
index 000000000..f8e148f38
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_bed_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:296e9633ba0de5c619893d5bc11482d55e4fac560d2ef3b7aac7a6e9ac955f46
+size 71867
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_bed_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_bed_02.ydr
new file mode 100644
index 000000000..f6962825a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_bed_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c566cd0ff033948daa64d6ccdad7dc08da5559a21edcf0874d691ccdf32796e2
+size 71569
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_board_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_board_01.ydr
new file mode 100644
index 000000000..7d3dafba2
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_board_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d87884d358e6507aa76164091d01f06dc75fbcb53f09d3d17b2774146ae0c27e
+size 51422
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_board_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_board_02.ydr
new file mode 100644
index 000000000..037a188bd
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_board_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18db104e918292d974120ec1b5188ec3bab9fedf84b3da7c384139947b95716a
+size 51444
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_board_a.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_board_a.ydr
new file mode 100644
index 000000000..462d54a7d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_board_a.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:690614c069414569f7c37ae53241158b60763cc27ab84bc1c5c2a3d437c315b6
+size 183895
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_break_table_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_break_table_01.ydr
new file mode 100644
index 000000000..70bfec9ff
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_break_table_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3cdffabfda1a8330668bd1fa756629efdb019d53036f667d9408580e9433ecf3
+size 12883
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_break_table_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_break_table_02.ydr
new file mode 100644
index 000000000..4b934d1cc
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_break_table_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef75aed77d0483480491151e73f2c103212d54e25ca08a3b86bdf615ca6ad742
+size 30822
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_break_table_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_break_table_03.ydr
new file mode 100644
index 000000000..5eac8a5f1
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_break_table_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4dcf4a5611a6dc33b192013c5b7128cc89763df09b8bb828e9cd1bca58f4c768
+size 8094
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_briefing_table_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_briefing_table_01.ydr
new file mode 100644
index 000000000..473f14207
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_briefing_table_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bce6b0dae578ded6e562248bcc2996ad49530986ee4f505399367392e277ac50
+size 11178
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_capt_shelf_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_capt_shelf_01.ydr
new file mode 100644
index 000000000..f0db44785
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_capt_shelf_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bab585523b696cffe33c20fe9755fb0e6f409b5a7fcf342d7ff438fdba52313a
+size 275193
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_captain_office_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_captain_office_01.ydr
new file mode 100644
index 000000000..cc9abcbdf
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_captain_office_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a7bde58c8e2c2902ac18bb534b33cde0e201ecc34ae60c9be4601b5aff46cdde
+size 100967
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_captain_office_details_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_captain_office_details_01.ydr
new file mode 100644
index 000000000..46c1444f6
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_captain_office_details_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c88a91ee92c2a266b6503fced8ff2e649dc22c4494b8c45ae9b514c798f41c86
+size 150967
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_captain_office_details_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_captain_office_details_02.ydr
new file mode 100644
index 000000000..360baed06
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_captain_office_details_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e450bac150983e0c467601a0f99de3906a26e9e23d5448a1218c2f1d569a27e5
+size 170197
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_captain_table_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_captain_table_01.ydr
new file mode 100644
index 000000000..c7917ba77
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_captain_table_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:77aa2556eef65b1713c4a6b90c60d51fc7b0a6740610eead3ee86bcfbdfd8bec
+size 52890
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_case_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_case_01.ydr
new file mode 100644
index 000000000..e09757f1c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_case_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:697a6063230e3fd292cf9788ec38ba24f57b57b2cd2a509d5658ce429cfb3a84
+size 167564
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_case_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_case_02.ydr
new file mode 100644
index 000000000..112992f20
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_case_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:31726c9f714370dc463be22cf3d8150073de7f4df84cf166ab4d086cc4fcda79
+size 54578
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_case_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_case_03.ydr
new file mode 100644
index 000000000..da7c98e39
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_case_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b45b111b45e3edf59b38f840af76c07b9c67e22e1b64677d1990e1d9d2bad236
+size 174854
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_case_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_case_04.ydr
new file mode 100644
index 000000000..82cba11d8
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_case_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:646e27e933f77917f1ebdd551cfa6d2cde2236a4085af6d49c3d083ec96acbf0
+size 206796
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_02_b.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_02_b.ydr
new file mode 100644
index 000000000..6fc0c078e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_02_b.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:37342385c3b303eae20b8578c9893bb184b8221112990e7296447cbafce1ec7c
+size 27902
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_02_r.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_02_r.ydr
new file mode 100644
index 000000000..0db2aea12
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_02_r.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2c118d7a595c3648532646bc40a00dead856f79fcd0b881b56e400b17e0f11f8
+size 27924
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_dirt_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_dirt_01.ydr
new file mode 100644
index 000000000..d3605cd7d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_dirt_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:847221b88b88fee85b396e5988502d7560414d56ce10ac2500a59189d5298a61
+size 29070
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_dirt_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_dirt_02.ydr
new file mode 100644
index 000000000..b5467ade3
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_dirt_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e70fe9ee1ef6aba259a329f7cb2c0ce2d24d3f67e0e786358599af0495ead374
+size 33443
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_dirt_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_dirt_03.ydr
new file mode 100644
index 000000000..e1a21432b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_dirt_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19c6763ec780a1e1c771fbf1e85c71305bd8e16774879d38f1ee2098ca496c8b
+size 30992
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_dirt_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_dirt_04.ydr
new file mode 100644
index 000000000..f6397c3cd
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_chair_dirt_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:34bb3d1594abb09cfd0d61a36e19d3933c9d205ab95525f59e35b3bc8ccaf147
+size 36168
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_cpt_shelf_detail_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_cpt_shelf_detail_01.ydr
new file mode 100644
index 000000000..efa1b239c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_cpt_shelf_detail_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b111e7b61c641db52f6344a37388b97bd6060541367a0583e88190e42665b871
+size 5521
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_flag_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_flag_01.ydr
new file mode 100644
index 000000000..e27628ab6
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_flag_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d2d50ad70f575ab17d79daeb0166ecb1f4bef2ed3bd881861728dc0ba0656cef
+size 8326
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_flag_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_flag_02.ydr
new file mode 100644
index 000000000..24a4ee821
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_flag_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fc2efdd968bd9834edfdf7b4420a506d61b6a13a017741fb9a7d7ac6c18b4d4e
+size 8331
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_01.ydr
new file mode 100644
index 000000000..b03a6b70d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d3eacb3a6bdb0dd98c2cd64a9ad43b9e93a10cd69257d36fce858d70d21a7853
+size 3196
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_02.ydr
new file mode 100644
index 000000000..2a529fc8b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:049eecd1dbb86c6bf005c5e6062d3e506a0c2ea1e450cad0e5baa9bba5b1ad33
+size 3195
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_03.ydr
new file mode 100644
index 000000000..6e1f5137e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d1a568aae927db54a7e65e5f465a2b43a17a496dc5cbfd8a9102b28ddc6553ec
+size 3191
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_04.ydr
new file mode 100644
index 000000000..e4963e193
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b195891a68ee0fa565dff3a06af322c342b462ce612528aaa4fffb8b9959351
+size 3194
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_05.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_05.ydr
new file mode 100644
index 000000000..cc2432913
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_05.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:beca7a4849cd14873ccf97370f01b264da01d1e5d0c66fa2b7377e4a46cc97a7
+size 3164
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_06.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_06.ydr
new file mode 100644
index 000000000..9372f2bda
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_06.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e1348f9a917d5c07ce65680e862254c23271a1726091d359cf4f63d3411a00c1
+size 3167
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_07.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_07.ydr
new file mode 100644
index 000000000..a55c9f15d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_07.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d509b5e8ccded7767ba9898933559b57134c454127320c8f22bee665633d78ec
+size 3166
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_08.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_08.ydr
new file mode 100644
index 000000000..4496cfbc8
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_08.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9c11a72462cbf8cc7353b92c2ef76eecfd2022752f65e8b3a592f586e69b9ce7
+size 15932
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_09.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_09.ydr
new file mode 100644
index 000000000..a84058408
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_09.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:45ac2c412c4c39ee1a976ce38601b3de5809c98370712f2feb15e6a848afab6d
+size 3193
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_10.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_10.ydr
new file mode 100644
index 000000000..d9bee1d10
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_10.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:42a6be77d65a64f8a56071dc0f7957e2533b346f1fadacdd409f99c15db7ac05
+size 3191
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_11.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_11.ydr
new file mode 100644
index 000000000..d6f616c4a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_11.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cefe8136d714b653b7054e8f1bd08fe99d479e16f64378d5de7569ece424189b
+size 3193
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_12.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_12.ydr
new file mode 100644
index 000000000..4116a6588
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_12.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5ea4a96f25b491b3b6d32fec8c64abeae01ac8487370730461e80ac7699944ef
+size 3194
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_13.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_13.ydr
new file mode 100644
index 000000000..3be8221e5
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_13.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f3067fd813f8d40cf953b9339f99734205664634a6c7ce72790924a763f283c4
+size 3381
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_14.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_14.ydr
new file mode 100644
index 000000000..8f52669ee
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_14.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:49ff8ee98390c1fa560583988742965ebe0a8c55cdb7dd90a0234a22e2f19cc2
+size 3345
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_diploma_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_diploma_01.ydr
new file mode 100644
index 000000000..7fae3c182
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_diploma_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8cb22a3c347a29233eb875083bf05cdc18f01c2e14193bbeaa80ad10666df249
+size 3266
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_diploma_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_diploma_02.ydr
new file mode 100644
index 000000000..ab6dfb91e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_diploma_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d50b4307b1168f94ec08b5ba65e5c76ebaa47b453a36684c3d3b674d49655713
+size 3289
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_diploma_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_diploma_03.ydr
new file mode 100644
index 000000000..46c7e0c3a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_diploma_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aa76c6711c402323cfee2a3accf55f94ba3448835c9e71eff54f5dcec6ef1eb6
+size 3290
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_diploma_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_diploma_04.ydr
new file mode 100644
index 000000000..99df1b29a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_frame_diploma_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8a1098baa6b9cd8e78d0813a24bbddd05238eaf56f4d27d7a03c4d9de153ad54
+size 3305
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_fridge.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_fridge.ydr
new file mode 100644
index 000000000..ca1ac9ff1
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_fridge.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:faf3ceefcb8e36ac213e4513f3d2f54d837bf5c785759766bb43d04bc903b2b9
+size 16767
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_helmet_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_helmet_01.ydr
new file mode 100644
index 000000000..eccf10440
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_helmet_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:097a38da4f04a258357741138ba5c8cf52c3f7158ada682126bc44fc486dfe7a
+size 24429
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_helmet_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_helmet_02.ydr
new file mode 100644
index 000000000..faaad9dc0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_helmet_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c7583811b8546bc9465b390a5a5b9175abf03cbf7df4dc6762cc70f31919e1e6
+size 24429
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_01.ydr
new file mode 100644
index 000000000..67bc6d5f9
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3e958e721672e60985d66750920ba380a1a8f7c50479ef96a09846dbf5efc669
+size 51383
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_02.ydr
new file mode 100644
index 000000000..6eb2773d3
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8b939cc2d71f9585d6febfb2d2ae5f387d765a411c6987b7ef0d360f1531e5fd
+size 27253
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_03.ydr
new file mode 100644
index 000000000..48874c3e3
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a0990a52ede58ae86af60b6df5a41499275204ec2adbd259c8cb9481f5d4c607
+size 16342
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_04.ydr
new file mode 100644
index 000000000..51a1d4b8d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:103fa38a1575c6e69ebfe524c2fef997e2ba4e110113cb319b44af5b939a4d93
+size 17261
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_05.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_05.ydr
new file mode 100644
index 000000000..3ad44550a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_05.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1238ff1a9a478dc108acc6416ea3da0520eaf1fda2342db8966202351584a7cd
+size 16033
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_06.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_06.ydr
new file mode 100644
index 000000000..d6c302da1
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_06.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fbb6c9f4e5635b49a0603f47875c2479ed02da19b5b7407b84ad2cb25f51fe26
+size 49175
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_07.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_07.ydr
new file mode 100644
index 000000000..52fe8c2c8
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_07.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b34ced747c80bc2cc112fb32c3e1c10ca4f906b78df5d999925c924d8f62ee58
+size 29252
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_08.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_08.ydr
new file mode 100644
index 000000000..079b1ccb3
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_08.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19ab1510ca2f8e5f503373e12730d3bf59116983587e77cef231a5e74dc51d5d
+size 15497
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_bench_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_bench_01.ydr
new file mode 100644
index 000000000..766d2da50
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_locker_bench_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c185ad4f0928b0cb1c7aaae2c41867b1bc1da3ad22f88b6a585b7f2217aa63c
+size 15957
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_01.ydr
new file mode 100644
index 000000000..6c05ae2b6
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:25c29b6e331345e0a6a3a6f6babbf71257efe44b95418279ebc95c84812d95d8
+size 12535
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_02.ydr
new file mode 100644
index 000000000..b5d0ad20f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:271d4af45392038fdf5c2a4be434edc41a4e5098c3944288641bfd2a5ab8c15a
+size 9356
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_dcl_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_dcl_01.ydr
new file mode 100644
index 000000000..83d0c6ef4
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_dcl_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:99536ec4dc8eeb1aba73f4bbaeb2eb125d9b77bed8bc28b4ccd4c1a72c2c6bae
+size 492
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_dcl_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_dcl_02.ydr
new file mode 100644
index 000000000..dd3c518eb
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_dcl_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b0237c5f98e7960460c7ed7f055b9823261f79fb26c5999b55466c77af0cf9f7
+size 489
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_dcl_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_dcl_03.ydr
new file mode 100644
index 000000000..930ec6e15
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_dcl_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3499b42dd5d2a85c9908776e8deafc5f3f05599a4c1178b716fb3a69e0d009df
+size 963
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_def_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_def_02.ydr
new file mode 100644
index 000000000..3d738eeb9
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_logo_def_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a7f0f6c2a4528209549b2ee2223ae0edf4dd0a2605e3cb19497465a8b37efca
+size 11357
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_offshelf_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_offshelf_01.ydr
new file mode 100644
index 000000000..46ba5975a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_offshelf_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:deb789dbd147e6a4b8f099a39ca94cd5659e883456a7293247ba7ca660adbbad
+size 147681
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_os_office_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_os_office_01.ydr
new file mode 100644
index 000000000..b73edff77
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_os_office_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:93fcd09e456cf47d9994117229bb18fe85e146c8f36094a7dc7bf1bfca0b3f74
+size 44952
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_os_office_details_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_os_office_details_01.ydr
new file mode 100644
index 000000000..89d45de64
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_os_office_details_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:de9a5c3f259b35be8d1787e4a17826b36f2af8905f8828bf98dcaa3d635f8c15
+size 92934
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_os_office_details_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_os_office_details_02.ydr
new file mode 100644
index 000000000..a7df99156
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_os_office_details_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dc188dc29ae5892a12cd734ea9e2e7a7cdbb3eef6d38a26124e9175be1387665
+size 110268
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_recept_bench_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_recept_bench_01.ydr
new file mode 100644
index 000000000..5012a69a0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_recept_bench_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c6ceb5f616676d84c32d5e9f84196993c7613b0de1cff8be57df2b91ca641a59
+size 60301
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_recept_bench_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_recept_bench_02.ydr
new file mode 100644
index 000000000..b6b720b43
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_recept_bench_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7ee443a0887e95419e6a40b7e6311826f5f6ddb2aa5ba546f0924745d99525f9
+size 38809
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_reunion_table_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_reunion_table_01.ydr
new file mode 100644
index 000000000..fcffd8d3f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_reunion_table_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e9dc8c147a8fc05925d31d33904272ba4f3244c1b564488fd31fb036822274d9
+size 23167
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_sofa_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_sofa_01.ydr
new file mode 100644
index 000000000..1ce76e969
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_sofa_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ec0749320bae55f32e6a06b257ded4d201424e4d3b86a08251999a6d685c3178
+size 56892
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_table_rest.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_table_rest.ydr
new file mode 100644
index 000000000..815d739a7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/prop_gn_fire_table_rest.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3fbc04a8da1f42de12a6d09f14a696d6fd4496aa28d4a6432d0a1bd548ffe1ac
+size 135142
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/script_rt_gn_fire_meeting_tv.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/script_rt_gn_fire_meeting_tv.ydr
new file mode 100644
index 000000000..00126d753
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ydr/script_rt_gn_fire_meeting_tv.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef2073dfa536ee581a4db8084f1dbf8fbb92494d32b3ef63018e87854590e915
+size 1302
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ytd/gn_bc_firestation_txd.ytd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ytd/gn_bc_firestation_txd.ytd
new file mode 100644
index 000000000..919dfa97e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ytd/gn_bc_firestation_txd.ytd
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dc4962103f583920d458e6de08d5a5e1f48b7a635a62760f42557de4693301db
+size 12108753
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ytyp/gn_bc_firestation.ytyp b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ytyp/gn_bc_firestation.ytyp
new file mode 100644
index 000000000..102f2ad5d
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ytyp/gn_bc_firestation.ytyp differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ytyp/gn_bc_firestation_props.ytyp b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ytyp/gn_bc_firestation_props.ytyp
new file mode 100644
index 000000000..b65dc3e5a
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_bc_firestation/stream/interior/ytyp/gn_bc_firestation_props.ytyp differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/.fxap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/.fxap
new file mode 100644
index 000000000..7cccf35a5
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/.fxap differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/README.md b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/README.md
new file mode 100644
index 000000000..de0f79cbe
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/README.md
@@ -0,0 +1 @@
+# README
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/fxmanifest.lua b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/fxmanifest.lua
new file mode 100644
index 000000000..1da65ba54
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/fxmanifest.lua
@@ -0,0 +1,27 @@
+fx_version 'cerulean'
+use_experimental_fxv2_oal 'yes'
+lua54 'yes'
+game 'gta5'
+
+author 'G&N_s Studio'
+description 'G&N_s Base Ressource'
+version '4.2.0'
+
+this_is_a_map 'yes'
+
+data_file 'DLC_ITYP_REQUEST' 'stream/nels_medical_props.ytyp'
+data_file 'DLC_ITYP_REQUEST' 'stream/gn_medical_assets.ytyp'
+data_file 'INTERIOR_PROXY_ORDER_FILE' 'interiorproxies.meta'
+
+files {
+ 'interiorproxies.meta'
+}
+
+server_script 'server.lua'
+
+escrow_ignore {
+ 'stream/**/*.ytd',
+ 'server.lua' -- Please keep this file to stay tuned about all our updates!
+}
+
+dependency '/assetpacks'
\ No newline at end of file
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/interiorproxies.meta b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/interiorproxies.meta
new file mode 100644
index 000000000..68ecbdb9e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/interiorproxies.meta
@@ -0,0 +1,341 @@
+
+
+
+
+
+
+ - int_hotel_corridor01
+ - int_hotel_doubleroom101
+ - int_hotel_doubleroom102
+ - int_hotel_doubleroom103
+ - int_hotel_doubleroom104
+ - int_hotel_doubleroom105
+ - int_hotel_doubleroom106
+ - int_hotel_room101
+ - int_hotel_room102
+ - int_hotel_room103
+ - int_hotel_room104
+ - int_hotel_room105
+ - int_hotel_room106
+ - int_hotel_room107
+ - int_hotel_room108
+ - int_hotel_room109
+ - int_hotel_room110
+ - int_hotel_room111
+ - int_hotel_room112
+ - int_hotel_room113
+ - int_hotel_room114
+ - int_hotel_room115
+ - int_hotel_room116
+ - int_hotel_room117
+ - int_hotel_room118
+ - int_hotel_room119
+ - int_hotel_room120
+ - int_hotel_room121
+ - int_hotel_room122
+ - int_hotel_room123
+ - int_hotel_room124
+ - int_hotel_corridor02
+ - int_hotel_doubleroom201
+ - int_hotel_doubleroom202
+ - int_hotel_doubleroom203
+ - int_hotel_doubleroom204
+ - int_hotel_doubleroom205
+ - int_hotel_doubleroom206
+ - int_hotel_room201
+ - int_hotel_room202
+ - int_hotel_room203
+ - int_hotel_room204
+ - int_hotel_room205
+ - int_hotel_room206
+ - int_hotel_room207
+ - int_hotel_room208
+ - int_hotel_room209
+ - int_hotel_room210
+ - int_hotel_room211
+ - int_hotel_room212
+ - int_hotel_room213
+ - int_hotel_room214
+ - int_hotel_room215
+ - int_hotel_room216
+ - int_hotel_room217
+ - int_hotel_room218
+ - int_hotel_room219
+ - int_hotel_room220
+ - int_hotel_room221
+ - int_hotel_room222
+ - int_hotel_room223
+ - int_hotel_room224
+ - int_hotel_corridor03
+ - int_hotel_doubleroom301
+ - int_hotel_doubleroom302
+ - int_hotel_doubleroom303
+ - int_hotel_doubleroom304
+ - int_hotel_doubleroom305
+ - int_hotel_doubleroom306
+ - int_hotel_room301
+ - int_hotel_room302
+ - int_hotel_room303
+ - int_hotel_room304
+ - int_hotel_room305
+ - int_hotel_room306
+ - int_hotel_room307
+ - int_hotel_room308
+ - int_hotel_room309
+ - int_hotel_room310
+ - int_hotel_room311
+ - int_hotel_room312
+ - int_hotel_room313
+ - int_hotel_room314
+ - int_hotel_room315
+ - int_hotel_room316
+ - int_hotel_room317
+ - int_hotel_room318
+ - int_hotel_room319
+ - int_hotel_room320
+ - int_hotel_room321
+ - int_hotel_room322
+ - int_hotel_room323
+ - int_hotel_room324
+ - int_hotel_corridor04
+ - int_hotel_doubleroom401
+ - int_hotel_doubleroom402
+ - int_hotel_doubleroom403
+ - int_hotel_doubleroom404
+ - int_hotel_doubleroom405
+ - int_hotel_doubleroom406
+ - int_hotel_room401
+ - int_hotel_room402
+ - int_hotel_room403
+ - int_hotel_room404
+ - int_hotel_room405
+ - int_hotel_room406
+ - int_hotel_room407
+ - int_hotel_room408
+ - int_hotel_room409
+ - int_hotel_room410
+ - int_hotel_room411
+ - int_hotel_room412
+ - int_hotel_room413
+ - int_hotel_room414
+ - int_hotel_room415
+ - int_hotel_room416
+ - int_hotel_room417
+ - int_hotel_room418
+ - int_hotel_room419
+ - int_hotel_room420
+ - int_hotel_room421
+ - int_hotel_room422
+ - int_hotel_room423
+ - int_hotel_room424
+ - int_hotel_corridor05
+ - int_hotel_doubleroom501
+ - int_hotel_doubleroom502
+ - int_hotel_doubleroom503
+ - int_hotel_doubleroom504
+ - int_hotel_doubleroom505
+ - int_hotel_doubleroom506
+ - int_hotel_room501
+ - int_hotel_room502
+ - int_hotel_room503
+ - int_hotel_room504
+ - int_hotel_room505
+ - int_hotel_room506
+ - int_hotel_room507
+ - int_hotel_room508
+ - int_hotel_room509
+ - int_hotel_room510
+ - int_hotel_room511
+ - int_hotel_room512
+ - int_hotel_room513
+ - int_hotel_room514
+ - int_hotel_room515
+ - int_hotel_room516
+ - int_hotel_room517
+ - int_hotel_room518
+ - int_hotel_room519
+ - int_hotel_room520
+ - int_hotel_room521
+ - int_hotel_room522
+ - int_hotel_room523
+ - int_hotel_room524
+ - int_hotel_corridor06
+ - int_hotel_doubleroom601
+ - int_hotel_doubleroom602
+ - int_hotel_doubleroom603
+ - int_hotel_doubleroom604
+ - int_hotel_doubleroom605
+ - int_hotel_doubleroom606
+ - int_hotel_room601
+ - int_hotel_room602
+ - int_hotel_room603
+ - int_hotel_room604
+ - int_hotel_room605
+ - int_hotel_room606
+ - int_hotel_room607
+ - int_hotel_room608
+ - int_hotel_room609
+ - int_hotel_room610
+ - int_hotel_room611
+ - int_hotel_room612
+ - int_hotel_room613
+ - int_hotel_room614
+ - int_hotel_room615
+ - int_hotel_room616
+ - int_hotel_room617
+ - int_hotel_room618
+ - int_hotel_room619
+ - int_hotel_room620
+ - int_hotel_room621
+ - int_hotel_room622
+ - int_hotel_room623
+ - int_hotel_room624
+ - int_hotel_corridor07
+ - int_hotel_doubleroom701
+ - int_hotel_doubleroom702
+ - int_hotel_doubleroom703
+ - int_hotel_doubleroom704
+ - int_hotel_doubleroom705
+ - int_hotel_doubleroom706
+ - int_hotel_room701
+ - int_hotel_room702
+ - int_hotel_room703
+ - int_hotel_room704
+ - int_hotel_room705
+ - int_hotel_room706
+ - int_hotel_room707
+ - int_hotel_room708
+ - int_hotel_room709
+ - int_hotel_room710
+ - int_hotel_room711
+ - int_hotel_room712
+ - int_hotel_room713
+ - int_hotel_room714
+ - int_hotel_room715
+ - int_hotel_room716
+ - int_hotel_room717
+ - int_hotel_room718
+ - int_hotel_room719
+ - int_hotel_room720
+ - int_hotel_room721
+ - int_hotel_room722
+ - int_hotel_room723
+ - int_hotel_room724
+ - gn_burgershot_milo
+ - gn_von_lobby_milo
+ - gn_burgershot_mp_milo_
+ - gn_burgershot_sandy_milo_
+ - hen_house_placement
+ - gn_clinic_paleto_milo
+ - gn_ambulance_carpack_milo
+ - gn_clinic_sandy_milo
+ - gn_cluckin_milo
+ - mazebank_west_milo
+ - gn_ambulance_lsmc_carpack_milo
+ - gn_medic_cls_medic_milo
+ - gn_medic_f1_cls_medic_milo
+ - gn_medic_lift_cls_medic_milo
+ - gn_ambulance_pillbox_carpack_milo
+ - gn_medic_f1_pillbox_milo
+ - gn_medic_lift_pillbox_milo
+ - gn_medic_pillbox_milo
+ - gn_ambulance_mz_carpack_milo
+ - gus_helipad_placement
+ - mz_carpack_milo
+ - operation_floor
+ - room_milo
+ - urgence_milo
+ - gn_von_delperro_carpack_milo
+ - gn_von_delperro_floor_1_milo
+ - gn_von_delperro_floor_2_milo
+ - gn_von_delperro_floor_3_milo
+ - gn_von_delperro_floor_4_milo
+ - gn_von_delperro_floor_5_milo
+ - gn_von_delperro_floor_6_milo
+ - gn_von_delperro_lobby_milo
+ - gn_von_delperro_stair_milo
+ - gn_von_littlesoul_a_carpack_milo
+ - gn_von_littlesoul_a_floor_1_milo
+ - gn_von_littlesoul_a_floor_2_milo
+ - gn_von_littlesoul_a_floor_3_milo
+ - gn_von_littlesoul_a_floor_4_milo
+ - gn_von_littlesoul_a_floor_5_milo
+ - gn_von_littlesoul_a_floor_6_milo
+ - gn_von_littlesoul_a_lobby_milo
+ - gn_von_littlesoul_a_stair_milo
+ - gn_von_littlesoul_b_carpack_milo
+ - gn_von_littlesoul_b_floor_1_milo
+ - gn_von_littlesoul_b_floor_2_milo
+ - gn_von_littlesoul_b_floor_3_milo
+ - gn_von_littlesoul_b_floor_4_milo
+ - gn_von_littlesoul_b_floor_5_milo
+ - gn_von_littlesoul_b_floor_6_milo
+ - gn_von_littlesoul_b_lobby_milo
+ - gn_von_littlesoul_b_stair_milo
+ - gn_upnatom_highway_milo_
+ - gn_upnatom_vw_milo
+ - int_gn_sheriff_sandyshore_milo_
+ - int_gn_sheriff_davis_milo_
+ - int_gn_bc_firestation_milo
+ - 001_sm_room_01_milo_
+ - 002_sm_room_02_milo_
+ - 003_sm_room_01_milo_
+ - 004_sm_room_02_milo_
+ - 005_sm_room_01_milo_
+ - 006_sm_room_02_milo_
+ - 007_sm_room_01_milo_
+ - 008_sm_room_02_milo_
+ - 009_sm_room_01_milo_
+ - 010_sm_room_02_milo_
+ - 101_sm_room_01_milo_
+ - 102_sm_room_02_milo_
+ - 103_sm_room_01_milo_
+ - 104_sm_room_02_milo_
+ - 105_sm_room_01_milo_
+ - 106_sm_room_02_milo_
+ - 107_sm_room_01_milo_
+ - 108_sm_room_02_milo_
+ - 109_sm_room_01_milo_
+ - 110_sm_room_02_milo_
+ - 201_sm_room_01_milo_
+ - 202_sm_room_02_milo_
+ - 203_sm_room_01_milo_
+ - 204_sm_room_02_milo_
+ - 205_sm_room_01_milo_
+ - 206_sm_room_02_milo_
+ - 207_sm_room_01_milo_
+ - 208_sm_room_02_milo_
+ - 209_sm_room_01_milo_
+ - 210_sm_room_02_milo_
+ - 301_sm_room_01_milo_
+ - 302_sm_room_02_milo_
+ - 303_sm_room_01_milo_
+ - 304_sm_room_02_milo_
+ - 305_sm_room_01_milo_
+ - 306_sm_room_02_milo_
+ - 307_sm_room_01_milo_
+ - 308_sm_room_02_milo_
+ - 309_sm_room_01_milo_
+ - 310_sm_room_02_milo_
+ - gn_sandyshop_bettercall_milo_
+ - gn_sandyshop_binco_milo_
+ - gn_sandyshop_critical_01
+ - gn_sandyshop_fleecabank_milo_
+ - gn_sandyshop_liquor_milo_
+ - gn_benefactor_milo_
+ - int_fvineyard_milo_
+ - int_garage_milo_
+ - int_gn_sanders_milo_
+ - gn_sheriff2_grapeseed_milo_
+ - gn_sheriff2_paleto_milo_
+ - gn_upnatom2_milo_
+ - gn_biker_grapeseed_milo_
+ - gn_biker_barn_grapeseed_milo_
+ - gn_fleeca_grapeseed_milo_
+ - gn_house01_grapeseed_milo_
+ - gn_house02_grapeseed_milo_
+ - gn_house03_grapeseed_milo_
+ - gn_house04_grapeseed_milo_
+ - gn_house05_grapeseed_milo_
+
+
\ No newline at end of file
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/server.lua b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/server.lua
new file mode 100644
index 000000000..8af50e6e1
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/server.lua
@@ -0,0 +1,69 @@
+--! Please keep this file to stay tuned about all our updates!
+
+local GITHUB_URL = 'https://raw.githubusercontent.com/G-N-s-Studio/gn_versions/main/versions.json'
+local git_versions
+
+local function loadVersions()
+ PerformHttpRequest(GITHUB_URL, function(status, response)
+ if status ~= 200 then return end
+ git_versions = json.decode(response)
+ end, 'GET')
+end
+
+local function checkResources()
+ loadVersions()
+
+ local format = string.format
+ local getNumResources = GetNumResources
+ local getResourceByFindIndex = GetResourceByFindIndex
+ local getResourceMetadata = GetResourceMetadata
+ local print = print
+ local wait = Wait
+ local isGnEnv = GetConvarInt('isGnEnv', 0) == 1
+
+ local function isGnResource(resourceName)
+ local author = GetResourceMetadata(resourceName, 'author', 0)
+ return author and author:find('G&N') and resourceName:find('gn_')
+ end
+
+ local function isStarted(resource)
+ return GetResourceState(resource):find('start')
+ end
+
+ -- Wait for git_versions with a timeout
+ local timeout = 1000
+ while not git_versions and timeout > 0 do
+ wait(0)
+ timeout -= 1
+ end
+
+ if not git_versions then return end
+
+ local resourcesCount = getNumResources()
+
+ for i = 1, resourcesCount do
+ local resource = getResourceByFindIndex(i)
+
+ if resource and isGnResource(resource) then
+ local latestVersion = git_versions[resource]
+
+ if isGnEnv and not latestVersion then
+ print("^5[G&N's Studio]^6[DEV] ^3No latest version found for " .. resource .. "^7")
+ elseif latestVersion and isStarted(resource) then
+ local currentVersion = getResourceMetadata(resource, 'version', 0)
+
+ if currentVersion and currentVersion < latestVersion then
+ local msg = format("^3・[G&N's Studio] v%s is available for ^5%s^3 (current version: %s)\r\n・Download it here: ^5%s^7",
+ latestVersion,
+ resource,
+ currentVersion,
+ 'https://keymaster.fivem.net/'
+ )
+ print(msg)
+ end
+ end
+ end
+ end
+end
+
+CreateThread(checkResources)
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_bookholder.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_bookholder.ydr
new file mode 100644
index 000000000..5746bccc8
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_bookholder.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ea680fa5e4b817a9459901e23b8519b41ab6ee5916c4789986acd7d4daee7acc
+size 4756
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_01.ydr
new file mode 100644
index 000000000..2c598eb74
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7a5d6c67bb4f36fc489d21d4ee2c2c19a5dddabb536ee850ff5c293c0cb254cd
+size 1978
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_02.ydr
new file mode 100644
index 000000000..61e4a2fcc
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8e2bbe260fd517400d0510f347c567a67aa93dd190737f2cc69fe8eca5b95fac
+size 4681
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_03.ydr
new file mode 100644
index 000000000..b01c7e7e7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7d1c07cdcf58259de232bf57c1cf5ff69a396101dd314e210c3642b98318370f
+size 4259
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_04.ydr
new file mode 100644
index 000000000..edc039fd2
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5183ea706c878a4d52281d10dd15e86869d08c6f41545ab5a9c282168c173e94
+size 2120
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_05.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_05.ydr
new file mode 100644
index 000000000..4f1713d82
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_05.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fd92e3554627393272ad64d2843f58acd68bf44239288681b69a4da4f4f93081
+size 2158
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_06.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_06.ydr
new file mode 100644
index 000000000..d81584086
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_06.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cd7128fae6d858e368a596560c66d928a10cc6741ba9c87bd4ba8f3a5e0c0a8f
+size 1991
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_07.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_07.ydr
new file mode 100644
index 000000000..e55bef756
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_07.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:01093001eddf349fb1d6c34ea2c65e5ac42a336a1f1200e39fb4309b80783fe1
+size 1951
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_08.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_08.ydr
new file mode 100644
index 000000000..867bafed4
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_08.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:468dfec7502431361510f199aeaf81fe75e3da300f94ad021af7d8a2eaed7628
+size 4350
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_09.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_09.ydr
new file mode 100644
index 000000000..a4bb6a7fd
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_cultural_stuff_09.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:05d54ac305a058a5b0009c14aeb00b316acac51667138ff3ffab869fe85746e5
+size 6827
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_01.ydr
new file mode 100644
index 000000000..51134afba
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:acebb072746d4aaefbfaf2aba9c9ec051950280057c8cefadc4a160c10bee8c2
+size 2307
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_02.ydr
new file mode 100644
index 000000000..59eedc4f0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:37c174079578dd11be4cde544b2a9fe721673e94c32834d6970643bdec888dfa
+size 2143
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_03.ydr
new file mode 100644
index 000000000..0e8d18c5c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5f23cc853b493d52a5517001c8099002d7d49aa0ca9993cadb4dba3f5eb86aac
+size 2140
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_04.ydr
new file mode 100644
index 000000000..680b29960
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:12a0288cc21d4579f9b6dbbe50902202c6c9b648c616c4eacf4e074d910078b3
+size 2425
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_05.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_05.ydr
new file mode 100644
index 000000000..b8f7fe200
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_05.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:790c21d9baadbd719c58719368784a8ddfeeeae9e1eda9068765cd64667fca99
+size 2152
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_06.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_06.ydr
new file mode 100644
index 000000000..bd1778414
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_06.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:33a86eff60006b94e4810ac9da54c0bb8ab4cca707ac78b69ff3b2350111054e
+size 2433
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_07.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_07.ydr
new file mode 100644
index 000000000..47c1d1190
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_07.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b71fd3a5c6ba1d25bbc2e21979bf09b4acbe6318473a1d234cc3fa90ea816b3a
+size 2854
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_08.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_08.ydr
new file mode 100644
index 000000000..b74b8bdae
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_08.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:73efdc8beb7602ff01a77a825165aeb2cb6a1f95f205b6d48e15f7ed72fd0494
+size 2152
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_09.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_09.ydr
new file mode 100644
index 000000000..101014796
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_09.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2dccea24bd9daad9997befef4c5566aa75bb84be1440811929b580a6813d077d
+size 2479
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_10.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_10.ydr
new file mode 100644
index 000000000..09fe4b46d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_10.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c2de4130e761f2d558fdfbb0f3d575e38d0ca53ac0a4db3bf2f6cf03720fdf3d
+size 2822
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_11.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_11.ydr
new file mode 100644
index 000000000..f5b0f4752
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_11.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bf9952b6d7695b64f62c6e23dab9cd956fa9acb2bb5341b60b30a55054671f17
+size 2502
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_12.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_12.ydr
new file mode 100644
index 000000000..4d1ce8970
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_12.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:155d642ebf1dc4ddf2d22f90dd0b54208944e1e247660a9ccbd5fd836f32bb72
+size 2493
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_13.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_13.ydr
new file mode 100644
index 000000000..ed95d092b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_13.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:24525d1e0c539ac51737221a10c3a7066fd3a2d21f6cb146ce571e0b410a77d5
+size 2890
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_14.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_14.ydr
new file mode 100644
index 000000000..4d562af7d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_14.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2e8ed231eb029a02be838d9d3b3d289a72b8aeb384491f810609d66b5f03fa5b
+size 2848
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_15.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_15.ydr
new file mode 100644
index 000000000..db2150332
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_fancy_15.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a8c7ca8dfd777bd6d2914133024c5447ada96c96bdde3efeda677b08045a8e9c
+size 2834
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_photo_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_photo_01.ydr
new file mode 100644
index 000000000..d45c773f2
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_photo_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:66abc05b4ea98d1260bb9c883de8215cade79e71bc693a8a32ec572932d725cd
+size 2226
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_photo_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_photo_02.ydr
new file mode 100644
index 000000000..9031b2737
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_photo_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:acf325d0b51c6c62179f6de444985274209837cbbca52f70301471ca697d0e27
+size 2236
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_photo_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_photo_03.ydr
new file mode 100644
index 000000000..68e7ace23
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_frame_photo_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7b3169cbd247dabd1ff826c5b2c8db1e55efedd619982016bc0484d408b80dc6
+size 2143
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_fridge_magnets_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_fridge_magnets_01.ydr
new file mode 100644
index 000000000..2c60d1105
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_fridge_magnets_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:29f835462cdbfc7b5ddd017e2a81d1668e33b511c5575e77411a3a4cb4ada60a
+size 7941
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_fridge_magnets_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_fridge_magnets_02.ydr
new file mode 100644
index 000000000..470ba9ec3
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_fridge_magnets_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:255fc5e6608d14642e145469be4ec344420a7b19c2d39530a63e025188bc9258
+size 2098
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_fridge_magnets_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_fridge_magnets_03.ydr
new file mode 100644
index 000000000..18914ba3c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_fridge_magnets_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d2029bb80f1de46331f5c71ddfecdc9f87f507189738b9234b64ce0bf247dec4
+size 2281
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_nature_pic_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_nature_pic_01.ydr
new file mode 100644
index 000000000..84bac9044
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_nature_pic_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c5a5c50288aea9d46ed5cc4d37f7105e55d3cfc2b7e4b761fe1a895858507e9d
+size 2144
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_nature_pic_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_nature_pic_02.ydr
new file mode 100644
index 000000000..f9f411d8c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_nature_pic_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d795d5beb206a226ae24fcf13fd1f0d20d84972f0e391d0ea46f0931b951ff10
+size 2283
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_01.ydr
new file mode 100644
index 000000000..bb00562d7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2fe2720991c642262995cde883525b189f27abf954552d0fb66419f150ee33cd
+size 2280
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_02.ydr
new file mode 100644
index 000000000..72aae38fb
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1cb80cd99df3e5c7b2d3da4a54503dd8149e6d1651f420aad80147befcdfafc1
+size 2281
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_03.ydr
new file mode 100644
index 000000000..b291f5695
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fdacd01d5534c4acb0b386990ecd10087ef402e9779f3e146b6be7db32dfd79c
+size 2282
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_04.ydr
new file mode 100644
index 000000000..464492be6
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ba75a6592b2ce9e01a0918ea83903a4ea82d14fbcbe790bc60f4f1664557c3c2
+size 2246
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_05.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_05.ydr
new file mode 100644
index 000000000..5098a2481
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_05.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:936b1a50bde9f05843e296107eb0ac55b9a441b3448d04859a4a32db39dfcdff
+size 2093
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_06.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_06.ydr
new file mode 100644
index 000000000..0525764c3
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_06.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11e8c24e51c85b5a45fa557a1ee7ff9d4f7256d5569e54536d1b5cce131f7866
+size 1766
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_07.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_07.ydr
new file mode 100644
index 000000000..f1dde788a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_07.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9694664e721e88ad04e94506cadda254d715d8bf87c39380aaefac9dfa1cd2a8
+size 1801
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_08.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_08.ydr
new file mode 100644
index 000000000..d35c35734
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_abstract_08.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b089fc6e5192221e4146cd4d64f6b50f401b5b48d6a4d8fb558572d847aebdff
+size 1754
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_01.ydr
new file mode 100644
index 000000000..ee584ba04
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fc1f8a75dbc23998382e81eabf2b884dedeb7017141ecc4255baf4b2f24e09bd
+size 3170
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_02.ydr
new file mode 100644
index 000000000..60f46b6b4
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a7c41cf09ee04e9d57027955bacf8dd348d7372fa33c4cccbcf59d30f2a89b0e
+size 3022
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_03.ydr
new file mode 100644
index 000000000..bedf1b44c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ca22f14cf7e8b011f020f71381d93c4618c93722c64a93467e9be22d70310e73
+size 3008
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_04.ydr
new file mode 100644
index 000000000..1b5436aee
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:310da73371a6ef5ea92c91ed8177bfa30b495a45363c0c2c8558fcc215c3ffba
+size 3323
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_05.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_05.ydr
new file mode 100644
index 000000000..d5aa830f5
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_05.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:493e3739722e87c8cbabc61e32326964719884a342a8ab67ac110c7098099636
+size 3026
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_06.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_06.ydr
new file mode 100644
index 000000000..ae715a0d2
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_06.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1442a918e6acf251008661c09605eaaa08d8c76436d745200b6e47cf46def210
+size 3490
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_07.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_07.ydr
new file mode 100644
index 000000000..2b8aa0450
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_07.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d7094a07564891233d311767218ff6e6da35ad3535016209e2b59b40c8972df8
+size 3183
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_08.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_08.ydr
new file mode 100644
index 000000000..55298b02b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_08.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c1a75a26de3c23e792aa49de5cebc19a7d51f0ee543e00dcad925480265e4d80
+size 3573
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_09.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_09.ydr
new file mode 100644
index 000000000..142cabc60
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_09.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bf9a3529d659802cf6fcdb7e8cad5e5887d5d18375ea299acfde4bf1bacd37c9
+size 3171
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_10.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_10.ydr
new file mode 100644
index 000000000..a483a08ec
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_10.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:43f4fa0ac36cbffbe612cd60a732a668ec870e9c176b0eb1925a649897e4d809
+size 3036
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_11.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_11.ydr
new file mode 100644
index 000000000..27d16c0bb
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_oil_11.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:76dfae33473596716f426f059053486fd74186b1734380222bc26d1fce61d1dc
+size 3047
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_01.ydr
new file mode 100644
index 000000000..79b605e66
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:268bf39ad615ca0e791490655badd185920f572bb0b32402261905c86e638692
+size 2551
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_02.ydr
new file mode 100644
index 000000000..e15704333
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:01018436df32c2541b3549a33a0a391cbff2ea64f51dddb059387d9de50b0c47
+size 2294
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_03.ydr
new file mode 100644
index 000000000..2324b2622
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d1c8dd5f08a81a193cf01a4829e01d7f947823ad873a49a753e8522b1d66b1f6
+size 2198
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_04.ydr
new file mode 100644
index 000000000..be2fc9710
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce6eb880ce4bac0d6b17b9ec3f2856d242f78929216f93e89a5e9d31c240b83f
+size 2322
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_05.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_05.ydr
new file mode 100644
index 000000000..3fe429ec8
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_05.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c94f78b4c074abc5368ceb4ccc6f5bd3ddf7a46bf2360902b5b46d92f6bd1b33
+size 2100
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_06.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_06.ydr
new file mode 100644
index 000000000..d2275684d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_06.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8cf4d5776bfcc43c342a2c0adcc8520f1c77073244c91a9e87b00c1bd9cceab4
+size 1951
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_07.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_07.ydr
new file mode 100644
index 000000000..8a3c7da39
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_07.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:427cecc7c3b76106e3bb2b1380b8dd077020899db2334bd6ae7429370fdf2d3f
+size 2303
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_08.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_08.ydr
new file mode 100644
index 000000000..ff730e0f7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_08.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5501d05da36382b85b873c6ba09e53316ee24a0393ce75cb28e425b9a0a2dfbf
+size 2129
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_09.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_09.ydr
new file mode 100644
index 000000000..38023d114
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_09.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d2889c545f3f31115684477a2e3799198a25fd4c087a3d286b8d3498e30eaf84
+size 2102
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_10.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_10.ydr
new file mode 100644
index 000000000..83488ff5f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_10.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:722844ace7312810c25ce69554beab17e71af55d3fa65c25e85d08c25162752d
+size 1967
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_11.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_11.ydr
new file mode 100644
index 000000000..595720d58
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_11.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7b612f9910c36dea5ce576c0dd69755534aeb11b0550150aacdb71bf72fcbfa6
+size 2161
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_12.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_12.ydr
new file mode 100644
index 000000000..5adbaa46b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_12.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:00b5af3fab184c5ea3963c12f1138b4644a9574f0056fb516e5c3b98c3eccd91
+size 2147
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_13.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_13.ydr
new file mode 100644
index 000000000..c3c82b188
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_paint_yoga_13.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5acbd5f06868f4a6a805c70076b3561c9fda1ec9b32b11af18592e5ac632faf6
+size 2221
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_porn_posters_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_porn_posters_01.ydr
new file mode 100644
index 000000000..fe416c475
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_porn_posters_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:55108d35328503c4057ef13c02c9f2d2c3d6acf0218156ddc1b5487a3211c025
+size 2711
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_porn_posters_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_porn_posters_02.ydr
new file mode 100644
index 000000000..db6316c8f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_porn_posters_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7cc30d63ee1fef2c78114649667cee6390fa39f1ca089dd505fcc7ed0f7e6a21
+size 1806
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_porn_posters_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_porn_posters_03.ydr
new file mode 100644
index 000000000..73b8d534b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_porn_posters_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c5985b94c3b304b85d720a717fa92dfc8a234af4b8480da8b0e74495ce584eb7
+size 1679
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_01.ydr
new file mode 100644
index 000000000..1a8dd24ba
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f792c7e9315c4ed0e0b976396da7296152e1c6ecf36d9eaa1b8440f678fbc75d
+size 2333
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_02.ydr
new file mode 100644
index 000000000..71694b381
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ce08d2fa85650526f675045ae16554e4636c2f51003bf606addeae773ed931d0
+size 2799
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_03.ydr
new file mode 100644
index 000000000..be95d49ce
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ff8181c9f9553fb1d94c49c3e742fd2eec047bf8cc68c7154617a566b7712398
+size 2774
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_04.ydr
new file mode 100644
index 000000000..6b2e5a0a9
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1d8a136061405577b7a76dc588003d39edfa27cc65b46b3b3492ea90c3523f59
+size 3800
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_05.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_05.ydr
new file mode 100644
index 000000000..033968567
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_05.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eab24ac6d55093c4b141ea3bd57c7f4ecabd70e9b4b821c02dd0532cf4610729
+size 3226
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_06.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_06.ydr
new file mode 100644
index 000000000..af503eb79
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_06.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a607b1c29a8286b26c2c65bdd4c793891ad91acc38bd85555a1f66abe4699961
+size 2584
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_07.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_07.ydr
new file mode 100644
index 000000000..709e12727
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_07.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:eb495633c2d754a551c9534c79c713cc8326216e7c3902a6a50952c30af8d115
+size 2561
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_08.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_08.ydr
new file mode 100644
index 000000000..502665ed6
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_08.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b17f2c2e340d924560df1bde6d2d66bc0460e4e40bc2d14e3420e1a6680c5b23
+size 2632
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_09.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_09.ydr
new file mode 100644
index 000000000..27c5bbe4b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_posters_09.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a2cde618a97eb17ab153ed26601f3af1a06ee368ec44902be7fa2db544a756e0
+size 3780
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_01.ydr
new file mode 100644
index 000000000..e667573ae
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:07804d735d86b59dcd8aa00218042289810b2bbcac21171673557da93f0de5b4
+size 3203
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_02.ydr
new file mode 100644
index 000000000..67e926798
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:769911086626ad17f65997a7ed82ee835f439a3c68446d5c9f358ba8db3fd00c
+size 26817
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_03.ydr
new file mode 100644
index 000000000..70748aa7b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d75ad3d3e73894adce5cc55a2eb9f7cb68347727633507261905b03022ab37a3
+size 16099
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_04.ydr
new file mode 100644
index 000000000..b5525ac22
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ca32487ae7dd0ae0331f84d6508b33cbe64ee33d230d29483ba2eea2789a25b0
+size 21033
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_05.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_05.ydr
new file mode 100644
index 000000000..09ba05141
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_05.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a3ba6e19ea607b05c0dfac8bb25294bc93bf3e146ccb91c0732bf3ef0d528912
+size 3200
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_06.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_06.ydr
new file mode 100644
index 000000000..e39d45e9c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_06.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:68c8e4b1c1017ae44e960873234d2711785f65d32a1431440aeb02cee1c19c4a
+size 15935
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_07.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_07.ydr
new file mode 100644
index 000000000..4fdcfd8d2
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_07.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:81370dd70bb42bd6a9d12528f3b5bdb9c43614e9c5031ee2d4d241d48810b73b
+size 5049
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_08.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_08.ydr
new file mode 100644
index 000000000..6bef66a44
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_08.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:16f2e5135e0cd5f8367a54fd053b4471efe6726f10fdd15377f9a0f51d4709c5
+size 3369
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_09.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_09.ydr
new file mode 100644
index 000000000..c87647014
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_09.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a595592ada04225cf23ebe8f211e74c80cf8a95c9f4aa3f57b78bbffd524b344
+size 3206
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_10.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_10.ydr
new file mode 100644
index 000000000..28661eddd
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_underwear_10.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e32142b85dcf592b5b3c83fa2a6f58e99071bc4407db84d748ab632c9fefa32f
+size 16370
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_wall_vents.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_wall_vents.ydr
new file mode 100644
index 000000000..afea51c81
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/art/gn_wall_vents.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7949b3e4dc8dc9ceb93e7547b6ba81ac3bf088e6b0f661f8f31c267489ca11f2
+size 1344
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_airconditioner_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_airconditioner_prop.ydr
new file mode 100644
index 000000000..6680a7a9e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_airconditioner_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2fe393b00f5391da3364d23094bce5dc290f849e414e179c520821a1be6b90a9
+size 168751
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_art1.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_art1.ydr
new file mode 100644
index 000000000..ad9e6b501
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_art1.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e58f767004445a07472d818e579aaf0be3008d4d7f90c41d7c7b68e1edd3e7a0
+size 1943
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_art2.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_art2.ydr
new file mode 100644
index 000000000..5f2a9c428
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_art2.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bedcbfb8c3f759814160ab8aa06f8b535debc81247bce8a241b8c485ddb6d077
+size 2019
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_art3.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_art3.ydr
new file mode 100644
index 000000000..27a783eb7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_art3.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:94637633353c3747154a773ae8b9fc66f3d38e21beea288bbc80175625d448a8
+size 1948
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_articuled_arm_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_articuled_arm_prop.ydr
new file mode 100644
index 000000000..618084e7c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_articuled_arm_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:246f7d8e73d5cb6582dd44452e870c4ce76a14837182be395c60ee46370b61ca
+size 218577
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_bed_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_bed_prop.ydr
new file mode 100644
index 000000000..bf63fa08d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_bed_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:38cece1d3cfbb796fd4c5c8f37fbb86da83dec56ee04f8a8816b465fa5d7d443
+size 169846
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_bed_tray_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_bed_tray_prop.ydr
new file mode 100644
index 000000000..d60b88476
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_bed_tray_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3e25a2050543c34e3659c7617c958df80f95b2959cb2aad6a824120a3fc76992
+size 14941
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_headboard_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_headboard_prop.ydr
new file mode 100644
index 000000000..9e64daa4a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_headboard_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:65f4799c24b36f92296e306c98696149a72c3191a95fa02c171b98113ad9f2e0
+size 76171
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_irm_1_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_irm_1_prop.ydr
new file mode 100644
index 000000000..dcf16daa1
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_irm_1_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5fa0dac87def077c02c9a36e671a6481895a50306b1a87fbaccefc983084a395
+size 77202
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_irm_2_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_irm_2_prop.ydr
new file mode 100644
index 000000000..8ee78f41f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_irm_2_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:86ee626ed1f8b99c2b80c7d57c1f33c66fdf59bc177c07d0006ed8dc19955ebf
+size 26350
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_irm_3_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_irm_3_prop.ydr
new file mode 100644
index 000000000..43e7050f9
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_irm_3_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:56f8195083e244b45bd0d3f76595d11bda4ce8b463409c72e9fca177894c5cda
+size 11569
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_ope_table_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_ope_table_prop.ydr
new file mode 100644
index 000000000..f1dd3fdd7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_ope_table_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:77fae59cb6d70b20e06caafc80749bd9066496775fc6152e16fbe3a649eb3662
+size 75957
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_panel_info2_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_panel_info2_prop.ydr
new file mode 100644
index 000000000..12ee29b3b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_panel_info2_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6ba72bf8779bc57a1972df38ad8e1bbdd9089c105c2821aca1039b9349b0df37
+size 9414
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_panel_info3_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_panel_info3_prop.ydr
new file mode 100644
index 000000000..d3d3085aa
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_panel_info3_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:56020bd9aceeb4245701286e4a40a63f8ca673a34926f98708d42e40e4b52359
+size 10032
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_panel_info_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_panel_info_prop.ydr
new file mode 100644
index 000000000..9ee17aed3
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_panel_info_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0c7117b52e06f5b761acfb57dbab6958a580a09d1960ed7917f2e4b98408499b
+size 12329
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_split_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_split_prop.ydr
new file mode 100644
index 000000000..4c1c91376
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_split_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7bf3c367ed41b650407d95c8832855f8fb7b2f9318e882ac2295c162f8e01fee
+size 116661
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_xray_1_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_xray_1_prop.ydr
new file mode 100644
index 000000000..68c632a77
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_xray_1_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dbe65bd8806dab0d486df673e2980ba107aad7327ede28e25a11597d14fc4526
+size 54587
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_xray_2_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_xray_2_prop.ydr
new file mode 100644
index 000000000..9b9773f83
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_xray_2_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:11d060909e0c8631702f5207899c3d9d782de894a8578785fba7199e9e112825
+size 11351
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_xray_3_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_xray_3_prop.ydr
new file mode 100644
index 000000000..3a9e2e3e1
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_med_xray_3_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:131690714b67cad67ba6b7a2f77dfc652d8fd3c88db56f9ddb22cc9cea7b8375
+size 50869
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_decal_box.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_decal_box.ydr
new file mode 100644
index 000000000..c754894da
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_decal_box.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f0e5a8dbb870c11c7a5c1dc0a1318e50879824bd6ee29938e7385768115f9e76
+size 827
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_decal_moni_a.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_decal_moni_a.ydr
new file mode 100644
index 000000000..732eb97fe
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_decal_moni_a.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a59eaa8fb8e716cefc0cae2e3704c83f77f0ea603a7caedc8abfba77bb913c8
+size 804
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_decal_moni_b.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_decal_moni_b.ydr
new file mode 100644
index 000000000..ac8efcfc9
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_decal_moni_b.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1f19d7c8590fb40d3a2db2a8676ca231da7797c0052581cec3ce8a3b021265a5
+size 803
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_diagtable.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_diagtable.ydr
new file mode 100644
index 000000000..520be6d10
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_diagtable.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a6937932a72e9ee45a69bcb14e9d484ac2925ed43b096bc5bd19cf6c055676c1
+size 96765
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_stellen.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_stellen.ydr
new file mode 100644
index 000000000..3edee2a1f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medic_stellen.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6f58f2f0e9e919e05f1de41b9d2b95f1789c20cbc71d253e970be7a704d655aa
+size 2436
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_aed_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_aed_prop.ydr
new file mode 100644
index 000000000..83c2af0a0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_aed_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18005d9a724d548b2ca7becb39e1bce6c476be95a03328b00b293ac384feb8af
+size 53620
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_aed_redbag_prop.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_aed_redbag_prop.ydr
new file mode 100644
index 000000000..75865ecb0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_aed_redbag_prop.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:07fef124ec09403b518aa399f3089ca515be9299c92793e58ff5d8a66307b1e2
+size 75928
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_fold_b1.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_fold_b1.ydr
new file mode 100644
index 000000000..0dcf691f6
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_fold_b1.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cdc27a0f9d51ac049c742702809fab61d868968ddba20f6b5cfe973c56f3ebcf
+size 252468
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_fold_b2.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_fold_b2.ydr
new file mode 100644
index 000000000..f91911452
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_fold_b2.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:dd5f0f47c75b406b1c057a39c7a3bd6aba2e128a925bf1f05cdb05db24cce9ea
+size 245868
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_fold_r.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_fold_r.ydr
new file mode 100644
index 000000000..17198da3f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_fold_r.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b801091cde1bf7a05c707c60d5acf521ffd089df788a099dffdc8e806e4441bc
+size 237190
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_fold_y.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_fold_y.ydr
new file mode 100644
index 000000000..49633b9b3
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_fold_y.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4071433f8c7e3e2fafa9c19d5b82e74c204041382209acbfb7cb4665e499adba
+size 266336
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_unfold_b1.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_unfold_b1.ydr
new file mode 100644
index 000000000..33b30fb2c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_unfold_b1.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ad68d54e49a5dfd270b779b4418d6cc3ad1c99fc434491dc5a188fee234e71ca
+size 180769
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_unfold_b2.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_unfold_b2.ydr
new file mode 100644
index 000000000..cb5358a96
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_unfold_b2.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:565664fba06fa52abe6a78ee0fcaa9e507e6e464a0d6f764a011902b88ee0202
+size 174394
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_unfold_r.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_unfold_r.ydr
new file mode 100644
index 000000000..a6f23eb34
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_unfold_r.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a66c27d4b006aac6361fe8ba43dc6aaa34b7125580b25e9c22335c14b0e17a7f
+size 165370
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_unfold_y.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_unfold_y.ydr
new file mode 100644
index 000000000..69c85f9fa
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ydr/gn_medical_stretcher_unfold_y.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:88a48903ff5da3ccbe7a75448eadf6fe1436bd56002159460a644c5839602c5c
+size 194713
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ytd/gn_medical_assets_txd.ytd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ytd/gn_medical_assets_txd.ytd
new file mode 100644
index 000000000..b117564d3
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ytd/gn_medical_assets_txd.ytd
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6b8456e907f4cfa5e83081118960c4a2dc43f47ca1d8e57e103eb638c4b5291c
+size 2894711
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ytd/nels_medical_props_txd.ytd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ytd/nels_medical_props_txd.ytd
new file mode 100644
index 000000000..9d059482d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ytd/nels_medical_props_txd.ytd
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:deab48e65c3bb8727169f58a1ec5c8b9ad455cb1a79905e770a06d28c9d19f86
+size 847732
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ytyp/gn_medical_assets.ytyp b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ytyp/gn_medical_assets.ytyp
new file mode 100644
index 000000000..5dc2354f7
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ytyp/gn_medical_assets.ytyp differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ytyp/nels_medical_props.ytyp b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ytyp/nels_medical_props.ytyp
new file mode 100644
index 000000000..34b61032f
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/medical_assets/ytyp/nels_medical_props.ytyp differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ycd/clip@gn_mugsteam.ycd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ycd/clip@gn_mugsteam.ycd
new file mode 100644
index 000000000..41e007f01
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ycd/clip@gn_mugsteam.ycd differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_boiler_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_boiler_01.ydr
new file mode 100644
index 000000000..23f397bad
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_boiler_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ef4ae84a8c5f864357b65f29596319d9553ed24b258c8a3411c41c6702b25af8
+size 17221
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_aircon.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_aircon.ydr
new file mode 100644
index 000000000..6012321f2
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_aircon.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d905052fc4d1a2ec13a69b16bc90ee3d72589efd8e1c192420450e0c438c1658
+size 164434
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_coffee_machine.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_coffee_machine.ydr
new file mode 100644
index 000000000..7f51d11a9
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_coffee_machine.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f8a2bc828e8a043356b6a2adbaacc645a01aa3753ccaf90833213b55dbad5fb7
+size 14141
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_exitsign.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_exitsign.ydr
new file mode 100644
index 000000000..482e82df5
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_exitsign.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:89ce5c2126ca3bf5a3272e918d05a033816b745737af91d0d255d7ffce177814
+size 2788
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_fire_alarm.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_fire_alarm.ydr
new file mode 100644
index 000000000..836083be8
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_fire_alarm.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c113116eb76e7af65ce891c209c14d0da0b4a5145134b167d38905a3c4d771d9
+size 5339
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_fire_ext.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_fire_ext.ydr
new file mode 100644
index 000000000..501f96aab
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_fire_ext.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c7acdb30ea90f53ff8406eab41d600cad6327932a78f9d0d073bf9bccc16ae4a
+size 4768
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_fire_ext2.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_fire_ext2.ydr
new file mode 100644
index 000000000..6c0da674f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_fire_ext2.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b2116aa3bb3f5ca9c9e6abf4a62ddfc928714f8f6417ef890ee8e94703d4ceb6
+size 1208
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_fire_sounder.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_fire_sounder.ydr
new file mode 100644
index 000000000..bfd3fd3ed
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_fire_sounder.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:43e194cae8724772ce6b7a91857f299a9160039215972d73c3178d81fb7d9c51
+size 7625
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_icefreezer.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_icefreezer.ydr
new file mode 100644
index 000000000..c00303b7f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_icefreezer.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:854ba621d936958b116e7eab9130afb236260874f011340a350bb8193814b6b4
+size 28438
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_plugcable.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_plugcable.ydr
new file mode 100644
index 000000000..ef7b87af0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_plugcable.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6dc2dfa44c3e826ff6dca9f403219f15411502776cecfcecb8f42357e319a17d
+size 4729
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_toilet_dryer.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_toilet_dryer.ydr
new file mode 100644
index 000000000..0f0418f8e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_toilet_dryer.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:33ba8ce3098e2a9c427d3b8f345373ce1c3e692d476887212f4b704be180b1d7
+size 53112
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_towel_order.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_towel_order.ydr
new file mode 100644
index 000000000..6f53b9b9d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_towel_order.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f5c4ecf6664d7f795f5e516a535631533153ca2ca0eaf17708dd9e9e31ed5484
+size 11579
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_wc_b.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_wc_b.ydr
new file mode 100644
index 000000000..db13cb216
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_wc_b.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:0e210dddcc095ee089c59817f5cc85b2eb1cfb2c5cb341d67498d95161fd1335
+size 66204
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_wc_c.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_wc_c.ydr
new file mode 100644
index 000000000..e399f964e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_wc_c.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:19222da48cf1b0ef8434871aff63c2ecbc17f8a86f07cee525234acd147b91b0
+size 43544
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_wc_split.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_wc_split.ydr
new file mode 100644
index 000000000..350ad67ea
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collec_wc_split.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b25d5323a31092a0174fbe02b6f8db2b99cd4264e529be741234cc4f305239b3
+size 5699
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collect_elecframe_1.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collect_elecframe_1.ydr
new file mode 100644
index 000000000..e71680968
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collect_elecframe_1.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1a316ec8bb841db2e07b259ab7d615b649aa2dc3d6c1c9f312b9c4245f693463
+size 10885
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collect_elecframe_2.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collect_elecframe_2.ydr
new file mode 100644
index 000000000..97335a6c5
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collect_elecframe_2.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5aa262726c425720ae6a050a74c9a6223e1e158105b73daeb7719d158e39d266
+size 11227
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collect_switch1.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collect_switch1.ydr
new file mode 100644
index 000000000..d9f75eb46
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collect_switch1.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:49a2ba2472f277c49f31575b253b3994537f22747d86f0ff59f46bccd26bc86c
+size 2418
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collection_shower_a.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collection_shower_a.ydr
new file mode 100644
index 000000000..9a29d9130
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collection_shower_a.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:22daf30b147c65cdbcae553f2ded8f360a409077dc28e32cdf401245638f56d1
+size 22770
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collection_sink_a.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collection_sink_a.ydr
new file mode 100644
index 000000000..03fa6b040
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collection_sink_a.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:18b3e058e092147a9dcde693927b49700fdc7c53f9fdb008fdcfc1f6eec699a4
+size 60480
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collection_wc_a.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collection_wc_a.ydr
new file mode 100644
index 000000000..a19b13278
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_collection_wc_a.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:741dde48c06256fd83082debdcbd645b059213882e14cedb524efcfb8b75fccc
+size 53630
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_comptuter_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_comptuter_01.ydr
new file mode 100644
index 000000000..d6eb6ea27
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_comptuter_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:297b80e544434cc502a5c0b630136dc39c6475f23be7461e3a76761750594ec6
+size 267184
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_fridge_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_fridge_01.ydr
new file mode 100644
index 000000000..3b7271cb0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_fridge_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:62bad4b70995292c17ebb3c478c9ad2b88ba40195b8c688175c9e91f186d9941
+size 33000
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_01.ydr
new file mode 100644
index 000000000..c113d4ee7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7fe3b723526b5b6aa3bc13bc657ed5d49e3521bcf22c3d7725631759fb1e4000
+size 42543
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_02.ydr
new file mode 100644
index 000000000..aec7a4bc5
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a55a278e8a7b7abb32e21a72227a5b563d17ea837f524871e25ed07694fad960
+size 14112
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_03.ydr
new file mode 100644
index 000000000..4bbaf2bc4
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:afe3714dbf2f0206f0ce4f464081771d9381e80f5e607c2dd25e277d201eef57
+size 5651
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_04.ydr
new file mode 100644
index 000000000..40210db06
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:599f331ca53e7ce5bb038f88639e7119475d59bbb9adb0e2c1a1a248e77757d1
+size 49698
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_05.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_05.ydr
new file mode 100644
index 000000000..1db8225ca
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_05.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:003563887297b4a9f970e82bdf3d0f297f500c9b94ff93136c69a3d3d6ce0717
+size 16299
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_wall_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_wall_01.ydr
new file mode 100644
index 000000000..09739f805
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_lamp_wall_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3a2ccd1e370696b8a0206fcbb370b1c8eb33159e76ce46952e8a04e10b5d5ded
+size 36509
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_metal_trashcan_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_metal_trashcan_01.ydr
new file mode 100644
index 000000000..e91032dd2
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_metal_trashcan_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fdfb5ab1c7460cc1a322a5865fc2dd5bdc6bbb8759407de4e4a991e88c96b845
+size 21798
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_micro_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_micro_01.ydr
new file mode 100644
index 000000000..30e2117bc
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_micro_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:89aa1026025c22294709c2fcb19c5028b654760692e3fe5e88951c95a92f97c5
+size 282876
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_monitor_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_monitor_01.ydr
new file mode 100644
index 000000000..a563e19dd
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_monitor_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9329622062787300bbba2645547b2e3838e2b5ae93946121d263da39bb5a655f
+size 22714
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_mugsteam.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_mugsteam.ydr
new file mode 100644
index 000000000..d61a3a55b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_mugsteam.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7dcbb03d8bfd3b148f2076f081337f13de42142a53e91b2167b4a2a8e20769a9
+size 4933
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_multiplug_prop_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_multiplug_prop_01.ydr
new file mode 100644
index 000000000..1d7a1149b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_multiplug_prop_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ca400ec8175f4e1f5f9423d6f7dee5b91711ef49ea97804563dbf6f2ae384bc6
+size 15204
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_phone_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_phone_01.ydr
new file mode 100644
index 000000000..9d2354354
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_phone_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:31e593b19cb5da53bed3dbaa6cdca1307f62cb98a39ebcb677c03ff91d375b11
+size 17565
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_plant_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_plant_01.ydr
new file mode 100644
index 000000000..42e34e43a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_plant_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a311c74588eb7abf64fb4e4f98700cd9cb3a4dffcacdcd816da58cdb791374c
+size 50297
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_american_flag_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_american_flag_01.ydr
new file mode 100644
index 000000000..6504351a3
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_american_flag_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:92eb6aa3cf0eaa3cdada7553b595c83959be60314b09fa8ae39b0389c2894bca
+size 18808
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_chair.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_chair.ydr
new file mode 100644
index 000000000..f78ed287d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_chair.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:be6c5bc57703bd47ea7039a2e245132eef83524678d983c5e2b742b90566fd7b
+size 270193
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_chair_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_chair_02.ydr
new file mode 100644
index 000000000..ace3957a7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_chair_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a263aa283fb1ed21b2c2cbeb8abccde4836bbc764d2044b30327c09249d82f0
+size 93717
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_chair_02b.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_chair_02b.ydr
new file mode 100644
index 000000000..9c6c60c98
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_chair_02b.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4f82ec95443f3f24dff0b524f68f65a3288ee8f9005e05488587c07f0c9bf1e1
+size 91291
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_desk1_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_desk1_01.ydr
new file mode 100644
index 000000000..b521c66e7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_desk1_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c94e5185085d54f8db886977f27d4228c43ac12b1975a589f1896d77dd6ffbc8
+size 73882
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_desk1_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_desk1_02.ydr
new file mode 100644
index 000000000..2d4f8334e
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_desk1_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1723d2a7adfd21ca25c53cb9a6c6f8f8f5dd5de4addb64e39cb1fb0944e9070c
+size 80503
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_desk1_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_desk1_03.ydr
new file mode 100644
index 000000000..1ad2b070a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_desk1_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fc3032584edbebb1cef6524c7cdbf93805962cf5c27d484ba43178052be78470
+size 21235
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_desk1_04.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_desk1_04.ydr
new file mode 100644
index 000000000..6f4576a4c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_desk1_04.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c6b667fd77ff6a1b123987a8a173ac1e76cd9b8cb72a8738bb1de3f70579abf3
+size 22262
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_pallettruck.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_pallettruck.ydr
new file mode 100644
index 000000000..c0a60c08a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_pallettruck.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f33a1bcd6ce0251e00a0092997f6d41cd6ad0f9f32938679de2313b59be4e6a5
+size 12357537
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_table_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_table_01.ydr
new file mode 100644
index 000000000..f74a4cdfe
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_table_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cf253651c6a25d5a73a01926eb008dd3f44662c6e3d80941e103cc09ac4a8ad2
+size 10783
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_table_01b.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_table_01b.ydr
new file mode 100644
index 000000000..1a900bc0b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_prop_table_01b.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:29084e6e387a0113d78c1e8bd4284d9d9ca74475a7839c2f69232370a4d3446e
+size 9540
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_sheriff_lamp.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_sheriff_lamp.ydr
new file mode 100644
index 000000000..f95a31f78
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_sheriff_lamp.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c18da422fb4221ede7185aeaf910309e1bd54fd4c51845898f2506f17411edac
+size 62608
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_sheriff_monitor.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_sheriff_monitor.ydr
new file mode 100644
index 000000000..07e2c5612
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_sheriff_monitor.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b45142565c8a14cd35d87f51b32545cafa18df5c641493f54e499432043c28b4
+size 10377
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_shower_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_shower_02.ydr
new file mode 100644
index 000000000..553434842
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_shower_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:39e9897e14bcac7d320dc2f481c30b0b78182a88ab18f635aaba773d1ce6745c
+size 71484
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_shower_03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_shower_03.ydr
new file mode 100644
index 000000000..345893517
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_shower_03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1870996256bf39c0fe59980857bab8fb8b46ce5b17e7ea8d1623dd9febcdfad4
+size 19942
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_sink_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_sink_01.ydr
new file mode 100644
index 000000000..f56002cc2
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_sink_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b116b25e02e50daf413380713981f5f72c5ec35a3c4f1622c2ea784430dcd0ff
+size 119447
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_speaker_01_b.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_speaker_01_b.ydr
new file mode 100644
index 000000000..cfcf3747d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_speaker_01_b.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8dbe441d4d90049a1706ee585a81341071684dcaa0c20e4aaffad1416d1a3ed4
+size 124912
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_speaker_01_s.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_speaker_01_s.ydr
new file mode 100644
index 000000000..f87cd9fe1
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_speaker_01_s.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:84ed94399bf6f21aea7da0ace483d27519adbb6b17d8f248c7239c592a6103c1
+size 119932
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_table_lamp_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_table_lamp_01.ydr
new file mode 100644
index 000000000..bc8ca1715
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ydr/gn_table_lamp_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:475fefeee36bedfc660a12a314b2694d4df518381127fff3c20f8508d4000892
+size 45490
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ytd/gn_assets_art_txd.ytd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ytd/gn_assets_art_txd.ytd
new file mode 100644
index 000000000..88a6f6f54
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ytd/gn_assets_art_txd.ytd
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9e44d4fbccf06ac40c6cff3f93bf3505a83594d46578abf24d61ac70750501ac
+size 6122672
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ytd/gn_collec_txd.ytd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ytd/gn_collec_txd.ytd
new file mode 100644
index 000000000..df6dad92a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ytd/gn_collec_txd.ytd
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:47d1e7686d47c8cb63e30441ca32696a43df8137bf69af312bd7192087781d9d
+size 5505075
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ytyp/gn_assets_collection.ytyp b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ytyp/gn_assets_collection.ytyp
new file mode 100644
index 000000000..882e7c153
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_collection/stream/ytyp/gn_assets_collection.ytyp differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/.fxap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/.fxap
new file mode 100644
index 000000000..2aa51c599
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/.fxap differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/README.md b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/README.md
new file mode 100644
index 000000000..635bca797
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/README.md
@@ -0,0 +1,29 @@
+FAQ
+
+I have collision trees and buildings in other G&N's mods?
+1. Make sure you're using the right compatibility.
+2. G&N's ensures compatibility with 100% of these mods simultaneously.
+ We cannot guarantee all compatibility possibilities.
+
+How to find more compatibility?
+Find all our compatibilities directly on our Github, search your compatibilities thanks to the different branches.
+
+Github Link : [Click here](https://github.com/G-N-s-Studio/cfx_gn_sandy_mapdata)
+
+
+
+
+
+
+
+
+I've got trees, buildings and collisions on other mods, from other creators?
+
+1. You probably have duplicate files in several resources. Compare files between cfx_gn_sandy_mapdata and other resources to find out which files are in conflict.
+
+ # Tips :
+ Our friend Prompt has created a tool to make this task easier:
+
+ -> Tool : https://fivem.prompt-mods.com/compatibility-tool
+
+ -> Tutorial: https://youtu.be/GeJto5IWL_M
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/fxmanifest.lua b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/fxmanifest.lua
new file mode 100644
index 000000000..e2ee37b56
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/fxmanifest.lua
@@ -0,0 +1,14 @@
+fx_version 'cerulean'
+game 'gta5'
+
+author 'G&N_s Studio'
+description 'Sandy Shore Mapdata - Clinic Center + Burgershot + Sheriff Dept + Motel + Strip Mall + Laundry + Liquor Bar'
+version '4.1.0'
+
+dependency '/gameBuild:2189'
+
+this_is_a_map 'yes'
+
+escrow_ignore {
+ 'stream/**/*'
+}
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/cs4_07_0.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/cs4_07_0.ybn
new file mode 100644
index 000000000..c9424f15c
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/cs4_07_0.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/cs4_roads_2.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/cs4_roads_2.ybn
new file mode 100644
index 000000000..f9cdc12ab
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/cs4_roads_2.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/cs4_roads_4.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/cs4_roads_4.ybn
new file mode 100644
index 000000000..b3dc72089
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/cs4_roads_4.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/hi@lr_cs4_06_0.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/hi@lr_cs4_06_0.ybn
new file mode 100644
index 000000000..7319115c4
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/hi@lr_cs4_06_0.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/hi@lr_cs4_06_2.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/hi@lr_cs4_06_2.ybn
new file mode 100644
index 000000000..623a6791c
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/hi@lr_cs4_06_2.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/hi@lr_cs4_09_0.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/hi@lr_cs4_09_0.ybn
new file mode 100644
index 000000000..d40ff50c6
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/hi@lr_cs4_09_0.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/hi@lr_cs4_10_0.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/hi@lr_cs4_10_0.ybn
new file mode 100644
index 000000000..2702694e1
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/hi@lr_cs4_10_0.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_06_0.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_06_0.ybn
new file mode 100644
index 000000000..94f0f4964
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_06_0.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_06_2.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_06_2.ybn
new file mode 100644
index 000000000..82b817adb
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_06_2.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_09_0.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_09_0.ybn
new file mode 100644
index 000000000..ad9064dea
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_09_0.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_09_1.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_09_1.ybn
new file mode 100644
index 000000000..9e614cc1a
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_09_1.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_10_0.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_10_0.ybn
new file mode 100644
index 000000000..3d986a85c
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_10_0.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_10_1.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_10_1.ybn
new file mode 100644
index 000000000..94d627591
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/lr_cs4_10_1.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/v_sheriff.ybn b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/v_sheriff.ybn
new file mode 100644
index 000000000..d91515f95
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ybn/v_sheriff.ybn differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_06_l1_slod1_children.ydd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_06_l1_slod1_children.ydd
new file mode 100644
index 000000000..bbe72349f
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_06_l1_slod1_children.ydd differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_09_ld1_slod1_children.ydd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_09_ld1_slod1_children.ydd
new file mode 100644
index 000000000..763a727d0
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_09_ld1_slod1_children.ydd differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_09_props_combo03_dslod_children.ydd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_09_props_combo03_dslod_children.ydd
new file mode 100644
index 000000000..8bb8c7e29
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_09_props_combo03_dslod_children.ydd differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_rd_props_combo03_slod_children.ydd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_rd_props_combo03_slod_children.ydd
new file mode 100644
index 000000000..4fadf5023
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_rd_props_combo03_slod_children.ydd differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_rd_props_prop23_slod_children.ydd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_rd_props_prop23_slod_children.ydd
new file mode 100644
index 000000000..51d37ecdd
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_rd_props_prop23_slod_children.ydd differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_rd_props_prop26_slod_children.ydd b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_rd_props_prop26_slod_children.ydd
new file mode 100644
index 000000000..697bdf5a2
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydd/cs4_rd_props_prop26_slod_children.ydd differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_coverwall.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_coverwall.ydr
new file mode 100644
index 000000000..4fe3d3047
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_coverwall.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:81ae1ee13d896f457b376caa9baccef2e51a4cb277d6d4d1599341170631f010
+size 599
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_glue1.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_glue1.ydr
new file mode 100644
index 000000000..5328e807b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_glue1.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:80daea2e4aa990f4568a7c19f2d8e2479e4ee3b7b9c78b73618e7205a1a485eb
+size 42278
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_land02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_land02.ydr
new file mode 100644
index 000000000..073ddfe17
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_land02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3422601c171f216c481cd4a5de62fb8f5386e893de73bcbad0ce0020d76d02ad
+size 65399
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_motel_crprk.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_motel_crprk.ydr
new file mode 100644
index 000000000..3c1b526d5
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_motel_crprk.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b3d093982005ec0ecc4aba8adf8d3f8a3944a21fab0268a65e110efcbb1f88a5
+size 575854
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_motl_ovly03.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_motl_ovly03.ydr
new file mode 100644
index 000000000..7067d7ad0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_motl_ovly03.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:1550f895df68ea0ca5d57272eb64ddf696882078f96824e7cd3067b75cfcf9e2
+size 114942
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_pave.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_pave.ydr
new file mode 100644
index 000000000..44799b6a4
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_pave.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2ba055748b83a7417e107ad2da6548bbcd0a25fe3e192439878621a8a964f0a7
+size 232229
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_weeds3.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_weeds3.ydr
new file mode 100644
index 000000000..72442d6c0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_weeds3.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c1774e640087d0015a8c956468f1e276f498e66c66e9d425af6882f3c0e02c24
+size 108849
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_weeds4.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_weeds4.ydr
new file mode 100644
index 000000000..ab0236283
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_06_weeds4.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b2a93b5225452527a131e5616fb2bb2695ed0079549779ca0c4b4415c5333eff
+size 41937
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_07_land01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_07_land01.ydr
new file mode 100644
index 000000000..b97f08828
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_07_land01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6358f779467f3a1305b6b5738f0d16caf7391d0198b65997b5c6aa441a2f58c0
+size 1103186
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_07_land01o.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_07_land01o.ydr
new file mode 100644
index 000000000..96c1e6d45
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_07_land01o.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e9463bf6de795a43e3ca47c2034736d1fcdd19181e2a41c03ccaec18c95669ea
+size 22259
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_09_land008.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_09_land008.ydr
new file mode 100644
index 000000000..2e310c0a7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_09_land008.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ed031ea876af349c5ca972f48552d8f1f85cc029dfdbeddd4311d04a75a6b99b
+size 50747
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_09_land01_g001.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_09_land01_g001.ydr
new file mode 100644
index 000000000..1801523b9
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_09_land01_g001.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:148364aac0945b1634d149c43e45751d96cafa63f8c1880a392285611849c4d6
+size 936
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_09_land06.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_09_land06.ydr
new file mode 100644
index 000000000..a82319757
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_09_land06.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:128326342dd84120e7a90f841c0f669ac885012064b58f8512367827bf6c3590
+size 92325
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_bar.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_bar.ydr
new file mode 100644
index 000000000..3103d64f7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_bar.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:70d568bc62b3fd7a95b2552392c0801c6519695155f090dfe0b5a6f6dec0a48f
+size 2333306
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_decals_trailer003.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_decals_trailer003.ydr
new file mode 100644
index 000000000..7adc6b66d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_decals_trailer003.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fd7ff59538dbe1731c376196f2b0682ff875aeb27887db56838d2d969a7b56c4
+size 1644824
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_em_01.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_em_01.ydr
new file mode 100644
index 000000000..eff073c15
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_em_01.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:31ea78dab0311d887ef3a9cb4c89445711929e6da8799d7e6387709eca74daff
+size 558
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_em_011.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_em_011.ydr
new file mode 100644
index 000000000..ef93a2640
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_em_011.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b1f5bfb041808f6e96a0fccbbbebe22e9c0d1c9843a80415f5ada832bdb73e9c
+size 523
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_em_02.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_em_02.ydr
new file mode 100644
index 000000000..fabfe703f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_em_02.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:cadaa33e069fb37d13cf6bc866695cc58b69184e55ad914e028554c4346a10c6
+size 583
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_railings.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_railings.ydr
new file mode 100644
index 000000000..0a204467f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_railings.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:62ac68ac94b2c2cdda632c2e2ee723bfb1bc8d6d1064ab5d90471f581dab6cbc
+size 468202
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_terrain_medic.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_terrain_medic.ydr
new file mode 100644
index 000000000..a6766b3b0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_terrain_medic.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:638013e70660874075bec9f6c7e9bb23dcb24834643a42063a211a0d9e0a7e8c
+size 251168
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_terrain_medic_ovly.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_terrain_medic_ovly.ydr
new file mode 100644
index 000000000..1c48aa603
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_10_terrain_medic_ovly.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bef4b0d4266412db11bc26e343115b44ad7c7b5245a3560ad8451c38f34609dc
+size 67990
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_rd_props_xwire07.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_rd_props_xwire07.ydr
new file mode 100644
index 000000000..6dd08c2a6
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_rd_props_xwire07.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:915fee8bec3dd768bc545e9198020f01fa6b42bcaf66bea5e4c427666c23c042
+size 17837
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_rd_props_xwire09.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_rd_props_xwire09.ydr
new file mode 100644
index 000000000..9f347774b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_rd_props_xwire09.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7532a203d3abdb59d1144b392e27d6ad30240931ab752d3815d7e3acb00abc4d
+size 27389
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_rd_props_xwire94.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_rd_props_xwire94.ydr
new file mode 100644
index 000000000..6c76a6527
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_rd_props_xwire94.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3506422f0f1a99a76f094bba70eee6c8c6948472f642c51e6a933cb954ba625a
+size 565
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb00.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb00.ydr
new file mode 100644
index 000000000..a6b951fe9
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb00.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6737a2f723023fcdeebc1826c309ecc5c84e262e5e385206010c0a85594b78df
+size 172657
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb14.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb14.ydr
new file mode 100644
index 000000000..3b20cf433
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb14.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8f0da97f43983badaaf44d67d31cd503e83ff69b3924a3ffb7faaccf7bc8fdd7
+size 209698
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb15.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb15.ydr
new file mode 100644
index 000000000..0ef9efbc8
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb15.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a1d1127a0b97b9f4b950b0c9cfc374b4bed825e4a43ffc60d8705273cc08342
+size 221633
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb16.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb16.ydr
new file mode 100644
index 000000000..5c689d1c4
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb16.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9428f2eb8a611dad025e8882a11a99ce3a7b9fa2189acc6513b3cbbf6902d0c1
+size 1412146
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb17.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb17.ydr
new file mode 100644
index 000000000..b815bd833
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb17.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a7b4ed479ab7f83df323a0c367552be4e9c143c58d002ac256f04048930fb7fb
+size 129165
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb18.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb18.ydr
new file mode 100644
index 000000000..b0dad26ec
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb18.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9b183f9106cc86f4bd59bd4740660999b71f5e957cc1b204f2f7866eba246aa7
+size 100440
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb20.ydr b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb20.ydr
new file mode 100644
index 000000000..85eebb2e3
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ydr/cs4_roadsb20.ydr
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:848b61d050818daddab89cf2c810c9ca1be9c8178e556a9bbe63a218eae2749b
+size 182722
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_04_grass_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_04_grass_0.ymap
new file mode 100644
index 000000000..fa6a3af39
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_04_grass_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:48b03972e70f04991d4b3fc443877a1edb7529c403b02b0e5a550c323579ceb8
+size 249983
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_06_grass_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_06_grass_0.ymap
new file mode 100644
index 000000000..e0be082ac
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_06_grass_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:68ced3e277b81132c93dfe8760ceec37dccc9fbcb3f468f04ba5fca38ce27aca
+size 196501
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_07_grass_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_07_grass_0.ymap
new file mode 100644
index 000000000..a6eb0ff9a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_07_grass_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:efa64b7c2bf65aa49438c62d3087802edb504dfffdf1e2ec12d15c9adff15711
+size 90194
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_09_grass_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_09_grass_0.ymap
new file mode 100644
index 000000000..f4af60c68
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_09_grass_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a4a9701a0e3e8464ab3c9c6f0496ec694c1d2a036bec29539ea8812157b9c7fe
+size 123505
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_10_grass_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_10_grass_0.ymap
new file mode 100644
index 000000000..e88d37e8c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_10_grass_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f9527b13fe9e4acdb3cf06a5f0d3f1c49fa8374a5c08efc535a21eb747562eb1
+size 31210
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_occl_03.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_occl_03.ymap
new file mode 100644
index 000000000..dabf317e9
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/cs4_occl_03.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:454d779b294d57c7f4c03d14ce288e1ffc86524c0da1633a94245cde90bd67ce
+size 14893
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_06_long_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_06_long_0.ymap
new file mode 100644
index 000000000..f1786c41b
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_06_long_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5802d80ed549c443734be62844be13bccff4dea447927be06beb0748ce278504
+size 1432
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_06_strm_1.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_06_strm_1.ymap
new file mode 100644
index 000000000..3ffdec550
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_06_strm_1.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8d7e49c9a6b246920e6dde4b7686e842eaf3a6eef2599700f26345df80dd2a74
+size 9072
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_06_strm_2.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_06_strm_2.ymap
new file mode 100644
index 000000000..af209488c
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_06_strm_2.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4a628651141065800fed02941d5d6ae9371ba8a5e1202eb98cf3f5a10e13b506
+size 3205
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_07_strm_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_07_strm_0.ymap
new file mode 100644
index 000000000..53cdb92f1
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_07_strm_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6e056485819cbf84e2da5c21d6b5933cd07382f9217f25f0d9146e4efcd752e0
+size 9379
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_07_strm_1.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_07_strm_1.ymap
new file mode 100644
index 000000000..6270874a0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_07_strm_1.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:e573424ace1a0307a60c581268687f71aba60f203e077cdc4ad323a0bf5d238e
+size 7575
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_09.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_09.ymap
new file mode 100644
index 000000000..4f0a76d15
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_09.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:44591c2a04cf01d6dc1eb4945f97e2465e29aa1355bd79503f4e75712caf1461
+size 2942
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_09_long_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_09_long_0.ymap
new file mode 100644
index 000000000..48400dbb0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_09_long_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7fdfb4c3e1dea1d4a278cf8ddfccec3d89777f2dd9b077259e64f6efa24d72f3
+size 2615
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_09_strm_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_09_strm_0.ymap
new file mode 100644
index 000000000..bb95f7a30
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_09_strm_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ad7e8f3224ed20b56f6b510cc17109be75f49668f9317a5683b1b1957c162ec2
+size 10540
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_09_strm_1.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_09_strm_1.ymap
new file mode 100644
index 000000000..3c83f1b5a
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_09_strm_1.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b5ae5c63b1d3f384238720f2e950e43f42b0f3616b6906213e059873ddedb4a
+size 15160
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_10.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_10.ymap
new file mode 100644
index 000000000..9e2c4bc01
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_10.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:08bd327f0168c6bc9506945c8de2644b95bde9a2a926eb2dd3be0404a83dcc83
+size 3901
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_10_interior_v_sheriff_milo_.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_10_interior_v_sheriff_milo_.ymap
new file mode 100644
index 000000000..9c12989f7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_10_interior_v_sheriff_milo_.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4c858633026480c46a878ef743aa6e5291324cc06c66067e344b0dcb32fd97c2
+size 1195
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_10_long_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_10_long_0.ymap
new file mode 100644
index 000000000..a12751de2
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_10_long_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:60be47e1ab5f4d7cf7b6ca00ce6b8d03a3dda9b80ebf9eb518073affe893463c
+size 1449
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_10_strm_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_10_strm_0.ymap
new file mode 100644
index 000000000..5391d4e7f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_10_strm_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a691039f03908ac72c1153e6ac45d9c552d04cb6a7184552ce6017121f1670b
+size 13438
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads.ymap
new file mode 100644
index 000000000..43953232d
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:d294fd0d60ca847735fc579a87c0ff8d7a2695df6dc64ba3dfcf57da12048a27
+size 17688
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_critical_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_critical_0.ymap
new file mode 100644
index 000000000..28b365fd7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_critical_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:306cce471001f20dcffdee72c90eecb35ef667ddc1fe7b8ba5a52274dfd3fd61
+size 18601
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_critical_1.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_critical_1.ymap
new file mode 100644
index 000000000..bfe9d7331
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_critical_1.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:9342cc3f25894cec880add688c57a3871bf7987449245e77c2dbd747165714c4
+size 18777
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_critical_2.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_critical_2.ymap
new file mode 100644
index 000000000..e61f8ee69
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_critical_2.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:bfb8d540dd48d17a29778eca7de08e8020695944d35071e8092c3362caf8399d
+size 8804
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_long_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_long_0.ymap
new file mode 100644
index 000000000..614dc2b19
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_long_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fce45271b4e36aba94c8cfcfea67c88aaf3c6916d67f7b05887c8d66f8bd3a15
+size 16285
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_strm_0.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_strm_0.ymap
new file mode 100644
index 000000000..e597b4c73
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_strm_0.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:21d1397237357dae88416f4e1861b5b6d154ff7fd91d8b0eed04f9464ceb6510
+size 12390
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_strm_2.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_strm_2.ymap
new file mode 100644
index 000000000..bb28361c7
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/lr_cs4_roads_strm_2.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:20f26071a8a115101d5e2b739bfea2b59ade7ec602e5e10728181e6b391c7e76
+size 15939
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/sheriff_cap_lod.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/sheriff_cap_lod.ymap
new file mode 100644
index 000000000..23534675f
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/sheriff_cap_lod.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:986496ba25be7f3f695872589a479ccf47c3dee810ba83cc07d30ba4d51d9afd
+size 1156
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/vw_distlodlights_medium028.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/vw_distlodlights_medium028.ymap
new file mode 100644
index 000000000..0e8615ce6
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/vw_distlodlights_medium028.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c782d81e4e1005355ce1027c376012795e076f0144a27fe49395048cbbd9abbc
+size 3384
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/vw_lodlights_medium028.ymap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/vw_lodlights_medium028.ymap
new file mode 100644
index 000000000..d5eb909d0
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_sandy_mapdata/stream/ymap/vw_lodlights_medium028.ymap
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5063304473fa9d70209817cd8b3aa9b8b2b46b3f0a4079e3c67b1e853ff2b3ae
+size 4257
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/.fxap b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/.fxap
new file mode 100644
index 000000000..92cc93017
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/.fxap differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/fxmanifest.lua b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/fxmanifest.lua
new file mode 100644
index 000000000..07c508d84
--- /dev/null
+++ b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/fxmanifest.lua
@@ -0,0 +1,23 @@
+fx_version 'cerulean'
+game 'gta5'
+
+author 'G&N Studio'
+description 'Scenarios Modification - Sandyshore Sheriff Dept + Motel - Davis Sheriff Dept + Blaine COunty Fire Dept'
+version '1.4.0'
+
+files {
+ 'sp_manifest.ymt',
+}
+
+dependencies {
+ '/server:4960',
+ '/gameBuild:2189'
+}
+
+data_file 'SCENARIO_POINTS_OVERRIDE_PSO_FILE' 'sp_manifest.ymt'
+
+escrow_ignore {
+ 'sp_manifest.ymt',
+ 'stream/*.ymt',
+ }
+dependency '/assetpacks'
\ No newline at end of file
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/sp_manifest.ymt b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/sp_manifest.ymt
new file mode 100644
index 000000000..c65a09249
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/sp_manifest.ymt differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/alien_camp.ymt b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/alien_camp.ymt
new file mode 100644
index 000000000..ff8625efb
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/alien_camp.ymt differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/davis.ymt b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/davis.ymt
new file mode 100644
index 000000000..63ac84b29
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/davis.ymt differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/rancho.ymt b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/rancho.ymt
new file mode 100644
index 000000000..91d14d1a5
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/rancho.ymt differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/sandy_shores.ymt b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/sandy_shores.ymt
new file mode 100644
index 000000000..8a24d563f
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/sandy_shores.ymt differ
diff --git a/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/senora_hills.ymt b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/senora_hills.ymt
new file mode 100644
index 000000000..de324dea0
Binary files /dev/null and b/resources/[EGRP-Map-Addons]/[gnstudio]/cfx_gn_scenario/stream/senora_hills.ymt differ
diff --git a/resources/mth-K9/.gitattributes b/resources/mth-K9/.gitattributes
new file mode 100644
index 000000000..dfe077042
--- /dev/null
+++ b/resources/mth-K9/.gitattributes
@@ -0,0 +1,2 @@
+# Auto detect text files and perform LF normalization
+* text=auto
diff --git a/resources/mth-K9/LICENSE b/resources/mth-K9/LICENSE
new file mode 100644
index 000000000..ff08f292b
--- /dev/null
+++ b/resources/mth-K9/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 mathu_lmn
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/resources/mth-K9/README.md b/resources/mth-K9/README.md
new file mode 100644
index 000000000..e32215230
--- /dev/null
+++ b/resources/mth-K9/README.md
@@ -0,0 +1,33 @@
+**Description :spiral_notepad: :**
+
+:wave: Hey guys, I've always wanted to Roleplay as a police officer with a K9, unfortunately, I never found **THE** script that has no bugs, and is easy to use and for **free** ! So I decided to make my own script, and here it is !
+(note that some functions were inspired by other scripts, but I tried to make it as much as possible as standalone as possible)
+
+**Usage :hammer_and_wrench: :**
+
+To use the resource, download it, put the `mth-K9` folder in your main resources folder.
+Add `start mth-K9` to your server.cfg
+Then, once you're in game, press O to toggle the menu.
+
+**Features :sparkles: :**
+
+* STANDALONE : this means that you don't need any dependencies to start this script on your server
+* Easy to use
+* Give your K9 a name
+* Multiple animations for your K9
+* Attack a target (you can choose between the K9 attacking the player in front of him, or the player you're selecting)
+* The K9 can follow you, or stay in a specific place
+* The K9 can be called back to you
+* The K9 can be put in the car
+* The K9 can bark
+
+
+*Demo :eyes: :*
+
+[Video](https://streamable.com/y771g3)
+
+https://streamable.com/y771g3
+
+**Link to the resource :** [mathu-lmn/mth-K9 (github.com)](https://github.com/Mathu-lmn/mth-K9)
+
+Feel free to open an Issue or make a PR to help me improve this resource !
\ No newline at end of file
diff --git a/resources/mth-K9/RageUI/.vscode/settings.json b/resources/mth-K9/RageUI/.vscode/settings.json
new file mode 100644
index 000000000..52541506f
--- /dev/null
+++ b/resources/mth-K9/RageUI/.vscode/settings.json
@@ -0,0 +1,5 @@
+{
+ "Lua.diagnostics.disable": [
+ "undefined-global"
+ ]
+}
\ No newline at end of file
diff --git a/resources/mth-K9/RageUI/RMenu.lua b/resources/mth-K9/RageUI/RMenu.lua
new file mode 100644
index 000000000..04b00f05e
--- /dev/null
+++ b/resources/mth-K9/RageUI/RMenu.lua
@@ -0,0 +1,98 @@
+---
+--- Generated by EmmyLua(https://github.com/EmmyLua)
+--- Created by Dylan Malandain.
+--- DateTime: 29/10/2019 02:40
+---
+
+---@class RageUI
+RageUI = {}
+
+---@class Item
+RageUI.Item = {}
+
+---@class Panel
+RageUI.Panel = {}
+
+---@class Window
+RageUI.Window = {}
+
+---@class RMenu
+RMenu = setmetatable({}, RMenu)
+
+---@type table
+local TotalMenus = {}
+
+---Add
+---@param Type string
+---@param Name string
+---@param Menu table
+---@return RMenu
+---@public
+function RMenu.Add(Type, Name, Menu)
+ if RMenu[Type] ~= nil then
+ RMenu[Type][Name] = {
+ Menu = Menu
+ }
+ else
+ RMenu[Type] = {}
+ RMenu[Type][Name] = {
+ Menu = Menu
+ }
+ end
+ return table.insert(TotalMenus, Menu)
+end
+
+---Get
+---@param Type string
+---@param Name string
+---@return table
+---@public
+function RMenu:Get(Type, Name)
+ if self[Type] ~= nil and self[Type][Name] ~= nil then
+ return self[Type][Name].Menu
+ end
+end
+
+---GetType
+---@param Type string
+---@return table
+---@public
+function RMenu:GetType(Type)
+ if self[Type] ~= nil then
+ return self[Type]
+ end
+end
+
+---Settings
+---@param Type string
+---@param Name string
+---@param Settings string
+---@param Value any optional
+---@return void
+---@public
+function RMenu:Settings(Type, Name, Settings, Value)
+ if Value ~= nil then
+ self[Type][Name][Settings] = Value
+ else
+ return self[Type][Name][Settings]
+ end
+end
+
+---Delete
+---@param Type string
+---@param Name string
+---@return void
+---@public
+function RMenu:Delete(Type, Name)
+ self[Type][Name] = nil
+ collectgarbage()
+end
+
+---DeleteType
+---@param Type string
+---@return void
+---@public
+function RMenu:DeleteType(Type)
+ self[Type] = nil
+ collectgarbage()
+end
diff --git a/resources/mth-K9/RageUI/components/Audio.lua b/resources/mth-K9/RageUI/components/Audio.lua
new file mode 100644
index 000000000..eecb07aa7
--- /dev/null
+++ b/resources/mth-K9/RageUI/components/Audio.lua
@@ -0,0 +1,35 @@
+---
+--- Generated by EmmyLua(https://github.com/EmmyLua)
+--- Created by Dylan Malandain.
+--- DateTime: 24/07/2019 03:38
+---
+
+
+---PlaySound
+---
+--- Reference : N/A
+---
+---@param Library string
+---@param Sound string
+---@param IsLooped boolean
+---@return nil
+---@public
+function RageUI.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
+
+
diff --git a/resources/mth-K9/RageUI/components/Enum.lua b/resources/mth-K9/RageUI/components/Enum.lua
new file mode 100644
index 000000000..3a0121f4b
--- /dev/null
+++ b/resources/mth-K9/RageUI/components/Enum.lua
@@ -0,0 +1,30 @@
+---
+--- @author Dylan MALANDAIN
+--- @version 2.0.0
+--- @since 2020
+---
+--- RageUI Is Advanced UI Libs in LUA for make beautiful interface like RockStar GAME.
+---
+---
+--- Commercial Info.
+--- Any use for commercial purposes is strictly prohibited and will be punished.
+---
+--- @see RageUI
+---
+
+---@class Enum
+local enums = {
+ __index = function(table, key)
+ if rawget(table.enums, key) then
+ return key
+ end
+ end
+}
+
+---Enum
+---@param t table
+---@return Enum
+function RageUI.Enum(t)
+ local e = { enums = t }
+ return setmetatable(e, enums)
+end
diff --git a/resources/mth-K9/RageUI/components/Keys.lua b/resources/mth-K9/RageUI/components/Keys.lua
new file mode 100644
index 000000000..e35cd09f1
--- /dev/null
+++ b/resources/mth-K9/RageUI/components/Keys.lua
@@ -0,0 +1,53 @@
+---
+--- @author Dylan MALANDAIN
+--- @version 2.0.0
+--- @since 2020
+---
+--- RageUI Is Advanced UI Libs in LUA for make beautiful interface like RockStar GAME.
+---
+---
+--- Commercial Info.
+--- Any use for commercial purposes is strictly prohibited and will be punished.
+---
+--- @see RageUI
+---
+
+
+---@class Keys
+Keys = {};
+
+---Register
+---@param Controls string
+---@param ControlName string
+---@param Description string
+---@param Action function
+---@return Keys
+---@public
+
+Keys = {
+ keysAllow = true
+}
+
+function Keys.Register(Controls, ControlName, Description, Action)
+ local _Keys = {
+ CONTROLS = Controls
+ }
+ RegisterKeyMapping(string.format('rageui-%s', ControlName), Description, "keyboard", Controls)
+ RegisterCommand(string.format('rageui-%s', ControlName), function(source, args)
+ if (Action ~= nil) then
+ if Keys.keysAllow then
+ Action();
+ else
+ ShowNotification("~r~Action impossible ...~s~")
+ end
+ end
+ end, false)
+ return setmetatable(_Keys, Keys)
+end
+
+---Exists
+---@param Controls string
+---@return boolean
+function Keys:Exists(Controls)
+ return self.CONTROLS == Controls and true or false
+end
diff --git a/resources/mth-K9/RageUI/components/Rectangle.lua b/resources/mth-K9/RageUI/components/Rectangle.lua
new file mode 100644
index 000000000..78ec8a942
--- /dev/null
+++ b/resources/mth-K9/RageUI/components/Rectangle.lua
@@ -0,0 +1,18 @@
+---RenderRectangle
+---
+--- Reference : https://github.com/iTexZoz/NativeUILua_Reloaded/blob/master/UIElements/UIResRectangle.lua#L84
+---
+---@param X number
+---@param Y number
+---@param Width number
+---@param Height number
+---@param R number
+---@param G number
+---@param B number
+---@param A number
+---@return nil
+---@public
+function RenderRectangle(X, Y, Width, Height, R, G, B, A)
+ local X, Y, Width, Height = (tonumber(X) or 0) / 1920, (tonumber(Y) or 0) / 1080, (tonumber(Width) or 0) / 1920, (tonumber(Height) or 0) / 1080
+ DrawRect(X + Width * 0.5, Y + Height * 0.5, Width, Height, tonumber(R) or 255, tonumber(G) or 255, tonumber(B) or 255, tonumber(A) or 255)
+end
diff --git a/resources/mth-K9/RageUI/components/Sprite.lua b/resources/mth-K9/RageUI/components/Sprite.lua
new file mode 100644
index 000000000..836daace1
--- /dev/null
+++ b/resources/mth-K9/RageUI/components/Sprite.lua
@@ -0,0 +1,27 @@
+---RenderSprite
+---
+--- Reference : https://github.com/iTexZoz/NativeUILua_Reloaded/blob/master/UIElements/Sprite.lua#L90
+---
+---@param TextureDictionary string
+---@param TextureName string
+---@param X number
+---@param Y number
+---@param Width number
+---@param Height number
+---@param Heading number
+---@param R number
+---@param G number
+---@param B number
+---@param A number
+---@return nil
+---@public
+function RenderSprite(TextureDictionary, TextureName, X, Y, Width, Height, Heading, R, G, B, A)
+ ---@type number
+ local X, Y, Width, Height = (tonumber(X) or 0) / 1920, (tonumber(Y) or 0) / 1080, (tonumber(Width) or 0) / 1920, (tonumber(Height) or 0) / 1080
+
+ if not HasStreamedTextureDictLoaded(TextureDictionary) then
+ RequestStreamedTextureDict(TextureDictionary, true)
+ end
+
+ DrawSprite(TextureDictionary, TextureName, X + Width * 0.5, Y + Height * 0.5, Width, Height, Heading or 0, tonumber(R) or 255, tonumber(G) or 255, tonumber(B) or 255, tonumber(A) or 255)
+end
\ No newline at end of file
diff --git a/resources/mth-K9/RageUI/components/Text.lua b/resources/mth-K9/RageUI/components/Text.lua
new file mode 100644
index 000000000..0ee200785
--- /dev/null
+++ b/resources/mth-K9/RageUI/components/Text.lua
@@ -0,0 +1,172 @@
+---StringToArray
+---
+--- Reference : Frazzle <3
+---
+---@param str string
+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
+
+---MeasureStringWidth
+---
+--- Reference : Frazzle <3
+---
+---@param str string
+---@param font number
+---@param scale number
+---@return number
+---@public
+function MeasureStringWidth(str, font, scale)
+ BeginTextCommandWidth("CELL_EMAIL_BCON")
+ AddTextComponentSubstringPlayerName(str)
+ SetTextFont(font or 0)
+ SetTextScale(1.0, scale or 0)
+ return EndTextCommandGetWidth(true) * 1920
+end
+
+
+---AddText
+---
+--- Reference : Frazzle <3
+---
+---@param str string
+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
+
+
+---GetLineCount
+---
+--- Reference : Frazzle <3
+---
+---@param Text string
+---@param X number
+---@param Y number
+---@param Font number
+---@param Scale number
+---@param R number
+---@param G number
+---@param B number
+---@param A number
+---@param Alignment string
+---@param DropShadow boolean
+---@param Outline boolean
+---@param WordWrap number
+---@return function
+---@public
+function GetLineCount(Text, X, Y, Font, Scale, R, G, B, A, Alignment, DropShadow, Outline, WordWrap)
+ ---@type table
+ local Text, X, Y = tostring(Text), (tonumber(X) or 0) / 1920, (tonumber(Y) or 0) / 1080
+ SetTextFont(Font or 0)
+ SetTextScale(1.0, Scale or 0)
+ SetTextColour(tonumber(R) or 255, tonumber(G) or 255, tonumber(B) or 255, tonumber(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 tonumber(WordWrap) and tonumber(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
+
+ BeginTextCommandLineCount("CELL_EMAIL_BCON")
+ AddText(Text)
+ return GetTextScreenLineCount(X, Y)
+end
+
+---RenderText
+---
+--- Reference : https://github.com/iTexZoz/NativeUILua_Reloaded/blob/master/UIElements/UIResText.lua#L189
+---
+---@param Text string
+---@param X number
+---@param Y number
+---@param Font number
+---@param Scale number
+---@param R number
+---@param G number
+---@param B number
+---@param A number
+---@param Alignment string
+---@param DropShadow boolean
+---@param Outline boolean
+---@param WordWrap number
+---@return nil
+---@public
+function RenderText(Text, X, Y, Font, Scale, R, G, B, A, Alignment, DropShadow, Outline, WordWrap)
+ ---@type table
+ local Text, X, Y = tostring(Text), (tonumber(X) or 0) / 1920, (tonumber(Y) or 0) / 1080
+ SetTextFont(Font or 0)
+ SetTextScale(1.0, Scale or 0)
+ SetTextColour(tonumber(R) or 255, tonumber(G) or 255, tonumber(B) or 255, tonumber(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 tonumber(WordWrap) and tonumber(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
+ BeginTextCommandDisplayText("CELL_EMAIL_BCON")
+ AddText(Text)
+ EndTextCommandDisplayText(X, Y)
+end
diff --git a/resources/mth-K9/RageUI/components/Visual.lua b/resources/mth-K9/RageUI/components/Visual.lua
new file mode 100644
index 000000000..df0b70719
--- /dev/null
+++ b/resources/mth-K9/RageUI/components/Visual.lua
@@ -0,0 +1,63 @@
+---
+--- @author Dylan MALANDAIN
+--- @version 2.0.0
+--- @since 2020
+---
+--- RageUI Is Advanced UI Libs in LUA for make beautiful interface like RockStar GAME.
+---
+---
+--- Commercial Info.
+--- Any use for commercial purposes is strictly prohibited and will be punished.
+---
+--- @see RageUI
+---
+
+---@class Visual
+Visual = Visual or {};
+
+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.Subtitle(text, time)
+ ClearPrints()
+ AddTextEntry('core:Subtitle', text)
+ BeginTextCommandPrint('core:subtitle')
+ 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 true, -1)
+end
+
+function Visual.Prompt(text, spinner)
+ BeginTextCommandBusyspinnerOn("STRING")
+ AddTextComponentSubstringPlayerName(text)
+ EndTextCommandBusyspinnerOn(spinner or 1)
+end
+
+function Visual.ENBASLAAA(text, spinner)
+ BeginTextCommandBusyspinnerOn("STRING")
+ AddTextComponentSubstringPlayerName(text)
+ EndTextCommandScaleformString()
+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
diff --git a/resources/mth-K9/RageUI/menu/Menu.lua b/resources/mth-K9/RageUI/menu/Menu.lua
new file mode 100644
index 000000000..fb9aafe80
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/Menu.lua
@@ -0,0 +1,391 @@
+---
+--- Generated by EmmyLua(https://github.com/EmmyLua)
+--- Created by Dylan Malandain.
+--- DateTime: 21/04/2019 21:20
+---
+
+---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)
+
+ ---@type table
+ local Menu = {}
+ Menu.Display = {};
+
+ Menu.InstructionalButtons = {}
+
+ Menu.Display.Header = true;
+ Menu.Display.Glare = true;
+ Menu.Display.Subtitle = true;
+ Menu.Display.Background = true;
+ Menu.Display.Navigation = true;
+ Menu.Display.InstructionalButton = true;
+ Menu.Display.PageCounter = false;
+
+ Menu.Title = Title or ""
+ Menu.TitleFont = 6
+ 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 = RageUI.UI.Style[RageUI.UI.Current].Width
+ 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 = true
+ Menu.InstructionalScaleform = RequestScaleformMovie("INSTRUCTIONAL_BUTTONS")
+ Menu.CursorStyle = 1
+
+ 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 = 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
+
+ Citizen.CreateThread(function()
+ if not HasScaleformMovieLoaded(Menu.InstructionalScaleform) then
+ Menu.InstructionalScaleform = RequestScaleformMovie("INSTRUCTIONAL_BUTTONS")
+ while not HasScaleformMovieLoaded(Menu.InstructionalScaleform) do
+ Citizen.Wait(0)
+ end
+ end
+ end)
+
+ Citizen.CreateThread(function()
+ local ScaleformMovie = RequestScaleformMovie("MP_MENU_GLARE")
+ while not HasScaleformMovieLoaded(ScaleformMovie) do
+ Citizen.Wait(0)
+ end
+ end)
+
+ return setmetatable(Menu, RageUI.Menus)
+end
+
+---CreateSubMenu
+---@param ParentMenu RageUIMenus
+---@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, RageUI.Menus)
+ else
+ return nil
+ end
+ else
+ return nil
+ end
+end
+
+function RageUI.Menus:DisplayHeader(boolean)
+ self.Display.Header = boolean;
+ return self.Display.Header;
+end
+
+function RageUI.Menus:DisplayGlare(boolean)
+ self.Display.Glare = boolean;
+ return self.Display.Glare;
+end
+
+function RageUI.Menus:DisplaySubtitle(boolean)
+ self.Display.Subtitle = boolean;
+ return self.Display.Subtitle;
+end
+
+function RageUI.Menus:DisplayNavigation(boolean)
+ self.Display.Navigation = boolean;
+ return self.Display.Navigation;
+end
+
+function RageUI.Menus:DisplayInstructionalButton(boolean)
+ self.Display.InstructionalButton = boolean;
+ return self.Display.InstructionalButton;
+end
+
+function RageUI.Menus:DisplayPageCounter(boolean)
+ self.Display.PageCounter= boolean;
+ return self.Display.PageCounter;
+end
+
+---SetTitle
+---@param Title string
+---@return nil
+---@public
+function RageUI.Menus:SetTitle(Title)
+ self.Title = Title
+end
+
+function RageUI.Menus:SetStyleSize(Value)
+ local witdh
+ if Value >= 0 and Value <= 200 then
+ witdh = Value
+ else
+ witdh = 100
+ end
+ self.WidthOffset = witdh
+end
+
+---GetStyleSize
+---@return any
+---@public
+function RageUI.Menus:GetStyleSize()
+ if (self.WidthOffset == 100) then
+ return "RageUI"
+ elseif (self.WidthOffset == 0) then
+ return "NativeUI";
+ else
+ return self.WidthOffset;
+ end
+end
+
+---SetStyleSize
+---@param Int string
+---@return void
+---@public
+function RageUI.Menus:SetCursorStyle(Int)
+ self.CursorStyle = Int or 1 or 0
+ SetMouseCursorSprite(Int)
+end
+
+---ResetCursorStyle
+---@return void
+---@public
+function RageUI.Menus:ResetCursorStyle()
+ self.CursorStyle = 1
+ SetMouseCursorSprite(1)
+end
+
+---UpdateCursorStyle
+---@return void
+---@public
+function RageUI.Menus:UpdateCursorStyle()
+ SetMouseCursorSprite(self.CursorStyle)
+end
+
+---RefreshIndex
+---@return void
+---@public
+function RageUI.Menus:RefreshIndex()
+ self.Index = 1
+end
+
+---SetSubtitle
+---@param Subtitle string
+---@return nil
+---@public
+function RageUI.Menus: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 = 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
+
+---PageCounter
+---@param Subtitle string
+---@return nil
+---@public
+function RageUI.Menus:SetPageCounter(Subtitle)
+ self.PageCounter = Subtitle
+end
+
+---EditSpriteColor
+---@param Colors table
+---@return nil
+---@public
+function RageUI.Menus:EditSpriteColor(R, G, B, A)
+ if self.Sprite.Dictionary == "commonmenu" then
+ self.Sprite.Color = { R = tonumber(R) or 255, G = tonumber(G) or 255, B = tonumber(B) or 255, A = tonumber(A) or 255 }
+ end
+end
+---SetPosition
+---@param X number
+---@param Y number
+---@return nil
+---@public
+function RageUI.Menus:SetPosition(X, Y)
+ self.X = tonumber(X) or self.X
+ self.Y = tonumber(Y) or self.Y
+end
+
+---SetTotalItemsPerPage
+---@param Value number
+---@return nil
+---@public
+function RageUI.Menus:SetTotalItemsPerPage(Value)
+ self.Pagination.Total = tonumber(Value) or self.Pagination.Total
+end
+
+---SetRectangleBanner
+---@param R number
+---@param G number
+---@param B number
+---@param A number
+---@return nil
+---@public
+function RageUI.Menus:SetRectangleBanner(R, G, B, A)
+ self.Rectangle = { R = tonumber(R) or 255, G = tonumber(G) or 255, B = tonumber(B) or 255, A = tonumber(A) or 255 }
+ self.Sprite = nil
+end
+
+---SetSpriteBanner
+---@param TextureDictionary string
+---@param Texture string
+---@return nil
+---@public
+function RageUI.Menus:SetSpriteBanner(TextureDictionary, Texture)
+ self.Sprite = { Dictionary = TextureDictionary or "commonmenu", Texture = Texture or "interaction_bgd" }
+ self.Rectangle = nil
+end
+
+function RageUI.Menus:Closable(boolean)
+ if type(boolean) == "boolean" then
+ self.Closable = boolean
+ else
+ error("Type is not boolean")
+ end
+end
+
+function RageUI.Menus:AddInstructionButton(button)
+ if type(button) == "table" and #button == 2 then
+ table.insert(self.InstructionalButtons, button)
+ self.UpdateInstructionalButtons(true);
+ end
+end
+
+function RageUI.Menus:RemoveInstructionButton(button)
+ if type(button) == "table" then
+ for i = 1, #self.InstructionalButtons do
+ if button == self.InstructionalButtons[i] then
+ table.remove(self.InstructionalButtons, i)
+ self.UpdateInstructionalButtons(true);
+ break
+ end
+ end
+ else
+ if tonumber(button) then
+ if self.InstructionalButtons[tonumber(button)] then
+ table.remove(self.InstructionalButtons, tonumber(button))
+ self.UpdateInstructionalButtons(true);
+ end
+ end
+ end
+end
+
+function RageUI.Menus:UpdateInstructionalButtons(Visible)
+
+ if not Visible then
+ return
+ end
+
+ BeginScaleformMovieMethod(self.InstructionalScaleform, "CLEAR_ALL")
+ EndScaleformMovieMethod()
+
+ BeginScaleformMovieMethod(self.InstructionalScaleform, "TOGGLE_MOUSE_BUTTONS")
+ ScaleformMovieMethodAddParamInt(0)
+ EndScaleformMovieMethod()
+
+ BeginScaleformMovieMethod(self.InstructionalScaleform, "CREATE_CONTAINER")
+ EndScaleformMovieMethod()
+
+ BeginScaleformMovieMethod(self.InstructionalScaleform, "SET_DATA_SLOT")
+ ScaleformMovieMethodAddParamInt(0)
+ PushScaleformMovieMethodParameterButtonName(GetControlInstructionalButton(2, 176, 0))
+ PushScaleformMovieMethodParameterString(GetLabelText("HUD_INPUT2"))
+ EndScaleformMovieMethod()
+
+ if self.Closable then
+ BeginScaleformMovieMethod(self.InstructionalScaleform, "SET_DATA_SLOT")
+ ScaleformMovieMethodAddParamInt(1)
+ PushScaleformMovieMethodParameterButtonName(GetControlInstructionalButton(2, 177, 0))
+ PushScaleformMovieMethodParameterString(GetLabelText("HUD_INPUT3"))
+ EndScaleformMovieMethod()
+ end
+
+ local count = 2
+
+ if (self.InstructionalButtons ~= nil) then
+ for i = 1, #self.InstructionalButtons do
+ if self.InstructionalButtons[i] then
+ if #self.InstructionalButtons[i] == 2 then
+ BeginScaleformMovieMethod(self.InstructionalScaleform, "SET_DATA_SLOT")
+ ScaleformMovieMethodAddParamInt(count)
+ PushScaleformMovieMethodParameterButtonName(self.InstructionalButtons[i][1])
+ PushScaleformMovieMethodParameterString(self.InstructionalButtons[i][2])
+ EndScaleformMovieMethod()
+ count = count + 1
+ end
+ end
+ end
+ end
+
+ BeginScaleformMovieMethod(self.InstructionalScaleform, "DRAW_INSTRUCTIONAL_BUTTONS")
+ ScaleformMovieMethodAddParamInt(-1)
+ EndScaleformMovieMethod()
+end
diff --git a/resources/mth-K9/RageUI/menu/MenuController.lua b/resources/mth-K9/RageUI/menu/MenuController.lua
new file mode 100644
index 000000000..498e31f5f
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/MenuController.lua
@@ -0,0 +1,408 @@
+---
+--- @author Dylan MALANDAIN
+--- @version 2.0.0
+--- @since 2020
+---
+--- RageUI Is Advanced UI Libs in LUA for make beautiful interface like RockStar GAME.
+---
+---
+--- Commercial Info.
+--- Any use for commercial purposes is strictly prohibited and will be punished.
+---
+--- @see RageUI
+---
+
+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
+
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].UpDown.audioName, Audio[Audio.Use].UpDown.audioRef)
+ RageUI.LastControl = true
+ if (CurrentMenu.onIndexChange ~= nil) then
+ Citizen.CreateThread(function()
+ CurrentMenu.onIndexChange(CurrentMenu.Index)
+ end)
+ end
+ else
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].Error.audioName, Audio[Audio.Use].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
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].UpDown.audioName, Audio[Audio.Use].UpDown.audioRef)
+ RageUI.LastControl = false
+ if (CurrentMenu.onIndexChange ~= nil) then
+ Citizen.CreateThread(function()
+ CurrentMenu.onIndexChange(CurrentMenu.Index)
+ end)
+ end
+ else
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].Error.audioName, Audio[Audio.Use].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;
+ ---@type number
+ local Options = CurrentMenu.Options
+ RageUI.Options = CurrentMenu.Options
+ if CurrentMenu.EnableMouse then
+ DisableControlAction(2, 24, true) -- disable attack
+ DisableControlAction(2, 25, true) -- disable aim
+ DisableControlAction(2, 1, true) -- LookLeftRight
+ DisableControlAction(2, 2, true) -- LookUpDown
+ DisableControlAction(2, 142, true)
+ DisableControlAction(2, 18, true)
+ DisableControlAction(2, 322, true)
+ DisableControlAction(2, 106, true)
+ DisableControlAction(2, 263, true) -- disable melee
+ DisableControlAction(2, 264, true) -- disable melee
+ DisableControlAction(2, 257, true) -- disable melee
+ DisableControlAction(2, 140, true) -- disable melee
+ DisableControlAction(2, 141, true) -- disable melee
+ DisableControlAction(2, 142, true) -- disable melee
+ DisableControlAction(2, 143, true) -- disable melee
+ 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
+
+ ---@type boolean
+ local UpHovered = false
+
+ ---@type boolean
+ 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 = RageUI.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 = RageUI.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
+ -- RenderRectangle(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
+ -- RenderRectangle(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
+ -- RenderRectangle(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
+ -- RenderRectangle(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
+ -- RenderRectangle(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)
+ -- RenderRectangle(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
+ -- RenderSprite(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
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].Back.audioName, Audio[Audio.Use].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
+
+---GoBack2
+---@return nil
+---@public
+function RageUI.GoBack2()
+ -- function to go back to the previous menu twice
+ local CurrentMenu = RageUI.CurrentMenu
+ if CurrentMenu ~= nil then
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].Back.audioName, Audio[Audio.Use].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
+
+ local CurrentMenu = RageUI.NextMenu
+ if CurrentMenu ~= nil then
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].Back.audioName, Audio[Audio.Use].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
diff --git a/resources/mth-K9/RageUI/menu/RageUI.lua b/resources/mth-K9/RageUI/menu/RageUI.lua
new file mode 100644
index 000000000..6ef7e7800
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/RageUI.lua
@@ -0,0 +1,632 @@
+---
+--- @author Dylan MALANDAIN
+--- @version 2.0.0
+--- @since 2020
+---
+--- RageUI Is Advanced UI Libs in LUA for make beautiful interface like RockStar GAME.
+---
+---
+--- Commercial Info.
+--- Any use for commercial purposes is strictly prohibited and will be punished.
+---
+--- @see RageUI
+---
+
+-- print("^4RageUI - https://github.com/iTexZoz/RageUI - OpenSource Advanced UI Api^0")
+
+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
+
+---@class RageUIMenus
+RageUI.Menus = setmetatable({}, RageUI.Menus)
+
+---@type table
+---@return boolean
+RageUI.Menus.__call = function()
+ return true
+end
+
+---@type table
+RageUI.Menus.__index = RageUI.Menus
+
+---@type table
+RageUI.CurrentMenu = nil
+
+---@type table
+RageUI.NextMenu = nil
+
+---@type number
+RageUI.Options = 0
+
+---@type number
+RageUI.ItemOffset = 0
+
+---@type number
+RageUI.StatisticPanelCount = 0
+
+---@class UISize
+RageUI.UI = {
+ Current = "NativeUI",
+ Style = {
+ RageUI = {
+ Width = 0
+ },
+ NativeUI = {
+ Width = 0
+ }
+ }
+}
+
+---@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,
+ Use = "NativeUI",
+ RageUI = {
+ UpDown = {
+ audioName = "HUD_FREEMODE_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
+ },
+ },
+ NativeUI = {
+ 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.SetScaleformParams(scaleform, data)
+ data = data or {}
+ for k, v in pairs(data) do
+ PushScaleformMovieFunction(scaleform, v.name)
+ if v.param then
+ for _, par in pairs(v.param) do
+ if math.type(par) == "integer" then
+ PushScaleformMovieFunctionParameterInt(par)
+ elseif type(par) == "boolean" then
+ PushScaleformMovieFunctionParameterBool(par)
+ elseif math.type(par) == "float" then
+ PushScaleformMovieFunctionParameterFloat(par)
+ elseif type(par) == "string" then
+ PushScaleformMovieFunctionParameterString(par)
+ end
+ end
+ end
+ if v.func then
+ v.func()
+ end
+ PopScaleformMovieFunctionVoid()
+ end
+end
+
+function RageUI.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 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
+
+function RageUI.Visible(Menu, Value)
+ if Menu ~= nil and Menu() then
+ 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
+ Menu:UpdateInstructionalButtons(Value);
+ Menu:UpdateCursorStyle();
+
+ 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
+ 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
+ ResetScriptGfxAlign()
+end
+
+function RageUI.Banner()
+ local CurrentMenu = RageUI.CurrentMenu
+ if CurrentMenu ~= nil then
+ if CurrentMenu() and (CurrentMenu.Display.Header) then
+ RageUI.ItemsSafeZone(CurrentMenu)
+ if CurrentMenu.Sprite ~= nil then
+ if CurrentMenu.Sprite.Dictionary ~= nil then
+ if CurrentMenu.Sprite.Dictionary == "commonmenu" then
+ RenderSprite(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
+ RenderSprite(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
+ RenderRectangle(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
+ RenderRectangle(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
+ -- if (CurrentMenu.Display.Glare) then
+ -- local ScaleformMovie = RequestScaleformMovie("MP_MENU_GLARE")
+ -- ---@type number
+ -- local Glarewidth = RageUI.Settings.Items.Title.Background.Width
+ -- ---@type number
+ -- local Glareheight = RageUI.Settings.Items.Title.Background.Height
+ -- ---@type number
+ -- local GlareX = CurrentMenu.X / 1920 + (CurrentMenu.SafeZoneSize.X / (64.399 - (CurrentMenu.WidthOffset * 0.065731)))
+ -- ---@type number
+ -- local GlareY = CurrentMenu.Y / 1080 + CurrentMenu.SafeZoneSize.Y / 33.195020746888
+ -- RageUI.SetScaleformParams(ScaleformMovie, {
+ -- { name = "SET_DATA_SLOT", param = { GetGameplayCamRelativeHeading() } }
+ -- })
+ -- DrawScaleformMovie(ScaleformMovie, GlareX, GlareY, Glarewidth / 430, Glareheight / 100, 255, 255, 255, 255, 0)
+ -- end
+ RenderText(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
+end
+
+function RageUI.Subtitle()
+ local CurrentMenu = RageUI.CurrentMenu
+ if CurrentMenu ~= nil then
+ if CurrentMenu() and (CurrentMenu.Display.Subtitle) then
+ RageUI.ItemsSafeZone(CurrentMenu)
+ if CurrentMenu.Subtitle ~= "" then
+ RenderRectangle(CurrentMenu.X, CurrentMenu.Y + RageUI.ItemOffset, RageUI.Settings.Items.Subtitle.Background.Width + CurrentMenu.WidthOffset, RageUI.Settings.Items.Subtitle.Background.Height + CurrentMenu.SubtitleHeight, 0, 0, 0, 255)
+ RenderText(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
+ RenderText(CurrentMenu.PageCounterColour .. CurrentMenu.Index .. " / " .. CurrentMenu.Options, 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
+ RenderText(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
+end
+
+function RageUI.Background()
+ local CurrentMenu = RageUI.CurrentMenu;
+ if CurrentMenu ~= nil then
+ if CurrentMenu() and (CurrentMenu.Display.Background) then
+ RageUI.ItemsSafeZone(CurrentMenu)
+ SetScriptGfxDrawOrder(0)
+ RenderSprite(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
+end
+
+function RageUI.Description()
+ local CurrentMenu = RageUI.CurrentMenu;
+ local Description = RageUI.Settings.Items.Description;
+ if CurrentMenu ~= nil and CurrentMenu.Description ~= nil then
+ if CurrentMenu() then
+ RageUI.ItemsSafeZone(CurrentMenu)
+ RenderRectangle(CurrentMenu.X, CurrentMenu.Y + Description.Bar.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Description.Bar.Width + CurrentMenu.WidthOffset, Description.Bar.Height, 0, 0, 0, 255)
+ RenderSprite(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)
+ RenderText(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
+end
+
+function RageUI.Render()
+ local CurrentMenu = RageUI.CurrentMenu;
+ if CurrentMenu ~= nil then
+ if CurrentMenu() then
+ if CurrentMenu.Safezone then
+ ResetScriptGfxAlign()
+ end
+
+ if (CurrentMenu.Display.InstructionalButton) then
+ if not CurrentMenu.InitScaleform then
+ CurrentMenu:UpdateInstructionalButtons(true)
+ CurrentMenu.InitScaleform = true
+ end
+ DrawScaleformMovieFullscreen(CurrentMenu.InstructionalScaleform, 255, 255, 255, 255, 0)
+ 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
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].Back.audioName, Audio[Audio.Use].Back.audioRef)
+ if CurrentMenu.Closed ~= nil then
+ collectgarbage()
+ CurrentMenu.Closed()
+ end
+
+ if CurrentMenu.Parent ~= nil then
+ if CurrentMenu.Parent() then
+ RageUI.NextMenu = CurrentMenu.Parent
+ CurrentMenu:UpdateCursorStyle()
+ 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
+ end
+end
+
+function RageUI.ItemsDescription(CurrentMenu, Description, Selected)
+ ---@type table
+ if Description ~= "" or Description ~= nil then
+ local SettingsDescription = RageUI.Settings.Items.Description;
+ if Selected and CurrentMenu.Description ~= Description then
+ CurrentMenu.Description = Description or nil
+ ---@type number
+ local DescriptionLineCount = 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
+ end
+end
+
+function RageUI.ItemsMouseBounds(CurrentMenu, Selected, Option, SettingsButton)
+ ---@type boolean
+ local Hovered = false
+ Hovered = RageUI.IsMouseInBounds(CurrentMenu.X + CurrentMenu.SafeZoneSize.X, CurrentMenu.Y + SettingsButton.Rectangle.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight , SettingsButton.Rectangle.Width + CurrentMenu.WidthOffset, SettingsButton.Rectangle.Height)
+ if Hovered and not Selected then
+ RenderRectangle(CurrentMenu.X, CurrentMenu.Y + SettingsButton.Rectangle.Y + CurrentMenu.SubtitleHeight, SettingsButton.Rectangle.Width + CurrentMenu.WidthOffset, SettingsButton.Rectangle.Height, 255, 255, 255, 20)
+ if CurrentMenu.Controls.Click.Active then
+ CurrentMenu.Index = Option
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].UpDown.audioName, Audio[Audio.Use].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.CurrentIsEqualTo(Current, To, Style, DefaultStyle)
+ return Current == To and Style or DefaultStyle or {};
+end
+
+function RageUI.IsVisible(Menu, Items, Panels)
+ if (RageUI.Visible(Menu)) and (UpdateOnscreenKeyboard() ~= 0) and (UpdateOnscreenKeyboard() ~= 3) then
+ RageUI.Banner()
+ RageUI.Subtitle()
+ if (Items ~= nil) then
+ Items()
+ end
+ RageUI.Background();
+ RageUI.Navigation();
+ RageUI.Description();
+ if (Panels ~= nil) then
+ Panels()
+ end
+ RageUI.Render()
+ end
+end
+
+---SetStyleAudio
+---@param StyleAudio string
+---@return void
+---@public
+function RageUI.SetStyleAudio(StyleAudio)
+ RageUI.Settings.Audio.Use = StyleAudio or "RageUI"
+end
+
+function RageUI.GetStyleAudio()
+ return RageUI.Settings.Audio.Use or "RageUI"
+end
+
diff --git a/resources/mth-K9/RageUI/menu/elements/ItemsBadge.lua b/resources/mth-K9/RageUI/menu/elements/ItemsBadge.lua
new file mode 100644
index 000000000..571f75fc5
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/elements/ItemsBadge.lua
@@ -0,0 +1,286 @@
+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,
+ 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,
+}
\ No newline at end of file
diff --git a/resources/mth-K9/RageUI/menu/elements/ItemsColour.lua b/resources/mth-K9/RageUI/menu/elements/ItemsColour.lua
new file mode 100644
index 000000000..3e620958f
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/elements/ItemsColour.lua
@@ -0,0 +1,225 @@
+---
+--- Generated by EmmyLua(https://github.com/EmmyLua)
+--- Created by Dylan Malandain.
+--- DateTime: 24/07/2019 02:26
+---
+
+RageUI.ItemsColour = {
+ 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 },
+}
+
diff --git a/resources/mth-K9/RageUI/menu/elements/PanelColour.lua b/resources/mth-K9/RageUI/menu/elements/PanelColour.lua
new file mode 100644
index 000000000..8490969e6
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/elements/PanelColour.lua
@@ -0,0 +1,135 @@
+RageUI.PanelColour = {
+ HairCut = {
+ { 28, 31, 33 }, -- 0
+ { 39, 42, 44 }, -- 1
+ { 49, 46, 44 }, -- 2
+ { 53, 38, 28 }, -- 3
+ { 75, 50, 31 }, -- 4
+ { 92, 59, 36 }, -- 5
+ { 109, 76, 53 }, -- 6
+ { 107, 80, 59 }, -- 7
+ { 118, 92, 69 }, -- 8
+ { 127, 104, 78 }, -- 9
+ { 153, 129, 93 }, -- 10
+ { 167, 147, 105 }, -- 11
+ { 175, 156, 112 }, -- 12
+ { 187, 160, 99 }, -- 13
+ { 214, 185, 123 }, -- 14
+ { 218, 195, 142 }, -- 15
+ { 159, 127, 89 }, -- 16
+ { 132, 80, 57 }, -- 17
+ { 104, 43, 31 }, -- 18
+ { 97, 18, 12 }, -- 19
+ { 100, 15, 10 }, -- 20
+ { 124, 20, 15 }, -- 21
+ { 160, 46, 25 }, -- 22
+ { 182, 75, 40 }, -- 23
+ { 162, 80, 47 }, -- 24
+ { 170, 78, 43 }, -- 25
+ { 98, 98, 98 }, -- 26
+ { 128, 128, 128}, -- 27
+ { 170, 170, 170 }, -- 28
+ { 197, 197, 197 }, -- 29
+ { 70, 57, 85 }, -- 30
+ { 90, 63, 107 }, -- 31
+ { 118, 60, 118 }, -- 32
+ { 237, 116, 227 }, -- 33
+ { 235, 75, 147 }, -- 34
+ { 242, 153, 188 }, -- 35
+ { 4, 149, 158 }, -- 36
+ { 2, 95, 134 }, -- 37
+ { 2, 57, 116 }, -- 38
+ { 63, 161, 106 }, -- 39
+ { 33, 124, 97 }, -- 40
+ { 24, 92, 85 }, -- 41
+ { 182, 192, 52 }, -- 42
+ { 112, 169, 11 }, -- 43
+ { 67, 157, 19 }, -- 44
+ { 220, 184, 87 }, -- 45
+ { 229, 177, 3 }, -- 46
+ { 230, 145, 2 }, -- 47
+ { 242, 136, 49 }, -- 48
+ { 251, 128, 87 }, -- 49
+ { 226, 139, 88 }, -- 50
+ { 209, 89, 60 }, -- 51
+ { 206, 49, 32 }, -- 52
+ { 173, 9, 3 }, -- 53
+ { 136, 3, 2 }, -- 54
+ { 31, 24, 20 }, -- 55
+ { 41, 31, 25 }, -- 56
+ { 46, 34, 27 }, -- 57
+ { 55, 41, 30 }, -- 58
+ { 46, 34, 24 }, -- 59
+ { 35, 27, 21 }, -- 60
+ { 2, 2, 2 }, -- 61
+ { 112, 108, 102 }, -- 62
+ { 157, 122, 80 } -- 63
+ },
+ MakeUp = {
+ { 153, 37, 50 }, -- 0
+ { 200, 57, 93 }, -- 1
+ { 189, 81, 108 }, -- 2
+ { 184, 99, 122 }, -- 3
+ { 166, 82, 107 }, -- 4
+ { 177, 67, 76 }, -- 5
+ { 127, 49, 51 }, -- 6
+ { 164, 100, 93 }, -- 7
+ { 193, 135, 121 }, -- 8
+ { 203, 160, 150 }, -- 9
+ { 198, 145, 143 }, -- 10
+ { 171, 111, 99}, -- 11
+ { 176, 96, 80 }, -- 12
+ { 168, 76, 51 }, -- 13
+ { 180, 113, 120 }, -- 14
+ { 202, 127, 146 }, -- 15
+ { 237, 156, 190 }, -- 16
+ { 231, 117, 164 }, -- 17
+ { 222, 62, 129 }, -- 18
+ { 179, 76, 110 }, -- 19
+ { 113, 39, 57 }, -- 20
+ { 79, 31, 42 }, -- 21
+ { 170, 34, 47 }, -- 22
+ { 222, 32, 52 }, -- 23
+ { 207, 8, 19 }, -- 24
+ { 229, 84, 112 }, -- 25
+ { 220, 63, 181 }, -- 26
+ { 192, 39, 178 }, -- 27
+ { 160, 28, 169 }, -- 28
+ { 110, 24, 117 }, -- 29
+ { 115, 20, 101 }, -- 30
+ { 86, 22, 92 }, -- 31
+ { 109, 26, 157 }, -- 32
+ { 27, 55, 113 }, -- 33
+ { 29, 78, 167 }, -- 34
+ { 30, 116, 187 }, -- 35
+ { 33, 163, 206 }, -- 36
+ { 37, 194, 210 }, -- 37
+ { 35, 204, 165 }, -- 38
+ { 39, 192, 125 }, -- 39
+ { 27, 156, 50 }, -- 40
+ { 20, 134, 4 }, -- 41
+ { 112, 208, 65 }, -- 42
+ { 197, 234, 52 }, -- 43
+ { 225, 227, 47 }, -- 44
+ { 255, 221, 38 }, -- 45
+ { 250, 192, 38 }, -- 46
+ { 247, 138, 39 }, -- 47
+ { 254, 89, 16 }, -- 48
+ { 190, 110, 25 }, -- 49
+ { 247, 201, 127 }, -- 50
+ { 251, 229, 192 }, -- 51
+ { 245, 245, 245 }, -- 52
+ { 179, 180, 179 }, -- 53
+ { 145, 145, 145 }, -- 54
+ { 86, 78, 78 }, -- 55
+ { 24, 14, 14 }, -- 56
+ { 88, 150, 158 }, -- 57
+ { 77, 111, 140 }, -- 58
+ { 26, 43, 85 }, -- 59
+ { 160, 126, 107 }, -- 60
+ { 130, 99, 85 }, -- 61
+ { 109, 83, 70 }, -- 62
+ { 62, 45, 39 } -- 63
+ }
+}
+
diff --git a/resources/mth-K9/RageUI/menu/items/UIButton.lua b/resources/mth-K9/RageUI/menu/items/UIButton.lua
new file mode 100644
index 000000000..d91516aec
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/items/UIButton.lua
@@ -0,0 +1,97 @@
+---@type table
+local SettingsButton = {
+ Rectangle = { Y = 0, Width = 431, Height = 38 },
+ Text = { X = 8, Y = 3, Scale = 0.33 },
+ LeftBadge = { Y = -2, Width = 40, Height = 40 },
+ RightBadge = { X = 385, Y = -2, Width = 40, Height = 40 },
+ RightText = { X = 420, Y = 4, Scale = 0.35 },
+ SelectedSprite = { Dictionary = "commonmenu", Texture = "gradient_nav", Y = 0, Width = 431, Height = 38 },
+}
+
+---ButtonWithStyle
+---@param Label string
+---@param Description string | nil | false
+---@param Style table
+---@param Enabled boolean
+---@param Callback function
+---@param Submenu table | nil
+---@return nil
+---@public
+function RageUI.Button(Label, Description, Style, Enabled, Action, Submenu)
+ local CurrentMenu = RageUI.CurrentMenu
+ if CurrentMenu ~= nil and CurrentMenu() then
+ ---@type number
+ local Option = RageUI.Options + 1
+
+ if CurrentMenu.Pagination.Minimum <= Option and CurrentMenu.Pagination.Maximum >= Option then
+ ---@type boolean
+ 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) or (not Enabled and Style.LockBadge ~= 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
+ RenderRectangle(CurrentMenu.X, CurrentMenu.Y + SettingsButton.SelectedSprite.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.SelectedSprite.Width + CurrentMenu.WidthOffset, SettingsButton.SelectedSprite.Height, 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
+ RenderRectangle(CurrentMenu.X, CurrentMenu.Y + SettingsButton.SelectedSprite.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.SelectedSprite.Width + CurrentMenu.WidthOffset, SettingsButton.SelectedSprite.Height, Style.Color.HightLightColor[1], Style.Color.HightLightColor[2], Style.Color.HightLightColor[3], Style.Color.HightLightColor[4])
+ else
+ RenderSprite(SettingsButton.SelectedSprite.Dictionary, SettingsButton.SelectedSprite.Texture, CurrentMenu.X, CurrentMenu.Y + SettingsButton.SelectedSprite.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.SelectedSprite.Width + CurrentMenu.WidthOffset, SettingsButton.SelectedSprite.Height)
+ end
+ end
+ if Enabled then
+ if haveLeftBadge then
+ if (Style.LeftBadge ~= nil) then
+ local LeftBadge = Style.LeftBadge(Active)
+ RenderSprite(LeftBadge.BadgeDictionary or "commonmenu", LeftBadge.BadgeTexture or "", CurrentMenu.X, CurrentMenu.Y + SettingsButton.LeftBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.LeftBadge.Width, SettingsButton.LeftBadge.Height, 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)
+ RenderSprite(RightBadge.BadgeDictionary or "commonmenu", RightBadge.BadgeTexture or "", CurrentMenu.X + SettingsButton.RightBadge.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.RightBadge.Width, SettingsButton.RightBadge.Height, 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
+ RenderText(Style.RightLabel, CurrentMenu.X + SettingsButton.RightText.X - RightBadgeOffset + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightText.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.RightText.Scale, Active and 0 or 245, Active and 0 or 245, Active and 0 or 245, 255, 2)
+ end
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, Active and 0 or 245, Active and 0 or 245, Active and 0 or 245, 255)
+ else
+ if haveRightBadge then
+ local RightBadge = RageUI.BadgeStyle.Lock(Active)
+ RenderSprite(RightBadge.BadgeDictionary or "commonmenu", RightBadge.BadgeTexture or "", CurrentMenu.X + SettingsButton.RightBadge.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.RightBadge.Width, SettingsButton.RightBadge.Height, 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
+
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 163, 159, 148, 255)
+ end
+ RageUI.ItemOffset = RageUI.ItemOffset + SettingsButton.Rectangle.Height
+ RageUI.ItemsDescription(CurrentMenu, Description, Active);
+ if Enabled then
+ local Hovered = CurrentMenu.EnableMouse and (CurrentMenu.CursorStyle == 0 or CurrentMenu.CursorStyle == 1) and RageUI.ItemsMouseBounds(CurrentMenu, Active, Option + 1, SettingsButton);
+ local Selected = (CurrentMenu.Controls.Select.Active or (Hovered and CurrentMenu.Controls.Click.Active)) and Active
+ if (Action.onHovered ~= nil) and Hovered then
+ Action.onHovered();
+ end
+ if (Action.onActive ~= nil) and Active then
+ Action.onActive();
+ end
+ if Selected then
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].Select.audioName, Audio[Audio.Use].Select.audioRef)
+ if (Action.onSelected ~= nil) then
+ Action.onSelected()
+ end
+ if Submenu and Submenu() then
+ RageUI.NextMenu = Submenu
+ end
+ end
+ end
+ end
+ RageUI.Options = RageUI.Options + 1
+ end
+end
+
diff --git a/resources/mth-K9/RageUI/menu/items/UICheckBox.lua b/resources/mth-K9/RageUI/menu/items/UICheckBox.lua
new file mode 100644
index 000000000..f8624ef7c
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/items/UICheckBox.lua
@@ -0,0 +1,183 @@
+---@type table
+local SettingsButton = {
+ Rectangle = { Y = 0, Width = 431, Height = 38 },
+ Text = { X = 8, Y = 3, Scale = 0.33 },
+ LeftBadge = { Y = -2, Width = 40, Height = 40 },
+ RightBadge = { X = 385, Y = -2, Width = 40, Height = 40 },
+ RightText = { X = 420, Y = 4, Scale = 0.35 },
+ SelectedSprite = { Dictionary = "commonmenu", Texture = "gradient_nav", Y = 0, Width = 431, Height = 38 },
+}
+
+---@type table
+local SettingsCheckbox = {
+ Dictionary = "commonmenu", 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
+}
+
+RageUI.CheckboxStyle = {
+ Tick = 1,
+ Cross = 2
+}
+
+---StyleCheckBox
+---@param Selected number
+---@param Checked boolean
+---@param Box number
+---@param BoxSelect number
+---@return nil
+local function StyleCheckBox(Selected, Checked, Box, BoxSelect, OffSet)
+ ---@type table
+ local CurrentMenu = RageUI.CurrentMenu;
+ if OffSet == nil then
+ OffSet = 0
+ end
+ if Selected then
+ if Checked then
+ RenderSprite(SettingsCheckbox.Dictionary, SettingsCheckbox.Textures[Box], CurrentMenu.X + SettingsCheckbox.X + CurrentMenu.WidthOffset - OffSet, CurrentMenu.Y + SettingsCheckbox.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsCheckbox.Width, SettingsCheckbox.Height)
+ else
+ RenderSprite(SettingsCheckbox.Dictionary, SettingsCheckbox.Textures[1], CurrentMenu.X + SettingsCheckbox.X + CurrentMenu.WidthOffset - OffSet, CurrentMenu.Y + SettingsCheckbox.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsCheckbox.Width, SettingsCheckbox.Height)
+ end
+ else
+ if Checked then
+ RenderSprite(SettingsCheckbox.Dictionary, SettingsCheckbox.Textures[BoxSelect], CurrentMenu.X + SettingsCheckbox.X + CurrentMenu.WidthOffset - OffSet, CurrentMenu.Y + SettingsCheckbox.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsCheckbox.Width, SettingsCheckbox.Height)
+ else
+ RenderSprite(SettingsCheckbox.Dictionary, SettingsCheckbox.Textures[3], CurrentMenu.X + SettingsCheckbox.X + CurrentMenu.WidthOffset - OffSet, CurrentMenu.Y + SettingsCheckbox.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsCheckbox.Width, SettingsCheckbox.Height)
+ end
+ end
+end
+
+
+function RageUI.Checkbox(Label, Description, Checked, Style, Actions)
+ ---@type table
+ local CurrentMenu = RageUI.CurrentMenu;
+ if CurrentMenu ~= nil then
+ if CurrentMenu() then
+
+ ---@type number
+ local Option = RageUI.Options + 1
+ if CurrentMenu.Pagination.Minimum <= Option and CurrentMenu.Pagination.Maximum >= Option then
+ ---@type number
+ local Selected = CurrentMenu.Index == Option
+ 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)
+
+ local Hovered = false;
+
+ ---@type boolean
+ if CurrentMenu.EnableMouse == true and (CurrentMenu.CursorStyle == 0) or (CurrentMenu.CursorStyle == 1) then
+ Hovered = RageUI.ItemsMouseBounds(CurrentMenu, Selected, Option, SettingsButton);
+ end
+ if Selected then
+ RenderSprite(SettingsButton.SelectedSprite.Dictionary, SettingsButton.SelectedSprite.Texture, CurrentMenu.X, CurrentMenu.Y + SettingsButton.SelectedSprite.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.SelectedSprite.Width + CurrentMenu.WidthOffset, SettingsButton.SelectedSprite.Height)
+ end
+
+ if type(Style) == "table" then
+ if Style.Enabled == true or Style.Enabled == nil then
+ if Selected then
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 0, 0, 0, 255)
+ else
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 245, 245, 245, 255)
+ end
+ if type(Style) == 'table' then
+ if Style.LeftBadge ~= nil then
+ if Style.LeftBadge ~= RageUI.BadgeStyle.None then
+ local BadgeData = Style.LeftBadge(Selected)
+ RenderSprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "", CurrentMenu.X, CurrentMenu.Y + SettingsButton.LeftBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.LeftBadge.Width, SettingsButton.LeftBadge.Height, 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(Selected)
+ RenderSprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "", CurrentMenu.X + SettingsButton.RightBadge.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.RightBadge.Width, SettingsButton.RightBadge.Height, 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
+ ---@type function
+ local LeftBadge = RageUI.BadgeStyle.Lock
+ ---@type number
+ local LeftBadgeOffset = ((LeftBadge == RageUI.BadgeStyle.None or LeftBadge == nil) and 0 or 27)
+
+ if Selected then
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 0, 0, 0, 255)
+ else
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 163, 159, 148, 255)
+ end
+
+ if LeftBadge ~= RageUI.BadgeStyle.None and LeftBadge ~= nil then
+ local BadgeData = LeftBadge(Selected)
+
+ RenderSprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "", CurrentMenu.X, CurrentMenu.Y + SettingsButton.LeftBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.LeftBadge.Width, SettingsButton.LeftBadge.Height, 0, BadgeData.BadgeColour.R or 255, BadgeData.BadgeColour.G or 255, BadgeData.BadgeColour.B or 255, BadgeData.BadgeColour.A or 255)
+ end
+ end
+
+ if Style.Enabled == true or Style.Enabled == nil then
+ if Selected then
+ if Style.RightLabel ~= nil and Style.RightLabel ~= "" then
+
+ RenderText(Style.RightLabel, CurrentMenu.X + SettingsButton.RightText.X - RightBadgeOffset + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightText.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.RightText.Scale, 0, 0, 0, 255, 2)
+ BoxOffset = MeasureStringWidth(Style.RightLabel, 0, 0.35)
+ end
+ else
+ if Style.RightLabel ~= nil and Style.RightLabel ~= "" then
+ RenderText(Style.RightLabel, CurrentMenu.X + SettingsButton.RightText.X - RightBadgeOffset + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightText.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.RightText.Scale, 245, 245, 245, 255, 2)
+ BoxOffset = MeasureStringWidth(Style.RightLabel, 0, 0.35)
+ end
+ end
+ end
+
+ BoxOffset = RightBadgeOffset + BoxOffset
+ if Style.Style ~= nil then
+ if Style.Style == RageUI.CheckboxStyle.Tick then
+ StyleCheckBox(Selected, Checked, 2, 4, BoxOffset)
+ elseif Style.Style == RageUI.CheckboxStyle.Cross then
+ StyleCheckBox(Selected, Checked, 5, 6, BoxOffset)
+ else
+ StyleCheckBox(Selected, Checked, 2, 4, BoxOffset)
+ end
+ else
+ StyleCheckBox(Selected, Checked, 2, 4, BoxOffset)
+ end
+
+ if Selected and (CurrentMenu.Controls.Select.Active or (Hovered and CurrentMenu.Controls.Click.Active)) and (Style.Enabled == true or Style.Enabled == nil) then
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].Select.audioName, Audio[Audio.Use].Select.audioRef)
+ Checked = not Checked
+ if (Checked) then
+ if (Actions.onChecked ~= nil) then
+ Actions.onChecked();
+ end
+ else
+ if (Actions.onUnChecked ~= nil) then
+ Actions.onUnChecked();
+ end
+ end
+ end
+ else
+ error("UICheckBox Style is not a `table`")
+ end
+
+ RageUI.ItemOffset = RageUI.ItemOffset + SettingsButton.Rectangle.Height
+
+ RageUI.ItemsDescription(CurrentMenu, Description, Selected)
+
+ if (Actions.onSelected ~= nil) and (Selected) then
+ Actions.onSelected(Checked);
+ end
+
+ end
+ RageUI.Options = RageUI.Options + 1
+ end
+ end
+end
+
+
diff --git a/resources/mth-K9/RageUI/menu/items/UIList.lua b/resources/mth-K9/RageUI/menu/items/UIList.lua
new file mode 100644
index 000000000..afe160458
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/items/UIList.lua
@@ -0,0 +1,167 @@
+---@type table
+local SettingsButton = {
+ Rectangle = { Y = 0, Width = 431, Height = 38 },
+ Text = { X = 8, Y = 3, Scale = 0.33 },
+ LeftBadge = { Y = -2, Width = 40, Height = 40 },
+ RightBadge = { X = 385, Y = -2, Width = 40, Height = 40 },
+ RightText = { X = 420, Y = 4, Scale = 0.35 },
+ SelectedSprite = { Dictionary = "commonmenu", Texture = "gradient_nav", Y = 0, Width = 431, Height = 38 },
+}
+
+---@type table
+local SettingsList = {
+ LeftArrow = { Dictionary = "commonmenu", Texture = "arrowleft", X = 378, Y = 3, Width = 30, Height = 30 },
+ RightArrow = { Dictionary = "commonmenu", Texture = "arrowright", X = 400, Y = 3, Width = 30, Height = 30 },
+ Text = { X = 403, Y = 3, Scale = 0.35 },
+}
+
+function RageUI.List(Label, Items, Index, Description, Style, Enabled, Actions, Submenu)
+ ---@type table
+ local CurrentMenu = RageUI.CurrentMenu;
+
+ if CurrentMenu ~= nil then
+ if CurrentMenu() then
+
+ ---@type number
+ local Option = RageUI.Options + 1
+
+ if CurrentMenu.Pagination.Minimum <= Option and CurrentMenu.Pagination.Maximum >= Option then
+
+ ---@type number
+ local Selected = CurrentMenu.Index == Option
+
+ ---@type boolean
+ local LeftArrowHovered, RightArrowHovered = false, false
+
+ RageUI.ItemsSafeZone(CurrentMenu)
+
+ local Hovered = 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 RightOffset = 0
+ ---@type boolean
+ if CurrentMenu.EnableMouse == true and (CurrentMenu.CursorStyle == 0) or (CurrentMenu.CursorStyle == 1) then
+ Hovered = RageUI.ItemsMouseBounds(CurrentMenu, Selected, Option, SettingsButton);
+ end
+ local ListText = (type(Items[Index]) == "table") and string.format("← %s →", Items[Index].Name) or string.format("← %s →", Items[Index]) or "NIL"
+
+ if Selected then
+ RenderSprite(SettingsButton.SelectedSprite.Dictionary, SettingsButton.SelectedSprite.Texture, CurrentMenu.X, CurrentMenu.Y + SettingsButton.SelectedSprite.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.SelectedSprite.Width + CurrentMenu.WidthOffset, SettingsButton.SelectedSprite.Height)
+ end
+ if Enabled == true or Enabled == nil then
+ if Selected then
+ if Style.RightLabel ~= nil and Style.RightLabel ~= "" then
+ RenderText(Style.RightLabel, CurrentMenu.X + SettingsButton.RightText.X - RightBadgeOffset + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightText.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.RightText.Scale, 0, 0, 0, 255, 2)
+ RightOffset = MeasureStringWidth(Style.RightLabel, 0, 0.35)
+ end
+ else
+ if Style.RightLabel ~= nil and Style.RightLabel ~= "" then
+ RightOffset = MeasureStringWidth(Style.RightLabel, 0, 0.35)
+ RenderText(Style.RightLabel, CurrentMenu.X + SettingsButton.RightText.X - RightBadgeOffset + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightText.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.RightText.Scale, 245, 245, 245, 255, 2)
+ end
+ end
+ end
+ RightOffset = RightBadgeOffset * 1.3 + RightOffset
+ if Enabled == true or Enabled == nil then
+ if Selected then
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 0, 0, 0, 255)
+ RenderText(ListText, CurrentMenu.X + SettingsList.Text.X + 15 + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsList.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsList.Text.Scale, 0, 0, 0, 255, 2)
+ else
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 245, 245, 245, 255)
+ RenderText(ListText, CurrentMenu.X + SettingsList.Text.X + 15 + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsList.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsList.Text.Scale, 245, 245, 245, 255, 2)
+ end
+ else
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 163, 159, 148, 255)
+ if Selected then
+ RenderText(ListText, CurrentMenu.X + SettingsList.Text.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsList.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsList.Text.Scale, 163, 159, 148, 255, 2)
+ else
+ RenderText(ListText, CurrentMenu.X + SettingsList.Text.X + 15 + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsList.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsList.Text.Scale, 163, 159, 148, 255, 2)
+ end
+ 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(Selected)
+
+ RenderSprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "", CurrentMenu.X, CurrentMenu.Y + SettingsButton.LeftBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.LeftBadge.Width, SettingsButton.LeftBadge.Height, 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(Selected)
+
+ RenderSprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "", CurrentMenu.X + SettingsButton.RightBadge.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.RightBadge.Width, SettingsButton.RightBadge.Height, 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
+ ---@type function
+ local LeftBadge = RageUI.BadgeStyle.Lock
+ ---@type number
+ if LeftBadge ~= RageUI.BadgeStyle.None and LeftBadge ~= nil then
+ local BadgeData = LeftBadge(Selected)
+
+ RenderSprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "", CurrentMenu.X, CurrentMenu.Y + SettingsButton.LeftBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.LeftBadge.Width, SettingsButton.LeftBadge.Height, 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
+
+ LeftArrowHovered = RageUI.IsMouseInBounds(CurrentMenu.X + SettingsList.Text.X + CurrentMenu.WidthOffset - RightOffset + CurrentMenu.SafeZoneSize.X, CurrentMenu.Y + SettingsList.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + 2.5 + CurrentMenu.SafeZoneSize.Y , 15, 22.5)
+
+ RightArrowHovered = RageUI.IsMouseInBounds(CurrentMenu.X + SettingsList.Text.X + CurrentMenu.WidthOffset + CurrentMenu.SafeZoneSize.X - RightOffset - MeasureStringWidth(ListText, 0, SettingsList.Text.Scale), CurrentMenu.Y + SettingsList.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + 2.5 + CurrentMenu.SafeZoneSize.Y , 15, 22.5)
+ RageUI.ItemOffset = RageUI.ItemOffset + SettingsButton.Rectangle.Height
+
+ RageUI.ItemsDescription(CurrentMenu, Description, Selected);
+
+ if Selected and (CurrentMenu.Controls.Left.Active or (CurrentMenu.Controls.Click.Active and LeftArrowHovered)) and not (CurrentMenu.Controls.Right.Active or (CurrentMenu.Controls.Click.Active and RightArrowHovered)) then
+ Index = Index - 1
+ if Index < 1 then
+ Index = #Items
+ end
+ if (Actions.onListChange ~= nil) then
+ Actions.onListChange(Index, Items[Index]);
+ end
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].LeftRight.audioName, Audio[Audio.Use].LeftRight.audioRef)
+ elseif Selected and (CurrentMenu.Controls.Right.Active or (CurrentMenu.Controls.Click.Active and RightArrowHovered)) and not (CurrentMenu.Controls.Left.Active or (CurrentMenu.Controls.Click.Active and LeftArrowHovered)) then
+ Index = Index + 1
+ if Index > #Items then
+ Index = 1
+ end
+ if (Actions.onListChange ~= nil) then
+ Actions.onListChange(Index, Items[Index]);
+ end
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].LeftRight.audioName, Audio[Audio.Use].LeftRight.audioRef)
+ end
+
+ if Selected and (CurrentMenu.Controls.Select.Active or ((Hovered and CurrentMenu.Controls.Click.Active) and (not LeftArrowHovered and not RightArrowHovered))) then
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].Select.audioName, Audio[Audio.Use].Select.audioRef)
+
+ if (Actions.onSelected ~= nil) then
+ CreateThread(function()
+ Actions.onSelected(Index, Items[Index]);
+ end)
+ end
+
+ if Submenu and Submenu() then
+ RageUI.NextMenu = Submenu
+ end
+ elseif Selected then
+ if(Actions.onActive ~= nil) then
+ Actions.onActive()
+ end
+ end
+ end
+
+ RageUI.Options = RageUI.Options + 1
+ end
+ end
+end
diff --git a/resources/mth-K9/RageUI/menu/items/UISeparator.lua b/resources/mth-K9/RageUI/menu/items/UISeparator.lua
new file mode 100644
index 000000000..d3685aa46
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/items/UISeparator.lua
@@ -0,0 +1,46 @@
+---
+--- @author Dylan MALANDAIN
+--- @version 2.0.0
+--- @since 2020
+---
+--- RageUI Is Advanced UI Libs in LUA for make beautiful interface like RockStar GAME.
+---
+---
+--- Commercial Info.
+--- Any use for commercial purposes is strictly prohibited and will be punished.
+---
+--- @see RageUI
+---
+
+---@type table
+local SettingsButton = {
+ Rectangle = { Y = 0, Width = 431, Height = 38 },
+ Text = { X = 8, Y = 3, Scale = 0.33 },
+}
+
+function RageUI.Separator(Label)
+ local CurrentMenu = RageUI.CurrentMenu
+ if CurrentMenu ~= nil then
+ if CurrentMenu() then
+ local Option = RageUI.Options + 1
+ if CurrentMenu.Pagination.Minimum <= Option and CurrentMenu.Pagination.Maximum >= Option then
+ if (Label ~= nil) then
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + (CurrentMenu.WidthOffset * 2.5 ~= 0 and CurrentMenu.WidthOffset * 2.5 or 200), CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 245, 245, 245, 255, 1)
+ end
+ RageUI.ItemOffset = RageUI.ItemOffset + SettingsButton.Rectangle.Height
+ if (CurrentMenu.Index == Option) 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
+ end
+ end
+ RageUI.Options = RageUI.Options + 1
+ end
+ end
+end
+
diff --git a/resources/mth-K9/RageUI/menu/items/UISlider.lua b/resources/mth-K9/RageUI/menu/items/UISlider.lua
new file mode 100644
index 000000000..1cd7c9b38
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/items/UISlider.lua
@@ -0,0 +1,170 @@
+---@type table
+local SettingsButton = {
+ Rectangle = { Y = 0, Width = 431, Height = 38 },
+ Text = { X = 8, Y = 3, Scale = 0.33 },
+ LeftBadge = { Y = -2, Width = 40, Height = 40 },
+ RightBadge = { X = 385, Y = -2, Width = 40, Height = 40 },
+ RightText = { X = 420, Y = 4, Scale = 0.35 },
+ SelectedSprite = { Dictionary = "commonmenu", Texture = "gradient_nav", Y = 0, Width = 431, Height = 38 },
+}
+
+---@type table
+local SettingsSlider = {
+ Background = { X = 250, Y = 14.5, Width = 150, Height = 9 },
+ Slider = { X = 250, Y = 14.5, Width = 75, Height = 9 },
+ Divider = { X = 323.5, Y = 9, Width = 2.5, Height = 20 },
+ LeftArrow = { Dictionary = "commonmenutu", Texture = "arrowleft", X = 235, Y = 11.5, Width = 15, Height = 15 },
+ RightArrow = { Dictionary = "commonmenutu", Texture = "arrowright", X = 400, Y = 11.5, Width = 15, Height = 15 },
+}
+
+function RageUI.Slider(Label, ProgressStart, ProgressMax, Description, Divider, Style, Enabled, Actions)
+
+ ---@type table
+ local CurrentMenu = RageUI.CurrentMenu;
+ local Audio = RageUI.Settings.Audio
+ if CurrentMenu ~= nil then
+ if CurrentMenu() then
+ local Items = {}
+ for i = 1, ProgressMax do
+ table.insert(Items, i)
+ end
+ ---@type number
+ local Option = RageUI.Options + 1
+
+ if CurrentMenu.Pagination.Minimum <= Option and CurrentMenu.Pagination.Maximum >= Option then
+
+ ---@type number
+ local Selected = CurrentMenu.Index == Option
+
+ ---@type boolean
+ local LeftArrowHovered, RightArrowHovered = false, false
+
+ RageUI.ItemsSafeZone(CurrentMenu)
+
+ local Hovered = 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 RightOffset = 0
+ ---@type boolean
+ if CurrentMenu.EnableMouse == true and (CurrentMenu.CursorStyle == 0) or (CurrentMenu.CursorStyle == 1) then
+ Hovered = RageUI.ItemsMouseBounds(CurrentMenu, Selected, Option, SettingsButton);
+ end
+
+ if Selected then
+ RenderSprite(SettingsButton.SelectedSprite.Dictionary, SettingsButton.SelectedSprite.Texture, CurrentMenu.X, CurrentMenu.Y + SettingsButton.SelectedSprite.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.SelectedSprite.Width + CurrentMenu.WidthOffset, SettingsButton.SelectedSprite.Height)
+ LeftArrowHovered = RageUI.IsMouseInBounds(CurrentMenu.X + SettingsSlider.LeftArrow.X + CurrentMenu.SafeZoneSize.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsSlider.LeftArrow.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.LeftArrow.Width, SettingsSlider.LeftArrow.Height)
+ RightArrowHovered = RageUI.IsMouseInBounds(CurrentMenu.X + SettingsSlider.RightArrow.X + CurrentMenu.SafeZoneSize.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsSlider.RightArrow.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.RightArrow.Width, SettingsSlider.RightArrow.Height)
+ end
+ if Enabled == true or Enabled == nil then
+ if Selected then
+ if Style.RightLabel ~= nil and Style.RightLabel ~= "" then
+ RenderText(Style.RightLabel, CurrentMenu.X + SettingsButton.RightText.X - RightBadgeOffset + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightText.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.RightText.Scale, 0, 0, 0, 255, 2)
+ RightOffset = MeasureStringWidth(Style.RightLabel, 0, 0.35)
+ end
+ else
+ if Style.RightLabel ~= nil and Style.RightLabel ~= "" then
+ RightOffset = MeasureStringWidth(Style.RightLabel, 0, 0.35)
+ RenderText(Style.RightLabel, CurrentMenu.X + SettingsButton.RightText.X - RightBadgeOffset + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightText.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.RightText.Scale, 245, 245, 245, 255, 2)
+ end
+ end
+ end
+ RightOffset = RightOffset + RightBadgeOffset
+ if Enabled == true or Enabled == nil then
+ if Selected then
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 0, 0, 0, 255)
+
+ RenderSprite(SettingsSlider.LeftArrow.Dictionary, SettingsSlider.LeftArrow.Texture, CurrentMenu.X + SettingsSlider.LeftArrow.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.LeftArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.LeftArrow.Width, SettingsSlider.LeftArrow.Height, 0, 0, 0, 0, 255)
+ RenderSprite(SettingsSlider.RightArrow.Dictionary, SettingsSlider.RightArrow.Texture, CurrentMenu.X + SettingsSlider.RightArrow.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.RightArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.RightArrow.Width, SettingsSlider.RightArrow.Height, 0, 0, 0, 0, 255)
+ else
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 245, 245, 245, 255)
+ end
+ else
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 163, 159, 148, 255)
+
+ if Selected then
+ RenderSprite(SettingsSlider.LeftArrow.Dictionary, SettingsSlider.LeftArrow.Texture, CurrentMenu.X + SettingsSlider.LeftArrow.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.LeftArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.LeftArrow.Width, SettingsSlider.LeftArrow.Height, 163, 159, 148, 255)
+ RenderSprite(SettingsSlider.RightArrow.Dictionary, SettingsSlider.RightArrow.Texture, CurrentMenu.X + SettingsSlider.RightArrow.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.RightArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.RightArrow.Width, SettingsSlider.RightArrow.Height, 163, 159, 148, 255)
+ end
+ 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(Selected)
+
+ RenderSprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "", CurrentMenu.X, CurrentMenu.Y + SettingsButton.LeftBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.LeftBadge.Width, SettingsButton.LeftBadge.Height, 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(Selected)
+
+ RenderSprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "", CurrentMenu.X + SettingsButton.RightBadge.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.RightBadge.Width, SettingsButton.RightBadge.Height, 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
+ ---@type function
+ local LeftBadge = RageUI.BadgeStyle.Lock
+
+ if LeftBadge ~= RageUI.BadgeStyle.None and LeftBadge ~= nil then
+ local BadgeData = LeftBadge(Selected)
+
+ RenderSprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "", CurrentMenu.X, CurrentMenu.Y + SettingsButton.LeftBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.LeftBadge.Width, SettingsButton.LeftBadge.Height, 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
+ RenderRectangle(CurrentMenu.X + SettingsSlider.Background.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.Background.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.Background.Width, SettingsSlider.Background.Height, 4, 32, 57, 255)
+ RenderRectangle(CurrentMenu.X + SettingsSlider.Slider.X + (((SettingsSlider.Background.Width - SettingsSlider.Slider.Width) / (#Items - 1)) * (ProgressStart - 1)) + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.Slider.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.Slider.Width, SettingsSlider.Slider.Height, 57, 116, 200, 255)
+ if Divider then
+ RenderRectangle(CurrentMenu.X + SettingsSlider.Divider.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsSlider.Divider.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.Divider.Width, SettingsSlider.Divider.Height, 245, 245, 245, 255)
+ end
+
+ RageUI.ItemOffset = RageUI.ItemOffset + SettingsButton.Rectangle.Height
+
+ RageUI.ItemsDescription(CurrentMenu, Description, Selected);
+
+ if Selected and (CurrentMenu.Controls.Left.Active or (CurrentMenu.Controls.Click.Active and LeftArrowHovered)) and not (CurrentMenu.Controls.Right.Active or (CurrentMenu.Controls.Click.Active and RightArrowHovered)) then
+ ProgressStart = ProgressStart - 1
+ if ProgressStart < 1 then
+ ProgressStart = #Items
+ end
+ if (Actions.onSliderChange ~= nil) then
+ Actions.onSliderChange(ProgressStart);
+ end
+ RageUI.PlaySound(Audio[Audio.Use].LeftRight.audioName, Audio[Audio.Use].LeftRight.audioRef)
+ elseif Selected and (CurrentMenu.Controls.Right.Active or (CurrentMenu.Controls.Click.Active and RightArrowHovered)) and not (CurrentMenu.Controls.Left.Active or (CurrentMenu.Controls.Click.Active and LeftArrowHovered)) then
+ ProgressStart = ProgressStart + 1
+ if ProgressStart > #Items then
+ ProgressStart = 1
+ end
+ if (Actions.onSliderChange ~= nil) then
+ Actions.onSliderChange(ProgressStart);
+ end
+ RageUI.PlaySound(Audio[Audio.Use].LeftRight.audioName, Audio[Audio.Use].LeftRight.audioRef)
+ end
+
+ if Selected and (CurrentMenu.Controls.Select.Active or ((Hovered and CurrentMenu.Controls.Click.Active) and (not LeftArrowHovered and not RightArrowHovered))) then
+ if (Actions.onSelected ~= nil) then
+ Actions.onSelected(ProgressStart);
+ end
+ RageUI.PlaySound(Audio[Audio.Use].Select.audioName, Audio[Audio.Use].Select.audioRef)
+ elseif Selected then
+ if(Actions.onActive ~= nil) then
+ Actions.onActive()
+ end
+ end
+ end
+
+ RageUI.Options = RageUI.Options + 1
+ end
+ end
+end
+
+
+
diff --git a/resources/mth-K9/RageUI/menu/items/UISliderHeritage.lua b/resources/mth-K9/RageUI/menu/items/UISliderHeritage.lua
new file mode 100644
index 000000000..38585ab78
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/items/UISliderHeritage.lua
@@ -0,0 +1,122 @@
+---@type table
+local SettingsButton = {
+ Rectangle = { Y = 0, Width = 431, Height = 38 },
+ Text = { X = 8, Y = 3, Scale = 0.33 },
+ SelectedSprite = { Dictionary = "commonmenu", Texture = "gradient_nav", Y = 0, Width = 431, Height = 38 },
+}
+
+---@type table
+local SettingsSlider = {
+ Background = { X = 250, Y = 14.5, Width = 150, Height = 9 },
+ Slider = { X = 250, Y = 14.5, Width = 75, Height = 9 },
+ Divider = { X = 323.5, Y = 9, Width = 2.5, Height = 20 },
+ LeftArrow = { Dictionary = "mpleaderboard", Texture = "leaderboard_female_icon", X = 215, Y = 0, Width = 40, Height = 40 },
+ RightArrow = { Dictionary = "mpleaderboard", Texture = "leaderboard_male_icon", X = 395, Y = 0, Width = 40, Height = 40 },
+}
+
+local Items = {}
+for i = 1, 10 do
+ table.insert(Items, i)
+end
+
+function RageUI.UISliderHeritage(Label, ItemIndex, Description, Actions, Value)
+
+ local CurrentMenu = RageUI.CurrentMenu;
+ local Audio = RageUI.Settings.Audio
+
+ if CurrentMenu ~= nil then
+ if CurrentMenu() then
+
+ ---@type number
+ local Option = RageUI.Options + 1
+
+ if CurrentMenu.Pagination.Minimum <= Option and CurrentMenu.Pagination.Maximum >= Option then
+
+ ---@type number
+ local value = Value or 0.1
+ local Selected = CurrentMenu.Index == Option
+
+ ---@type boolean
+ local LeftArrowHovered, RightArrowHovered = false, false
+
+ RageUI.ItemsSafeZone(CurrentMenu)
+
+ local Hovered = false;
+ local RightOffset = 0
+
+ ---@type boolean
+ if CurrentMenu.EnableMouse == true and (CurrentMenu.CursorStyle == 0) or (CurrentMenu.CursorStyle == 1) then
+ Hovered = RageUI.ItemsMouseBounds(CurrentMenu, Selected, Option, SettingsButton);
+ end
+
+ if Selected then
+ RenderSprite(SettingsButton.SelectedSprite.Dictionary, SettingsButton.SelectedSprite.Texture, CurrentMenu.X, CurrentMenu.Y + SettingsButton.SelectedSprite.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.SelectedSprite.Width + CurrentMenu.WidthOffset, SettingsButton.SelectedSprite.Height)
+ LeftArrowHovered = RageUI.IsMouseInBounds(CurrentMenu.X + SettingsSlider.LeftArrow.X + CurrentMenu.SafeZoneSize.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsSlider.LeftArrow.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.LeftArrow.Width, SettingsSlider.LeftArrow.Height)
+ RightArrowHovered = RageUI.IsMouseInBounds(CurrentMenu.X + SettingsSlider.RightArrow.X + CurrentMenu.SafeZoneSize.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsSlider.RightArrow.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.RightArrow.Width, SettingsSlider.RightArrow.Height)
+ end
+
+ RightOffset = RightOffset
+
+ if Selected then
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 0, 0, 0, 255)
+
+ RenderSprite(SettingsSlider.LeftArrow.Dictionary, SettingsSlider.LeftArrow.Texture, CurrentMenu.X + SettingsSlider.LeftArrow.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.LeftArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.LeftArrow.Width, SettingsSlider.LeftArrow.Height, 0, 0, 0, 0, 255)
+ RenderSprite(SettingsSlider.RightArrow.Dictionary, SettingsSlider.RightArrow.Texture, CurrentMenu.X + SettingsSlider.RightArrow.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.RightArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.RightArrow.Width, SettingsSlider.RightArrow.Height, 0, 0, 0, 0, 255)
+ else
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 245, 245, 245, 255)
+
+ RenderSprite(SettingsSlider.LeftArrow.Dictionary, SettingsSlider.LeftArrow.Texture, CurrentMenu.X + SettingsSlider.LeftArrow.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.LeftArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.LeftArrow.Width, SettingsSlider.LeftArrow.Height, 0, 255, 255, 255, 255)
+ RenderSprite(SettingsSlider.RightArrow.Dictionary, SettingsSlider.RightArrow.Texture, CurrentMenu.X + SettingsSlider.RightArrow.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.RightArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.RightArrow.Width, SettingsSlider.RightArrow.Height, 0, 255, 255, 255, 255)
+ end
+
+ RenderRectangle(CurrentMenu.X + SettingsSlider.Background.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.Background.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.Background.Width, SettingsSlider.Background.Height, 4, 32, 57, 255)
+ RenderRectangle(CurrentMenu.X + SettingsSlider.Slider.X + (((SettingsSlider.Background.Width - SettingsSlider.Slider.Width) / (#Items)) * (ItemIndex)) + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.Slider.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.Slider.Width, SettingsSlider.Slider.Height, 57, 116, 200, 255)
+
+ RenderRectangle(CurrentMenu.X + SettingsSlider.Divider.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsSlider.Divider.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.Divider.Width, SettingsSlider.Divider.Height, 245, 245, 245, 255)
+
+ RageUI.ItemOffset = RageUI.ItemOffset + SettingsButton.Rectangle.Height
+
+ RageUI.ItemsDescription(CurrentMenu, Description, Selected);
+
+ if Selected and (CurrentMenu.Controls.SliderLeft.Active or (CurrentMenu.Controls.Click.Active and LeftArrowHovered)) and not (CurrentMenu.Controls.SliderRight.Active or (CurrentMenu.Controls.Click.Active and RightArrowHovered)) then
+ ItemIndex = ItemIndex - value
+ if ItemIndex < 0.1 then
+ ItemIndex = 0.0
+ else
+ RageUI.PlaySound(Audio[Audio.Use].Slider.audioName, Audio[Audio.Use].Slider.audioRef, true)
+ end
+ if (Actions.onSliderChange ~= nil) then
+ Actions.onSliderChange(ItemIndex / 10, ItemIndex);
+ end
+ elseif Selected and (CurrentMenu.Controls.SliderRight.Active or (CurrentMenu.Controls.Click.Active and RightArrowHovered)) and not (CurrentMenu.Controls.SliderLeft.Active or (CurrentMenu.Controls.Click.Active and LeftArrowHovered)) then
+ ItemIndex = ItemIndex + value
+ if ItemIndex > #Items then
+ ItemIndex = 10
+ else
+ RageUI.PlaySound(Audio[Audio.Use].Slider.audioName, Audio[Audio.Use].Slider.audioRef, true)
+ end
+ if (Actions.onSliderChange ~= nil) then
+ Actions.onSliderChange(ItemIndex / 10, ItemIndex);
+ end
+ end
+
+ if Selected and (CurrentMenu.Controls.Select.Active or ((Hovered and CurrentMenu.Controls.Click.Active) and (not LeftArrowHovered and not RightArrowHovered))) then
+ if (Actions.onSelected ~= nil) then
+ Actions.onSelected(ItemIndex / 10, ItemIndex);
+ end
+ RageUI.PlaySound(Audio[Audio.Use].Select.audioName, Audio[Audio.Use].Select.audioRef, false)
+ elseif Selected then
+ if(Actions.onActive ~= nil) then
+ Actions.onActive()
+ end
+ end
+
+ end
+
+ RageUI.Options = RageUI.Options + 1
+ end
+ end
+end
+
+
+
diff --git a/resources/mth-K9/RageUI/menu/items/UISliderProgress.lua b/resources/mth-K9/RageUI/menu/items/UISliderProgress.lua
new file mode 100644
index 000000000..cf2fc2a66
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/items/UISliderProgress.lua
@@ -0,0 +1,190 @@
+---
+--- Generated by EmmyLua(https://github.com/EmmyLua)
+--- Created by Dylan Malandain.
+--- DateTime: 21/11/2019 01:33
+---
+
+---@type table
+local SettingsButton = {
+ Rectangle = { Y = 0, Width = 431, Height = 38 },
+ Text = { X = 8, Y = 3, Scale = 0.33 },
+ LeftBadge = { Y = -2, Width = 40, Height = 40 },
+ RightBadge = { X = 385, Y = -2, Width = 40, Height = 40 },
+ RightText = { X = 420, Y = 4, Scale = 0.35 },
+ SelectedSprite = { Dictionary = "commonmenu", Texture = "gradient_nav", Y = 0, Width = 431, Height = 38 },
+}
+
+---@type table
+local SettingsSlider = {
+ Background = { X = 250, Y = 14.5, Width = 150, Height = 9 },
+ Slider = { X = 250, Y = 14.5, Width = 150, Height = 9 },
+ LeftArrow = { Dictionary = "commonmenutu", Texture = "arrowleft", X = 235, Y = 11.5, Width = 15, Height = 15 },
+ RightArrow = { Dictionary = "commonmenutu", Texture = "arrowright", X = 400, Y = 11.5, Width = 15, Height = 15 },
+}
+
+---Slider
+---@param Label string
+---@param ProgressStart number
+---@param ProgressMax number
+---@param Description string
+---@param Enabled boolean
+---@param Callback function
+function RageUI.SliderProgress(Label, ProgressStart, ProgressMax, Description, Style, Enabled, Actions)
+
+ ---@type table
+ local CurrentMenu = RageUI.CurrentMenu;
+ local Audio = RageUI.Settings.Audio
+
+ if CurrentMenu ~= nil then
+ if CurrentMenu() then
+
+ local Items = {}
+ for i = 1, ProgressMax do
+ table.insert(Items, i)
+ end
+ ---@type number
+ local Option = RageUI.Options + 1
+
+ if CurrentMenu.Pagination.Minimum <= Option and CurrentMenu.Pagination.Maximum >= Option then
+
+ ---@type number
+ local Selected = CurrentMenu.Index == Option
+
+ ---@type boolean
+ local LeftArrowHovered, RightArrowHovered = false, false
+
+ RageUI.ItemsSafeZone(CurrentMenu)
+
+ local Hovered = 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 RightOffset = 0
+ ---@type boolean
+ if CurrentMenu.EnableMouse == true and (CurrentMenu.CursorStyle == 0) or (CurrentMenu.CursorStyle == 1) then
+ Hovered = RageUI.ItemsMouseBounds(CurrentMenu, Selected, Option, SettingsButton);
+ end
+
+ if Selected then
+ RenderSprite(SettingsButton.SelectedSprite.Dictionary, SettingsButton.SelectedSprite.Texture, CurrentMenu.X, CurrentMenu.Y + SettingsButton.SelectedSprite.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.SelectedSprite.Width + CurrentMenu.WidthOffset, SettingsButton.SelectedSprite.Height)
+ LeftArrowHovered = RageUI.IsMouseInBounds(CurrentMenu.X + SettingsSlider.LeftArrow.X + CurrentMenu.SafeZoneSize.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsSlider.LeftArrow.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.LeftArrow.Width, SettingsSlider.LeftArrow.Height)
+ RightArrowHovered = RageUI.IsMouseInBounds(CurrentMenu.X + SettingsSlider.RightArrow.X + CurrentMenu.SafeZoneSize.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsSlider.RightArrow.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.RightArrow.Width, SettingsSlider.RightArrow.Height)
+ end
+ if Enabled == true or Enabled == nil then
+ if Selected then
+ if Style.RightLabel ~= nil and Style.RightLabel ~= "" then
+ RenderText(Style.RightLabel, CurrentMenu.X + SettingsButton.RightText.X - RightBadgeOffset + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightText.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.RightText.Scale, 0, 0, 0, 255, 2)
+ RightOffset = MeasureStringWidth(Style.RightLabel, 0, 0.35)
+ end
+ else
+ if Style.RightLabel ~= nil and Style.RightLabel ~= "" then
+ RightOffset = MeasureStringWidth(Style.RightLabel, 0, 0.35)
+ RenderText(Style.RightLabel, CurrentMenu.X + SettingsButton.RightText.X - RightBadgeOffset + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightText.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.RightText.Scale, 245, 245, 245, 255, 2)
+ end
+ end
+ end
+ RightOffset = RightOffset + RightBadgeOffset
+ if Enabled == true or Enabled == nil then
+ if Selected then
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 0, 0, 0, 255)
+
+ RenderSprite(SettingsSlider.LeftArrow.Dictionary, SettingsSlider.LeftArrow.Texture, CurrentMenu.X + SettingsSlider.LeftArrow.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.LeftArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.LeftArrow.Width, SettingsSlider.LeftArrow.Height, 0, 0, 0, 0, 255)
+ RenderSprite(SettingsSlider.RightArrow.Dictionary, SettingsSlider.RightArrow.Texture, CurrentMenu.X + SettingsSlider.RightArrow.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.RightArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.RightArrow.Width, SettingsSlider.RightArrow.Height, 0, 0, 0, 0, 255)
+ else
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 245, 245, 245, 255)
+ end
+ else
+ RenderText(Label, CurrentMenu.X + SettingsButton.Text.X + LeftBadgeOffset, CurrentMenu.Y + SettingsButton.Text.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, SettingsButton.Text.Scale, 163, 159, 148, 255)
+
+ if Selected then
+ RenderSprite(SettingsSlider.LeftArrow.Dictionary, SettingsSlider.LeftArrow.Texture, CurrentMenu.X + SettingsSlider.LeftArrow.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.LeftArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.LeftArrow.Width, SettingsSlider.LeftArrow.Height, 163, 159, 148, 255)
+ RenderSprite(SettingsSlider.RightArrow.Dictionary, SettingsSlider.RightArrow.Texture, CurrentMenu.X + SettingsSlider.RightArrow.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.RightArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.RightArrow.Width, SettingsSlider.RightArrow.Height, 163, 159, 148, 255)
+ end
+ 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(Selected)
+
+ RenderSprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "", CurrentMenu.X, CurrentMenu.Y + SettingsButton.LeftBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.LeftBadge.Width, SettingsButton.LeftBadge.Height, 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(Selected)
+
+ RenderSprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "", CurrentMenu.X + SettingsButton.RightBadge.X + CurrentMenu.WidthOffset, CurrentMenu.Y + SettingsButton.RightBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.RightBadge.Width, SettingsButton.RightBadge.Height, 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
+ ---@type function
+ local LeftBadge = RageUI.BadgeStyle.Lock
+
+ if LeftBadge ~= RageUI.BadgeStyle.None and LeftBadge ~= nil then
+ local BadgeData = LeftBadge(Selected)
+
+ RenderSprite(BadgeData.BadgeDictionary or "commonmenu", BadgeData.BadgeTexture or "", CurrentMenu.X, CurrentMenu.Y + SettingsButton.LeftBadge.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsButton.LeftBadge.Width, SettingsButton.LeftBadge.Height, 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
+
+ if (type(Style.ProgressBackgroundColor) == "table") then
+ RenderRectangle(CurrentMenu.X + SettingsSlider.Background.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.Background.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, SettingsSlider.Background.Width, SettingsSlider.Background.Height, Style.ProgressBackgroundColor.R, Style.ProgressBackgroundColor.G, Style.ProgressBackgroundColor.B, Style.ProgressBackgroundColor.A)
+ else
+ error("Style ProgressBackgroundColor is not a table or undefined")
+ end
+
+ if (type(Style.ProgressColor) == "table") then
+ RenderRectangle(CurrentMenu.X + SettingsSlider.Slider.X + CurrentMenu.WidthOffset - RightOffset, CurrentMenu.Y + SettingsSlider.Slider.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, (((SettingsSlider.Slider.Width) / (#Items - 1)) * (ProgressStart - 1)), SettingsSlider.Slider.Height, Style.ProgressColor.R, Style.ProgressColor.G, Style.ProgressColor.B, Style.ProgressColor.A)
+ else
+ error("Style ProgressColor is not a table or undefined")
+ end
+
+ RageUI.ItemOffset = RageUI.ItemOffset + SettingsButton.Rectangle.Height
+
+ RageUI.ItemsDescription(CurrentMenu, Description, Selected);
+
+ if Selected and (CurrentMenu.Controls.Left.Active or (CurrentMenu.Controls.Click.Active and LeftArrowHovered)) and not (CurrentMenu.Controls.Right.Active or (CurrentMenu.Controls.Click.Active and RightArrowHovered)) then
+ ProgressStart = ProgressStart - 1
+ if ProgressStart < 1 then
+ ProgressStart = #Items
+ end
+ if (Actions.onSliderChange ~= nil) then
+ Actions.onSliderChange(ProgressStart);
+ end
+ RageUI.PlaySound(Audio[Audio.Use].LeftRight.audioName, Audio[Audio.Use].LeftRight.audioRef)
+ elseif Selected and (CurrentMenu.Controls.Right.Active or (CurrentMenu.Controls.Click.Active and RightArrowHovered)) and not (CurrentMenu.Controls.Left.Active or (CurrentMenu.Controls.Click.Active and LeftArrowHovered)) then
+ ProgressStart = ProgressStart + 1
+ if ProgressStart > #Items then
+ ProgressStart = 1
+ end
+ if (Actions.onSliderChange ~= nil) then
+ Actions.onSliderChange(ProgressStart);
+ end
+ RageUI.PlaySound(Audio[Audio.Use].LeftRight.audioName, Audio[Audio.Use].LeftRight.audioRef)
+ end
+
+ if Selected and (CurrentMenu.Controls.Select.Active or ((Hovered and CurrentMenu.Controls.Click.Active) and (not LeftArrowHovered and not RightArrowHovered))) then
+ if (Actions.onSelected ~= nil) then
+ Actions.onSelected(ProgressStart);
+ end
+ RageUI.PlaySound(Audio[Audio.Use].Select.audioName, Audio[Audio.Use].Select.audioRef)
+ elseif Selected then
+ if(Actions.onActive ~= nil) then
+ Actions.onActive()
+ end
+ end
+ end
+
+ RageUI.Options = RageUI.Options + 1
+ end
+ end
+end
+
+
diff --git a/resources/mth-K9/RageUI/menu/panels/UIBoutonPanel.lua b/resources/mth-K9/RageUI/menu/panels/UIBoutonPanel.lua
new file mode 100644
index 000000000..339ae73d5
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/panels/UIBoutonPanel.lua
@@ -0,0 +1,24 @@
+local TextPanels = {
+ Background = { Dictionary = "commonmenu", Texture = "gradient_bgd", Y = 4, Width = 431, Height = 42 },
+ Text = {
+ Left = { X = 8, Y = 10, Scale = 0.35 },
+ Right = { X = 8, Y = 10, Scale = 0.35 },
+ },
+}
+
+---BoutonPanel
+---@param LeftText string
+---@param RightText string
+---@public
+function RageUI.BoutonPanel(LeftText, RightText, Index)
+ local CurrentMenu = RageUI.CurrentMenu
+ if CurrentMenu ~= nil then
+ local leftTextSize = MeasureStringWidth(LeftText)
+ if CurrentMenu() and (Index == nil or (CurrentMenu.Index == Index)) then
+ RenderRectangle(CurrentMenu.X, CurrentMenu.Y + TextPanels.Background.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + (RageUI.StatisticPanelCount * 42), TextPanels.Background.Width + CurrentMenu.WidthOffset, TextPanels.Background.Height, 0, 0, 0, 170)
+ RenderText(LeftText or "", CurrentMenu.X + TextPanels.Text.Left.X, (RageUI.StatisticPanelCount * 40) + CurrentMenu.Y + TextPanels.Text.Left.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, TextPanels.Text.Left.Scale, 245, 245, 245, 255, 0)
+ RenderText(RightText or "", CurrentMenu.X + TextPanels.Background.Width + CurrentMenu.WidthOffset - leftTextSize, (RageUI.StatisticPanelCount * 40) + CurrentMenu.Y + TextPanels.Text.Left.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, TextPanels.Text.Left.Scale, 245, 245, 245, 255, 2)
+ RageUI.StatisticPanelCount = RageUI.StatisticPanelCount + 1
+ end
+ end
+end
\ No newline at end of file
diff --git a/resources/mth-K9/RageUI/menu/panels/UIColourPanel.lua b/resources/mth-K9/RageUI/menu/panels/UIColourPanel.lua
new file mode 100644
index 000000000..49f463bea
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/panels/UIColourPanel.lua
@@ -0,0 +1,110 @@
+---@type table
+local Colour = {
+ Background = { Dictionary = "commonmenu", Texture = "gradient_bgd", Y = 4, Width = 431, Height = 112 },
+ LeftArrow = { Dictionary = "commonmenu", Texture = "arrowleft", X = 7.5, Y = 15, Width = 30, Height = 30 },
+ RightArrow = { Dictionary = "commonmenu", Texture = "arrowright", X = 393.5, Y = 15, Width = 30, Height = 30 },
+ Header = { X = 215.5, Y = 15, Scale = 0.35 },
+ Box = { X = 15, Y = 55, Width = 44.5, Height = 44.5 },
+ SelectedRectangle = { X = 15, Y = 47, Width = 44.5, Height = 8 },
+ Seperator = { Text = "of" }
+}
+
+---ColourPanel
+---@param Title string
+---@param Colours thread | table
+---@param MinimumIndex number
+---@param CurrentIndex number
+---@param Callback function
+---@return nil
+---@public
+function RageUI.ColourPanel(Title, Colours, MinimumIndex, CurrentIndex, Action, Index, Style)
+
+ ---@type table
+ local CurrentMenu = RageUI.CurrentMenu;
+
+ if CurrentMenu ~= nil then
+ if CurrentMenu() and (CurrentMenu.Index == Index) then
+
+ ---@type number
+ local Maximum = (#Colours > 9) and 9 or #Colours
+
+ ---@type boolean
+ local Hovered = RageUI.IsMouseInBounds(CurrentMenu.X + Colour.Box.X + CurrentMenu.SafeZoneSize.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.Box.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, (Colour.Box.Width * Maximum), Colour.Box.Height)
+
+ ---@type boolean
+ local LeftArrowHovered = RageUI.IsMouseInBounds(CurrentMenu.X + Colour.LeftArrow.X + CurrentMenu.SafeZoneSize.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.LeftArrow.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.LeftArrow.Width, Colour.LeftArrow.Height)
+
+ ---@type boolean
+ local RightArrowHovered = RageUI.IsMouseInBounds(CurrentMenu.X + Colour.RightArrow.X + CurrentMenu.SafeZoneSize.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.RightArrow.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.RightArrow.Width, Colour.RightArrow.Height)
+
+ ---@type boolean
+ local Selected = false
+
+ RenderSprite(Colour.Background.Dictionary, Colour.Background.Texture, CurrentMenu.X, CurrentMenu.Y + Colour.Background.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.Background.Width + CurrentMenu.WidthOffset, Colour.Background.Height)
+ RenderSprite(Colour.LeftArrow.Dictionary, Colour.LeftArrow.Texture, CurrentMenu.X + Colour.LeftArrow.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.LeftArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.LeftArrow.Width, Colour.LeftArrow.Height)
+ RenderSprite(Colour.RightArrow.Dictionary, Colour.RightArrow.Texture, CurrentMenu.X + Colour.RightArrow.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.RightArrow.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.RightArrow.Width, Colour.RightArrow.Height)
+
+ RenderRectangle(CurrentMenu.X + Colour.SelectedRectangle.X + (Colour.Box.Width * (CurrentIndex - MinimumIndex)) + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.SelectedRectangle.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.SelectedRectangle.Width, Colour.SelectedRectangle.Height, 245, 245, 245, 255)
+
+ for Index = 1, Maximum do
+ RenderRectangle(CurrentMenu.X + Colour.Box.X + (Colour.Box.Width * (Index - 1)) + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.Box.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.Box.Width, Colour.Box.Height, table.unpack(Colours[MinimumIndex + Index - 1]))
+ end
+
+ local ColourSeperator = {}
+ if type(Style) == "table" then
+ if type(Style.Seperator) == "table" then
+ ColourSeperator = Style.Seperator
+ else
+ ColourSeperator = Colour.Seperator
+ end
+ else
+ ColourSeperator = Colour.Seperator
+ end
+
+ RenderText((Title and Title or "") .. " (" .. CurrentIndex .. " " .. ColourSeperator.Text .. " " .. #Colours .. ")", CurrentMenu.X + RageUI.Settings.Panels.Grid.Text.Top.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + RageUI.Settings.Panels.Grid.Text.Top.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, RageUI.Settings.Panels.Grid.Text.Top.Scale, 245, 245, 245, 255, 1)
+
+ if Hovered or LeftArrowHovered or RightArrowHovered then
+ if RageUI.Settings.Controls.Click.Active then
+ Selected = true
+
+ if LeftArrowHovered then
+ CurrentIndex = CurrentIndex - 1
+
+ if CurrentIndex < 1 then
+ CurrentIndex = #Colours
+ MinimumIndex = #Colours - Maximum + 1
+ elseif CurrentIndex < MinimumIndex then
+ MinimumIndex = MinimumIndex - 1
+ end
+ elseif RightArrowHovered then
+ CurrentIndex = CurrentIndex + 1
+
+ if CurrentIndex > #Colours then
+ CurrentIndex = 1
+ MinimumIndex = 1
+ elseif CurrentIndex > MinimumIndex + Maximum - 1 then
+ MinimumIndex = MinimumIndex + 1
+ end
+ elseif Hovered then
+ for Index = 1, Maximum do
+ if RageUI.IsMouseInBounds(CurrentMenu.X + Colour.Box.X + (Colour.Box.Width * (Index - 1)) + CurrentMenu.SafeZoneSize.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Colour.Box.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Colour.Box.Width, Colour.Box.Height) then
+ CurrentIndex = MinimumIndex + Index - 1
+ end
+ end
+ end
+
+ if (Action.onColorChange ~= nil) then
+ Action.onColorChange(MinimumIndex, CurrentIndex)
+ end
+ end
+ end
+
+ RageUI.ItemOffset = RageUI.ItemOffset + Colour.Background.Height + Colour.Background.Y
+
+ if (Hovered or LeftArrowHovered or RightArrowHovered) and RageUI.Settings.Controls.Click.Active then
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].Select.audioName, Audio[Audio.Use].Select.audioRef)
+ end
+ end
+ end
+end
\ No newline at end of file
diff --git a/resources/mth-K9/RageUI/menu/panels/UIGridPanel.lua b/resources/mth-K9/RageUI/menu/panels/UIGridPanel.lua
new file mode 100644
index 000000000..218587be6
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/panels/UIGridPanel.lua
@@ -0,0 +1,131 @@
+---
+--- @author Dylan MALANDAIN
+--- @version 2.0.0
+--- @since 2020
+---
+--- RageUI Is Advanced UI Libs in LUA for make beautiful interface like RockStar GAME.
+---
+---
+--- Commercial Info.
+--- Any use for commercial purposes is strictly prohibited and will be punished.
+---
+--- @see RageUI
+---
+
+local GridType = RageUI.Enum {
+ 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 ~= nil then
+ if CurrentMenu() and ((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 = RageUI.IsMouseInBounds(CurrentMenu.X + Grid.Grid.X + CurrentMenu.SafeZoneSize.X, CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Grid.Grid.Width + CurrentMenu.WidthOffset, Grid.Grid.Height)
+ local Selected = false
+ local CircleX = CurrentMenu.X + Grid.Grid.X + (CurrentMenu.WidthOffset / 2)
+ local CircleY = CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset
+ if X <= 0.0 then
+ X = 0.0
+ elseif X >= 1.0 then
+ X = 1.0
+ end
+ if Y <= 0.0 then
+ Y = 0.0
+ elseif Y >= 1.0 then
+ Y = 1.0
+ end
+ CircleX = CircleX + ((Grid.Grid.Width ) * X) - (Grid.Circle.Width / 2)
+ CircleY = CircleY + ((Grid.Grid.Height ) * Y) - (Grid.Circle.Height / 2)
+ RenderSprite(Grid.Background.Dictionary, Grid.Background.Texture, CurrentMenu.X, CurrentMenu.Y + Grid.Background.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Grid.Background.Width + CurrentMenu.WidthOffset, Grid.Background.Height)
+ RenderSprite(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)
+ RenderSprite(Grid.Circle.Dictionary, Grid.Circle.Texture, CircleX, CircleY, Grid.Circle.Width, Grid.Circle.Height)
+ if (Type == GridType.Default) then
+ RenderText(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)
+ RenderText(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)
+ RenderText(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)
+ RenderText(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
+ RenderText(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)
+ RenderText(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
+ RenderText(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)
+ RenderText(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) + Grid.Grid.Width ) then
+ CircleX = CurrentMenu.X + Grid.Grid.X + (CurrentMenu.WidthOffset / 2) + Grid.Grid.Width
+ elseif CircleX < (CurrentMenu.X + Grid.Grid.X - (Grid.Circle.Width / 2)) then
+ CircleX = CurrentMenu.X + Grid.Grid.X - (Grid.Circle.Width / 2)
+ end
+ if CircleY > (CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + Grid.Grid.Height ) then
+ CircleY = CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + Grid.Grid.Height
+ elseif CircleY < (CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset - (Grid.Circle.Height / 2)) then
+ CircleY = CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset - (Grid.Circle.Height / 2)
+ end
+ X = math.round((CircleX - (CurrentMenu.X + Grid.Grid.X + (CurrentMenu.WidthOffset / 2)) + (Grid.Circle.Width / 2)) / (Grid.Grid.Width ), 2)
+ Y = math.round((CircleY - (CurrentMenu.Y + Grid.Grid.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset ) + (Grid.Circle.Height / 2)) / (Grid.Grid.Height ), 2)
+ if (X ~= StartedX) and (Y ~= StartedY) then
+ 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
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].Slider.audioName, Audio[Audio.Use].Slider.audioRef, true)
+ if (Action.onSelected ~= nil) then
+ Action.onSelected(X, Y, (X * 2 - 1), (Y * 2 - 1));
+ end
+ end
+
+ end
+ end
+end
+
+function RageUI.Grid(StartedX, StartedY, TopText, BottomText, LeftText, RightText, Action, Index)
+ UIGridPanel(GridType.Default, StartedX, StartedY, TopText, BottomText, LeftText, RightText, Action, Index)
+end
+
+function RageUI.GridHorizontal(StartedX, LeftText, RightText, Action, Index)
+ UIGridPanel(GridType.Horizontal, StartedX, nil, nil, nil, LeftText, RightText, Action, Index)
+end
+
+function RageUI.GridVertical(StartedY, TopText, BottomText, Action, Index)
+ UIGridPanel(GridType.Vertical, nil, StartedY, TopText, BottomText, nil, nil, Action, Index)
+end
diff --git a/resources/mth-K9/RageUI/menu/panels/UIPercentagePanel.lua b/resources/mth-K9/RageUI/menu/panels/UIPercentagePanel.lua
new file mode 100644
index 000000000..e4b6241c9
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/panels/UIPercentagePanel.lua
@@ -0,0 +1,81 @@
+local Percentage = {
+ Background = { Dictionary = "commonmenu", Texture = "gradient_bgd", Y = 4, Width = 433, Height = 76 },
+ Bar = { X = 9, Y = 50, Width = 413, Height = 10 },
+ Text = {
+ Left = { X = 25, Y = 19, Scale = 0.30 },
+ Middle = { X = 215.5, Y = 19, Scale = 0.30 },
+ Right = { X = 398, Y = 19, Scale = 0.30 },
+ },
+}
+
+---PercentagePanel
+---@param Percent number
+---@param HeaderText string
+---@param MinText string
+---@param MaxText string
+---@param Callback function
+---@param Index number
+---@return nil
+---@public
+function RageUI.PercentagePanel(Percent, HeaderText, MinText, MaxText, Action, Index)
+ local CurrentMenu = RageUI.CurrentMenu
+
+ if CurrentMenu ~= nil then
+ if CurrentMenu() and (Index == nil or (CurrentMenu.Index == Index)) then
+
+ ---@type boolean
+ local Hovered = RageUI.IsMouseInBounds(CurrentMenu.X + Percentage.Bar.X + CurrentMenu.SafeZoneSize.X, CurrentMenu.Y + Percentage.Bar.Y + CurrentMenu.SafeZoneSize.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset - 4, Percentage.Bar.Width + CurrentMenu.WidthOffset, Percentage.Bar.Height + 8)
+
+ ---@type boolean
+ local Selected = false
+
+ ---@type number
+ local Progress = Percentage.Bar.Width
+
+ if Percent < 0.0 then
+ Percent = 0.0
+ elseif Percent > 1.0 then
+ Percent = 1.0
+ end
+
+ Progress = Progress * Percent
+
+ RenderSprite(Percentage.Background.Dictionary, Percentage.Background.Texture, CurrentMenu.X, CurrentMenu.Y + Percentage.Background.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Percentage.Background.Width + CurrentMenu.WidthOffset, Percentage.Background.Height)
+ RenderRectangle(CurrentMenu.X + Percentage.Bar.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Percentage.Bar.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Percentage.Bar.Width, Percentage.Bar.Height, 87, 87, 87, 255)
+ RenderRectangle(CurrentMenu.X + Percentage.Bar.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Percentage.Bar.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Progress, Percentage.Bar.Height, 245, 245, 245, 255)
+
+ RenderText(HeaderText or "Opacity", CurrentMenu.X + Percentage.Text.Middle.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Percentage.Text.Middle.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, Percentage.Text.Middle.Scale, 245, 245, 245, 255, 1)
+ RenderText(MinText or "0%", CurrentMenu.X + Percentage.Text.Left.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Percentage.Text.Left.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, Percentage.Text.Left.Scale, 245, 245, 245, 255, 1)
+ RenderText(MaxText or "100%", CurrentMenu.X + Percentage.Text.Right.X + (CurrentMenu.WidthOffset / 2), CurrentMenu.Y + Percentage.Text.Right.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, Percentage.Text.Right.Scale, 245, 245, 245, 255, 1)
+
+ if Hovered then
+ if IsDisabledControlPressed(0, 24) then
+ Selected = true
+
+ Progress = math.round(GetControlNormal(2, 239) * 1920) - CurrentMenu.SafeZoneSize.X - (CurrentMenu.X + Percentage.Bar.X + (CurrentMenu.WidthOffset / 2))
+
+ if Progress < 0 then
+ Progress = 0
+ elseif Progress > (Percentage.Bar.Width) then
+ Progress = Percentage.Bar.Width
+ end
+
+ Percent = math.round(Progress / Percentage.Bar.Width, 2)
+ if (Action.onProgressChange ~= nil) then
+ Action.onProgressChange(Percent)
+ end
+ end
+ end
+
+ RageUI.ItemOffset = RageUI.ItemOffset + Percentage.Background.Height + Percentage.Background.Y
+
+ if Hovered and Selected then
+ local Audio = RageUI.Settings.Audio
+ RageUI.PlaySound(Audio[Audio.Use].Slider.audioName, Audio[Audio.Use].Slider.audioRef, true)
+ if (Action.onSelected ~= nil) then
+ Action.onSelected(Percent)
+ end
+ end
+ end
+ end
+end
diff --git a/resources/mth-K9/RageUI/menu/panels/UISpritPanel.lua b/resources/mth-K9/RageUI/menu/panels/UISpritPanel.lua
new file mode 100644
index 000000000..b5e5ba15d
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/panels/UISpritPanel.lua
@@ -0,0 +1,20 @@
+---
+--- Generated by EmmyLua(https://github.com/EmmyLua)
+--- Created by iTexZ.
+--- DateTime: 05/11/2020 02:17
+---
+
+local TextPanels = {
+ Background = { Dictionary = "commonmenu", Texture = "gradient_bgd", Y = 4, Width = 433, Height = 42 },
+}
+
+---@type Panel
+function RageUI.RenderSprite(Dictionary, Texture)
+ local CurrentMenu = RageUI.CurrentMenu
+ if CurrentMenu ~= nil then
+ if CurrentMenu() then
+ RenderSprite(Dictionary, Texture, CurrentMenu.X, CurrentMenu.Y + TextPanels.Background.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + (RageUI.StatisticPanelCount * 42), TextPanels.Background.Width + CurrentMenu.WidthOffset, TextPanels.Background.Height + 200, 0, 255, 255, 255, 255);
+ RageUI.StatisticPanelCount = RageUI.StatisticPanelCount + 1
+ end
+ end
+end
diff --git a/resources/mth-K9/RageUI/menu/panels/UIStatisticsPanel.lua b/resources/mth-K9/RageUI/menu/panels/UIStatisticsPanel.lua
new file mode 100644
index 000000000..7021b17de
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/panels/UIStatisticsPanel.lua
@@ -0,0 +1,68 @@
+local Statistics = {
+ Background = { Dictionary = "commonmenu", Texture = "gradient_bgd", Y = 4, Width = 433, Height = 42 },
+ Text = {
+ Left = { X = -40, Y = 19, Scale = 0.30 },
+ },
+ Bar = { Right = 8, Y = 27, Width = 200, Height = 10, OffsetRatio = 0.5 },
+ Divider = {
+ [1] = { X = 200, Y = 27, Width = 2, Height = 10 },
+ [2] = { X = 200, Y = 27, Width = 2, Height = 10 },
+ [3] = { X = 200, Y = 27, Width = 2, Height = 10 },
+ [4] = { X = 200, Y = 27, Width = 2, Height = 10 },
+ [5] = { X = 200, Y = 27, Width = 2, Height = 10 },
+ }
+}
+
+function RageUI.StatisticPanel(Percent, Text, Index)
+ local CurrentMenu = RageUI.CurrentMenu
+ if CurrentMenu ~= nil then
+ if CurrentMenu() and (Index == nil or (CurrentMenu.Index == Index)) then
+
+ ---@type number
+ local BarWidth = Statistics.Bar.Width + CurrentMenu.WidthOffset * Statistics.Bar.OffsetRatio
+
+ RenderRectangle(CurrentMenu.X, CurrentMenu.Y + Statistics.Background.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + (RageUI.StatisticPanelCount * 42), Statistics.Background.Width + CurrentMenu.WidthOffset, Statistics.Background.Height, 0, 0, 0, 170)
+ RenderText(Text or "", CurrentMenu.X + 8.0, (RageUI.StatisticPanelCount * 40) + CurrentMenu.Y + Statistics.Text.Left.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, Statistics.Text.Left.Scale, 245, 245, 245, 255, 0)
+ RenderRectangle(CurrentMenu.X + RageUI.Settings.Items.Title.Background.Width - BarWidth - Statistics.Bar.Right + CurrentMenu.WidthOffset, (RageUI.StatisticPanelCount * 40) + CurrentMenu.Y + Statistics.Bar.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, BarWidth, Statistics.Bar.Height, 87, 87, 87, 255)
+ RenderRectangle(CurrentMenu.X + RageUI.Settings.Items.Title.Background.Width - BarWidth - Statistics.Bar.Right + CurrentMenu.WidthOffset, (RageUI.StatisticPanelCount * 40) + CurrentMenu.Y + Statistics.Bar.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Percent * BarWidth, Statistics.Bar.Height, 255, 255, 255, 255)
+ for i = 1, #Statistics.Divider, 1 do
+ RenderRectangle((CurrentMenu.X + RageUI.Settings.Items.Title.Background.Width - BarWidth - Statistics.Bar.Right) + i * ((BarWidth - (#Statistics.Divider / Statistics.Divider[i].Width)) / (#Statistics.Divider + 1)) + CurrentMenu.WidthOffset, (RageUI.StatisticPanelCount * 40) + CurrentMenu.Y + Statistics.Divider[i].Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Statistics.Divider[i].Width, Statistics.Divider[i].Height, 0, 0, 0, 255)
+ end
+ RageUI.StatisticPanelCount = RageUI.StatisticPanelCount + 1
+ end
+ end
+end
+
+function RageUI.StatisticPanelAdvanced(Text, Percent, RGBA1, Percent2, RGBA2, RGBA3, Index)
+ local CurrentMenu = RageUI.CurrentMenu
+ if CurrentMenu ~= nil then
+ if CurrentMenu() and (Index == nil or (CurrentMenu.Index == Index)) then
+
+ RGBA1 = RGBA1 or { 255, 255, 255, 255 }
+ local BarWidth = Statistics.Bar.Width + CurrentMenu.WidthOffset * Statistics.Bar.OffsetRatio
+
+ ---@type number
+ RenderRectangle(CurrentMenu.X, CurrentMenu.Y + Statistics.Background.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset + (RageUI.StatisticPanelCount * 42), Statistics.Background.Width + CurrentMenu.WidthOffset, Statistics.Background.Height, 0, 0, 0, 170)
+ RenderText(Text or "", CurrentMenu.X + 8.0, (RageUI.StatisticPanelCount * 40) + CurrentMenu.Y + Statistics.Text.Left.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, 0, Statistics.Text.Left.Scale, 245, 245, 245, 255, 0)
+ RenderRectangle(CurrentMenu.X + RageUI.Settings.Items.Title.Background.Width - BarWidth - Statistics.Bar.Right + CurrentMenu.WidthOffset, (RageUI.StatisticPanelCount * 40) + CurrentMenu.Y + Statistics.Bar.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, BarWidth, Statistics.Bar.Height, 87, 87, 87, 255)
+ RenderRectangle(CurrentMenu.X + RageUI.Settings.Items.Title.Background.Width - BarWidth - Statistics.Bar.Right + CurrentMenu.WidthOffset, (RageUI.StatisticPanelCount * 40) + CurrentMenu.Y + Statistics.Bar.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Percent * BarWidth, Statistics.Bar.Height, RGBA1[1], RGBA1[2], RGBA1[3], RGBA1[4])
+ RGBA2 = RGBA2 or { 0, 153, 204, 255 }
+ RGBA3 = RGBA3 or { 185, 0, 0, 255 }
+
+ if Percent2 and Percent2 > 0 then
+ local X = CurrentMenu.X + RageUI.Settings.Items.Title.Background.Width - BarWidth - Statistics.Bar.Right + CurrentMenu.WidthOffset + Percent * BarWidth
+ RenderRectangle(X, (RageUI.StatisticPanelCount * 40) + CurrentMenu.Y + Statistics.Bar.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Percent2 * BarWidth, Statistics.Bar.Height, RGBA2[1], RGBA2[2], RGBA2[3], RGBA2[4])
+ elseif Percent2 and Percent2 < 0 then
+ local X = CurrentMenu.X + RageUI.Settings.Items.Title.Background.Width - BarWidth - Statistics.Bar.Right + CurrentMenu.WidthOffset + Percent * BarWidth
+ RenderRectangle(X, (RageUI.StatisticPanelCount * 40) + CurrentMenu.Y + Statistics.Bar.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Percent2 * BarWidth, Statistics.Bar.Height, RGBA3[1], RGBA3[2], RGBA3[3], RGBA3[4])
+ end
+
+ for i = 1, #Statistics.Divider, 1 do
+ RenderRectangle((CurrentMenu.X + RageUI.Settings.Items.Title.Background.Width - BarWidth - Statistics.Bar.Right) + i * ((BarWidth - (#Statistics.Divider / Statistics.Divider[i].Width)) / (#Statistics.Divider + 1)) + CurrentMenu.WidthOffset, (RageUI.StatisticPanelCount * 40) + CurrentMenu.Y + Statistics.Divider[i].Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Statistics.Divider[i].Width, Statistics.Divider[i].Height, 0, 0, 0, 255)
+ end
+
+ RageUI.StatisticPanelCount = RageUI.StatisticPanelCount + 1
+ end
+ end
+end
+
diff --git a/resources/mth-K9/RageUI/menu/windows/UIHeritage.lua b/resources/mth-K9/RageUI/menu/windows/UIHeritage.lua
new file mode 100644
index 000000000..03c914933
--- /dev/null
+++ b/resources/mth-K9/RageUI/menu/windows/UIHeritage.lua
@@ -0,0 +1,79 @@
+---@type table
+local Heritage = {
+ Background = { Dictionary = "pause_menu_pages_char_mom_dad", Texture = "mumdadbg", Width = 433, Height = 228 },
+ Mum = { Dictionary = "char_creator_portraits", X = 25, Width = 228, Height = 228 },
+ Dad = { Dictionary = "char_creator_portraits", X = 195, Width = 228, Height = 228 },
+}
+
+---@type Window
+function RageUI.Window.Heritage(Mum, Dad)
+ ---@type table
+ local CurrentMenu = RageUI.CurrentMenu;
+ if CurrentMenu ~= nil then
+ if CurrentMenu() then
+ -- if Mum < 0 or Mum > 21 then
+ -- Mum = 0
+ -- end
+ -- if Dad < 0 or Dad > 23 then
+ -- Dad = 0
+ -- end
+ Mum = Mum - 1
+ Dad = Dad - 1
+ -- print(Mum)
+ -- if Mum >= 21 and Mum <= 22 then
+ -- Mum = "special_female_" .. Mum
+ -- elseif Mum < 21 then
+ -- Mum = "female_" .. Mum
+ -- elseif Mum > 22 then
+ -- Mum = "male_" .. Mum
+ -- elseif Mum >= 43 then
+ -- Mum = "special_male_" .. Mum
+ -- end
+
+
+ if (Mum < 21) then
+ Mum = "male_" .. Mum;
+ elseif (Mum < 42) then
+ Mum = "female_" .. (Mum - 21);
+ elseif (Mum < 45) then
+ Mum = "special_male_" .. (Mum - 42);
+ else
+ Mum = "special_female_0";
+ end
+
+ if (Dad < 21) then
+ Dad = "male_" .. Dad ;
+ elseif (Dad < 42) then
+ Dad = "female_" .. (Dad - 21);
+ elseif (Dad < 45) then
+ Dad = "special_male_" .. (Dad - 42) ;
+ else
+ Dad = "special_female_0";
+ end
+
+ -- if Dad >= 21 then
+ -- Dad = "special_male_" .. (tonumber(string.sub(Dad, 2, 2)) - 1)
+ -- else
+ -- Dad = "male_" .. Dad
+ -- end
+ -- if (MuDadm < 21) then
+ -- textureName = "male_" + secondShapedId;
+ -- elseif (secondShapedId < 42) {
+ -- textureName = "female_" + (secondShapedId - 21);
+ -- elseif (secondShapedId < 45) {
+ -- textureName = "special_male_" + (secondShapedId - 42);
+ -- else
+ -- textureName = "special_female_0";
+ -- end
+
+ RenderSprite(Heritage.Background.Dictionary, Heritage.Background.Texture, CurrentMenu.X,
+ CurrentMenu.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset,
+ Heritage.Background.Width + (CurrentMenu.WidthOffset / 1), Heritage.Background.Height)
+ RenderSprite(Heritage.Dad.Dictionary, Dad, CurrentMenu.X + Heritage.Dad.X + (CurrentMenu.WidthOffset / 2),
+ CurrentMenu.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Heritage.Dad.Width, Heritage.Dad.Height)
+ RenderSprite(Heritage.Mum.Dictionary, Mum, CurrentMenu.X + Heritage.Mum.X + (CurrentMenu.WidthOffset / 2),
+ CurrentMenu.Y + CurrentMenu.SubtitleHeight + RageUI.ItemOffset, Heritage.Mum.Width, Heritage.Mum.Height)
+ RageUI.ItemOffset = RageUI.ItemOffset + Heritage.Background.Height
+ end
+ end
+end
diff --git a/resources/mth-K9/RageUI/stream/RageUI_.ytd b/resources/mth-K9/RageUI/stream/RageUI_.ytd
new file mode 100644
index 000000000..44e102a00
--- /dev/null
+++ b/resources/mth-K9/RageUI/stream/RageUI_.ytd
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:22784fca0d088a882a6b150121588d83b48f90aa9d9df7e32a542bc7fa273338
+size 1087
diff --git a/resources/mth-K9/client.lua b/resources/mth-K9/client.lua
new file mode 100644
index 000000000..d90ab846d
--- /dev/null
+++ b/resources/mth-K9/client.lua
@@ -0,0 +1,504 @@
+-- CONFIG --
+
+local config_select = true -- true = select the target, false = auto target the player in front
+
+-- END OF CONFIG --
+
+local dogBreeds = { 'Rottweiler', 'Husky', 'Retriever', 'Shepherd' }
+local dogBHash = { 'a_c_rottweiler', 'a_c_husky', 'a_c_retriever', 'a_c_shepherd' }
+
+local k9 = nil
+local k9Name = nil
+
+local blipk9 = nil
+
+local selectedDogIndex = 1
+local currentDogIndex = 1
+
+local open = false
+local main = RageUI.CreateMenu("K9 Manager", "Actions")
+main.Closed = function()
+ open = false
+end
+
+function openK9Menu()
+ if open then
+ open = false
+ RageUI.Visible(main, false)
+ return
+ else
+ open = true
+ RageUI.Visible(main, true)
+ Citizen.CreateThread(function()
+ while open do
+ RageUI.IsVisible(main, function()
+ if k9 == nil then
+ -- create a button to rename the dog
+ RageUI.Button("Dog's name", nil, { RightLabel = k9Name }, true, {
+ onSelected = function()
+ local result = KeyboardInput("Dog's name")
+ if result ~= nil then
+ k9Name = result
+ end
+ end,
+ })
+ -- create a button to select the dog breed
+ RageUI.List("Dog breed", dogBreeds, selectedDogIndex, nil, {}, true, {
+ onListChange = function(Index)
+ selectedDogIndex = Index
+ currentDogIndex = Index
+ end,
+ })
+
+ RageUI.Button("Spawn the dog", nil, { RightLabel = "→" }, true, {
+ onSelected = function()
+ if k9Name == nil then
+ ShowNotification("You have to name your dog first!")
+ else
+ -- Spawning
+ RequestModel(GetHashKey(dogBHash[currentDogIndex]))
+ while not HasModelLoaded(GetHashKey(dogBHash[currentDogIndex])) do
+ Citizen.Wait(1)
+ end
+
+ local pos = GetOffsetFromEntityInWorldCoords(PlayerPedId(), 0.0, 2.0, 0.0)
+ local heading = GetEntityHeading(GetPlayerPed(-1))
+ local _, groundZ = GetGroundZFor_3dCoord(pos.x, pos.y, pos.z, false);
+
+ k9 = CreatePed(28, GetHashKey(dogBHash[currentDogIndex]), pos.x, pos.y, groundZ + 1, heading, true, true)
+
+ GiveWeaponToPed(k9, GetHashKey('WEAPON_ANIMAL'), true, true)
+ TaskSetBlockingOfNonTemporaryEvents(k9, true)
+ SetPedFleeAttributes(k9, 0, false)
+ SetPedCombatAttributes(k9, 3, true)
+ SetPedCombatAttributes(k9, 5, true)
+ SetPedCombatAttributes(k9, 46, true)
+ -- make it not attack the owner in any condition
+ SetPedAsGroupLeader(k9, GetPedGroupIndex(PlayerPedId()))
+ SetPedAsGroupMember(k9, GetPedGroupIndex(PlayerPedId()))
+ SetPedNeverLeavesGroup(k9, true)
+
+
+ blipk9 = AddBlipForEntity(k9)
+ SetBlipAsFriendly(blipk9, true)
+ SetBlipDisplay(blipk9, 2)
+ SetBlipShowCone(blipk9, true)
+ SetBlipAsShortRange(blipk9, false)
+
+ BeginTextCommandSetBlipName("STRING")
+ AddTextComponentString(k9Name)
+ EndTextCommandSetBlipName(blipk9)
+
+ Command_Follow(k9)
+
+ end
+ end,
+ })
+
+ else
+ if IsPedDeadOrDying(k9, true) then
+ ShowNotification(k9Name .. " was killed!")
+ k9 = nil
+ k9Name = nil
+ RemoveBlip(blipk9)
+ blipk9 = nil
+ end
+
+ RageUI.Button("Sit", nil, { RightLabel = "→" }, true, {
+ onSelected = function()
+ Command_Sit(k9)
+ end,
+ })
+
+ RageUI.Button("Follow / Call", nil, { RightLabel = "→" }, true, {
+ onSelected = function()
+ Command_Follow(k9)
+ end,
+ })
+
+ RageUI.Button("Don't move", nil, { RightLabel = "→" }, true, {
+ onSelected = function()
+ Command_Stay(k9)
+ end,
+ })
+
+ RageUI.Button("Bark", nil, { RightLabel = "→" }, true, {
+ onSelected = function()
+ Command_Bark(k9)
+ end,
+ })
+
+ RageUI.Button("Lay down", nil, { RightLabel = "→" }, true, {
+ onSelected = function()
+ Command_Lay(k9)
+ end,
+ })
+
+ RageUI.Button("Beg", nil, { RightLabel = "→" }, true, {
+ onSelected = function()
+ Command_beg(k9)
+ end,
+ })
+
+ RageUI.Button("Give paw", nil, { RightLabel = "→" }, true, {
+ onSelected = function()
+ Command_paw(k9)
+ end,
+ })
+
+ RageUI.Button("Attack", nil, { RightLabel = "→" }, true, {
+ onSelected = function()
+ if isAttacking then
+ isAttacking = false
+ ClearPedTasksImmediately(k9)
+ else
+ if config_select then
+ select_and_attackK9(k9)
+ else
+ attackK9(k9)
+ end
+ end
+ end,
+ })
+
+ RageUI.Button("Enter the car", nil, { RightLabel = "→" }, true, {
+ onSelected = function()
+ EnterVehicle(k9)
+ end,
+ })
+
+ RageUI.Button("Exit the car", nil, { RightLabel = "→" }, true, {
+ onSelected = function()
+ ExitVehicle(k9)
+ end,
+ })
+
+ RageUI.Button("Dismiss the dog", nil, { RightLabel = "→" }, true, {
+ onSelected = function()
+ DismissDog(k9)
+ end,
+ })
+ end
+ end)
+ Wait(1)
+ end
+ end)
+ end
+end
+
+Keys.Register('F9', 'F9', 'Menu K9', function()
+ openK9Menu()
+end)
+
+local isAttacking = false
+function attackK9(ped)
+ DetachEntity(ped)
+
+ if IsPlayerFreeAiming(PlayerId()) then
+ local _, target = GetEntityPlayerIsFreeAimingAt(PlayerId())
+ ClearPedTasks(ped)
+ if IsEntityAPed(target) and target ~= PlayerPedId() then
+ isAttacking = true
+ TaskCombatPed(ped, target, 0, 16)
+ CreateThread(function()
+ while isAttacking and not IsPedDeadOrDying(target, true) do
+ SetPedMoveRateOverride(ped, 1.25)
+ Citizen.Wait(0)
+ end
+ end)
+ end
+ else
+ local target = GetPedInFront()
+ ClearPedTasks(ped)
+ if IsEntityAPed(target) and target ~= PlayerPedId() then
+ isAttacking = true
+ TaskCombatPed(ped, target, 0, 16)
+
+ CreateThread(function()
+ while isAttacking and not IsPedDeadOrDying(target, true) do
+ SetPedMoveRateOverride(ped, 1.25)
+ Citizen.Wait(0)
+ end
+ end)
+ end
+ end
+end
+
+function select_and_attackK9(ped)
+ DetachEntity(ped)
+ local target = nil
+
+ local player = GetAllPlayersInArea(GetEntityCoords(ped), 5.0)
+ for k, v in pairs(player) do
+ if v == PlayerId() then
+ table.remove(player, k)
+ end
+ end
+
+ if player ~= nil then
+ if next(player) then
+ inChoice = true
+ StartChoicePlayerK9(player)
+ if selectedPlayer ~= nil then
+ target = GetPlayerPed(selectedPlayer)
+ end
+ end
+ else
+ ShowNotification("No player nearby")
+ end
+
+ if target == nil then
+ ShowNotification("No player selected")
+ return
+ end
+ ClearPedTasks(ped)
+
+ if IsEntityAPed(target) and target ~= PlayerPedId() then
+ isAttacking = true
+ TaskCombatPed(ped, target, 0, 16)
+
+ CreateThread(function()
+ while isAttacking and not IsPedDeadOrDying(target, true) do
+ SetPedMoveRateOverride(ped, 1.25)
+ Citizen.Wait(0)
+ end
+ end)
+ end
+end
+
+function Command_Sit(ped)
+
+ ClearPedTasks(ped)
+
+ RequestAnimDict("creatures@rottweiler@amb@world_dog_sitting@idle_a")
+ while not HasAnimDictLoaded("creatures@rottweiler@amb@world_dog_sitting@idle_a") do
+ Citizen.Wait(1)
+ end
+ TaskPlayAnim(ped, "creatures@rottweiler@amb@world_dog_sitting@idle_a", "idle_b", 8.0, -4.0, -1, 1, 0.0)
+
+end
+
+function Command_Stay(ped)
+
+ ClearPedTasks(ped)
+
+ RequestAnimDict("amb@lo_res_idles@")
+ while not HasAnimDictLoaded("amb@lo_res_idles@") do
+ Citizen.Wait(1)
+ end
+ TaskPlayAnim(ped, "amb@lo_res_idles@", "creatures_world_rottweiler_standing_lo_res_base", 8.0, -4.0, -1, 1, 0.0)
+
+end
+
+function Command_paw(ped)
+
+ ClearPedTasks(ped)
+
+ RequestAnimDict("creatures@rottweiler@tricks@")
+ while not HasAnimDictLoaded("creatures@rottweiler@tricks@") do
+ Citizen.Wait(1)
+ end
+ TaskPlayAnim(ped, "creatures@rottweiler@tricks@", "paw_right_loop", 8.0, -4.0, -1, 1, 0.0)
+
+end
+
+function Command_beg(ped)
+
+ ClearPedTasks(ped)
+
+ RequestAnimDict("creatures@rottweiler@tricks@")
+ while not HasAnimDictLoaded("creatures@rottweiler@tricks@") do
+ Citizen.Wait(1)
+ end
+ TaskPlayAnim(ped, "creatures@rottweiler@tricks@", "beg_loop", 8.0, -4.0, -1, 1, 0.0)
+
+end
+
+function Command_Follow(ped)
+
+ ClearPedTasks(ped)
+ DetachEntity(ped)
+
+ TaskFollowToOffsetOfEntity(ped, GetPlayerPed(-1), 0.5, 0.0, 0.0, 7.0, -1, 0.2, true)
+
+end
+
+function Command_Bark(ped)
+
+ ClearPedTasks(ped)
+
+ RequestAnimDict("creatures@rottweiler@amb@world_dog_barking@idle_a")
+ while not HasAnimDictLoaded("creatures@rottweiler@amb@world_dog_barking@idle_a") do
+ Citizen.Wait(1)
+ end
+ TaskPlayAnim(ped, "creatures@rottweiler@amb@world_dog_barking@idle_a", "idle_a", 8.0, -4.0, -1, 1, 0.0)
+
+end
+
+function Command_Lay(ped)
+ ClearPedTasks(ped)
+
+ RequestAnimDict("creatures@rottweiler@amb@sleep_in_kennel@")
+ while not HasAnimDictLoaded("creatures@rottweiler@amb@sleep_in_kennel@") do
+ Citizen.Wait(1)
+ end
+ TaskPlayAnim(ped, "creatures@rottweiler@amb@sleep_in_kennel@", "sleep_in_kennel", 8.0, -4.0, -1, 1, 0.0)
+
+end
+
+function Command_StartTrack(dog, player)
+
+ local target = GetPlayerPed(GetPlayerFromServerId(tonumber(player)))
+
+ TaskFollowToOffsetOfEntity(dog, target, 0.5, 0.0, 0.0, 6.0, -1, 0.2, true)
+
+end
+
+function EnterVehicle(ped)
+
+ if IsPedInAnyVehicle(PlayerPedId(), false) then
+
+ ClearPedTasks(ped)
+
+ local vehicle = GetVehiclePedIsIn(PlayerPedId(), false)
+ local vehHeading = GetEntityHeading(vehicle)
+
+ TaskGoToEntity(ped, vehicle, -1, 0.5, 100, 1073741824, 0)
+ TaskAchieveHeading(ped, vehHeading, -1)
+
+ RequestAnimDict("creatures@rottweiler@in_vehicle@van")
+ RequestAnimDict("creatures@rottweiler@amb@world_dog_sitting@base")
+
+ while not HasAnimDictLoaded("creatures@rottweiler@in_vehicle@van") or
+ not HasAnimDictLoaded("creatures@rottweiler@amb@world_dog_sitting@base") do
+ Citizen.Wait(1)
+ end
+
+ TaskPlayAnim(ped, "creatures@rottweiler@in_vehicle@van", "get_in", 8.0, -4.0, -1, 2, 0.0)
+ Citizen.Wait(700)
+ ClearPedTasks(ped)
+ AttachEntityToEntity(ped, vehicle, GetEntityBoneIndexByName(vehicle, "seat_pside_r"), 0.0, 0.0, 0.25)
+ TaskPlayAnim(ped, "creatures@rottweiler@amb@world_dog_sitting@base", "base", 8.0, -4.0, -1, 2, 0.0)
+
+ else
+ ShowNotification("You have to be in a vehicle to do that!")
+ end
+
+end
+
+function ExitVehicle(ped)
+
+ local vehicle = GetEntityAttachedTo(ped)
+ local vehPos = GetEntityCoords(vehicle)
+ local forwardX = GetEntityForwardVector(vehicle).x * 3.7
+ local forwardY = GetEntityForwardVector(vehicle).y * 3.7
+ local _, groundZ = GetGroundZFor_3dCoord(vehPos.x, vehPos.y, vehPos.z, 0)
+
+ ClearPedTasks(ped)
+ DetachEntity(ped)
+
+ SetEntityCoords(ped, vehPos.x - forwardX, vehPos.y - forwardY, groundZ)
+
+ Command_Follow(ped)
+
+end
+
+function DismissDog(ped)
+
+ ClearPedTasks(ped)
+
+ DeletePed(ped)
+
+ blipk9 = nil
+ k9 = nil
+ k9Name = nil
+ RemoveBlip(blipk9)
+
+end
+
+function GetPedInFront()
+ local player = PlayerId()
+ local plyPed = GetPlayerPed(player)
+ local plyPos = GetEntityCoords(plyPed, false)
+ local plyOffset = GetOffsetFromEntityInWorldCoords(plyPed, 0.0, 5.0, 0.0)
+ local rayHandle = StartShapeTestCapsule(plyPos.x, plyPos.y, plyPos.z, plyOffset.x, plyOffset.y, plyOffset.z, 1.0, 12
+ , plyPed, 7)
+ local _, _, _, _, ped = GetShapeTestResult(rayHandle)
+ return ped
+end
+
+function StartChoicePlayerK9(players)
+ selectedPlayer = nil
+ ShowNotification("Press ~g~E~s~ to confirm\nPress ~b~L~s~ to change target\nPress ~r~X~s~ to cancel")
+ local timer = GetGameTimer() + 10000
+ while inChoice do
+ if next(players) then
+ local mCoors = GetEntityCoords(GetPlayerPed(players[1]))
+ DrawMarker(20, mCoors.x, mCoors.y, mCoors.z + 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.3, 0.3, 255, 255,
+ 255, 120, 0, 1, 2, 0, nil, nil, 0)
+ if GetGameTimer() > timer then
+ ShowNotification("~r~Timeout was reached")
+ inChoice = false
+ return
+ elseif IsControlJustPressed(0, 51) then -- E
+ selectedPlayer = players[1]
+ inChoice = false
+ return
+ elseif IsControlJustPressed(0, 182) then -- L
+ table.remove(players, 1)
+ if next(players) then
+ timer = GetGameTimer() + 10000
+ end
+ elseif IsControlJustPressed(0, 73) then -- X
+ ShowNotification("~r~You canceled the choice")
+ selectedPlayer = nil
+ inChoice = false
+ return
+ end
+ else
+ ShowNotification("~r~No players found")
+ selectedPlayer = nil
+ inChoice = false
+ return
+ end
+ Wait(0)
+ end
+end
+
+function KeyboardInput(text)
+ local result = nil
+ AddTextEntry("CUSTOM_AMOUNT", text)
+ DisplayOnscreenKeyboard(1, "CUSTOM_AMOUNT", '', "", '', '', '', 255)
+ while UpdateOnscreenKeyboard() ~= 1 and UpdateOnscreenKeyboard() ~= 2 do
+ Wait(1)
+ end
+ if UpdateOnscreenKeyboard() ~= 2 then
+ result = GetOnscreenKeyboardResult()
+ Citizen.Wait(1)
+ else
+ Citizen.Wait(1)
+ end
+ return result
+end
+
+function ShowNotification(text)
+ AddTextEntry('core:notif', text)
+ BeginTextCommandThefeedPost('core:notif')
+ AddTextComponentSubstringPlayerName(text)
+ EndTextCommandThefeedPostTicker(true, true)
+end
+
+function GetAllPlayersInArea(coords, zone)
+ local playersInArea = {}
+ if zone == nil then
+ zone = 150.0
+ end
+ for k, v in pairs(GetActivePlayers()) do
+ local pPed = GetPlayerPed(v)
+ local pCoords = GetEntityCoords(pPed)
+ if GetDistanceBetweenCoords(pCoords, coords, false) <= zone then
+ table.insert(playersInArea, v)
+ end
+ end
+ return playersInArea
+end
\ No newline at end of file
diff --git a/resources/mth-K9/fxmanifest.lua b/resources/mth-K9/fxmanifest.lua
new file mode 100644
index 000000000..ede3ff24a
--- /dev/null
+++ b/resources/mth-K9/fxmanifest.lua
@@ -0,0 +1,20 @@
+fx_version 'adamant'
+game 'gta5'
+
+name "mth-K9"
+description "Menu to spawn and manage your K9"
+author "Mathu_lmn"
+version "1.0.1"
+
+client_scripts {
+ 'RageUI/RMenu.lua',
+ 'RageUI/menu/RageUI.lua',
+ 'RageUI/menu/Menu.lua',
+ 'RageUI/menu/MenuController.lua',
+ 'RageUI/components/*.lua',
+ 'RageUI/menu/elements/*.lua',
+ 'RageUI/menu/items/*.lua',
+ 'RageUI/menu/panels/*.lua',
+ 'RageUI/menu/windows/*.lua',
+ 'client.lua',
+}
\ No newline at end of file
diff --git a/resources/noexplodingpumps/c.lua b/resources/noexplodingpumps/c.lua
new file mode 100644
index 000000000..c85a25eaa
--- /dev/null
+++ b/resources/noexplodingpumps/c.lua
@@ -0,0 +1,11 @@
+Citizen.CreateThread(function()
+ while true do
+ Citizen.Wait(0)
+ local playerCoords = GetEntityCoords(PlayerPedId())
+ for k, v in pairs(Config.PumpModels) do
+ local entity = GetClosestObjectOfType(playerCoords, 10.0, v, false, false, false)
+ SetEntityInvincible(entity, true)
+ FreezeEntityPosition(entity, true)
+ end
+ end
+end)
\ No newline at end of file
diff --git a/resources/noexplodingpumps/config.lua b/resources/noexplodingpumps/config.lua
new file mode 100644
index 000000000..06f496141
--- /dev/null
+++ b/resources/noexplodingpumps/config.lua
@@ -0,0 +1,3 @@
+Config = {
+ PumpModels = {-2007231801, 1339433404, 1694452750, 1933174915, -462817101, -469694731, -164877493}
+}
\ No newline at end of file
diff --git a/resources/noexplodingpumps/fxmanifest.lua b/resources/noexplodingpumps/fxmanifest.lua
new file mode 100644
index 000000000..a549025fa
--- /dev/null
+++ b/resources/noexplodingpumps/fxmanifest.lua
@@ -0,0 +1,6 @@
+shared_script '@WolfShield/WolfShield.lua'
+fx_version 'cerulean'
+game 'gta5'
+shared_script 'config.lua'
+client_script 'c.lua'
+lua54 'yes'
\ No newline at end of file
diff --git a/server.cfg b/server.cfg
index e1b979ba4..277338286 100644
--- a/server.cfg
+++ b/server.cfg
@@ -557,6 +557,17 @@ ensure
//ensure gta_props_fivem
//ensure carpack_floor
+#[-----gnstudio-----]
+ensure cfx_gn_bc_firestation
+ensure cfx_gn_collection
+ensure cfx_gn_scenario
+ensure cfx_gn_sandy_mapdata
+ensure
+ensure
+
+
+
+
#[-----Map Add-On For Events-----]
//ensure SS-DragRaceEvent
//ensure RedBull-AirRace