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


    Sorry, wie heißt die mdl Datei den? :/ Hab die irgendwie nicht im Modeleditor gefunden.



    Ich hab nun templates eingebaut, d.h. man kann dann beim ersten bauen sich eine Vorkonfiguration auswählen und diese dann seinen Wüschen anpassen.

    Der Name bzw. Template wird per postRunFn dann in die Konstruktionsauswahl übernommen.


    Noch liegt das in meinem TramTracks. Bin mir noch nicht sicher ob ich daraus einen Einzelmod ohne Abhängigkeiten mache.

    Verschiedene Straßenbreiten kann man so auch schon definieren. Mit den Fahrleitungshöhen hab ich noch keine Idee.

    Auch bin ich noch nicht glücklich, das man die kompletten IDs da reinschreiben muss.


    So sieht das dann in eine Modul Datei aus, d.h. auch andere Mods können Ihre eigenen Module mitbringen:





    Eine gescheite Lösung für die UI Bilder hab ich auch noch nicht.


    Das ist jetzt nur mal ein Test, indem ich den 1.8m Träger einfach in ein Modul gesteckt habe und die Konstruktion bearbeitet,


    Vielleicht kann ich ja jag-999 bewegen ein paar Bauteile abzugeben ;)

    Ggf könnte man den Isolator zur Fahrleitung trennen, dann könnte man den auf dem Rohr auch "verschieben." bzw. an die richtige Stelle setzen.

    Auch wäre es möglich, das untere Rohr des Auslegers als Teil zu definieren, dann könnte man längere Stücke nutzen


    Die Idee meiner Konstruktion ist ja eigentlich, das man sich sein eigenes Modell zusammen basteln kann.
    Ich könnte mir auch noch Einspeise Teile vorstellen.


    Ich glaube ich muss mal ein eigenes Thema erstellen...


    PS: Es spricht auch nichts dagegen, damit verschiedene Fahrleitungshöhen anzubieten, man muss dann halt im Mast Modul die Anschraubpunkte (in der Fahrleitungshöhe) definieren.


    Das ist so eine Art Baukasten. Für fertige Blaupausen müsste ich mir dann noch etwas ausdenken...

    Hallo

    ich greife mal das Thema wieder auf, ich hatte ja geschrieben das ich einen Prototypen bauen werde.

    Hier hab ich mal wieder sabon Ausleger und Betonmast verwendet (aus WernerK seinen Paket und die msh Position verändert)




    Mit CommonAPI2 können Module in alle Richtungen gedreht werden (nutzt intern variant, mit CommonAPI funktioniert dann auch die Tasten O P, Ü +, mit C gibt es dann auch einen Reset ), jedes Teil kann bis zu 9 Plätze anbieten aus max 8 Kategorien. D.h. man fängt mit der Basis an, und kann Teile dran montieren.

    Technisch könnte man also an so auch noch Schilder für Trennstelle. usw. Anbieten. Die Isolatoren Plätze sind für 4m, 3,5m, 3,2m Fahrbahnbreite ausgelegt.

    (Die Plätze werden durch Metadaten geregelt, das ist ggf. erweiterbar)



    Man kann dann damit einen Mast komplett setzen und dann ggf. Anpassen...



    Mit CommonAPI2 ist auch die Auflösung eines Mastes in ein AssetGroup ohne fehlerhaftes terrainAlignmnet möglich.




    Hier mal als Beispiel bei einem anderen Projekt:


    Der Peil wurde in alle möglichen Richtungen verdreht...




    Mir fehlen ja da aber ehrlich die Lust mich mit 3D Programmen zu beschäftigen...



    PS: Die Fahrleitungsmasten snappen an die Fahrspur an, also ist das bauen relativ einfach. Man brauch nur ggf. mal ein Z Offset um bei Steigungen Fehler zu korrigieren.

    Jedes mal wenn TPF2 eine neue LUA State startet und die Mods lädt wird commonapi2 (neu) geladen.
    Ich kann dir nicht sagen warum TPF2 ein LUA State neu lädt, vermutlich hast du den Debug Modus an und TPF2 lädt die .con Datei bei einem Upgrade einer Konstruktion neu.

    Das ist normales verhalten des Debug Modus. Dieses Verhalten des Debug Modus kannst du verhindern wenn du Fast Debug Modus in der CommonAPI2 aktivierst.
    Damit dann die .con Datei neu geladen wird, muss du einen Spielstand neu laden... (Also so, als ob du den Debug Modus von TPF2 abschaltest)


    VectoredExceptionHandling:

    https://learn.microsoft.com/en…ctored-exception-handling


    Ich hab mir die TPF2 Version unter Windows noch nicht angeschaut, inwiefern es da einen Fehler geben könnte.


    Ohne CommonAPI2 Native DLL aber mit Debug Modus erhältst du auch HandleVectoredException ?

    Die Obere Teil ist carrier = 3 JournalEntryCarrier => OTHER

    Dort kannst du via type = 4 = JournalEntryType => MAINTENANCE

    den Unterhalt für maintenance =  Eintragen, sprich für 3 Sachen aus JournalEntryMaintenance


    Des weiteren kannst du dort via type = 5 in der "Other" Kategorie eine "Tickets" Betrag buchen.


    Wenn es Total falsch ist, crasht das Spiel halt =O

    journalEntry.category.type = 0

    Keine Ahnung wo TPF2 das dann anzeigt :/


    journalEntry.category.type = 6


    Wegen dieser Fehlermeldung:

    error: [string "journalEntry.category.type = aa"]:1: stack index 3, expected number, received nil: (bad argument into 'void(JournalEntry::Type)')

    Versuche es mal mit dem hier:

    Command

    make.bookJournalEntry(playerEntity, journalEntry[, a])


    Das hat laut Referenz eine Position als Vector:

    https://transportfever2.com/wi…tml#make.bookJournalEntry


    Keine Ahnung ob da was sichtbar wird


    -edit-


    Beispiel Script:


    Mit dem Inspektor zu 1,1 gehen

    journalEntry = api.type.JournalEntry.new()

    journalEntry.time = -1

    journalEntry.amount = 10000000

    cmd = api.cmd.make.bookJournalEntry(api.engine.util.getPlayer(), journalEntry, api.type.Vec3f.new(1,1,1))

    api.cmd.sendCommand(cmd)



    journalEntry.time -1 ist wichtig, sonst gibt es einen Crash

    api.type.Vec3f.new(0,0,0) wird ignoriert, d.h. die Position darf nicht 0,0,0 auf der Karte sein...


    Mit der JournalEntryCategory kannst du auch den "Zweck" bestimmen...


    D.h. es kein freier labelText, aber damit kannst du einen Beitrag auf dem Nutzerkonto buchen, damit müsstest du doch weiter kommen?

    Jedes MDL in TPF2, das irgendwo gerendert wird, ist durch eine Referenz in der es ecs::component::ModelInstanceList dargestellt. (Mal abgesehen der Procedural Shapes)


    Dort gibt es den sogenannten Transformator Eintrag:


    Daher ist es zum Beispiel nicht möglich eine Bushaltestelle mit Liniennamen oder Stationsnamen zu versehen, oder man benutzt CommonAPI2 beim Bau.

    Wenn du also eine MDL Datei ohne Transformator hast, kannst du auch keine labelTexte anzeigen.


    Brute Force Animation: Konstruktion -> Position per Parameter -> updateConstruction via command.




    Ich frage mich ob es das alles wirklich wert ist. Du kannst ggf. den gleichen Effekt erzielen wenn du ein UI Element hast und den Text damit den Benutzer anzeigst.

    Wobei ist diese Funktion wirklich so wichtig? Und wie willst du eigentlich den Betrag von Spielerkonto überhaupt abziehen?

    Dafür fällt mir keine keine eigene API ein.Ist aber auch kein Teil die ich irgendwann mal angefasst habe...


    Eine Preisanzeige ist kein labelText. LabelTexte sind an die mdl bzw. der Konstruktion gebunden. Du könntest die Animation machen, die labelTexte sollten mit der Modelanimation mit verschoben werden.


    Rendern -> ecs::component::ModelInstanceList -> Transformator -> Transformator holt sich die Daten aus der Entity Daten -> Anzeige der LabelTexte.