Mod API Diskussion (weiterführung aus dem Beta News Beitrag)

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


  • Neue Infos:


    Ich hab gestern noch eine Idee umgesetzt, diese beruht auf der Lua Debug Hook Schnittstelle und dem Stacktrace. Also keine schöne Variante, sondern eher die Nutzung einer Brechstange.
    Im ersten Test sieht es ganz gut aus, die Performance könnte aber besser sein. Damit sollte ich alle aktiven Mods herausfinden inkl. Pfad für Steam Mods.


    Kombiniert sollte es mit popen (für dir/ls) und dem händischen Auslesen der Dateien zu einer kompletten Liste aller Ressourcen führen.
    Sollte es gehen muss ich das ganze noch unter Linux testen und dann auch noch an der Performance schrauben.


    Zumindest gibt es aber nun wieder eine Chance das ich eine brauchbare Lösung ohne UG hinbekomme. :D

  • It's debug.setHook, tracing a lot calls and to find the modid/mod.lua loading ones.
    However every lua function call, including c lua runtime calls are going through this function.
    This function is called a lot while loading and even while at the main menu/load game screen.


    At least one good thing: if I have somewhere a syntax error the load game menu will crash, so faster testing :D

  • Status Update:


    Ich versuche gerade ldoc zu überzeugen eine Dokumentation zu erstellen, aber es will irgendwie nicht. Die ersten Ergebnisse gibt es hier:
    http://www.bytetransfer.de/pro…f/eis_os_commonapi_1/doc/


    Mal schauen wie ich die Rückgabe Werte komplett dokumentiere.


    Ein kurzer Test des UI Parameter Objekt scheint auch zu laufen, leider haben genügend Gleise immer den selben Namen.
    t.name = _("Standard tracks")


    Das ist natürlich überhaupt nicht förderlich für die UI.
    Auch noch andere Sachen sind unschön, da zum Beispiel die High-Speed vor den normalen Gleisen erscheinen.


    Aber es geht zumindest weiter...

  • Neues Status Update:


    Bilder kann ich immer noch nicht anbieten, aber die Listen für Gleise und Brücken funktionieren soweit.
    Die Übersetzungen machen mir Kopfschmerzen, ich würde gerne die Geschwindigkeit mit Anzeigen.
    Da UG aber ja unterschiedlich übersetzt (mod<->ug content) bekomme ich per Script ja die Übersetzungen der .mo Dateien nicht.


    Beim Preloading muss ich auch noch "_()" besser emulieren, dafür muss ich aber wiederum die Spiel Sprache auslesen,
    das wird dann auch wieder mit viel Umwegen gehen.


    Ich hab ein Update der Schnittstellen Beschreibung hochgeladen. LDoc kennt weder InheritDoc noch Subclass für Klassen.
    Mit der Dokumentation ist der UIParameter Code nur noch unübersichtlich, bin mir drauf und dran ein eigenes Programm für die Docs zu schreiben, dieses aber nur am Rande.


    http://www.bytetransfer.de/pro…f/eis_os_commonapi_1/doc/

  • Jap diese Probleme mit Ldoc kenne ich nur zu gut...
    Du kannst dir da höchstens mit @see helfen. Die custom tags sind da auch nicht flexibel genug um sowas zu basteln.
    Du kannst die Dokumentation auch vom code trennen dann wird der code übersichtlicher, verfehlt aber imho ein wenig das Prinzip von inline doks.
    Die Sprache habe ich bisher auch noch nicht gefunden, du könntest aber die locale die ziemlich am Anfang in die stdout geschrieben wird "missbrauchen".
    An welcher Stelle musst du eigentlich die _ Funktion emmulieren? Die ist doch bereits im Hauptmenü verfügbar oder irre ich mich da?

    Dieser Beitrag wurde bereits ∞ mal editiert, zuletzt von Freahk (Vor π Minuten)

  • Well _() is defined in the TransportFever binary. To be exact it's runtime set quite early when loading a ressource of this mod.
    You could say it does a loadstring call.


    'function _(s) return translate("eis_os_commonapi_1", "en", s) end',



    Hmm, I must try again getTextRes directly, it's odd that the language is set to en. Hmm...


    -edit-
    Yep, getTextRes works. While adding a Mod in Main Menu -> Load Game, the language is en, when loading it gets "de".


    So if you have the modid and language it is possible to use the function translate2 of res/scripts/mod.lua


    -edit2-
    Language:
    local language = string.match(debug.getinfo(_, "S").source, '%"([%w_]+)%", s%) end$') or "en"

  • Da ich meine Entwickler Version meines Bahnhofs hochgeladen habe, gibt es nun auch mal eine Alpha Version meiner Common API.
    Hierbei fehlt noch der API Teil für easyparams den ich aber erst wohl Anfang Oktober in Angriff nehmen kann.


    Common API

BlueBrixx