diff --git a/resources/22f150rb/__resource.lua b/resources/22f150rb/__resource.lua new file mode 100644 index 000000000..e85b41837 --- /dev/null +++ b/resources/22f150rb/__resource.lua @@ -0,0 +1,20 @@ +resource_manifest_version '77731fab-63ca-442c-a67b-abc70f28dfa5' + +files { + 'vehicles.meta', + 'carvariations.meta', + 'carcols.meta', + 'handling.meta', + 'vehiclelayouts.meta', -- Not Required +} + +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' -- Not Required + + +client_script { + 'vehicle_names.lua' -- Not Required +} \ No newline at end of file diff --git a/resources/22f150rb/carcols.meta b/resources/22f150rb/carcols.meta new file mode 100644 index 000000000..c5a99991d --- /dev/null +++ b/resources/22f150rb/carcols.meta @@ -0,0 +1,1641 @@ + + + + + 240914_20fpiu_modkit + + MKT_STANDARD + + + ftplate_20fpiu + mis_ftplate + + + fplate + + VMT_GRILL + chassis + chassis + VMCP_DEFAULT + + + + + + + + rtplate_20fpiu + mis_rtplate + + + rplate + + VMT_TRUNK + boot + chassis + VMCP_DEFAULT + + + + + + + + ac_unit + ac_unit + + + VMT_CHASSIS2 + chassis + chassis + VMCP_DEFAULT + + + + + + + + fog_covers_plastic + fog_covers_plastic + + + fog_real + + VMT_BUMPER_F + bumper_f + chassis + VMCP_DEFAULT + + + + + + + + westin_2020_mid + westin + + + + VMT_CHASSIS + chassis + mod_col_8 + VMCP_DEFAULT + + + + + + + + westin_2020_pit + westin + + + + VMT_CHASSIS + chassis + mod_col_9 + VMCP_DEFAULT + + + + + + + + westin_2020_full + westin + + + + VMT_CHASSIS + chassis + mod_col_9 + VMCP_DEFAULT + + + + + + + + PB-4_20fpiu + pb4 + + + + VMT_CHASSIS + chassis + mod_col_10 + VMCP_DEFAULT + + + + + + + + PB-6_20fpiu + pb6 + + + + VMT_CHASSIS + chassis + mod_col_4 + VMCP_DEFAULT + + + + + + + + PB-8_20fpiu + pb8 + + + + VMT_CHASSIS + chassis + mod_col_5 + VMCP_DEFAULT + + + + + + + + PB-9_20fpiu + pb9 + + + + VMT_CHASSIS + chassis + mod_col_6 + VMCP_DEFAULT + + + + + + + + PB-10_20fpiu + pb10 + + + + VMT_CHASSIS + chassis + mod_col_7 + VMCP_DEFAULT + + + + + + + + PB-5_20fpiu + pb5 + + + + VMT_CHASSIS + chassis + mod_col_3 + VMCP_DEFAULT + + + + + + + + + + + + + + VMT_CHASSIS + Pushbar Options + + + VMT_ROOF + ALPR's + + + VMT_GRILL + Front Plate + + + VMT_BOOT + Rear Plate + + + VMT_BUMPER_F + Fog Lights + + + VMT_CHASSIS3 + Reflective Trunk Decals + + + VMT_CHASSIS2 + AC Unit + + + + + + + + + 22f150rb + + + + + + + + VehicleLight_sirenlight + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + VehicleLight_car_standardmodern + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 2020interceptorutility + + + \ No newline at end of file diff --git a/resources/22f150rb/carvariations.meta b/resources/22f150rb/carvariations.meta new file mode 100644 index 000000000..45e1cbe6d --- /dev/null +++ b/resources/22f150rb/carvariations.meta @@ -0,0 +1,62 @@ + + + + + 22f150rb + + + + 0 + 134 + 0 + 64 + 64 + 64 + 64 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 240914_20fpiu_modkit + + + + + + Police guv plate + + + + + + + + + \ No newline at end of file diff --git a/resources/22f150rb/handling.meta b/resources/22f150rb/handling.meta new file mode 100644 index 000000000..4997229ad --- /dev/null +++ b/resources/22f150rb/handling.meta @@ -0,0 +1,110 @@ + + + + + + 22f150rb + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 440010 + 0 + 0 + AVERAGE + + + + VEHICLE_WEAPON_RADAR + + + + + 0 + 0 + 0 + + + 3.000000 + 0.000000 + + + -0.400000 + 0.000000 + + + 0.707000 + 0.000000 + + + -0.500000 + 0.000000 + + + 0.000000 + 0.000000 + + + 25.000000 + 0.000000 + + + -0.080000 + 0.000000 + + + + + + + + + + + + + + + + diff --git a/resources/22f150rb/stream/22f150rb.yft b/resources/22f150rb/stream/22f150rb.yft new file mode 100644 index 000000000..2f496bc8c --- /dev/null +++ b/resources/22f150rb/stream/22f150rb.yft @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf7f3c2b2cf2b61722b59479013158550954f1cefb8b8a674c513f90839af0df +size 10620088 diff --git a/resources/22f150rb/stream/22f150rb.ytd b/resources/22f150rb/stream/22f150rb.ytd new file mode 100644 index 000000000..86403651a --- /dev/null +++ b/resources/22f150rb/stream/22f150rb.ytd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cafe8f6e29997c8ebe1c0e4b0a3bdb0e5a01b69d5dd60b4599318943bee329ee +size 12049728 diff --git a/resources/22f150rb/stream/22f150rb_hi.yft b/resources/22f150rb/stream/22f150rb_hi.yft new file mode 100644 index 000000000..76e2f6e42 --- /dev/null +++ b/resources/22f150rb/stream/22f150rb_hi.yft @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b845539a29d67153856a88e7ab8bcdd6527a8ea49699fa08e82d0c8296f06eb +size 10619782 diff --git a/resources/22f150rb/ulc.lua b/resources/22f150rb/ulc.lua new file mode 100644 index 000000000..e77108e24 --- /dev/null +++ b/resources/22f150rb/ulc.lua @@ -0,0 +1,50 @@ + +--[[ + Ultimate Lighting Controller Config + the ULC resource is required to use this configuration + get the resource here: https://github.com/Flohhhhh/ultimate-lighting-controller/releases/latest + To learn how to setup and use ULC visit here: https://docs.dwnstr.com/ulc/overview +]] + +return {names = {"22f150rb"}, + steadyBurnConfig = { + forceOn = false, useTime = false, + disableWithLights = false, + sbExtras = {4} + }, + parkConfig = { + usePark = true, + useSync = true, + syncWith = {"22f150","22f150rb"}, + pExtras = {1}, + dExtras = {2} + }, + hornConfig = { + useHorn = false, + hornExtras = {}, + }, + brakeConfig = { + useBrakes = false, + speedThreshold = 3, + brakeExtras = {}, + disableExtras = {} + }, + reverseConfig = { + useReverse = false, + reverseExtras = {} + }, + doorConfig = { + useDoors = false, + driverSide = {enable = {}, disable = {}}, + passSide = {enable = {}, disable = {}}, + trunk = {enable ={}, disable = {}} + }, + buttons = { + {label = "PARK MODE", key = 1, color = "green", extra = 1, linkedExtras = {}, oppositeExtras = {}, offExtras = {}, repair = true},{label = "PURSUIT MODE", key = 2, color = "green", extra = 2, linkedExtras = {}, oppositeExtras = {}, offExtras = {}, repair = true},{label = "LOW CRUISE", key = 3, color = "green", extra = 5, linkedExtras = {}, oppositeExtras = {}, offExtras = {}, repair = false},{label = "CRUISE", key = 4, color = "green", extra = 4, linkedExtras = {}, oppositeExtras = {}, offExtras = {}, repair = false} + }, + defaultStages = { + useDefaults = false, + enableKeys = {}, + disableKeys = {} + } +} \ No newline at end of file diff --git a/resources/22f150rb/vehicles.meta b/resources/22f150rb/vehicles.meta new file mode 100644 index 000000000..286bf25a3 --- /dev/null +++ b/resources/22f150rb/vehicles.meta @@ -0,0 +1,150 @@ + + + vehshare + + + + 22f150rb + 22f150rb + 22f150rb + 22f150rb + + null + null + null + null + + null + police + LAYOUT_STD_EXITFIXUP + POLICE3_COVER_OFFSET_INFO + EXPLOSION_INFO_DEFAULT + + DEFAULT_FOLLOW_VEHICLE_CAMERA + MID_BOX_VEHICLE_AIM_CAMERA + VEHICLE_BONNET_CAMERA_MID_NEAR + DEFAULT_POV_CAMERA + + + + + + + + + + + + + + + + + + + + + + + + + + + + VFXVEHICLEINFO_CAR_GENERIC + + + + + + + + + + + + + + + + + + + + + + 500.000000 + 500.000000 + 500.000000 + 500.000000 + 500.000000 + 500.000000 + + + + + + + + + + + SWANKNESS_0 + + FLAG_EXTRAS_STRONG FLAG_HAS_LIVERY FLAG_EXTRAS_ALL FLAG_LAW_ENFORCEMENT FLAG_EMERGENCY_SERVICE FLAG_NO_RESPRAY FLAG_DONT_SPAWN_IN_CARGEN FLAG_HAS_INTERIOR_EXTRAS FLAG_REPORT_CRIME_IF_STANDING_ON + VEHICLE_TYPE_CAR + VPT_BACK_PLATES + VDT_FEROCI + VC_EMERGENCY + VWT_SPORT + + boattrailer + ftrailer + ktrailer + + + trailersmall2 + boattrailer + + + + S_M_Y_Cop_01 + + + + + + + + + + + REWARD_WEAPON_PUMPSHOTGUN + REWARD_AMMO_PUMPSHOTGUN_ENTER_VEHICLE + REWARD_STAT_WEAPON + + + WHEEL_FRONT_RIGHT_CAMERA + WHEEL_FRONT_LEFT_CAMERA + WHEEL_REAR_RIGHT_CAMERA + WHEEL_REAR_LEFT_CAMERA + + + + + + + STD_POLICE3_FRONT_LEFT + STD_POLICE3_FRONT_RIGHT + STD_POLICE2_REAR_LEFT + STD_POLICE2_REAR_RIGHT + + + + + + vehicles_feroci_interior + 20sfpiufire + + + \ No newline at end of file diff --git a/resources/[EGRP-Map-Addons]/gcom_highway/stream/[Exterior]/gc_hp_exterior_txt.ytd b/resources/[EGRP-Map-Addons]/gcom_highway/stream/[Exterior]/gc_hp_exterior_txt.ytd index e1c9921be..984288f7f 100644 --- a/resources/[EGRP-Map-Addons]/gcom_highway/stream/[Exterior]/gc_hp_exterior_txt.ytd +++ b/resources/[EGRP-Map-Addons]/gcom_highway/stream/[Exterior]/gc_hp_exterior_txt.ytd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:05e71b1728ca56dca81e6769e21f1f80322df5d2f861b155ce17143b4ef8e5dc -size 6954755 +oid sha256:cb8a55759367ad80632720cf134f7788da9c819b6acb4dc651d8d2043f57b613 +size 6960532 diff --git a/resources/[EGRP-Map-Addons]/gcom_highway/stream/[Interior]/gc_hp_int_txd.ytd b/resources/[EGRP-Map-Addons]/gcom_highway/stream/[Interior]/gc_hp_int_txd.ytd index 12b8d2241..3e268055e 100644 --- a/resources/[EGRP-Map-Addons]/gcom_highway/stream/[Interior]/gc_hp_int_txd.ytd +++ b/resources/[EGRP-Map-Addons]/gcom_highway/stream/[Interior]/gc_hp_int_txd.ytd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aca84811519363eeb0f1880ef841dd56469ad52040787fa7514e43d20d0f666c -size 15533764 +oid sha256:72d7d2bbed0f0d4df0514ff1cda0e5b44f667a27196973943910101c37f826a8 +size 15516081 diff --git a/resources/[EGRP-Map-Addons]/int_sheriff_v2_dev/stream/int_sheriff1_props_txd.ytd b/resources/[EGRP-Map-Addons]/int_sheriff_v2_dev/stream/int_sheriff1_props_txd.ytd index f8bced98e..d2cfd8647 100644 --- a/resources/[EGRP-Map-Addons]/int_sheriff_v2_dev/stream/int_sheriff1_props_txd.ytd +++ b/resources/[EGRP-Map-Addons]/int_sheriff_v2_dev/stream/int_sheriff1_props_txd.ytd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:ebb8b842ae01eb74a489a9c32aace7616263bb19f03e5dcd2ea1d5cc002594ab -size 5999375 +oid sha256:53a95f2c03c8e2e5c5362409163248a2f2a0df77fbee1e205a0f429d83067dbb +size 5991462 diff --git a/resources/[EGRP-Map-Addons]/int_sheriff_v2_dev/stream/int_sheriff2_props_txd.ytd b/resources/[EGRP-Map-Addons]/int_sheriff_v2_dev/stream/int_sheriff2_props_txd.ytd index bc037c93d..bfa371489 100644 --- a/resources/[EGRP-Map-Addons]/int_sheriff_v2_dev/stream/int_sheriff2_props_txd.ytd +++ b/resources/[EGRP-Map-Addons]/int_sheriff_v2_dev/stream/int_sheriff2_props_txd.ytd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9815a5b45c43f795e2059b3695a9da7c87c72289f31ffba28263a30bdf14e950 -size 9184294 +oid sha256:4f4c4287c487d8f0408e1486c3a8fa83cb985600f864a911de0854bcaf9d1a54 +size 9257020 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/.fxap b/resources/[EGRP-Map-Addons]/lasdmlo/.fxap new file mode 100644 index 000000000..058d7dc4c Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/.fxap differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/README_gas_station_interior_fix.txt b/resources/[EGRP-Map-Addons]/lasdmlo/README_gas_station_interior_fix.txt new file mode 100644 index 000000000..1d0167ad5 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/README_gas_station_interior_fix.txt @@ -0,0 +1,13 @@ +Hi, thank you for purchasing this asset. + +This model requires a script to disable an 24/7 interior in the location, here's a simple script that does the job, but, you can use your own if you want, script link: https://github.com/RenanSeal/Disable-interior-fivem + +The model is set by default as a LSSD model, but in customizable optionals you'll find 2 props named logointerior.ydr and logoexterior.ydr, you just have to drop them on the [models]/props folder, delete shieldlogo.ydr, academydet.ydr and replace the textures on bcsolibtex.ytd, and the model will be ready to be set to any agency of your choice. + +2 other optional logos are available on the customizable_optionals folder, to use them, rename to shieldlogo and replace the one on [models]/props folder. + +In customizable optionals folder you'll also find a optional to the repair bay named "hangar.ydr" this one have no logos or lettering on the gas station covering, which will be useful in case of a customized station. + +All props and 3d have ytd files, where you can replace the textures using codewalker. + +Any questions or bug report you can contact me com my discord server: https://discord.com/invite/BeENBkyfyU diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/audio/bcsodoor_game.dat151.rel b/resources/[EGRP-Map-Addons]/lasdmlo/audio/bcsodoor_game.dat151.rel new file mode 100644 index 000000000..1ce0fd2ec Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/audio/bcsodoor_game.dat151.rel differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/audio/bcsooccl_game.dat151.rel b/resources/[EGRP-Map-Addons]/lasdmlo/audio/bcsooccl_game.dat151.rel new file mode 100644 index 000000000..30dbefb7a Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/audio/bcsooccl_game.dat151.rel differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/audio/lssdgate_game.dat151.rel b/resources/[EGRP-Map-Addons]/lasdmlo/audio/lssdgate_game.dat151.rel new file mode 100644 index 000000000..2a1dcf685 Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/audio/lssdgate_game.dat151.rel differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/3d logos/shieldlogobcso.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/3d logos/shieldlogobcso.ydr new file mode 100644 index 000000000..4422c30ed --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/3d logos/shieldlogobcso.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:910689c3c1e1b6a3ec6ae734113f3a843ec39618d40575fb5872cbbc7d532546 +size 78992 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/3d logos/shieldlogosahp.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/3d logos/shieldlogosahp.ydr new file mode 100644 index 000000000..ce065fc31 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/3d logos/shieldlogosahp.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bd087369b9ea2a57baf7f23560f4c54e76424a70eb9cf45bc46f0f83fc119172 +size 75962 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/hangar.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/hangar.ydr new file mode 100644 index 000000000..1ae25107a --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/hangar.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fcc57bb42984081b1a1f01c471cb2ca8f44e9308977c0d1784da833da1aa1f4f +size 306047 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/logoexterior.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/logoexterior.ydr new file mode 100644 index 000000000..a6b7b0f73 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/logoexterior.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bf138d6692ec5fc1ea2b667fa0da16b8ef5fcf1d1c83c9200d691a031bcde20e +size 1888 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/logointerior.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/logointerior.ydr new file mode 100644 index 000000000..0e99da467 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/customizable_optionals/logointerior.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5ee7a26fc5467f4b664b99621e9c923be00867dc57d7c980e46858b4a1df4f5 +size 1951 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/fxmanifest.lua b/resources/[EGRP-Map-Addons]/lasdmlo/fxmanifest.lua new file mode 100644 index 000000000..426faee27 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/fxmanifest.lua @@ -0,0 +1,13 @@ +fx_version 'cerulean' +games { 'gta5' } +this_is_a_map 'yes' + +files { + "audio/bcsodoor_game.dat151.rel", + "audio/bcsooccl_game.dat151.rel", + "audio/lssdgate_game.dat151.rel" +} +data_file 'AUDIO_GAMEDATA' 'audio/bcsodoor_game.dat' +data_file 'AUDIO_GAMEDATA' 'audio/bcsooccl_game.dat' +data_file 'AUDIO_GAMEDATA' 'audio/lssdgate_game.dat' +dependency '/assetpacks' \ No newline at end of file diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/4030944142.ymt b/resources/[EGRP-Map-Addons]/lasdmlo/stream/4030944142.ymt new file mode 100644 index 000000000..6b8faabc0 Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/4030944142.ymt differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/bcso_ground.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/bcso_ground.ymap new file mode 100644 index 000000000..afca1c8e1 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/bcso_ground.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db63a47b1f4cdb92042076d772261c4ce3b9f4159948342e7a087d4fb7d1147d +size 4504 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/bcsoshell.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/bcsoshell.ymap new file mode 100644 index 000000000..a8bac94c3 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/bcsoshell.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:06d50ee9feb29241c902b8d4b7e50b1c2083d1d7744e0f05bf9ceb6b4a82f991 +size 1330 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/bollard.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/bollard.ymap new file mode 100644 index 000000000..9e61bfce7 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/bollard.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5af1c68f92616e4dde34d61779a66977eabe83b13cfc4bec39c7c549d7930fc6 +size 1152 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/cs4_02_grass_1.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/cs4_02_grass_1.ymap new file mode 100644 index 000000000..cc20d096f --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/cs4_02_grass_1.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f723e729d5f47d2f96227e85bcfa442f98fdd7c1df37472a3332a9ec772876f +size 1115032 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/cs4_occl_04.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/cs4_occl_04.ymap new file mode 100644 index 000000000..6318441c5 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/cs4_occl_04.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:946174ae1fb626234ae956628f170bb254e276e07bd6db5bee323a5947491ff7 +size 12542 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/cs5_roads_long_0.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/cs5_roads_long_0.ymap new file mode 100644 index 000000000..4b73c06b7 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/cs5_roads_long_0.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3c0dd180f85ebcfb22e5a3ddaa0e355c62aa2f38cd383ff4e42573fbffcfdcd9 +size 12805 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/cs5_roads_strm_0.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/cs5_roads_strm_0.ymap new file mode 100644 index 000000000..80508fa27 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/cs5_roads_strm_0.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31a6a336423da66102854a6ce1414eec378d3c60eb3fe1b7be2cf083f48db8e9 +size 14006 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/env_misc.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/env_misc.ymap new file mode 100644 index 000000000..72f0a236c --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/env_misc.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c4f6d425406a9d5a17cbaf7737eface3943eb4e66dd9631a39248a075830c10b +size 2669 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/hangargarage.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/hangargarage.ymap new file mode 100644 index 000000000..696294a08 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/hangargarage.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:49f2a4f6341e4484fee78e2dd903b9c32481030e895dd3f097a85c8e6fd91271 +size 3423 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_02_critical_9.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_02_critical_9.ymap new file mode 100644 index 000000000..5146d20fa --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_02_critical_9.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:541f2be73782b69480a13b49ed2484b4a8ee4fd76e639ad130648c545ddeb94b +size 18150 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_02_long_4.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_02_long_4.ymap new file mode 100644 index 000000000..56bff0804 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_02_long_4.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03a903d5c47d694201144001b9174c9417ed9c7496753c4bc6fb100e53aad6ec +size 15450 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_02_strm_13.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_02_strm_13.ymap new file mode 100644 index 000000000..ffc751f28 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_02_strm_13.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b27008555f4704d95a859b8e2bb02f51fd191efff033d5aab47f9ca61dd271f +size 17927 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_02_strm_6.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_02_strm_6.ymap new file mode 100644 index 000000000..0073d3306 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_02_strm_6.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c58b5d4354a5edb847cfa02ef55a4a526abc952fd34afeaabbcfe8fe4966b04 +size 21600 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_lod.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_lod.ymap new file mode 100644 index 000000000..a3c06a037 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[basemaps]/lr_cs4_lod.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9665cfbb01db749c1c0ffe9ca160b5821d03d57fe1cc1d06117016b2bd64e440 +size 1858 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[col]/hi@lr_cs4_02_10.ybn b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[col]/hi@lr_cs4_02_10.ybn new file mode 100644 index 000000000..80a155855 Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[col]/hi@lr_cs4_02_10.ybn differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[col]/lr_cs4_02_24.ybn b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[col]/lr_cs4_02_24.ybn new file mode 100644 index 000000000..9680ead6b Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[col]/lr_cs4_02_24.ybn differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[col]/lr_cs4_02_25.ybn b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[col]/lr_cs4_02_25.ybn new file mode 100644 index 000000000..e67dbef86 Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[col]/lr_cs4_02_25.ybn differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[col]/lr_cs4_02_30.ybn b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[col]/lr_cs4_02_30.ybn new file mode 100644 index 000000000..10fa46ba1 Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[col]/lr_cs4_02_30.ybn differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/bcso_wall.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/bcso_wall.ydr new file mode 100644 index 000000000..489f0f3e7 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/bcso_wall.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d1cb1dfd0b6b73f2abdddf31c774c5913ba847f5ada81ab5cde27360b554adf2 +size 3076167 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/bcsowall.ytyp b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/bcsowall.ytyp new file mode 100644 index 000000000..e3eb4b607 Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/bcsowall.ytyp differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/cs4_02_land14.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/cs4_02_land14.ydr new file mode 100644 index 000000000..a1da98cb5 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/cs4_02_land14.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d397fd3a2301df3381cd7122f6dfc261bf3c68339405931d5e8377b56ab8cc10 +size 1479499 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/cs4_lod_02_slod2_children.ydd b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/cs4_lod_02_slod2_children.ydd new file mode 100644 index 000000000..d1abaa161 Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/cs4_lod_02_slod2_children.ydd differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/cs4_lod_02_slod3.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/cs4_lod_02_slod3.ydr new file mode 100644 index 000000000..7124d6c5c --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/cs4_lod_02_slod3.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:258fc25502d94ebcdfc646431aaebd151f056c79fd6af6a74d9069d4be79e3f7 +size 583872 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/cs4_lod_02_slod3_children.ydd b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/cs4_lod_02_slod3_children.ydd new file mode 100644 index 000000000..4ddc606ca Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/cs4_lod_02_slod3_children.ydd differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/lr_cs4_02.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/lr_cs4_02.ymap new file mode 100644 index 000000000..e7581026a --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[ground]/lr_cs4_02.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6a2a7fc850ba8748d3b5bc052bd4d49062273266270fda27d38020e5ee6c6243 +size 28277 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[lodlights]/vw_distlodlights_medium004.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[lodlights]/vw_distlodlights_medium004.ymap new file mode 100644 index 000000000..b04d604d0 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[lodlights]/vw_distlodlights_medium004.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c337fc3a7fd618a35aaaa3edea78a2f3c974c964de593c1bd7d9247d09e53ae3 +size 8898 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[lodlights]/vw_distlodlights_small005.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[lodlights]/vw_distlodlights_small005.ymap new file mode 100644 index 000000000..cec96a93f --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[lodlights]/vw_distlodlights_small005.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f83c14e21e9db49bf1cf5c496d0f9f33573450a0c20478fe65491604e91f42aa +size 5065 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[lodlights]/vw_lodlights_medium004.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[lodlights]/vw_lodlights_medium004.ymap new file mode 100644 index 000000000..b3ff74f27 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[lodlights]/vw_lodlights_medium004.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:da6010db995d502301d9c71a88498e9b4af6dd0e63c80295d4fbb1e0b3f795dd +size 10563 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[lodlights]/vw_lodlights_small005.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[lodlights]/vw_lodlights_small005.ymap new file mode 100644 index 000000000..456222931 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[lodlights]/vw_lodlights_small005.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e077cfd849759bf044f8ede96b62e1919e829e985a24b0cacdf9a660f0ce6c05 +size 5848 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/base.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/base.ydr new file mode 100644 index 000000000..b20c308e1 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/base.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:925080b7d4bff662e4083ea50dbf9a6b39323077d523c2b9cf8fc931fc675c1d +size 50869 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcso_mlo.ybn b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcso_mlo.ybn new file mode 100644 index 000000000..e27d936f8 Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcso_mlo.ybn differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcso_shell.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcso_shell.ydr new file mode 100644 index 000000000..e53fc76a9 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcso_shell.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e859d1223a9987800c88359f10dde501772e19626566ce74e9b16f67c607736 +size 579653 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcsodecals.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcsodecals.ydr new file mode 100644 index 000000000..6cf938299 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcsodecals.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d216ffb117595d0154503a13f421c54776f597704387ed4f70320c0b80befc6 +size 5596 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcsoshelf.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcsoshelf.ydr new file mode 100644 index 000000000..cba07a19c --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcsoshelf.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d7b227f18edab638de35246f059170ca3afe848c9383b1b8fffadfe910d5716 +size 4083 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcsotexlib.ytd b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcsotexlib.ytd new file mode 100644 index 000000000..e654bfe20 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcsotexlib.ytd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ee43b1d7d877f09d4d3d3578508d2d91243dc13df42f5aa8dc43f36392f1350 +size 13117431 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcsoytp.ytyp b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcsoytp.ytyp new file mode 100644 index 000000000..cc73b9be1 Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/bcsoytp.ytyp differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/blinds/blinds_lg.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/blinds/blinds_lg.ydr new file mode 100644 index 000000000..deb576254 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/blinds/blinds_lg.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b8e7831488d49d375f73963ded6436baeb573e0c088550504e5b21abe5de3f3 +size 294567 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/blinds/blinds_med.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/blinds/blinds_med.ydr new file mode 100644 index 000000000..bd8dd551f --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/blinds/blinds_med.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:beb13b077c32d9187418a0b1ffcb8b5d358d4df45d0de84432a99d278035f310 +size 268970 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/blinds/blinds_sm.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/blinds/blinds_sm.ydr new file mode 100644 index 000000000..e474b17b2 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/blinds/blinds_sm.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f0f5cc37d3488f998cddbb44a35a4a40247e2312db27b4e7a8d3d9f8966abe1 +size 267948 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/blinds/blindsytp.ytyp b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/blinds/blindsytp.ytyp new file mode 100644 index 000000000..05c8b174d Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/blinds/blindsytp.ytyp differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/ceillight/ceillight_blue.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/ceillight/ceillight_blue.ydr new file mode 100644 index 000000000..b32c570cf --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/ceillight/ceillight_blue.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:369cd28a2b2928ef10ed53fe47452f6a34d66f9024fdcfa17cfc2cd994ecea47 +size 39981 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/ceillight/ceillight_white.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/ceillight/ceillight_white.ydr new file mode 100644 index 000000000..65f499cca --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/ceillight/ceillight_white.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2779dd7a3908709a2071fe2807f00025514ac5d2dd8f08e4496e0b19e7764edc +size 39674 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/ceillight/lampceillssd.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/ceillight/lampceillssd.ydr new file mode 100644 index 000000000..4a457eb5f --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/ceillight/lampceillssd.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cd6e91dc25724289fc4936c804d84b8e36bfd76ba3e75d3807ba8e7e57b6aed6 +size 227745 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/ceillight/lampceillssd.ytd b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/ceillight/lampceillssd.ytd new file mode 100644 index 000000000..1ced5e962 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/ceillight/lampceillssd.ytd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2b11ff0ed603e6464333fbcd85570241c887eb66a8131087ee0645bf4cc5a9a6 +size 21941 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/exteriorshell.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/exteriorshell.ydr new file mode 100644 index 000000000..ff632b410 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/exteriorshell.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:546df778936543a2ca978647b9a81b42cfe312a7f192d1211a93e0995332bd01 +size 797952 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/exteriorshell_col.ybn b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/exteriorshell_col.ybn new file mode 100644 index 000000000..6207b7819 Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/exteriorshell_col.ybn differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/gatedoor/lssdgatedoor.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/gatedoor/lssdgatedoor.ydr new file mode 100644 index 000000000..abcc522e9 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/gatedoor/lssdgatedoor.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9ceb3e4930f05c70de89f69c4d6d0311205cb88bc8a2ce15a497ca8f7cf284c +size 371864 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/guns/carbine.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/guns/carbine.ydr new file mode 100644 index 000000000..f8a4503cc --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/guns/carbine.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:176466fab934c081890caffb7aaa61d1f56ff9c29e98b83a9262192e389c4a41 +size 116976 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/guns/gunslib.ytd b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/guns/gunslib.ytd new file mode 100644 index 000000000..1f0f30e82 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/guns/gunslib.ytd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:10e261e25a3b8da5d021d58a8ce91472a93c5b20d0a1131d7ec50b40c3d1d9b7 +size 5775530 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/guns/precrifle.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/guns/precrifle.ydr new file mode 100644 index 000000000..9f2fb7f86 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/guns/precrifle.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aac950c5e0b48c1f0820e3f3da0916f1cad4cabd374ea4df607b3b11f36158bb +size 446170 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/guns/sniperrifle.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/guns/sniperrifle.ydr new file mode 100644 index 000000000..281a57733 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/guns/sniperrifle.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:89e18a9582d3ec1b3b68d8bbbb93491c86a49f8672e1e227f4da97c743e88e13 +size 118026 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/hangar.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/hangar.ydr new file mode 100644 index 000000000..d799f639a --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/hangar.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6d1121449778e9525be48aafe38d8c0231c42d1b7e6f589a542dfa645ea9008e +size 378660 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/helipad/helipadtype.ytyp b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/helipad/helipadtype.ytyp new file mode 100644 index 000000000..4a4aa910a Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/helipad/helipadtype.ytyp differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/helipad/hpad.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/helipad/hpad.ydr new file mode 100644 index 000000000..eb905a0ab --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/helipad/hpad.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9ccd822b5d32f1abd4a3761ccd9fbf44e43336a545cce73f61d1dbfca1eb323d +size 209349 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/lightpanel/lightpanellssd.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/lightpanel/lightpanellssd.ydr new file mode 100644 index 000000000..c8c2abb2c --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/lightpanel/lightpanellssd.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0e2338d6a967737f41cd7d49a5ffcc084ba4e144d5154df82cf2109eae5c3bf4 +size 29324 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/lightpanel/lightpanellssd.ytd b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/lightpanel/lightpanellssd.ytd new file mode 100644 index 000000000..3185b0a90 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/lightpanel/lightpanellssd.ytd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4276f20449cfdf7976bd15715b8c0402fb0c50ffa419b21b4e08205c2f3e3d2 +size 20230 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/academydet.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/academydet.ydr new file mode 100644 index 000000000..48f4a6681 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/academydet.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2abf220b5c0c5641a7ac1e46a3b032a54de3e954ef380111fce68cf99347689e +size 539709 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/aircon.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/aircon.ydr new file mode 100644 index 000000000..9a376e6b5 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/aircon.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5df456c2f95553b3fb78a1c68a38e5c09ea04b27ed835b4ee7bd6b982903aed +size 98259 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/autoshplght.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/autoshplght.ydr new file mode 100644 index 000000000..46f9f9b9e --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/autoshplght.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ff33bd9b0d4e4eb92b85450236476eb1b23e28c751c38c1dee02625725de9391 +size 786361 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/autoshplht.ytd b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/autoshplht.ytd new file mode 100644 index 000000000..af8a7a2d7 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/autoshplht.ytd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dde3be1ede03e463b068b2b2381d9be065d443ee28609318b32f2900caf5da22 +size 18492 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_door.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_door.ydr new file mode 100644 index 000000000..f2dbe7a23 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_door.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5021cc54c1bc059959a69cbaa2cc0c102d5372bd00048e99576e1d21b1cef437 +size 11545 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_door.ytd b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_door.ytd new file mode 100644 index 000000000..09435c525 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_door.ytd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e39753fd9c0ea3e4afa4c8082490a3c846cc5ff4f54306df49b976917c8888f +size 78734 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_mirror1.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_mirror1.ydr new file mode 100644 index 000000000..695ead9a7 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_mirror1.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a2268f0f85b2fa7e0b131ed015528d10dfd1e23a7718b32623a1bb3cfec321e +size 1317 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_mirror2.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_mirror2.ydr new file mode 100644 index 000000000..7e54c2267 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_mirror2.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b72bc494cd4a3bf8cdb073fbbe51b840464b6d8967b166340e15b6d629882afe +size 1319 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_sink.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_sink.ydr new file mode 100644 index 000000000..a4bc9d2d3 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcso_sink.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:02ed50e1b04076ba3b81e3928d4fb4cf9a342fbb0680afbdb0b13c5ef3dfc57f +size 1872754 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcsobath_mirror.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcsobath_mirror.ydr new file mode 100644 index 000000000..4ecae2940 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcsobath_mirror.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22576c3e7994aaad2218a6f278619c540aba053d2598db38d67c7e3b57ba25b5 +size 56490 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcstatue.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcstatue.ydr new file mode 100644 index 000000000..8c7a43b48 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcstatue.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc596c0d0a91865c1fe12f61612e111494a7988ecc0a22724e0678b244690ce8 +size 244552 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcstatue.ytd b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcstatue.ytd new file mode 100644 index 000000000..fd667bfb7 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bcstatue.ytd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4e7b812f3ae360e7eee42c16736eb213be5ec665503743723c6f3e814428152 +size 96359 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/blinds.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/blinds.ydr new file mode 100644 index 000000000..b0eb350ed --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/blinds.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96ad6f2a10c3a079e5b1b97928f53c51df7b00328c306b6b9023634a7a94f324 +size 558095 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bluelineflag.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bluelineflag.ydr new file mode 100644 index 000000000..123b6c570 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/bluelineflag.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4ce9d5dceb8eb184afb8cedc87801051f03cb6af4499638560ea706bb07653d0 +size 819471 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/ceilfan.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/ceilfan.ydr new file mode 100644 index 000000000..5a517089b --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/ceilfan.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:480d10c4b0bc65d58af0ef3efbcc168d945e14b901916f42b26294866b10edf1 +size 455054 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/ceilfan.ytyp b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/ceilfan.ytyp new file mode 100644 index 000000000..e305a5eaa Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/ceilfan.ytyp differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/ceilfantex.ytd b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/ceilfantex.ytd new file mode 100644 index 000000000..76de6dbbf --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/ceilfantex.ytd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67bbafc31d60c79fcc28c9d2057636cbaed0cde39aad7383217b44db11eb1d7d +size 27487 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/cells.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/cells.ydr new file mode 100644 index 000000000..f781635b8 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/cells.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6afb2906b2ff1c35921e1c481efce57f0d7bc6009408fa59c0b00d626fb2b2e7 +size 559568 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/clip@ceilfan_blades.ycd b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/clip@ceilfan_blades.ycd new file mode 100644 index 000000000..5704d9112 Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/clip@ceilfan_blades.ycd differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/file_tort.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/file_tort.ydr new file mode 100644 index 000000000..3f0a971ec --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/file_tort.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:74976f1568a62a5868be359842ea66b2953ace3265b394e11c9c64c510f13fa2 +size 580300 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/hei_heist_toilet02.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/hei_heist_toilet02.ydr new file mode 100644 index 000000000..233404d51 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/hei_heist_toilet02.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a364c6e17c6c614b1e751cbbf4e24afcf4572465e6a4d4ed20b0ff4222f80521 +size 22542 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/kitch_cabinet.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/kitch_cabinet.ydr new file mode 100644 index 000000000..8a4c4811a --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/kitch_cabinet.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0205646827979d2eb0c53d0109f527486667135f724892eec0afd7e23ffe20f2 +size 727565 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/lobbyshelves.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/lobbyshelves.ydr new file mode 100644 index 000000000..ff55fecaa --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/lobbyshelves.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b4d0ae7e3957846cf9ae1ada626c3f74b80ad88f1e2d157b1194a8dcee7abcd4 +size 386918 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/mugshottable2.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/mugshottable2.ydr new file mode 100644 index 000000000..ed1f73cd7 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/mugshottable2.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f07c79782775770d45fc4962371a8c37e0b68570cfdadd73929a59cfc54bcb57 +size 2200924 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/painting1.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/painting1.ydr new file mode 100644 index 000000000..8b05724fc --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/painting1.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f95477c0a82b1b030943a657859add972f06d9a41b8fa799ca613d46c130f876 +size 4940 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/partitiondraw.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/partitiondraw.ydr new file mode 100644 index 000000000..05b792592 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/partitiondraw.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db4dfc9620eaf209ada6e0e6d6a1e44518f51311f71773a747399e4ffeb9db7b +size 1775100 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/pipes.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/pipes.ydr new file mode 100644 index 000000000..e0b9237a4 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/pipes.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4dfb2ecf515fa7f6081a2d2187789e5793f8ab768b3821f1a3b6ef171171af84 +size 700722 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/podium.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/podium.ydr new file mode 100644 index 000000000..151db8bb0 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/podium.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d07532f13e8b51d819ca6e05f99c87fff11d064ffab131950724b16d8161c502 +size 20033 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/prisbed.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/prisbed.ydr new file mode 100644 index 000000000..224e961da --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/prisbed.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:99316428eeb6cd13b78773c9899b4d849b26cfeaf0a780b6bdbcef344becb15d +size 215990 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/roundlight.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/roundlight.ydr new file mode 100644 index 000000000..07017362d --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/roundlight.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d531d93f28e0da440bf4732f1229b497c33932f3a70e8cc59b70d7565504dcc1 +size 241451 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/shieldlogo.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/shieldlogo.ydr new file mode 100644 index 000000000..c827b7ee6 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/shieldlogo.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bebacf464b61c1460335edfe5d8a6525eea118dff6bed9447aff1ea4f352d18d +size 103775 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/shieldsytd.ytd b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/shieldsytd.ytd new file mode 100644 index 000000000..77336ad8c --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/shieldsytd.ytd @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:168e575c2c3737be9608d988129e0ca4a63132456378ba75ca3ae49d8a46c27c +size 323980 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/text.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/text.ydr new file mode 100644 index 000000000..45762cc45 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/text.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d1fc8715aca74ff458b0d701c86d0791435e827f69ffaec790e4ec69e12abbb +size 67627 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/urinaldraw.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/urinaldraw.ydr new file mode 100644 index 000000000..13cbb8a33 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/urinaldraw.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:07d4026b2bb5ab9b5c27af21f792e2672797ba266e87b4bb558764f956435b91 +size 679798 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/whitedesk.ydr b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/whitedesk.ydr new file mode 100644 index 000000000..6c5171664 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[models]/props/whitedesk.ydr @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a67b62dc8b4d14af1c9f2aba924e3f1bbefe46fe0b7241c2ac3ee351c7223760 +size 653221 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/[occl]/cs4_occl_04.ymap b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[occl]/cs4_occl_04.ymap new file mode 100644 index 000000000..1c9181207 --- /dev/null +++ b/resources/[EGRP-Map-Addons]/lasdmlo/stream/[occl]/cs4_occl_04.ymap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3a566b1daa623daebc9fca848b9c13a6694353508c522b4a699c75ea57eaa45b +size 12541 diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/_manifest.ymf b/resources/[EGRP-Map-Addons]/lasdmlo/stream/_manifest.ymf new file mode 100644 index 000000000..cec1ad101 Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/_manifest.ymf differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/_manifest2.ymf b/resources/[EGRP-Map-Addons]/lasdmlo/stream/_manifest2.ymf new file mode 100644 index 000000000..dd7a91988 Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/_manifest2.ymf differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/_manifest3.ymf b/resources/[EGRP-Map-Addons]/lasdmlo/stream/_manifest3.ymf new file mode 100644 index 000000000..8fdb3c1c5 Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/_manifest3.ymf differ diff --git a/resources/[EGRP-Map-Addons]/lasdmlo/stream/_manifest4.ymf b/resources/[EGRP-Map-Addons]/lasdmlo/stream/_manifest4.ymf new file mode 100644 index 000000000..3431e15ee Binary files /dev/null and b/resources/[EGRP-Map-Addons]/lasdmlo/stream/_manifest4.ymf differ diff --git a/resources/[EGRP-Map-Addons]/western_sandy_sheriff/stream/western_sheriff_props.ytd b/resources/[EGRP-Map-Addons]/western_sandy_sheriff/stream/western_sheriff_props.ytd index 820d63d6a..668515d0a 100644 --- a/resources/[EGRP-Map-Addons]/western_sandy_sheriff/stream/western_sheriff_props.ytd +++ b/resources/[EGRP-Map-Addons]/western_sandy_sheriff/stream/western_sheriff_props.ytd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d7131671d2f8af02569d8e4b6e8d7c0d20ac36c0fab2e841ab076ec3902fd40f -size 1705640 +oid sha256:8ce116e2c3421e2b101d04cb4a315927fb27f752cce7535a2892393226731547 +size 1851888 diff --git a/resources/[EGRP-Map-Addons]/western_sandy_sheriff/stream/western_sheriff_textures.ytd b/resources/[EGRP-Map-Addons]/western_sandy_sheriff/stream/western_sheriff_textures.ytd index 84b026435..b6f4b0abb 100644 --- a/resources/[EGRP-Map-Addons]/western_sandy_sheriff/stream/western_sheriff_textures.ytd +++ b/resources/[EGRP-Map-Addons]/western_sandy_sheriff/stream/western_sheriff_textures.ytd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:04f9b81800ddac5a1491207ab71171c590c7ffc2036bf6563220bebb279f3e65 -size 7974328 +oid sha256:0fe4bd95c5d2a4dbf3b66c8af74a6e2f2734345664a232ea4efe34e59e0e0d9f +size 7986120 diff --git a/resources/dashcam/nui/script.js b/resources/dashcam/nui/script.js index 1532dc44d..0cab05c03 100644 --- a/resources/dashcam/nui/script.js +++ b/resources/dashcam/nui/script.js @@ -12,7 +12,7 @@ const Dashcam = new Vue({ unitSpeedType: "MPH", dashMessageOne: "This vehicle is licensed to the", - dashLabel: "State of Georgia", + dashLabel: "State of California Law", dashMessageTwo: "Any unauthorized use is subject to criminal charges." }, diff --git a/resources/disable_interior/client.lua b/resources/disable_interior/client.lua new file mode 100644 index 000000000..42a2c7840 --- /dev/null +++ b/resources/disable_interior/client.lua @@ -0,0 +1,5 @@ +CreateThread(function() + local oldinterior = GetInteriorAtCoordsWithType(2678.0,3286.0,55.2, 'v_shop_247') + DisableInterior(oldinterior, true) + UnpinInterior(oldinterior) +end) \ No newline at end of file diff --git a/resources/disable_interior/fxmanifest.lua b/resources/disable_interior/fxmanifest.lua new file mode 100644 index 000000000..10517804e --- /dev/null +++ b/resources/disable_interior/fxmanifest.lua @@ -0,0 +1,6 @@ +fx_version 'cerulean' +games { 'gta5' } + +client_scripts { + 'client.lua', +} \ No newline at end of file diff --git a/resources/gcom_chhp_standalone/stream/gc_chhp_exterior.ytd b/resources/gcom_chhp_standalone/stream/gc_chhp_exterior.ytd index bb28da307..0cbb0bfcb 100644 --- a/resources/gcom_chhp_standalone/stream/gc_chhp_exterior.ytd +++ b/resources/gcom_chhp_standalone/stream/gc_chhp_exterior.ytd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5bdd66cdd948e17e95203aa94b81d9434b8f6703c15239ab7cda8029cb73eef2 -size 7599986 +oid sha256:925806edcce08d68aef39ac818af867679c10382a75939ea0bf5fe55d9c5759c +size 7604337 diff --git a/resources/gcom_chhp_standalone/stream/gc_hp_int_txd.ytd b/resources/gcom_chhp_standalone/stream/gc_hp_int_txd.ytd index 12b8d2241..28abbfabb 100644 --- a/resources/gcom_chhp_standalone/stream/gc_hp_int_txd.ytd +++ b/resources/gcom_chhp_standalone/stream/gc_hp_int_txd.ytd @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aca84811519363eeb0f1880ef841dd56469ad52040787fa7514e43d20d0f666c -size 15533764 +oid sha256:272e246deff441b9926fc749fa958b89fee90129a67031d52f6b15bc25db982b +size 15514070 diff --git a/resources/night_ers_k9/.fxap b/resources/night_ers_k9/.fxap new file mode 100644 index 000000000..7262b1378 Binary files /dev/null and b/resources/night_ers_k9/.fxap differ diff --git a/resources/night_ers_k9/NUI/main.js b/resources/night_ers_k9/NUI/main.js new file mode 100644 index 000000000..c42f70058 --- /dev/null +++ b/resources/night_ers_k9/NUI/main.js @@ -0,0 +1,77 @@ +let crosshairElement=null,translations=null,hotkeys=null;function togglePedControlsVisibility(s){let t=document.getElementById("ped-controls");if(t)(isPedControlsVisible=void 0===s?!isPedControlsVisible:s)?(t.classList.remove("animate-fade-out"),t.classList.add("animate-fade-in"),t.style.display="block"):(t.classList.remove("animate-fade-in"),t.classList.add("animate-fade-out"),setTimeout(()=>{t.style.display="none"},250));else{let e=document.createElement("div");e.id="ped-controls",e.classList.add("fixed","bottom-16","right-16","z-10","inline-block","text-white","bg-gray-900","bg-opacity-50","border","border-gray-700","rounded-lg","shadow-lg","w-[600px]","transition-all","duration-300","opacity-100"),e.innerHTML=` +
+
+ +
+
+ +
+
+

${translations.K9ControlsTitlePed}

+

${translations.AvailableHotkeysAndControls}

+
+
+ + +
+

${translations.K9ControlsSubtitle}

+
+
+ + ${hotkeys.K9Attack.inputKeyLabel} + ${translations.K9Attack} +
+
+ + ${hotkeys.K9Search.inputKeyLabel} + ${translations.K9Search} +
+
+ + ${hotkeys.K9Taunt.inputKeyLabel} + ${translations.K9Taunt} +
+
+ + ${hotkeys.Cancel.inputKeyLabel} + ${translations.Cancel} +
+
+
+
+
+
+ `,document.body.appendChild(e),togglePedControlsVisibility(s)}}function toggleVehicleControlsVisibility(s){let t=document.getElementById("vehicle-controls");if(t)(isVehicleControlsVisible=void 0===s?!isVehicleControlsVisible:s)?(t.classList.remove("animate-fade-out"),t.classList.add("animate-fade-in"),t.style.display="block"):(t.classList.remove("animate-fade-in"),t.classList.add("animate-fade-out"),setTimeout(()=>{t.style.display="none"},250));else{let e=document.createElement("div");e.id="vehicle-controls",e.classList.add("fixed","bottom-16","right-16","z-10","inline-block","text-white","bg-gray-900","bg-opacity-50","border","border-gray-700","rounded-lg","shadow-lg","w-[600px]","transition-all","duration-300","opacity-100"),e.innerHTML=` +
+
+ +
+
+ +
+
+

${translations.K9ControlsTitleVehicle}

+

${translations.AvailableHotkeysAndControls}

+
+
+ + +
+

${translations.K9ControlsSubtitle}

+
+
+ + ${hotkeys.K9Search.inputKeyLabel} + ${translations.K9Search} +
+
+ + ${hotkeys.Cancel.inputKeyLabel} + ${translations.Cancel} +
+
+
+
+
+
+ `,document.body.appendChild(e),toggleVehicleControlsVisibility(s)}}window.addEventListener("message",s=>{let t=s.data;if("setTranslations"==t.action&&(translations=t.translations),"setHotkeys"==t.action&&(hotkeys=t.hotkeys),"drawCrosshair"==t.action){let e=t.display;if(!crosshairElement&&!(crosshairElement=document.getElementById("crosshair"))){console.log("Crosshair element not found!");return}crosshairElement.style.display=e?"block":"none"}"ped-controls"==t.action&&togglePedControlsVisibility(t.display),"vehicle-controls"==t.action&&toggleVehicleControlsVisibility(t.display)}); \ No newline at end of file diff --git a/resources/night_ers_k9/NUI/sounds/notification_error.ogg b/resources/night_ers_k9/NUI/sounds/notification_error.ogg new file mode 100644 index 000000000..632e5d339 Binary files /dev/null and b/resources/night_ers_k9/NUI/sounds/notification_error.ogg differ diff --git a/resources/night_ers_k9/NUI/sounds/notification_success.ogg b/resources/night_ers_k9/NUI/sounds/notification_success.ogg new file mode 100644 index 000000000..853a65192 Binary files /dev/null and b/resources/night_ers_k9/NUI/sounds/notification_success.ogg differ diff --git a/resources/night_ers_k9/NUI/sounds/notification_warning.ogg b/resources/night_ers_k9/NUI/sounds/notification_warning.ogg new file mode 100644 index 000000000..0b64a8a75 Binary files /dev/null and b/resources/night_ers_k9/NUI/sounds/notification_warning.ogg differ diff --git a/resources/night_ers_k9/NUI/styles.css b/resources/night_ers_k9/NUI/styles.css new file mode 100644 index 000000000..37439ca87 --- /dev/null +++ b/resources/night_ers_k9/NUI/styles.css @@ -0,0 +1,90 @@ +.crosshair { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + pointer-events: none; + color: rgba(255, 0, 0, 0.75); + font-size: 24px; + text-shadow: 0 0 2px rgba(0, 0, 0, 0.3); + display: flex; + flex-direction: column; + align-items: center; +} + +.crosshair::before, +.crosshair::after, +.crosshair .center { + display: none; +} + +@keyframes float { + 0% { + transform: rotate(0deg); + text-shadow: 0 0 5px rgba(255, 0, 0, 0.2); + opacity: 0.75; + } + 50% { + text-shadow: 0 0 20px rgba(255, 0, 0, 0.8); + opacity: 1; + } + 100% { + transform: rotate(360deg); + text-shadow: 0 0 5px rgba(255, 0, 0, 0.2); + opacity: 0.75; + } +} + +.crosshair i { + animation: float 5s infinite linear; + display: block; + position: relative; + transform-origin: center center; + width: 24px; /* Match the font-size (line 8)!! */ + height: 24px; + display: flex; + align-items: center; + justify-content: center; +} + +.k9-title { + color: rgba(255, 0, 0, 0.85); + font-size: 18px; + font-weight: bold; + text-transform: uppercase; + text-shadow: 0 0 5px rgba(255, 0, 0, 0.4); + animation: titlePulse 3s infinite linear; + white-space: nowrap; +} + +/* Action Mode Controls Animations */ + +@keyframes fadeInScale { + from { + opacity: 0; + transform: translateY(10px) scale(0.95); + } + to { + opacity: 1; + transform: translateY(0) scale(1); + } +} + +@keyframes fadeOutScale { + from { + opacity: 1; + transform: translateY(0) scale(1); + } + to { + opacity: 0; + transform: translateY(10px) scale(0.95); + } +} + +.animate-fade-in { + animation: fadeInScale 0.25s ease-out forwards; +} + +.animate-fade-out { + animation: fadeOutScale 0.25s ease-out forwards; +} \ No newline at end of file diff --git a/resources/night_ers_k9/README.md b/resources/night_ers_k9/README.md new file mode 100644 index 000000000..45c0a7f34 --- /dev/null +++ b/resources/night_ers_k9/README.md @@ -0,0 +1,2 @@ +# night_ers_k9 +K9 Script with ERS compatibility diff --git a/resources/night_ers_k9/client/c_functions.lua b/resources/night_ers_k9/client/c_functions.lua new file mode 100644 index 000000000..f0fcdade9 --- /dev/null +++ b/resources/night_ers_k9/client/c_functions.lua @@ -0,0 +1,62 @@ +QBCore = nil +ESX = nil + +Citizen.CreateThread(function() + if Config.Enable_QBCore_Permissions.Check_By_Job or Config.Enable_QBCore_Permissions.Check_By_Permissions then + QBCore = exports["qb-core"]:GetCoreObject() + end + + if Config.Enable_ESX_Permissions.Check_By_Job or Config.Enable_ESX_Permissions.Check_By_Permissions then + ESX = exports["es_extended"]:getSharedObject() + end +end) + +function message(lineOne, lineTwo, lineThree, duration) + BeginTextCommandDisplayHelp("THREESTRINGS") + AddTextComponentSubstringPlayerName(lineOne) + AddTextComponentSubstringPlayerName(lineTwo or "") + AddTextComponentSubstringPlayerName(lineThree or "") + EndTextCommandDisplayHelp(0, false, true, duration or 5000) +end + +RegisterNetEvent(Config.EventPrefix..":notify") +AddEventHandler(Config.EventPrefix..":notify", function(notificationText) + notify(notificationText) +end) + +function notify(notificationText) + SetNotificationTextEntry("STRING") + AddTextComponentString(notificationText) + DrawNotification(true, true) +end + +function Draw3DText(x,y,z,text,scl) + local onScreen,_x,_y=World3dToScreen2d(x,y,z) + local px,py,pz=table.unpack(GetGameplayCamCoords()) + local dist = GetDistanceBetweenCoords(px,py,pz, x,y,z, 1) + local scale = (1/dist)*scl + local fov = (1/GetGameplayCamFov())*100 + local scale = scale*fov + if onScreen then + SetTextScale(0.0*scale, 1.1*scale) + SetTextFont(0) + SetTextProportional(1) + SetTextColour(255, 255, 255, 255) + SetTextDropshadow(0, 0, 0, 0, 255) + SetTextEdge(2, 0, 0, 0, 150) + SetTextDropShadow() + --SetTextOutline() + SetTextEntry("STRING") + SetTextCentre(1) + AddTextComponentString("~h~"..text) + DrawText(_x,_y) + end +end + +function firstToUpper(str) + return (str:gsub("^%l", string.upper)) +end + +function allToUpper(str) + return (string.upper(str)) +end \ No newline at end of file diff --git a/resources/night_ers_k9/client/client.lua b/resources/night_ers_k9/client/client.lua new file mode 100644 index 000000000..f3c11ffbf Binary files /dev/null and b/resources/night_ers_k9/client/client.lua differ diff --git a/resources/night_ers_k9/client/client_k9handler.lua b/resources/night_ers_k9/client/client_k9handler.lua new file mode 100644 index 000000000..6044f7c0d Binary files /dev/null and b/resources/night_ers_k9/client/client_k9handler.lua differ diff --git a/resources/night_ers_k9/config/config.lua b/resources/night_ers_k9/config/config.lua new file mode 100644 index 000000000..248ff955a --- /dev/null +++ b/resources/night_ers_k9/config/config.lua @@ -0,0 +1,253 @@ +Config = { + + ConfigVersion = "1.0.0", + + --====================== DEVELOPER SETTINGS ======================-- + + Debug = false, -- Enable or disable debug. + EventPrefix = "night_ers_k9", -- Leave this be. + + --====================== PERMISSIONS FOR SHIFT ACCESS (on/off shift) ======================-- + + EveryoneHasPermission = true, + + Enable_Night_DiscordApi_Permissions = false, -- server/s_functions.lua + Enable_Ace_Permissions = false, -- server/s_functions.lua + Enable_ESX_Permissions = { + Check_By_Job = false, -- server/s_functions.lua + Check_By_Permissions = false, -- server/s_functions.lua + }, + Enable_QBCore_Permissions = { + Check_By_Job = false, -- server/s_functions.lua + Check_By_Permissions = false, -- server/s_functions.lua + }, + + -- The role or group that has permission to work with a K9 dog. + K9HandlerPermissionRoles = { + "Manager", + "Administrator", + "police", + }, + + --====================== GENERAL SETTINGS ======================-- + + AddChatSuggestions = true, -- Adds chat suggestions to the script commands. + DistanceToKeepFromPlayer = 1.0, -- The distance the K9 dog will keep from their handler. + ChanceToSurrenderToDogs = 50, -- Applies a 50% chance to make the NPC target surrender when being attacked by a K9 dog. + AllowRevivingInjuredK9 = true, -- Allows the dog handler to revive their own injured K9 dog. + AllowK9InFrontSeat = false, -- Allows the K9 dog to be in the front passenger seat of a vehicle. + AllowCarryK9 = true, -- Allows the dog handler to carry the dog. + AllowK9ToKillNPCs = false, -- Allows the K9 dog to kill NPCs, setting it false will replicate the attack, but not damage the NPC. They will still be able to kill players. + AllowK9ToAttackPlayers = true, -- Allows the K9 dog to attack players, if set to false the dog will decline attacks on players. + + --====================== K9 DOG HANDLER VEHICLES ======================-- + + K9Vehicles = { + -- Base game vehicle example + {hash = `policet`, spawnOffset = vector3(0.0 --[[Right/-Left]], -4.0 --[[Front/-Rear]], 0.5 --[[Up/-Down]]), dogModelName = "a_c_shepherd"}, + + -- Custom vehicle example + {hash = `forddsumo7`, spawnOffset = vector3(0.0, -4.0, 0.5), dogModelName = "a_c_shepherd"}, + + -- More examples + -- {hash = `police`, spawnOffset = vector3(0.0, -3.0, 0.5), dogModelName = "a_c_husky"}, + -- {hash = `police2`, spawnOffset = vector3(0.0, -3.0, 0.5), dogModelName = "a_c_husky"}, + -- {hash = `police3`, spawnOffset = vector3(0.0, -3.0, 0.5), dogModelName = "a_c_husky"}, + }, + + --====================== CONTROLS, COMMANDS, KEYMAPPING ======================-- + -- https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/ + + Controls = { + -- Hint: These can be changed by individual players. So each client has control over which keys these use for what commands. + SpawnOrDeleteK9 = { + input = "keyboard", + command = "k9spawnordelete", + label = "Spawn or Delete K9 Dog", + chatsuggestion = "Spawns or deletes a K9 Dog when near a suitable dog handler vehicle.", + keymapping = "NUMPAD0", -- NUMPAD0 + }, + K9Follow = { + input = "keyboard", + command = "k9follow", + label = "K9 Follow", + chatsuggestion = "Orders your own K9 Dog to follow you.", + keymapping = "NUMPAD1", -- NUMPAD1 + }, + K9Idle = { + input = "keyboard", + command = "k9idle", + label = "K9 Idle", + chatsuggestion = "Orders your own K9 Dog to idle at it's current position.", + keymapping = "NUMPAD2", -- NUMPAD1 + }, + K9Alert = { + input = "keyboard", + command = "k9alert", + label = "K9 Alert", + chatsuggestion = "Orders your own K9 Dog to alert by barking.", + keymapping = "NUMPAD3", -- NUMPAD3 + }, + K9Pet = { + input = "keyboard", + command = "k9pet", + label = "K9 Pet", + chatsuggestion = "Attempt to pet your own nearby K9 Dog.", + keymapping = "NUMPAD4", -- NUMPAD4 + }, + K9Carry = { + input = "keyboard", + command = "k9carry", + label = "K9 Carry", + chatsuggestion = "Carry your own K9 Dog.", + keymapping = "NUMPAD5", -- NUMPAD5 + }, + K9ReleaseLastTarget = { -- This releases the last target manually (assigned via K9 attack/search/taunt), so they get cleaned up by the GTA engine when it finds it suitable. + input = "keyboard", + command = "k9release", + label = "K9 Release", + chatsuggestion = "Release the last target the K9 Dog was interacting with.", + keymapping = "NUMPAD6", -- NUMPAD6 + }, + + -- Actions: Attack, Search (ped/veh), Taunt. + K9SelectActionMode = { + input = "keyboard", + command = "k9selectactionmode", + label = "K9 Select Action Mode", + chatsuggestion = "Selects the action mode for the K9 Dog on the highlighted target (Attack, Search, Taunt).", + keymapping = "LMENU", -- Left ALT + } + }, + + --====================== HOTKEYS ======================-- + -- https://docs.fivem.net/docs/game-references/controls/ + + -- Hint: These can not be changed by individual players, only via this config file. + HotKeys = { + K9Revive = { + inputKeyId = 38, -- E + inputKeyName = "~INPUT_CONTEXT~", + inputKeyLabel = "E" + }, + K9Attack = { + inputKeyId = 38, -- E + inputKeyName = "~INPUT_CONTEXT~", + inputKeyLabel = "E" + }, + K9Search = { + inputKeyId = 74, -- H + inputKeyName = "~INPUT_VEH_HEADLIGHT~", + inputKeyLabel = "H" + }, + K9Taunt = { + inputKeyId = 182, -- L + inputKeyName = "~INPUT_CELLPHONE_CAMERA_FOCUS_LOCK~", + inputKeyLabel = "L" + }, + Cancel = { + inputKeyId = 202, -- ESC/BACKSPACE + inputKeyName = "~INPUT_FRONTEND_RRIGHT~", + inputKeyLabel = "BACKSPACE" + }, + }, + + --====================== K9 Dog Settings ======================-- + + K9BlipData = { + Enabled = true, + BlipName = "Canine (K9)", + BlipSpriteID = 898, + BlipDisplay = 2, + BlipCone = true, + BlipScale = 0.5, + BlipColourID = 10, + }, + + --====================== K9 Dog Target Marker Settings ======================-- + + MarkerHeight = 2.0, + TargetMarkerData = { + MarkerId = 21, + dirX = 0, dirY = 0, dirZ = 0, + rotX = 0, rotY = 180.0, rotZ = 0, + scaleX = 1.0, scaleY = 1.0, scaleZ = 1.0, + red = 255, green = 0, blue = 0, alpha = 125, + bobUpAndDown = false, faceCamera = true, + p19 = 0, rotate = false, + textureDict = 0, textureName = 0, + drawOnEnts = 0 + }, + + --====================== LOCALES / LANGUAGE ======================-- + + Messages = { + Usage = "Usage", + Spawn = "Spawn", + K9Dog = "K9 Dog", + + SpawnK9Dog = "Take out K9 dog from the vehicle", + DeleteK9Dog = "Put K9 dog in the vehicle", + K9Spawned = "Successfully summoned K9 dog.", + K9Deleted = "Successfully dismissed K9 dog.", + K9Injured = "Your K9 dog is injured. You have 10 seconds to revive them.", + K9PassedAway = "Your K9 dog has passed away. Please summon a new one.", + AlreadyHaveK9 = "You already have a K9 dog assigned to you...", + AssignedK9 = "Successfully assigned K9 dog to you.", + K9TooFarAway = "Your K9 dog is too far away from you. They have been tasked to return to you.", + + ToSendTheDogToAttack = "K9 Attack", + ToSearchTarget = "K9 Search", + ToSendDogToTaunt = "K9 Taunt", + ToCancel = "Cancel", + ToReviveK9 = "Revive K9", + K9Revived = "Successfully revived your K9 dog.", + + OrderedToIdle = "You've ordered the K9 dog to idle.", + AlreadyIdling = "Your K9 dog is already idling...", + OrderedToFollow = "You've ordered the K9 dog to follow you.", + AlreadyFollowing = "Your K9 dog is already following you...", + EnteredAttackMode = "You've entered attack mode. Press E to attack a highlighted target.", + OrderToAttackTarget = "You've ordered the K9 dog to attack a target.", + OrderedToSearch = "You've ordered the K9 dog to search the target.", + OrderedToTaunt = "You've ordered the K9 dog to taunt the target.", + OrderedToAlert = "You've ordered the K9 dog to alert by barking.", + YouArePettingTheDog = "You are petting the K9 dog.", + YouPickedUpTheK9 = "You picked up the K9 dog.", + YouReleasedTheK9 = "You released the K9 dog.", + + DogIsTooFarAway = "The K9 dog is too far away for this action...", + SuspectIsFleeing = "The suspect is fleeing from the K9 dog...", + ReleasedTarget = "The last target the K9 dog was interacting with has been released...", + NoValidTargetToRelease = "There is no valid target to release...", + CouldNotReleaseTarget = "Could not release the last target, they seem to have other tasks...", + DogHasFoundNothing = "The K9 dog has not been triggered during the search, it is now returning to you...", + DogIsAlertingAfterSearching = "The K9 dog is triggered by something...", + VehicleDataTimeout = "A timeout occured on retrieving vehicle data in night_ers. Please try again.", + PedDataTimeout = "A timeout occured on retrieving ped data in night_ers. Please try again.", + EnteredSelectActionMode = "You've entered select K9 action mode.", + CannotSpawnK9WhilstNotOnShift = "You cannot spawn a K9 dog whilst not on shift for ERS...", + VehicleIsNotEmpty = "The vehicle is not empty... The dog can not search it.", + VehicleNotAllowedToBeSearched = "This vehicle can not be searched by the K9 dog...", + CanceledK9ActionMode = "Canceled K9 Action mode.", + DismissedK9DogTooFarAway = "Dismissed your K9 dog. They went too far away from you...", + CannotSpawnOrDeleteK9WhilstInVehicle = "You cannot spawn or delete a K9 dog whilst in a vehicle...", + YouHaveNoK9 = "You have no K9 dog...", + K9NotFound = "K9 dog not found...", + NoVehicleFound = "No suitable vehicle found to spawn a K9 dog...", + NoPermission = "You do not have the required permission to spawn a K9 dog...", + InvalidLocationIndex = "Invalid location index. Please provide a number...", + PickupCooldownActive = "K9 dog summon cooldown active. Please wait before summoning a K9 dog again.", + + --========= NUI TRANSLATIONS =========-- + + K9ControlsTitlePed = "K9 Dog Controls (NPC)", + K9ControlsTitleVehicle = "K9 Dog Controls (Vehicle)", + AvailableHotkeysAndControls = "Available hotkeys and controls", + K9ControlsSubtitle = "Aim at the target and press the hotkey to perform the action.", + K9Attack = "Attack", + K9Search = "Search", + K9Taunt = "Taunt", + Cancel = "Cancel", + }, +} \ No newline at end of file diff --git a/resources/night_ers_k9/fxmanifest.lua b/resources/night_ers_k9/fxmanifest.lua new file mode 100644 index 000000000..78e1d847f --- /dev/null +++ b/resources/night_ers_k9/fxmanifest.lua @@ -0,0 +1,39 @@ +-- Resource Metadata +fx_version 'cerulean' +games { 'gta5' } + +author 'Night' +description 'Nights Software - K9 Dog Handlers FiveM' +version '1.1.3' +lua54 'yes' + +shared_scripts { + 'config/*.lua', +} + +server_scripts { + 'server/*.lua', +} + +client_scripts { + 'client/*.lua', +} + +ui_page "index.html" +files{ + "index.html", + 'NUI/sounds/*.ogg', + 'NUI/*.js', + 'NUI/*.css', +} + +escrow_ignore { + 'config/*.lua', + 'client/c_functions.lua', + 'server/s_functions.lua' +} + +dependencies { + 'night_ers', +} +dependency '/assetpacks' \ No newline at end of file diff --git a/resources/night_ers_k9/index.html b/resources/night_ers_k9/index.html new file mode 100644 index 000000000..eb93bea03 --- /dev/null +++ b/resources/night_ers_k9/index.html @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/resources/night_ers_k9/server/s_functions.lua b/resources/night_ers_k9/server/s_functions.lua new file mode 100644 index 000000000..c4a89852f --- /dev/null +++ b/resources/night_ers_k9/server/s_functions.lua @@ -0,0 +1,113 @@ +QBCore = nil +ESX = nil + +Citizen.CreateThread(function() + if Config.Enable_QBCore_Permissions.Check_By_Job or Config.Enable_QBCore_Permissions.Check_By_Permissions then + QBCore = exports["qb-core"]:GetCoreObject() + end + + if Config.Enable_ESX_Permissions.Check_By_Job or Config.Enable_ESX_Permissions.Check_By_Permissions then + ESX = exports["es_extended"]:getSharedObject() + end +end) + +function CheckPermission(source, rolesOrGroups) + local permission = false + + -- If this is enabled, everyone can play any service at any time. + if Config.EveryoneHasPermission then + return true + end + + -- Discord API Permissions + if Config.Enable_Night_DiscordApi_Permissions then + local isPermitted = exports.night_discordapi:IsMemberPartOfAnyOfTheseRoles(source, rolesOrGroups) + if isPermitted then + permission = true + end + end + + -- Ace Permissions + if Config.Enable_Ace_Permissions then + for _, roleOrGroup in pairs(rolesOrGroups) do + if IsPlayerAceAllowed(source, roleOrGroup) then + permission = true + break + end + end + end + + -- ESX Job Permissions + if Config.Enable_ESX_Permissions.Check_By_Job then + if ESX == nil then return print("You've enabled ESX job permissions, but the ESX framework has not been found...") end + local xPlayer = ESX.GetPlayerFromId(source) + if xPlayer then + for _, job in pairs(rolesOrGroups) do + if xPlayer.job.name == job then + permission = true + break + end + end + end + end + + -- ESX Permission Based + if Config.Enable_ESX_Permissions.Check_By_Permissions then + if ESX == nil then return print("You've enabled ESX group permissions, but the ESX framework has not been found...") end + local xPlayer = ESX.GetPlayerFromId(source) + if xPlayer then + for _, group in pairs(rolesOrGroups) do + if xPlayer.getGroup() == group then + permission = true + break + end + end + end + end + + -- QBCore Job Based + if Config.Enable_QBCore_Permissions.Check_By_Job then + if QBCore == nil then return print("You've enabled QBCore job permissions, but the QBCore framework has not been found...") end + local Player = QBCore.Functions.GetPlayer(source) + if Player then + for _, job in pairs(rolesOrGroups) do + if Player.PlayerData.job.name == job then + permission = true + break + end + end + end + end + + -- QBCore Permission based + if Config.Enable_QBCore_Permissions.Check_By_Permissions then + if QBCore == nil then return print("You've enabled QBCore group permissions, but the QBCore framework has not been found...") end + local Player = QBCore.Functions.GetPlayer(source) + if Player then + for _, perm in pairs(rolesOrGroups) do + if QBCore.Functions.HasPermission(source, perm) then + permission = true + end + end + end + end + return permission +end + +function firstToUpper(str) + return (str:gsub("^%l", string.upper)) +end + +function allToUpper(str) + return (string.upper(str)) +end + +--============ Debug ============-- + +function DebugPrint(msg) + if Config.Debug then + if msg ~= nil then + print("["..GetCurrentResourceName().."] "..msg) + end + end +end \ No newline at end of file diff --git a/resources/night_ers_k9/server/server.lua b/resources/night_ers_k9/server/server.lua new file mode 100644 index 000000000..c7aadbca8 Binary files /dev/null and b/resources/night_ers_k9/server/server.lua differ diff --git a/resources/night_prop_system/.fxap b/resources/night_prop_system/.fxap new file mode 100644 index 000000000..56d2dcd66 Binary files /dev/null and b/resources/night_prop_system/.fxap differ diff --git a/resources/night_prop_system/client/c_functions.lua b/resources/night_prop_system/client/c_functions.lua new file mode 100644 index 000000000..c383fe776 --- /dev/null +++ b/resources/night_prop_system/client/c_functions.lua @@ -0,0 +1,94 @@ +QBCore = nil +ESX = nil + +Citizen.CreateThread(function() + if Config.Enable_QBCore_Permissions.Check_By_Job or Config.Enable_QBCore_Permissions.Check_By_Permissions then + QBCore = exports["qb-core"]:GetCoreObject() + end + + if Config.Enable_ESX_Permissions then + ESX = exports["es_extended"]:getSharedObject() + end +end) + +function PermissionCheck() + local permission = false + + if Config.EveryoneHasPermission then + return true + end + + -- Role amount check + if #Config.PermissionRoles < 1 then return print("You've not set up any roles for permissions in the config.lua") end + + -- ESX Job Permissions + if Config.Enable_ESX_Permissions then + if ESX == nil then return print("You've enabled ESX permissions, but the ESX framework has not been found...") end + local IsLoaded = ESX.IsPlayerLoaded() + if IsLoaded then + local xPlayer = ESX.GetPlayerData() + if xPlayer then + for k, v in pairs(Config.PermissionRoles) do + if xPlayer.job.name == v then + permission = true + break + end + end + end + else + print("Could not check your permission because your player has not loaded in...") + end + end + + -- QBCore Job Based + if Config.Enable_QBCore_Permissions.Check_By_Job then + if QBCore == nil then return print("You've enabled QBCore job permissions, but the QBCore framework has not been found...") end + local Player = QBCore.Functions.GetPlayerData() + local jobName = Player.job.name + -- local player = QBCore.Functions.GetPlayer(source) + if Player then + for k, v in pairs(Config.PermissionRoles) do + if jobName == v then + permission = true + break + end + end + end + end + + return permission +end + +function message(lineOne, lineTwo, lineThree, duration) + BeginTextCommandDisplayHelp("THREESTRINGS") + AddTextComponentSubstringPlayerName(lineOne) + AddTextComponentSubstringPlayerName(lineTwo or "") + AddTextComponentSubstringPlayerName(lineThree or "") + EndTextCommandDisplayHelp(0, false, false, duration or 5000) +end + +function notify(notificationText, notificationDuration, notificationPosition, notificationType) + if Config.Enable_custom_messages then + exports.bulletin:Send({ + message = notificationText, + timeout = notificationDuration, + position = notificationPosition, + progress = true, + theme = notificationType, + flash = false + }) + else + SetNotificationTextEntry("STRING") + AddTextComponentString(notificationText) + DrawNotification(true, true) + end +end + +function firstToUpper(str) + return (str:gsub("^%l", string.upper)) +end + +function allToUpper(str) + return (string.upper(str)) +end + diff --git a/resources/night_prop_system/client/client.lua b/resources/night_prop_system/client/client.lua new file mode 100644 index 000000000..ec4f4e2c2 Binary files /dev/null and b/resources/night_prop_system/client/client.lua differ diff --git a/resources/night_prop_system/client/warmenu.lua b/resources/night_prop_system/client/warmenu.lua new file mode 100644 index 000000000..81a78126a --- /dev/null +++ b/resources/night_prop_system/client/warmenu.lua @@ -0,0 +1,657 @@ +WarMenu = { } +WarMenu.__index = WarMenu + +-- Deprecated +WarMenu.debug = false +function WarMenu.SetDebugEnabled(enabled) +end +function WarMenu.IsDebugEnabled() + return false +end +--- + +local menus = { } +local keys = { down = 187, up = 188, left = 189, right = 190, select = 191, back = 194 } +local optionCount = 0 + +local currentKey = nil +local currentMenu = nil + +local toolTipWidth = 0.153 + +local spriteWidth = 0.027 +local spriteHeight = spriteWidth * GetAspectRatio() + +local titleHeight = 0.101 +local titleYOffset = 0.021 +local titleFont = 1 +local titleScale = 1.0 + +local buttonHeight = 0.038 +local buttonFont = 0 +local buttonScale = 0.365 +local buttonTextXOffset = 0.005 +local buttonTextYOffset = 0.005 +local buttonSpriteXOffset = 0.002 +local buttonSpriteYOffset = 0.005 + +local defaultStyle = { + x = 0.0175, + y = 0.025, + width = 0.23, + maxOptionCountOnScreen = 10, + titleColor = { 0, 0, 0, 255 }, + titleBackgroundColor = { 0, 212, 166, 255 }, + titleBackgroundSprite = nil, + subTitleColor = { 0, 212, 166, 255 }, + textColor = { 255, 255, 255, 255 }, + subTextColor = { 189, 189, 189, 255 }, + focusTextColor = { 0, 0, 0, 255 }, + focusColor = { 245, 245, 245, 255 }, + backgroundColor = { 0, 0, 0, 160 }, + subTitleBackgroundColor = { 0, 0, 0, 255 }, + buttonPressedSound = { name = 'SELECT', set = 'HUD_FRONTEND_DEFAULT_SOUNDSET' }, --https://pastebin.com/0neZdsZ5 +} + +local function setMenuProperty(id, property, value) + if not id then + return + end + + local menu = menus[id] + if menu then + menu[property] = value + end +end + +local function setStyleProperty(id, property, value) + if not id then + return + end + + local menu = menus[id] + + if menu then + if not menu.overrideStyle then + menu.overrideStyle = { } + end + + menu.overrideStyle[property] = value + end +end + +local function getStyleProperty(property, menu) + menu = menu or currentMenu + + if menu.overrideStyle then + local value = menu.overrideStyle[property] + if value then + return value + end + end + + return menu.style and menu.style[property] or defaultStyle[property] +end + +local function copyTable(t) + if type(t) ~= 'table' then + return t + end + + local result = { } + for k, v in pairs(t) do + result[k] = copyTable(v) + end + + return result +end + +local function setMenuVisible(id, visible, holdCurrentOption) + if currentMenu then + if visible then + if currentMenu.id == id then + return + end + else + if currentMenu.id ~= id then + return + end + end + end + + if visible then + local menu = menus[id] + + if not currentMenu then + menu.currentOption = 1 + else + if not holdCurrentOption then + menus[currentMenu.id].currentOption = 1 + end + end + + currentMenu = menu + else + currentMenu = nil + end +end + +local function setTextParams(font, color, scale, center, shadow, alignRight, wrapFrom, wrapTo) + SetTextFont(font) + SetTextColour(color[1], color[2], color[3], color[4] or 255) + SetTextScale(scale, scale) + + if shadow then + SetTextDropShadow() + end + + if center then + SetTextCentre(true) + elseif alignRight then + SetTextRightJustify(true) + end + + if not wrapFrom or not wrapTo then + wrapFrom = wrapFrom or getStyleProperty('x') + wrapTo = wrapTo or getStyleProperty('x') + getStyleProperty('width') - buttonTextXOffset + end + + SetTextWrap(wrapFrom, wrapTo) +end + +local function getLinesCount(text, x, y) + BeginTextCommandLineCount('TWOSTRINGS') + AddTextComponentString(tostring(text)) + return EndTextCommandGetLineCount(x, y) +end + +local function drawText(text, x, y) + BeginTextCommandDisplayText('TWOSTRINGS') + AddTextComponentString(tostring(text)) + EndTextCommandDisplayText(x, y) +end + +local function drawRect(x, y, width, height, color) + DrawRect(x, y, width, height, color[1], color[2], color[3], color[4] or 255) +end + +local function getCurrentIndex() + if currentMenu.currentOption <= getStyleProperty('maxOptionCountOnScreen') and optionCount <= getStyleProperty('maxOptionCountOnScreen') then + return optionCount + elseif optionCount > currentMenu.currentOption - getStyleProperty('maxOptionCountOnScreen') and optionCount <= currentMenu.currentOption then + return optionCount - (currentMenu.currentOption - getStyleProperty('maxOptionCountOnScreen')) + end + + return nil +end + +local function drawTitle() + local x = getStyleProperty('x') + getStyleProperty('width') / 2 + local y = getStyleProperty('y') + titleHeight / 2 + + if getStyleProperty('titleBackgroundSprite') then + DrawSprite(getStyleProperty('titleBackgroundSprite').dict, getStyleProperty('titleBackgroundSprite').name, x, y, getStyleProperty('width'), titleHeight, 0., 255, 255, 255, 255) + else + drawRect(x, y, getStyleProperty('width'), titleHeight, getStyleProperty('titleBackgroundColor')) + end + + if currentMenu.title then + setTextParams(titleFont, getStyleProperty('titleColor'), titleScale, true) + drawText(currentMenu.title, x, y - titleHeight / 2 + titleYOffset) + end +end + +local function drawSubTitle() + local x = getStyleProperty('x') + getStyleProperty('width') / 2 + local y = getStyleProperty('y') + titleHeight + buttonHeight / 2 + + drawRect(x, y, getStyleProperty('width'), buttonHeight, getStyleProperty('subTitleBackgroundColor')) + + setTextParams(buttonFont, getStyleProperty('subTitleColor'), buttonScale, false) + drawText(currentMenu.subTitle, getStyleProperty('x') + buttonTextXOffset, y - buttonHeight / 2 + buttonTextYOffset) + + if optionCount > getStyleProperty('maxOptionCountOnScreen') then + setTextParams(buttonFont, getStyleProperty('subTitleColor'), buttonScale, false, false, true) + drawText(tostring(currentMenu.currentOption)..' / '..tostring(optionCount), getStyleProperty('x') + getStyleProperty('width'), y - buttonHeight / 2 + buttonTextYOffset) + end +end + +local function drawButton(text, subText) + local currentIndex = getCurrentIndex() + if not currentIndex then + return + end + + local backgroundColor = nil + local textColor = nil + local subTextColor = nil + local shadow = false + + if currentMenu.currentOption == optionCount then + backgroundColor = getStyleProperty('focusColor') + textColor = getStyleProperty('focusTextColor') + subTextColor = getStyleProperty('focusTextColor') + else + backgroundColor = getStyleProperty('backgroundColor') + textColor = getStyleProperty('textColor') + subTextColor = getStyleProperty('subTextColor') + shadow = true + end + + local x = getStyleProperty('x') + getStyleProperty('width') / 2 + local y = getStyleProperty('y') + titleHeight + buttonHeight + (buttonHeight * currentIndex) - buttonHeight / 2 + + drawRect(x, y, getStyleProperty('width'), buttonHeight, backgroundColor) + + setTextParams(buttonFont, textColor, buttonScale, false, shadow) + drawText(text, getStyleProperty('x') + buttonTextXOffset, y - (buttonHeight / 2) + buttonTextYOffset) + + if subText then + setTextParams(buttonFont, subTextColor, buttonScale, false, shadow, true) + drawText(subText, getStyleProperty('x') + buttonTextXOffset, y - buttonHeight / 2 + buttonTextYOffset) + end +end + +function WarMenu.CreateMenu(id, title, subTitle, style) + -- Default settings + local menu = { } + + -- Members + menu.id = id + menu.previousMenu = nil + menu.aboutToBeClosed = false + menu.currentOption = 1 + menu.title = title + menu.subTitle = subTitle and string.upper(subTitle) or 'INTERACTION MENU' + + -- Style + if style then + menu.style = style + end + + menus[id] = menu +end + +function WarMenu.CreateSubMenu(id, parent, subTitle, style) + local parentMenu = menus[parent] + if not parentMenu then + return + end + + WarMenu.CreateMenu(id, parentMenu.title, subTitle and string.upper(subTitle) or parentMenu.subTitle) + + local menu = menus[id] + + menu.previousMenu = parent + + if parentMenu.overrideStyle then + menu.overrideStyle = copyTable(parentMenu.overrideStyle) + end + + if style then + menu.style = style + elseif parentMenu.style then + menu.style = copyTable(parentMenu.style) + end +end + +function WarMenu.CurrentMenu() + return currentMenu and currentMenu.id or nil +end + +function WarMenu.OpenMenu(id) + if id and menus[id] then + PlaySoundFrontend(-1, 'SELECT', 'HUD_FRONTEND_DEFAULT_SOUNDSET', true) + setMenuVisible(id, true) + end +end + +function WarMenu.IsMenuOpened(id) + return currentMenu and currentMenu.id == id +end +WarMenu.Begin = WarMenu.IsMenuOpened + +function WarMenu.IsAnyMenuOpened() + return currentMenu ~= nil +end + +function WarMenu.IsMenuAboutToBeClosed() + return currentMenu and currentMenu.aboutToBeClosed +end + +function WarMenu.CloseMenu() + if not currentMenu then + return + end + + if currentMenu.aboutToBeClosed then + currentMenu.aboutToBeClosed = false + setMenuVisible(currentMenu.id, false) + optionCount = 0 + currentKey = nil + PlaySoundFrontend(-1, 'QUIT', 'HUD_FRONTEND_DEFAULT_SOUNDSET', true) + else + currentMenu.aboutToBeClosed = true + end +end + +function WarMenu.ToolTip(text, width, flipHorizontal) + if not currentMenu then + return + end + + local currentIndex = getCurrentIndex() + if not currentIndex then + return + end + + width = width or toolTipWidth + + local x = nil + if not flipHorizontal then + x = getStyleProperty('x') + getStyleProperty('width') + width / 2 + buttonTextXOffset + else + x = getStyleProperty('x') - width / 2 - buttonTextXOffset + end + + local textX = x - (width / 2) + buttonTextXOffset + setTextParams(buttonFont, getStyleProperty('textColor'), buttonScale, false, true, false, textX, textX + width - (buttonTextYOffset * 2)) + local linesCount = getLinesCount(text, textX, getStyleProperty('y')) + + local height = GetTextScaleHeight(buttonScale, buttonFont) * (linesCount + 1) + buttonTextYOffset + local y = getStyleProperty('y') + titleHeight + (buttonHeight * currentIndex) + height / 2 + + drawRect(x, y, width, height, getStyleProperty('backgroundColor')) + + y = y - (height / 2) + buttonTextYOffset + drawText(text, textX, y) +end + +function WarMenu.Button(text, subText) + if not currentMenu then + return + end + + optionCount = optionCount + 1 + + drawButton(text, subText) + + local pressed = false + + if currentMenu.currentOption == optionCount then + if currentKey == keys.select then + pressed = true + PlaySoundFrontend(-1, getStyleProperty('buttonPressedSound').name, getStyleProperty('buttonPressedSound').set, true) + elseif currentKey == keys.left or currentKey == keys.right then + PlaySoundFrontend(-1, 'NAV_UP_DOWN', 'HUD_FRONTEND_DEFAULT_SOUNDSET', true) + end + end + + return pressed +end + +function WarMenu.SpriteButton(text, dict, name, r, g, b, a) + if not currentMenu then + return + end + + local pressed = WarMenu.Button(text) + + local currentIndex = getCurrentIndex() + if not currentIndex then + return + end + + if not HasStreamedTextureDictLoaded(dict) then + RequestStreamedTextureDict(dict) + end + DrawSprite(dict, name, getStyleProperty('x') + getStyleProperty('width') - spriteWidth / 2 - buttonSpriteXOffset, getStyleProperty('y') + titleHeight + buttonHeight + (buttonHeight * currentIndex) - spriteHeight / 2 + buttonSpriteYOffset, spriteWidth, spriteHeight, 0., r or 255, g or 255, b or 255, a or 255) + + return pressed +end + +function WarMenu.InputButton(text, windowTitleEntry, defaultText, maxLength, subText) + if not currentMenu then + return + end + + local pressed = WarMenu.Button(text, subText) + local inputText = nil + + if pressed then + DisplayOnscreenKeyboard(1, windowTitleEntry or 'FMMC_MPM_NA', '', defaultText or '', '', '', '', maxLength or 255) + + while true do + DisableAllControlActions(0) + + local status = UpdateOnscreenKeyboard() + if status == 2 then + break + elseif status == 1 then + inputText = GetOnscreenKeyboardResult() + break + end + + Citizen.Wait(0) + end + end + + return pressed, inputText +end + +function WarMenu.MenuButton(text, id, subText) + if not currentMenu then + return + end + + local pressed = WarMenu.Button(text, subText) + + if pressed then + currentMenu.currentOption = optionCount + setMenuVisible(currentMenu.id, false) + setMenuVisible(id, true, true) + end + + return pressed +end + +function WarMenu.CheckBox(text, checked, callback) + if not currentMenu then + return + end + + local name = nil + if currentMenu.currentOption == optionCount + 1 then + name = checked and 'shop_box_tickb' or 'shop_box_blankb' + else + name = checked and 'shop_box_tick' or 'shop_box_blank' + end + + local pressed = WarMenu.SpriteButton(text, 'commonmenu', name) + + if pressed then + checked = not checked + if callback then callback(checked) end + end + + return pressed +end + +function WarMenu.ComboBox(text, items, currentIndex, selectedIndex, callback) + if not currentMenu then + return + end + + local itemsCount = #items + local selectedItem = items[currentIndex] + local isCurrent = currentMenu.currentOption == optionCount + 1 + selectedIndex = selectedIndex or currentIndex + + if itemsCount > 1 and isCurrent then + selectedItem = '← '..tostring(selectedItem)..' →' + end + + local pressed = WarMenu.Button(text, selectedItem) + + if pressed then + selectedIndex = currentIndex + elseif isCurrent then + if currentKey == keys.left then + if currentIndex > 1 then currentIndex = currentIndex - 1 else currentIndex = itemsCount end + elseif currentKey == keys.right then + if currentIndex < itemsCount then currentIndex = currentIndex + 1 else currentIndex = 1 end + end + end + + if callback then callback(currentIndex, selectedIndex) end + return pressed, currentIndex +end + +function WarMenu.Display() + if currentMenu then + DisableControlAction(0, keys.left, true) + DisableControlAction(0, keys.up, true) + DisableControlAction(0, keys.down, true) + DisableControlAction(0, keys.right, true) + DisableControlAction(0, keys.back, true) + + if currentMenu.aboutToBeClosed then + WarMenu.CloseMenu() + else + ClearAllHelpMessages() + + drawTitle() + drawSubTitle() + + currentKey = nil + + if IsDisabledControlJustReleased(0, keys.down) then + PlaySoundFrontend(-1, 'NAV_UP_DOWN', 'HUD_FRONTEND_DEFAULT_SOUNDSET', true) + + if currentMenu.currentOption < optionCount then + currentMenu.currentOption = currentMenu.currentOption + 1 + else + currentMenu.currentOption = 1 + end + elseif IsDisabledControlJustReleased(0, keys.up) then + PlaySoundFrontend(-1, 'NAV_UP_DOWN', 'HUD_FRONTEND_DEFAULT_SOUNDSET', true) + + if currentMenu.currentOption > 1 then + currentMenu.currentOption = currentMenu.currentOption - 1 + else + currentMenu.currentOption = optionCount + end + elseif IsDisabledControlJustReleased(0, keys.left) then + currentKey = keys.left + elseif IsDisabledControlJustReleased(0, keys.right) then + currentKey = keys.right + elseif IsControlJustReleased(0, keys.select) then + currentKey = keys.select + elseif IsDisabledControlJustReleased(0, keys.back) then + if menus[currentMenu.previousMenu] then + setMenuVisible(currentMenu.previousMenu, true) + PlaySoundFrontend(-1, 'BACK', 'HUD_FRONTEND_DEFAULT_SOUNDSET', true) + else + WarMenu.CloseMenu() + end + end + + optionCount = 0 + end + end +end +WarMenu.End = WarMenu.Display + +function WarMenu.CurrentOption() + if currentMenu and optionCount ~= 0 then + return currentMenu.currentOption + end + + return nil +end + +function WarMenu.IsItemHovered() + if not currentMenu or optionCount == 0 then + return false + end + + return currentMenu.currentOption == optionCount +end + +function WarMenu.IsItemSelected() + return currentKey == keys.select and WarMenu.IsItemHovered() +end + +function WarMenu.SetTitle(id, title) + setMenuProperty(id, 'title', title) +end +WarMenu.SetMenuTitle = WarMenu.SetTitle + +function WarMenu.SetSubTitle(id, text) + setMenuProperty(id, 'subTitle', string.upper(text)) +end +WarMenu.SetMenuSubTitle = WarMenu.SetSubTitle + +function WarMenu.SetMenuStyle(id, style) + setMenuProperty(id, 'style', style) +end + +function WarMenu.SetMenuX(id, x) + setStyleProperty(id, 'x', x) +end + +function WarMenu.SetMenuY(id, y) + setStyleProperty(id, 'y', y) +end + +function WarMenu.SetMenuWidth(id, width) + setStyleProperty(id, 'width', width) +end + +function WarMenu.SetMenuMaxOptionCountOnScreen(id, count) + setStyleProperty(id, 'maxOptionCountOnScreen', count) +end + +function WarMenu.SetTitleColor(id, r, g, b, a) + setStyleProperty(id, 'titleColor', { r, g, b, a }) +end +WarMenu.SetMenuTitleColor = WarMenu.SetTitleColor + +function WarMenu.SetMenuSubTitleColor(id, r, g, b, a) + setStyleProperty(id, 'subTitleColor', { r, g, b, a }) +end + +function WarMenu.SetTitleBackgroundColor(id, r, g, b, a) + setStyleProperty(id, 'titleBackgroundColor', { r, g, b, a }) +end +WarMenu.SetMenuTitleBackgroundColor = WarMenu.SetTitleBackgroundColor + +function WarMenu.SetTitleBackgroundSprite(id, dict, name) + RequestStreamedTextureDict(dict) + setStyleProperty(id, 'titleBackgroundSprite', { dict = dict, name = name }) +end +WarMenu.SetMenuTitleBackgroundSprite = WarMenu.SetTitleBackgroundSprite + +function WarMenu.SetMenuBackgroundColor(id, r, g, b, a) + setStyleProperty(id, 'backgroundColor', { r, g, b, a }) +end + +function WarMenu.SetMenuTextColor(id, r, g, b, a) + setStyleProperty(id, 'textColor', { r, g, b, a }) +end + +function WarMenu.SetMenuSubTextColor(id, r, g, b, a) + setStyleProperty(id, 'subTextColor', { r, g, b, a }) +end + +function WarMenu.SetMenuFocusColor(id, r, g, b, a) + setStyleProperty(id, 'focusColor', { r, g, b, a }) +end + +function WarMenu.SetMenuFocusTextColor(id, r, g, b, a) + setStyleProperty(id, 'focusTextColor', { r, g, b, a }) +end + +function WarMenu.SetMenuButtonPressedSound(id, name, set) + setStyleProperty(id, 'buttonPressedSound', { name = name, set = set }) +end diff --git a/resources/night_prop_system/config/config.lua b/resources/night_prop_system/config/config.lua new file mode 100644 index 000000000..fcc621fe9 --- /dev/null +++ b/resources/night_prop_system/config/config.lua @@ -0,0 +1,283 @@ +Config = { + + ConfigVersion = "3.3.0", + + Debug = false, + EventPrefix = "night_prop_system", -- Leave this be. + + --====================== BULLETIN UI ======================-- + + Enable_custom_messages = false, -- true = bulletin ui: https://github.com/Mobius1/bulletin | false = native installed notify and chatMessage function (c_functions.lua & s_functions.lua), feel free to edit it. + + --====================== PERMISSIONS ======================-- + + EveryoneHasPermission = true, + + Enable_Night_DiscordApi_Permissions = false, -- server/s_functions.lua + Enable_Ace_Permissions = false, -- server/s_functions.lua + Enable_ESX_Permissions = false, -- client/c_functions.lua & server/s_functions.lua + Enable_QBCore_Permissions = { + Check_By_Job = false, -- client/c_functions.lua & server/s_functions.lua + Check_By_Permissions = false, -- server/s_functions.lua + }, + + PermissionRoles = { -- Fill in: Discord API Role Names / ESX Jobs / Ace group names / QB Jobs and/or Groups + -- Discord API Examples + "Manager", + "Development_Team", + "Senior_Admin", + "Admin", + "Essex_Police_Force", + "British_Transport_Police", + "Ambulance_Service", + "Fire_Service", + -- ESX or QB Job examples + "police", + "ambulance", + "fire", + -- Ace Permissions examples + "Administrator", + "Supporter", + "Tester", + }, + + --====================== Commands, Hotkeys and buttons ======================-- + + Commands = { + RoadNodeTool = "roadnodes", -- Opens the road node tool. + PlaceObjectsTool = "placeobjects", -- Enables the placing/removing object mode. + SpeedzoneTool = "speedzones", -- Opens a menu to place speedzones. + DeleteNearbyObjects = "deleteobjects", -- Deletes (desynchronized) objects in range of player. + }, + + Animations = { + PickupAnimationDict = "random@domestic", + PickupAnimation = "pickup_low", + PlacedownAnimationDict = "random@domestic", + PlacedownAnimation = "pickup_low", + }, + + HotKeys = { -- MATCH THESE TO THE BUTTONS (https://docs.fivem.net/docs/game-references/controls/) + RoadNodeTool = "F5", -- https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/ (Set to 999 to disable) + PlaceObjectsTool = "F6", -- https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/ (Set to 999 to disable) + SpeedzoneTool = "F7", -- https://docs.fivem.net/docs/game-references/input-mapper-parameter-ids/keyboard/ (Set to 999 to disable) + + BrowseLeft = 307, -- Arrow Right + BrowseRight = 308, -- Arrow Left + PlaceObject = 38, -- E + ToggleRoadNode = 38, -- E + DeleteObject = 19, -- LEFT ALT + DeleteObjectsInRange = 73, -- X + StopBrowsing = 177, -- BACKSPACE / ESC / RIGHT MOUSE BUTTON + }, + + Buttons = { -- MATCH THESE TO THE HOTKEYS (https://docs.fivem.net/docs/game-references/controls/) + BrowseLeft = "~INPUT_REPLAY_BACK~", + BrowseRight = "~INPUT_REPLAY_ADVANCE~", + PlaceObject = "~INPUT_PICKUP~", + ToggleRoadNode = "~INPUT_PICKUP~", + DeleteObject = "~INPUT_CHARACTER_WHEEL~", + StopBrowsing = "~INPUT_CELLPHONE_CANCEL~", + DeleteObjectsInRange = "~INPUT_VEH_DUCK~", + + -- Menu button text + CreateSpeedzoneButton = '» Create a speedzone', + BuildTheSpeedzoneButton = '~g~»»»»» ~s~Create speedzone ~g~«««««', + DeleteSpeedzoneButton = '» Delete a speedzone', + NoPermissionButton = '» No permission to access this menu.', + RemoveTheSpeedzoneButton = "Delete speedzone at", + SelectASpeedButton = '» Select a speed:', + SelectASizeButton = '» Select a size:', + YesButton = '» Yes', + NoButton = '» No', + BackButton = '~r~««« ~s~BACK', + ExitMenuButton = '««« ~r~EXIT', + }, + + --====================== Objects (Props) ======================-- + + FreezeObjectsOnSpawn = false, + DeleteObjectsRadius = 15.0, -- Set radius in meters to delete objects on pressing the multiple object deletion button. + ObjectAndPropList = { + -- Default Props + { Name = "Small Road Cone", Prop = "prop_roadcone02c"}, + { Name = "Large Road Cone", Prop = "prop_roadcone01a"}, + { Name = "Scene Light", Prop = "prop_worklight_04d"}, + { Name = "Striped Barrier", Prop = "prop_mp_barrier_02b"}, + { Name = "Striped Large Cone", Prop = "prop_mp_cone_01"}, + { Name = "Striped Small Cone", Prop = "prop_mp_cone_02"}, + { Name = "No Stripe Small Cone", Prop = "prop_mp_cone_03"}, + { Name = "Stand-up Striped Pole", Prop = "prop_mp_cone_04"}, + { Name = "Gazebo", Prop = "prop_gazebo_02"}, + + -- ERS Props [Included with the Emergency Response Simulator Ultimate: https://store.nights-software.com/category/ersgamemode] + -- { Name = "Cone", Prop = "neko_night_cone_00" }, + -- { Name = "Barrier", Prop = "neko_night_water_barrier_00" }, + -- { Name = "Warning triangle", Prop = "neko_night_warning_tri_00" }, + -- { Name = "Rubber barrier", Prop = "neko_night_rubber_barrier_00" }, + -- { Name = "Barrier", Prop = "neko_night_barrier_00" }, + -- { Name = "Barrier 1", Prop = "neko_night_barrier_01" }, + -- { Name = "Barrier 2", Prop = "neko_night_barrier_02" }, + -- { Name = "Arrow board cross", Prop = "neko_night_arrow_board_00" }, + -- { Name = "Arrow board left", Prop = "neko_night_arrow_board_00_l" }, + -- { Name = "Arrow board right", Prop = "neko_night_arrow_board_00_r" }, + + --Custom Props (Add yours here.) + -- { Name = "Blue Beacon", Prop = "blue_beacon"}, + -- { Name = "Cone", Prop = "pro_cone"}, + -- { Name = "Amber Cone", Prop = "pro_cone_amber"}, + -- { Name = "Blue Cone", Prop = "pro_cone_blue"}, + -- { Name = "Barrier 'Road Closed'", Prop = "prop_barrier_work05"}, + -- { Name = "Barrier 'Accident'", Prop = "prop_barrier_accident"}, + -- { Name = "Barrier 'Highway Left'", Prop = "prop_barrier_highwaysleft"}, + -- { Name = "Barrier 'Highway Right'", Prop = "prop_barrier_highwaysright"}, + -- { Name = "Barrier 'Drone'", Prop = "prop_barrier_policedrone"}, + -- { Name = "Barrier 'Left'", Prop = "prop_barrier_policeleft"}, + -- { Name = "Barrier 'Right'", Prop = "prop_barrier_policeright"}, + -- { Name = "Barrier 'Slow'", Prop = "prop_barrier_Slow"}, + }, + + --====================== Road Closures ======================-- + + RoadClosureAnimationDictionary = "taxi_hail", + RoadClosureAnimation = "hail_taxi", + + --====================== Speedzones ======================-- + + MenuStructure = { + speedzonemenu = { + name = "speedzonemenu", + title = "Speedzones", + subtitle = "Speedzones", + bgcolor = {2, 219, 154, 150}, + fgcolor = {232, 215, 187, 255}, + submenus = { + activespeedzones = { + name = "activespeedzones", + title = "Active Speedzones", + subtitle = "DELETE AN ACTIVE ZONE", + bgcolor = {2, 219, 154, 150}, + fgcolor = {232, 215, 187, 255}, + submenus = { + } + }, + createspeedzones = { + name = "createspeedzones", + title = "Create a Speedzone", + subtitle = "CREATE A SPEEDZONE", + bgcolor = {2, 219, 154, 150}, + fgcolor = {232, 215, 187, 255}, + submenus = { + } + }, + closemenu = { + name = "closemenu", + title = "Exit Menu", + subtitle = "EXIT MENU?", + bgcolor = {2, 219, 154, 150}, + fgcolor = {232, 215, 187, 255}, + submenus = { + } + } + } + } + }, + + SpeedZoneSpeeds = { + {DisplayName = "0 MPH", Speed = 0.0}, + {DisplayName = "5 MPH", Speed = 5.0}, + {DisplayName = "10 MPH", Speed = 10.0}, + {DisplayName = "15 MPH", Speed = 15.0}, + {DisplayName = "20 MPH", Speed = 20.0}, + {DisplayName = "25 MPH", Speed = 25.0}, + {DisplayName = "30 MPH", Speed = 30.0}, + {DisplayName = "35 MPH", Speed = 35.0}, + {DisplayName = "40 MPH", Speed = 40.0}, + {DisplayName = "45 MPH", Speed = 45.0}, + {DisplayName = "50 MPH", Speed = 50.0}, + {DisplayName = "55 MPH", Speed = 55.0}, + {DisplayName = "60 MPH", Speed = 60.0}, + {DisplayName = "65 MPH", Speed = 65.0}, + {DisplayName = "70 MPH", Speed = 70.0}, + }, + + SpeedZoneSizes = { + {DisplayName = "10 Radius", Radius = 10.0}, + {DisplayName = "20 Radius", Radius = 20.0}, + {DisplayName = "30 Radius", Radius = 30.0}, + {DisplayName = "40 Radius", Radius = 40.0}, + {DisplayName = "50 Radius", Radius = 50.0}, + {DisplayName = "60 Radius", Radius = 60.0}, + {DisplayName = "70 Radius", Radius = 70.0}, + {DisplayName = "80 Radius", Radius = 80.0}, + {DisplayName = "90 Radius", Radius = 90.0}, + {DisplayName = "100 Radius", Radius = 100.0}, + }, + + SpeedZoneBlipData = { -- https://docs.fivem.net/docs/game-references/blips/ + blipName = "Speedzone", + blipSprite = 9, + blipColour = 40, + blipDisplay = 4, + blipAlpha = 100, + }, + + --====================== Messages ======================-- + + Messages = { + -- Error Fetching + InvalidObjectModel = "Invalid object model: ", + NoPermission = "You do not have the permission to do this.", + InVehicle = "You must outside of a vehicle.", + InObjectPlacingMode = "You are already in object placing mode.", + InObjectPlacingModeWhilstSpeedzone = "You are in object placing mode. Close it first before opening the speed zone menu.", + InRoadNodeToolWhilstSpeedzone = "You are in the road node tool. Close it first before opening the speedzone menu.", + InRoadNodeToolWhilstObjectPlacingMode = "You are in the road node tool. Close it first before opening the object placing mode.", + InObjectPlacingModeWhilstRoadNodeTool = "You are in object placing mode. Close it first before opening the road node tool.", + InSpeedzoneMenuWhilstRoadNodeTool = "You are in the road node tool. Close it first before opening the speedzone menu.", + FailedToSpawnObjectLimitReached = "Failed to add an object, likely due to a limit of spawned objects in this area...", + + -- HotKey Help + HotKeySyntax = "Use ", + HotKeySyntax2 = "use ", + HotKeyAndSyntax = " and ", + HotKeyOrSyntax = "~w~ or ", + HotKeyEndSyntax = " Browse objects.", + HotKeyPlaceObjSyntax = " to place the object.", + HotKeyPlaceObjSyntax2 = " Place ~y~", + DeleteObject = " Delete closest object.", + StopBrowsing = " ~r~Exit~w~.", + + -- Regular + ProcessingSpeedzoneRemoval = "Removing speedzone...", + LoadingObjectModel = "Loading object model", + PlacedObject = "You've place an object: ~y~", + DeletedObject = "Deleted object: ~y~", + HowToExitPlaceObjectMode = "Use BACKSPACE / ESC / RIGHT MOUSE BUTTON to exit placing objects mode.", + DeleteMultipleObjects = " to delete multiple objects in range.", + DeleteNearbyObjects = " Delete objects in range.", + NoObjectFoundNearby = "Could not find any nearby objects.", + + -- Speedzone Menu + YouSelectedSyntax = "You selected", + YouCreatedASpeedzone = "You've created a speedzone.", + Street = "~w~Street: ~y~", + Size = "~w~Size: ~y~", + Speed = "~w~Speed: ~y~", + Nearby = "~w~nearby", + + -- Road Nodes + OpenOrCloseNearestRoad = "Open or close the nearest road.", + OpenedOrClosedTheRoad = "You have opened or closed the road.", + StillInRoadNodeTool = "You are still in the road node tool.", + + -- Chat Suggestions + PlaceObjectsToolChatSuggestion = "Command used to place objects.", + SpeedzoneToolChatSuggestion = "Command used to open the speedzone menu.", + RoadNodeToolChatSuggestion = "Command used to toggle the road node tool.", + DeleteNearbyObjectsCommandSuggestion = "Command used to delete objects close to a player.", + }, +} + + + diff --git a/resources/night_prop_system/fxmanifest.lua b/resources/night_prop_system/fxmanifest.lua new file mode 100644 index 000000000..1d7b8651d --- /dev/null +++ b/resources/night_prop_system/fxmanifest.lua @@ -0,0 +1,40 @@ +fx_version 'cerulean' +games { 'gta5' } + +author 'Night' +description 'Prop & Speedzone management system' +version '3.3.1' +lua54 'yes' + +client_scripts { + 'client/*.lua', +} + +server_scripts { + 'server/*.lua', +} + +shared_scripts { + 'config/*.lua', + -- '@es_extended/imports.lua' -- ESX +} + +-- Usage example exports client side + +-- exports['night_prop_system']:TogglePlaceObjectsTool() +-- exports['night_prop_system']:ToggleSpeedzoneTool() +-- exports['night_prop_system']:ToggleRoadNodeTool() + +-- Usage Example exports server side (we kept the old naming server side for easy compatibility for previous users) + +-- exports['night_prop_system']:OpenPropMenu(src) +-- exports['night_prop_system']:OpenSpeedZoneMenu(src) +-- exports['night_prop_system']:ToggleRoadNodeTool(src) + +escrow_ignore { + 'config/*.lua', + 'client/c_functions.lua', + 'client/warmenu.lua', + 'server/s_functions.lua' +} +dependency '/assetpacks' \ No newline at end of file diff --git a/resources/night_prop_system/server/s_functions.lua b/resources/night_prop_system/server/s_functions.lua new file mode 100644 index 000000000..cba15aef6 --- /dev/null +++ b/resources/night_prop_system/server/s_functions.lua @@ -0,0 +1,91 @@ +QBCore = nil +ESX = nil + +Citizen.CreateThread(function() + if Config.Enable_QBCore_Permissions.Check_By_Job or Config.Enable_QBCore_Permissions.Check_By_Permissions then + QBCore = exports["qb-core"]:GetCoreObject() + end + + if Config.Enable_ESX_Permissions then + ESX = exports["es_extended"]:getSharedObject() + end +end) + +function CheckPermission(source) + local permission = false + + if Config.EveryoneHasPermission then + return true + end + + -- Role amount check + if #Config.PermissionRoles < 1 then return print("You've not set up any roles for permissions in the config.lua") end + + -- Discord API Permissions + if Config.Enable_Night_DiscordApi_Permissions then + local isPermitted = exports.night_discordapi:IsMemberPartOfAnyOfTheseRoles(source, Config.PermissionRoles, false) + if isPermitted then + permission = true + end + end + + -- Ace Permissions + if Config.Enable_Ace_Permissions then + for k, v in ipairs(Config.PermissionRoles) do + if IsPlayerAceAllowed(source, v) then + permission = true + break + end + end + end + + -- ESX Job Permissions + if Config.Enable_ESX_Permissions then + if ESX == nil then return print("You've enabled ESX permissions, but the ESX framework has not been found...") end + local xPlayer = ESX.GetPlayerFromId(source) + if xPlayer then + for k, v in pairs(Config.PermissionRoles) do + if xPlayer.job.name == v then + permission = true + end + end + end + end + + -- QBCore Job Based + if Config.Enable_QBCore_Permissions.Check_By_Job then + if QBCore == nil then return print("You've enabled QBCore job permissions, but the QBCore framework has not been found...") end + local player = QBCore.Functions.GetPlayer(source) + if player then + for k, v in pairs(Config.PermissionRoles) do + if player.PlayerData.job.name == v then + permission = true + end + end + end + end + + -- QBCore Permission based + if Config.Enable_QBCore_Permissions.Check_By_Permissions then + if QBCore == nil then return print("You've enabled QBCore group permissions, but the QBCore framework has not been found...") end + local player = QBCore.Functions.GetPlayer(source) + if player then + for k, v in pairs(Config.PermissionRoles) do + if QBCore.Functions.HasPermission(source, v) then + permission = true + end + end + end + end + return permission +end + +--============ Debug ============-- + +function DebugPrint(msg) + if Config.Debug then + if msg ~= nil then + print("["..GetCurrentResourceName().."] "..msg) + end + end +end \ No newline at end of file diff --git a/resources/night_prop_system/server/server.lua b/resources/night_prop_system/server/server.lua new file mode 100644 index 000000000..f6f7fb5df Binary files /dev/null and b/resources/night_prop_system/server/server.lua differ diff --git a/server.cfg b/server.cfg index 96b269226..17e7a7185 100644 --- a/server.cfg +++ b/server.cfg @@ -74,6 +74,9 @@ ensure SmartFiresLite ensure SmartFiresLite ensure ebu_flatbeds_ers ensure delped +ensure night_ers_k9 +ensure night_prop_system +ensure disable_interior ensure Cruise-Control ensure guidehud ensure EGRP-LoadingScreen @@ -226,7 +229,6 @@ ensure Highway_cameras_style_2 ensure Supply-Line ensure scully_lawenforcement ensure VehicleTrustSystem-master -ensure LSRPC-K9 ensure 5500wrecker ensure seatbelt ensure jraxion_handlingeditor @@ -417,6 +419,7 @@ ensure 16expmet ensure beverlyhillspack ensure LASD ensure LAPD +ensure 22f150rb ensure 23f150pr ensure 23f150prbb ensure bearcat @@ -715,7 +718,7 @@ ensure hane_hpub ensure hane_hpub_meta ensure hane_hpub_meta2 ensure hn_hpub_anim_paints -ensure +ensure lasdmlo ensure ensure ensure