gamescript¶
Quelle: base/tealdef/scripts/gamescript.d.tl
Hinweise
Typen für Game-Scripts (*.gs.lua-Dateien, deren Einträge updateScript, postUpdateScript,
handleEventScript und guiHandleEventScript auf Funktionen der Form "file.script@functionName"
zeigen), für ihren dauerhaft gespeicherten Zustand und für die Nutzdaten von Engine-Events wie
OnCalcTicketPrice.
Beispiel
-- base/content/game_mechanics/game_mechanics/company/company.gs.lua
function data()
return {
updateScript = { fileName = "company.script@update" },
postUpdateScript = { fileName = "company.script@postUpdate" },
handleEventScript = { fileName = "company.script@handleEvent" },
guiHandleEventScript = { fileName = "company.script@guiHandleEvent" },
}
end
CalcTicketPriceEvent¶
record global base/tealdef/scripts/gamescript.d.tl:3
global record CalcTicketPriceEvent
Hinweise
Ein Element der Liste param des Events OnCalcTicketPrice, das SimEntityAtVehicleSystem für
Passagiere sendet. Ein Handler kann eine Tabelle {index : multiplier} zurückgeben und damit den
Ticketpreis einzelner Elemente skalieren (Index 0 gilt für alle).
Felder
| Name | Typ | Beschreibung |
|---|---|---|
vehicleEntity |
Engine.Entity |
Das Fahrzeug, in dem der Passagier fährt. |
lineEntity |
Engine.Entity |
Die Linie, die das Fahrzeug bedient. |
simEntity |
Engine.Entity |
Die simulierte Person, die das Ticket bezahlt. |
basePrice |
number |
Ticketpreis vor den Multiplikatoren der Skripte. |
distance |
number |
Zurückgelegte Strecke, nach der sich der Preis richtet. |
CalcTicketPriceCargoEvent¶
record global base/tealdef/scripts/gamescript.d.tl:11
global record CalcTicketPriceCargoEvent
Hinweise
Ein Element der Liste param des Events OnCalcTicketPrice, das TransportVehicleSystem für Güter
sendet. Ein Handler kann eine Tabelle {index : multiplier} zurückgeben und damit den Preis einzelner
Elemente skalieren.
Felder
| Name | Typ | Beschreibung |
|---|---|---|
vehicleEntity |
Engine.Entity |
Das Fahrzeug, das die Güter transportiert. |
lineEntity |
Engine.Entity |
Die Linie, die das Fahrzeug bedient. |
simEntity |
Engine.Entity |
Die simulierte Gütereinheit. |
stockListEntity |
Engine.Entity |
Lagerliste, aus der die Güter kommen (die Liefer-Subventionen des Basisspiels vergleichen sie mit der Lagerliste einer Industrie). |
basePrice |
number |
Preis vor den Multiplikatoren der Skripte. |
distance |
number |
Zurückgelegte Strecke, nach der sich der Preis richtet. |
StartedLineUsage¶
record global base/tealdef/scripts/gamescript.d.tl:24
global record StartedLineUsage
Hinweise
Nutzdaten des Events OnStartedLineUsage, das SimPersonSystem sendet, wenn Personen eine Fahrt auf einer Linie beginnen.
Felder
| Name | Typ | Beschreibung |
|---|---|---|
entities |
{{Engine.Entity, Engine.Entity}} |
Liste von Paaren. Das erste Element jedes Paars ist die Entität der simulierten Person. |
ArriveAtStop¶
record global base/tealdef/scripts/gamescript.d.tl:28
global record ArriveAtStop
Hinweise
Nutzdaten des Events, wenn ein Fahrzeug an einer Haltestelle ankommt.
Felder
| Name | Typ | Beschreibung |
|---|---|---|
vehicleEntity |
Engine.Entity |
Das ankommende Fahrzeug. |
lineEntity |
Engine.Entity |
Die Linie des Fahrzeugs. |
stopIndex |
integer |
Index der Haltestelle, an der das Fahrzeug angekommen ist. |
lastStopIndex |
integer |
EventData¶
record global base/tealdef/scripts/gamescript.d.tl:35
global record EventData<T, U>
Hinweise
Allgemeines Paar aus einem Event-Parameter param und dem Ergebnis result des Handlers.
Felder
| Name | Typ | Beschreibung |
|---|---|---|
param |
T |
Der Event-Parameter. |
result |
U |
Das Ergebnis des Handlers. |
GameScriptState¶
record global base/tealdef/scripts/gamescript.d.tl:40
global record GameScriptState<T>
Hinweise
Dauerhaft gespeicherter Zustand eines Game-Scripts, den update, postUpdate und handleEvent
bekommen. Die Zustandstabelle wird mit dem Spielstand gespeichert. Um sie zu ändern, liest du sie mit
get, änderst sie und schreibst sie mit set zurück.
Funktionen
get(GameScriptState<T>) : T base/tealdef/scripts/gamescript.d.tl:41
Aufruf: gameScriptState:get(…) (Methode)
Hinweise
Gibt die aktuelle Zustandstabelle des Skripts zurück.
Rückgabe T
Im Basisspiel verwendet: 78-mal in 26 Dateien
base/content/game_mechanics/game_mechanics/achievements/achievements.script.tl:496
base/content/game_mechanics/game_mechanics/arrival_tracker/arrivaltracker.script.tl:79
base/content/game_mechanics/game_mechanics/celebrations/celebrations.script.tl:296
base/content/game_mechanics/game_mechanics/company/company.script.tl:530
base/content/game_mechanics/game_mechanics/company/company_growth.script.tl:88
base/content/game_mechanics/game_mechanics/company/explorations/exploration_plane.script.tl:284
… und 20 weitere Dateien.
get_native(GameScriptState<T>) : NativeLuaTable base/tealdef/scripts/gamescript.d.tl:42
Hinweise
Gibt den Zustand als native Lua-Tabelle ohne Teal-Typen zurück.
Rückgabe NativeLuaTable
set(GameScriptState<T>, T) base/tealdef/scripts/gamescript.d.tl:43
Aufruf: gameScriptState:set(…) (Methode)
Hinweise
Ersetzt den Zustand des Skripts durch die übergebene Tabelle.
Beispiel
Im Basisspiel verwendet: 87-mal in 27 Dateien
base/content/game_mechanics/game_mechanics/achievements/achievements.script.tl:781
base/content/game_mechanics/game_mechanics/arrival_tracker/arrivaltracker.script.tl:87
base/content/game_mechanics/game_mechanics/celebrations/celebrations.script.tl:357
base/content/game_mechanics/game_mechanics/company/company.script.tl:550
base/content/game_mechanics/game_mechanics/company/company_growth.script.tl:112
base/content/game_mechanics/game_mechanics/company/explorations/exploration_plane.script.tl:306
… und 21 weitere Dateien.
set_native(GameScriptState<T>, NativeLuaTable) base/tealdef/scripts/gamescript.d.tl:44
Hinweise
Ersetzt den Zustand durch eine native Lua-Tabelle.
hasEventSubscriptions(GameScriptState<T>) : boolean base/tealdef/scripts/gamescript.d.tl:45
Aufruf: gameScriptState:hasEventSubscriptions(…) (Methode)
Hinweise
True, wenn das Skript mindestens ein Event abonniert hat.
Rückgabe boolean
Im Basisspiel verwendet: 12-mal in 12 Dateien
base/content/game_mechanics/game_mechanics/arrival_tracker/arrivaltracker.script.tl:70
base/content/game_mechanics/game_mechanics/emission/emissions.script.tl:30
base/content/game_mechanics/game_mechanics/finance/loan.script.tl:38
base/content/game_mechanics/game_mechanics/fun_elements/fun_elements.script.tl:61
base/content/game_mechanics/game_mechanics/game_time/game_time.script.tl:177
base/content/game_mechanics/game_mechanics/notifications/notifications.script.tl:35
… und 6 weitere Dateien.
subscribeToAllEvents(GameScriptState<T>) base/tealdef/scripts/gamescript.d.tl:46
Aufruf: gameScriptState:subscribeToAllEvents(…) (Methode)
Hinweise
Lässt handleEvent jedes Event empfangen.
subscribeToNoEvents(GameScriptState<T>) base/tealdef/scripts/gamescript.d.tl:47
Hinweise
Entfernt alle Event-Abonnements.
subscribeToEvent(GameScriptState<T>, string) base/tealdef/scripts/gamescript.d.tl:48
Aufruf: gameScriptState:subscribeToEvent(…) (Methode)
Hinweise
Abonniert für handleEvent die Events mit dem angegebenen Namen.
Details
Das Basisspiel abonniert in handleEvent, sobald es initNewGame oder handleLegacy empfängt (beide kommen mit leerem src und id).
Beispiel
Im Basisspiel verwendet: 42-mal in 15 Dateien
base/content/game_mechanics/game_mechanics/arrival_tracker/arrivaltracker.script.tl:71
base/content/game_mechanics/game_mechanics/company/company_growth.script.tl:118
base/content/game_mechanics/game_mechanics/emission/emissions.script.tl:31
base/content/game_mechanics/game_mechanics/finance/loan.script.tl:39
base/content/game_mechanics/game_mechanics/fun_elements/fireworks.script.tl:96
base/content/game_mechanics/game_mechanics/fun_elements/fun_elements.script.tl:62
… und 9 weitere Dateien.
GameScriptStateReadOnly¶
record global base/tealdef/scripts/gamescript.d.tl:51
global record GameScriptStateReadOnly<T>
Hinweise
Schreibgeschützte Sicht auf den Zustand eines Game-Scripts, die die GUI-Funktionen bekommen.
Funktionen
get(GameScriptStateReadOnly<T>) : T base/tealdef/scripts/gamescript.d.tl:52
Hinweise
Gibt die aktuelle Zustandstabelle des Skripts zurück.
Rückgabe T
GameScript¶
record global base/tealdef/scripts/gamescript.d.tl:55
global record GameScript<T>
Hinweise
Die Funktionen, die eine Game-Script-Datei exportiert. Die *.gs.lua nennt sie in der Form "file.script@functionName".
Funktionen
update(userParams : table, state : GameScriptState<T>, dt : number) : any base/tealdef/scripts/gamescript.d.tl:56
Hinweise
Wird vom Game-Script-System regelmäßig aufgerufen.
| Parameter | Typ | Beschreibung |
|---|---|---|
userParams |
table |
Benutzerparameter des Game-Scripts. |
state |
GameScriptState<T> |
Der dauerhaft gespeicherte Zustand des Skripts. |
dt |
number |
Zeitschritt dieses Updates. |
Rückgabe any: Ein beliebiger Wert. Er geht als updateResult an postUpdate.
postUpdate(userParams : table, state : GameScriptState<T>, dt : number, updateResult : any) base/tealdef/scripts/gamescript.d.tl:57
Hinweise
Wird nach update mit dessen Ergebnis aufgerufen. Das Basisspiel sendet von hier aus Befehle (zum Beispiel Bauvorschläge).
| Parameter | Typ | Beschreibung |
|---|---|---|
userParams |
table |
|
state |
GameScriptState<T> |
|
dt |
number |
|
updateResult |
any |
Der Rückgabewert von update. |
handleEvent(userParams : table, state : GameScriptState<T>, src : string, id : string, name : string, param : any) : any base/tealdef/scripts/gamescript.d.tl:58
Hinweise
Empfängt die Events, die das Skript abonniert hat.
| Parameter | Typ | Beschreibung |
|---|---|---|
userParams |
table |
|
state |
GameScriptState<T> |
|
src |
string |
Quelle des Events. Bei Lebenszyklus-Events des Spiels wie initNewGame ist sie leer. |
id |
string |
ID des Empfängers oder Systems, z. B. "TransportVehicleSystem" oder die ID, die in api.cmd.makeScriptingSendEventCmd angegeben wurde. |
name |
string |
Name des Events, z. B. "OnCalcTicketPrice". |
param |
any |
Nutzdaten des Events. |
Rückgabe any: Ein Ergebnis, das vom Event abhängt, z. B. Multiplikatoren für den Ticketpreis bei OnCalcTicketPrice oder Metadaten bei storeSavegameMetadata.
GameScriptWithGui¶
record global base/tealdef/scripts/gamescript.d.tl:61
global record GameScriptWithGui<StateT, GuiStateT>
Hinweise
Ein Game-Script, das auch Funktionen für die GUI-Seite exportiert, mit getrenntem Engine-Zustand StateT und GUI-Zustand GuiStateT.
Funktionen
update(userParams : table, state : GameScriptState<StateT>, dt : number) : any base/tealdef/scripts/gamescript.d.tl:62
Hinweise
Wird vom Game-Script-System regelmäßig aufgerufen. Das Ergebnis geht an postUpdate.
Rückgabe any
postUpdate(userParams : table, state : GameScriptState<StateT>, dt : number, updateResult : any) base/tealdef/scripts/gamescript.d.tl:63
Hinweise
Wird nach update mit dessen Ergebnis aufgerufen.
handleEvent(userParams : table, state : GameScriptState<StateT>, src : string, id : string, name : string, param : any) : any base/tealdef/scripts/gamescript.d.tl:64
Hinweise
Empfängt die Events, die das Skript abonniert hat (siehe GameScript.handleEvent).
Rückgabe any
guiUpdate(userParams : table, state : GameScriptStateReadOnly<StateT>, guiState : GameScriptState<GuiStateT>) base/tealdef/scripts/gamescript.d.tl:66
Hinweise
Update auf der GUI-Seite. Liest den Engine-Zustand schreibgeschützt und darf den eigenen GUI-Zustand schreiben.
guiHandleEvent(userParams : table, state : GameScriptStateReadOnly<StateT>, guiState : GameScriptState<GuiStateT>, src : string, id : string, name : string, param : any) : any base/tealdef/scripts/gamescript.d.tl:67
Hinweise
Event-Handler auf der GUI-Seite. Liest den Engine-Zustand schreibgeschützt und darf den eigenen GUI-Zustand schreiben.
Rückgabe any