Alle erstellten Inhalte von gmd
-
Ampel und kontakt in Lua
Danke, sehr interessant und hilfreich. Ist eine eigene riesige thematik. Ich habe einen etws anderen ansatz, aber deine konfliktbehandlung fuer einzelne situationen ist auch fuer mich hilfreich. Der hauptunterschied ist, dass in meiner welt die fahrzeuge immer vordefinierte ziele und routen haben, nicht unbedingt im "kreis" fahren oder zusammenhaengende strecken haben. Ich verwende depots fuer zufallssteuerung und zielauswahl, jedoch ist dein ansatz fuer konfliktbehandlung sehr gut. Nochmals danke fuer den hinweis. Gruss Gmd
-
Ampel und kontakt in Lua
Mal noch eine folgefrage bezueglich ampel und blinkersteuerung. Setzt ihr im wesentlichen kontakte um signale und blinker zu triggern ? Ich bin gerade dabei eine verallgemeinerten steuerung fuer streckenfahrten mit ampelkreuzungen und abzweigungen zu realisieren, die man dann beliebig einsetzen kann. Braucht eine menge kontakte .. Ich hatte mal versucht in meinem programm die spuren auszulesen und richtungen und kreuzungen zu erkennen, habe das aber zunaechst zureckgestellt und will die gleise erst fertig machen. Das studio weiss wenn ein fahrzeug abbiegen soll und koennte blinker setzen oder auch einen event erzeugen. Ich wuesste sonst keine loesung zu erkennen ob ein fahrzeug abbiegen wird oder nicht, ausser durch meine kontakt definitionen. Gruss Gmd
-
Ampel und kontakt in Lua
Vielen Dank.. Ich hatte das versucht, bin aber irgendwie gescheitert, hence the question. Danke das hilft. Gruss Gmd
-
Ampel und kontakt in Lua
Hallo, Ich kann mit Lua mit object.trackContact (fuer gleiskontakt) auf die eigenschaften des kontakts zugreifen, weiss aber nicht wie diese heissen. Wo finde ich die info ? Ich will ampel und kontakt in Lua verbinden und den kontakt konfigurieren in abhaengigkeit von der ampelstellung, aber nur mit Lua, nicht manuell. Gruss gmd
-
Fahrlicht fuer Fahrzeuge
Danke Gruss Gmd
-
Fahrlicht fuer Fahrzeuge
Wo ist das dokumentiert ? gruss Gmd Edit: Found it ... Kann ich das mit Lua aendern ?
-
Fahrlicht fuer Fahrzeuge
Hallo, ich poste das mal hier, nicht sicher ob das besser zu features oder anders gehoert. Mit den neuen schaltern fuer die modelle ist das Fahrlicht bei fahrzeugen automatisch and die tageszeit gebunden, das finde ich ausgesprochen ungluecklich, wenn die alte animation abgeschafft werden soll. Fahrlicht is auch bei tag in verschiedenen situationen erforderlich und moderne fahrzeuge haben ohnehin running lights or auch daylight running lights genannt. Wenn das licht bei nacht automatisch angeht ist das ja ok, heutzutage hat jedes auto automatisches fahrlicht bei dunkelheit, aber man sollte das auch bei tag einschalten koennen. Gruss Gmd
-
MBS Companion V2
Hallo, hier mal wieder ein update. Anbei eine erste version der demo fuer das "Vehicle Origin" modul. Es passiert noch nicht viel, aber die struktur der scripte ist jetzt gut erkennbar und noch ueberschaubar. Die einzige funktionalitaet, die derzeit implementiert ist, ist das setzen von release optionen fuer die fahrzeuge vom depot ueber schalter. Der code ist generic und wird fuer alle VO module verwendet, egal wie viele. Die steuerung erfolgt ueber namen in den definitionstabellen. In der demo vergebe ich die namen manuell, und auch die tabellen sind manuell erstellt. Spaeter wird mein programm solche tabellen generieren und die objekte(hauptsaechlich kontakte) entsprechend automatisch benennen. Ich verwende Ereignismodule zur strukturierung der scripte. Fuer das VO modul gibt es ein Ereignismodul VO, in dem nur die generischen scripte liegen. Hier werden keine variablen abgelegt, jedenfalls keine die spezielle instanz daten enthalten. Die anwendungen des VO moduls sind dann VO_1, VO_2 usw benannt, koennen aber auch anders heissen, ist nur eine tabelleneintrag. Nachfolgend werde ich jetzt die tatsechlichen funktionen einrichten mit 3 instanzen des VO Moduls. Und dann das naechste modul "Segmentierte Strecke" mit einbinden. Ich habe das dokumentationsdokument weiter ergaenzt. Ich bin mal gespannt wieviel tausend zeilen script das studio verkrafted. Bisher ist noch keine kollisionskontrolle vorgesehen, wird interessant werden, wenn aus allen loechern die fahrzeuge ausgespuckt werden und wieder verschwinden . Hier ist die content ID 5CE8FC5C-BD36-48C3-9B23-566BF925A002 , ist als entwurf geladen. Gruss Gmd
-
MBS Companion V2
Hallo, habe die definitionsphase fuer das module "Vehicle Origin" soweit abgeschlossen. Anbei der derzeitige stand der dokumentation und scripte. Jetzt kommt das design der demo anlage und die verwwendung (test) der scripte. Werde zwei module einrichten, dann sieht man gleich wie die scripte mehrfach verwendbar sind. Diese demo ist dann auch fuer mich die basis fuer das design nachfolgender module. Bei meinem gedaechtnis brauche is so etwas inzwischen. Die RoLa ist das beispiel der kombination mehrerer teilmodule zu einer groesseren anwendung. Wenn das abgeschlossen ist gehe ich wieder an die gleise und baue aehnliche generische module fuer gleise. Gruss Gmd Lua_Rola_Dokumentation.pdf
-
MBS Companion V2
Hallo, heute eine weitere version der dokumentation mit einem grossen teil der scripte fuer die erste komponente der RoLa "Vehicle Origin". Noch nicht ganz vollstaendig, ohne die tatsaechliche anbindung an ein MBS modul, das kommt noch mit einer demo anlage, wenn ich dann tatsaechlich die scripte teste. Ich habe die dokumentation inclusive der scripte in word geschrieben. Nachdem ich die tests mit RoLa gemacht habe, bin ich einigermassen fliessend in Lua und kann die scripte schreiben ohne syntax check. Teilweise copy/paste, teilweise neue strukturierung, jedenfalls eine etwas bessere ordnung als in meinen testscripts. Jede der abstrahierten komponenten wird dann separat getestet und zum schluss werden die einzelteile zur RoLa zusammegefuegt. Die scripte dienen dazu die teilweise cryptischen zugriffe auf tabellen in leichter lesbare, "sprechende" begriffe zu verpacken und einfacher ablaeufe zusammenzustellen. Zugriffe auf 3 oder 4 dimensionale listen, koennen leicht unuebersichtlich werden, wenn man keine spezifischen zugriffsmethoden baut. Bitte beachten: Die scripte sind noch nicht getestet. Wenn der entwurf vollstaendig ist, dann kann ich die scripte so wie sie sind vom word text in VS Code kopieren und syntax pruefen, und dann nach MBS in ein globales script uebernehmen und das anwendungsbeispiel zusammenbauen. Gruss Gmd Edit: Updated the pdf with a revison, added scripts and a depot return definition, scripts not completely tested, but partially syntax checked ! It has proven useful to rethink the functions and start fresh top down, including documentation. Some generic scripts will be added as an appendix. Next step is to create the event module and event handlers in the studio for a demo. Lua_Rola_Dokumentation.pdf
-
MBS Companion V2
Hallo, unser sommer geht langsam zu ende und die grosse hitze in Perth ist langsam vorbei. Wir sind immer noch in unserem sommerdomizil, fahren aber naechste woche wieder nach hause. Ich dachte ich schreibe mal wieder einen update, ueber das was ich in der letzten zeit mit dem MBS gemacht habe. Ich habe ein pause von der codierung fuer meine gleissteuerung eingelegt, um die verhaeltnisse mit strassenfahrzeugen besser kennenzulernen und moegliche parallelen zu erkennen. Ich habe mir drei scenarien ueberlegt, eine RoLa, eine grosse spedition und einen grossen bahnhofsparkplatz, die ich automatisieren moechte mit weitestgehend wiederverwendbaren scripten. Das bauen von umfangreichen, virtuellen strecken mit vielen verzweigung kann muehsam sein, aber nach einer weile bekommt man uebung. Ich habe viele einzelne funktionen implementiert und stueck fuer stueck gelernt, wie ich abstrahierte funktionen mit Lua implementieren kann. Die verallgemeinerung ist aber noch nicht vollstaendig abgeschlossen, jetz folgt eine "Ordnungsphase" die einzelnen funktionen in leicht wiederverwendbare einheiten zu verpacken. Dazu habe ich angefangen eine dokumentation zu schreiben mit der RoLa als beispiel, die den entwurfsprozess mehr top down formalisiert und nun eine klare richtlinie wird, wie ich die scripte gruppiere und parametrisiere um die moeglichst beste wiederverwendbarkeit zu erreichen. Anbei ist das dokument, welches erweitert wird und schliessendlich die gesamte beschreibung der verwendung der scripte enthaelt. Das dokument ist in English aber es gibt ja uebersetzer. Ich schreibe lieber in English. Ich bin nicht versiert in deutscher IT sprache. Gruss Gmd Lua_Rola_Dokumentation.pdf
-
Lua Editor - zeilenweises Auskommentieren von Codezeilen mittels Tastenkombinationen
Hallo, Ich verwende keine kommentare um code zu deaktivieren, auch wenn ich damit microsekunden verschenke. Ich vermisse mehr #region #endregion um code segmente zu kollabieren, da meine skripte sehr umfangreich sind Fuer debug und test verwende ich $("Ereignisse").variables["Debug"] = true $("Ereignisse").variables["ErrorPrint"] = true function IsPrintError () if $("Ereignisse").variables["ErrorPrint"] == true then return true else return false end end function IsDebug () if $("Ereignisse").variables["Debug"] == true then return true else return false end end -- use the debug variable instead of print in the main script (print not implemented yet in MBS) function debugMessage(msg) if IsDebug then $("Ereignisse").variables["DebugOutput"] = msg -- Store only the last message will be displayed in the Eventlist end end Man kann das auch noch differenzieren fuer teile von skitpten mit anderen oder mehrfach bedingungen. Das finde ich wesentlich flexibler. Am editor nerven mich andere dinge: zum beispiel dass der curser mit down nicht and das jeweilige ende der zeile springt, double click drag markiert nicht wortweise sondern nur das erste wort, usw. Verglichen mit einem richtigen editor ist der studio editor ein absolutes spielzeug. Viele teile meine scriptes schreibe ich in Visual Studio Code mit Lua by sumneko. Ich verwende den editor nicht um kleinkram zu testen (zuviel copy und paste), ich konsolidiere meine scripte hier. Da ich nur wenige event module verwende (meist nur globale scripte) is das copy und paste akzeptabel. Trotzdem waere es schoen einen externen editor anschliessen zu koennen wie bei EEP, eines der wenigen features in EEP die ich ok finde. VS Code ist frei, so ist die Lua extension und kann Windows: Shift + Alt + A Gruss Gmd Edit: Posted in the wrong thread
-
Fahrstrassen einrichten per Lua
.... und damit man ein performance problem umgeht. Im bild unten geht das anlegen einer langen fahrstrasse in den minutenbereich. Nicht in allen situationen sind fahrstrassen eine erleichterung. Man kann sie auch fuer strassenfahrzeuge anlegen, aber zumindest fuer meine anwendungen ist das einfach nicht sinnvoll. Sobald eine anlage mehr "Bewegung" hat kommt man schnell an verwaltbare grenzen. Hier ein beispiel and dem ich derzeit meine scriptkomponenten (erstellt fuer die RoLa und Spedition) teste und varianten einbaue. Fuer diese situation, fahrstrassen vor dem betrieb einzurichten ist nicht das was man machen will. Die zieldefinition ist hier voellig ausreichend bis auf die performance. Ich hangele mich von kontakt zu kontakt und das macht die kalkulation tragbar, allerdings haengt das auch stark davon ab wieviele fahrzeuge in solchen situationen unterwegs sind. Hier im beispiel parkplatz ist das ziel typisch zwischen 5 und 10 fahrzeuge gleichzeitig ein- und ausfahren zu lassen, mit ein- und ausparken. Das ziel zumindest meiner scripte ist es, so viel wie moeglich bewegung und abwechslung auf einer anlage zu schaffen, die dann ueber entsprechende kamerafuehrung projektiert wird. Es macht also durchaus sinn eine zieldefinition "aufzuheben", was ja einer "einfachen" fahrstrasse entspricht (ohne weichen). Abgespeicherte zieldefinitionen abzurufen macht das alles sehr viel effizienter. Wenn eine zieldefinition ungueltig wird dann bleibt das fahrzeug halt stehen. Ich wuerde bei anlagen start eine initialisierung durchfuehren, die wichtige, lange zieldefinitionen einrichtet. Wuensche wie, "Bessere Ubersicht fuer Fahrstrassen" etc. zeigen die grenzen der manuellen verwaltbarkeit. Ich weiss, ich bin mal wieder ein "Einzelfall" aber auch andere werden mehr und mehr ueber automatisierung und "script bibliotheken" nachdenken. Und noch ein weiterer gedanke: Ich habe auch kein problem 100 Euro im jahr fuer eine "Expert" version zu zahlen, die dann vielleicht nur auf einem etwas anspruchsvolleren rechner laeuft. Die hardware wird immer schneller und billiger. Gruss Gmd
-
Mehrfache Wiederholung
Ich antworte mal ohne dein beispiel anzuschauen. Ich wuerde keinen timer verwenden, der loest event aus auch wenn nichts zu tun ist und loest nicht gleich aus wenn was tun ist, jenachdem wie oft er eingestellt ist. In meinen augen die bessere loesung ist, entweder einfahr- und ausfahrgleisen, oder kontakten das gleiche schlagwort zuweisen und einen event verwenden, der bei diesem schlagwort entweder fuer gleis oder kontakt ausloest. Damit weisst du ganz genau dass es lohnt etwas zu tun, und wenn du jetzt noch das gleis oder kontakt benennst und abfragst weist du auch welches gleis betroffen ist. Mit diesem konzept vermeide ich timer generell. gruss Gmd
-
Fahrzeug aus katalog nach depot
Hallo, Ueber die schnittstelle habe ich ja editor.createEntity, was in lua nicht existiert. Ich habe mehrfach die anwendung fahrzeuge aus einem depot zu holen, habe aber nicht die geringste lust fuer alle diese situationen die fahrzeuge manuell zu plazieren und in ein oder viele depots zu schicken. Wuerde gerne in Lua fahrzeuge aus dem katalog direct ins depot schicken. Das depot kann ja einen fahrzeugverbund verwalten, das wuerde ich nicht mit einbeziehen. Einzelne fahrzeuge mit antrieb sind ausreichend und ist einfach zu realisieren., inclusive setzen der ausfahrgeschwindigkeit. Ich kann das mit meinem programm erledigen, aber die Lua scripte die ich stueck fuer stueck erstelle und auch plane zu veroeffentlichen, wuerden von einer automatischen fahrzeugbereitstellung profitieren. Verbund konfiguration koennte ueber "Meine modelle" abgewickelt werden, aber das nur um es zu erwaehnen. Gruss Gmd
-
Ausloesendes Schlagwort abfragen
siehe oben -- empty, check for keyword if v == keyword gruss Gmd
-
Ausloesendes Schlagwort abfragen
for k, v in pairs(contact.variables) do print("VAR: " .. tostring(k) .. " = " .. tostring(v)) if v == keyword then print("VAR is keyword") end end Zum beispiel, empty v test fuer keyword. Ich nutze das jetzt um keywords der beteiligten objekte abzufragen. Gruss Gmd
-
Ausloesendes Schlagwort abfragen
Ha, und ich koennte schwoeren dass ich das probiert habe .. Ist aber logisch, danke fuers finden. Gruss Gmd
-
Ausloesendes Schlagwort abfragen
Wen es interessiert - hier eine loesung die ich fuer mich ausgetueftelt habe .. Ich verwende schlagworte fuer eine serie von objekten, kennzeichne aber einige mit zusaetzlichen merkmalen wie "_Start" oder "_Ende" usw. also zum Beispiel XYZ und XYZ_Start wenn nun XYZ ausloest (weil ich alle XYZ haben will) aber fuer _Start etwas anderes tun will dann benutze ich function GetStartKeywordPrefix(contact) for k, v in pairs(contact.variables) do local prefix = string.match(k, "^(.-)_Start$") if prefix then return prefix end end return nil -- Not found end und bekomme das ausloesende schlagwort und gleichzeitig die information _Start. (_Start is bei mir immer nur einmal vorhanden) Man kann natuerlich auch alle moeglichen anderen variationen verwenden und es muss auch nicht das ausloesende schlagwort sein. Damit lassen sich auch kaskaden von filtern bauen. Auf diese art und weise muss ich nirgendwo das schlagwort explizit angeben. Ich kann dann einen event "Alle Kontakte" oder was auch immer verwenden und trotzdem auf das schlagwort abfragen ohne durch meine gesamte liste durchgehen zu muessen. Gruss Gmd Nachtrag: Ich habe diese funktion auch fuer variable suffixes, die auch Lua special characters enthalten koennen. function GetKeywordPrefixBySuffix(contact, suffix) -- Escape the suffix if needed for pattern matching local escapedSuffix = suffix:gsub("([%^%$%(%)%%%.%[%]%*%+%-%?])", "%%%1") local pattern = "^(.-)" .. escapedSuffix .. "$" for k, _ in pairs(contact.variables) do local prefix = string.match(k, pattern) if prefix then return prefix end end return nil end
-
Ausloesendes Schlagwort abfragen
Ja werde ich tun, ist aber nicht so einfach ohne das entsprechende beispiel fertig zu haben. Hier eine beschreibung der zielsetzung. Stell dir folgende anwendungen vor: Ein Taxiplatz an dem fahrzeuge ein und ausfahren an halteplaetzen Busse halten in reihe an einer umsteigestation Die Einfahrt fuer LKW in meine RoLa Das Auffahren von Fahrrzeugen auf die wagen .. Eine warteschlange von personen vor einem point of interest und was einem noch so alles einfaellt mit einer "segmentierten Einfahrt" mit oder ohne ampelsteuerung. Das alles wird mit dem gleichen script reaslisiert und definitionstablellen mit minimalen (keinen) eintraegen von "Expliziten" werten. Geht alles dynamisch und kann auf verschiedene events verteilt werden oder auch nicht. Grund: Man muss nicht immer wieder ueber die gleiche logik nachdenken oder die gleichen fehler beseitigen und testen. Es ist wie eine library die man einfach verwendet. Die programmierung erfolgt auf der "Meta" ebene und nicht auf der logischen ebene der evenets, dort laeuft das programm nur ab. Alles ist in parametrisierte funktionen gepackt. Man kann die definitionstabellen von hand erstellen und in Lua bleiben, mein ziel ist es auch diese tabllen von meinem programm zu generieren. Wenn ich meine RoLa fertig habe mit den verallgemeinerten scripten dann werde ich dir den entwurf zur durchsicht geben. Dann wird das klarer und bedarf nicht so vieler worte. Gruss Gmd
-
Ausloesendes Schlagwort abfragen
Easy koennte fuer dich auch interessant sein. for k, v in pairs(contact.variables) do print("VAR: " .. tostring(k) .. " = " .. tostring(v)) end probier es aus .. das ist ein teil der miete Warum bin ich eigentlich nicht frueher darauf gekommen !! gruss Gmd Edit: noch ein tip hier weise ich ein keyword zu entryObject.variables[keywordText.."_Start"] = keyword hier frage ich ab contact.variables[keywordText.."_Start"] == keyword das funktioniert auch so weit .. aber wenn ich versuche diese abfrage in eine funktion zu legen wie hier function IsStartKontakt(keyword, kontakt) if kontakt.variables[keyword .. "_Start"] == keyword then return true else return false end end dann ist das immer false Diese funktion bringt true zurueck .. function IsStartKontakt(keyword, kontakt) if kontakt.variables[keyword .. "_Start"] then return true else return false end end Eine weitere coding falle
-
Ausloesendes Schlagwort abfragen
Ja das tue ich .. pflege eine liste aller schlagworte und gehe einfach alle durch zum entfernen und auch zum testen ob vorhanden. Man muss ziemlich viel umwege gehen um eine library von generischen funktionen aufzubauen. So scheint hier niemand zu denken. Gruss Gmd
-
Ausloesendes Schlagwort abfragen
sooo wrong . Gruss Gmd
-
Ausloesendes Schlagwort abfragen
Ja, aber in einem generischen script verwendest du keine "expliziten" werte. Gruss Gmd Edit: fuer contact und vehicle brauche ich auch keine expliziten referenzen und kann voellig allgemeine funktionen bauen, die unabhaengig vom kontaktname sind und muss nicht jedesmal wenn ich den aufruf verwende die parameter explizit einfuellen. Ich kann die verteilung auf ereignisse veraendern ohne jedesmal den code anfassen zu muessen. Ein weiteres problem ist, dass man nicht die schlagworte zu einem objekt bekommt ohne die namen zu kennen. Zumindest kenne ich keinen weg. Lua ist nicht sehr geeignet um auf der Meta ebene zu programmieren. Da muss man einige umwege gehen.
-
Ausloesendes Schlagwort abfragen
Hallo, Ereignis: Ein Gleiskontakt mit Schlagwort "XYZ" wird ausgeloest Ich habe contact und vehicle als variablen im script. Kann ich das schlagwort abfragen, welches ausgeloest hat ? Gruss Gmd