Scripts/resources/[qb]/[qb_jobs]/kloud-farmjob/modules/field/events.lua

129 lines
4.7 KiB
Lua
Raw Normal View History

2024-12-29 20:06:22 +00:00
RegisterNetEvent("kloud-farm:client:pickProp", function(data)
local zoneData = KloudDev.Locations[data.currentZone]
local canStart, msg = lib.callback.await("kloud-farm:callback:canStart", false, zoneData)
if not canStart then Notify(msg, "error") return end
_G.IsBusy = true
if zoneData.anim.scenario then
TaskStartScenarioInPlace(cache.ped, zoneData.anim.scenario, 0, false)
else
PlayAnim(cache.ped, zoneData.anim.dict, zoneData.anim.clip, -1, zoneData.anim.upperBody)
end
if zoneData.action.type == "progress" then
local progress = Progress(zoneData.action.progressDuration, locale("uprooting", FormatStr(zoneData.item.label)))
if not progress then
ClearPedTasksImmediately(cache.ped)
DeleteProp(data.entity)
_G.IsBusy = false
return
end
elseif zoneData.action.type == "skillCheck" then
if not SkillCheck(zoneData.action.skillCheckDifficulty, zoneData.action.skillCheckInputs) then
ClearPedTasksImmediately(cache.ped)
DeleteProp(data.entity)
_G.IsBusy = false
return
end
end
_G.IsBusy = false
ClearPedTasksImmediately(cache.ped)
DeleteProp(data.entity)
lib.callback("kloud-farm:callback:uprooted", 3000, nil, zoneData)
end)
RegisterNetEvent("kloud-farm:client:pickTree", function(data)
local zoneData = KloudDev.Trees[data.currentZone]
local canStart, msg = lib.callback.await("kloud-farm:callback:canStart", false, zoneData)
if not canStart then Notify(msg, "error") return end
_G.IsBusy = true
if zoneData.anim.scenario then
TaskStartScenarioInPlace(cache.ped, zoneData.anim.scenario, 0, false)
else
PlayAnim(cache.ped, zoneData.anim.dict, zoneData.anim.clip, -1, zoneData.anim.upperBody)
end
if zoneData.action.type == "progress" then
local progress = Progress(zoneData.action.progressDuration, locale("uprooting", FormatStr(zoneData.item.label)))
if not progress then
ClearPedTasksImmediately(cache.ped)
_G.IsBusy = false
return
end
elseif zoneData.action.type == "skillCheck" then
if not SkillCheck(zoneData.action.skillCheckDifficulty, zoneData.action.skillCheckInputs) then
ClearPedTasksImmediately(cache.ped)
_G.IsBusy = false
return
end
end
ClearPedTasksImmediately(cache.ped)
_G.IsBusy = false
table.insert(_T.PickedTrees, {entity = data.entity, cooldown = zoneData.cooldown})
TriggerEvent("kloud-farm:client:startTreesCooldown")
lib.callback("kloud-farm:callback:uprooted", 3000, nil, zoneData)
end)
RegisterNetEvent("kloud-farm:client:startTreesCooldown", function()
if _G.Cooldown then return end
_G.Cooldown = true
while true do
for k, tree in pairs(_T.PickedTrees) do
for key, value in pairs(tree) do
if key == "cooldown" then
_T.PickedTrees[k].cooldown = value - 1
-- print("Cooldown: " .. value)
if value <= 0 then
table.remove(_T.PickedTrees, k)
end
end
end
end
if next(_T.PickedTrees) == nil then
_G.Cooldown = false
return
end
Wait(1000)
end
end)
RegisterNetEvent("kloud-farm:client:wash", function()
HideText()
local optionsTbl = {}
for _, v in pairs(KloudDev.WashLocations.items) do
if GetItemCount(v[1], nil, false) > 0 then
local values = {}
for i = 1, GetItemCount(v[1], nil, false) do
if i <= KloudDev.WashLocations.maxWash then
table.insert(values, i)
end
end
table.insert(optionsTbl, {
label = "x1 ".. FormatStr(v[1]).." : x1 "..FormatStr(v[2]),
icon = KloudDev.ImagePath .. v[2] .. ".png",
values = values,
args = {
itemRequired = v[1],
itemResult = v[2]
}
})
end
end
if next(optionsTbl) == nil then
Notify(locale("no_crops_to_wash"), "error")
return
end
lib.registerMenu({
id = "kloud-farm:wash",
title = locale("wash_crops"),
position = "top-right",
options = optionsTbl,
disableInput = true,
}, function(selected, scrollIndex, args)
WashCrops({itemRequired = args.itemRequired, itemResult = args.itemResult, amount = scrollIndex})
end)
lib.showMenu("kloud-farm:wash")
end)
AddEventHandler("onResourceStop", function(name)
if GetCurrentResourceName() ~= name then return end
ClearProps()
end)