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

    Wenn andere Mods wissen wollen, welche Gleise Du aktiviert hast -> CommonAPI2.

    Mit der CommonAPI2 TPF2 kann man auch Modlisten mit eigenen Namen speichern.


    In der noch nicht fertigen Version (daher als Attachment und nicht im Download Bereich) kann man nun auch hier die Foren Datenbank nach Updates für Mods durchsuchen lassen.

    Sofern Du 7-zip installiert hast, auch Mods mit einem Klick updaten. CommonAPI2 entpackt die neue Version und schiebt die alte Version zur Seite.

    Du kannst mit CommonAPI2 Mods auf transportfever.net auf Updates prüfen und diese ggf. Ingame updaten / downgraden. (Hierfür muss 7zip installiert sein) Jeden Mittag werden die Downloads hier nach neuen Dateien durchsucht. Mit CommonAPI2 kann man auch Archive installieren. (Alte installierte Versionen werden nach local\commonapi\modstorage verschoben)


    Das ist von meiner Seite her gesehen noch in der Erprobungsphase:

    https://www.transportfever.net…api2-modlistwithtabs-jpg/


    Downloadlink:

    CommonAPI2


    Bezüglich Steam Mods, da bin ich mir noch sicher wo die Reise hingeht. Erstmal transportfever.net.

    Die Einstellungen können in der mod.lua, in der Definition einer Einstellung via order = <int>, in die richtige Reihenfolge gebracht werden.

    LUA hat explizit keine feste Sortierung für key, value Tabellen. (es wird sogar technisch wie in Go etwaige Sortierung verhindert), order wird auch von TPFMM unterstützt.


    Code
    1. settings = {
    2. option_ = {
    3. order = 10,
    4. ...
    5. },
    6. option_b = {
    7. order = 11,
    8. ...
    9. },
    10. ...


    Modlisten:

    Ja, ich hab gestern gemerkt das neue Spiele keine Modliste erhalten, ich hab noch keine Ahnung warum, UG bzw. der Compiler hat da wohl was herum geschraubt. 100% sicher bin ich mir noch nicht. (Bei gespeicherten Spielstand funktioniert es wieder)

    Ich würde empfehlen UGs System zu folgen und einfach das gelbe Fragezeichen nutzen, dann sieht man auch direkt, da ist was kaputt. (Sonst könnte die Suche nach verbliebenen Konstruktionen in einem Savegame recht mühselig werden)...


    -edit-

    Am Ende:

    Code
    1. if #result.models == 0 then
    2. table.insert(result.models, {
    3. id = "asset/icon/marker_exclamation.mdl",
    4. transf = transf.transl(vec3.new(10.0, 0.0, .0)),
    5. })
    6. end

    Mehrere Stationsmods kann man nicht laden und ist hier auch am Thema vorbei.


    Die letzte Version ist mit GOG Windows und Steam Version getestet. Irgendeine Software verbiegt OpenGL. Welche das ist, kann ich bis heute nicht sagen, da bis jetzt kein Nutzer da hilfreiche Infos geben konnte.

    Hallo,

    es wieder mal Zeit für eine Development Version:


    1.1.20200325-dev

    - console, new tab complete code, should fix numeric key problems

    - add luasocket (note: needs activation by settings)

    - add local mod install

    - fix UI FileDialog folder level can't be changed when path ends with slash


    1.1.20200313-dev

    - remove railroadCrossings code hotpatch (fixed by UG)

    - update windows build to use SDL 2.0.8


    Das größte Highlight der Release ist ein minimal Version von LuaSocket. (socket.core), diese muss via Einstellungen eingeschaltet werden (speichern und neu starten nicht vergessen)

    Damit ist es nun als erstes möglich, LUA Dateien zu debuggen. Breakpoints, Watches, :)



    Ihr benötigt hierfür https://github.com/pkulchenko/…b/master/src/mobdebug.lua , dies muss in eis_os_commonapi_2/res/scripts

    Als IDE funktioniert https://studio.zerobrane.com/ Technisch können auch andere Debug Lösungen funktionieren, ich bin gespannt was Ihr so anstellt :)


    Nach Installation (ich hab die Portable Version genutzt), wählt Ihr unter Project -> Project Directory -> Choose das Verzeichnis eures Mods: meinmod_1

    Unter Project -> Start Debug Server einschalten.


    In der updateFn einer Konstruktion:

    require("mobdebug").start() nutzen.


    Ja, manchmal funktioniert es nicht so tolle. Wenn man die Console nutzt um require("mobdebug").start() zu nutzen, kann man schon mal zwei dreimal versuchen bis es geht.

    Bedenkt, ich ermögliche den ganzen Kram von Außen ohne Infos von UG.


    English

    The highlight is adding a minimal LuaSocket (socket.core) to CommonAPI2.

    LuaSocket can be enabled via settings, please don't forget save and restart the game.


    With LuaSocket it's possible to use remote debuggers in TPF2, so it's technical possible to debug, add watches and breakpoints. :)



    Required and tested is: https://github.com/pkulchenko/…b/master/src/mobdebug.lua , please put this in eis_os_commonapi_2/res/scripts

    IDE https://studio.zerobrane.com/ Technical other debugging solution may work, please let me know if you have other solutions. Like with Visual Studio Code :)

    I did use a portable IDE Version, select your moddir via Project -> Project Directory -> Choose

    Under Projec, use Start Debug Server.


    Add require("mobdebug").start() in an updateFn in a construction.

    You can use one thread in the Console as well. however UGs Threads are a bit picky. Sometimes you need to run it several times so debugging starts or it does other crazy stuff.


    Note: I do this all from outside without having any source code, this is technical a challange and TPF2 reloading of threads may have very odd behavior. So starting the debugger at function bondary seems to be more reliable. (updateFn/upgradeFn)


    Hallo


    Das mit der Schreibweise werde ich nicht ändern, da lua auch unterscheidet.

    Mein neuer Tokenizer kann es schon besser, aber ist noch nicht stabil:

    Sprich bla[1].blub sollte funktionieren. Zurzeit wird aber nach ] via Tab der Punkt nicht erweitert.


    Mein Bahnhof Adapter lädt die settings.lua immer neu, dann funktioniert es. Inwiefern ich callbacks ermöglichen kann, bin mir nicht sicher. UG hat den Teil wie LUA in TPF2 funktioniert nicht beantwortet.

    stdout sagt "commonapi.init: Native code loading disabled by settings.lua"


    settings.lua ist wenn direkt im Verzeichnis 1947572332, nichts in res/ löschen!

    stdout.txt anhängen wenn das Entfernen von settings.lua im Verzeichnis eis_os_commonapi2_1 nicht hilft... (Tastenkombination zum Aus und Einblenden ist Alt-Gr + C, aber normalerweise wird das Menü bei jedem Start des Spiels wieder angezeigt)

    Ich hab mal den Screenshot an tomdotio gesendet und meinen Wunsch Ausdruck verleiht, die maximale Steigung und minimale Radien per track config zu definieren und ich das nicht wieder für CommonAPI2 programmieren will :)

    The CommonAPI2 Menu should be displayed always, otherwise native functionality is disabled via settings.lua or not installed at all..

    Modifiers are executed when TPF2 loads a resource, they run when starting the game, there aren't any towns there.

    1. TPF(1/2) reads a lua file or construction
    2. runs all modifiers for this type
    3. Reads the "modified" into it's C++ structures. (no lua code run after that, except update function is stored)
    4. TPF2 destroys the loading lua state (thread)


    Even in TPF1 you couldn't access the town or map when loading say a track.

    The only sane place for game.interface related code is in a game script, there you can observe what a construction does, any maybe interact with it via upgradeConstruction.

    Enzojz does this.


    CommonAPI2 can't call into the lua states, as this very tricky. At least from the rendering thread.


    To be exact, CommonAPI2 native internals provides some primitives to get data from one thread/lua state to the other (commonapi.repos data), but that is complete different story all together...

    Und es gibt eine Testversion nun mit Mod Management.


    1.1.20200309-dev

    - tweak ui perfomance, don't scan all elements for events, record events in table

    - replace flat rendering method with tree rendering for certain ui elements

    - Add repository download code for transportfever.net mods (requires installed curl, included in windows 10 >=1803, Linux: apt install curl)

    - Add mod upgrade code by using download (Requires 7z in C:\Program Files\7-Zip, see 7-zip.org for install, Linux: apt install p7zip-full)

    - Bundle lua library dkjson

    - Use marshal to convert json to .m file for faster load speed

    - Upgrade imgui bindings


    In der Linux Version sollte nun die Modlisten auch funktionieren, musste die so lib aber neu kompilieren. (War 10MB Groß) und ist nicht weiter getestet.


    Ich übernehme keine Gewähr ob alles funktioniert. Dies ist Ausdrücklich eine Testversion, bitte Backups der Mod Ordner machen!

    Es gibt noch keinen Refresh der Modliste in der UI, nach einem Upgrade bitte auf ein anderes Savegame klicken, dann sollte TPF2 alles neuladen und die CommonAPI2 UI sollte die Änderungen dann auch mitbekommen.

    The current source is the transportfever.net download database.

    So technical here on transportfever.net is a php script creating a json file out of download links to entries with modid, version, download_url.

    The json file has a different format then TPFMM, as entries here could hold more then one modid. So there is no mapping of entries.


    My CommonAPI2 dev version provides a button to download this info:

    • Runs curl to get a newer file then on hdd
    • LUA DKJson parses the whole file
    • Transformation to modid -> download entries and stored, so searching for mod upgrades is faster
    • For every entry, all possible versions downloadable can be seen. (yellow color in list)

    If you click on upgrade on such an entry:

    • Run curl to download archive file to <userdir>/commonapi/downloads/
    • Extract modid folder from archive (uses 7zip so rar/tar/zip/7z works)
    • Move <userdir>/mods/<modid> to <userdir>/commonapi/modstorage/<modid>-saved-<timestamp> (technical should be atomic on Windows and Linux as it's the same filesystem)
    • Move <userdir>/commonapi/downloads/<temporary extract dir> to <userdir>/mods/<modid>

    Technical works only for manually installed mods into <userdir>/mods.


    As currently I can't refresh transportfever2.exe modlist it's not possible to release this now.

    Ja, ich entwickele noch weiter und hier kann man einen Ausblick auf die weiteren Mod Einstellungen sehen:


    Zum Download der Update Informationen wird curl benutzt, das bei Windows 10 auch mitgeliefert wird. (Wer Windows 7/8 nutzt muss sich es leider selbst herunterladen)

    - Build 28231:


    res\construction\station\water\harbor_modular.con

    • MakeSlots hat eine neuen Parameter zOffs (Ein Module kann ein zOffs
      : result.MakeSlots = function(bounds, range, slotType, zOffs)

    res\construction\station\water\cargo_dock_100_25.module

    res\construction\station\water\cargo_dock_50_12.module

    res\construction\station\water\passenger_dock_100_25.module

    res\construction\station\water\passenger_dock_50_12.module

    • Nutzung von z Offset -4.0 für pier Slots

    res\construction\station\water\cargo_dock_50_50.module

    • main_building_s1_network_cargo.mdl zu addons hinzugefügt

    res\construction\station\water\medium_pier.module

    res\construction\station\water\small_pier.module

    • Neu: metadata.skipWaterCollision = true
    • Nuzung von zOffs

    Shader Änderungen


    res\config\meta_metadata.lua

    • Neu:
    Code
    1. ["*.configs.*.wheelRadii"] = { name = "Wheels radius", type = "ARRAY" },
    2. ["*.configs.*.wheelRadii.*"] = { name = "Radius", type = "FLOAT" },
    3. ["*.configs.*.axleRadii"] = { name = "Axles radius", type = "ARRAY" },
    4. ["*.configs.*.axleRadii.*"] = { name = "Radius", type = "FLOAT" },

    Ja, das hab ich UG auch schon gesagt, wobei der Fix ja trivial ist und kein Hexenwerk und zu keiner Beeinträchtigung führt .



    Mir wurde wieder mal unterstellt ich würde ungerechtfertigter Weise auf UG herum hacken.

    Und um es nochmals klarzustellen, ich bemängele nicht den Fehler an sich, sondern die Art und Weise wie mit Bugreports und der Behebung von solchen Fehlern umgegangen wird und das UG direkt in folgenden Versionen einen ähnlichen Fehler einbauen.


    Und das man Angekündigten besser machen kann. Spieler auf Fehler hinweisen und auch Problemhilfe geben:


    Modautoren:

    Wenn ihr laneutils.makeLanes nutzt müsst Ihr euer Mod ändern.


    An die Spieler:


    Wenn Ihr nach den Update den Fehler sieht::

    Error attempt to call field 'makelanes' (a nil value )

    [C](-1): makeLanes


    [string "mods/<Modname>/


    Müsst Ihr auf ein Update des relevanten Mods <Modname> warten.