Untitled Diff

Created Diff never expires
100 removals
Words removed156
Total words414
Words removed (%)37.68
198 lines
62 additions
Words added62
Total words320
Words added (%)19.38
158 lines
local spawnedWeeds = 0
local spawnedShits = 0
local weedPlants = {}
local Shitss = {}
local isPickingUp, isProcessing = false, false
local isPickingUp, isProcessing = false, false



Citizen.CreateThread(function()
Citizen.CreateThread(function()
while true do
while true do
Citizen.Wait(500)
Citizen.Wait(7000)
local coords = GetEntityCoords(PlayerPedId())
local coords = GetEntityCoords(PlayerPedId())


if GetDistanceBetweenCoords(coords, Config.CircleZones.WeedField.coords, true) < 50 then
if GetDistanceBetweenCoords(coords, Config.CircleZones.oilfield.coords, true) < 20 then
SpawnWeedPlants()
SpawnShites()
end
Citizen.Wait(7000)
end
end)

Citizen.CreateThread(function()
while true do
Citizen.Wait(0)
local playerPed = PlayerPedId()
local coords = GetEntityCoords(playerPed)

if GetDistanceBetweenCoords(coords, Config.CircleZones.WeedProcessing.coords, true) < 1 then
if not isProcessing then
ESX.ShowHelpNotification(_U('weed_processprompt'))
end

if IsControlJustReleased(0, 38) and not isProcessing then
if Config.LicenseEnable then
ESX.TriggerServerCallback('esx_license:checkLicense', function(hasProcessingLicense)
if hasProcessingLicense then
ProcessWeed()
else
OpenBuyLicenseMenu('weed_processing')
end
end, GetPlayerServerId(PlayerId()), 'weed_processing')
else
ProcessWeed()
end
end
else
else
Citizen.Wait(500)
Citizen.Wait(7000)
end
end
end
end
end)
end)


function ProcessWeed()
isProcessing = true

ESX.ShowNotification(_U('weed_processingstarted'))
TriggerServerEvent('esx_drugs:processCannabis')
local timeLeft = Config.Delays.WeedProcessing / 1000
local playerPed = PlayerPedId()

while timeLeft > 0 do
Citizen.Wait(1000)
timeLeft = timeLeft - 1

if GetDistanceBetweenCoords(GetEntityCoords(playerPed), Config.CircleZones.WeedProcessing.coords, false) > 4 then
ESX.ShowNotification(_U('weed_processingtoofar'))
TriggerServerEvent('esx_drugs:cancelProcessing')
break
end
end


isProcessing = false
end


Citizen.CreateThread(function()
Citizen.CreateThread(function()
while true do
while true do
Citizen.Wait(0)
Citizen.Wait(0)

local playerPed = PlayerPedId()
local playerPed = PlayerPedId()
local coords = GetEntityCoords(playerPed)
local coords = GetEntityCoords(playerPed)
local nearbyObject, nearbyID
local nearbyObject, nearbyID


for i=1, #weedPlants, 1 do
for i=1, #Shitss, 1 do
if GetDistanceBetweenCoords(coords, GetEntityCoords(weedPlants[i]), false) < 1 then
if GetDistanceBetweenCoords(coords, GetEntityCoords(Shitss[i]), false) < 1 then
nearbyObject, nearbyID = weedPlants[i], i
nearbyObject, nearbyID = Shitss[i], i
end
end
end
end


if nearbyObject and IsPedOnFoot(playerPed) then
if nearbyObject and IsPedOnFoot(playerPed) then

if not isPickingUp then
if not isPickingUp then
ESX.ShowHelpNotification(_U('weed_pickupprompt'))
ESX.ShowHelpNotification(_U('pickupprompt'))
end
end


if IsControlJustReleased(0, 38) and not isPickingUp then
if IsControlJustReleased(0, Keys['E']) and not isPickingUp then
isPickingUp = true
isPickingUp = true


ESX.TriggerServerCallback('esx_drugs:canPickUp', function(canPickUp)
ESX.TriggerServerCallback('fm_Shit:canPickUp', function(canPickUp)

if canPickUp then
if canPickUp then
TaskStartScenarioInPlace(playerPed, 'world_human_gardener_plant', 0, false)
exports['progressBars']:startUI(4500, "Drilling for soil")
TaskStartScenarioInPlace(playerPed, 'world_human_const_drill', 0, false)


Citizen.Wait(2000)
Citizen.Wait(3500)
ClearPedTasks(playerPed)
ClearPedTasks(playerPed)
Citizen.Wait(1500)
Citizen.Wait(1000)
ESX.Game.DeleteObject(nearbyObject)
ESX.Game.DeleteObject(nearbyObject)
table.remove(weedPlants, nearbyID)
table.remove(Shitss, nearbyID)
spawnedWeeds = spawnedWeeds - 1
spawnedShits = spawnedShits - 1
TriggerServerEvent('esx_drugs:pickedUpCannabis')
TriggerServerEvent('fm_Shit:pickedUpCannabis')
else
else
ESX.ShowNotification(_U('weed_inventoryfull'))
ESX.ShowNotification(_U('inventoryfull'))
end
end


isPickingUp = false
isPickingUp = false
end, 'cannabis')

end, 'petroleocrudo')
end
end

else
else
Citizen.Wait(500)
Citizen.Wait(500)
end
end

end
end

end)
end)


AddEventHandler('onResourceStop', function(resource)
AddEventHandler('onResourceStop', function(resource)
if resource == GetCurrentResourceName() then
if resource == GetCurrentResourceName() then
for k, v in pairs(weedPlants) do
for k, v in pairs(Shitss) do
ESX.Game.DeleteObject(v)
ESX.Game.DeleteObject(v)
end
end
end
end
end)
end)


function SpawnWeedPlants()
function SpawnShites()
while spawnedWeeds < 25 do
while spawnedShits < 20 do
Citizen.Wait(0)
Citizen.Wait(0)
local weedCoords = GenerateWeedCoords()
local ShitCoords = GenerateShitCoords()


ESX.Game.SpawnLocalObject('prop_weed_02', weedCoords, function(obj)
ESX.Game.SpawnLocalObject('prop_bush_med_03', ShitCoords, function(obj)
PlaceObjectOnGroundProperly(obj)
PlaceObjectOnGroundProperly(obj)
FreezeEntityPosition(obj, true)
FreezeEntityPosition(obj, true)


table.insert(weedPlants, obj)
table.insert(Shitss, obj)
spawnedWeeds = spawnedWeeds + 1
spawnedShits = spawnedShits + 1
end)
end)
end
end
end
end


function ValidateWeedCoord(plantCoord)
function ValidateShitCoord(plantCoord)
if spawnedWeeds > 0 then
if spawnedShits > 0 then
local validate = true
local validate = true


for k, v in pairs(weedPlants) do
for k, v in pairs(Shitss) do
if GetDistanceBetweenCoords(plantCoord, GetEntityCoords(v), true) < 5 then
if GetDistanceBetweenCoords(plantCoord, GetEntityCoords(v), true) < 10 then
validate = false
validate = false
end
end
end
end


if GetDistanceBetweenCoords(plantCoord, Config.CircleZones.WeedField.coords, false) > 50 then
if GetDistanceBetweenCoords(plantCoord, Config.CircleZones.oilfield.coords, false) > 20 then
validate = false
validate = false
end
end


return validate
return validate
else
else
return true
return true
end
end
end
end


function GenerateWeedCoords()
function GenerateShitCoords()
while true do
while true do
Citizen.Wait(1)
Citizen.Wait(200)


local weedCoordX, weedCoordY
local ShitCoordX, ShitCoordY


math.randomseed(GetGameTimer())
math.randomseed(GetGameTimer())
local modX = math.random(-90, 90)
local modX = math.random(-30, 30)


Citizen.Wait(100)
Citizen.Wait(100)


math.randomseed(GetGameTimer())
math.randomseed(GetGameTimer())
local modY = math.random(-90, 90)
local modY = math.random(-25, 25)


weedCoordX = Config.CircleZones.WeedField.coords.x + modX
ShitCoordX = Config.CircleZones.oilfield.coords.x + modX
weedCoordY = Config.CircleZones.WeedField.coords.y + modY
ShitCoordY = Config.CircleZones.oilfield.coords.y + modY


local coordZ = GetCoordZ(weedCoordX, weedCoordY)
local coordZ = GetCoordZ(ShitCoordX, ShitCoordY)
local coord = vector3(weedCoordX, weedCoordY, coordZ)
local coord = vector3(ShitCoordX, ShitCoordY, coordZ)


if ValidateWeedCoord(coord) then
if ValidateShitCoord(coord) then
return coord
return coord
end
end
end
end
end
end


function GetCoordZ(x, y)
function GetCoordZ(x, y)
local groundCheckHeights = { 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0 }
local groundCheckHeights = { 40.0, 41.0, 42.0, 43.0, 44.0, 45.0, 46.0, 47.0, 48.0, 49.0, 50.0 }


for i, height in ipairs(groundCheckHeights) do
for i, height in ipairs(groundCheckHeights) do
local foundGround, z = GetGroundZFor_3dCoord(x, y, height)
local foundGround, z = GetGroundZFor_3dCoord(x, y, height)


if foundGround then
if foundGround then
return z
return z
end
end
end
end


return 43.0
return 43.0
end
end