diff --git a/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/__resource.lua b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/__resource.lua
new file mode 100644
index 000000000..e85b41837
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/__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/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/carcols.meta b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/carcols.meta
new file mode 100644
index 000000000..6a46bd68e
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/carcols.meta
@@ -0,0 +1,1363 @@
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ VehicleLight_car_utility
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Maxlasd18charger
+
+
+
+ -
+
+ Maxlasd18charger
+
+
+
+
+
+
+ VehicleLight_sirenlight
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/carvariations.meta b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/carvariations.meta
new file mode 100644
index 000000000..d5b4193e7
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/carvariations.meta
@@ -0,0 +1,38 @@
+
+
+
+
+ -
+ Maxlasd18charger
+
+
-
+
+ 0
+ 0
+ 0
+ 0
+ 28
+ 0
+
+
+
+
+
+
+
+ - 0_default_modkit
+
+
+
+
+ -
+ Police guv plate
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/handling.meta b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/handling.meta
new file mode 100644
index 000000000..4de441d9e
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/handling.meta
@@ -0,0 +1,67 @@
+
+
+
+
+ -
+ 18CHARGER
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 440010
+ 0
+ 0
+ AVERAGE
+
+
-
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/stream/Maxlasd18charger+hi.ytd b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/stream/Maxlasd18charger+hi.ytd
new file mode 100644
index 000000000..75c7eef7a
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/stream/Maxlasd18charger+hi.ytd
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:f2189fbe8d7c4e5b80f3122ab5c6fa1d2370b5a9569e72c095347b46efebaabf
+size 2205553
diff --git a/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/stream/Maxlasd18charger.yft b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/stream/Maxlasd18charger.yft
new file mode 100644
index 000000000..e62145187
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/stream/Maxlasd18charger.yft
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:863640e11756e55b712f9704ee288c9abc4fec422db895f3eeb7d1ab56785861
+size 2167805
diff --git a/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/stream/Maxlasd18charger.ytd b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/stream/Maxlasd18charger.ytd
new file mode 100644
index 000000000..84048eebd
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/stream/Maxlasd18charger.ytd
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:704340d987b655ad6d728fe54ecf38a6a07fe51e9ceb90910885b8a7eca5dcdf
+size 6394599
diff --git a/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/stream/Maxlasd18charger_hi.yft b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/stream/Maxlasd18charger_hi.yft
new file mode 100644
index 000000000..822694ab4
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/stream/Maxlasd18charger_hi.yft
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:fa01eb98159c928a6b0d52da3f38aeb5beaf2661936f67d4cbec05d8d5a9d20a
+size 6086655
diff --git a/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/ulc.lua b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/ulc.lua
new file mode 100644
index 000000000..2b65552b7
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/ulc.lua
@@ -0,0 +1,752 @@
+
+--[[
+ 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 = {"lasd16asapc","lasd16asapd","lasd16fpiu","lasd16fpiub"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ hornConfig = {
+ useHorn = false,
+ hornExtras = {},
+ disableExtras = {}
+ },
+ brakeConfig = {
+ useBrakes = false,
+ speedThreshold = 3,
+ brakeExtras = {},
+ disableExtras = {}
+ },
+ reverseConfig = {
+ useReverse = false,
+ reverseExtras = {},
+ disableExtras = {}
+ },
+ doorConfig = {
+ useDoors = false,
+ driverSide = {enable = {}, disable = {}},
+ passSide = {enable = {}, disable = {}},
+ trunk = {enable ={}, disable = {}}
+ },
+ buttons = {
+ {label = "Stage 1", key = 1, color = "red", extra = 2, linkedExtras = {5,1}, oppositeExtras = {}, offExtras = {3,4}, repair = false},
+ {label = "Stage 2", key = 2, color = "red", extra = 6, linkedExtras = {2,3}, oppositeExtras = {}, offExtras = {1,4,5}, repair = false},
+ {label = "Stage 3", key = 3, color = "red", extra = 4, linkedExtras = {3}, oppositeExtras = {}, offExtras = {1,2,5}, repair = false},
+ {label = "Parking Lights", key = 4, color = "amber", extra = 8, linkedExtras = {}, oppositeExtras = {}, offExtras = {}, repair = false}
+ },
+ stages = {
+ useStages = false,
+ stageKeys = {},
+ },
+ defaultStages = {
+ useDefaults = false,
+ enableKeys = {},
+ disableKeys = {}
+ },
+},
+
+{names = {"lasd16asap","lasd16asapb","lasd16rfr","lasd16rfrb"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ hornConfig = {
+ useHorn = false,
+ hornExtras = {},
+ disableExtras = {}
+ },
+ brakeConfig = {
+ useBrakes = false,
+ speedThreshold = 3,
+ brakeExtras = {},
+ disableExtras = {}
+ },
+ reverseConfig = {
+ useReverse = false,
+ reverseExtras = {},
+ disableExtras = {}
+ },
+ doorConfig = {
+ useDoors = false,
+ driverSide = {enable = {}, disable = {}},
+ passSide = {enable = {}, disable = {}},
+ trunk = {enable ={}, disable = {}}
+ },
+ buttons = {
+ {label = "Stage 1", key = 1, color = "green", extra = 1, linkedExtras = {2,5}, oppositeExtras = {}, offExtras = {3,4,6}, repair = false},
+ {label = "Stage 2", key = 2, color = "green", extra = 2, linkedExtras = {3}, oppositeExtras = {}, offExtras = {1,4,5,6}, repair = false},
+ {label = "Stage 3", key = 3, color = "green", extra = 3, linkedExtras = {4}, oppositeExtras = {}, offExtras = {1,2,5,6}, repair = false},
+ {label = "Parking Lights", key = 4, color = "amber", extra = 8, linkedExtras = {}, oppositeExtras = {}, offExtras = {}, repair = false}
+ },
+ stages = {
+ useStages = false,
+ stageKeys = {},
+ },
+ defaultStages = {
+ useDefaults = false,
+ enableKeys = {},
+ disableKeys = {}
+ }
+},
+{names = {"lasd13fasap","lasd13fpiu1","lasd13fpiu2","lasd13fpiu3","lasd13fpiu4","lasd13fpiu5","lasd13fsfpiu"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ hornConfig = {
+ useHorn = false,
+ hornExtras = {},
+ disableExtras = {}
+ },
+ brakeConfig = {
+ useBrakes = false,
+ speedThreshold = 3,
+ brakeExtras = {},
+ disableExtras = {}
+ },
+ reverseConfig = {
+ useReverse = false,
+ reverseExtras = {},
+ disableExtras = {}
+ },
+ doorConfig = {
+ useDoors = false,
+ driverSide = {enable = {}, disable = {}},
+ passSide = {enable = {}, disable = {}},
+ trunk = {enable ={}, disable = {}}
+ },
+ buttons = {
+ {label = "Stage 1", key = 1, color = "red", extra = 5, linkedExtras = {}, oppositeExtras = {}, offExtras = {6}, repair = false},
+ {label = "Stage 2", key = 2, color = "red", extra = 6, linkedExtras = {}, oppositeExtras = {}, offExtras = {5}, repair = false}
+ },
+ stages = {
+ useStages = false,
+ stageKeys = {},
+ },
+ defaultStages = {
+ useDefaults = false,
+ enableKeys = {},
+ disableKeys = {}
+ }
+},
+{names = {"lacpvic","lasd06m","lasd06u","lasdcrownvic","lasd18taurus","Maxlasd18charger","lasd18chrg","lasdchg","lasd18taurus","lasdchrg14","lasdparamount","lasdsd7100","lasdvicslicktop","lasd05cvpi","lasd06cvpi","lasd06cvpicarson","lasd06cvpisd7100","lasd08cvpi","lasd08cvpilomita","lasd08cvpitransit"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ hornConfig = {
+ useHorn = false,
+ hornExtras = {},
+ disableExtras = {}
+ },
+ brakeConfig = {
+ useBrakes = false,
+ speedThreshold = 3,
+ brakeExtras = {},
+ disableExtras = {}
+ },
+ reverseConfig = {
+ useReverse = false,
+ reverseExtras = {},
+ disableExtras = {}
+ },
+ doorConfig = {
+ useDoors = false,
+ driverSide = {enable = {}, disable = {}},
+ passSide = {enable = {}, disable = {}},
+ trunk = {enable ={}, disable = {}}
+ },
+ buttons = {
+ {label = "Stage 1", key = 1, color = "green", extra = 7, linkedExtras = {8,9}, oppositeExtras = {}, offExtras = {6}, repair = false},
+ {label = "Stage 2", key = 2, color = "green", extra = 8, linkedExtras = {7}, oppositeExtras = {}, offExtras = {9}, repair = false},
+ {label = "Stage 3", key = 3, color = "green", extra = 6, linkedExtras = {8}, oppositeExtras = {}, offExtras = {7,9}, repair = false}
+ },
+ stages = {
+ useStages = false,
+ stageKeys = {},
+ },
+ defaultStages = {
+ useDefaults = false,
+ enableKeys = {},
+ disableKeys = {}
+ }
+},
+{names = {"lasd08tahoe","lasd08tahoe2","lasd14tahoe","lasd06tahoe","lasd15k9b","lasd15tahoeb","lasdexp","lasdexp2","lasdfpiu5","lasdtahoe4","lasdtahoe","lasdtahoe2","lasdtahoe3","lasd15k9","lasd15k9b","lasd15tahoe","lasd15tahoeb","lasd20k9","lasd20lp","lasd20tahoe","lasd20tfs","lasd20lp","lasd20tfs","lasd20tunm","lasdtahoelan"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ hornConfig = {
+ useHorn = false,
+ hornExtras = {},
+ disableExtras = {}
+ },
+ brakeConfig = {
+ useBrakes = false,
+ speedThreshold = 3,
+ brakeExtras = {},
+ disableExtras = {}
+ },
+ reverseConfig = {
+ useReverse = false,
+ reverseExtras = {},
+ disableExtras = {}
+ },
+ doorConfig = {
+ useDoors = false,
+ driverSide = {enable = {}, disable = {}},
+ passSide = {enable = {}, disable = {}},
+ trunk = {enable ={}, disable = {}}
+ },
+ buttons = {
+ {label = "Stage 1", key = 1, color = "green", extra = 1, linkedExtras = {3}, oppositeExtras = {}, offExtras = {4,5,6,2}, repair = false},
+ {label = "Stage 2", key = 2, color = "green", extra = 7, linkedExtras = {3,4,6,2}, oppositeExtras = {}, offExtras = {1,5}, repair = false},
+ {label = "Stage 3", key = 3, color = "green", extra = 8, linkedExtras = {5,6,4}, oppositeExtras = {}, offExtras = {1,2,3}, repair = false}
+ },
+ stages = {
+ useStages = false,
+ stageKeys = {},
+ },
+ defaultStages = {
+ useDefaults = false,
+ enableKeys = {},
+ disableKeys = {}
+ }
+},
+{names = {"lasd20lp"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ hornConfig = {
+ useHorn = false,
+ hornExtras = {},
+ disableExtras = {}
+ },
+ brakeConfig = {
+ useBrakes = false,
+ speedThreshold = 3,
+ brakeExtras = {},
+ disableExtras = {}
+ },
+ reverseConfig = {
+ useReverse = false,
+ reverseExtras = {},
+ disableExtras = {}
+ },
+ doorConfig = {
+ useDoors = false,
+ driverSide = {enable = {}, disable = {}},
+ passSide = {enable = {}, disable = {}},
+ trunk = {enable ={}, disable = {}}
+ },
+ buttons = {
+ {label = "Stage 1", key = 1, color = "green", extra = 1, linkedExtras = {3}, oppositeExtras = {}, offExtras = {2,4,5}, repair = false},
+ {label = "Stage 2", key = 2, color = "green", extra = 6, linkedExtras = {2,3,5}, oppositeExtras = {}, offExtras = {4,1}, repair = false},
+ {label = "Stage 3", key = 3, color = "green", extra = 7, linkedExtras = {4,5}, oppositeExtras = {}, offExtras = {1,3,2}, repair = false}
+ },
+ stages = {
+ useStages = false,
+ stageKeys = {},
+ },
+ defaultStages = {
+ useDefaults = false,
+ enableKeys = {},
+ disableKeys = {}
+ }
+},
+{names = {"met2"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ 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 = "Stage 1", key = 1, color = "green", extra = 5, linkedExtras = {}, oppositeExtras = {}, offExtras = {3,6,7,8,9,10,11,12}, repair = false},
+ {label = "Stage 2", key = 2, color = "green", extra = 6, linkedExtras = {7,8,9}, oppositeExtras = {}, offExtras = {3,5,10,11,12}, repair = false},
+ {label = "Stage 3", key = 3, color = "green", extra = 10, linkedExtras = {3,11,12}, oppositeExtras = {}, offExtras = {4,5,6,7,8,9}, repair = false},
+ {label = "Steady Spotlights", key = 6, color = "green", extra = 4, linkedExtras = {}, oppositeExtras = {}, offExtras = {3,10,11,12}, repair = false}
+ },
+ defaultStages = {
+ useDefaults = true,
+ enableKeys = {1},
+ disableKeys = {2,3,6}
+ }
+},
+{names = {"met3"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ 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 = "Stage 1", key = 1, color = "green", extra = 5, linkedExtras = {}, oppositeExtras = {}, offExtras = {3,6,7,8,9,10,11,12}, repair = false},
+ {label = "Stage 2", key = 2, color = "green", extra = 6, linkedExtras = {7,8,9}, oppositeExtras = {}, offExtras = {3,5,10,11,12}, repair = false},
+ {label = "Stage 3", key = 3, color = "green", extra = 10, linkedExtras = {3,11,12}, oppositeExtras = {}, offExtras = {4,5,6,7,8,9}, repair = false},
+ {label = "Steady Spotlights", key = 6, color = "green", extra = 4, linkedExtras = {}, oppositeExtras = {}, offExtras = {3,10,11,12}, repair = false}
+ },
+ defaultStages = {
+ useDefaults = true,
+ enableKeys = {1},
+ disableKeys = {2,3,6}
+ }
+},
+{names = {"sd20asap"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ hornConfig = {
+ useHorn = false,
+ hornExtras = {},
+ disableExtras = {}
+ },
+ brakeConfig = {
+ useBrakes = false,
+ speedThreshold = 3,
+ brakeExtras = {},
+ disableExtras = {}
+ },
+ reverseConfig = {
+ useReverse = false,
+ reverseExtras = {},
+ disableExtras = {}
+ },
+ doorConfig = {
+ useDoors = false,
+ driverSide = {enable = {}, disable = {}},
+ passSide = {enable = {}, disable = {}},
+ trunk = {enable ={}, disable = {}}
+ },
+ buttons = {
+ {label = "Stage 1", key = 1, color = "green", extra = 1, linkedExtras = {}, oppositeExtras = {}, offExtras = {2}, repair = false},
+ {label = "Stage 2", key = 2, color = "green", extra = 2, linkedExtras = {}, oppositeExtras = {}, offExtras = {1}, repair = false}
+ },
+ stages = {
+ useStages = false,
+ stageKeys = {},
+ },
+ defaultStages = {
+ useDefaults = false,
+ enableKeys = {},
+ disableKeys = {}
+ }
+},
+
+{names = {"sd20fpiu", "lasdfpiu3"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ hornConfig = {
+ useHorn = false,
+ hornExtras = {},
+ disableExtras = {}
+ },
+ brakeConfig = {
+ useBrakes = false,
+ speedThreshold = 3,
+ brakeExtras = {},
+ disableExtras = {}
+ },
+ reverseConfig = {
+ useReverse = false,
+ reverseExtras = {},
+ disableExtras = {}
+ },
+ doorConfig = {
+ useDoors = false,
+ driverSide = {enable = {}, disable = {}},
+ passSide = {enable = {}, disable = {}},
+ trunk = {enable ={}, disable = {}}
+ },
+ buttons = {
+ {label = "Stage 1", key = 1, color = "green", extra = 1, linkedExtras = {}, oppositeExtras = {}, offExtras = {2}, repair = false},
+ {label = "Stage 2", key = 2, color = "green", extra = 2, linkedExtras = {}, oppositeExtras = {}, offExtras = {1}, repair = false}
+ },
+ stages = {
+ useStages = false,
+ stageKeys = {},
+ },
+ defaultStages = {
+ useDefaults = false,
+ enableKeys = {},
+ disableKeys = {}
+ }
+},
+
+{names = {"lasd23tahoe","lasd23k9t"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ hornConfig = {
+ useHorn = false,
+ hornExtras = {},
+ disableExtras = {}
+ },
+ brakeConfig = {
+ useBrakes = false,
+ speedThreshold = 3,
+ brakeExtras = {},
+ disableExtras = {}
+ },
+ reverseConfig = {
+ useReverse = false,
+ reverseExtras = {},
+ disableExtras = {}
+ },
+ doorConfig = {
+ useDoors = false,
+ driverSide = {enable = {}, disable = {}},
+ passSide = {enable = {}, disable = {}},
+ trunk = {enable ={}, disable = {}}
+ },
+ buttons = {
+ {label = "Stage 1", key = 1, color = "green", extra = 1, linkedExtras = {3}, oppositeExtras = {}, offExtras = {4,5,6,2}, repair = false},
+ {label = "Stage 2", key = 2, color = "green", extra = 2, linkedExtras = {3,4,6}, oppositeExtras = {}, offExtras = {5,1}, repair = false},
+ {label = "Stage 3", key = 3, color = "green", extra = 5, linkedExtras = {6,4}, oppositeExtras = {}, offExtras = {3,2,1}, repair = false}
+ },
+ stages = {
+ useStages = false,
+ stageKeys = {},
+ },
+ defaultStages = {
+ useDefaults = false,
+ enableKeys = {},
+ disableKeys = {}
+ }
+},
+
+{names = {"lasd23tunm","lasd22tunm"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ hornConfig = {
+ useHorn = false,
+ hornExtras = {},
+ disableExtras = {}
+ },
+ brakeConfig = {
+ useBrakes = false,
+ speedThreshold = 3,
+ brakeExtras = {},
+ disableExtras = {}
+ },
+ reverseConfig = {
+ useReverse = false,
+ reverseExtras = {},
+ disableExtras = {}
+ },
+ doorConfig = {
+ useDoors = false,
+ driverSide = {enable = {}, disable = {}},
+ passSide = {enable = {}, disable = {}},
+ trunk = {enable ={}, disable = {}}
+ },
+ buttons = {
+ {label = "Stage 1", key = 1, color = "green", extra = 7, linkedExtras = {2,1}, oppositeExtras = {}, offExtras = {3,4,5}, repair = false},
+ {label = "Stage 2", key = 2, color = "green", extra = 10, linkedExtras = {2,3}, oppositeExtras = {}, offExtras = {1,4,5}, repair = false},
+ {label = "Stage 3", key = 3, color = "green", extra = 9, linkedExtras = {5,3,4}, oppositeExtras = {}, offExtras = {1,2}, repair = false}
+ },
+ stages = {
+ useStages = false,
+ stageKeys = {},
+ },
+ defaultStages = {
+ useDefaults = false,
+ enableKeys = {},
+ disableKeys = {}
+ }
+},
+
+{names = {"lasd20funm"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ hornConfig = {
+ useHorn = false,
+ hornExtras = {},
+ disableExtras = {}
+ },
+ brakeConfig = {
+ useBrakes = false,
+ speedThreshold = 3,
+ brakeExtras = {},
+ disableExtras = {}
+ },
+ reverseConfig = {
+ useReverse = false,
+ reverseExtras = {},
+ disableExtras = {}
+ },
+ doorConfig = {
+ useDoors = false,
+ driverSide = {enable = {}, disable = {}},
+ passSide = {enable = {}, disable = {}},
+ trunk = {enable ={}, disable = {}}
+ },
+ buttons = {
+ {label = "STAGE 1", key = 1, color = "green", extra = 1, linkedExtras = {2}, oppositeExtras = {}, offExtras = {3,4,5}, repair = false},
+ {label = "STAGE 2", key = 2, color = "green", extra = 2, linkedExtras = {3}, oppositeExtras = {}, offExtras = {1,4,5}, repair = false},
+ {label = "STAGE 3", key = 3, color = "green", extra = 4, linkedExtras = {3,5}, oppositeExtras = {}, offExtras = {1,2}, repair = false}
+ },
+ stages = {
+ useStages = true,
+ stageKeys = {2,3,1},
+ },
+ defaultStages = {
+ useDefaults = false,
+ enableKeys = {},
+ disableKeys = {}
+ }
+},
+{names = {"lasd12", "LASD13"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ hornConfig = {
+ useHorn = false,
+ hornExtras = {},
+ disableExtras = {}
+ },
+ brakeConfig = {
+ useBrakes = false,
+ speedThreshold = 3,
+ brakeExtras = {},
+ disableExtras = {}
+ },
+ reverseConfig = {
+ useReverse = false,
+ reverseExtras = {},
+ disableExtras = {}
+ },
+ doorConfig = {
+ useDoors = false,
+ driverSide = {enable = {}, disable = {}},
+ passSide = {enable = {}, disable = {}},
+ trunk = {enable ={}, disable = {}}
+ },
+ buttons = {
+ {label = "TKDN LGHT", key = 1, color = "green", extra = 11, linkedExtras = {}, oppositeExtras = {}, offExtras = {12}, repair = false},
+ {label = "STAGE LGHT", key = 2, color = "green", extra = 12, linkedExtras = {}, oppositeExtras = {}, offExtras = {11}, repair = false},
+ },
+ stages = {
+ useStages = false,
+ stageKeys = {},
+ },
+ defaultStages = {
+ useDefaults = false,
+ enableKeys = {},
+ disableKeys = {}
+ }
+},
+{names = {"lasd25fpiu","lasdfpiu5","lasdtahoe4","lasd20fpiu"},
+ steadyBurnConfig = {
+ forceOn = false, useTime = false,
+ disableWithLights = false,
+ sbExtras = {}
+ },
+ parkConfig = {
+ usePark = false,
+ useSync = false,
+ syncWith = {},
+ pExtras = {},
+ dExtras = {}
+ },
+ hornConfig = {
+ useHorn = false,
+ hornExtras = {},
+ disableExtras = {}
+ },
+ brakeConfig = {
+ useBrakes = false,
+ speedThreshold = 3,
+ brakeExtras = {},
+ disableExtras = {}
+ },
+ reverseConfig = {
+ useReverse = false,
+ reverseExtras = {},
+ disableExtras = {}
+ },
+ doorConfig = {
+ useDoors = false,
+ driverSide = {enable = {}, disable = {}},
+ passSide = {enable = {}, disable = {}},
+ trunk = {enable ={}, disable = {}}
+ },
+ buttons = {
+ {label = "STAGE 2", key = 1, color = "green", extra = 5, linkedExtras = {10}, oppositeExtras = {}, offExtras = {9,8,6,7}, repair = false},
+ {label = "STAGE 3", key = 2, color = "green", extra = 9, linkedExtras = {7, 6}, oppositeExtras = {}, offExtras = {8,5,10}, repair = false},
+ {label = "PARK", key = 3, color = "green", extra = 8, linkedExtras = {6, 9}, oppositeExtras = {}, offExtras = {8,5,10,7}, repair = false},
+ },
+ stages = {
+ useStages = true,
+ stageKeys = {1,2,3},
+ },
+ defaultStages = {
+ useDefaults = false,
+ enableKeys = {},
+ disableKeys = {}
+ }
+}
\ No newline at end of file
diff --git a/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/vehicles.meta b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/vehicles.meta
new file mode 100644
index 000000000..91841e939
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/[lasd-packs]/Maxlasd18charger/vehicles.meta
@@ -0,0 +1,138 @@
+
+
+ vehshare
+
+
+ -
+ Maxlasd18charger
+ Maxlasd18charger
+ 18CHARGER
+ Maxlasd18charger
+ Maxlasd18charger
+ null
+ null
+ null
+ null
+
+ null
+ str392m
+ LAYOUT_STANDARD
+ BUFFALO_COVER_OFFSET_INFO
+ EXPLOSION_INFO_DEFAULT
+
+ DEFAULT_FOLLOW_VEHICLE_CAMERA
+ BOX_VEHICLE_AIM_CAMERA
+ VEHICLE_BONNET_CAMERA_STANDARD
+ DEFAULT_POV_CAMERA_LOOKAROUND
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+ -
+
+
+
+
+
+
+
+
+ VFXVEHICLEINFO_CAR_GENERIC
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 15.000000
+ 30.000000
+ 70.000000
+ 140.000000
+ 500.000000
+ 500.000000
+
+
+
+
+
+
+
+
+
+
+ SWANKNESS_1
+
+ FLAG_USE_INTERIOR_RED_LIGHT FLAG_LAW_ENFORCEMENT FLAG_EMERGENCY_SERVICE FLAG_NO_RESPRAY FLAG_DONT_SPAWN_IN_CARGEN FLAG_REPORT_CRIME_IF_STANDING_ON FLAG_HAS_LIVERY
+ VEHICLE_TYPE_CAR
+ VPT_FRONT_AND_BACK_PLATES
+ VDT_RACE
+ VC_EMERGENCY
+ VWT_SPORT
+
+
+
+
+
+
+
+
+
+
+
+ - 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_race_interior
+ vehicles_race_generic
+
+ -
+ vehicles_race_generic
+ Maxlasd18charger
+
+
+
\ No newline at end of file
diff --git a/resources/[EGRP-CarPacks]/[lasd-packs]/lasd22tunm/vehicles.meta b/resources/[EGRP-CarPacks]/[lasd-packs]/lasd22tunm/vehicles.meta
index 96eb05fb5..0b975432d 100644
--- a/resources/[EGRP-CarPacks]/[lasd-packs]/lasd22tunm/vehicles.meta
+++ b/resources/[EGRP-CarPacks]/[lasd-packs]/lasd22tunm/vehicles.meta
@@ -15,7 +15,7 @@
null
null
- bison
+ SHERIFF2
LAYOUT_STANDARD
GRESLEY_COVER_OFFSET_INFO
EXPLOSION_INFO_DEFAULT
diff --git a/resources/[EGRP-CarPacks]/[lasd-packs]/lasd23tunm/stream/lasd23tunm.ytd b/resources/[EGRP-CarPacks]/[lasd-packs]/lasd23tunm/stream/lasd23tunm.ytd
index 913ea3434..ebed6d18f 100644
--- a/resources/[EGRP-CarPacks]/[lasd-packs]/lasd23tunm/stream/lasd23tunm.ytd
+++ b/resources/[EGRP-CarPacks]/[lasd-packs]/lasd23tunm/stream/lasd23tunm.ytd
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:bc6c8e364f07c04dab84aa98382f7df0b7b528e956dcdf766d04ef53a70b23fd
-size 7171117
+oid sha256:5dfdfd6a9e2156baf9bd204cd6382c4fd54014dd2df36f1b6203afcffc1f525f
+size 5748481
diff --git a/resources/[EGRP-CarPacks]/[lasd-packs]/lasd23tunm/vehicles.meta b/resources/[EGRP-CarPacks]/[lasd-packs]/lasd23tunm/vehicles.meta
index 2bcfe59d9..0358e2fd6 100644
--- a/resources/[EGRP-CarPacks]/[lasd-packs]/lasd23tunm/vehicles.meta
+++ b/resources/[EGRP-CarPacks]/[lasd-packs]/lasd23tunm/vehicles.meta
@@ -15,7 +15,7 @@
null
null
- bison
+ SHERIFF2
LAYOUT_STANDARD
GRESLEY_COVER_OFFSET_INFO
EXPLOSION_INFO_DEFAULT
diff --git a/resources/[EGRP-CarPacks]/ebu_flatbeds/.fxap b/resources/[EGRP-CarPacks]/ebu_flatbeds/.fxap
new file mode 100644
index 000000000..70d15391c
Binary files /dev/null and b/resources/[EGRP-CarPacks]/ebu_flatbeds/.fxap differ
diff --git a/resources/[EGRP-CarPacks]/ebu_flatbeds/Readme.md b/resources/[EGRP-CarPacks]/ebu_flatbeds/Readme.md
new file mode 100644
index 000000000..9458cb207
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/ebu_flatbeds/Readme.md
@@ -0,0 +1,67 @@
+######
+## There are no longer circles- makesure to read the controls. Bed controls are done at the back left or right of the truck.
+#####
+
+## Default Controls:
+[E] - At bed to attach / detach vehicle (useable in vehicle on bed as well)
+[LeftArrow] - Attach, Wind winch
+[RightArrow] - Unwind winch
+[UpArrow] - Raise Bed (automatic, click once)
+[DownArrow] - Lower Bed (automatic, click once)
+[G] - Remove Rope
+[SHIFT] - Access Hand Winch controls
+[SHIFT] + [LeftArrow] - Grab winch
+[SHIFT] + [RightArrow] - Return winch
+[SHIFT] + [E] - Attach winch
+
+## How to use:
+# For ROLLING beds:
+1. Lower bed
+2. Ensure the vehicle is behind the truck close to the bed
+3. Press Left Arrow next to the flatbed truck body to attach the winch
+4. Press Left Arrow again to wind the winch
+5. Press E when the vehicle is ON the bed. If the vehicle is inside the bed, or too high, press E to disconnect then E again to reconnect the car.
+
+# For Static beds:
+1. Ensure the car is behind the truck.
+2. Press E next to the truck, or inside the car.
+
+
+
+## Exports / Events:
+# wind start/stop winding the winch
+targetflatbedWind(truck)
+# OR connect target or wind start/stop winding the winch
+targetflatbedWind(truck, target)
+# event:
+"ebu_flatbeds:client:targetflatbedWind"
+
+# start/stop unwinding the winch
+targetflatbedUnWind(truck)
+# event:
+"ebu_flatbeds:client:targetflatbedUnWind"
+
+# attach/detach vehicle on bed
+targetflatbedAtt(truck)
+# event:
+"ebu_flatbeds:client:targetflatbedAtt"
+
+# delete rope attached to truck
+targetflatbedRope(truck)
+# event
+"ebu_flatbeds:client:targetflatbedRope"
+
+# toggle wheel lift on truck (if applicable)
+targetflatbedWheel(truck)
+# event:
+"ebu_flatbeds:client:targetflatbedWheel"
+
+# Raise / stop the bed
+targetflatbedRaise(truck)
+# event:
+"ebu_flatbeds:client:targetflatbedRaise"
+
+# Lower /stop the bed
+targetflatbedLower(truck)
+# event:
+"ebu_flatbeds:client:targetflatbedLower"
\ No newline at end of file
diff --git a/resources/[EGRP-CarPacks]/ebu_flatbeds/client/client.lua b/resources/[EGRP-CarPacks]/ebu_flatbeds/client/client.lua
new file mode 100644
index 000000000..0201bd590
Binary files /dev/null and b/resources/[EGRP-CarPacks]/ebu_flatbeds/client/client.lua differ
diff --git a/resources/[EGRP-CarPacks]/ebu_flatbeds/client/utils.lua b/resources/[EGRP-CarPacks]/ebu_flatbeds/client/utils.lua
new file mode 100644
index 000000000..b8a301956
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/ebu_flatbeds/client/utils.lua
@@ -0,0 +1,241 @@
+if not Config.DisableExtKeyControls then
+ RegisterKeyMapping('+bedLower', Config.Controlmessages.LowerBed, 'keyboard', 'DOWN')
+ RegisterKeyMapping('+bedRaise', Config.Controlmessages.RaiseBed, 'keyboard', 'UP')
+ RegisterKeyMapping('+flatbedWheel', Config.Controlmessages.WheelLift, 'keyboard', 'H')
+ if Config.EnableRopes then
+ RegisterKeyMapping('+flatbedWind', Config.Controlmessages.WindWinch..' / '..Config.Controlmessages.GrabWinch, 'keyboard', 'LEFT')
+ RegisterKeyMapping('+flatbedUWind', Config.Controlmessages.ExtendWinch..' / '..Config.Controlmessages.ReturnWinch, 'keyboard', 'RIGHT')
+ RegisterKeyMapping('+flatbedRope', Config.Controlmessages.DetachWinch..' / '..Config.Controlmessages.AttachWinch, 'keyboard', 'G')
+ end
+end
+
+if not Config.DisableInVehControl then
+ RegisterKeyMapping('+flatbedAtt', Config.Controlmessages.AttachVehicle, 'keyboard', 'E')
+end
+
+RegisterKeyMapping('+flatbedWarp', 'Flatbed Get In Car', 'keyboard', 'F')
+
+function loadComplete(car, truck)
+ --This is called once a vehicle is loaded onto a truck
+
+end
+
+--allowed() is the function that determines if the player is allowed to use the controls. DO NOT RENAME THE FUNCTION
+--Place whatever job check code you want in here, return true if allowed, false if not
+function allowed()
+ return true
+end
+
+--This function allows checks for vehicle ownership before attaching ropes or to the bed
+-- args [truck(entity), car(entity)]
+function checkOwnership(truck, car)
+ return true
+end
+
+--This function returns if the vehicle is locked or not when trying to get in the loaded vehicle from next to the trailer
+--false = NOT locked true == LOCKED
+function IsVehicleLocked(car)
+ return DecorGetInt(car, '_VEH_DOOR_LOCK_STATUS') == 2 or DecorGetInt(car, '_VEH_DOOR_LOCK_STATUS') == 10
+end
+
+--======NOTIFICATIONS======--
+function LoadCompleteNotif()
+ EndTextCommandThefeedPostTickerForced(1,1)
+ ThefeedNextPostBackgroundColor(184)
+ BeginTextCommandThefeedPost("STRING")
+ AddTextComponentSubstringPlayerName(Config.NotiLoadCompleteMessage)
+ EndTextCommandThefeedPostTicker(true, true)
+ Wait(3000)
+ EndTextCommandThefeedPostTickerForced(1,1)
+end
+
+function UnLoadCompleteNotif()
+ EndTextCommandThefeedPostTickerForced(1,1)
+ ThefeedNextPostBackgroundColor(184)
+ BeginTextCommandThefeedPost("STRING")
+ AddTextComponentSubstringPlayerName(Config.NotiUnLoadCompleteMessage)
+ EndTextCommandThefeedPostTicker(true, true)
+ Wait(3000)
+ EndTextCommandThefeedPostTickerForced(1,1)
+end
+
+function FBBlockedNotif()
+ EndTextCommandThefeedPostTickerForced(1,1)
+ ThefeedNextPostBackgroundColor(6)
+ BeginTextCommandThefeedPost("STRING")
+ AddTextComponentSubstringPlayerName(Config.NotiFBBlockedMessage)
+ EndTextCommandThefeedPostTicker(true, true)
+ Wait(3000)
+ EndTextCommandThefeedPostTickerForced(1,1)
+end
+
+function BlockedMessage()
+ EndTextCommandThefeedPostTickerForced(1,1)
+ ThefeedNextPostBackgroundColor(6)
+ BeginTextCommandThefeedPost("STRING")
+ AddTextComponentSubstringPlayerName(Config.NotiBlockedMessage)
+ EndTextCommandThefeedPostTicker(true, true)
+ Wait(3000)
+ EndTextCommandThefeedPostTickerForced(1,1)
+end
+
+
+
+--Help Text Messages
+function message(lineOne, lineTwo, lineThree, duration, loop)
+ BeginTextCommandDisplayHelp("THREESTRINGS")
+ AddTextComponentSubstringPlayerName(lineOne)
+ AddTextComponentSubstringPlayerName(lineTwo or "")
+ AddTextComponentSubstringPlayerName(lineThree or "")
+
+ -- shape (always 0), loop (bool), makeSound (bool), duration (5000 max 5 sec)
+ EndTextCommandDisplayHelp(0, loop, false, duration or 5000)
+end
+
+
+--Advanced Functions
+function validTruck(veh)
+ local playerPos = GetEntityCoords(PlayerPedId())
+ local truckCoords = GetEntityCoords(veh)
+ if trucks and #trucks > 0 and has_value(trucks, GetEntityModel(veh)) and #(playerPos - truckCoords) < 10 then
+ return true
+ end
+ return false
+end
+
+--Target
+if Config.UseTarget then
+ --QB CORE
+ local bones = {"seat_dside_f", "seat_dside_r", "seat_pside_f", "seat_pside_f", 'boot', "scoop", 'chassis'}
+ local options = {}
+ options[#options+1] = {
+ num = 1,
+ icon = 'fa-solid fa-car-side',
+ label = '[Winch] Attach Winch',
+ action = function(entity)
+ playerAttach(entity)
+ end,
+ canInteract = function(entity, distance, data)
+ return winchInHand and Config.EnableRopes
+ end,
+ }
+ options[#options+1] = {
+ num = 2,
+ icon = 'fa-solid fa-angles-left',
+ label = '[Winch] Attach / Wind Winch',
+ action = function(entity)
+ TriggerEvent("ebu_flatbeds:client:targetflatbedWind", entity)
+ end,
+ canInteract = function(entity, distance, data)
+ return Config.Trucks[GetEntityModel(entity)] and Config.Trucks[GetEntityModel(entity)].type ~= "static" and allowed() and Config.EnableRopes
+ end,
+ }
+ options[#options+1] = {
+ num = 3,
+ icon = 'fa-solid fa-angles-right',
+ label = '[Winch] UnWind Winch',
+ action = function(entity)
+ TriggerEvent("ebu_flatbeds:client:targetflatbedUnWind", entity)
+ end,
+ canInteract = function(entity, distance, data)
+ return Config.Trucks[GetEntityModel(entity)] and Config.Trucks[GetEntityModel(entity)].type ~= "static" and allowed() and Config.EnableRopes
+ end,
+ }
+ options[#options+1] = {
+ num = 4,
+ icon = 'fa-solid fa-angles-up',
+ label = '[Winch] Raise Bed',
+ action = function(entity)
+ TriggerEvent("ebu_flatbeds:client:targetflatbedRaise", entity)
+ end,
+ canInteract = function(entity, distance, data)
+ return Config.Trucks[GetEntityModel(entity)] and Config.Trucks[GetEntityModel(entity)].type ~= "static" and allowed()
+ end,
+ }
+ options[#options+1] = {
+ num = 5,
+ icon = 'fa-solid fa-angles-down',
+ label = '[Winch] Lower Bed',
+ action = function(entity)
+ TriggerEvent("ebu_flatbeds:client:targetflatbedLower", entity)
+ end,
+ canInteract = function(entity, distance, data)
+ return Config.Trucks[GetEntityModel(entity)] and Config.Trucks[GetEntityModel(entity)].type ~= "static" and allowed()
+ end,
+ }
+ options[#options+1] = {
+ num = 6,
+ icon = 'fa-solid fa-ban',
+ label = '[Winch] Remove Winch',
+ action = function(entity)
+ TriggerEvent("ebu_flatbeds:client:targetflatbedRope", entity)
+ end,
+ canInteract = function(entity, distance, data)
+ return Config.Trucks[GetEntityModel(entity)] and Config.Trucks[GetEntityModel(entity)].type ~= "static" and allowed() and Config.EnableRopes
+ end,
+ }
+ options[#options+1] = {
+ num = 7,
+ icon = 'fa-solid fa-car-side',
+ label = '[Winch] Attach / Detach Vehicle',
+ action = function(entity)
+ TriggerEvent("ebu_flatbeds:client:targetflatbedAtt", entity)
+ end,
+ canInteract = function(entity, distance, data)
+ return Config.Trucks[GetEntityModel(entity)] and Config.Trucks[GetEntityModel(entity)].type ~= "static" and allowed()
+ end,
+ }
+ options[#options+1] = {
+ num = 8,
+ icon = 'fa-solid fa-truck-ramp-box',
+ label = '[Winch] Toggle Wheel Lift',
+ action = function(entity)
+ TriggerEvent("ebu_flatbeds:client:targetflatbedWheel", entity)
+ end,
+ canInteract = function(entity, distance, data)
+ return Config.Trucks[GetEntityModel(entity)] and Config.Trucks[GetEntityModel(entity)].wheellift and allowed() and Config.EnableRopes
+ end,
+ }
+ --Grab winch from truck
+ options[#options+1] = {
+ num = 9,
+ icon = 'fa-solid fa-car-side',
+ label = '[Winch] Grab Winch',
+ action = function(entity)
+ playerGrab(entity, PlayerPedId())
+ end,
+ canInteract = function(entity, distance, data)
+ return Config.Trucks[GetEntityModel(entity)] and Config.Trucks[GetEntityModel(entity)].type ~= "static" and allowed() and Config.EnableRopes
+ end,
+ }
+ --Grab winch from winched car
+ options[#options+1] = {
+ num = 10,
+ icon = 'fa-solid fa-car-side',
+ label = '[Winch] Grab Veh Winch',
+ action = function(entity)
+ playerGrabVeh(entity, PlayerPedId())
+ end,
+ canInteract = function(entity, distance, data)
+ return getIsVehWinched(entity) and allowed() and Config.EnableRopes
+ end,
+ }
+ options[#options+1] = {
+ num =11,
+ icon = 'fa-solid fa-car-side',
+ label = '[Winch] Return Winch',
+ action = function(entity)
+ playerReturn(entity)
+ end,
+ canInteract = function(entity, distance, data)
+ return Config.Trucks[GetEntityModel(entity)] and Config.Trucks[GetEntityModel(entity)].type ~= "static" and winchInHand and Config.EnableRopes
+ end,
+ }
+
+ exports['qb-target']:AddTargetBone(bones, {
+ options = options,
+ distance = 5.5
+ })
+
+end
+
diff --git a/resources/[EGRP-CarPacks]/ebu_flatbeds/config.lua b/resources/[EGRP-CarPacks]/ebu_flatbeds/config.lua
new file mode 100644
index 000000000..a9a6ad77f
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/ebu_flatbeds/config.lua
@@ -0,0 +1,1143 @@
+Config = {}
+
+Config.Debug = false -- Used for support
+
+Config.InteractDistance = 2.0 -- Distance to check if near a truck on foot
+Config.CloseVehiclesDistance = 10.0 -- Distance to check for nearby vehicles
+Config.GetInDistance = 3.5
+
+
+--Ctrl + Shift Bed Control
+Config.DisableCabControl = true -- Disables Left Stick Control and Ctrl + Shift while driving.
+Config.DisableSpeed = 3.0 -- Speed at which the controls get disabled
+
+--Rope/Winch Config
+Config.EnableRopes = true -- if disabled, ALL rope / winching is disabled
+Config.WinchSpeed = 0.11 -- Winch Speed. HIGHLY suggest adjusting in 0.1 increments
+Config.MaxWinchLength = 50
+Config.MinWindDistance = 2.6
+Config.ModifierKey = 21 -- Default 21 (SHIFT): Key to hold to see secondary winch controls
+Config.ModifierKeyName = '~INPUT_SPRINT~' -- Match name to number here https://docs.fivem.net/docs/game-references/controls/
+Config.AutoWinchOnDetach = true -- Automatically attach winch rope when detaching from bed
+Config.AutoAttach = true --Automatically attach a vehicle when it reaches the min winch length
+Config.Doublecheck = true -- Double locks the vehicle onto the bed to try and ensure its touching the bed
+
+Config.LegacyMove = false -- Set to true if the new winch method does not work for you
+
+
+--Bed Movement
+Config.BedSpeed = 0.0003 -- Speed of the bed movement
+Config.DisableUnloadOnUp = true --Prevent Unloading car when bed is up
+
+--NOTIFICATIONS--
+Config.Notifications = true -- See utils.lua for functions
+
+--TRANSLATIONS More customization in utils.lua including key controls
+Config.NotiUnLoadCompleteMessage = "Unload Complete"
+Config.NotiLoadCompleteMessage = "Loading Complete"
+Config.NotiBlockedMessage = "Unloading zone blocked"
+Config.NotiFBBlockedMessage = "Flatbed blocked or occupied"
+
+--========Target System========--
+Config.UseTarget = false --Enable Target system. Set up in utils.lua. Supports qb-target by default
+
+--If the below are disabled, it is recommened to set Config.ShowMarkers and Config.ShowHelp to false
+Config.DisableExtKeyControls = false --Disable key controls for bed control. Attach/Detach from inside vehicle separate
+Config.DisableInVehControl = false --Disable key controls for in vehicle.
+
+--========Markers & Prompts=======--
+--Increases tick rate from 0.01 to 0.08 - 0.1 when in range
+Config.ShowMarkers = true -- Display markers at interaction points
+Config.ShowHelp = true -- Display help prompts
+
+Config.MarkerDistance = 5.0 -- Distance from point to see marker
+Config.WaitTimer = 3000 -- Update rate to check for nearby trailer seconds * 1000 (Default 3000)
+
+Config.MessageDistance = 2.0 -- Distance from point to display message (Default 2.0)
+Config.Marker = {
+ type = 1, -- marker shape: https://docs.fivem.net/docs/game-references/markers/ (Default 27)
+
+ Size = 1.0, -- marker size (Default 2.0)
+
+ Color = { -- RGBA color
+ red = 100,
+ green = 200,
+ blue = 200,
+ alpha = 150
+ },
+ heightOffset = 0.0, -- Height from ground for marker. Marker at ground Z (Default 0.0)
+ Bob = false, -- Marker bobbing up and down (Default false)
+ faceCamera = false, -- Marker always faces camera (Default false)
+ rotate = false -- Marker rotates (Default false)
+}
+
+Config.Controlmessages = {
+ LowerBed = "Lower",
+ RaiseBed = "Raise bed",
+ AttachVehicle = "Attach/Detach",
+ WindWinch = "Wind",
+ ExtendWinch = "Unwind",
+ DetachWinch = "Detach Winch",
+ GrabWinch = "Grab Winch",
+ ReturnWinch = "Return Winch",
+ AttachWinch = "Attach Winch",
+ WheelLift = "WheelLift"
+}
+
+--========Trucks========--
+Config.Trucks = {
+
+ --Bagged
+ [GetHashKey('bcsandking5500wr2')] = {
+ type = 'rolling', -- Rolling for moving beds, static for flatbeds like the vanilla flatbed
+ boneName = 'misc_a', -- Name of the bone to attach to Generally embedded in the flatbed
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0, -- Max distance in meters the winch will unwind
+ BedControl = {vector3(-1.8,-4.5,-0.55),vector3(1.8,-4.5,-0.55)},
+ carPosition = vector3(0.0, 0.4, -0.1), -- Offset from the boneName position
+ carHeightOffset = 0.375, -- Height to adjust attached car by
+ winchBone = 'misc_b', -- Bone for winch Rope
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, -- How far backwards from the winch bone to check from
+ animation = true,
+ animExt = 1
+ },
+ [GetHashKey('ct660tow')] = {
+ type = 'rolling', -- Rolling for moving beds, static for flatbeds like the vanilla flatbed
+ boneName = 'misc_a', -- Name of the bone to attach to Generally embedded in the flatbed
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0, -- Max distance in meters the winch will unwind
+ BedControl = {vector3(-1.8,-4.5,-0.55),vector3(1.8,-4.5,-0.55)},
+ carPosition = vector3(0.0, 0.4, -0.1), -- Offset from the boneName position
+ carHeightOffset = 0.375, -- Height to adjust attached car by
+ winchBone = 'misc_b', -- Bone for winch Rope
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, -- How far backwards from the winch bone to check from
+ MinPos = 0.03, -- Position of the bed when raised fully
+ MaxPos = 0.26 -- Position of the bed when lowered fully
+ },
+ [GetHashKey('bcthauler2')] = {
+ type = 'trailer', -- Trailer
+ boneName = 'misc_a', -- Name of the bone to attach to Generally embedded in the flatbed
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0, -- Max distance in meters the winch will unwind
+ BedControl = {vector3(-1.0,4.0,-0.55),vector3(1.0,4.0,-0.55)},
+ winchBone = 'misc_b', -- Bone for winch Rope
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, -- How far backwards from the winch bone to check from
+ },
+ [GetHashKey('bc205500w')] = {
+ type = 'rolling',
+ boneName = 'misc_a',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-4.5,-0.55),vector3(1.8,-4.5,-0.55)},
+ carPosition = vector3(0.0, 0.8, 0.0),
+ carHeightOffset = 0.2,
+ winchBone = 'misc_b',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.028,
+ MaxPos = 0.26
+ },
+ [GetHashKey('bcsandking5500wr')] = {
+ type = 'rolling',
+ boneName = 'misc_a',
+ hasBedControl = true,
+ BedControl = {vector3(-1.8,-4.5,-0.55),vector3(1.8,-4.5,-0.55)},
+ carPosition = vector3(0.0, 0.8, 0.0),
+ carHeightOffset = -0.05,
+ winchBone = 'misc_b',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 3.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03, --Position of the bed when raised fully
+ MaxPos = 0.26 -- Position of the bed when lowered fully
+ },
+ --Code3
+ [GetHashKey('c3rollback')] = {
+ type = 'rolling',
+ boneName = 'misc_b',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-6.0,-0.55)},
+ carPosition = vector3(0.0, 0.5, 0.2),
+ carHeightOffset = -0.05,
+ winchBone = 'misc_a',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.02,
+ MaxPos = 0.25
+ },
+ [GetHashKey('c3pwrollback')] = {
+ type = 'rolling',
+ boneName = 'misc_b',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-4.6,-0.55)},
+ carPosition = vector3(0.0, 0.5, 0.2),
+ carHeightOffset = -0.05,
+ winchBone = 'misc_a',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.02,
+ MaxPos = 0.22
+ },
+ [GetHashKey('c3f350rollback')] = {
+ type = 'rolling',
+ boneName = 'misc_b',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-5.6,-0.55)},
+ carPosition = vector3(0.0, 0.5, 0.2),
+ carHeightOffset = -0.05,
+ winchBone = 'misc_a',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.02,
+ MaxPos = 0.23
+ },
+ [GetHashKey('c3navistar')] = {
+ type = 'rolling',
+ boneName = 'misc_b',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-5.2,-0.55),vector3(1.8,-5.2,-0.55)},
+ carPosition = vector3(0.0, 0.4, -0.4),
+ carHeightOffset = 0.0,
+ winchBone = 'misc_a',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.02,
+ MaxPos = 0.27
+ },
+ [GetHashKey('c3silvrollback')] = {
+ type = 'rolling',
+ boneName = 'misc_b',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-4.9,-0.55)},
+ carPosition = vector3(0.0, 0.5, -0.0),
+ carHeightOffset = -0.05,
+ winchBone = 'misc_a',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.02,
+ MaxPos = 0.23
+ },
+
+ --Redneck
+ [GetHashKey('f550rb')] = {
+ type = 'rolling',
+ staticBed = false,
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-4.75,-0.55),vector3(1.8,-4.75,-0.55)},
+ carPosition = vector3(0.0, -0.0, 0.0),
+ carHeightOffset = 0.2,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0,
+ winchOffset = 8.0,
+ MinPos = 0.00,
+ MaxPos = 0.33
+
+ },
+ [GetHashKey('f550rbc')] = {
+ type = 'rolling',
+ staticBed = false,
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-4.75,-0.55),vector3(1.8,-4.75,-0.55)},
+ carPosition = vector3(0.0, -0.0, 0.0),
+ carHeightOffset = -0.2,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.33
+ },
+ [GetHashKey('20ramrbc')] = {
+ type = 'rolling',
+ staticBed = false,
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-4.75,-0.55),vector3(1.8,-4.75,-0.55)},
+ carPosition = vector3(0.0, -0.0, 0.0),
+ carHeightOffset = 0,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.33
+
+ },
+
+ --https://www.gta5-mods.com/vehicles/freightliner-m2-crew-cab-flatbed-add-on-script-beta [[VEHICLE ONLY]]
+ [GetHashKey('flatbedm2')] = {
+ type = 'rolling',
+ boneName = 'misc_a',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-4.5,-0.55), vector3(1.8,-4.5,-0.55)},
+ carPosition = vector3(0.0, 1.2, -0.1),
+ carHeightOffset = 0.2,
+ winchBone = 'misc_b',
+ winchDistCheck = 10.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0 , --How far backwards from the winch bone to check from
+ MinPos = 0.025,
+ MaxPos = 0.22
+ },
+
+ --LordGooben
+ [GetHashKey('lgc19flatbed')] = {
+ type = 'rolling',
+ boneName = 'misc_a',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-4.5,-0.55)},
+ carPosition = vector3(0.0, 1.2, -0.1),
+ carHeightOffset = 0.5,
+ winchBone = 'misc_b',
+ winchDistCheck = 10.0,
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.028,
+ MaxPos = 0.23
+ },
+
+ --MAOAM
+ [GetHashKey('biftowmfd2')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-1.5,0.55),vector3(1.8,-1.5,0.55)},
+ unloadPos = {vector3(-2.0,-2.0,-0.55)},
+ carPosition = vector3(0.0, -0.1, 0.06),
+ carHeightOffset = 0.375,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 5.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.25,
+ wheellift = 5
+
+ },
+ [GetHashKey('389towmfd2')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-1.5,0.55),vector3(1.8,-1.5,0.55)},
+ carPosition = vector3(0.0, -0.1, 0.0),
+ carHeightOffset = 0.375,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.25,
+ wheellift = 5
+
+ },
+ [GetHashKey('389towmfd3')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-1.5,0.55),vector3(1.8,-1.5,0.55)},
+ carPosition = vector3(0.0, -0.1, 0.06),
+ carHeightOffset = 0.375,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.25,
+ wheellift = 5
+
+ },
+ [GetHashKey('389towmfd4')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-1.9,0.55),vector3(1.8,-1.9,0.55)},
+ carPosition = vector3(0.0, -0.3, -0.12),
+ carHeightOffset = 0.375,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.22,
+ wheellift = 5
+
+ },
+ [GetHashKey('389towmfd5')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-1.9,0.55),vector3(1.8,-1.9,0.55)},
+ carPosition = vector3(0.0, -0.3, -0.12),
+ carHeightOffset = 0.375,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.22,
+ wheellift = 5
+
+ },
+ [GetHashKey('389towmfd6')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 12.0,
+ BedControl = {vector3(-1.8,-2.5,0.55), vector3(1.8,-2.5,0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = 0.14,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.035,
+ MaxPos = 0.25,
+ wheellift = 5
+
+ },
+
+ [GetHashKey('389towmfd7')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-1.9,0.55),vector3(1.8,-1.9,0.55)},
+ carPosition = vector3(0.0, -1.2, -0.08),
+ carHeightOffset = 0.375,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.036,
+ MaxPos = 0.24,
+ wheellift = 5
+
+ },
+
+ [GetHashKey('112towmfd4')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 11.0,
+ BedControl = {vector3(-1.8,-7.5,-0.55),vector3(1.8,-7.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.2),
+ carHeightOffset = 0.0,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.25,
+ wheellift = 5
+ },
+ [GetHashKey('t112towmfd4')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 11.0,
+ BedControl = {vector3(-1.8,-7.5,-0.55),vector3(1.8,-7.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.2),
+ carHeightOffset = 0.0,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.25,
+ wheellift = 5
+ },
+ [GetHashKey('108towmfd4')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-3.0,-0.55),vector3(1.8,-3.0,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = 0.4,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.25,
+ wheellift = 5
+ },
+ [GetHashKey('t108towmfd4')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-3.0,-0.55),vector3(1.8,-3.0,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = 0.4,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.25,
+ wheellift = 5
+ },
+ [GetHashKey('108utwmfd3')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-3.0,-0.55),vector3(1.8,-3.0,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = 0.55,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.21
+ },
+
+ [GetHashKey('440towmfd4')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-6.5,-0.55),vector3(1.8,-6.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = 0.1,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.24,
+ wheellift = 5
+ },
+ [GetHashKey('t440towmfd4')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-6.5,-0.55),vector3(1.8,-6.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = 0.1,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.24,
+ wheellift = 5
+ },
+ [GetHashKey('440towmfd2')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-5.5,-0.55),vector3(1.8,-5.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = 0.45,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.26,
+ wheellift = 5
+ },
+ [GetHashKey('t440towmfd2')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-5.5,-0.55),vector3(1.8,-5.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = 0.45,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.26,
+ wheellift = 5
+ },
+ [GetHashKey('cortowmfd4')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-5.25,-0.55),vector3(1.8,-5.25,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = 0.05,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.26,
+ wheellift = 5
+ },
+ [GetHashKey('tcortowmfd4')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-5.25,-0.55),vector3(1.8,-5.25,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = 0.05,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.26,
+ wheellift = 5
+ },
+ [GetHashKey('112utwmfd2')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-2.5,-0.55),vector3(1.8,-2.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = 0.6,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.25
+ },
+
+ [GetHashKey('112utwmfd3')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-2.5,-0.55),vector3(1.8,-2.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = 0.6,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.25
+ },
+
+ [GetHashKey('112towmfd3')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-7.0,-0.55),vector3(1.8,-7.0,-0.55)},
+ carPosition = vector3(0.0, -0.1, 0.0),
+ carHeightOffset = 0.25,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.23,
+ wheellift = 5
+
+ },
+
+ [GetHashKey('112towmfd2')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-5.5,-0.55),vector3(1.8,-5.5,-0.55)},
+ carPosition = vector3(0.0, -0.1, 0.0),
+ carHeightOffset = 0.3,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.23,
+ wheellift = 5
+ },
+ [GetHashKey('t112towmfd2')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-5.5,-0.55),vector3(1.8,-5.5,-0.55)},
+ carPosition = vector3(0.0, -0.1, 0.0),
+ carHeightOffset = 0.3,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.0,
+ MaxPos = 0.23,
+ wheellift = 5
+ },
+ [GetHashKey('t112towmfd3')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-5.5,-0.55),vector3(1.8,-5.5,-0.55)},
+ carPosition = vector3(0.0, -0.1, 0.0),
+ carHeightOffset = 0.3,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.23,
+ wheellift = 5
+ },
+ [GetHashKey('t112towmfd4')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-5.5,-0.55),vector3(1.8,-5.5,-0.55)},
+ carPosition = vector3(0.0, -0.1, 0.0),
+ carHeightOffset = 0.3,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.23,
+ wheellift = 5
+ },
+ [GetHashKey('112towmfd5')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-3.0,-0.55),vector3(1.8,-3.0,-0.55)},
+ carPosition = vector3(0.0, -0.1, 0.0),
+ carHeightOffset = 0.35,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.24,
+ wheellift = 5
+ },
+ [GetHashKey('t112towmfd5')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-3.0,-0.55),vector3(1.8,-3.0,-0.55)},
+ carPosition = vector3(0.0, -0.1, 0.0),
+ carHeightOffset = 0.35,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.24,
+ wheellift = 5
+ },
+ [GetHashKey('112towmfd6')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 12.0,
+ BedControl = {vector3(-1.8,-3.0,0.55),vector3(1.8,-3.0,0.55)},
+ carPosition = vector3(0.0, -1.2, -0.08),
+ carHeightOffset = 0.375,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.01,
+ MaxPos = 0.24,
+ wheellift = 5
+
+ },
+ [GetHashKey('t112towmfd6')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 12.0,
+ BedControl = {vector3(-1.8,-3.0,0.55),vector3(1.8,-3.0,0.55)},
+ carPosition = vector3(0.0, -1.2, -0.08),
+ carHeightOffset = 0.375,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.24,
+ wheellift = 5
+
+ },
+ [GetHashKey('112boxmfd2')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-6.0,-0.55),vector3(1.8,-6.0,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = 0.3,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.25,
+ wheellift = 5
+ },
+
+ [GetHashKey('800towmfd4')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-2.5,-0.55),vector3(1.8,-7.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = 0.0,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.0,
+ MaxPos = 0.21
+ },
+
+ [GetHashKey('550towmfd2')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-1.5,0.55),vector3(1.8,-1.5,0.55)},
+ carPosition = vector3(0.0, -0.1, -0.5),
+ carHeightOffset = 0.375,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 5.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.17,
+ wheellift = 5
+ },
+ [GetHashKey('t550towmfd2')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-1.5,0.55),vector3(1.8,-1.5,0.55)},
+ carPosition = vector3(0.0, -0.1, -0.5),
+ carHeightOffset = 0.375,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 5.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.17,
+ wheellift = 5
+ },
+
+ --MAOAM Public Release https://www.gta5-mods.com/vehicles/peterbilt-337-tuning-by-mfd-fivem
+ [GetHashKey('Gtow')] = {
+ type = 'rolling',
+ boneName = 'misc_a',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-4.0,-0.55),vector3(1.8,-4.0,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.2),
+ carHeightOffset = 0.0,
+ winchBone = 'misc_b',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 10.0, --How far backwards from the winch bone to check from
+ MinPos = 0.01,
+ MaxPos = 0.2
+ },
+
+ [GetHashKey('106towmfd1')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-1.5,-0.55),vector3(1.8,-1.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, -1.0),
+ carHeightOffset = 0.35, --Will vary per truck
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.21,
+ wheellift = 5
+ },
+ [GetHashKey('t106towmfd1')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-1.5,-0.55),vector3(1.8,-1.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, -1.0),
+ carHeightOffset = 0.35, --Will vary per truck
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.21,
+ wheellift = 5
+ },
+ [GetHashKey('106towmfd2')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-1.5,-0.55),vector3(1.8,-1.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, -1.0),
+ carHeightOffset = 0.35, --Will vary per truck
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.21,
+ wheellift = 5
+ },
+ [GetHashKey('t106towmfd2')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-1.5,-0.55),vector3(1.8,-1.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, -1.0),
+ carHeightOffset = 0.35, --Will vary per truck
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.21,
+ wheellift = 5
+ },
+ [GetHashKey('106towmfd3')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-1.5,-0.55),vector3(1.8,-1.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, -1.0),
+ carHeightOffset = 0.35, --Will vary per truck
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.21,
+ wheellift = 5
+ },
+ [GetHashKey('t106towmfd3')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-1.5,-0.55),vector3(1.8,-1.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, -1.0),
+ carHeightOffset = 0.35, --Will vary per truck
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.00,
+ MaxPos = 0.21,
+ wheellift = 5
+ },
+ --Paul
+ [GetHashKey('rollback2')] = {
+ type = 'rolling',
+ boneName = 'misc_a',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-4.5,-0.55),vector3(1.8,-4.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = -0.1,
+ winchBone = 'misc_b',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.025,
+ MaxPos = 0.23
+ },
+ [GetHashKey('rollback3')] = {
+ type = 'rolling',
+ boneName = 'misc_a',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-4.5,-0.55),vector3(1.8,-4.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = -0.1,
+ winchBone = 'misc_b',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.025,
+ MaxPos = 0.23
+ },
+ [GetHashKey('rollback4')] = {
+ type = 'rolling',
+ boneName = 'misc_a',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-4.9,-0.55),vector3(1.8,-4.9,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = -0.2,
+ winchBone = 'misc_b',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.23
+ },
+ [GetHashKey('rollback14')] = {
+ type = 'rolling',
+ boneName = 'misc_a',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-4.5,-0.55),vector3(1.8,-4.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = -0.22,
+ winchBone = 'misc_b',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.032,
+ MaxPos = 0.23
+ },
+ [GetHashKey('rollback1')] = {
+ type = 'rolling',
+ boneName = 'misc_a',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-4.5,-0.55),vector3(1.8,-4.5,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = -0.22,
+ winchBone = 'misc_b',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.032,
+ MaxPos = 0.23
+ },
+
+ --Flair
+ [GetHashKey('independent389')] = {
+ type = 'rolling',
+ boneName = 'misc_z',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-6.4,-0.55),vector3(1.8,-6.4,-0.55)},
+ carPosition = vector3(0.0, -0.2, 0.0),
+ carHeightOffset = -0.05,
+ winchBone = 'attach_male',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, --How far backwards from the winch bone to check from
+ MinPos = 0.03,
+ MaxPos = 0.23,
+ wheellift = 5
+ },
+
+ --Other
+ [GetHashKey('towy')] = {
+ type = 'rolling',
+ boneName = 'misc_b',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-5.5,-0.55),vector3(1.8,-5.5,-0.55)},
+ carPosition = vector3(0.0, 0.4, -0.1),
+ carHeightOffset = -0.1,
+ winchBone = 'misc_a',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.028,
+ MaxPos = 0.26
+ },
+
+ [GetHashKey('ramtow')] = {
+ type = 'rolling',
+ boneName = 'misc_f',
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0,
+ BedControl = {vector3(-1.8,-5.0,-0.55),vector3(1.8,-5.0,-0.55)},
+ carPosition = vector3(0.0, -0.5, 0.0),
+ carHeightOffset = 0.15,
+ winchBone = 'misc_w',
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 8.0, --How far backwards from the winch bone to check from
+ MinPos = 0.028,
+ MaxPos = 0.26
+ },
+
+
+ --STATIC BEDS
+ [GetHashKey('flatbed')] = {
+ type = 'static',
+ carloadPos = vector3(0.0, -10.0, -0.55),
+ BedControl = {vector3(-2.0, -5.0, -0.55)},
+ carPosition = vector3(0.0, -2.3, 0.4),
+ bikePositions = {vector3(0.0, -2.3, 0.8)},
+ carHeightOffset = -0.7,
+ },
+ [GetHashKey('slamtruck')] = {
+ type = 'static',
+ carloadPos = vector3(0.0, -8.0, -0.55),
+ BedControl = {vector3(-2.0, -4.0, -0.55)},
+ carPosition = vector3(0.0, -2.3, 0.4),
+ bikePositions = {vector3(0.0, -2.3, 0.8)},
+ carHeightOffset = -0.7,
+ chkDist = 4.0
+ },
+
+ --PICKUP TRUCK EXAMPLE
+ [GetHashKey('sadler')] = {
+ type = 'static',
+ carloadPos = vector3(0.0, -5.5, -0.55),
+ BedControl = {vector3(-1.5, -3.0, -0.55)},
+ carPosition = vector3(0.0, -2.2, 0.8),
+ bikePositions = {vector3(0.0, -2.3, 0.8)},
+ carHeightOffset = -0.6,
+ },
+
+ --Corentin
+ [GetHashKey('flatbed1amber')] = {
+ type = 'static',
+ carloadPos = vector3(-1.0, -9.0, -0.55),
+ BedControl = {vector3(-2.0, -5.0, -0.55)},
+ carPosition = vector3(0.0, -1.9, 0.1),
+ bikePositions = {vector3(0.0, -2.3, 0.8)},
+ carHeightOffset = -0.3,
+ },
+
+ [GetHashKey('flatbed2amber')] = {
+ type = 'static',
+ carloadPos = vector3(-1.0, -9.0, -0.55),
+ BedControl = {vector3(-2.0, -5.0, -0.55)},
+ carPosition = vector3(0.0, -3.3, 0.0),
+ bikePositions = {vector3(0.0, -2.3, 0.8)},
+ carHeightOffset = -0.3,
+ },
+
+ [GetHashKey('flatbed3amber')] = {
+ type = 'static',
+ carloadPos = vector3(-1.0, -9.0, -0.55),
+ BedControl = {vector3(-2.0, -5.0, -0.55)},
+ carPosition = vector3(0.0, -3.3, 0.0),
+ bikePositions = {vector3(0.0, -2.3, 0.8)},
+ carHeightOffset = -0.3,
+ },
+ --lorewave
+ [GetHashKey('nkbrickade')] = {
+ type = 'rolling', -- Rolling for moving beds, static for flatbeds like the vanilla flatbed
+ boneName = 'scoop', -- Name of the bone to attach to Generally embedded in the flatbed
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0, -- Max distance in meters the winch will unwind
+ BedControl = {vector3(-1.8,-4,-0.55),vector3(1.8,-4,-0.55)},
+ carPosition = vector3(0.0, 0.4, -0.1), -- Offset from the boneName position
+ carHeightOffset = 17.9, -- Height to adjust attached car by
+ winchBone = 'misc_x', -- Bone for winch Rope
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, -- How far backwards from the winch bone to check from
+ MinPos = 0.03, -- Position of the bed when raised fully
+ MaxPos = 0.28, -- Position of the bed when lowered fully
+ bedOffset = 19.5,
+ chkDist = 6.0,
+ unloadOffset = 0.1
+ },
+ [GetHashKey('nkguardian')] = {
+ type = 'rolling', -- Rolling for moving beds, static for flatbeds like the vanilla flatbed
+ boneName = 'scoop', -- Name of the bone to attach to Generally embedded in the flatbed
+ hasBedControl = true,
+ MaxUnwindDistance = 10.0, -- Max distance in meters the winch will unwind
+ BedControl = {vector3(-1.8,-4.5,-0.55),vector3(1.8,-4.5,-0.55)},
+ carPosition = vector3(0.0, -0.1, -0.1), -- Offset from the boneName position
+ carHeightOffset = 13.55, -- Height to adjust attached car by
+ winchBone = 'misc_x', -- Bone for winch Rope
+ winchDistCheck = 5.0, -- How far from winchOffset to check for a vehicle
+ winchOffset = 12.0, -- How far backwards from the winch bone to check from
+ MinPos = 0.03, -- Position of the bed when raised fully
+ MaxPos = 0.28, -- Position of the bed when lowered fully
+ bedOffset = 14.5,
+ chkDist = 5.0,
+ unloadOffset = 0.1
+ },
+}
+
+Config.BlacklistedVehs = {
+ 'kamacho'
+}
\ No newline at end of file
diff --git a/resources/[EGRP-CarPacks]/ebu_flatbeds/fxmanifest.lua b/resources/[EGRP-CarPacks]/ebu_flatbeds/fxmanifest.lua
new file mode 100644
index 000000000..5cd94b750
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/ebu_flatbeds/fxmanifest.lua
@@ -0,0 +1,27 @@
+fx_version 'adamant'
+game 'gta5'
+lua54 'yes'
+
+description 'Flatbeds Winch Script'
+author 'Theebu'
+
+version '0.7.7b'
+
+shared_scripts {
+ 'config.lua',
+}
+
+client_scripts {
+ 'client/utils.lua',
+ 'client/client.lua'
+}
+
+server_scripts {
+ 'server/server.lua'
+}
+
+escrow_ignore {
+ 'config.lua',
+ 'client/utils.lua'
+}
+dependency '/assetpacks'
\ No newline at end of file
diff --git a/resources/[EGRP-CarPacks]/ebu_flatbeds/server/server.lua b/resources/[EGRP-CarPacks]/ebu_flatbeds/server/server.lua
new file mode 100644
index 000000000..be7f213d4
Binary files /dev/null and b/resources/[EGRP-CarPacks]/ebu_flatbeds/server/server.lua differ
diff --git a/resources/[EGRP-CarPacks]/ebu_trailer/.fxap b/resources/[EGRP-CarPacks]/ebu_trailer/.fxap
new file mode 100644
index 000000000..5be7789d0
Binary files /dev/null and b/resources/[EGRP-CarPacks]/ebu_trailer/.fxap differ
diff --git a/resources/[EGRP-CarPacks]/ebu_trailer/client/client.lua b/resources/[EGRP-CarPacks]/ebu_trailer/client/client.lua
new file mode 100644
index 000000000..f060ee1fb
Binary files /dev/null and b/resources/[EGRP-CarPacks]/ebu_trailer/client/client.lua differ
diff --git a/resources/[EGRP-CarPacks]/ebu_trailer/client/utils.lua b/resources/[EGRP-CarPacks]/ebu_trailer/client/utils.lua
new file mode 100644
index 000000000..f70ada36a
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/ebu_trailer/client/utils.lua
@@ -0,0 +1,151 @@
+RegisterKeyMapping("+trailerAttach", Config.Controlmessages.AttachVehicle, "keyboard", "g")
+RegisterKeyMapping("+trailerInteract", Config.Controlmessages.RampInteract, "keyboard", "e")
+RegisterKeyMapping("+trailerDetach", Config.Controlmessages.DetachAllVehicle, "keyboard", "h")
+
+RegisterKeyMapping("+trailerWarp", "Get in attached vehicle", "keyboard", "f")
+RegisterKeyMapping("+trailerConnect", "Connect any trailer", "keyboard", "j")
+
+function NotiAtt() -- Attached notification
+ BeginTextCommandThefeedPost("STRING")
+ AddTextComponentSubstringPlayerName(Config.NotiLoadMessage)
+ EndTextCommandThefeedPostTicker(true, true)
+end
+
+function NotiDet() -- Detached notification
+ BeginTextCommandThefeedPost("STRING")
+ AddTextComponentSubstringPlayerName(Config.NotiUnLoadMessage)
+ EndTextCommandThefeedPostTicker(true, true)
+end
+
+-- Use this function for job locking. If the job is correct, return true.
+-- Please refer to your framework's job system for how to implement, I do not support
+-- job checking integration. -Theebu
+function allowed()
+ return true
+end
+
+--This function returns if the vehicle is locked or not when trying to get in the loaded vehicle from next to the trailer
+--false = NOT locked true == LOCKED
+function IsVehicleLocked(car)
+
+ return DecorGetInt(car, '_VEH_DOOR_LOCK_STATUS') == 2 or DecorGetInt(car, '_VEH_DOOR_LOCK_STATUS') == 10
+end
+
+--Help Text Messages
+function message(lineOne, lineTwo, lineThree, duration)
+ BeginTextCommandDisplayHelp("THREESTRINGS")
+ AddTextComponentSubstringPlayerName(lineOne)
+ AddTextComponentSubstringPlayerName(lineTwo or "")
+ AddTextComponentSubstringPlayerName(lineThree or "")
+
+ -- shape (always 0), loop (bool), makeSound (bool), duration (5000 max 5 sec)
+ EndTextCommandDisplayHelp(0, false, false, duration or 5000)
+end
+
+if Config.UseTarget then
+ --QB CORE
+ if Config.Target == 'qb-target' then
+ exports['qb-target']:AddTargetBone({'boot', 'chassis', "door_dside_f", "door_dside_r", "door_pside_f", "door_pside_f", "bonnet"}, {
+ options = {
+ {
+ icon = 'fa-solid fa-truck-ramp-box',
+ label = 'Toggle Ramp',
+ action = function(entity)
+ interactCheck(entity)
+ end,
+ canInteract = function(entity, distance, data)
+ return Config.Trailers[GetEntityModel(entity)] and allowed()
+ end,
+ },
+ {
+ icon = 'fa-solid fa-lock',
+ label = 'Attach load',
+ action = function(entity)
+ attachAllCheck(entity)
+ end,
+ canInteract = function(entity, distance, data)
+ return Config.Trailers[GetEntityModel(entity)] and allowed()
+ end,
+ },
+ {
+ icon = 'fa-solid fa-lock-open',
+ label = 'Detach load',
+ action = function(entity)
+ detachAllCheck(entity)
+ end,
+ canInteract = function(entity, distance, data)
+ return Config.Trailers[GetEntityModel(entity)] and allowed()
+ end,
+ },
+ {
+ icon = 'fa-solid fa-lock-open',
+ label = 'Attach/Detach Vehicle',
+ action = function(entity)
+ attachCheck2(entity)
+ end,
+ canInteract = function(entity, distance, data)
+ local vehCoords = GetEntityCoords(entity)
+ local vehicle = getVehicleInDirection(vector3(vehCoords.x, vehCoords.y, vehCoords.z + 1.0), vector3(vehCoords.x, vehCoords.y, vehCoords.z - 8.0), entity)
+ return allowed() and DoesEntityExist(vehicle) and Config.Trailers[GetEntityModel(vehicle)] and vehicle ~= entity
+ end,
+ }
+ },
+ distance = 5.5,
+ })
+ elseif Config.Target == 'ox_target' then
+ exports["ox_target"]:addGlobalVehicle(
+ {
+ {
+ icon = 'fa-solid fa-truck-ramp-box',
+ label = 'Toggle Ramp',
+ bones = {'boot', 'chassis', "door_dside_f", "door_dside_r", "door_pside_f", "door_pside_f", "bonnet"},
+ distance = 2.0,
+ canInteract = function(entity, distance, data)
+ return Config.Trailers[GetEntityModel(entity)] and allowed()
+ end,
+ onSelect = function(data)
+ interactCheck(data.entity)
+ end
+ },
+ {
+ icon = 'fa-solid fa-lock',
+ label = 'Attach load',
+ bones = 'boot', 'chassis', "door_dside_f", "door_dside_r", "door_pside_f", "door_pside_f", "bonnet",
+ distance = 2.0,
+ canInteract = function(entity, distance, data)
+ return Config.Trailers[GetEntityModel(entity)] and allowed()
+ end,
+ onSelect = function(data)
+ attachAllCheck(data.entity)
+ end
+ },
+ {
+ icon = 'fa-solid fa-lock-open',
+ label = 'Detach load',
+ bones = 'boot', 'chassis', "door_dside_f", "door_dside_r", "door_pside_f", "door_pside_f", "bonnet",
+ distance = 2.0,
+ canInteract = function(entity, distance, data)
+ return Config.Trailers[GetEntityModel(entity)] and allowed()
+ end,
+ onSelect = function(data)
+ detachAllCheck(data.entity)
+ end
+ },
+ {
+ icon = 'fa-solid fa-lock-open',
+ label = 'Attach/Detach Vehicle',
+ bones = 'boot', 'chassis', "door_dside_f", "door_dside_r", "door_pside_f", "door_pside_f", "bonnet",
+ distance = 2.0,
+ canInteract = function(entity, distance, data)
+ local vehCoords = GetEntityCoords(entity)
+ local vehicle = getVehicleInDirection(vector3(vehCoords.x, vehCoords.y, vehCoords.z + 1.0), vector3(vehCoords.x, vehCoords.y, vehCoords.z - 8.0), entity)
+ return allowed() and DoesEntityExist(vehicle) and Config.Trailers[GetEntityModel(vehicle)] and vehicle ~= entity
+ end,
+ onSelect = function(data)
+ attachCheck2(data.entity)
+ end
+ }
+ }
+ )
+ end
+end
diff --git a/resources/[EGRP-CarPacks]/ebu_trailer/config.lua b/resources/[EGRP-CarPacks]/ebu_trailer/config.lua
new file mode 100644
index 000000000..12978cef1
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/ebu_trailer/config.lua
@@ -0,0 +1,352 @@
+Config = {}
+
+Config.CheckDistance = 11 -- Distance to check for nearby trailers
+Config.InteractDistance = 2.5 -- Distance from point control works
+
+Config.rampInstant = false -- Instantly open/close ramp. Enable if ramps won't close
+
+Config.AttachNotify = true -- Enable notifications
+Config.NotiLoadMessage = 'Vehicle Loaded'
+Config.NotiUnLoadMessage = 'Vehicle Unloaded'
+
+Config.UseExternalTrailerConnect = false -- Set to True if you want to use ebu_trailerconnect with the whitelist/blacklist control
+--========Interaction Type========--
+--======[[see utils.lua to modify]]======--
+Config.UseTarget = false -- If True, Markers & Prompts will be disabled except for in vehicle
+Config.Target = 'qb-target'
+
+
+--========Markers & Prompts=======--
+--Increases tick rate from 0.01 to 0.08 - 0.1 when in range
+Config.WaitTimer = 3000 -- Update rate to check for nearby trailer seconds * 1000 (Default 3000)
+Config.ShowMarkers = true -- Display markers at interaction points
+Config.ShowHelp = true -- Display help prompts
+Config.MessageDistance = 2.0 -- Distance from point to display message (Default 2.0)
+Config.Marker = {
+ type = 1, -- marker shape: https://docs.fivem.net/docs/game-references/markers/ (Default 27)
+
+ Size = 1.0, -- marker size (Default 2.0)
+
+ Color = { -- RGBA color
+ red = 100,
+ green = 200,
+ blue = 200,
+ alpha = 150
+ },
+ heightOffset = 0.0, -- Height from ground for marker. Marker at ground Z (Default 0.0)
+ Bob = false, -- Marker bobbing up and down (Default false)
+ faceCamera = false, -- Marker always faces camera (Default false)
+ rotate = false -- Marker rotates (Default false)
+}
+Config.Controlmessages = {
+ RampInteract = " Toggle Ramp",
+ AttachVehicle = " Attach/Detach vehicle",
+ AttachAllVehicle = " Attach All",
+ DetachAllVehicle = " Detach All",
+}
+
+
+
+--========Trailers=======--
+--[[ CONFIG EXAMPLE AND EXPLANATIONS
+
+ [GetHashKey('[MODELNAME]')] = { -- Enter the spawn name
+ hasRamp = true, -- true or false : If false, trailer functions still work but no interaction for the ramp will be present
+
+ rampPos = {vector3(-1.8, -5.5, -0.5), vector3(1.8, -5.5, -0.5)}, -- array | (x,y,z) positon from center of trailer. Point of ramp interaction circle
+ isRampExtra = true, -- (optional) true or false : Sets if the ramp is an extra. If false or not present, treats as a door
+ rampDoorNum = 3, -- door or extra number | Can be an array of numbers
+ doorwithRampNums = {2,3}, -- doors that will open or close when the ramp is toggled
+ extraswithRampNums = {-1,2} -- extras that will toggle when the ramp is toggled. If negative, will set the extra to be opposite the door
+ },
+
+]]
+Config.Trailers = {
+
+ [GetHashKey('blomenroehr')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(1.5, -3.0, -0.45), vector3(-1.5, -3.0, -0.45)},
+ rampDoorNum = 5,
+ },
+
+ [GetHashKey('3ctrailer')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-2.0,-4.0,0.25),vector3(2.0,-4.0,0.25)},
+ rampDoorNum = 5,
+ },
+
+
+ [GetHashKey('cotrailer')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-2.0,-4.0,-0.55),vector3(2.0,-4.0,-0.55)},
+ rampDoorNum = 5,
+
+ },
+ [GetHashKey('shauler')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-2.0,-4.0,0.25),vector3(2.0,-4.0,0.25)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('godzcoe')] = {
+ hasRamp = false,
+
+ rampPos = {vector3(-2.0,-4.0,-0.55),vector3(2.0,-4.0,-0.55)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('thauler')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(1.5, -3.0, -0.25), vector3(-1.5, -3.0, -0.25)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('btrailer')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(1.5, -3.0, -0.45), vector3(-1.5, -3.0, -0.45)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('bclandscape')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(1.5, -4.0, -0.45), vector3(-1.5, -4.0, -0.45)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('trailersmall')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(1.5, -4.0, -0.45), vector3(-1.5, -4.0, -0.45)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('camperman')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(2.0, -6.0, 0.1), vector3(-1.5, -6.0, 0.1)},
+ rampDoorNum = 4,
+ },
+ [GetHashKey('chauler')] = {
+
+ attNode = 'boot',
+ heightOff = 0.5,
+ hasRamp = true,
+
+ rampPos = {vector3(1.5, -2.7, -0.25), vector3(-1.5, -2.7, -0.25)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('cartrailer')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(1.5, -3.7, -1.0), vector3(-1.5, -3.7, -1.0)},
+ isRampExtra = true,
+ rampDoorNum = 5,
+
+ },
+ [GetHashKey('semihauler')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -7.5, -1.4), vector3(1.8, -7.5, -1.4)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('bigtex40')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -5.0, -0.8), vector3(1.8, -5.0, -0.8)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('loadtrail')] = {
+ hasRamp = true,
+ isRampExtra = true,
+
+ rampPos = {vector3(-1.8, -5.0, -0.8), vector3(1.8, -5.0, -0.8)},
+ rampDoorNum = 1,
+ },
+ [GetHashKey('bigtex20')] = { --bigtex20hasRamp = true,
+
+ rampPos = {vector3(-1.8, -3.0, -0.8), vector3(1.8, -3.0, -0.8)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('godzhauler')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -5.0, 0.1), vector3(1.8, -5.0, 0.1)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('godzenclosed')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -5.5, -0.5), vector3(1.8, -5.5, -0.5)},
+ isRampExtra = true,
+ rampDoorNum = 3,
+ doorwithRampNums = {2,3},
+ },
+ [GetHashKey('enclosedgoose')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -5.5, -0.5), vector3(1.8, -5.5, -0.5)},
+ rampDoorNum = {0,5},
+ },
+ [GetHashKey('godzbenson')] = {
+
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -5.5, -1.0), vector3(1.8, -5.5, -1.0)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('trailers3')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -5.5, -3.0), vector3(1.8, -5.5, -3.0)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('trflat')] = {
+ hasRamp = false,
+
+ rampPos = {vector3(-1.8, -5.5, 0.0), vector3(1.8, -5.5, 0.0)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('17fontaine')] = {
+ hasRamp = false,
+
+ rampPos = {vector3(-1.8, -5.5, -3.0), vector3(1.8, -5.5, -3.0)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('17fontainev2')] = {
+ hasRamp = false,
+
+ rampPos = {vector3(-1.8, -5.5, -3.0), vector3(1.8, -5.5, -3.0)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('17fontainev3')] = {
+ hasRamp = false,
+
+ rampPos = {vector3(-1.8, -5.5, -3.0), vector3(1.8, -5.5, -3.0)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('17fontainev4')] = {
+ hasRamp = false,
+
+ rampPos = {vector3(-1.8, -5.5, -3.0), vector3(1.8, -5.5, -3.0)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('20fttrailer')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(1.5, -3.7, -1.0), vector3(-1.5, -3.7, -1.0)},
+ isRampExtra = true,
+ rampDoorNum = 3,
+
+ },
+ [GetHashKey('8220b')] = {
+
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -3.0, -0.1), vector3(1.8, -3.0, -0.1)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('8220')]= {
+
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -3.0, -0.1), vector3(1.8, -3.0, -0.1)},
+ rampDoorNum = 5,
+
+ },
+ [GetHashKey('8250')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -9.0, 0.1), vector3(1.8, -9.0, 0.1)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('pjutility')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(1.5, -3.0, 0.2), vector3(-1.5, -3.0, 0.2)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('bigtexb')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(2.5, -4.0, -1.0), vector3(-2.5, -4.0, -1.0)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('ehauler')] = {
+
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -5.5, -0.0), vector3(1.8, -5.5, -0.0)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('pjtrailer')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -5.0, -1.0), vector3(1.8, -5.0, -1.0)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('ctrailer')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -5.5, -0.6), vector3(1.8, -5.5, -0.6)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('btex20')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(2.0, -5.0, -0.0), vector3(-2.0, -5.0, 0.0)},
+ rampDoorNum = 5,
+
+ },
+ [GetHashKey('40ft')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -5.0, -0.8), vector3(1.8, -5.0, -0.8)},
+ isRampExtra = true,
+ rampDoorNum = 3,
+
+ },
+ [GetHashKey('eagerbeaver')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(2.0, -5.0, -0.0), vector3(-2.0, -5.0, 0.0)},
+ rampDoorNum = 5,
+
+ },
+ [GetHashKey('valdeztrailer')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(1.5, -3.0, -0.45), vector3(-1.5, -3.0, -0.45)},
+ rampDoorNum = 5,
+ },
+ [GetHashKey('zJuksCarHauler40ft')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -12.0, 0.1), vector3(1.8, -12.0, 0.1)},
+ isRampExtra = true,
+ rampDoorNum = 6,
+ },
+
+ [GetHashKey('trailkinght')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -5.0, -0.8), vector3(1.8, -5.0, -0.8)},
+ isRampExtra = true,
+ rampDoorNum = {8,9},
+ },
+ [GetHashKey('boogie36ftr')] = {
+ hasRamp = true,
+
+ rampPos = {vector3(-1.8, -5.0, -0.8), vector3(1.8, -5.0, -0.8)},
+ isRampExtra = true,
+ rampDoorNum = 1,
+ },
+}
+
+--========Vehicles with Toggled Extras=======--
+-- When a vehicle is attached, selected extras will be turned on. Useful for models with tie down extras
+
+-- Can be hashes or strings
+Config.TogVehs = {
+ --['kamacho'] = {1},
+}
\ No newline at end of file
diff --git a/resources/[EGRP-CarPacks]/ebu_trailer/fxmanifest.lua b/resources/[EGRP-CarPacks]/ebu_trailer/fxmanifest.lua
new file mode 100644
index 000000000..e6b0f60f6
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/ebu_trailer/fxmanifest.lua
@@ -0,0 +1,23 @@
+fx_version 'adamant'
+game 'gta5'
+
+description 'Trailer Script'
+author 'theebu'
+lua54 'yes'
+version '0.6.3'
+
+client_scripts {
+ 'config.lua',
+ 'client/client.lua',
+ 'client/utils.lua'
+}
+
+server_scripts {
+ 'server/server.lua'
+}
+
+escrow_ignore {
+ 'config.lua',
+ 'client/utils.lua'
+}
+dependency '/assetpacks'
\ No newline at end of file
diff --git a/resources/[EGRP-CarPacks]/ebu_trailer/readme.md b/resources/[EGRP-CarPacks]/ebu_trailer/readme.md
new file mode 100644
index 000000000..43205d6d2
--- /dev/null
+++ b/resources/[EGRP-CarPacks]/ebu_trailer/readme.md
@@ -0,0 +1,16 @@
+## ebu_trailer VERSION 6
+## author: theebu | https://discord.gg/SvxZj2h
+
+
+## EXPORTS:
+exports['ebu_trailer']:AttachVeh([vehicle])
+# [vehicle] is the target car to attach
+# This runs the attach command to attach to a trailer. The trailer must be in the config
+
+exports['ebu_trailer']:attachAll([trailer])
+# [trailer] is the target trailer to attach to
+# This attaches all vehicles on the target trailer
+
+exports['ebu_trailer']:detachAll([trailer])
+# [trailer] is the target trailer to detach from
+# This detaches all vehicles on the target trailer
\ No newline at end of file
diff --git a/resources/[EGRP-CarPacks]/ebu_trailer/server/server.lua b/resources/[EGRP-CarPacks]/ebu_trailer/server/server.lua
new file mode 100644
index 000000000..085116456
Binary files /dev/null and b/resources/[EGRP-CarPacks]/ebu_trailer/server/server.lua differ
diff --git a/resources/[EGRP-Discord-Integration]/Discord-VehRestriction/config.lua b/resources/[EGRP-Discord-Integration]/Discord-VehRestriction/config.lua
index e5d52eb86..84cd0e78b 100644
--- a/resources/[EGRP-Discord-Integration]/Discord-VehRestriction/config.lua
+++ b/resources/[EGRP-Discord-Integration]/Discord-VehRestriction/config.lua
@@ -4067,6 +4067,7 @@ Config.VehicleRestrictions = {
"23f150prbb",
"23f150st",
"23gmc2",
+ "Maxlasd18charger",
"23gmc2visor",
"23gmcleo",
"23gmcleoslick",
@@ -5175,6 +5176,7 @@ Config.VehicleRestrictions = {
"lasd13fsfpiu",
"lasd16ram",
"lasd18taurus",
+ "Maxlasd18charger",
"lasd16chrgr",
"lax20fpiu",
"lasd20funm",
diff --git a/resources/lvc/SIRENS.lua b/resources/lvc/SIRENS.lua
index f59756b1b..7ce6dec01 100644
--- a/resources/lvc/SIRENS.lua
+++ b/resources/lvc/SIRENS.lua
@@ -314,7 +314,7 @@ SIREN_ASSIGNMENTS = {
['SH8172'] = { 18, 19, 20},
['lasd1997'] = { 18, 19, 20},
['lasd1997amber'] = { 18, 19, 20},
-
+ ['Maxlasd18charger'] = { 18, 19, 20, 36, 34, 37 },
['senorapd18fpiu_817'] = { 18, 19, 20},
['transportram'] = { 18, 19, 20},
diff --git a/resources/ulc/config.lua b/resources/ulc/config.lua
index 37b44d134..f8772909b 100644
--- a/resources/ulc/config.lua
+++ b/resources/ulc/config.lua
@@ -392,7 +392,7 @@ Config = {
"MPD21ppv",
"sos23hoe",
-
+ "Maxlasd18charger",
"146charger",
"122charger",
diff --git a/server.cfg b/server.cfg
index 0380fa0c2..5f584d8b8 100644
--- a/server.cfg
+++ b/server.cfg
@@ -207,6 +207,12 @@ ensure ebu_pmjstc
ensure ebu_trlights
ensure ebu_flagger
ensure ebu_connect
+ensure ebu_trailer
+ensure ebu_flatbeds
+ensure Maxlasd18charger
+ensure
+
+
ensure reverse-hud
ensure helicam
ensure tommys-pov