From 4a2866613ec90e7c5eca5388fc13cf54b180094d Mon Sep 17 00:00:00 2001 From: Luke Date: Sat, 15 Oct 2022 14:30:10 +0200 Subject: [PATCH] feat(client/skillcheck): skillcheck array chaining --- resource/interface/client/skillcheck.lua | 43 ++++++++++++++++++++---- 1 file changed, 36 insertions(+), 7 deletions(-) diff --git a/resource/interface/client/skillcheck.lua b/resource/interface/client/skillcheck.lua index 4bc2aba68..b75c7e3cf 100644 --- a/resource/interface/client/skillcheck.lua +++ b/resource/interface/client/skillcheck.lua @@ -1,19 +1,48 @@ local skillcheck +local gameCount = 0 +local gameDifficulty +local gamePromise + +local function resolveSkillCheck(success) + skillcheck:resolve(success) + skillcheck = nil + SetNuiFocus(false, false) +end function lib.skillCheck(difficulty) if skillcheck then return end skillcheck = promise:new() + gameDifficulty = difficulty SetNuiFocus(true, false) - SendNUIMessage({ - action = 'startSkillCheck', - data = difficulty - }) + if type(difficulty) == 'table' then + gameCount = 0 + for i = 1, #difficulty do + gamePromise = promise:new() + SendNUIMessage({ + action = 'startSkillCheck', + data = difficulty[i] + }) + if not Citizen.Await(gamePromise) then + gamePromise = nil + break + end + end + else + SendNUIMessage({ + action = 'startSkillCheck', + data = difficulty + }) + end return Citizen.Await(skillcheck) end RegisterNUICallback('skillCheckOver', function(data, cb) cb(1) - skillcheck:resolve(data.success) - skillcheck = nil - SetNuiFocus(false, false) + if not gamePromise then return resolveSkillCheck(data.success) end + gamePromise:resolve(data.success) + if not data.success then return resolveSkillCheck(data.success) end + gameCount += 1 + if gameCount == #gameDifficulty then + resolveSkillCheck(data.success) + end end) \ No newline at end of file