Envi-ChopShop
Envi-ChopShop Official Documentation
Last updated
Envi-ChopShop Official Documentation
Last updated
A working FiveM Server
Basic understanding of FiveM server setup and resource management
An up-to-date version of ox_lib
Config.Debug = false
Enable or disable debug mode for troubleshooting purposes.
Config.OpenAllDoorsOnStart = true
Config.AdvancedParking = false
OpenAllDoorsOnStart
: Opens all vehicle doors when starting the chop process.
AdvancedParking
: Enable if using an advanced parking script.
Config.PartsDeleteTimer = 60
Config.DeleteVehicleTime = 10
Set timers for deleting parts and vehicles after chopping.
Config.InteractionKey = 38
Config.DropToolsKey = 73
Configure key bindings for interactions and dropping tools.
Config.CooldownTime = 30
Config.ShowTimeRemaining = true
Set cooldown time between chops and whether to display remaining time.
Config.ChopShops = {
['LS Customs'] = { -- Name of the Chop Shop - [MUST BE UNIQUE]
ChopLocation = vec3(732.99, -1088.95, 22.16), -- Center of the ChopShop Area
DropPartsLocation = vector3(728.43, -1072.27, 20.39),
FinishChopLocation = vec3(725.7445, -1071.1239, 27.31),
ChopZoneRadius = 30.0, -- Radius of the zone of the shop, for spawning props etc
ChoppingAreaRadius = 10.0, -- Radius of the area where you can chop the vehicle (MUST be smaller than ChopZoneRadius)
-- Tool Locations
ImpactDriverLocation = vec3(737.2314, -1078.6794, 22.1687),
SawLocation = vec3(731.1500, -1077.4465, 22.1688),
-- Job Settings
AllowedJobsOnly = {enabled = false, jobs = {'police', 'ambulance'}},
BlacklistedJobs = {enabled = true, jobs = {'hobo', 'ambulance'}},
-- Management Settings
Ownable = true,
ManagementLocation = vec3(727.8610, -1067.2437, 27.31),
Price = 100000,
Percentage = 10, -- Owner will recieve 10% of the total chop value into management fund
CanSell = true, -- Can sell the business to get back % of the original price
SellPercentage = 50, -- % of the original price you get back when selling the business
CanTransfer = true, -- Can transfer ownership of the business to another player
-- Ped Settings (Optional)
Ped = { -- Handy to use as a place to add FinishChopLocation if there is no desk
Enabled = false,
PedHash = 'a_m_m_hillbilly_01',
PedCoords = vector4(727.5610, -1067.5437, 28.31, 180.0),
PedHeading = 180.0,
PedAnimation = 'WORLD_HUMAN_AA_SMOKE',
},
-- Dispatch
Dispatch = false, -- Set to true to enable police alerts when chopping a vehicle
},
['Sandy Shores'] = { -- Name of the Chop Shop - [MUST BE UNIQUE]
ChopLocation = vector3(2052.68, 3176.29, 45.17),
DropPartsLocation = vector3(2048.24, 3196.82, 45.49),
FinishChopLocation = vec3(2041.43, 3187.44, 45.18),
ChopZoneRadius = 60.0,
ChoppingAreaRadius = 30.0,
-- Tool Locations
ImpactDriverLocation = vector3(2059.96, 3192.56, 45.19),
SawLocation = vector3(2048.34, 3200.37, 45.19),
-- Job Settings
AllowedJobsOnly = {enabled = false, jobs = {'police', 'ambulance'}},
BlacklistedJobs = {enabled = true, jobs = {'hobo', 'ambulance'}},
-- Management Settings
Ownable = true,
ManagementLocation = vector3(2041.43, 3187.44, 45.18),
Price = 75000,
Percentage = 10, -- Owner will recieve 10% of the total chop value into management fund
CanSell = true, -- Can sell the business to get back % of the original price
SellPercentage = 50, -- % of the original price you get back when selling the business
CanTransfer = true, -- Can transfer ownership of the business to another player
-- Ped Settings (Optional)
Ped = { -- Handy to use as a place to add FinishChopLocation/ Management if there is no desk
Enabled = true,
PedHash = 'a_m_m_hillbilly_01',
PedCoords = vector3(2041.43, 3187.44, 45.18),
PedHeading = 250.0,
PedAnimation = 'WORLD_HUMAN_AA_SMOKE',
},
-- Dispatch
Dispatch = true, -- Set to true to enable police alerts when chopping a vehicle
},
}
Define multiple chop shop locations with specific coordinates and settings.
AllowedJobsOnly = {enabled = false, jobs = {'police', 'ambulance'}},
BlacklistedJobs = {enabled = true, jobs = {'hobo', 'ambulance'}},
Configure job-based restrictions for chop shop access.
Ownable = true,
ManagementLocation = vec3(727.8610, -1067.2437, 27.31),
Price = 100000,
Percentage = 10,
CanSell = true,
SellPercentage = 50,
CanTransfer = true,
Set up management features including ownership, pricing, and transfer options.
Config.RewardsAccount = 'cash'
Config.Rewards = 1000
Configure the base reward amount and account type for payouts.
Config.AdditionalRewardsItem = 'cryptostick'
Config.AdditionalRewardsAmount = math.random(1,3)
Set up additional item rewards and their quantities.
Config.ClassMultipliers = { -- Reward Multiplier for each vehicle class
[0] = 1.0, -- Compacts
[1] = 1.1, -- Sedans
[2] = 1.2, -- SUVs
[3] = 1.3, -- Coupes
[4] = 1.4, -- Muscle
[5] = 1.5, -- Sports Classics
[6] = 1.6, -- Sports
[7] = 1.8, -- Super
[8] = 0.6, -- Motorcycles
[9] = 1.2, -- Off-road
[10] = 1.0, -- Industrial
[11] = 1.0, -- Utility
[12] = 1.1, -- Vans
[13] = 0.4, -- Cycles
[14] = 1.0, -- Boats
[15] = 0.0, -- Helicopters
[16] = 0.0, -- Planes
[17] = 0.5, -- Service
[18] = 0.5, -- Emergency
[19] = 1.0, -- Military
[20] = 1.0 -- Commercial
}
Define reward multipliers based on vehicle classes.
Config.BlacklistedVehicles = { -- Add as many as you need (must be in backticks like `spawn_name`)
`police`,
`police2`,
`police3`,
`taxi`,
`taxi2`,
`ambulance`,
`ambulance2`,
`firetruk`,
`sheriff`,
`sheriff2`,
}
List of vehicles that cannot be chopped.
Config.SpecialContractVehicles = {
-- SUVs
{ model = 'baller', display = 'Gallivanter Baller' },
{ model = 'cavalcade', display = 'Albany Cavalcade' },
{ model = 'dubsta', display = 'Benefactor Dubsta' },
{ model = 'fq2', display = 'Fathom FQ 2' },
{ model = 'granger', display = 'Declasse Granger' },
{ model = 'landstalker', display = 'Dundreary Landstalker' },
{ model = 'rocoto', display = 'Obey Rocoto' },
{ model = 'seminole', display = 'Canis Seminole' },
{ model = 'serrano', display = 'Benefactor Serrano' },
-- Sports Cars
{ model = 'banshee', display = 'Bravado Banshee' },
{ model = 'buffalo', display = 'Bravado Buffalo' },
{ model = 'carbonizzare', display = 'Grotti Carbonizzare' },
{ model = 'comet', display = 'Pfister Comet' },
{ model = 'coquette', display = 'Invetero Coquette' },
{ model = 'feltzer', display = 'Benefactor Feltzer' },
{ model = 'fusilade', display = 'Schyster Fusilade' },
{ model = 'ninef', display = 'Obey 9F' },
{ model = 'rapidgt', display = 'Dewbauchee Rapid GT' },
{ model = 'schwarzer', display = 'Benefactor Schwartzer' },
{ model = 'sultan', display = 'Karin Sultan' },
-- Supercars and High-End Cars
{ model = 'baller2', display = 'Gallivanter Baller Sport' },
{ model = 'cheetah', display = 'Grotti Cheetah' },
{ model = 'entityxf', display = 'Overflod Entity XF' },
{ model = 'feltzer2', display = 'Benefactor Feltzer' },
{ model = 'infernus', display = 'Pegassi Infernus' },
{ model = 'vacca', display = 'Pegassi Vacca' },
{ model = 'voltic', display = 'Coil Voltic' }
}
Define vehicles available for special contracts.
Config.Tools = {
ImpactDriverProp = { prop = `sf_prop_impact_driver_01a`, offsets = {0.14, -0.14, -0.1, 82.0, -94.0, 155.0} },
SawProp = { prop = `prop_tool_consaw`, offsets = {0.09, 0.03, -0.01, -100.64, -158.35, -64.21}}
}
Configure tool props and their offsets for player animations.
Config.SawVolume = 0.7
Config.ImpactDriverVolume = 0.5
Adjust volume levels for various tools.
function Notify(message, type, time) -- Change this to your own notification system if you want
lib.notify({ -- [ox_lib by default]
id = 'chopshop-notify',
title = 'Chop Shop',
description = message,
position = 'top',
style = {
backgroundColor = '#141517',
color = '#909296'
},
icon = 'car-burst',
iconColor = '#C53030',
length = time
})
end
Customize the notification system to fit your server's needs.
function DispatchEvent(coords)
exports['ps-dispatch']:SuspiciousActivity() -- Change this to your own dispatch triggers
end
function DispatchEvent(coords)
local data = exports['cd_dispatch']:GetPlayerInfo()
TriggerServerEvent('cd_dispatch:AddNotification', {
job_table = {"police"}, -- jobs
coords = data.coords,
title = '10-10 - Suspicious Activity', -- rename as needed
message = 'There is suspicious activity happening at ' ..data.street,
flash = 0,
unique_id = data.unique_id,
sound = 1,
blip = {
sprite = 51, -- editable
scale = 1.0, -- editable
colour = 1, -- editable
flashes = false, -- editable
text = '10-10 - Suspicious Activity', -- rename as needed
time = 5, -- editable
radius = 0, -- editable
}
})
end
Config.Lang = {
-- Marker and Notifications
['chop_vehicle'] = '[E] - Chop Vehicle',
['door_stage'] = 'Nice find! First - you\'ll need to remove the doors!',
['tire_stage'] = 'Let\'s get started on the tires!',
['battery_stage'] = 'Now we need to disconnect the battery!',
['gear_box_stage'] = 'Now go ahead and remove the gear box',
['rad_stage'] = 'Let\'s get that radiator out!',
['scrap_stage'] = 'You think there\'s anything left in there?',
['drop_part'] = 'Go drop the parts over there on the trolley!',
['cooldown_error'] = 'You need to wait before you can chop another vehicle!',
['need_saw'] = 'You need something to chop the door!',
['need_impact_driver'] = 'You can\'t unscrew these bolts by hand..',
['sell_chop'] = 'Job Done! Head up to the desk and collect your pay!',
['owned_vehicle_error'] = 'You can\'t chop an owned vehicle!',
-- Cooldown Remaining (if ShowTimeRemaining is set to true)
['cooldown_left'] = 'Come back in ',
['minutes'] = 'minutes',
-- Rewards
['reward_message'] = 'You successfully chopped the vehicle and recieved a payment of $',
-- Door Names
['driver_door'] = 'Driver Door',
['passenger_door'] = 'Passenger Door',
['back_driver_door'] = 'Back Driver Door',
['back_passenger_door'] = 'Back Passenger Door',
['hood'] = 'Hood',
['trunk'] = 'Trunk',
-- Tire stage
['remove_wheel'] = 'Remove Wheel',
['tires_removed'] = 'Tires removed: ',
['all_tires_removed'] = 'All tires removed, proceed to the next stage',
-- Target labels
['chop_target'] = 'Chop ',
['impact_driver'] = 'Impact Driver',
['buzz_saw'] = 'Buzz Saw',
['drop_parts'] = 'Drop Parts',
['remove_battery'] = 'Remove Battery',
['remove_radiator'] = 'Remove Radiator',
['remove_scrap'] = 'Remove Scrap',
['remove_gear_box'] = 'Remove Gear Box',
['sell_chopped_vehicle'] = 'Sell Chopped Vehicle',
-- Debug Mode
['adding_door_target_zones'] = 'Adding door target zones...',
['adding_gear_box_target_zone'] = 'Adding gear box target zone...',
['adding_rad_target_zone'] = 'Adding raditator target zone...',
['adding_battery_target_zones'] = 'Adding battery target zone...',
['adding_tire_target_zones'] = 'Adding tire target zones...',
['adding_scrap_target_zone'] = 'Adding scrap target zone...',
['not_holding_driver'] = 'Not holding impact driver so won\'t check tires removed',
['chop_abandoned'] = 'You abandoned the chop!',
['own_vehicle_error'] = 'You can\'t chop your own vehicle!',
['blacklisted_vehicle'] = 'We can\'t accept this vehicle, sorry!',
['not_allowed_job'] = 'Employees only!',
['blacklisted_job'] = 'You\'re not allowed to do this!',
['no_police'] = 'Not enough Police activity to do this right now!',
['manage_shop'] = '[E] - Manage Chop Shop',
['not_shop_owner'] = 'This business is owned by somebody else!',
['purchase_success'] = 'Congratulations! You are the new owner of ',
['purchase_fail'] = 'Purchase Failed!',
['withdraw_success'] = 'You have successfully withdrawn $',
['withdraw_fail'] = 'Withdrawal Failed!',
['sell_success'] = 'Sale Confirmed! You are no longer the owner of ',
['sell_fail'] = 'Sale Failed!',
['transfer_success'] = 'Successfully transfered ownership of ',
['transfer_fail'] = 'Transfer Failed!',
['recieved'] = 'You have received $',
['from_funds'] = ' from the shop funds.',
['completed_contract'] = 'You have completed a contract for ',
['recieved_extra'] = ' and received an extra $',
['cannot_claim_own'] = 'You cannot vlaim your own vehicle contracts!',
['damaged_vehicle'] = 'The total pay-out has been reduced due to vehicle damage!',
-- NEW
['not_allowed_error'] = 'You are not allowed to do this!',
-- Management Menu
['title'] = 'Chop Shop - ',
['forsale'] = ' - [FOR SALE]',
['management'] = ' - [MANAGEMENT]',
['purchase'] = 'Purchase Business',
['price'] = 'Price: $',
['withdraw'] = "Withdraw Funds",
['funds'] = 'Avaliable Balance: $',
['register'] = 'Cash Register',
['how_much'] = 'How much would you like to withdraw?',
['generate'] = 'Generate Special Contract',
['create'] = 'Create a special contract for a specific random vehicle',
['sell'] = "Sell Business",
['value'] = 'Value: $',
['transfer'] = 'Transfer Business',
['transfer_desc'] = 'Transfer ownership of this business to another citizen',
['transfer_id'] = 'Enter the ID of the player you would like to transfer this business to.',
['cannot_generate'] = 'You cannot generate a special contract for another ',
['min_cooldown'] = ' minutes',
}
Customize all text strings used in the script for easy localization.
This documentation provides a comprehensive overview of the configuration options available in the Chop Shop script. It's organized into logical sections, making it easy for server administrators to understand and customize the script to their needs.