Beiträge von eis_os

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


    Vielleicht mal mit weniger Bodentexturen versuchen?


    Dann haben wir noch:


    ERROR: (ribase_rheingold_catenary_placer_sbb_1) requires mod (f1rnen_sbb_oberleitung_2) steamId ?


    Ggf. mal ribase_rheingold_catenary_placer_sbb_1 abschalten...

    Diese stdout besteht nur aus dem Starten des Spiels ohne Laden eine Savegames. (Ggf. das Spiel nochmals gestartet und daher die stdout.txt überschrieben) CrashDebug war hier auch nicht aktiv...


    -edit-

    CommonAPI2 muss nur in einem Verzeichnis liegen

    You should use the knowledge and CommonAPI2 as development tool and then write you mod with the official apis...


    Example created with inspect of commonapi2.uicommon.interface

    interface = require("commonapi2.uicommon.interface")

    interface.inspect( element, "filename.txt", true)


    Doch ist es, der Fehler hat immer einen Grund. Dafür gibt es die Fehlermeldung ja...


    Die Version ist auch ziemlich alt. 2024?

    Daher alle Mod Verzeichnisse durchsuchen. Benutzer / Spiel usw. und erst mal alles entfernen. Dann von hier nur die neuste Version installieren...

    CommonAPI2 inspector window has a tab for selecting UI Elements and getting access.

    Note: Special Window elements are not accessible by lua API.


    In the UG console you can use:


    interface = require("commonapi2.uicommon.interface")

    interface.inspect(interface._getRoot(), "filename.txt", true)


    To get a dump filename.txt of the all elements.

    Note: CommonAPI2 provides access to internals of UI Elements you can't reach. So you will get more info then UG offers and beware the file produced is huge...


    interface.inspect( uielement, filename, diffable)

    Hinweis beim Testen:

    TPF2 Speichert die Straßenparameter in einem Savegame mit ab.

    Dies bedeutet, wenn du eine Straße X sagen wir mit Breite 10m definierst und ein Spielstand speicherst, wird beim laden Straße X mit 10m definiert.


    Änderst du die Straße X und lädst diese via Mod, wird die neu Breite aus dem Mod verwendet => ggf. ein Abriss nicht möglich

    Lädst du nach dem Ändern nun eine Spielstand ohne Straße X bzw. ohne die Modifikation => TPF2 nutzt die gespeicherten Daten => ein Abriss wird möglich sein.


    Dies hat im allgemeinen den Vorteil, solltest du ein Mod entfernen, kannst du weiterspielen und die ID Zuordnung bleibt erhalten und du kannst alles abreißen.



    Auch wenn es Mod Autoren ungern hören: Man darf niemals eine Straßenbreite bzw Gehwegbreite ändern. Nie

    = Mod ist in der Öffentlichkeit => keine Änderungen mehr möglich.


    Ein Abriss Werkzeug das alle verbundenen Konstruktionen und Straßen entfernt, sollte es trotzdem ermöglichen.

    Gab es nicht mal ein Planierraupen Mod?




    Randnotiz: Das wäre wieder mal so eine Sache, die ich TPF2 austreiben würde, wenn ich die Chance hätte:

    • Bessere Fehlermeldung bei Start eines Spielstands wenn sich die Straßenbreite ändert
    • Den Code reparieren, das es da keine Fehler gibt und man die Straße trotzdem umbauen kann

    Bei der Spitzkehre ab Version 2.34:

    - Changed: Gleisauswahl ohne dass CommonAPI aktiviert/installiert ist.


    Das wurde also aktiv aus der Mod entfernt...


    Die Idee der CommonAPI war halt meinen aktiven Standard mit Support über alle Mods hinweg... da wird halt nix draus.

    Und die CommonAPI1 lief das sogar ohne DLL und es gab auch mal Mac Support dafür.


    Bei anderen Spielen gibt es das halt als gemeinsame Mod, hier wird es aktiv sabotiert und von UG gibt es auch nix brauchbares... also ist Handarbeit angesagt. Und da kann sich auch kein anderer Modder herausreden von wegen zeitgleiche Entwicklung. Am Ende haben die Spieler eine Fragmentierung, die absolut unnötig ist...


    -edit-

    enzojz Mods als Module müssten api.res und daher das über startYear, endYear mitbekommen. isVisible wird wohl aber nicht genutzt?

    Viele Funktionalität in CommonAPI2 wurde halt über die Zeit abgeschaltet, oder funktionieren nicht mehr weil UG was geändert hat oder sich Nutzer beschwert haben, das CommonAPI2 zu lange beim laden braucht.

    (Alle Konstruktionen checken, ob sie ein Update brauchen war halt bei >1000 Mods nicht mehr umsetzbar )


    Vielleicht macht UG ja was brauchbares für TPF3, ich zweifele aber irgendwie daran...

    Technisch sollte das gehen mit allen Mods, die die CommonAPI1/2 Schnittstelle nutzen.


    eis_os_com_traindepot2_1 ist mein Testmod um zu schauen, ob die Schnittstelle noch brauchbar ist.

    Sollte es nicht gehen, schreib mir bitte den Mod (inkl. Version und ggf. Link)


    Da ja einige Forumnutzer hier herumgestänkert haben, hab ich die Schnittstelle nicht weiter verfolgt und für CommonAPI2 als deprecated/Nicht mehr Nutzbar deklariert.


    (O-Ton: Das geht doch mit UG Schnittstellen viel besser :rolleyes: )


    Ein Positiv Filter war im Gespräch, wurde aber verworfen, da Nutzer sonst Modprobleme melden könnten, die gar keine sind...

    Mittlerweile könnte ich das wohl sogar zur Laufzeit editieren wenn CommonAPI2 geladen ist.

    In CommonAPI1 für Transport Fever 1 gab es das noch und die Einstellung, da war settingstracks


    In CommonAPI2 ging das wegen den verschiedenen states nicht und habe es damals nicht portiert.



    Anleitung zum Testen:


    res\scripts\commonapi2\uiparameter.lua

    TrackSelector.filters = { filter.visibleInUI, filter._settingsTracks }

    um diese Zeile ergänzen (also hinzufügen):

    TrackSelector._filters = { filter.visibleInUI, filter._settingsTracks }




    StreetSelector.filters = { filter.visibleInUI, filter._settingsStreet }

    um diese Zeile ergänzen (also hinzufügen):

    StreetSelector._filters = { filter.visibleInUI, filter._settingsStreet }




    In der Datei

    res\scripts\commonapi2\filter.lua

    Die Zeile:

    local userfilterString = commonapi.settings.get("eis_os_commonapi_1", "filter"..typ) or ""

    mit dieser hier ersetzen:

    local userfilterString = commonapi._info.settings["filter"..typ] or ""



    Code: mod.lua
        buildoverwrite = {
                type = "string",
                default = "",
                name = _("setting_buildoverwrite"),
                description = _("setting_buildoverwrite_desc"),
                order = 330,
            },

    um diese Zeilen ergänzen:


    Der Code ist geblieben, da Mods darauf zugreifen können, und ich diese nicht kaputt machen wollte.


    Dann kann man in den CommonAPI2 Einstellungen nach Dateinamen filtern (Speichern nicht vergessen):

    Beispiel:

    eis_os_ würde alle Gleis Dateinamen mit dem Dateinamen "eis_os_" filtern. Also effektiv 1000mm und 750mm abschalten... ; kann man als Trennzeichen nutzen, es wird lua find auf dem Dateinamen angewendet, daher können auch reguläre Ausdrücke genutzt werden.



    PS: Und ja, da hat die CommonAPI2 Einstellungen aus CommonAPI versucht zu laden, da kommt aber nix mehr. Da commonapi.settings so nicht mehr unterstützt wird...

    Mit CommonAPI2 kannst du Ampel von UG via NodeEditor verstecken (sie bleiben vorhanden, werden aber nicht angezeigt) oder jeden im Spiel geladenen Ampeltyp pro Kreuzung einstellen.

    Die eigentlichen Ampelphasen kannst du leider nicht neu programmieren, ggf. mit NodeEditor störende Lanes abschalten.


    Mit CommonAPI2 kannst du auch Ampeln selber bauen und diese an eine vorhandene Ampelanlage des Spiels anschließen:


    Im Straßenpaket ist seit 1.71 (20250309) eine Ampelkonstruktion vorhanden, die mit den Animationseinstellungsfenster an ein UG Ampel angeschlossen werden können,

    das ist aber weder UI technisch recht einfach noch Nutzerfreundlich.

    Wirklich auch das was ich Beitrag 8 geschrieben habe gemacht?



    Was kommt als Ergebnis denn?

    modmm = commonapi._modmm


    print(modmm.runprocess("curl --version"))


    Code
    modmm = commonapi._modmm
    
    print(modmm.runprocess("curl --version"))
    commonapi._modmm:    Trying to run curl --version
    
    true    curl 8.17.0 (x86_64-w64-mingw32) libcurl/8.17.0 LibreSSL/4.2.1 zlib/1.3.1.zlib-ng brotli/1.2.0 zstd/1.5.7 WinIDN libpsl/0.21.5 libssh2/1.11.1 nghttp2/1.68.0 ngtcp2/1.19.0 nghttp3/1.14.0
    Release-Date: 2025-11-05
    Protocols: dict file ftp ftps gopher gophers http https imap imaps ipfs ipns ldap ldaps mqtt pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp ws wss
    Features: alt-svc AsynchDNS brotli CAcert HSTS HTTP2 HTTP3 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM PSL SPNEGO SSL SSPI threadsafe UnixSockets zstd

    Wie man sieht, hab ich das gerade nochmals mit einer version 8.17.0 ausprobiert...