diff --git a/client.lua b/client.lua index 11ed5ef..30b066c 100644 --- a/client.lua +++ b/client.lua @@ -1,4 +1,3 @@ -local QBCore = exports['qbx-core']:GetCoreObject() local isUsingAdvanced local openingRegister local openRegisterDict = 'veh@break_in@0h@p_m_one@' @@ -14,11 +13,9 @@ local function StartLockpick(bool) SetCursorLocation(0.5, 0.2) end -local function LoadAnimDict(dict) while not HasAnimDictLoaded(dict) do RequestAnimDict(dict) Wait(0) end end - local function OpeningRegisterHandler(LockpickTime) openingRegister = true - LoadAnimDict(openRegisterDict) + lib.requestAnimDict(openRegisterDict) TaskPlayAnim(cache.ped, openRegisterDict, openRegisterAnim, 3.0, 3.0, -1, 16, 0, false, false, false) CreateThread(function() while openingRegister do @@ -36,26 +33,12 @@ local function OpeningRegisterHandler(LockpickTime) end local function SafeAnim() - LoadAnimDict('amb@prop_human_bum_bin@idle_b') + lib.requestAnimDict('amb@prop_human_bum_bin@idle_b') TaskPlayAnim(cache.ped, 'amb@prop_human_bum_bin@idle_b', 'idle_d', 8.0, 8.0, -1, 50, 0, false, false, false) Wait(2500) TaskPlayAnim(cache.ped, 'amb@prop_human_bum_bin@idle_b', 'exit', 8.0, 8.0, -1, 50, 0, false, false, false) end -local function DrawText3D(coords, text) - SetTextScale(0.35, 0.35) - SetTextFont(4) - SetTextColour(255, 255, 255, 215) - BeginTextCommandDisplayText("STRING") - SetTextCentre(true) - AddTextComponentSubstringPlayerName(text) - SetDrawOrigin(coords.x, coords.y, coords.z, 0) - EndTextCommandDisplayText(0.0, 0.0) - local factor = (string.len(text)) / 370 - DrawRect(0.0, 0.0 + 0.0125, 0.017 + factor, 0.03, 0, 0, 0, 75) - ClearDrawOrigin() -end - lib.callback.register('qbx-storerobbery:client:getAlertChance', function() local chance = Config.PoliceAlertChance if GetClockHours() >= 1 and GetClockHours() <= 6 then @@ -75,13 +58,20 @@ CreateThread(function() WaitTime = 0 Nearby = true if Config.UseDrawText then - if not HasShownText then HasShownText = true exports['qbx-core']:DrawText(Lang:t('text.register_empty')) end + if not HasShownText then + HasShownText = true + lib.showTextUI(Lang:t('text.register_empty'), {position = 'left-center'}) + exports['qbx-core']:DrawText() + end else - DrawText3D(Config.Registers[i].coords, Lang:t('text.register_empty')) + DrawText3D(Lang:t('text.register_empty'), Config.Registers[i].coords) end end end - if not Nearby and HasShownText then HasShownText = false exports['qbx-core']:HideText() end + if not Nearby and HasShownText then + HasShownText = false + lib.hideTextUI() + end Wait(WaitTime) end end) @@ -106,13 +96,16 @@ CreateThread(function() end end if Config.UseDrawText then - if not HasShownText then HasShownText = true exports['qbx-core']:DrawText(Text) end + if not HasShownText then + HasShownText = true + lib.showTextUI(Text, {position = 'left-center'}) + end else - DrawText3D(Config.Safes[i].coords, Text) + DrawText3D(Text, Config.Safes[i].coords) end end end - if not Nearby and HasShownText then HasShownText = false exports['qbx-core']:HideText() end + if not Nearby and HasShownText then HasShownText = false lib.hideTextUI() end Wait(WaitTime) end end) @@ -125,25 +118,31 @@ end) RegisterNUICallback('success', function(_, cb) StartLockpick(false) OpeningRegisterHandler(Config.OpenRegisterTime) - QBCore.Functions.Progressbar('search_register', Lang:t('text.emptying_the_register'), Config.OpenRegisterTime, false, true, { - disableMovement = true, - disableCarMovement = true, - disableMouse = false, - disableCombat = true, - }, {}, {}, {}, function() -- Done + if lib.progressBar({ + duration = Config.OpenRegisterTime, + label = Lang:t('text.emptying_the_register'), + useWhileDead = false, + canCancel = true, + disable = { + move = true, + car = true, + mouse = false, + combat = true + } + }) then -- if completed openingRegister = false TriggerServerEvent('qb-storerobbery:server:openregister', true) - end, function() -- Cancel + else -- if canceled openingRegister = false TriggerServerEvent('qb-storerobbery:server:cancelledregister') QBCore.Functions.Notify(Lang:t('error.process_canceled'), 'error') - end) + end cb('ok') end) RegisterNUICallback('fail', function(_, cb) StartLockpick(false) - if not QBCore.Functions.IsWearingGloves() then + if not IsWearingGloves() then local FingerDropChance = isUsingAdvanced and math.random(0, 30) or math.random(0, 60) if FingerDropChance > math.random(0, 100) then TriggerServerEvent('evidence:server:CreateFingerDrop', GetEntityCoords(cache.ped)) end end diff --git a/fxmanifest.lua b/fxmanifest.lua index cc3f85d..2a4a47a 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -1,14 +1,16 @@ fx_version 'cerulean' game 'gta5' +description 'QBX-Storerobbery' +repository 'https://github.com/Qbox-project/qbx_storerobbery' version '1.1.1' -repository 'https://github.com/QBCore-Remastered/qb-storerobbery' ui_page 'html/index.html' shared_scripts { + '@qbx_core/import.lua', 'configs/default.lua', - '@qb-core/shared/locale.lua', + '@qbx_core/shared/locale.lua', 'locales/en.lua', 'locales/*.lua', '@ox_lib/init.lua' @@ -17,6 +19,8 @@ shared_scripts { client_script 'client.lua' server_script 'server.lua' +modules {'qbx_core:utils'} + files { 'html/index.html', 'html/script.js', @@ -25,3 +29,4 @@ files { } lua54 'yes' +use_experimental_fxv2_oal 'yes' \ No newline at end of file diff --git a/server.lua b/server.lua index 830f29d..83e0c7a 100644 --- a/server.lua +++ b/server.lua @@ -1,8 +1,8 @@ -local QBCore = exports['qbx-core']:GetCoreObject() local StartedRegister = {} local StartedSafe = {} local SafeCodes = {} local CalledCops = {} +local ITEMS = exports.ox_inventory:Items() local function GetClosestRegister(Coords) local ClosestRegisterIndex @@ -47,12 +47,12 @@ end AddEventHandler('lockpicks:UseLockpick', function(PlayerSource, IsAdvanced) local PlayerCoords = GetEntityCoords(GetPlayerPed(PlayerSource)) local ClosestRegisterIndex = GetClosestRegister(PlayerCoords) - local leoCount = QBCore.Functions.GetDutyCountType('leo') + local leoCount = exports.qbx_core:GetDutyCountType('leo') if not ClosestRegisterIndex then return end if Config.Registers[ClosestRegisterIndex].robbed then return end if leoCount < Config.MinimumCops and Config.NotEnoughCopsNotify then - QBCore.Functions.Notify(PlayerSource, Lang:t('error.no_police', { Required = Config.MinimumCops }), 'error') + exports.qbx_core:Notify(PlayerSource, Lang:t('error.no_police', {Required = Config.MinimumCops}), 'error') return end @@ -64,7 +64,7 @@ AddEventHandler('lockpicks:UseLockpick', function(PlayerSource, IsAdvanced) end) RegisterNetEvent('qb-storerobbery:server:failedregister', function(IsUsingAdvanced) - local Player = QBCore.Functions.GetPlayer(source) + local Player = exports.qbx_core:GetPlayer(source) local PlayerCoords = GetEntityCoords(GetPlayerPed(source)) local ClosestRegisterIndex = GetClosestRegister(PlayerCoords) local DeleteChance = IsUsingAdvanced and math.random(0, 30) or math.random(0, 60) @@ -72,13 +72,13 @@ RegisterNetEvent('qb-storerobbery:server:failedregister', function(IsUsingAdvanc StartedRegister[source] = false Config.Registers[ClosestRegisterIndex].robbed = false if DeleteChance > math.random(0, 100) then - QBCore.Functions.Notify(source, Lang:t('error.lockpick_broken'), 'error') + exports.qbx_core:Notify(source, Lang:t('error.lockpick_broken'), 'error') if IsUsingAdvanced then Player.Functions.RemoveItem('advancedlockpick', 1) - TriggerClientEvent('inventory:client:ItemBox', source, QBCore.Shared.Items['advancedlockpick'], 'remove') + TriggerClientEvent('inventory:client:ItemBox', source, ITEMS['advancedlockpick'], 'remove') else Player.Functions.RemoveItem('lockpick', 1) - TriggerClientEvent('inventory:client:ItemBox', source, QBCore.Shared.Items['lockpick'], 'remove') + TriggerClientEvent('inventory:client:ItemBox', source, ITEMS['lockpick'], 'remove') end end end) @@ -96,16 +96,16 @@ RegisterNetEvent('qb-storerobbery:server:cancelledregister', function() end) RegisterNetEvent('qb-storerobbery:server:openregister', function(IsDone) - local Player = QBCore.Functions.GetPlayer(source) + local Player = exports.qbx_core:GetPlayer(source) local PlayerCoords = GetEntityCoords(GetPlayerPed(source)) local ClosestRegisterIndex = GetClosestRegister(PlayerCoords) - local Amount = QBCore.Functions.GetDutyCountType('leo') + local Amount = exports.qbx_core:GetDutyCountType('leo') if not ClosestRegisterIndex then return end if #(PlayerCoords - Config.Registers[ClosestRegisterIndex].coords) > 2 then return end if not StartedRegister[source] then return end - if Amount < Config.MinimumCops and Config.NotEnoughCopsNotify then - QBCore.Functions.Notify(PlayerSource, Lang:t('error.no_police', { Required = Config.MinimumCops }), 'error') + if Amount < Config.MinimumCops and Config.NotEnoughCopsNotify then + exports.qbx_core:Notify(source, Lang:t('error.no_police', {Required = Config.MinimumCops}), 'error') return end @@ -127,7 +127,7 @@ RegisterNetEvent('qb-storerobbery:server:openregister', function(IsDone) } end Player.Functions.AddItem('stickynote', 1, false, Info) - TriggerClientEvent('inventory:client:ItemBox', source, QBCore.Shared.Items['stickynote'], 'add') + TriggerClientEvent('inventory:client:ItemBox', source, ITEMS['stickynote'], 'add') end StartedRegister[source] = false @@ -141,11 +141,11 @@ RegisterNetEvent('qb-storerobbery:server:trysafe', function() local src = GetPlayerPed(source) local PlayerCoords = GetEntityCoords(src) local ClosestSafeIndex = GetClosestSafe(PlayerCoords) - local leoCount = QBCore.Functions.GetDutyCountType('leo') + local leoCount = exports.qbx_core:GetDutyCountType('leo') if not ClosestSafeIndex then return end if leoCount < Config.MinimumCops and Config.NotEnoughCopsNotify then - QBCore.Functions.Notify(source, Lang:t('error.no_police', { Required = Config.MinimumCops }), 'error') + exports.qbx_core:Notify(source, Lang:t('error.no_police', {Required = Config.MinimumCops}), 'error') return end @@ -163,7 +163,7 @@ RegisterNetEvent('qb-storerobbery:server:failedsafe', function() end) RegisterNetEvent('qb-storerobbery:server:successsafe', function() - local Player = QBCore.Functions.GetPlayer(source) + local Player = exports.qbx_core:GetPlayer(source) local PlayerCoords = GetEntityCoords(GetPlayerPed(source)) local ClosestSafeIndex = GetClosestSafe(PlayerCoords) local worthMarkedBills = math.random(Config.SafeReward.MarkedBillsWorth.Min, Config.SafeReward.MarkedBillsWorth.Max) @@ -181,10 +181,10 @@ RegisterNetEvent('qb-storerobbery:server:successsafe', function() if Config.SafeReward.ChanceAtSpecial > math.random(0, 100) then Player.Functions.AddItem('rolex', math.random(Config.SafeReward.RolexAmount.Min, Config.SafeReward.RolexAmount.Max)) - TriggerClientEvent('inventory:client:ItemBox', source, QBCore.Shared.Items['rolex'], 'add') + TriggerClientEvent('inventory:client:ItemBox', source, ITEMS['rolex'], 'add') if Config.SafeReward.ChanceAtSpecial / 2 > math.random(0, 100) then Player.Functions.AddItem('goldbar', Config.SafeReward.GoldbarAmount) - TriggerClientEvent('inventory:client:ItemBox', source, QBCore.Shared.Items['goldbar'], 'add') + TriggerClientEvent('inventory:client:ItemBox', source, ITEMS['goldbar'], 'add') end end StartedSafe[source] = false @@ -215,5 +215,3 @@ CreateThread(function() Wait(Config.SafeRefresh.Min) end end) - -lib.versionCheck('Qbox-project/qb-storerobbery')