1
0
Fork 0
forked from Simnation/Main
This commit is contained in:
Nordi98 2025-08-03 17:09:00 +02:00
parent 9a29e35e64
commit cac2b97954
4 changed files with 338 additions and 360 deletions

View file

@ -360,54 +360,61 @@ local function useAlternativeConversion(originalUrl, videoId, callback)
end)
end
-- Aktualisiere die PlayMusic Funktion
-- Aktualisierte PlayMusic Funktion
RegisterServerEvent('dj:playMusic')
AddEventHandler('dj:playMusic', function(title, url, volume)
local src = source
local Player = QBCore.Functions.GetPlayer(src)
if not Player then return end
print('[DJ System] Spiele Musik ab: ' .. title .. ' | URL: ' .. url)
-- Prüfe ob es eine YouTube URL ist
if string.match(url, "youtube%.com") or string.match(url, "youtu%.be") then
convertYouTubeUrl(url, function(convertedUrl, error)
if error then
TriggerClientEvent('QBCore:Notify', src, 'Fehler beim Konvertieren: ' .. error, 'error')
return
end
if convertedUrl then
-- Sende konvertierte URL an alle Clients
TriggerClientEvent('dj:playMusicClient', -1, title, convertedUrl, volume)
-- Speichere in Session History
MySQL.Async.execute('INSERT INTO dj_session_history (dj_citizenid, dj_name, booth_name, song_title, song_url, song_type, volume, session_start) VALUES (?, ?, ?, ?, ?, ?, ?, NOW())', {
Player.PlayerData.citizenid,
Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname,
'Unknown', -- Du kannst hier den Booth-Namen hinzufügen
title,
url,
'youtube',
volume
})
else
TriggerClientEvent('QBCore:Notify', src, 'Konvertierung fehlgeschlagen', 'error')
end
end)
else
-- Direkte Audio URL
TriggerClientEvent('dj:playMusicClient', -1, title, url, volume)
-- Bereinige YouTube URL (entferne Playlist-Parameter)
local cleanUrl = url
if string.find(url, "youtube%.com") or string.find(url, "youtu%.be") then
-- Entferne &list= und andere Parameter
cleanUrl = string.gsub(url, "&list=.-$", "")
cleanUrl = string.gsub(cleanUrl, "&start_radio=.-$", "")
cleanUrl = string.gsub(cleanUrl, "&index=.-$", "")
-- Speichere in Session History
MySQL.Async.execute('INSERT INTO dj_session_history (dj_citizenid, dj_name, booth_name, song_title, song_url, song_type, volume, session_start) VALUES (?, ?, ?, ?, ?, ?, ?, NOW())', {
Player.PlayerData.citizenid,
Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname,
'Unknown',
title,
url,
'direct',
volume
})
print('[DJ System] Bereinigte YouTube URL: ' .. cleanUrl)
end
print('[DJ System] Streaming: ' .. title .. ' | URL: ' .. cleanUrl)
-- Sende direkt an alle Clients zum Streamen
TriggerClientEvent('dj:playMusicClient', -1, title, cleanUrl, volume)
-- Speichere in Datenbank
local songType = 'direct'
if string.find(cleanUrl, "youtube") then
songType = 'youtube'
end
MySQL.Async.execute('INSERT INTO dj_session_history (dj_citizenid, dj_name, booth_name, song_title, song_url, song_type, volume, session_start) VALUES (?, ?, ?, ?, ?, ?, ?, NOW())', {
Player.PlayerData.citizenid,
Player.PlayerData.charinfo.firstname .. ' ' .. Player.PlayerData.charinfo.lastname,
'DJ Booth',
title,
cleanUrl,
songType,
volume
})
TriggerClientEvent('QBCore:Notify', src, 'Streaming: ' .. title, 'success')
end)
-- Audio Error Handler
RegisterNUICallback('audioError', function(data, cb)
local src = source
print('[DJ System] Audio Error: ' .. (data.error or 'Unknown'))
TriggerClientEvent('QBCore:Notify', src, 'Audio Fehler: ' .. (data.error or 'Unbekannt'), 'error')
cb('ok')
end)
-- Song Ended Handler
RegisterNUICallback('songEnded', function(data, cb)
print('[DJ System] Song ended')
-- Hier könntest du Playlist-Logik hinzufügen
cb('ok')
end)