refactor: general improvement and cleanup

This commit is contained in:
Manason
2023-11-08 23:23:33 -08:00
committed by GitHub
parent 5173547b24
commit 5b5ba9e1af
3 changed files with 105 additions and 118 deletions
+98 -112
View File
@@ -5,18 +5,17 @@ local currentGear = {
enabled = false enabled = false
} }
local isWearingSuit = false
local oxygenLevel = 0 local oxygenLevel = 0
RegisterNetEvent("qb-diving:client:setoxygenlevel", function() lib.callback.register('qbx_divegear:client:fillTank', function()
if oxygenLevel == 0 then if oxygenLevel ~= 0 then
oxygenLevel = Config.OxygenLevel exports.qbx_core:Notify(Lang:t("error.oxygenlevel", {oxygenlevel = oxygenLevel}), 'error')
exports.qbx_core:Notify(Lang:t("success.tube_filled"), 'success') return false
TriggerServerEvent('qb-diving:server:removeItemAfterFill')
return
end end
exports.qbx_core:Notify(Lang:t("error.oxygenlevel", {oxygenlevel = oxygenLevel}), 'error') oxygenLevel = Config.OxygenLevel
exports.qbx_core:Notify(Lang:t("success.tube_filled"), 'success')
return true
end) end)
local function deleteGear() local function deleteGear()
@@ -33,112 +32,99 @@ local function deleteGear()
end end
end end
RegisterNetEvent('qb-diving:client:UseGear', function() local function takeOffSuit()
if isWearingSuit then if lib.progressBar({
if lib.progressBar({ duration = 5000,
duration = 5000, label = Lang:t("info.pullout_suit"),
label = Lang:t("info.pullout_suit"), useWhileDead = false,
useWhileDead = false, canCancel = true,
canCancel = true, anim = {
anim = { dict = "clothingshirt",
dict = "clothingshirt", clip = "try_shirt_positive_d",
clip = "try_shirt_positive_d", blendIn = 8.0
blendIn = 8.0 }
} }) then
}) then SetEnableScuba(cache.ped, false)
SetEnableScuba(cache.ped, false) SetPedMaxTimeUnderwater(cache.ped, 50.00)
SetPedMaxTimeUnderwater(cache.ped, 50.00) currentGear.enabled = false
currentGear.enabled = false deleteGear()
deleteGear() exports.qbx_core:Notify(Lang:t("success.took_out"))
exports.qbx_core:Notify(Lang:t("success.took_out")) TriggerServerEvent("InteractSound_SV:PlayOnSource", nil, 0.25)
TriggerServerEvent("InteractSound_SV:PlayOnSource", nil, 0.25)
isWearingSuit = false
oxygenLevel = oxygenLevel
end
ClearPedTasks(cache.ped)
else
if oxygenLevel <= 0 then
exports.qbx_core:Notify(Lang:t("error.need_otube"), 'error')
return
end
isWearingSuit = true
if IsPedSwimming(cache.ped) or cache.vehicle then
exports.qbx_core:Notify(Lang:t("error.not_standing_up"), 'error')
return
end
if lib.progressBar({
duration = 5000,
label = Lang:t("info.put_suit"),
useWhileDead = false,
canCancel = true,
anim = {
dict = "clothingshirt",
clip = "try_shirt_positive_d",
blendIn = 8.0
}
}) then
deleteGear()
local maskModel = `p_d_scuba_mask_s`
local tankModel = `p_s_scuba_tank_s`
lib.requestModel(maskModel)
lib.requestModel(tankModel)
currentGear.tank = CreateObject(tankModel, 1.0, 1.0, 1.0, true, true, false)
local bone1 = GetPedBoneIndex(cache.ped, 24818)
AttachEntityToEntity(currentGear.tank, cache.ped, bone1, -0.25, -0.25, 0.0, 180.0, 90.0, 0.0, true, true, false, false, 2, true)
currentGear.mask = CreateObject(maskModel, 1.0, 1.0, 1.0, true, true, false)
local bone2 = GetPedBoneIndex(cache.ped, 12844)
AttachEntityToEntity(currentGear.mask, cache.ped, bone2, 0.0, 0.0, 0.0, 180.0, 90.0, 0.0, true, true, false, false, 2, true)
SetEnableScuba(cache.ped, true)
SetPedMaxTimeUnderwater(cache.ped, 2000.00)
currentGear.enabled = true
TriggerServerEvent("InteractSound_SV:PlayOnSource", "breathdivingsuit", 0.25)
CreateThread(function()
while currentGear.enabled do
if IsPedSwimmingUnderWater(cache.ped) and oxygenLevel > 0 then
oxygenLevel -= 1
if oxygenLevel % 10 == 0 and oxygenLevel ~= Config.OxygenLevel then
TriggerServerEvent("InteractSound_SV:PlayOnSource", "breathdivingsuit", 0.25)
elseif oxygenLevel == 0 then
SetEnableScuba(cache.ped, false)
SetPedMaxTimeUnderwater(cache.ped, 1.00)
currentGear.enabled = false
isWearingSuit = false
TriggerServerEvent("InteractSound_SV:PlayOnSource", nil, 0.25)
end
end
Wait(1000)
end
end)
end
ClearPedTasks(cache.ped)
end end
end)
local function DrawText(text) ClearPedTasks(cache.ped)
SetTextFont(4)
SetTextProportional(true)
SetTextScale(0.0, 0.45)
SetTextDropshadow(1, 0, 0, 0, 255)
SetTextEdge(1, 0, 0, 0, 255)
SetTextDropShadow()
SetTextOutline()
BeginTextCommandDisplayText("STRING")
AddTextComponentSubstringPlayerName(text)
EndTextCommandDisplayText(0.45, 0.90)
end end
CreateThread(function() local function putOnSuit()
while true do if oxygenLevel <= 0 then
if currentGear.enabled and isWearingSuit then exports.qbx_core:Notify(Lang:t("error.need_otube"), 'error')
if IsPedSwimmingUnderWater(cache.ped) then return
DrawText(oxygenLevel..'')
end
end
Wait(0)
end end
end)
if IsPedSwimming(cache.ped) or cache.vehicle then
exports.qbx_core:Notify(Lang:t("error.not_standing_up"), 'error')
return
end
if lib.progressBar({
duration = 5000,
label = Lang:t("info.put_suit"),
useWhileDead = false,
canCancel = true,
anim = {
dict = "clothingshirt",
clip = "try_shirt_positive_d",
blendIn = 8.0
}
}) then
deleteGear()
local maskModel = `p_d_scuba_mask_s`
local tankModel = `p_s_scuba_tank_s`
lib.requestModel(maskModel)
lib.requestModel(tankModel)
currentGear.tank = CreateObject(tankModel, 1.0, 1.0, 1.0, true, true, false)
local bone1 = GetPedBoneIndex(cache.ped, 24818)
AttachEntityToEntity(currentGear.tank, cache.ped, bone1, -0.25, -0.25, 0.0, 180.0, 90.0, 0.0, true, true, false, false, 2, true)
currentGear.mask = CreateObject(maskModel, 1.0, 1.0, 1.0, true, true, false)
local bone2 = GetPedBoneIndex(cache.ped, 12844)
AttachEntityToEntity(currentGear.mask, cache.ped, bone2, 0.0, 0.0, 0.0, 180.0, 90.0, 0.0, true, true, false, false, 2, true)
SetEnableScuba(cache.ped, true)
SetPedMaxTimeUnderwater(cache.ped, 2000.00)
currentGear.enabled = true
TriggerServerEvent("InteractSound_SV:PlayOnSource", "breathdivingsuit", 0.25)
CreateThread(function()
while currentGear.enabled do
if IsPedSwimmingUnderWater(cache.ped) and oxygenLevel > 0 then
oxygenLevel -= 1
if oxygenLevel % 10 == 0 and oxygenLevel ~= Config.OxygenLevel then
TriggerServerEvent("InteractSound_SV:PlayOnSource", "breathdivingsuit", 0.25)
elseif oxygenLevel == 0 then
SetEnableScuba(cache.ped, false)
SetPedMaxTimeUnderwater(cache.ped, 1.00)
TriggerServerEvent("InteractSound_SV:PlayOnSource", nil, 0.25)
break
end
end
Wait(1000)
end
end)
CreateThread(function()
while currentGear.enabled do
if IsPedSwimmingUnderWater(cache.ped) then
DrawText2D(oxygenLevel..'', vec2(0.45, 0.90), 1.0, 1.0, 0.45)
end
Wait(0)
end
end)
end
ClearPedTasks(cache.ped)
end
RegisterNetEvent('qbx_divegear:client:useGear', function()
if currentGear.enabled then
takeOffSuit()
else
putOnSuit()
end
end)
+2
View File
@@ -10,6 +10,8 @@ shared_script {
'locales/en.lua', 'locales/en.lua',
'locales/*.lua', 'locales/*.lua',
'config.lua', 'config.lua',
'@qbx_core/import.lua',
'qbx_core:utils',
} }
server_scripts { server_scripts {
+5 -6
View File
@@ -1,11 +1,10 @@
exports.qbx_core:CreateUseableItem("diving_gear", function(source) exports.qbx_core:CreateUseableItem("diving_gear", function(source)
TriggerClientEvent("qb-diving:client:UseGear", source) TriggerClientEvent('qbx_divegear:client:useGear', source)
end) end)
exports.qbx_core:CreateUseableItem("diving_fill", function(source) exports.qbx_core:CreateUseableItem("diving_fill", function(source)
TriggerClientEvent("qb-diving:client:setoxygenlevel", source) local success = lib.callback.await('qbx_divegear:client:fillTank', source)
end) if success then
exports.ox_inventory:RemoveItem(source, 'diving_fill', 1)
RegisterNetEvent('qb-diving:server:removeItemAfterFill', function() end
exports.ox_inventory:RemoveItem(source, 'diving_fill', 1)
end) end)