Posts by eis_os

Willkommen in der Transport Fever Community

Welcome to the fan community of Transport Fever and Train Fever, the economic simulators of Urban Games. The community is free for you to share and inform yourself about the game. We cultivate a friendly and objective interaction with each other and our team will be happy to answer any questions you may have.

 

Registration and use is of course free for you.

 

We wish you a lot of fun and hope for active participation.

The Team of the Transport-Fever Community

    Alle Fahrzeuge die LINE_NAME nutzen und keinen Filter numeric oder custom. (ersteres wird in UG Fahrzeugen zur Anzeige der Liniennummer genutzt)

    Die stdout.txt zeigt dazu auch einen Hinweis pro geänderten Fahrzeug.


    Noch ist alles nicht fest definiert, deswegen habe ich ja auch dazu Fragen gestellt und möchte schon relative frühzeitig Informationen von euch.

    Vielleicht wird es nur einen Modifer für UG Fahrzeuge geben, vielleicht einen Flag das der Modifer nix ändern muss im Fahrzeug und es für alle Fahrzeuge macht.

    D.h. man definieren das eine Änderung auf LINE_NAME nicht gewollt ist.


    Wie gesagt, mir geht es jetzt erst mal um Feedback und Testen. Auch ob es überhaupt mit 1000 Fahrzeugen funktioniert, ob Ringlinen, X Endstationen funktionieren.

    Mod Fahrzeuge sollen den Support Langfristig selber einbauen, der Patcher ist daher als Zwischenlösung anzusehen. Das kommt aber auf das Feedback an.


    Vielleicht baue ich auch den Patcher aus, und lass es in die metadaten schauen ob der Mod einen Flag setzt und keine Konvertierung möchte.

    Das irgendwie direkt in CommonAPI2 einzubauen, war nicht der Plan, anderseits ich werde wohl nie alle Autoren erreichen um den Support nach zurüsten, das wäre dann eine einfache Lösung damit alle Fahrzeuge nutzbar sind.

    CommonAPI -> Einstellungen -> Mehr ... enablelinedestination muss aktiviert sein. Das ist für den Spieler die Funktion ob der Patch aktiviert werden soll.


    Auf was klickst Du?


    Im Spiel, vorausgesetzt das Fahrzeug hat type ="LINE_DESTINATION" als label, dann kann man im Spiel in Mods -> Line Destination gehen, dann erhält man eine Liste mit allen Linien.


    Dort kann man eine Linie auswählen und die Endstationen auswählen. (Wer mag, kann auch den Anzeige Text ändern, dafür gibt es die Textbox) Änderungen sollten direkt sichtbar sein...

    Hallo


    Hier ist eine frühe Testversion der Zugzielanzeiger


    1.3.20200503-dev

    - Rebuild internal lua system via LUARef objects, should stop CommonAPI2 accessing lua states from different threads

    - SyncObject, set self.data = data after syncing

    - onchange event for UI TextInput

    - New LINE_DESTINATION Code

    - Add new setting enablelinedestination (restart of game required, default true)

    - New lua commonapi game thread

    - Add commonapi.supports(string) function/module

    - !!! This is a development version, heavy usage of DEBUG messages if loglevel is debug. Windows only release !!!


    Es hat sich viel geändert in CommonAPI2, daher gibt es eine Tonne an Debug Ausgabe. Getestet mit GOG und Steam. Es crasht mein Savegame nicht mehr und scheint nun das zu machen, was es soll.


    Zum einfachen Anschauen gibt es auch ein kleiner Mod, der per Modifier alle Fahrzeuge ändert.


    Zum Testen ob die Funktion aktiviert wurde:


    if (commonapi ~= nil and commonapi.supports and commonapi.supports("LINE_DESTINATION")) then

    Für den type eines Labels funktioniert dann LINE_DESTINATION


    Das Spiel muss komplett neu gestartet werden, wenn die CommonAPI2 Einstellung enablelinedestination umgeschaltet wird! (Der Menüpunkt bleibt zurzeit aber immer aktiv)


    Bilder gibt es hier:

    Zielanzeigen, Endhaltestellen (Beta Version)



    Wenn der Code keine Idee hat was es anzeigen soll, kann es zu "#" kommen. (Dann hat der Code keine Daten zur der Linie)

    Wenn es Daten für eine Linie gibt, aber keine Endstation berechnet werden kann, kommt "No Endstation found"

    Technisch sollte es möglich sein, Änderungen an der Linie vorzunehmen, ohne das es Probleme gibt. Ggf. wird "No Endstation found " angezeigt.

    TPF2, you can use an editor that shows changes in stdout.txt.


    With CommonAPI2, you can use CommonAPI -> Console.


    Shows the last 200 Lines of stdout,txt and let you interact with pretty much all lua_states in TPF2

    (You need to enable it in your savegame aswell)

    Das wäre 2, die Modifier Lösung.


    Ich habe den Metadaten Loader für ENUM type erweitert.

    An dieser Stelle komme ich wenn überhaupt nur mit erheblichen Aufwand an andere Daten.

    Also wenn die LUA Daten in TPF2 eingelesen werden, muss type den gewünschten Type haben.


    Da etwas zu ändern, ist technisch auch sehr fragil. Bedenkt bitte, so etwas TPF2 beizubringen bedeutet, den Programmfluss zu ändern und alle Eingangsdaten und Ausgangsdaten einer Funktion richtig zu deuten. Bei dem Einlesen der ENUM Typen, ist das einfach: std::string geht rein, char/int des type kommt raus.

    Um das einfacher zu machen, würde dann im Kopf der mdl so etwas stehen: (das ist ein ungetestet Beispiel)


    local function ifLineDest = function(j, n)

    return n

    end


    if (commonapi ~= nil and commonapi.supports ~= nil and commonapi.supports("LINE_DESTINATION")) then

    ifLineDest = function(j, n)

    return j

    end

    end


    Dann kann man im Return eine Funktion aufrufen, die entweder oder zurück gibt:


    return {

    description {

    description = ifLineDest( _("Ja, es ist aktiviert"), _("Nein, LINE_DESTINATION nicht aktiviert") )(),

    }

    }





    Man kann natürlich auch anders machen, und es per Variablen machen:



    Wie vielleicht die Discord Nutzer in einem kleinen Testvideo gesehen habe, ist eine für Windows lauffähige Version entstanden.


    Nächste Frage:


    Wie möchtet Ihr schauen ob TPF2 + CommonAPI2 mit Patch geladen ist in einer mdl?

    1. Per if Befehl im Modell:
      1. Ich setze die Globale Variable LINE_DESTINATION auf true
        if (LINE_DESTINATION == true) then
        Problem, schreibt jemand (LINE_DESTINATION = true), haben alle weiteren Mods ein Problem wenn die CommonAPI2 mit Patch nicht geladen wurde...
      2. Ich baue so etwas wie commonapi.supports("LINE_DESTINATION") :
        if (commonapi.supports ~= nil and commonapi.supports("LINE_DESTINATION")) then
    2. Per externen Modifier

      1. Alle mdl Dateien werden nach labels.[%platzhalter].alttype durchsucht und der Eintrag von type überschrieben (also technisch type = alttype
        Einfacher: ohne if else blöcke mdl.
        Nachteile:, sehr viel langsamer und man kann andere Parameter wie fitting oder params nicht ändern
    3. Andere Weg

    Ich werde wenn nur eins davon umsetzen.

    Wenn es eine Datei ist, die nachgeladen wird, kann CommonAPI2 -> Einstellungen -> CrashDebug helfen, nach dem Crash in die stdout.txt anschauen. Es sollten die letzten Dateien die TPF2 neu geöffnet hat angezeigt werden.

    creating globals by assignment is not allowed (variable was m1)


    Irgendwo in einer Datei steht m1 = und das im UG Script Context...

    Sorry, Marcolino26 ich verstehe deine Argumentation nicht, CommonAPI2 wird direkt aus der Forendatenbank gespeist, bzw. aus den mod.lua Dateien in den zip/rar/7zip Archiven. Das hat sogar den Vorteil, das Änderungen in den Text-Einträgen nicht zur Aktualisierungsmeldungen führen. (Für alle Mods, klicke einfach, alle Mods anzeigen. Für alles was Gelb ist, gibt es in der Webdisk ein Update, auf Upgrade klicken, curl lädt die Datei hier automatisch herunter und ersetzt das Mod schön säuberlich via 7zip. Alte Versionen bleiben in local/commonapi erhalten...


    -edit-

    Das ist auch schon in der jetzigen Version eingebaut...

    Die letzten Entwicklung in der CommonAPI2 beinhaltet auch die Möglichkeit ein zip/rar/7-zip Datei lokal zu installieren. (Und Überprüfungen ob es Updates gibt, ist auch mit 2 Klicks erledigt... )

    1. Wenn die Modautoren noch die Abhängigkeiten in die mod.lua aufnehmen, ist das sogar sicherer als Steam.
    2. Es werden keine Mods einfach überschrieben, (ein Backup wird beim Updaten gemacht)
    3. Wenn man einen Mod aktiviert, wird man informiert ob eine Abhängigkeit fehlt (inklusive Link) (Das kann Steam nicht in TPF2 leisten)
    4. Es wird die Reihenfolge überprüft (auch das kann Steam nicht leisten)

    Screenshot und weitere Informationen:

    CommonAPI2 Schnelleinstieg



    Ja, es benötigt noch Feinschliff, aber dafür braucht es eben auch Nutzer, Tester, Modautoren...

    Ich kann dazu sagen, das für ein Fahrzeug die Fahrzeit wegen äußere Einflüsse nicht gleich ist.

    Außerdem benutzt TPF2 einen Graphen, die Berechnung erfolgt auch in einem separaten Thread. Die Fahrzeit wird für die Linienberechnung herangezogen und pro Fahrzeug gespeichert. Passagiere suchen sich aus den Graphen dann das passende Angebot. Im Gegensatz zum Beispiel in TTD (urform) das nen A* Algorithmus genutzt hat, und ab 32? Felder nur die Richtung grob nutzte...