From 585ee069c292d678f43f72a81ec2204875d257c1 Mon Sep 17 00:00:00 2001 From: Nordi98 Date: Sun, 3 Aug 2025 19:23:41 +0200 Subject: [PATCH] ed --- resources/[tools]/nordi_dj/client/main.lua | 10 +++- resources/[tools]/nordi_dj/html/script.js | 63 +++++++++++++++++++--- 2 files changed, 64 insertions(+), 9 deletions(-) diff --git a/resources/[tools]/nordi_dj/client/main.lua b/resources/[tools]/nordi_dj/client/main.lua index aa369d7c9..38c471943 100644 --- a/resources/[tools]/nordi_dj/client/main.lua +++ b/resources/[tools]/nordi_dj/client/main.lua @@ -188,7 +188,6 @@ RegisterNetEvent('dj:client:receiveActiveDJs', function(booths) end end) --- NUI Callbacks RegisterNUICallback('djInterfaceClosed', function(data, cb) SetNuiFocus(false, false) isUIOpen = false @@ -199,9 +198,18 @@ RegisterNUICallback('djInterfaceClosed', function(data, cb) -- Aktiviere alle Controls wieder EnableAllControlActions(0) + -- Musik NICHT stoppen, wenn stopMusic nicht explizit true ist + if data.stopMusic then + -- Stoppe Musik nur wenn explizit angefordert + if currentBooth then + TriggerServerEvent('dj:server:stopMusic', currentBooth.name) + end + end + cb('ok') end) + RegisterNUICallback('deckStateChanged', function(data, cb) if Config.Debug then print(string.format('[DJ System] Deck %s %s: %s', diff --git a/resources/[tools]/nordi_dj/html/script.js b/resources/[tools]/nordi_dj/html/script.js index 2d307710d..9d2d94831 100644 --- a/resources/[tools]/nordi_dj/html/script.js +++ b/resources/[tools]/nordi_dj/html/script.js @@ -1112,6 +1112,18 @@ function setupInterfaceControls() { const header = document.querySelector('.dj-header'); const resizeHandle = document.createElement('div'); + // Verbesserte Schließen-Funktion + const closeBtn = document.querySelector('.close-btn'); + if (closeBtn) { + closeBtn.addEventListener('click', function(e) { + // Nur Interface schließen, Musik weiterlaufen lassen + closeDJInterface(); + e.preventDefault(); + e.stopPropagation(); + }); + } + + // Erstelle Resize-Handle resizeHandle.className = 'resize-handle'; resizeHandle.innerHTML = ''; @@ -1163,16 +1175,16 @@ function setupInterfaceControls() { }); // Verbesserte Schließen-Funktion - const closeBtn = document.querySelector('.close-btn'); - if (closeBtn) { - closeBtn.addEventListener('click', function(e) { + // Korrigierte Schreibweise: close-btn ist die CSS-Klasse + const closeButton = document.querySelector('.close-btn'); + if (closeButton) { + closeButton.addEventListener('click', function(e) { closeDJInterface(); e.preventDefault(); e.stopPropagation(); }); } } - function handleDrag(e) { if (!isDragging) return; @@ -1229,8 +1241,7 @@ function stopResize() { } function closeDJInterface() { - // Stoppe alle laufenden Prozesse - stopAllAudio(); + // Entferne Event-Listener document.removeEventListener('mousemove', handleDrag); @@ -1245,9 +1256,11 @@ function closeDJInterface() { } // Benachrichtige FiveM - notifyFiveM('djInterfaceClosed', {}); + notifyFiveM('djInterfaceClosed', { + stopMusic: false // Wichtig: Teile FiveM mit, dass die Musik weiterlaufen soll + }); - console.log('DJ System: Interface closed'); + console.log('DJ System: Interface closed, music continues playing'); } function stopAllAudio() { @@ -1542,3 +1555,37 @@ console.log('Z/X/C - Crossfader positions'); console.log('R - Toggle recording'); console.log('Space - Play/Pause current deck'); +// In script.js - Separate Funktion zum Stoppen der Musik +function stopAllAudioAndCloseInterface() { + // Stoppe YouTube-Player + for (const deck of ['A', 'B']) { + if (djInterface.decks[deck].youtubePlayer) { + try { + djInterface.decks[deck].youtubePlayer.stopVideo(); + } catch (e) { + console.error(`DJ System: Error stopping YouTube player for Deck ${deck}`, e); + } + } + + // Stoppe Audio-Player + if (djInterface.decks[deck].player) { + try { + djInterface.decks[deck].player.pause(); + djInterface.decks[deck].player.currentTime = 0; + } catch (e) { + console.error(`DJ System: Error stopping audio player for Deck ${deck}`, e); + } + } + + // Reset Deck-Status + djInterface.decks[deck].isPlaying = false; + } + + // Schließe Interface + closeDJInterface(); + + // Benachrichtige FiveM, dass die Musik gestoppt werden soll + notifyFiveM('djInterfaceClosed', { + stopMusic: true + }); +}