local QBCore = exports['qb-core']:GetCoreObject() RegisterNetEvent('QBCore:Client:UpdateObject', function() QBCore = exports['qb-core']:GetCoreObject() end) PlayerJob = {} onDuty = false Peds = {} Targets = {} searchProps = {} Props = {} local TrollyProp = nil scrapPool = { --{ model = ``, xPos = , yPos = , zPos = , xRot = , yRot = , zRot = }, --{ model = `sf_prop_sf_art_box_cig_01a`, xPos = 0.16, yPos = -0.06, zPos = 0.21, xRot = 52.0, yRot = 288.0, zRot = 175.0}, { model = `hei_prop_drug_statue_box_01`, xPos = 0.08, yPos = 0.05, zPos = 0.06, xRot = 7.0, yRot = 198.0, zRot = 145.0}, { model = `prop_mat_box`, xPos = 0.0, yPos = 0.28, zPos = 0.36, xRot = 136.0, yRot = 114.0, zRot = 181.0}, { model = `prop_box_ammo03a`, xPos = -0.08, yPos = 0.04, zPos = 0.32, xRot = 76.0, yRot = 110.0, zRot = 185.0}, { model = `prop_rub_scrap_06`, xPos = 0.01, yPos = 0.02, zPos = 0.27, xRot = 85.0, yRot = 371.0, zRot = 177.0 }, { model = `prop_cs_cardbox_01`, xPos = 0.04, yPos = 0.04, zPos = 0.28, xRot = 52.0, yRot = 294.0, zRot = 177.0 }, { model = `v_ret_gc_bag01`, xPos = 0.16, yPos = 0.08, zPos = 0.24, xRot = 68.0, yRot = 394.0, zRot = 141.0 }, { model = `prop_ld_suitcase_01`, xPos = -0.04, yPos = 0.06, zPos = 0.31, xRot = -2.0, yRot = 21.0, zRot = 155.0 }, { model = `v_ind_cs_toolbox2`, xPos = 0.04, yPos = 0.12, zPos = 0.29, xRot = 56.0, yRot = 287.0, zRot = 169.0 }, } RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function() QBCore.Functions.GetPlayerData(function(PlayerData) PlayerJob = PlayerData.job if PlayerData.job.name == Config.JobRole then onDuty = PlayerJob.onduty end end) end) RegisterNetEvent('QBCore:Client:SetDuty', function(duty) if Config.JobRole then if PlayerJob.name == Config.JobRole then onDuty = duty end end end) AddEventHandler('onResourceStart', function(resource) if GetCurrentResourceName() ~= resource then return end QBCore.Functions.GetPlayerData(function(PlayerData) PlayerJob = PlayerData.job if PlayerData.job.name == Config.JobRole then onDuty = PlayerJob.onduty end end) end) --- Blips + Peds CreateThread(function() JobLocation = PolyZone:Create({ vector2(772.44647216797, -1366.1883544922), vector2(772.43658447266, -1389.9084472656), vector2(734.93988037109, -1390.5963134766), vector2(736.34588623047, -1366.3835449219) }, { name = "Recycling", debugPoly = Config.Debug }) JobLocation:onPlayerInOut(function(isPointInside) if not isPointInside then EndJob() ClearProps() if Config.Debug then print("^5Debug^7: ^3PolyZone^7: ^2Leaving Area^7. ^2Clocking out and cleaning up^7") end if Config.JobRole then if onDuty then TriggerServerEvent("QBCore:ToggleDuty") end elseif onDuty == true then onDuty = false end else MakeProps() end end) for _, v in pairs(Config.Locations) do for i = 1, #v do local v = v[i] if Config.Blips and v.blipTrue then blip = makeBlip({coords = v.coords, sprite = v.sprite, col = v.col, name = v.name}) end if Config.Pedspawn then if not Peds[v.name..i] then loadModel(v.model) Peds[v.name..i] = makePed(v.model, v.coords, true, false, v.scenario, nil) end end end end --Make Targets local price = "" if Config.PayAtDoor then price = " ($"..Config.PayAtDoor..")" end Targets["RecyclingEnter"] = exports['qb-target']:AddBoxZone("RecyclingEnter", vector3(746.82, -1398.93, 26.55), 0.4, 1.6, { name="RecyclingEnter", debugPoly=Config.Debug, minZ=25.2, maxZ=28.0 }, { options = { { event = "jim-recycle:TeleWareHouse", icon = "fas fa-recycle", label = Loc[Config.Lan].target["enter"]..price, enter = true, job = Config.JobRole }, }, distance = 1.5 }) Targets["RecyclingExit"] = exports['qb-target']:AddBoxZone("RecyclingExit", vector3(736.27, -1374.31, 12.64), 1.2, 0.8, { name="RecyclingExit", debugPoly=Config.Debug, useZ=true, }, { options = { { event = "jim-recycle:TeleWareHouse", icon = "fas fa-recycle", label = Loc[Config.Lan].target["exit"], enter = false }, }, distance = 1.5 }) Targets["RecycleDuty"] = exports['qb-target']:AddCircleZone("RecycleDuty", vector3(739.55, -1376.5, 12.64), 0.45, { name="RecycleDuty", debugPoly=Config.Debug, useZ=true, }, { options = { { event = "jim-recycle:dutytoggle", icon = "fas fa-hard-hat", label = Loc[Config.Lan].target["duty"], job = Config.JobRole }, }, distance = 1.5 }) --Recyclable Material Trader for i = 1, #Config.Locations["Trade"] do Targets["Trade"..i] = exports['qb-target']:AddCircleZone("Trade"..i, Config.Locations["Trade"][i].coords.xyz, 1.1, { name="Trade"..i, debugPoly=Config.Debug, useZ=true, }, { options = { { event = "jim-recycle:Trade:Menu", icon = "fas fa-box", label = Loc[Config.Lan].target["trade"] }, }, distance = 1.5 }) end --Sell Materials for i = 1, #Config.Locations["Recycle"] do Targets["Recycle"..i] = exports['qb-target']:AddCircleZone("Recycle"..i, Config.Locations["Recycle"][i].coords.xyz, 1.1, { name="Recycle"..i, debugPoly=Config.Debug, useZ=true, }, { options = { { event = "jim-recycle:Selling:Menu", icon = "fas fa-box", label = Loc[Config.Lan].target["sell"] }, }, distance = 2.5 }) end --Bottle Selling Third Eyes for i = 1, #Config.Locations["BottleBanks"] do Targets["BottleBank"..i] = exports['qb-target']:AddCircleZone("BottleBank"..i, Config.Locations["BottleBanks"][i].coords.xyz, 1.2, { name="BottleBank"..i, debugPoly=Config.Debug, useZ=true, }, { options = { { event = "jim-recycle:Bottle:Menu", icon = "fas fa-certificate", label = Loc[Config.Lan].target["sell_bottles"], job = Config.JobRole }, }, distance = 1.5 }) end end) ---- Render Props ------- function MakeProps() --Floor Level Props (Using these for the selection pool) if Config.Debug then print("^5Debug^7: ^3MakeProps^7() ^2Spawning props") end searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Bull_SC_02`, coords = vector4(748.0166015625, -1368.0620117188, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_prop_crate_wlife_bc`, coords = vector4(750.44378662109, -1368.0836181641, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_watch`, coords = vector4(752.81488037109, -1368.0729980469, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_SHide`, coords = vector4(755.25073242188, -1367.9836425781, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Oegg`, coords = vector4(757.68121337891, -1368.0545654297, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_MiniG`, coords = vector4(760.04071044922, -1368.1296386719, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_FReel`, coords = vector4(762.48529052734, -1367.9744873047, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(771.20007324219, -1368.0988769531, 11.60, -90.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Jewels_BC`, coords = vector4(771.23065185547, -1370.5731201172, 11.60, -90.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Jewels_BC`, coords = vector4(771.24291992188, -1372.9438476563, 11.60, -90.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Art_02_SC`, coords = vector4(771.32196044922, -1383.1090087891, 11.60, -90.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Bull_SC_02`, coords = vector4(771.31182861328, -1385.5487060547, 11.60, -90.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_clothing_BC`, coords = vector4(771.13146972656, -1387.9129638672, 11.60, -90.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_biohazard_BC`, coords = vector4(748.03009033203, -1373.4445800781, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Bull_BC_02`, coords = vector4(750.42120361328, -1373.4237060547, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Art_BC`, coords = vector4(752.9072265625, -1373.4229736328, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Money_BC`, coords = vector4(755.28588867188, -1373.4252929688, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_clothing_SC`, coords = vector4(757.66845703125, -1373.4350585938, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Art_02_BC`, coords = vector4(760.08044433594, -1373.4055175781, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Money_SC`, coords = vector4(762.49865722656, -1373.4791259766, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Med_SC`, coords = vector4(748.02478027344, -1379.2906494141, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Bull_SC_02`, coords = vector4(750.45324707031, -1379.248046875, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Jewels_racks_BC`, coords = vector4(752.83642578125, -1379.2659912109, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Money_SC`, coords = vector4(755.21063232422, -1379.2955322266, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Money_SC`, coords = vector4(757.65325927734, -1379.2502441406, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Bull_SC_02`, coords = vector4(760.07208251953, -1379.2775878906, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Jewels_SC`, coords = vector4(762.54406738281, -1379.2054443359, 11.60, 0.0)}, 1, 0) -- searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Bull_BC_02`, coords = vector4(747.98150634766, -1384.9786376953, 11.60, 0.0)}, 1, 0) -- --These needed headings adjusting searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Bull_BC_02`, coords = vector4(750.42669677734, -1384.8709716797, 11.60, 0.0)}, 1, 0) searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Jewels_BC`, coords = vector4(752.81970214844, -1385.0126953125, 11.60, 0.0)}, 1, 0) searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Bull_BC_02`, coords = vector4(755.25604248047, -1384.9937744141, 11.60, 0.0)}, 1, 0) searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Jewels_racks_SC`, coords = vector4(757.65112304688, -1384.9642333984, 11.60, 0.0)}, 1, 0) searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Jewels_BC`, coords = vector4(760.05114746094, -1384.8067626953, 11.60, 0.0)}, 1, 0) searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_XLDiam`, coords = vector4(762.55572509766, -1384.9572753906, 11.60,0.0)}, 1, 0) searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Art_02_BC`, coords = vector4(737.57904052734, -1383.0043945313, 11.60, 90.0)}, 1, 0) searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Art_SC`, coords = vector4(737.556640625, -1385.4074707031, 11.60, 90.0)}, 1, 0) searchProps[#searchProps+1] = makeProp({prop = `ex_Prop_Crate_Art_BC`, coords = vector4(737.56097412109, -1387.8687744141, 11.60, 90.0)}, 1, 0) --Second Level Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(748.0166015625, -1368.0620117188,13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_prop_crate_wlife_sc`, coords = vector4(750.44378662109, -1368.0836181641,13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_prop_crate_jewels_racks_sc`, coords = vector4(752.81488037109, -1368.0729980469,13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Gems_SC`, coords = vector4(755.25073242188, -1367.9836425781, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Elec_SC`, coords = vector4(757.68121337891, -1368.0545654297, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Tob_SC`, coords = vector4(760.04071044922, -1368.1296386719, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Elec_SC`, coords = vector4(762.48529052734, -1367.9744873047, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_biohazard_BC`, coords = vector4(771.20007324219, -1368.0988769531, 13.8 , -90.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_RW`, coords = vector4(771.23065185547, -1370.5731201172, 13.8 , -90.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Ammo_BC`, coords = vector4(771.24291992188, -1372.9438476563, 13.8 , -90.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Gems_BC`, coords = vector4(771.32196044922, -1383.1090087891, 13.8 , -90.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_biohazard_SC`, coords = vector4(771.31182861328, -1385.5487060547, 13.8 , -90.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(771.13146972656, -1387.9129638672, 13.8 , -90.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_HighEnd_pharma_SC`, coords = vector4(748.03009033203, -1373.4445800781, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Gems_SC`, coords = vector4(750.42120361328, -1373.4237060547, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Gems_BC`, coords = vector4(752.9072265625, -1373.4229736328, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(755.28588867188, -1373.4252929688, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_HighEnd_pharma_BC`, coords = vector4(757.66845703125, -1373.4350585938, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Gems_BC`, coords = vector4(760.08044433594, -1373.4055175781, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_furJacket_SC`, coords = vector4(762.49865722656, -1373.4791259766, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Expl_bc`, coords = vector4(748.02478027344, -1379.2906494141, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Elec_BC`, coords = vector4(750.45324707031, -1379.248046875, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Gems_BC`, coords = vector4(752.83642578125, -1379.2659912109, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Tob_SC`, coords = vector4(755.21063232422, -1379.2955322266, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Gems_SC`, coords = vector4(757.65325927734, -1379.2502441406, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(760.07208251953, -1379.2775878906, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(762.54406738281, -1379.2054443359, 13.8 , 0.0)}, 1, 0) -- Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_SC`, coords = vector4(747.98150634766, -1384.9786376953, 13.8 , 0.0)}, 1, 0) -- --These needed headings adjusting Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Med_BC`, coords = vector4(750.42669677734, -1384.8709716797, 13.8 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(752.81970214844, -1385.0126953125, 13.8 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Narc_BC`, coords = vector4(755.25604248047, -1384.9937744141, 13.8 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Narc_SC`, coords = vector4(757.65112304688, -1384.9642333984, 13.8 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Med_SC`, coords = vector4(760.05114746094, -1384.8067626953, 13.8 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_pharma_SC`, coords = vector4(762.55572509766, -1384.9572753906, 13.8 ,0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Bull_BC_02`, coords = vector4(737.57904052734, -1383.0043945313, 13.8 , 90.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Bull_BC_02`, coords = vector4(737.556640625, -1385.4074707031, 13.8 , 90.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Bull_SC_02`, coords = vector4(737.56097412109, -1387.8687744141, 13.8 , 90.0)}, 1, 0) --Third Level Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(748.0166015625, -1368.0620117188, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(750.44378662109, -1368.0836181641,15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Art_BC`, coords = vector4(752.81488037109, -1368.0729980469,15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Art_BC`, coords = vector4(755.25073242188, -1367.9836425781, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_clothing_BC`, coords = vector4(757.68121337891, -1368.0545654297, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Gems_BC`, coords = vector4(760.04071044922, -1368.1296386719, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Wlife_BC`, coords = vector4(762.48529052734, -1367.9744873047, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Med_BC`, coords = vector4(771.20007324219, -1368.0988769531, 15.9 , -90.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Wlife_BC`, coords = vector4(771.23065185547, -1370.5731201172, 15.9 , -90.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Elec_BC`, coords = vector4(771.24291992188, -1372.9438476563, 15.9 , -90.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Elec_BC`, coords = vector4(771.32196044922, -1383.1090087891, 15.9 , -90.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(771.31182861328, -1385.5487060547, 15.9 , -90.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_furJacket_BC`, coords = vector4(771.13146972656, -1387.9129638672, 15.9 , -90.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_HighEnd_pharma_BC`, coords = vector4(748.03009033203, -1373.4445800781, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Art_02_BC`, coords = vector4(750.42120361328, -1373.4237060547, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Tob_BC`, coords = vector4(752.9072265625, -1373.4229736328, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Art_02_BC`, coords = vector4(755.28588867188, -1373.4252929688, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(757.66845703125, -1373.4350585938, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Elec_BC`, coords = vector4(760.08044433594, -1373.4055175781, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Elec_BC`, coords = vector4(762.49865722656, -1373.4791259766, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Art_BC`, coords = vector4(748.02478027344, -1379.2906494141, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Elec_BC`, coords = vector4(752.83642578125, -1379.2659912109, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Elec_BC`, coords = vector4(755.21063232422, -1379.2955322266, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(757.65325927734, -1379.2502441406, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(760.07208251953, -1379.2775878906, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Tob_BC`, coords = vector4(762.54406738281, -1379.2054443359, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Tob_BC`, coords = vector4(747.98150634766, -1384.9786376953, 15.9 , 0.0)}, 1, 0) --These needed headings adjusting Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(750.42669677734, -1384.8709716797, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(752.81970214844, -1385.0126953125, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Closed_BC`, coords = vector4(755.25604248047, -1384.9937744141, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_furJacket_BC`, coords = vector4(757.65112304688, -1384.9642333984, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_furJacket_BC`, coords = vector4(760.05114746094, -1384.8067626953, 15.9 , 0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_furJacket_BC`, coords = vector4(762.55572509766, -1384.9572753906, 15.9 ,0.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Elec_BC`, coords = vector4(737.57904052734, -1383.0043945313, 15.9 , 90.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Elec_BC`, coords = vector4(737.556640625, -1385.4074707031, 15.9, 90.0)}, 1, 0) Props[#Props+1] = makeProp({prop = `ex_Prop_Crate_Elec_SC`, coords = vector4(737.56097412109, -1387.8687744141, 15.9 , 90.0)}, 1, 0) for k in pairs(scrapPool) do loadModel(scrapPool[k].model) end end function EndJob() if Targets["Package"] then exports["qb-target"]:RemoveTargetEntity(randPackage) end destroyProp(TrollyProp) TrollyProp = nil for i = 1, #searchProps do SetEntityDrawOutline(searchProps[i], false) end randPackage = nil if scrapProp then destroyProp(scrapProp) scrapProp = nil end end function ClearProps() if Config.Debug then print("^5Debug^7: ^3ClearProps^7() ^2Exiting building^7, ^2clearing previous props ^7(^2if any^7)") end for _, v in pairs(searchProps) do unloadModel(GetEntityModel(v)) DeleteObject(v) end searchProps = {} for _, v in pairs(Props) do unloadModel(GetEntityModel(v)) DeleteObject(v) end Props = {} for k in pairs(scrapPool) do unloadModel(scrapPool[k].model) end if Targets["DropOff"] then exports["qb-target"]:RemoveTargetEntity(TrollyProp) end unloadModel(GetEntityModel(TrollyProp)) DeleteObject(TrollyProp) end --Pick one of the crates for the player to choose, generate outline + target function PickRandomPackage() if not TrollyProp then loadModel(`ex_Prop_Crate_Closed_BC`) TrollyProp = CreateObject(`ex_Prop_Crate_Closed_BC`, 743.56988525391, -1369.6694335938, 11.878368377686, 0, 0, 0) FreezeEntityPosition(TrollyProp, true) SetEntityHeading(TrollyProp, 166.38) end --If somehow already exists, remove target if Targets["Package"] then exports["qb-target"]:RemoveTargetEntity(randPackage, "Search") end --Pick random prop to use randPackage = searchProps[math.random(1, #searchProps)] SetEntityDrawOutline(randPackage, true) SetEntityDrawOutlineColor(255, 255, 255, 1.0) SetEntityDrawOutlineShader(1) --Generate Target Location on the selected package Targets["Package"] = exports['qb-target']:AddTargetEntity(randPackage, { options = { { event = "jim-recycle:PickupPackage:Start", icon = 'fas fa-magnifying-glass', label = Loc[Config.Lan].target["search"], } }, distance = 2.5, }) end --Event to enter and exit warehouse RegisterNetEvent("jim-recycle:TeleWareHouse", function(data) if data.enter then if Config.EnableOpeningHours then local ClockTime = GetClockHours() if ClockTime >= Config.OpenHour and ClockTime <= Config.CloseHour - 1 then if (ClockTime >= Config.OpenHour and ClockTime < 24) or (ClockTime <= Config.CloseHour -1 and ClockTime > 0) then if Config.PayAtDoor then local p = promise.new() QBCore.Functions.TriggerCallback("jim-recycle:GetCash", function(cb) p:resolve(cb) end) if Citizen.Await(p) >= Config.PayAtDoor then TriggerServerEvent("jim-recycle:DoorCharge") else TriggerEvent("QBCore:Notify", Loc[Config.Lan].error["no_money"], "error") return end end DoScreenFadeOut(500) while not IsScreenFadedOut() do Citizen.Wait(10) end SetEntityCoords(PlayerPedId(), Config.InsideTele) DoScreenFadeIn(500) else TriggerEvent("QBCore:Notify", Loc[Config.Lan].error["wrong_time"]..Config.OpenHour..":00am"..Loc[Config.Lan].error["till"]..Config.CloseHour..":00pm", "error") end else TriggerEvent("QBCore:Notify", Loc[Config.Lan].error["wrong_time"]..Config.OpenHour..":00"..Loc[Config.Lan].error["till"]..Config.CloseHour..":00pm", "error") end else DoScreenFadeOut(500) while not IsScreenFadedOut() do Citizen.Wait(10) end SetEntityCoords(PlayerPedId(), Config.InsideTele) DoScreenFadeIn(500) end else EndJob() -- Resets outlines + targets if needed DoScreenFadeOut(500) while not IsScreenFadedOut() do Citizen.Wait(10) end if onDuty then TriggerEvent('jim-recycle:dutytoggle') end SetEntityCoords(PlayerPedId(), Config.OutsideTele) DoScreenFadeIn(500) end end) RegisterNetEvent("jim-recycle:PickupPackage:Start", function() TaskStartScenarioInPlace(PlayerPedId(), "CODE_HUMAN_MEDIC_KNEEL", 0, true) QBCore.Functions.Progressbar("open_locker_drill", Loc[Config.Lan].progressbar["search"], 5000, false, true, { disableMovement = true, disableCarMovement = true, disableMouse = false, disableCombat = true, }, {}, {}, {}, function() -- Done ClearPedTasksImmediately(PlayerPedId()) TriggerEvent("jim-recycle:PickupPackage:Hold") end, function() -- Cancel end, "fas fa-magnifying-glass") end) RegisterNetEvent("jim-recycle:PickupPackage:Hold", function() --Clear current target info exports["qb-target"]:RemoveTargetEntity(randPackage, "Search") SetEntityDrawOutline(randPackage, false) randPackage = nil --Make prop to put in hands loadAnimDict("anim@heists@box_carry@") TaskPlayAnim(PlayerPedId(), "anim@heists@box_carry@" ,"idle", 5.0, -1, -1, 50, 0, false, false, false) v = scrapPool[math.random(1, #scrapPool)] loadModel(v.model) scrapProp = CreateObject(v.model, GetEntityCoords(PlayerPedId(), true), true, true, true) AttachEntityToEntity(scrapProp, PlayerPedId(), GetPedBoneIndex(PlayerPedId(), 18905), v.xPos, v.yPos, v.zPos, v.xRot, v.yRot, v.zRot, 20.0, true, true, false, true, 1, true) --Create target for drop off location SetEntityDrawOutline(TrollyProp, true) SetEntityDrawOutlineColor(255, 255, 255, 1.0) SetEntityDrawOutlineShader(1) Targets["DropOff"] = exports['qb-target']:AddTargetEntity(TrollyProp, { options = { { event = "jim-recycle:PickupPackage:Finish", icon = 'fas fa-recycle', label = Loc[Config.Lan].target["drop_off"], } }, distance = 2.5, }) end) RegisterNetEvent("jim-recycle:PickupPackage:Finish", function() --Once this is triggered it can't be stopped, so remove the target and prop if Targets["DropOff"] then exports["qb-target"]:RemoveTargetEntity(TrollyProp, "Drop Off") Targets["DropOff"] = nil end SetEntityDrawOutline(TrollyProp, false) destroyProp(TrollyProp) TrollyProp = nil --Remove target and the whole prop, seen as how no ones qb-target works and its my fault 😊 TrollyProp = CreateObject(`ex_Prop_Crate_Closed_BC`, 743.56988525391, -1369.6694335938, 11.878368377686, 0, 0, 0) FreezeEntityPosition(TrollyProp, true) SetEntityHeading(TrollyProp, 166.38) --Load and Start animation local dict = "mp_car_bomb" loadAnimDict("mp_car_bomb") local anim = "car_bomb_mechanic" local isScrapping = true FreezeEntityPosition(PlayerPedId(), true) Wait(100) TaskPlayAnim(PlayerPedId(), dict, anim, 3.0, 3.0, -1, 2.0, 0, 0, 0, 0) Wait(3000) --When animation is complete --Empty hands destroyProp(scrapProp) scrapProp = nil ClearPedTasks(PlayerPedId()) FreezeEntityPosition(PlayerPedId(), false) TriggerServerEvent('jim-recycle:getrecyclablematerial') -- Give rewards PickRandomPackage() end) RegisterNetEvent('jim-recycle:dutytoggle', function() if Config.JobRole then if onDuty then EndJob() else PickRandomPackage() end TriggerServerEvent("QBCore:ToggleDuty") else onDuty = not onDuty if onDuty then TriggerEvent('QBCore:Notify', Loc[Config.Lan].success["on_duty"], 'success') PickRandomPackage() else TriggerEvent('QBCore:Notify', Loc[Config.Lan].error["off_duty"], 'error') EndJob() end end end) local Selling = false RegisterNetEvent('jim-recycle:SellAnim', function(item) for _, v in pairs (Peds) do if #(GetEntityCoords(PlayerPedId()) - GetEntityCoords(v)) < 3 then Selling = true loadAnimDict("mp_common") loadAnimDict("amb@prop_human_atm@male@enter") if bag == nil then bag = makeProp({prop = `prop_paper_bag_small`, coords = vector4(0,0,0,0)}, 0, 1) end AttachEntityToEntity(bag, v, GetPedBoneIndex(v, 57005), 0.1, -0.0, 0.0, -90.0, 0.0, 0.0, true, true, false, true, 1, true) --Calculate if you're facing the ped-- ClearPedTasksImmediately(v) lookEnt(v) TaskPlayAnim(PlayerPedId(), "amb@prop_human_atm@male@enter", "enter", 1.0, 1.0, 0.3, 16, 0.2, 0, 0, 0) --Start animations TaskPlayAnim(v, "mp_common", "givetake2_b", 1.0, 1.0, 0.3, 16, 0.2, 0, 0, 0) Wait(1000) AttachEntityToEntity(bag, PlayerPedId(), GetPedBoneIndex(PlayerPedId(), 57005), 0.1, -0.0, 0.0, -90.0, 0.0, 0.0, true, true, false, true, 1, true) Wait(1000) StopAnimTask(PlayerPedId(), "amb@prop_human_atm@male@enter", "enter", 1.0) StopAnimTask(v, "mp_common", "givetake2_b", 1.0) TaskStartScenarioInPlace(v, "WORLD_HUMAN_CLIPBOARD", -1, true) unloadAnimDict("mp_common") unloadAnimDict("amb@prop_human_atm@male@enter") destroyProp(bag) unloadModel(`prop_paper_bag_small`) bag = nil for k in pairs(Config.Prices) do if k == item then TriggerServerEvent('jim-recycle:Selling:Mat', item) Selling = false return end end TriggerServerEvent("jim-recycle:TradeItems", item) Selling = false end end end) RegisterNetEvent('jim-recycle:Selling:Menu', function() if Selling then return end local sellMenu = { { icon = "recyclablematerial", header = Loc[Config.Lan].menu["sell_mats"], txt = Loc[Config.Lan].menu["sell_mats_txt"], isMenuHeader = true }, { icon = "fas fa-circle-xmark", header = "", txt = Loc[Config.Lan].menu["close"], params = { event = "jim-recycle:CloseMenu" } } } for k, v in pairsByKeys(Config.Prices) do sellMenu[#sellMenu+1] = { disabled = not HasItem(k, 1), icon = k, header = " "..QBCore.Shared.Items[k].label, txt = Loc[Config.Lan].menu["sell_all"]..v..Loc[Config.Lan].menu["each"], params = { event = "jim-recycle:SellAnim", args = k } } end exports['qb-menu']:openMenu(sellMenu) end) --Recyclable Trader RegisterNetEvent('jim-recycle:Trade:Menu', function() if Selling then return end local p = promise.new() QBCore.Functions.TriggerCallback("jim-recycle:GetRecyclable", function(cb) p:resolve(cb) end) local amount = Citizen.Await(p) local tradeMenu = { { icon = "recyclablematerial", header = Loc[Config.Lan].menu["mats_trade"], txt = Loc[Config.Lan].menu["trade_amount"]..amount, isMenuHeader = true }, { icon = "fas fa-circle-xmark", header = "", txt = Loc[Config.Lan].menu["close"], params = { event = "jim-recycle:CloseMenu" } } } if amount >= 1 then tradeMenu[#tradeMenu+1] = { icon = "recyclablematerial", header = Loc[Config.Lan].menu["trade1"], params = { event = "jim-recycle:SellAnim", args = 1 } } end if amount >= 10 then tradeMenu[#tradeMenu+1] = { icon = "recyclablematerial", header = Loc[Config.Lan].menu["trade10"], params = { event = "jim-recycle:SellAnim", args = 2 } } end if amount >= 100 then tradeMenu[#tradeMenu+1] = { icon = "recyclablematerial", header = Loc[Config.Lan].menu["trade100"], params = { event = "jim-recycle:SellAnim", args = 3 } } end if amount >= 1000 then tradeMenu[#tradeMenu+1] = { icon = "recyclablematerial", header = Loc[Config.Lan].menu["trade1000"], params = { event = "jim-recycle:SellAnim", args = 4 } } end if #tradeMenu > 2 then exports['qb-menu']:openMenu(tradeMenu) else TriggerEvent("QBCore:Notify", Loc[Config.Lan].error["no_mats"], "error") end end) --Recyclable Trader RegisterNetEvent('jim-recycle:Bottle:Menu', function() if Selling then return end local tradeMenu = { { icon = "recyclablematerial", header = Loc[Config.Lan].menu["sell_mats"], txt = Loc[Config.Lan].menu["sell_mats_txt"], isMenuHeader = true }, { icon = "fas fa-circle-xmark", header = "", txt = Loc[Config.Lan].menu["close"], params = { event = "jim-recycle:CloseMenu" } } } tradeMenu[#tradeMenu+1] = { disabled = not HasItem("can", 1), icon = "can", header = " "..QBCore.Shared.Items["can"].label, params = { event = "jim-recycle:SellAnim", args = 'can' } } tradeMenu[#tradeMenu+1] = { disabled = not HasItem("bottle", 1), icon = "bottle", header = " "..QBCore.Shared.Items["bottle"].label, params = { event = "jim-recycle:SellAnim", args = 'bottle' } } if #tradeMenu > 2 then exports['qb-menu']:openMenu(tradeMenu) else TriggerEvent("QBCore:Notify", Loc[Config.Lan].error["no_bottles"], "error") end end) AddEventHandler('onResourceStop', function(resource) if resource ~= GetCurrentResourceName() then return end for k in pairs(Targets) do exports['qb-target']:RemoveZone(k) end for _, v in pairs(Peds) do unloadModel(GetEntityModel(v)) DeletePed(v) end for _, v in pairs(Props) do unloadModel(GetEntityModel(v)) DeleteObject(v) end for _, v in pairs(searchProps) do unloadModel(GetEntityModel(v)) DeleteObject(v) end unloadModel(GetEntityModel(TrollyProp)) DeleteObject(TrollyProp) unloadModel(GetEntityModel(scrapProp)) DeleteObject(scrapProp) for _, v in pairs(searchProps) do unloadModel(GetEntityModel(v)) DeleteObject(v) end end)