From 43f44a052f5195b26b2dfc8618cb65390cf1ae76 Mon Sep 17 00:00:00 2001 From: Csoki Date: Fri, 30 Dec 2022 09:43:27 +0100 Subject: [PATCH] refactor(esx_vehicleshop): GeneratePlate(), IsPlateTaken() --- [esx_addons]/esx_vehicleshop/client/utils.lua | 48 +++++-------------- 1 file changed, 11 insertions(+), 37 deletions(-) diff --git a/[esx_addons]/esx_vehicleshop/client/utils.lua b/[esx_addons]/esx_vehicleshop/client/utils.lua index ef2a9f51..6d05de30 100644 --- a/[esx_addons]/esx_vehicleshop/client/utils.lua +++ b/[esx_addons]/esx_vehicleshop/client/utils.lua @@ -7,27 +7,13 @@ for i = 65, 90 do table.insert(Charset, string.char(i)) end for i = 97, 122 do table.insert(Charset, string.char(i)) end function GeneratePlate() - local generatedPlate - local doBreak = false + math.randomseed(GetGameTimer()) - while true do - Wait(0) - math.randomseed(GetGameTimer()) - if Config.PlateUseSpace then - generatedPlate = string.upper(GetRandomLetter(Config.PlateLetters) .. ' ' .. GetRandomNumber(Config.PlateNumbers)) - else - generatedPlate = string.upper(GetRandomLetter(Config.PlateLetters) .. GetRandomNumber(Config.PlateNumbers)) - end + local generatedPlate = string.upper(GetRandomLetter(Config.PlateLetters) .. (Config.PlateUseSpace and ' ' or '') .. GetRandomNumber(Config.PlateNumbers)) - ESX.TriggerServerCallback('esx_vehicleshop:isPlateTaken', function(isPlateTaken) - if not isPlateTaken then - doBreak = true - end - end, generatedPlate) - - if doBreak then - break - end + local isTaken = IsPlateTaken(generatedPlate) + if isTaken then + return GeneratePlate() end return generatedPlate @@ -35,33 +21,21 @@ end -- mixing async with sync tasks function IsPlateTaken(plate) - local callback = 'waiting' - + local p = promise.new() + ESX.TriggerServerCallback('esx_vehicleshop:isPlateTaken', function(isPlateTaken) - callback = isPlateTaken + p:resolve(isPlateTaken) end, plate) - while type(callback) == 'string' do - Wait(0) - end - - return callback + return Citizen.Await(p) end function GetRandomNumber(length) Wait(0) - if length > 0 then - return GetRandomNumber(length - 1) .. NumberCharset[math.random(1, #NumberCharset)] - else - return '' - end + return length > 0 and GetRandomNumber(length - 1) .. NumberCharset[math.random(1, #NumberCharset)] or '' end function GetRandomLetter(length) Wait(0) - if length > 0 then - return GetRandomLetter(length - 1) .. Charset[math.random(1, #Charset)] - else - return '' - end + return length > 0 and GetRandomLetter(length - 1) .. Charset[math.random(1, #Charset)] or '' end