129 lines
4.7 KiB
Lua
129 lines
4.7 KiB
Lua
|
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)
|