-- ===================================================================== -- Aether Phone — Clientlogik -- Öffnet das Handy und reicht alle Aktionen an den Server weiter. -- ===================================================================== local istOffen = false local istGeladen = false -- Taste zum Oeffnen (F1) local TASTE_HANDY = 288 local function SendeAnNui(nachricht) SendNuiMessage(json.encode(nachricht)) end local function ZeigeSpielmeldung(text) if not text or text == '' then return end BeginTextCommandThefeedPost('STRING') AddTextComponentSubstringPlayerName(text) EndTextCommandThefeedPostTicker(false, true) end --- Schliesst das Handy local function Schliessen() if not istOffen then return end istOffen = false SetNuiFocus(false, false) SendeAnNui({ aktion = 'schliessen' }) TriggerServerEvent('aether:phone:schliessen') pcall(function() exports['aether-hud']:SetzeSichtbar(true) end) end -- --------------------------------------------------------------------- -- Ereignisse vom Server -- --------------------------------------------------------------------- AddEventHandler('aether:client:bereit', function() istGeladen = true end) RegisterNetEvent('aether:phone:zeige', function(zustand) istOffen = true SetNuiFocus(true, true) pcall(function() exports['aether-hud']:SetzeSichtbar(false) end) zustand.aktion = 'oeffnen' SendeAnNui(zustand) end) RegisterNetEvent('aether:phone:zustand', function(zustand) zustand.aktion = 'zustand' SendeAnNui(zustand) end) RegisterNetEvent('aether:phone:fehler', function(text) if istOffen then SendeAnNui({ aktion = 'fehler', text = text }) else ZeigeSpielmeldung(text) end end) --- Ergebnis der Entsperrung RegisterNetEvent('aether:phone:entsperrt', function(erfolg) SendeAnNui({ aktion = 'entsperrt', erfolg = erfolg }) end) --- Neue Nachricht (auch bei geschlossenem Handy als Hinweis) RegisterNetEvent('aether:phone:neueNachricht', function(nachricht) if istOffen then SendeAnNui({ aktion = 'neueNachricht', nachricht = nachricht }) else ZeigeSpielmeldung(('~b~Neue Nachricht~s~ von %s'):format(nachricht.von)) end end) --- Eingehender Anruf — Handy oeffnet sich automatisch RegisterNetEvent('aether:phone:eingehenderAnruf', function(vonNummer) if not istOffen then istOffen = true SetNuiFocus(true, true) pcall(function() exports['aether-hud']:SetzeSichtbar(false) end) end SendeAnNui({ aktion = 'eingehenderAnruf', nummer = vonNummer }) end) --- Statusaenderung eines Anrufs RegisterNetEvent('aether:phone:anrufStatus', function(status, zusatz) SendeAnNui({ aktion = 'anrufStatus', status = status, zusatz = zusatz }) end) --- Akkustand hat sich geaendert RegisterNetEvent('aether:phone:akku', function(stand) SendeAnNui({ aktion = 'akku', stand = stand }) if stand > 0 and stand <= Handy.AKKU_WARNUNG and not istOffen then ZeigeSpielmeldung(('~o~Handy-Akku~s~ nur noch %d %%'):format(stand)) elseif stand <= 0 then if istOffen then Schliessen() end ZeigeSpielmeldung('~r~Handy-Akku leer~s~') end end) -- --------------------------------------------------------------------- -- Oeffnen per Taste -- --------------------------------------------------------------------- CreateThread(function() while true do Wait(0) if istGeladen and not istOffen and IsControlJustReleased(0, TASTE_HANDY) then if not IsEntityDead(PlayerPedId()) then TriggerServerEvent('aether:phone:oeffnen') end end end end) -- --------------------------------------------------------------------- -- NUI-Callbacks -- --------------------------------------------------------------------- RegisterNUICallback('schliessen', function(_, rueckgabe) Schliessen() rueckgabe({ ok = true }) end) RegisterNUICallback('pinEinrichten', function(daten, rueckgabe) TriggerServerEvent('aether:phone:pinEinrichten', tostring(daten.pin or ''), daten.faceId and true or false) rueckgabe({ ok = true }) end) RegisterNUICallback('entsperren', function(daten, rueckgabe) TriggerServerEvent('aether:phone:entsperren', tostring(daten.pin or '')) rueckgabe({ ok = true }) end) RegisterNUICallback('faceId', function(_, rueckgabe) TriggerServerEvent('aether:phone:faceId') rueckgabe({ ok = true }) end) RegisterNUICallback('kontaktSpeichern', function(daten, rueckgabe) TriggerServerEvent('aether:phone:kontaktSpeichern', tostring(daten.name or ''), tostring(daten.nummer or ''), tonumber(daten.id) or 0) rueckgabe({ ok = true }) end) RegisterNUICallback('kontaktLoeschen', function(daten, rueckgabe) TriggerServerEvent('aether:phone:kontaktLoeschen', tonumber(daten.id) or 0) rueckgabe({ ok = true }) end) RegisterNUICallback('senden', function(daten, rueckgabe) TriggerServerEvent('aether:phone:senden', tostring(daten.nummer or ''), tostring(daten.text or '')) rueckgabe({ ok = true }) end) RegisterNUICallback('anrufen', function(daten, rueckgabe) TriggerServerEvent('aether:phone:anrufen', tostring(daten.nummer or '')) rueckgabe({ ok = true }) end) RegisterNUICallback('annehmen', function(_, rueckgabe) TriggerServerEvent('aether:phone:annehmen') rueckgabe({ ok = true }) end) RegisterNUICallback('auflegen', function(_, rueckgabe) TriggerServerEvent('aether:phone:auflegen') rueckgabe({ ok = true }) end) RegisterNUICallback('einstellungen', function(daten, rueckgabe) TriggerServerEvent('aether:phone:einstellungen', daten) rueckgabe({ ok = true }) end) RegisterNUICallback('akkuTauschen', function(_, rueckgabe) TriggerServerEvent('aether:phone:akkuTauschen') rueckgabe({ ok = true }) end) -- --------------------------------------------------------------------- -- Aufraeumen -- --------------------------------------------------------------------- AddEventHandler('onResourceStop', function(ressource) if ressource ~= GetCurrentResourceName() then return end SetNuiFocus(false, false) end)