Events

Mitschreiben, nachdem die Station bedient hat.

Ein Event sagt dir, was gerade passiert ist: Eine Station ging auf oder zu, jemand hat bezahlt, jemand wurde wieder auf die Beine gestellt. Vier davon gibt es auf dem Client, drei auf dem Server.

Alle Events sind normale Events mit AddEventHandler, nicht RegisterNetEvent. Das ist Absicht: als Net-Event registriert könnte die Gegenseite sie fälschen und dir eine Wiederbelebung melden, die es nie gab.

EventSeiteParameter
cs_revivestation:openedClientstationId
cs_revivestation:closedClientstationId
cs_revivestation:reviveClientstationId, targetId, price
cs_revivestation:revivedClientstationId
cs_revivestation:openedServersource, stationId
cs_revivestation:closedServersource, stationId
cs_revivestation:reviveServersource, data

Auf dem Client sind revive und revived zwei verschiedene Dinge: revive ist dieser Spieler, der für jemand anderen bezahlt, revived ist dieser Spieler, der selbst wieder auf die Beine kommt. Bei revived ist die Stations-ID nil, wenn die Wiederbelebung nicht von einer Station kam, sondern über RevivePlayer.

Auf dem Server ist source beim revive-Event der Sanitäter, der bezahlt hat und data.target der, der wieder steht.

Server: data bei revive
{
    station = 1,                -- die ID der Station
    label   = 'CORECITY',
    target  = 12,               -- Server-ID des Wiederbelebten
    name    = 'John Doe',
    cause   = 'Fire',           -- der Name aus deathcauses.lua, nicht übersetzt
    price   = 1600,             -- wirklich bezahlt
    fee     = 1000,             -- der Anteil der Sanitäter-Gebühr darin
    medics  = 2,                -- woraus diese Gebühr entstanden ist
    account = 'cash',           -- 'cash' | 'bank'
    balance = 4200,             -- Kontostand des Sanitäters danach
}
Beispiel: Society-Kasse und HUD
-- Server: die Station führt ihren Umsatz an den Rettungsdienst ab
AddEventHandler('cs_revivestation:revive', function(src, data)
    TriggerEvent('bank:addSociety', 'ambulance', data.price)
end)

-- Client: eigenes HUD ausblenden, solange die Liste offen ist
AddEventHandler('cs_revivestation:opened', function(id) hideMyHud() end)
AddEventHandler('cs_revivestation:closed', function(id) showMyHud() end)
Beispiel: Nachwirkung beim Wiederbelebten
-- Client, auf dem Rechner dessen, der wieder steht
AddEventHandler('cs_revivestation:revived', function(station)
    if not station then return end   -- kam nicht von einer Station
    Effects.blur(8000)
end)

Das revive-Event auf dem Server läuft erst, nachdem die Wiederbelebung stattgefunden hat und der Sanitäter seine Antwort bekommen hat. Was du darin tust, kann eine bezahlte Wiederbelebung also weder aufhalten noch zurücknehmen. Zum Verhindern ist canRevive da, zum Mitschreiben dieses Event. Das HUD ein- und ausblenden kannst du auch ohne Event über Config.showUI und Config.hideUI und eine Nachwirkung beim Wiederbelebten auch über Config.AfterRevive.

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