ai-streetraces für Entwickler
ai-streetraces hat keine Exports. Sein Polizeialarm, seine Buchungsgründe und seine privaten Events.
ai-streetraces hat keine Exports oder State Bags. Rennen existieren nur im Speicher des Servers, und Geld, Alarme und der Menü-Eintrag laufen über AI Core.
Polizeialarm
Wenn der Countdown eines Rennens startet, kann es einen Alarm senden (nach der Alert chance aus dem Panel) über dispatch.alert der Lib: der Titel „Street race“, die Nachricht „(count) vehicles lining up for an illegal race“, an der Startlinie, mit dem ersten Fahrer als source, Symbol flag-checkered. Er erreicht das jeweils laufende Alarmskript.
Geld
Alles Geld bewegt sich auf dem Money account aus dem Panel mit diesen Buchungsgründen:
| Grund | Wann |
|---|---|
streetrace:<raceId> | Ein Einsatz wird beim Erstellen oder Beitreten abgebucht. |
streetrace:refund | Ein Einsatz kommt zurück (vor dem Start ausgestiegen, abgebrochen, zu wenige Fahrer, Stopp der Ressource). |
streetrace:won | Der Gewinner bekommt den Pott. |
streetrace:split | Das Zeitlimit ist abgelaufen; jeder noch teilnehmende Fahrer bekommt einen Anteil. |
Das Menü aus einem anderen Skript öffnen
Der Server öffnet das Rennmenü mit dem Client-Event ai-streetraces:client:openMenu (das macht /race). Nutze es, um das Menü in deine eigene Telefon-App oder auf einen Interaktionspunkt zu legen.
Seite: Server -> Client · Argumente: keine
// Server
emitNet("ai-streetraces:client:openMenu", source);Das Menü zeigt nur, was der Spieler gerade tun kann (zum Wegpunkt erstellen, einer Einladung beitreten, starten, abbrechen, aussteigen oder aufgeben), und jede Auswahl wird auf dem Server geprüft, daher ist es sicher, es für jeden zu öffnen.
Private Events und Callbacks
Der eigene Vertrag des Skripts (resource/common/race.ts). Der Server prüft bei jedem Aufruf das Fahrzeug, die Entfernung, das Geld und den Rennstatus. Sie können sich zwischen Versionen ändern: Löse sie nicht aus anderen Ressourcen aus und höre nicht darauf.
| Name | Richtung | Was es überträgt |
|---|---|---|
ai-streetraces:create | Client-Callback | (buyIn, finishX, finishY): ein Rennen von der Position des Spielers zum Ziel erstellen. |
ai-streetraces:join | Client-Callback | (raceId): einem Rennen beitreten, zu dem der Spieler eingeladen wurde (zahlt den Einsatz). |
ai-streetraces:leave | Client-Callback | (): das Rennen verlassen; verlässt der Gastgeber es vor dem Start, wird es abgebrochen. |
ai-streetraces:begin | Client-Callback | (): Der Gastgeber beendet die Beitrittszeit jetzt. |
ai-streetraces:finish | Client-Callback | (): Der Fahrer hat das Ziel erreicht. |
ai-streetraces:client:state | Server -> Fahrer | (race, serverNow): ein Snapshot des Rennens, in dem der Spieler ist. |
ai-streetraces:client:racer | Server -> Fahrer | (racer, pot): Ein Fahrer ist beigetreten. |
ai-streetraces:client:racerLeft | Server -> Fahrer | (racerId, pot): Ein Fahrer ist ausgestiegen. |
ai-streetraces:client:start | Server -> Fahrer | (startAt, serverNow): Der Countdown läuft; GO bei startAt (Serveruhr). |
ai-streetraces:client:ended | Server -> Fahrer | (): Das Rennen ist für diesen Spieler vorbei. |
ai-streetraces:client:invite | Server -> Spieler in der Nähe eines neuen Rennens | (invite, serverNow). |
ai-streetraces:client:uninvite | Server -> eingeladene Spieler | (raceId): Das Rennen nimmt keine Fahrer mehr auf. |