forked from Simnation/Main
141 lines
4.8 KiB
Lua
141 lines
4.8 KiB
Lua
local QBCore = exports['qb-core']:GetCoreObject()
|
|
local fireworkTime = 0
|
|
local fireworkLoc = nil
|
|
local fireworkList = {
|
|
['proj_xmas_firework'] = {
|
|
'scr_firework_xmas_ring_burst_rgw',
|
|
'scr_firework_xmas_burst_rgw',
|
|
'scr_firework_xmas_repeat_burst_rgw',
|
|
'scr_firework_xmas_spiral_burst_rgw',
|
|
'scr_xmas_firework_sparkle_spawn'
|
|
},
|
|
['scr_indep_fireworks'] = {
|
|
'scr_indep_firework_sparkle_spawn',
|
|
'scr_indep_firework_starburst',
|
|
'scr_indep_firework_shotburst',
|
|
'scr_indep_firework_trailburst',
|
|
'scr_indep_firework_trailburst_spawn',
|
|
'scr_indep_firework_burst_spawn',
|
|
'scr_indep_firework_trail_spawn',
|
|
'scr_indep_firework_fountain'
|
|
},
|
|
['proj_indep_firework'] = {
|
|
'scr_indep_firework_grd_burst',
|
|
'scr_indep_launcher_sparkle_spawn',
|
|
'scr_indep_firework_air_burst',
|
|
'proj_indep_flare_trail'
|
|
},
|
|
['proj_indep_firework_v2'] = {
|
|
'scr_firework_indep_burst_rwb',
|
|
'scr_firework_indep_spiral_burst_rwb',
|
|
'scr_xmas_firework_sparkle_spawn',
|
|
'scr_firework_indep_ring_burst_rwb',
|
|
'scr_xmas_firework_burst_fizzle',
|
|
'scr_firework_indep_repeat_burst_rwb'
|
|
}
|
|
}
|
|
|
|
local function DrawText3D(x, y, z, text)
|
|
SetTextScale(0.35, 0.35)
|
|
SetTextFont(4)
|
|
SetTextProportional(true)
|
|
SetTextColour(255, 255, 255, 215)
|
|
BeginTextCommandDisplayText('STRING')
|
|
SetTextCentre(true)
|
|
AddTextComponentSubstringPlayerName(text)
|
|
SetDrawOrigin(x, y, 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
|
|
|
|
local function fireworkText()
|
|
CreateThread(function()
|
|
while true do
|
|
Wait(0)
|
|
if fireworkTime > 0 and fireworkLoc then
|
|
DrawText3D(fireworkLoc.x, fireworkLoc.y, fireworkLoc.z, Lang:t('firework.time_left') .. fireworkTime)
|
|
end
|
|
if fireworkTime <= 0 then break end
|
|
end
|
|
end)
|
|
end
|
|
|
|
local function startFirework(asset, coords)
|
|
fireworkTime = Config.Fireworks.delay
|
|
fireworkLoc = { x = coords.x, y = coords.y, z = coords.z }
|
|
CreateThread(function()
|
|
fireworkText()
|
|
while fireworkTime > 0 do
|
|
Wait(1000)
|
|
fireworkTime -= 1
|
|
end
|
|
|
|
-- Debug-Nachricht hinzugefügt
|
|
print("Countdown beendet, starte Feuerwerk mit Asset: " .. asset)
|
|
|
|
for i = 1, math.random(5, 10), 1 do
|
|
local firework = fireworkList[asset][math.random(1, #fireworkList[asset])]
|
|
|
|
-- Debug-Nachricht hinzugefügt
|
|
print("Starte Feuerwerk-Effekt: " .. firework)
|
|
|
|
UseParticleFxAssetNextCall(asset)
|
|
StartNetworkedParticleFxNonLoopedAtCoord(firework, fireworkLoc.x, fireworkLoc.y, fireworkLoc.z + 42.5, 0.0, 0.0, 0.0, math.random() * 0.3 + 0.5, false, false, false)
|
|
Wait(math.random(100, 500)) -- Feste Werte für bessere Konsistenz
|
|
end
|
|
fireworkLoc = nil
|
|
end)
|
|
end
|
|
|
|
CreateThread(function()
|
|
local assets = {
|
|
'scr_indep_fireworks',
|
|
'proj_xmas_firework',
|
|
'proj_indep_firework_v2',
|
|
'proj_indep_firework'
|
|
}
|
|
|
|
for i = 1, #assets do
|
|
local asset = assets[i]
|
|
if not HasNamedPtfxAssetLoaded(asset) then
|
|
RequestNamedPtfxAsset(asset)
|
|
while not HasNamedPtfxAssetLoaded(asset) do
|
|
Wait(10)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Debug-Nachricht hinzugefügt
|
|
print("Alle Feuerwerk-Assets geladen")
|
|
end)
|
|
|
|
RegisterNetEvent('fireworks:client:UseFirework', function(itemName, assetName)
|
|
-- Debug-Nachricht hinzugefügt
|
|
print("Feuerwerk-Event ausgelöst mit Item: " .. itemName .. " und Asset: " .. assetName)
|
|
|
|
QBCore.Functions.Progressbar('spawn_object', Lang:t('firework.place_progress'), 3000, false, true, {
|
|
disableMovement = true,
|
|
disableCarMovement = true,
|
|
disableMouse = false,
|
|
disableCombat = true,
|
|
}, {
|
|
animDict = 'anim@narcotics@trash',
|
|
anim = 'drop_front',
|
|
flags = 16,
|
|
}, {}, {}, function() -- Done
|
|
StopAnimTask(PlayerPedId(), 'anim@narcotics@trash', 'drop_front', 1.0)
|
|
TriggerServerEvent('consumables:server:UseFirework', itemName)
|
|
TriggerEvent('qb-inventory:client:ItemBox', QBCore.Shared.Items[itemName], 'remove')
|
|
local pos = GetEntityCoords(PlayerPedId())
|
|
|
|
-- Debug-Nachricht hinzugefügt
|
|
print("Starte Feuerwerk an Position: " .. pos.x .. ", " .. pos.y .. ", " .. pos.z)
|
|
|
|
startFirework(assetName, pos)
|
|
end, function() -- Cancel
|
|
StopAnimTask(PlayerPedId(), 'anim@narcotics@trash', 'drop_front', 1.0)
|
|
QBCore.Functions.Notify(Lang:t('firework.canceled'), 'error')
|
|
end)
|
|
end)
|