MaikC: Genau das meinte ich. Hab bei mir nur kurz in Steam im Lade Bildschirm den Autor genommen, wollte Dich da nicht außen vor lassen
Beiträge von TransportTycoonJoker
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
-
-
Hi Markus,
Dir fehlen diverse Mods, die Du mal im Savegame geladen hattest bzw referenziert werden. z.B. Cargo Asset Set von Kaleut1988
Dann fehlen dir noch diverse Models bspw.
Code[RESOURCE ERROR] Referenced model not found: 'vehicle/train/epcargo_193.mdl' in 'vehicle/train/Rtb_193_791.mdl (key: groupFileName)' [RESOURCE ERROR] Referenced model not found: 'vehicle/train/epcargo_193.mdl' in 'vehicle/train/Rtb_193_791_fake.mdl (key: groupFileName)' [RESOURCE ERROR] Referenced model not found: 'vehicle/train/epcargo_193.mdl' in 'vehicle/train/Rtb_193_791_vorspann.mdl (key: groupFileName)' [..] Texture load error: file not found: res/textures/ui/tracks/kanshi_depot.tga Texture load error: file not found: res/textures/ui/tracks/high_speed_no_mast.tga Texture load error: file not found: res/textures/ui/construction/categories/ice_werk.tga Texture load error: file not found: res/textures/ui/construction/categories/ice-werk.tga Texture load error: file not found: res/textures/ui/streets/depot_trolley_new.tga
Zum Spielabsturz führt dann letztlich ein UI Element Fehler. Was genau weiss ich leider nicht. Wird wohl auch ein Fehlerhafter Mod sein oder schlichtweg die fehlenden Models.
-
Hi Eric,
weiss nicht genau ob das deine Frage beantwortet oder ob es Einfluss auf die Animation hat, aber es gibt im Model Repository einen Parameter departureDelay = <Zeit in Millisekunden>, der wird aber offenbar vom Spiel an sich vergeben. In der .mdl Datei ist er jedenfalls nicht enthalten. Evtl. lässt der sich jedoch über einen Modifier beim laden anpassen.LG
Joker -
Hi all,
I was stumbling over an interesting fact: The remaining value of a vehicle does not equal to the remaining lifetime in percent * the price. It also does not seem to follow any known depreciation methods as all of them (the ones I know and could find) reach 0 at the end of the lifetime. It seems to be possible to have a remaining value of >1% after the end of lifetime.
Does anyone of you have an idea of this is really calculated? -
Von was möchtest Du denn die Länge messen? Die API gibt für den Pfad eines Fahrzeugs beispielsweise eine Liste aller Edges zurück. :
Codeapi.engine.getComponent(vehicleID,66) -- TYPE: MOVE_PATH ... alle edges auf dem nächsten Abschnitt (Zwischen letzter und nächster Station) api.engine.getComponent(edgeId,52).edges[1].geometry.length -- TYPE: TRANSPORT_NETWORK ... Länge der einzelnen Edge
Mit einem kleinen Script lässt sich beispielsweise die Länge einer Linie berechnen
-
ehm. neee Werde ich gleich mal ausprobieren. edit: mit -1 gehts... wieso ist das mal wieder nicht dokumentiert? -.-
Aktuell speichere ich die Dinge noch im SaveGame, aber das kostet auf Dauer Performance. Wenn ich es ins Journal schreiben würden, könnte ich mir das speichern und laden sparen (So mal meine Überlegung).
Und ja mit den game.interface funktionieren viele Dinge einfacher, schneller und zuverlässiger. Ist an sich eine gute Ergänzung zur anderen API
Edit 2:
Ergänzung zum JournalEntry: "time" muss -1 sein. Immer. Wird dann vom Spiel automatisch auf die aktuelle Spielzeit gesetzt. (Nachträglich was reinbuchen geht nicht)
api.cmd.make.bookJournalEntry: akzeptiert neben der PlayerEntity auch jede andere Entity die ein Journal hat. Damit der Betrag aber dem Spielerkonto gutgeschrieben/abgezogen wird muss er auch noch beim Spieler eingebucht werden. -
Hallo zusammen,
habe folgendes Problem: Ich möchte meine Mod auf die neue API ändern und statt dem alten game.interface.book() den api.cmd.make.bookJournalEntry verwenden. Problem ist allerdings, dass egal wie ich den verwende immer die folgende Fehlermeldung kommt (und das Spielabstürzt):Error message: Assertion `cmd.journalEntry.time == -1' failed.
Dabei ist unerheblich welchen Wert journalEntry.time eigentlich hat, er kann 0, 1000, 1000000 oder sonst irgendwas sein, die Fehlermeldung kommt trotzdem. (Wert wird auf die aktuelle Spielzeit in Millisekunden gesetzt)
Hat jemand den command schon erfolgreich verwendet und kann mir sagen wo hier der Trick liegt?
besten Dank
Joker -
Nur, dass ich das richtig verstehe:
Bahnhof A (Rohöl) => Zug => Bahnhof B (Abladen Rohlöl, Aufladen Treibstoff) => Bahnhof A (Abladen Treibstoff, aufladen Rohöl) ?
Mit der Konfiguration kann dein Zug niemals voll werden, da du ja gar nicht genügend Treibstoff produzierst. Verhältnis von Rohöl zu Treibstoff ist ja 2:1. Bei den Stops kannst du im Linienmanager einstellen zu wieviel % sie laden sollen (pro Rohstoff), kannst da ja mal 50% einstellen.
-
ok "gut" zu wissen, dass andere das Problem auch haben. Hast du eine Antwort bekommen?
Werde das mal bei mir beobachten.Im load Teil habe ich bei mir If api.gui then eingebaut. Der Engine Thread hat da ja keinen Zugriff drauf und führt den Teil also nicht aus.
Finde es äusserst ungünstig dass sich gui & engine die load function teilen. -
Hallo zusammen,
ich hab ein kleines, mir nicht verständliches Problem. Ich habe eine Tabelle die ich vom Engine State ins Savegame / GUI State kopieren möchte. Bisher hat das immer geklappt, am Wochenende hab ich jetzt meine Mod von einer anderen getrennt und ein paar Dinge von Grund auf neu gestaltet. Ich habe 2 separate Tabellen:
An sich kein Problem wenn ich die Tabellen speichere klappt das.
Codesave = function () -- save data to shareState return {engineState = engineState, guiState = guiState} end,
Füge ich jetzt allerdings meine Tabelle hinzu kommt die nachfolgende Meldung.
Codesave = function () -- save data to shareState if not engineState["lineInfo"] then engineState.lineInfo = { } end if lineInfo then engineState["lineInfo"] = lineInfo end return {engineState = engineState, guiState = guiState} end,
Dabei ist unerheblich ob ich die Tabelle jetzt erst im Save der übergeordneten Tabelle hinzufüge oder das beim erstellen direkt in den engineState reinschreib. Es kommt jedes mal die folgende Fehlermeldung.
Assertion `m_data->gameStates[1]->ScriptSave() == m_data->gameStates[0]->ScriptSave()' failed.
Interessant ist, wenn ich mir die Tabelle via debugPrint ausgeben lasse und aus der stdout in die savegame.lua kopiere ( oder einfach den Eintrag .lineInfo ={ } manuell erstelle) läd & speichert er die neuen Daten einwandfrei.
Hat da jemand ne Idee woran das liegen kann?
...
Während ich das hier schreibe, hat sich das Problem gelöst (vorerst). Savegame einmal ohne mod geladen und gespeichert (um zu schauen was im anderen mod gespeichert wird) und wieder zum aktuellen Projekt gewechselt. Jetzt klappts einwandfrei. Auch ein neues Spiel angefangen => klappt jetzt. Ging am WE nicht.
-
genau danach siehts bei manchen Objekten aus. TextView geht ja...
-
Ähm ja, hab ich zwar mal gelesen aber irgendwie verdrängt. Danke! Werde ich einbauen wo sinnvoll. Für 3 Tabellen klappt es auch noch ohne. Danke Dir!
-
Hallo zusammen,
da ich nicht alle meine Gui Objekte als "globale" lokale speichern möchte, dachte ich, dass ich die "api.gui.getById" Funktion nutzen kann, um sie später wieder aufzurufen. Das klappt bei einfachen Dingen wie einer TextView bisher reibungslos. Andere Components wie z.B.: der ToggleButton werden nicht als solches zurückgegeben, Funktionen wie bspw. setSelected(bool,bool), sind nicht verfügbar. Andere Objekte wie bspw. Tabellen werden bedingt korrekt zurückgeben. Es kann sein, dass es 5 mal in folge klappt, beim 6. Mal gibts dann ein CTD ohne Fehlermeldung/stdout Eintrag etc. War Recht mühsam und frustrierend rauszufinden wo genau jetzt der Fehler liegt (ein Stückweit natürlich auch gut, da man so versucht den Code zu optimieren und vereinfachen.
Hat jemand mehr Infos welche Objekte da genau betroffen sind?
-
Hallo zusammen,
keine Ahnung ob das ein bekanntes Problem ist und andere das auch haben, oder ob meine Kiste einfach ne Macke hat. Ich hab ab und an (mehr oder weniger zufällig) das Problem, dass das Spiel konstant die GPU zu 100% auslastet. Normalerweise pendelt sie irgendwo zwischen 30 & 60% je nachdem was angezeigt wird. Das Problem besteht dann auch über die komplette Laufzeit (also sehr kurz ) des Spiels und war bisher unabhängig von Mods oder Spielständen. Ein Neustart des Spiels hat jedes Mal geholfen. stdout folgt beim nächsten Mal, war zu schnell im neustarten.
-
Da die styleSheets ebenfalls lua-scripte sind, könnte es sein, dass du das entsprechende Stylesheet sogar "prozedural" aus den definierten Farben generieren könntest.
Allerdings habe ich noch nicht getestet ob das von der Ladereihenfolge her funktioniert (game config vor stylesheets)
Das wäre natürlich eine Idee. Werde ich evtl mal probieren. Hab die 81 Farben von LINX jetzt in 5 min in Excel in ein Copy Paste fähiges Format gebracht. Hardcoded wäre doch unterm Strich schneller gewesen ...
-
Das ist aktuell im nicht-Lua-Teil in zwei Schritten gemacht:
- Bezug des Farbwertes analog zu local lineColor = api.engine.getComponent(objectID,64).color
- Zuweisen dieses Farbwertes zur backgroundColor1 der Component.
Zweiteres ist wie oben bereits gesagt aktuell nicht via lua machbar. Es geht entsprechend aktuell nur über den Umweg via styleSheetClasses, d.h. man müsste in einem Stylesheet Farbklassen für diese 81 Farben anlegen und dann die passende zuweisen.
Ok, danke für die Bestätigung und vorallem für die schnelle Rückmeldung. Dann kann ich meine Suche nach einer Möglichkeit einstellen und die beiden Hauptmods mit den Farben in ein StyleSheet aufnehmen.
-
Bei den Kreisen handelt es sich nicht um ColorChooserButtons, letztere sind die rechteckigen Balken die du in der Linienbearbeitung rechts bzw im Liniendetaildialog oben siehst:
Für die kreisrunden Indikatoren wird eine normale Componente mit dem name "LineColorComp" genutzt. Die kreisrunde Formatierung wird via stylesheet erledigt:
Codea("LineColorComp", { size = { 14, 14 }, margin = { 0, 0, 0, hp }, backgroundImage1 = { fileName = "ui/design/buttons/line_surface.tga" }, })
Zusätzlich wird noch die backgroundColor1 gesetzt. Weitere Informationen zum Styling mit backgroundImage1 und backgroundColor1 findest du hier:
Danke für die Erläuterung! Dass das irgendwie so im Spiel umgesetzt wird hab ich mir noch, gedacht (via Debugger kommt man ja an den Namen) und den Zitierten Eintrag habe ich im entsprechenden StyleSheet auch schon entdeckt. Jedoch ist für mich noch nicht ganz klar wie(& ob) man als Modder die gleiche Funktionalität nachbauen kann. Wie erhält der Kreis beim Linienmanager die Info über die aktuelle Farbe, wenn z.B. Per mod 81 weitere Farben hinzugefügt wurden?
-
TransportTycoonJoker mit welchen Paramtetern rufst du ColorChooserButton.new auf? Ich wollte mir das für den Fahrplan mod auch mal anschauen. Bekomme es aber nicht hin einen zu erstellen
Die Referenz ist hier zu echt mies. Empfehle hier via Debug Mode + Console zu gehen, dort sind in der Regel die richtigen Parameter aufgeführt
Codelocal lineColor = api.engine.getComponent(objectID,64).color local lElement = api.gui.comp.ColorChooserButton.new({lineColor},lineColor,-1,false,false)
Parameter 1: Gibt die Farben die zur Auswahl stehen an (als Array von Vector3f (x,y,z))
Parameter 2: Gibt die ausgewähle Farbe an
Parameter 3: die Breite (WidthOrMinusOne)
Parameter 4: Reset Button (boolean)
Parameter 5: Inner ResetButton
via :setEnabled(false) kannst du es als reine Anzeige definieren
An sich ganz nett, aber wie man das sinnvoll mit anderen Elementen verwenden kann um z.B. den kleinen Linienkreis zu erhalten habe ich noch nicht rausgefunden.
-
Das Vorgehen klingt schon sinnvoll.
Also, das Problem ist noch, dass das farbige Element quadratisch ist und nicht rund? (Screenshot?)
Das triffts so ziemlich. Kann es mittels Stylesheet größer / kleiner machen und hin und herschieben, aber nichts an der Tatsache ändern, dass es nicht rund ist. Icon / Bilder, die ich mittels ImageView einfüge, lassen sich meines wissens ja nicht im StyleSheet einfärben, oder?
-
Hallo zusammen,
ich bastel gerade an einer Übersicht in der ich die Linien und verschiedene Infos zur Linie, den Haltestellen, sowie den Zielen der Fahrgäste (mit der Linie und Anschlusslinien bis zum Ziel) darstellen möchte. Da es doch einfacher ist die Linie anhand der Farbe & Name zu identifizieren als nur über den Namen, möchte ich wie in der Standardansicht auch, einen kleinen Kreis mit der Liniefarbe verwenden. Anhand der vorhandenen Texturen und sonstigen Vorgehensweise wie bei Buttons wäre mein Ansatz jetzt gewesen:
1. ColorChooserButton als Component der Tabelle hinzufügen, Liniefarbe zuweisenund auf Inaktiv setzen (soll ja nur die Farbe anzeigen). Name bzw StyleClass zuweisen
2. Im zugehörigen StyleSheet die Klasse / Namen definieren und backgroundImage1/2 setzen (z.b. ui/design/buttons/[email protected])
Soweit so gut. Klappt nicht. Es wird einfach der komplette Component ausgefüllt. Hab es mit einem Abosultem Layout versucht und einfach nen Bild mit transparenter Mitte drüber gelegt. Klappt aber auch nur bedingt.
Hat jemand vielleicht eine Idee wie man die Farbe darstellen kann bzw wie UG das macht?
Fest im StyleSheet verankert wie es z.B. der Timetable mod macht, möchte ich das ungern.
Wenn man die "ui/design/buttons/[email protected]" im eigenen Mod anpasst werden alle Linien "Kreise" überschrieben und sind entsprechend verfärbt. Sprich UG macht das mit dem Bild. Wäre schön wenn gewisse Dinge irgendwo dokumentiert wäre bzw die API Referenz auch korrekt wäre.