-- ===================================================================== -- Aether Documents — Clientlogik -- Öffnet die Börse und zeigt vorgezeigte Dokumente anderer Personen an. -- ===================================================================== local istOffen = false local istGeladen = false -- Taste zum Oeffnen der Boerse (F2) local TASTE_BOERSE = 289 --- Schickt eine Nachricht an die Oberflaeche local function SendeAnNui(nachricht) SendNuiMessage(json.encode(nachricht)) end --- Zeigt eine Meldung oben links im Spiel local function ZeigeSpielmeldung(text) if not text or text == '' then return end BeginTextCommandThefeedPost('STRING') AddTextComponentSubstringPlayerName(text) EndTextCommandThefeedPostTicker(false, true) end --- Schliesst die Boerse local function Schliessen() if not istOffen then return end istOffen = false SetNuiFocus(false, false) SendeAnNui({ aktion = 'schliessen' }) pcall(function() exports['aether-hud']:SetzeSichtbar(true) end) end -- --------------------------------------------------------------------- -- Ereignisse -- --------------------------------------------------------------------- AddEventHandler('aether:client:bereit', function() istGeladen = true end) --- Server schickt den Zustand und moechte, dass wir oeffnen RegisterNetEvent('aether:documents:zeige', function(zustand) istOffen = true SetNuiFocus(true, true) pcall(function() exports['aether-hud']:SetzeSichtbar(false) end) zustand.aktion = 'oeffnen' zustand.typen = Dokumente.Typen SendeAnNui(zustand) end) --- Aktualisierter Zustand nach einer Aktion RegisterNetEvent('aether:documents:zustand', function(zustand) if not istOffen then ZeigeSpielmeldung(zustand.hinweis) return end zustand.aktion = 'zustand' zustand.typen = Dokumente.Typen SendeAnNui(zustand) end) --- Ablehnung einer Aktion RegisterNetEvent('aether:documents:fehler', function(text) if istOffen then SendeAnNui({ aktion = 'fehler', text = text }) else ZeigeSpielmeldung(text) end end) --- Erfolgsmeldung RegisterNetEvent('aether:documents:erfolg', function(text) if istOffen then SendeAnNui({ aktion = 'hinweis', text = text }) else ZeigeSpielmeldung(text) end end) --- Jemand zeigt uns ein Dokument: als Vollbild-Ansicht einblenden RegisterNetEvent('aether:documents:gezeigt', function(dokument) SetNuiFocus(false, false) SendeAnNui({ aktion = 'vorgezeigt', dokument = dokument }) end) -- --------------------------------------------------------------------- -- Oeffnen per Taste -- --------------------------------------------------------------------- CreateThread(function() while true do Wait(0) if istGeladen and not istOffen and IsControlJustReleased(0, TASTE_BOERSE) then if not IsEntityDead(PlayerPedId()) then TriggerServerEvent('aether:documents:oeffnen') end end end end) -- --------------------------------------------------------------------- -- NUI-Callbacks -- --------------------------------------------------------------------- RegisterNUICallback('schliessen', function(_, rueckgabe) Schliessen() rueckgabe({ ok = true }) end) RegisterNUICallback('verschieben', function(daten, rueckgabe) TriggerServerEvent('aether:documents:verschieben', daten.dokumentId, daten.zielBoerse) rueckgabe({ ok = true }) end) RegisterNUICallback('vorzeigen', function(daten, rueckgabe) TriggerServerEvent('aether:documents:vorzeigen', daten.dokumentId, daten.zielId) rueckgabe({ ok = true }) end) RegisterNUICallback('verlieren', function(daten, rueckgabe) TriggerServerEvent('aether:documents:verlieren', daten.dokumentId) rueckgabe({ ok = true }) end) -- --------------------------------------------------------------------- -- Aufraeumen -- --------------------------------------------------------------------- AddEventHandler('onResourceStop', function(ressource) if ressource ~= GetCurrentResourceName() then return end SetNuiFocus(false, false) end)