Natürlich habe ich zwischengespeichert, lässt sich jedoch nicht mehr öffnen.
Das wiederum habe ich nicht, vielleicht kannst du das als Ergänzung zu meiner Beschreibung nochmal etwas mehr erläutern (falls möglich mit Logfile etc)
Natürlich habe ich zwischengespeichert, lässt sich jedoch nicht mehr öffnen.
Das wiederum habe ich nicht, vielleicht kannst du das als Ergänzung zu meiner Beschreibung nochmal etwas mehr erläutern (falls möglich mit Logfile etc)
1. Beschreibe bitte so genau wie möglich, was Du tust und zu welchem Problem das führt.
Es handelt sich um viereinhalb Probleme, aber ich will nicht so mit Threads um mich werfen.
Verändert man im ContentTool im Variablentestfenster eine Variable (auch wenn man sie danach wieder in ihren Ursprungszustand versetzt), die mit Sichtbarkeitseinstellungen verbunden ist, schließt das Variablentestfenster dann nicht und importiert dann ein Mesh, welches an dieser Sichtbarkeitsbedingung hängt, neu, bekommt man folgende Zugriffsverletzung:
Diese verschwindet nach einem Klick auf "OK" wieder, allerdings erscheint sie ab da jedes Mal, wenn man etwas an einer Variable im Test-Fenster verändert (Auch Variablen anderen Typs).
Dasselbe passiert auch mit Animationen und Variablen, die diese steuern, dort sieht die Meldung so aus:
Der Workaround dafür ist, das Variablentestfenster immer komplett zu schließen, was aber nervig ist, weil es dann auch länger dauert, bis es sich wieder öffnet.
Wenn man im ContentTool ein Mesh importiert und auf "Öffnen" klickt, dann aber die "Meshes austauschen"-Meldung mit "Abbrechen" quittiert, öffnet sich der Dateidialog zur Auswahl der .x3d-Datei erneut. Wenn man nun jedoch wieder ein Mesh auswählt und auf "Öffnen" klickt, schließt sich der Dateidialog und öffnet sich direkt wieder. Klickt man auf "Abbrechen", erscheint diese Meldung:
Klickt man auf "OK" (oder auf das Kreuz oben), öffnet sich die Meldung direkt wieder neu. Möchte man die Meldung loswerden, kann man entweder das ContentTool über den Task Manager beenden, oder man drückt Alt+F4 schnell mehrfach hintereinander, bis man in einem Moment, in dem das Fenster sich noch nicht wieder geöffnet hat drückt und sich die Frage, ob man denn speichern wolle, öffnet (Die Meldung wird dann nicht mehr angezeigt, es sei denn, man drückt auf "Abbrechen", dann kommt sie wieder). Quittiert man diese nun mit "Nein" ("Ja" habe ich nicht probiert, aber vermutlich passiert das gleiche), schließt sich das ContentTool zum Hauptmenü und man bekommt noch folgende Zugriffsverletzung reingedrückt
...nach deren Quittierung sich das ContentTool komplett schließt.
Importiert man eine x3d-Datei in eine bereits bestehende .lob, welche Meshes ersetzt, öffnet dann eine zweite .lob (ob man die vorherige speichert oder nicht macht keinen Unterschied) und importiert die selbe x3d-Datei (die die gleichen Meshes ersetzen soll), bekommt man beim Import folgende Meldung:
...und die importierten Objekte werden nicht dargestellt, sind jedoch weiterhin in der Objektliste vorhanden.
Wenn man Meshes im ContentTool importiert, befindet sich direkt unter der Schaltfläche "X3D-Datei importieren" die Schaltfläche "2D-LOD generieren". Diese trifft man gern mal aus Versehen. Es gibt zwar ein Fenster, das fragt, ob man denn wirklich ein 2D-LOD generieren wolle, jedoch friert das ContentTool auch bei Antwort mit "Nein" ein und generiert (vermutlich) ein LOD. Ob es das wirklich tut, weiß ich nicht, da ich keine Ahnung habe wie LODs für Szenerieobjekte funktionieren und daher nicht weiß ob und wie man sowas testen kann.
Wenn man im ContentTool Materialien bearbeitet, ist die Schaltfläche "Unbenutzte löschen" sehr nah an den Schaltflächen "Beabeiten" und "Kopieren". Legt man nun Materialien bspw für Türknöpfe im Voraus an um dann die Objekte nachher zuzuweisen, kann es passieren, dass man aus Versehen auf die Schaltfläche kommt und alle seine vorbereiteten Materialien sofort entfernt. Schön wäre ein Bestätigungsfenster, ob man denn wirklich alle unbenutzten Materialien löschen wolle.
2. Poste bitte die Logfile und wenn möglich auch die Debug-Logfile, die erzeugt wurden, als das Problem auftrat.
In den Logs zu Problem 2 bin ich folgendermaßen vorgegangen: Import abgebrochen, durch Alt+F4 Speichern-Dialog aufgerufen, den mit "Nein" (nicht speichern) bestätigt, die dann folgende Zugriffsverletzung bestätigt.
1. Beschreibe bitte so genau wie möglich, was Du tust und zu welchem Problem das führt.
Wenn ich bei meiner Texttextur die Option "Ganzzahlig zentriert, ggf. weiter nach links" aktiviere, wird der Text bei einer ungeraden Anzahl Zeichen stattdessen nach rechts verschoben. Bei der Option "...nach rechts" wird ebenfalls nach rechts zentriert.
Die Einstellung in den Objekteinstellungen:
Das Ergebnis:
Ich habe dazu mal ein Objekt erstellt. Der Font kann nicht alle Sonderzeichen, aber annähernd das, was man auf der (deutschen) Tastatur eingeben kann. Falls du (oder wer anders) noch Änderungsvorschläge ha(s)t oder irgendwas in der Richtung, gern her damit.
https://steamcommunity.com/sha…iledetails/?id=3020105363
Moin mal wieder,
da abzusehen ist, dass ich noch weitere Fragen zu ähnlichen Themen habe und nicht für jede Frage einen einzelnen Thread erstellen will, habe ich den Ursprungsbeitrag mal editiert und dabei auch gleich eine weitere Frage hinzugefügt: Das Abrufen des öffentlichen Gleisnamens im Script. Weitere Details befinden sich im Spoiler im Ursprungsbeitrag. Wäre nett, wenn mir das jemand erklären könnte (oder sagen könnte, dass das nicht geht).
LG
Schade. Aber gut zu wissen, dann muss ich nicht weiter suchen
Danke für die Antwort!
Moin,
ich versuche zurzeit, eine TFT-Innenanzeige zu bauen, welche diverse etwas lustige Funktionen besitzt, bei denen ich mir nicht immer ganz sicher bin, wie ich sie umsetzen kann. Hier ist meine Sammlung an Scriptfragen dazu:
Dafür muss ich den Bildschirm über das Script an der nächsten Haltestelle anmelden (mit StatPIS_Login), allerdings stürzt Lotus an dieser Stelle ab, und zwar (wahrscheinlich), da ich den "öffentlichen" Haltestellennamen und nicht den internen, wie von der Prozedur gefordert, angebe. Allerdings weiß ich nicht, wo ich den herbekomme. TimetableAtBusstopOfWay gibt zwar die interne Bezeichnung zurück, allerdings nur wenn weder FIS-ID der Station noch FIS-ID des Gleises vorhanden sind. Einen anderen, sicheren Weg um die interne Bezeichnung zu bekommen, finde ich nicht. Daher die Frage: Wie kann ich den internen Haltestellennamen bekommen? Die gegebenen Informationen sind die, die vom IBIS gesendet werden (also Routenindex, StopSEQ, Zielindex, Linie und Sonderzeichen), und natürlich alles was man daraus (oder ganz ohne diese Werte) durch andere Prozeduren bekommen kann.
Der Fehler ist definitiv auf diese Zeile festgenagelt:
Warum Lotus bei sowas gleich abstürzt, weiß ich allerdings nicht, erscheint mir eher unpraktisch, wenn man aus Versehen mal auf der falschen Map ist und die Haltestelle dann nicht gefunden wird...
Hierzu habe ich keine Prozedur gefunden. Ich kann mir über TimetableAtBusstopOfWay das Gleis ausgeben lassen, allerdings nur die interne FIS-ID und das auch nur, wenn die eingetragen ist, ansonsten wird automatisch die FIS-ID der Station oder der interne Name der Station genommen. Über StatPIS_GenerateTempDataList kann ich mir eine Liste von Fahrten generieren lassen, die dann auch den öffentlichen Namen des jeweiligen Gleises enthält, mir daraus dann "meine" Fahrt raussuchen und daraus wiederum dann das Gleis ausgeben lassen, das wirkt aber unnötig kompliziert. Auch möglich wäre das Eintragen in eine spezielle FIS-Datei, da die Daten aber offensichtlich auch so schon vorliegen, würde ich das eher ungern machen. Gibt es da einen einfacheren Weg?
LG
If only this was true...
I don't think it's generally wrong, the bigger problem is that this actually seems to be a relevant factor in development. You can't make it right for everyone, that's just the way it is and going a path somewhere in the middle which is suboptimal for both sides really doesn't seem ideal. Especially since Lotus' reputation is so awful anyway, it's not like it can get much worse, so I'd say just go for the thing that makes the active, core playerbase happy (which are the people in the forum, and looking at the last feature poll, that thing is probably DirectX) and not the comments of some Lotus Youtube video or Instagram post.
I've got no idea of development but this just seems like the most logical step to me, feel free to correct me if I'm wrong.
Du musst die .bmps in einen Arbeitsordner packen (der kann überall sein, aber nicht im Lotus-Verzeichnis), der dann vom ContentTool in einen Container gepackt wird, welcher wiederum den Namen des Arbeitsordners trägt. Der Container wird dann automatisch in MyContent/objects geschoben.
Falls du eine AMD-Grafikkarte mit entsprechendem Treiber hast, musst du dessen Version auf 22.5.1 downgraden.
Übrigens: wenn du mal im Support-Forum nachsiehst, gibt es einige Threads mit genau dem selben Problem und bereits gegebener Lösung. Wäre nett, wenn du da vor dem Thread erstellen mal reingucken tätest. Falls es sich um ein anderes Problem handelt, will ich allerdings nichts gesagt haben.
...dass dir an keiner sachlicher Kommunikation gelegen ist?
...andererseits ist es auch nicht die ideale Lösung, jeden als "nicht an sachlicher Kommunikation interessiert" darzustellen, der sich einmal(!) etwas im Ton vergreift.
Omsi-Converts werden sowieso nur eine temporäre Lösung sein, bis (oder falls) Lotus größeren Anklang bei Content-Entwicklern findet. Die dann kommerziell zu vermarkten, ist nicht nur deshalb sinnlos, sondern auch, weil die Fahrzeuge qualitativ nicht unbedingt den Standards entsprechen, die Lotus haben sollte.
Da das Modell hauptsächlich als Testbus/Showcase der Gelenkphyik dient, würde ich das jetzt nicht wirklich als nötig einstufen. Vor allem, weil diese Features im normalen Betrieb nur wenig oder keine Funktion haben und der Bus als Convert eh nicht langfristig taugt. Da wäre es mir lieber, wenn das irgendwann mal am DL kommt und nicht am Urbino.
Wenn du das Arbeiten mit Blender 3.0 einfacher findest, kannst du diese Version über Steam installieren und die 2.79b normal, oder umgekehrt. Dann musst du nur das Texturieren in 2.79 machen und kannst in 3.0 modellieren. Allerdings wäre es natürlich am besten, wenn du dich an die 2.79 gewöhnen kannst., damit du nicht immer hin und her kopieren musst.
Hast du an den StdElements was verändert? Wenn ja, zeig mal bitte die Zeilen 50 bis 60. Wenn nicht, wie sieht die Sektion aus, wo du diese eingebunden hast?
Der Tastendruck wird erkannt, indem in der Sektion PUBLIC_BUTTONS eine Taste deklariert wird und diese dann in der Prozedur OnButton aufgerufen wird, wenn diese Taste gedrückt (und auch wenn sie wieder losgelassen) wird. D.h. die id in OnButton entspricht immer dem Namen der Taste, der in PUBLIC_BUTTONS deklariert wurde. Der value in OnButton zeigt an, ob die Taste gedrückt oder losgelassen wird und der cockpitIndex zeigt, in welchem Führerstand man sich befindet, wenn die Taste gedrückt wird (damit die Taste nicht in beiden Führerständen gedrückt wird).
Ich weiß nicht, wie deine Türen gesteuert sind, aber so wird als Bedingung hinzugefügt, dass die Variable erst auf 0 gesetzt wird, wenn die Position der Türen 0 ist. Musst dann natürlich deine eigenen Türvariablen einfügen.
Wenn jetzt allerdings die Türen einmal geschlossen und dann wieder geöffnet werden, wird die Variable nicht mehr auf 1 gesetzt.
Jetzt wird die Variable immer auf 1 gesetzt, wenn der Timer zu niedrig ist, oder eine der Türen offen ist. Wenn nichts davon der Fall ist, wird die Variable auf 0 gesetzt.
Die Variable "Timer" ist der eigentliche Timer, der hochgezählt wird (hochzählen ist einfacher als runterzählen, weil man dann nur definieren muss, wann der Timer aufhören soll, und nicht wo er starten soll)
Die Variable "StartTimer" ist nur dazu da, um zu signalisieren, wenn der Timer gestartet werden soll.
Der Button "Taster" ist der Knopf, den man drücken kann.
In der Prozedur OnButton wird erkannt, wenn der in PUBLIC_BUTTONS definierte Knopf "Taster" gedrückt wird, und StartTimer wird auf true gesetzt. Das "and (value)" ist da, weil OnButton zweimal aufgerufen wird, einmal wenn die Taste gedrückt und einmal wenn sie losgelassen wird (einmal ist value true, einmal ist value false). Hier wird die StartTimer nur gesetzt, wenn die Taste gedrückt wird.
Wenn StartTimer also true ist, wird der Timer hochgezählt.
Wenn der Timer unter 20 Sekunden ist, wird die Variable auf 1 gesetzt, andernfalls auf 0.
Der Text muss nicht abgeschnitten werden, da er auch außerhalb der Textur laufen kann.
moving_text ist eine Boolean-Variable,
moving_text_timer ist eine Single-Variable,
moving_text_pos ist eine Integer-Variable,
texlength ist die Länge des Strings (den ich in einer anderen Prozedur definiert habe, musst du dann wahrscheinlich durch TexGetTextLenPixel ersetzen).
Ich hoffe das ist verständlich und hilft irgendwie weiter