Hallo
Wer mit api.type.ConstructionDesc.new() eine dynamische Konstruktion in der postRunFn erstellen möchte, wird vielleicht feststellen,
das die Funktion für preProcessScript als erstes Funktionsparameter auch capturedParams enthält.
Dies halte ich für einen Fehler / Bug seitens Urban Games. Das müsste als zusätzliche Funktionsparameter übergeben werden.
Das setzen von preProcessScript ist zwingend erforderlich, sonst kann man eine ConstructionDesc nicht hinzufügen.
Im Gegensatz ist preProcessFn in einer con nicht zwingend erforderlich und wird auch nicht benötigt wenn man eine vorhandene con Datei in der postRunFn via api ändert.
Konvertiert man seine normale funktionierende con also in eine dynamisch komplett erzeugte erhält man einen Crash bzw. internal error am cursor:
Exception type: Configuration error
This error is usually caused by modding. Some game resources contain semantically incorrect data.
Details:
Error message: key not found: name
Minidump:
In file: urban_games/train_fever/src/Lib/lua/Value.cpp:20
In function: const class std::variant<struct lua::Nil,bool,double,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct lua::Table> &__cdecl lua::Table::Get(const class std::variant<struct lua::Nil,bool,double,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct lua::Table> &) const
Alles anzeigen
Ihr müsst modules.capturedParams = nil setzen, Beispiel:
preProcessFnScript = function(modules, change)
if change.added then
modules[change.slotId] = change.module
else
modules[change.slotId] = nil
end
modules.capturedParams = nil
return modules
end
Ich habe keine dementsprechende Information in der Dokumentation von TPF2 gefunden.
https://wiki.transportfever2.c…uction_postRunFn.lua.html
Wenn Ihr sie findet, hab ich vielleicht Tomaten auf den Augen oder UG hat die Doku geändert
Einfach eine leere Tabelle oder nil bei preProcessScript zurückgeben, wird nicht funktionieren, da man dann keine Module mehr bauen kann.
Da der Fehler eher nichtssagend ist und ich daher mein ganzes Script debuggen musste,
vielleicht stolpert ja in Zukunft jemand über diesen Beitrag und diese Info ist bei der Entwicklung eines Mods hilfreich.
PS: Nein, das hab ich nicht an UG gemeldet.
Früherer versuche UG zur Dokumentation zu bewegen sind immer gescheitert, ggf. erhält man diese Info wenn man sie kontaktiert... (das ist aber nicht hilfreich für alle anderen Modder)