Untitled Diff
100 removals
Words removed | 156 |
Total words | 414 |
Words removed (%) | 37.68 |
198 lines
62 additions
Words added | 62 |
Total words | 320 |
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