Info zu API api.type.ConstructionDesc.new() und preProcessScript ( Bug / Fehlende Beschreibung )

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • 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:



    Ihr müsst modules.capturedParams = nil setzen, Beispiel:


    Code
    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 :D

    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)