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


  • CommonAPI 1.6.20190717


    gibt es in der Filebase als "Stabile" Release.


    Hab noch ein Problem mit trackTypes und Filefilter gefunden. Für Schienen sollten nun Crashes bezüglich der nativen Funktionen behoben sein.


    Deswegen verweise ich mal auf die Webdisk:
    Common API

  • Ich kann noch nicht mal sagen, ob die reinen Lua CommonAPI Version unter MacOS funktioniert. Gibt es da zumindest Erfahrungen ob das Shellscript läuft? Ich hab schon mehrmals ne stdout.txt erbeten, aber leider kommt nüx.

    Zumindest die stdout.txt kann ich bieten. MacO 10.14.5

    Dateien

    • stdout.txt

      (48,9 kB, 199 Mal heruntergeladen, zuletzt: )
  • Bitte mit 1.6.20190717 testen, ein Savegame mit in der Modliste aktivierten CommonAPI laden und mir eine stdout.txt geben.


    "Can't load native code CommonAPILua" sollte dann nur noch 1 mal auftauchen.


    Code: settings.lua
    return {
    	filtertracks = "",
    	filterstreets = "",
    	verbosity = 99,
    	uiscale = 1,
    	disablenative = false,
    	liststyle = 0,
    	compressui = true,
    
    }

    verbosity steht dann auf 99 und der Preloader wird die Dateinamen der Gleise auswerfen...

  • Bitte mit 1.6.20190717 testen, ein Savegame mit in der Modliste aktivierten CommonAPI laden und mir eine stdout.txt geben.

    Erledigt.


    Mir ist nur nicht klar, ob ich in meiner settings.lua die obigen Settings per Hand setzen sollte, oder nicht.Ich habe sie mal spaßeshalber reingeworfen, TPF hat sie aber ausgekegelt.

    Dateien

    • stdout.txt

      (27,43 kB, 214 Mal heruntergeladen, zuletzt: )
  • Hmm, das ist eine settings.lua für den Mod, diese kommt in den Ordner "eis_os_commonapi_1".


    Ich verstehe nicht warum da keine weiteren Information kommen, aber der Ordner "eis_os_commonapi_1 2" kann nicht richtig sein.
    Eine richtige Funktion ist nur gegeben wenn der Mod Ordner auch "eis_os_commonapi_1" heißt., technisch sollte dann so etwas in der stdout.txt auftauchen wie in deiner alten stdout.txt:


    commonapi.utils: Trying to run sh "/Users/janosch/Library/Application Support/Steam/steamapps/workshop/content/446800/1156778662/res/scripts/commonapi/listdirs.sh" "/tmp/lua_J87FHn"
    commonapi.utils: elapsed time for scanDirs: 0.00 (files 0)



    Das Shell Script scheint also nicht zu laufen auf MacOS, das ist aber dumm.
    Jetzt ist die Frage, liegt es TPF Lua das der Parameter nicht ankommt, die tmp Datei nicht funktioniert oder das Shellscript auf MacOS überhaupt nicht funktioniert.

  • Ich verstehe nicht warum da keine weiteren Information kommen, aber der Ordner "eis_os_commonapi_1 2" kann nicht richtig sein.

    Stimmt. Mein Fehler. Jetzt hab ich das korrigiert.


    Und nicht nur das, das shell script scheint auch zu laufen. Ich habe es mir geschnappt und das steht drin:



    Code
    res/config/street/
    res/config/track/
    res/config/bridge/
    res/config/tunnel/
    res/config/railroad_crossing/
    mods/eis_os_commonapi_1/res/config/street/
    mods/eis_os_commonapi_1/res/config/track/
    mods/eis_os_commonapi_1/res/config/bridge/
    mods/eis_os_commonapi_1/res/config/tunnel/
    mods/eis_os_commonapi_1/res/config/railroad_crossing/

    Mir ist nur noch nicht klar, wo ich jetzt die settings setzen soll.

    Dateien

    • stdout.txt

      (28,12 kB, 211 Mal heruntergeladen, zuletzt: )
  • Mir ist nur noch nicht klar, wo ich jetzt die settings setzen soll.

    Nevermind. Ich habe einfach mal die commonapi._info mit gedumpt. Eine bessere stdout.txt kann ich somit nicht liefern.

    Dateien

    • stdout.txt

      (27,27 kB, 191 Mal heruntergeladen, zuletzt: )

    Einmal editiert, zuletzt von momocat ()

  • Die settings.lua Datei kommt in das Verzeichnis eis_os_commonapi_1/ (es hat nicht mit der settings.lua des Spiel zu tun, TPFMM kann diese aber auch erzeugen)



    Grundlegende Funktion des Preloaders ist, die Gleise und Strassen vor den Konstruktionen zu erfahren:


    Da LUA keine eigenen Verzeichnisoperationen anbietet, benutzt CommonAPI (wenn die native DLL/so) nicht geladen werden kann ein einfaches Shellscript


    • CommonAPI utils schreibt eine temp Datei in /tmp/lua_blabla mit Verzeichnissen die gescannt werden müssen (funktioniert, das ist aber bei jedem Betriebssystem gleich)
    • CommonAPI utils ruft eis_os_commonapi_1/res/scripts/commonapi/listdirs.sh auf. Gibt als ersten Parameter /tmp/lua_blabla dabei.
    • listdirs.sh geht alle Einträge in /tmp/lua_blabla durch, startet find und readlink in einer subshell und gibt das Ergebnis nach stdout.
    • listdirs.sh löscht die temp Datei /tmp/lua_blabla
    • stdout wird durch die CommonAPI gelesen
    • CommonAPI lädt die Dateien aus der Liste, die wir vom Shellscript.


    Also die Temp Datei mit den Verzeichnissen wird durch das Shellscript gelesen und gibt eine Verzeichnisliste aus.
    Zum Testen:


    /mods/eis_os_commonapi_1/res/scripts/commonapi/listdirs.sh editieren und rm $TMPFILE entfernen.



    Danach ein Terminal starten.



    cd "/Users/janosch/Library/Application Support/Steam/steamapps/common/Transport Fever/"



    dann (/tmp/lua_1GzXg2 durch eine erstellte temp Dateinamen mit Verzeichnissen ändern):



    ./mods/eis_os_commonapi_1/res/scripts/commonapi/listdirs.sh /tmp/lua_1GzXg2


    ausführen.

  • Ich glaube ich habe herausgefunden, warum das shell script auf dem Mac nicht funktioniert: readlink funktioniert auf dem Mac anders. Die Option -f gibt es nicht.


    https://stackoverflow.com/ques…-gnus-readlink-f-on-a-mac


    Dann habe ich readlink durch greadlink ersetzt und erhalte das:


    Trotzdem passiert nichts weiter, weil in utils.lua - scanDirsShell nichts weiter ankommt. result bleibt leer:


    Lua
    _log("Trying to run "..pcmd)
    	p = assert(io.popen(pcmd))
    	for line in p:lines() do
    		_log("line: "..line)
    		result[#result+1] = string.gsub(line, '\\', '/')
    	end
    	p:close()
    	commonapi.dmp(result) --added by momocat
        return result
    Code: stdout.txt dazu
    commonapi.utils:	Trying to run sh "./mods/eis_os_commonapi_1/res/scripts/commonapi/listdirs.sh" "/tmp/lua_GTCmjW"
    {}
    commonapi.utils:	elapsed time for scanDirs: 0.00  (files 0)


    Erfolg!


    Ich habe das Shellscript temporär modifiziert:


    Bash
    #!/bin/sh
    TMPFILE=$1
    mygreadlink=/local/homebrew/bin/greadlink
    if [ -f "$TMPFILE" ]; then
    	while IFS= read -r line; do
    	    echo $line >> /tmp/tpf
    		find "$line" -type f -exec $mygreadlink -f {} \; 2>/dev/null
    	done < $TMPFILE
    rm $TMPFILE
    fi

    Damit findet der preloader nun auch all sein Kram. Siehe stdout.txt


    Nun müsste man wohl eine shell function nutzen, um gnu-readlink (wie ich es via homebrew auf meinem Mac installiert habe) zu ersetzen. Vielleicht ist das ein Kandidat: https://stackoverflow.com/a/1116890 . Ich kann das jetzt in Kürze nicht leisten, bin erstmal länger afk.


    Nochmal ich. Habe eine neue listdirs.sh gebaut, die auch auf den Mac funktioniert. Unter Linux habe ich die nicht getestet @eis_os


    Das Ergebnis in Form von stdout.txt ist auch angehangen. Diesmal ohne spezielle settings.lua für den Mod. Wohl bekommt's.

    Dateien

    • stdout.txt

      (40,35 kB, 216 Mal heruntergeladen, zuletzt: )
    • listdirs.txt

      (667 Byte, 169 Mal heruntergeladen, zuletzt: )
    • stdout.txt

      (31,2 kB, 190 Mal heruntergeladen, zuletzt: )
  • Hallo,
    leider hat es etwas länger gedauert.



    So nach X mal umschreiben und testen. Back to the roots.


    Anbei ein neues Shellscript komplett ohne readlink. Getestet habe ich es während der Entwicklung auf bash/dash/zsh. Ich bin also ziemlich zuversichtlich keine Bashism eingebaut zu haben.
    Es nutzt nun pwd -P vor find um relative Pfade schon sehr früh zu verwandeln. Da man dann mit find gar keine Subshell mehr braucht sollte es auch viel flotter unterwegs sein.
    Das ist zwar technisch nicht ganz, was das Script vorher gemacht hat, es hat auch vorher Datei Symlinks expandiert, sollte im Ergebnis aber gut genug sein.



    Eine Anmerkung zur deinem Shellscript:


    find "$line" -type f -exec echo `customReadLink {}` \; 2>/dev/null


    Der Teil `customReadLink {}` expandiert die Shell vor dem find Befehl. Das wird dann so etwas wie /bla/bla/Transport Fever/game/{}


    Technisch gesehen hat man für nicht Steam Workshop ein valides Ergebnis:
    find "$line" -type f -exec echo "/bla/bla/Transport Fever/game/{}" \; 2>/dev/null


    Aber nicht bei Pfade außerhalb vom Spiel (wie bei Steam Mods). Das ist ein sehr subtiler Bug.

  • Na cool. Ich bin jetzt über 2 Wochen AFK. Ich wollte nicht so viel Staub hier aufwirbeln. *Hust*. Ich nutze halt nur Windows und MacOS mehr oder weniger parallel. Ich melde mich, sobald ich wieder an Gerät bin.


    Danke fürs Aushalten meines Aktionismus!

  • Strassentypen in einer Konstruktion oder via CommonAPI Menu -> Strassentypen?


    Wenn es eine Konstruktion ist, kannst Du es vielleicht näher eingrenzen? (Bahnhof, Strassenhalt, Depot, Deko usw.)


    Ich sehe da noch:
    "Track design patterns planner not found."


    Auf Anhieb fällt mir da gerade nichts ein, bei mehr als 1000 möglichen Strassen/Gleisen/Brückentypen wird es etwas schwierig einzugrenzen.
    Bei Konstruktionen sollten normalerweise nun Fehlermeldungen in der stdout.txt stehen, wenn die Strassenliste aus irgendeinen Grund leer ist.

  • via CommonAPI Menu -> Strassentypen. ich hatte auch das commonapi Crash Debug aktiviert - ist das in der stdout.txt enthalten oder eine extra Datei ? Wenn extra Datei, wo finde ich die ?


    "Track design patterns planner not found" - warum das drinnen steht, keine Ahnung, den Mod habe ich überhaupt nicht installiert. Habe nur "Track Design Patterns" installiert, vielleicht nur ein Hinweis ?
    Die Mods von dem Kollegen Enzojz sind...nun ja, eigentlich von der Idee immer gut, aber leider meistens etwas buggy. Hoffe das wird jetzt nicht gleich wieder als Majestätsbeleidigung gesehen.

    Einmal editiert, zuletzt von Macongo ()

  • An dieser Stelle werden keine Daten geladen sondern Daten aus dem Programmspeicher "extrahiert". Ich werde mir den Code bei Gelegenheit noch mal anschauen und noch ein paar nullptr Checks einbauen...


    CrashDebug zeichnet in einem Ringbuffer die letzten Dateiöffnungen von TPF auf. Diese werden bei einem Crash in der stdout.txt geschrieben kurz bevor TPF den Exception Hinweis schreibt.

  • Wenn es kein Exception sondern einen richtigen Crash gibt, ist es leider auch Essig mit der Dateiliste.


    Ich hab mir mal den Code nochmalig angeschaut und etwas umgebaut.
    Nun bin ich recht zuversichtlich, das es kein Crash mehr wegen fehlender Straßen geben sollte:


    1.8.20190823-dev
    - fix: don't crash with nullptr entries in street repository access and backup functions

BlueBrixx