Framework & Wiederbelebung

Was automatisch erkannt wird und wo du eingreifst, wenn dein Server etwas anders macht.

Framework und Rettungsdienst-Script werden beim Start erkannt und erneut, sobald eines davon nachträglich startet. Du stellst dafür nichts ein. Qbox wird vor QBCore geprüft, weil Qbox-Server meist zusätzlich ein qb-core-Shim mitbringen.

ErkanntWofür
es_extended, qbx_core, qb-coreGeld, Job und Grade, Name, Identifier, Todeszustand.
esx_ambulancejob, qbx_medical, qb-ambulancejob, wasabi_ambulanceDie eigentliche Wiederbelebung. Geprüft wird, welches davon läuft, nicht welches Framework darunter liegt: Ein ESX-Server darf qb-ambulancejob fahren.
esx_licenseNur, wenn eine Station eine Lizenz verlangt. Läuft es nicht, wird die Prüfung übersprungen statt eine Station zu sperren, die dann niemand öffnen könnte.
cs_hudBenachrichtigungen, wenn es läuft.

Wann jemand als „am Boden" gilt

Auf QBCore und Qbox liest cs_revivestation metadata.isdead und metadata.inlaststand. Danach kommt der State Bag des Spielers, den ESX- und viele standalone Ambulance-Scripts benutzen. Ganz am Ende steht die Lebensenergie des Peds. Diese letzte Prüfung trägt einen Server, dessen Rettungsdienst-Script gar keinen Zustand führt und sie ist der Grund, warum jemand, der im Last Stand verblutet und technisch noch lebt, schon über die Metadaten darüber erfasst wird.

Gefragt wird auf dem Server. Ein Toter, der irgendwo liegt, wo für den Sanitäter nichts gestreamt ist, steht deshalb trotzdem auf der Liste.

Die Wiederbelebung umbiegen

Config.Revive in Abschnitt 5 ist der Punkt, an dem der Spieler wieder auf die Beine kommt. Sie läuft auf dem Server, mit der Server-ID des Ziels und erst nachdem das Geld abgebucht ist. Standardmäßig reicht sie an Framework.Revive weiter, das die vier bekannten Ambulance-Scripts kennt. Für jedes andere ersetzt du den Rumpf:

config.lua
function Config.Revive(serverId)
    return TriggerClientEvent('your:revive', serverId)
end

Ohne erkanntes Ambulance-Script macht cs_revivestation es selbst: Der Spieler wird dort wieder aufgestellt, wo er gefallen ist, bekommt seine Lebensenergie zurück und was das Sterben hinterlassen hat, wird entfernt. Das ist kein Ersatz für einen Rettungsdienst, aber es sorgt dafür, dass die Station auf einem standalone Server nicht ins Leere greift.

Reicht das Umbiegen nicht, weil dein Server auch Jobs, Geld oder Namen anders speichert, liegt die framework.lua offen daneben. Sie besteht aus kleinen Funktionen mit je einer Aufgabe: Spieler holen, Job lesen, Geld abbuchen, Lizenz prüfen, Todeszustand feststellen. Für ein unbekanntes Framework ersetzt du die, die anders arbeiten und lässt den Rest stehen.

Ab dem Moment, in dem Config.Revive aufgerufen wird, ist das Geld bereits abgebucht. Wirft deine Fassung eine Exception, wird der Betrag zurückgebucht, die Konsole schreibt den Fehler auf und der Sanitäter bekommt eine Meldung. Bezahlt und nicht wiederbelebt ist der eine Fall, den es nicht geben darf, deshalb ist er abgefangen.

Frage offen geblieben?

Schreib uns im Discord. Mit Konsolen-Auszug, Framework und Script-Version ist die erste Antwort meistens schon die Lösung.

Zum Support