Jump to content

Recommended Posts

Posted (edited)

Hallo an alle,

Habe seit laengerer zeit mal wieder mit MBS gespielt und die V5 installiert. Die neuen funktionen mit gleiskontakten und lua script haben mich veranlasst mal eine steuerung zu bauen. Habe etliche harfen und verzweigungen realisiert mit derzeit ueber 15 zuegen in betrieb. Ist noch lange nicht fertig aber habe einen guten ueberblick. 

Natuerlich lerne ich mit der fortschreitenden realisierung und die strukturen die ich am anfang geschrieben haben werden im laufe der zeit besser und uebersichtlicher. Wesentliches problem sind die namenskonventionen fuer objekte. Alles in allem laeuft das sehr gut.

Hier ist was mir bisher aufgefallen ist oder was ich vermisse:

  • Doppelclick und drag um worte/texte zu selektieren im script editor.
  • Script editor hat kein  zeilenende. Cursor down geht nicht hinter das letzte zeichen der naechsten zeile sondern "ins leere". Ist etwas laestig wenn man andere editoren gewoehnt ist.
  • Funktionstaste um event editor aufzurufen. Gleiches gilt fuer cursor hoch.
  • Cancel taste in event editor anstelle jedesmal zu fragen ob gespeichert werden soll.
  • Liste von event definitionen die ein objekt (weiche,signal,variable) beeinflussen (search in event editor - vielleicht habe ich was uebersehen)
  • In der objekt auswahl liste muss man jedesmal die filter neu setzen wenn man die ueberfluessigen gleise die nicht umbenannt sind und andere auszublenden. Waere sowiso nuetzlich ein filter zu haben fuer user named objects anstelle alle anzu zeigen. Man waehlt ueblicherweise kein objekt aus das nicht explizit benannt wurde.
  • Wenn in trace window ein filter objekt gesetzt ist wird ein scriptfehler nicht angezeigt. Erst wenn man ohne filter die simulation laufen laesst erscheint ein moeglicher scriptfehler. 
  • Nuetzlich fuer test waere wenn man die events fuer einen zweig des baumes auschalten kann. Wenn man einen gut strukturierten event baum hat ist das nuetzlich fuers testen. Bei einer groesseren anlage und complexeren event strukturen ensteht moeglicherweise chaos bei scriptfehlern die nicht immer vermeidbar sind wenn man groessere scripts baut. Das hat mich schoen viel zeit gekostet weil ich nicht jedesmal alle zuege vom gleis nehmen will. Habe selbst ueber variablen einen ein/aus von teilen des event baums organisiert, ist aber laestig. 

Gleiskontakte sind super und im zusammenhang mit script erlauben alles was mir derzeit in den sinn kam bis auf das problem doppeltraktion. Naja das kann man loesen wenn man laengere brems oder haltegleise macht oder aber mehrere gleise benennt und abfragt. Laengere gleise haben den nachteil von verschiedenen haltepunkten, mehrere brems oder haltegleise machen wesentlich mehr aufwand im script und benennung. Das ist kein wunsch sondern nur eine feststellung. Das program weiss natuerlich wenn ein zug doppeltraktion hat und koennte das automatisch loesen oder man laesst die zweite lok als dummy mitlaufen was ja moeglich ist, aber beim dampf will man das ja nicht. Vielleicht gibt es andere vorschlaege. 

Habe noch einige andere punkte die ich anders loesen wuerde, aber es ist alles eine frage der prioritaeten nicht wahr ? 

Generell, gute version. Keine probleme bei der migration, allerdings habe ich keine ereignisse migriert sondern nur objekte. Hatte nur einen crash bisher, war aber eine ganz komische situation und nicht reproduzierbar. Programm lauft zuverlaessig und schnell auf meinem PC, Grafik ist schnell genug fuer mich derzeit, alles in allem bin ich wirklich zufrieden mit der V5.

 

Gruss aus Australien

Gmd

 

Edited by gmd
Posted

Hallo gmd,

auf die Gefahr hin, dass ich deine Anmerkungen stellenweise missverstanden habe ...

vor 7 Stunden schrieb gmd:

Doppelclick und drag um worte/texte zu selektieren im script editor.

funktioniert.

Beim "drag" zeigt ein klitzekleiner Punkt in der Nähe des Mauszeigers, wo eingefügt wird. Und den markierten Text muss man irgendwo in der Mitte anfassen um nicht erneut zu markieren sondern zu greifen.

 

vor 7 Stunden schrieb gmd:

Script editor hat kein  zeilenende.

Ja, das irritiert mich auch. Aber die Taste "end" hilft.

 

vor 7 Stunden schrieb gmd:

Nuetzlich fuer test waere wenn man die events fuer einen zweig des baumes auschalten kann.

Mit einem Rechtsklick auf ein Ereignis im EV Baum findest du im Kontextmenü die Möglichkeit, dieses Ereignis zu deaktivieren.

 

vor 7 Stunden schrieb gmd:

bis auf das problem doppeltraktion.

per Lua kannst du alle Fahrzeuge ermitteln, die im Zugverband stecken und auch herausfinden, welche dieser Fahrzeuge motorisiert sind.

 

Viele Grüße nach Australien
Götz

Posted (edited)
13 minutes ago, Goetz said:

 

funktioniert.

Beim "drag" zeigt ein klitzekleiner Punkt in der Nähe des Mauszeigers, wo eingefügt wird. Und den markierten Text muss man irgendwo in der Mitte anfassen um nicht erneut zu markieren sondern zu greifen.

 

Das hast du misverstanden. Doppelclick auf ein wort selektiert das wort und nachfolgender drag nach rechts ohne mouse taste loszulassen selektiert das naechste wort usw. bis maus haelt. Das kann man verwenden um strings zwischen quotes schneller zu selektieren.

13 minutes ago, Goetz said:

 

Mit einem Rechtsklick auf ein Ereignis im EV Baum findest du im Kontextmenü die Möglichkeit, dieses Ereignis zu deaktivieren.

 

Prima, habe ich gerade entdeckt ..

 

13 minutes ago, Goetz said:

 

per Lua kannst du alle Fahrzeuge ermitteln, die im Zugverband stecken und auch herausfinden, welche dieser Fahrzeuge motorisiert sind.

Ja das ist moeglich aber nicht wirklich praktikabel , nur wenn ich alle meine haltepunkte ueber eine generische funktion bediene und mit tabellen parametrisiere. Sonst ist es zuviel aufwand.

 

Ein weiterer punkt ist dass CTRL C nicht funktioniert wenn man im eventeditor einen variablennamen kopieren will wenn das namensfeld zum umbennen geoeffnet  und der name selektiert ist. Nur rechtsclick copy funktioniert. Tastenkommando nicht.

 

Gruss

gmd

 

Edited by gmd
Posted
vor 8 Stunden schrieb gmd:

Hatte nur einen crash bisher, war aber eine ganz komische situation und nicht reproduzierbar

kann z.B. passieren, wenn er nicht sowieso im offline-Modus ist und das Internet mal kurz nicht da ist. Ist dann aber kein echter Crash.

vor 48 Minuten schrieb Goetz:

Ja, das irritiert mich auch. Aber die Taste "end" hilft.

das irritiert nicht nur, das nervt ganz gewaltig. Ist Neo aber leider bekanntermaßen wurscht.

 

vor 42 Minuten schrieb gmd:

nur wenn ich alle meine haltepunkte ueber eine generische funktion bediene und mit tabellen parametrisiere. Sonst ist es zuviel aufwand.

Beim Straßenverkehr mache ich es im Moment anders herum. Die Kfz bekommen tabellarische Fahrpläne (sollen ja auch nicht sinnlos im Kreis fahren). Dort sind die Abzweigungen und benötigte Weichenstellungen hinterlegt. Das kann noch um Sonderereignisse erweitert werden. Vor den Abzweigungen liegen dann nur einfache Trigger-Gleiskontakte, die wie folgt arbeiten:

if vehicle.variables["Fahrplanindex"] ~= nil then
  local fpi = vehicle.variables["Fahrplanindex"]
  local wi = vehicle.variables["Weichenindex"]
  if Fahrplan[fpi][wi][1] == $("Stop") then
      if Fahrplan[fpi][wi][2] == 0 then
        vehicle.targetSpeed = 0
      -- else: Fahrzeug stoppt selbst an Straßenende
      end
  else
    Fahrplan[fpi][wi][1].state = Fahrplan[fpi][wi][2]
  end
  if Fahrplan[fpi][wi + 1] ~= nil then
    wi = wi + 1
  else
    wi = 1
  end
  vehicle.variables["Weichenindex"] = wi
end

Hierbei ist es sinnvoll, die beteiligten Fahrzeuge auf eine Grundposition zu stellen und diese zu merken. Zu diesem Zweck habe ich die Daten in einem Textobjekt hinterlegt:

Setter und Getter sind hier:

function getBasePos(obj, name)
local pos = {}
local rot = {}
pos = obj.transformation.position
$("Grundpositionen Kfz").variables["BasePos"][name]["x"] = pos.x
$("Grundpositionen Kfz").variables["BasePos"][name]["y"] = pos.y
$("Grundpositionen Kfz").variables["BasePos"][name]["z"] = pos.z
rot = obj.transformation.rotation
$("Grundpositionen Kfz").variables["BasePos"][name]["a"] = rot.x
$("Grundpositionen Kfz").variables["BasePos"][name]["b"] = rot.y
$("Grundpositionen Kfz").variables["BasePos"][name]["c"] = rot.z
$("Grundpositionen Kfz").variables["BasePos"][name]["w"] = rot.w
$("Grundpositionen Kfz").variables["BasePos"][name]["speed"] = obj.targetSpeed
end

function setBasePos(obj, name, idx)
local pos = {}
local rot = {}
pos.x = $("Grundpositionen Kfz").variables["BasePos"][name]["x"]
pos.y = $("Grundpositionen Kfz").variables["BasePos"][name]["y"]
pos.z = $("Grundpositionen Kfz").variables["BasePos"][name]["z"]
obj.transformation.position = pos
rot.x = $("Grundpositionen Kfz").variables["BasePos"][name]["a"]
rot.y = $("Grundpositionen Kfz").variables["BasePos"][name]["b"]
rot.z = $("Grundpositionen Kfz").variables["BasePos"][name]["c"]
rot.w = $("Grundpositionen Kfz").variables["BasePos"][name]["w"]
obj.transformation.rotation = rot
obj.targetSpeed = $("Grundpositionen Kfz").variables["BasePos"][name]["speed"]
obj.variables["Fahrplanindex"] = idx 
obj.variables["Weichenindex"] = 1
end

und werden so aufgerufen:

 

Ich würde ganz gerne über das Selektionsfenster direkt in das Fenster rüberkommen, das die Objektvariablen und Schlagworte editiert und dort auch die Filterfunktion für den Namen der Variablen haben.

Gruß
  Andy

Anmerkung 2020-03-04 163224.jpg

Anmerkung 2020-03-04 163223.jpg

Posted (edited)
vor einer Stunde schrieb gmd:

Doppelclick auf ein wort selektiert das wort und nachfolgender drag nach rechts ohne mouse taste loszulassen selektiert das naechste wort

Jetzt habe ich es verstanden und gerade hier im Posting ausprobiert.
Kannte ich noch nicht. Ist wirklich praktisch.

vor einer Stunde schrieb gmd:

nur wenn ich alle meine haltepunkte ueber eine generische funktion bediene

Das sehe ich eh als ratsam an. Darin liegt für mich der eigentliche Vorteil der neuen EV. Aber natürlich sind die Bedürfnisse da individuell verschieden.

 

Danke für dein schnelles Feedback auf meine Vorschläge.

 

vor 5 Minuten schrieb Andy:

Ich würde ganz gerne über das Selektionsfenster direkt in das Fenster rüberkommen, das die Objektvariablen und Schlagworte editiert und dort auch die Filterfunktion für den Namen der Variablen haben.

Ja, das würde mir auch gut gefallen. (y)

 

Edited by Goetz
Posted

Ein Wort gerade noch über die Konzeptbeschreibung von eben:
Das ist jetzt erst einmal nur eine Grundidee, die hier auch noch sehr schwammig beschrieben ist. Sie soll nur als Denkanstoß dienen, wie man es machen könnte.
Kurz: Wenn mit Tabellen gearbeitet wird, ist eine Grundstellung vonnöten, sonst wird man kirre.
Das Konzept muß auch so aussehen, dass die Grundstellung dann zu jeder Zeit gedrückt werden kann. Da dürfen keine abhängigen Stellungen übrig bleiben.
Eine ordentliche Vorfahrtsregelung und die Verhinderung von Crashs ist damit in keiner Weise gegeben. Man muß Bahnübergänge und andere Nebeneffekte bei der Kurswahl mit einplanen. Wenn ich den Boden da festgetreten habe, mache ich mal ein Beispiel in den Anleitungen. Hier bin ich schon wieder offtopic...

Gruß
  Andy

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...