-
Gesamte Inhalte
3358 -
Benutzer seit
-
Letzter Besuch
Alle erstellten Inhalte von EASY
-
Lua Dokumentation speziell für MBS?
EASY antwortete auf ElFerrocarrileros Thema in Fragen zur Steuerung
Hallo @gmd, @Neo, in Deiner Version findet sich unter "Ereignisse"... 3.1 Event - OnStart Beschreibung: Das Ereignis OnStart wird aufgerufen, wenn das Layout gestartet wird. Beispiel: lua Copy code function layout:onStart() print("Layout gestartet.") end ________________________________________ 3.2 Event - OnStop Beschreibung: Das Ereignis OnStop wird aufgerufen, wenn das Layout gestoppt wird. Beispiel: lua Copy code function layout:onStop() print("Layout gestoppt.") end ________________________________________ 3.3 Event - OnObjectAdded Beschreibung: Das Ereignis wird aufgerufen, wenn ein Objekt dem Layout hinzugefügt wird. Beispiel: lua Copy code function layout:onObjectAdded(object) print("Objekt hinzugefügt: " .. object.name) end ________________________________________ 3.4 Event - OnObjectRemoved Beschreibung: Wird ausgelöst, wenn ein Objekt aus dem Layout entfernt wird. Beispiel: lua Copy code function layout:onObjectRemoved(object) print("Objekt entfernt: " .. object.name) end ... wenn ich die Funktionen versuche zu setzen ("Copy code"), gibt es eine Fehlermeldung, da diese Ereignisse eigentlich nicht existieren... ... woher stammen die Informationen für diese Ereignisse? (in der originalen .xml von Neo kann ich sie nicht finden...) (... oder habe ich etwas übersehen?) Gruß EASY -
Einige Fragen zum Modellbau
EASY antwortete auf Klartexters Thema in Modellbau mit externen Programmen
Hallo, bei dem Modell ist in der LOD1 ein Teil des Modells zur Seite verschoben. Das MBS berechnet den Schatten nach LOD1... LOD0... LOD1... Gruß EASY -
Hallo, ... es geht mir um das Fahrzeug, das als Eintrag im Depot erscheint, also vom Depot bei der Einfahrt als "führend" erkannt wird... denn dies kommt als solches wieder heraus (...ob da noch was dran hängt oder nicht weiß man im Vorfeld sowieso nicht ["Anhang" hängt mit der Ausfahrt einfach mit dran...]). Gruß EASY
-
Hallo, ... noch ein Vorschlag... Bei mir hat der Gleiskontakt das Schlagwort "GK Ladung" und die Ladung das Schlagwort "Wagenladung". Ich gehe über eine Wiederholung innerhalb des Fahrzeugverbundes und die (verknüpfte) Ladung... ... so ist es ein Ereignis und auch für mehrere Züge / Zugstrecken gültig... 2025-01-02-Wagenladung.mbp Gruß EASY
-
Hallo, ... es braucht keine Gruppe, Duplizieren (mehfach) geht auch mit mehreren markierten Objekten (Wagen und Ladung), dabei wird auch die Verknüpfung (Ladung zu Wagen) mit übertragen. Gruß EASY
-
Hallo @Little, lua im MBS ist keine "Vollversion" sondern von den Möglichkeiten her auf das MBS abgestimmt. Es erlaubt keinen Zugriff auf das Systen / Systemkomponenten. Somit ist eine direkte Kommunikation mit dem Stream Deck nicht möglich. (Theoretisch müßte es über ein "Kommunikationsprogramm" gehen, das die Schnittstelle vom MBS mit einbindet.) Gruß EASY
-
Hallo, ich wünsche Euch alles Gute und Gesundheit im neuen Jahr. Anbei noch eine kleine Spielerei zum Jahreswechsel (einfach auf "Start" klicken...) (... und vielleicht läßt es sich ja nicht nur auf den Jahreswechsel beziehen...) Jahreswechsel.mbp (MBS V9) Gruß EASY
-
Hallo @Neo, Mit V9 kann man die Geschwindigkeit eines Fahrzeugs im Depot auslesen (depot.entries[0].speed). Wenn ich einen Waggon mit einer gewissen Geschwindigkeit in ein Depot rollen lasse, kommt er mit dieser Geschwindigkeit auch wieder aus dem Depot, allerdings ergibt die Abfrage von .speed den Wert 0. Da der Waggon ja "trotzdem" wissen muß, das er das Depot mit einer gewissen Geschwindigkeit verlassen soll, wäre es möglich auf diese Information zuzugreifen? (Dann wüßte man schon im Vorfeld, ob der Wagon von sich aus aus dem Depot rollt.). Schön wäre in diesem Zusammenhang auch noch die Information, ob es sich beim Fahrzeug im Depot um ein aktives oder passives Fahrzeug handelt (:hasEngine). Gruß EASY
-
Straßenübergangskanten sind zu sehen
EASY antwortete auf Glubschis Thema in Modellbau mit externen Programmen
Hallo @Glubschi, Bei deiner Texturzuordnung hast du unterschiedliche Skalierungen der einzelnen Flächen... .. so würde eine Texturzuordnung aussehen, wenn bei der Texturzuordnung alle Flächen die gleiche Skalierung haben (die max. Skalierung wird bestimmt durch die Breite der kleinsten Fläche der Textur [grün])... Noch als Anmerkung: Deine Textur ist mit 1024x1024 Pixel viel zu groß für das was dargestellt werden soll (außerdem kannst du blau und grün innerhalb einer Fläche plazieren und brachst keine zwei Flächen je Farbe). Und so würde eine Texturzuordnung aussehen mit einer dem Modell angepassten Textur (256x64 Pixel) Im MBS sieht es so aus (unscharf, da Blick aus großer Entfernung...) links -> deine Texturzuordnung (Streifen) mitte -> Texturzuordnung gleicher Skalierung (keine Streifen) rechts -> angepasste Textur (keine Streifen) Gruß EASY -
Plugin "Gleis-Setz-Tools" / "Track-Set-Tools" de/en
EASY antwortete auf EASYs Thema in Erweiterungen (Plugins)
Hallo, Wenn ich @Neo an anderer Stelle richtig verstanden habe hat sich mit den Spuren von Gleisen in V9 etwas in der Definition geändert (bitte um Berichtigung wenn ich da etwas nicht richtig verstanden habe...), so daß es durchaus sein kann, das das Plugin in V9 nicht mehr richtig funktioniert... Gruß EASY -
Straßenübergangskanten sind zu sehen
EASY antwortete auf Glubschis Thema in Modellbau mit externen Programmen
Hallo @Glubschi, packe doch einmal die .blend und die Texturdatei(en) in eine .zip und stelle sie hier mit ein, dann hat man Dein Original um nachzusehen woran es liegen könnte. Gruß EASY -
Straßenübergangskanten sind zu sehen
EASY antwortete auf Glubschis Thema in Modellbau mit externen Programmen
Hallo, Bist Du Dir da sicher? Auf diesem Bild... ... ist zu erkennen, daß Deine Texturzuordnung schon in den Randbereich der Farbfläche kommt in dem die Kontur unscharf (Farbübergang) wird... Gruß EASY -
Hallo, ich habe das Skript noch etwas erweitert und noch eine Funktion hinzugefügt, die dem Problem mit den Umlauten entgegenwirkt, außerdem regelt es ein Problem mit langen Fahrzeugnamen. Ich wollte die Variable für eine Zusatzanzeige etwas universeller gestalten so daß nicht das Skript den Variablennamen vorgibt. Die Beschreibung was ich mir gedacht habe, findet sich in den Kommentaren... P.S. Ich habe dabei das Prinzip mit der Liste von @Goetz übernommen... --[[ Wichtig: Für das Textfeld muß eine Monospace-Schrift verwendet werden! (Schrift mit konstanter Breite für alle Zeichen) z.B: Consolas, MS Gothic Info: Das Textfeld ist in seiner max. Breite beschränkt. Wenn eine Zeile zu lang ist, findet ein Übertrag in eine weitere Zeile statt. Hinweis: Die max. Länge ist abhängig von der verwendeten Schrift! Hinweis: die max. Größe des Textfeldes ist 640x640 mm in H0 (1:87) -> 55,68x55.68 m (1:1) somit ist die max. Anzahl von Zeichen je Zeile und von Zeilen begrenzt. z.B. Schrift Consolas -> max. 58 Zeichen je Zeile (-1 Zeichen für Zeilenumbruch -> 57 Zeichen) -> max. 27 Zeilen z.B. Schrift MS Gothic -> max. 64 Zeichen je Zeile (-1 Zeichen für Zeilenumbruch -> 63 Zeichen) -> max. 31 Zeilen --]] --[[ -- Depotinhalt in ein Text umwandeln--- Das Textfeld ist in 3 Spalten unterteilt. Fortlaufende Nummer|Fahrzeugname|Zusatzinformation Variablen für den Aufruf: "Depot" [Objekt] -> Depot das ausgelesen werden soll. "Zeilen" [Zahl] -> Anzahl der Zeilen, die maximal angezeigt werden sollen. (mindestens 1) "nName" [Zahl] -> Anzahl der Zeichen für den Fahrzeugnamen. (mindestens 15) "nInfo" [Zahl] -> Anzahl der Zeichen für Zusatzinformation. (mindestens 3) "Info_Titel" [String] -> Überschrift für Zusatzinformation. "Info_Variable" [String] -> Name der Variablen aus der die Zusatzinformation ausgelesen werden soll. [Objektvariable des Fahrteugs] Beispielaufruf: $("").text=DepotInhalt($("Depot 1a"),10,25,10,"Typ","Zugtyp") Hinweis: Wenn keine Zusatzinformationen vorhanden sind oder deren Anzeige nicht gewünscht ist, dann können die letzten 3 Parameter weggelassen werden. $("").text=DepotInhalt($("Depot 1a"),10,25) (In diesem Fall ist die letzte Spalte " ") Die Überschreitung von Grenzwerten wird korrigiert. --]] function DepotInhalt(Depot,Zeilen,nName,nInfo,Info_Titel,Info_Variable) local ZeichenMax=57 -- Max. Anzahl Zeichen je Zeile * (Schrift Consolas) [MS Gothic 63] local ZeilenMax=27 -- Max. Anzahl Zeilen * (Schrift Consolas) [MS Gothic 31] if Zeilen==nil or Zeilen<1 then Zeilen=1 end -- Mindestens eine Zeile -- Höchstens ZeilenMax-2 (für Titel und Übertrag Anzeige) if Zeilen>ZeilenMax-2 then Zeilen=ZeilenMax-2 end if nName==nil or nName<15 then nName=15 end -- Länge Namen mindestens 15 Zeichen if nInfo==nil or nInfo<3 then nInfo=3 end -- Länge Info mindestens 3 Zeichen Info_Titel=Info_Titel or " " -- Info_Titel gesetzt? Info_Variable=Info_Variable or " " -- Info_Variable gesetzt? local z=ZeichenMax-4 --(Erste Spalte (Zahl 2-stellig) + 2 x Trennungszeichen "|") if nInfo>z//2 then nInfo=z//2 end -- nInfo höchstens Mitte z=z-nInfo if nName>z then nName=z end -- Restliche Zeichen für Name local Anzahl=Depot.count -- Anzahl Einträge im Depot local Format_Zeile1 = "%2s>%-"..nName.."s|%-"..nInfo.."s" -- Formatierung füe Titel local Format_Zeile = "%2s|%-"..nName.."s|%-"..nInfo.."s" -- Formatierung füe Zeile local Format_Zusatz = "..%2d weitere.." -- Formatierung für Überlauf -- 1. Zeile erzeugen (Überschrift Liste) local Name=utf8_formatName(nName,Depot.name,"..") -- Depotname auslesen (Name evtl. kürzen) local Info=utf8_formatName(nInfo,Info_Titel,"..") -- Titel für Info auslesen (Name evtl. kürzen) local Liste={Format_Zeile1:format(Anzahl, Name, Info)} -- Eintrag in Liste if Anzahl > 0 then -- Depot nicht leer? -- Erster Eintrag manuell auslesen (wegen Index = 0) Name=utf8_formatName(nName,Depot.entries[0].name,"..") -- Name evtl. kürzen -- Zusatzinformation auslesen wenn Variable existiert sonst " " local Info=Depot.entries[k].variables[Info_Variable] or " " Info=utf8_formatName(nInfo,Info,"..") -- Name evtl. kürzen table.insert(Liste, Format_Zeile:format(1, Name, Info)) -- Eintrag in Liste for k, v in ipairs(Depot.entries) do if Anzahl > Zeilen and k > Zeilen-1 then -- Max. Anzahl Zeilen überschritten? local text=utf8_formatName(nName,Format_Zusatz:format(Anzahl-Zeilen),"..") -- Name evtl. kürzen table.insert(Liste, Format_Zeile:format("++",text, "")) -- Eintrag in Liste break -- Abbruch der Schleife else Name = utf8_formatName(nName,v.name,"..") -- Name evtl. kürzen -- Zusatzinformation auslesen wenn Variable existiert sonst " " Info = Depot.entries[k].variables[Info_Variable] or " " Info=utf8_formatName(nInfo,Info,"..")-- Name evtl. kürzen table.insert(Liste, Format_Zeile:format(k+1, Name, Info)) -- Eintrag in Liste end end return table.concat(Liste, "\n") --Rückgabe der Tabelle mit Seperator Zeilenumbruch else -- Depot ist leer! local text=utf8_formatName(nName,"Depot ist leer","..") -- Name evtl. kürzen table.insert(Liste, Format_Zeile:format("--",text, "")) -- Eintrag in Liste return table.concat(Liste, "\n") --Rückgabe der Tabelle mit Seperator Zeilenumbruch end end --================================================================================ -- Name formatieren auf einheitliche Länge -- maxz = max. Anzahl von Zeichen Zeile (muß positive Integer >=1 sein) -- s = String -- rz = Zeichen für Reststellen, wenn String zu lang -- (kann aus mehreren Zeichen bestehen z.B. "..") (Standard -> "") -- * Durch die Kürzung mit rz muß xnmax min. xr+1 sein -- --> maxz min. = xr+1 -- für fehlende Parameter werden Standardwerte gesetzt -- z.B. bei utf8_formatName (maxz,s) für rz="", rz="" -- Ausgabestring hat die Länge=maxz: Ausgabestring = s -- Ausgabestring hat die Länge<maxz: Ausgabestring = s+" "(x-mal) (" "(x-mal) bis Länge=maxz) -- Ausgabestring hat die Länge>maxz: Ausgabestring = s(gekürzt)+rz (s(gekürzt) bis Länge=maxz - Länge rz) function utf8_formatName(maxz,s,rz) if type(s) ~= 'string' then return "s kein String" end -- s ist kein String oder nil if type(rz) ~= 'string' then rz=nil rz=rz or "" end -- rz nicht vorhanden oder rz kein String -> rz="" if math.type(maxz)~="integer" then return "maxz Integer!" end -- maxz nicht vorhanden oder nicht Integer local xn=utf8.len(s) -- Länge String local xr=utf8.len(rz) -- Länge Restzeichen local xnmax=maxz --> max. Zeichen für String * local dx=xr+1 --* if maxz<dx then -- max. Zeilenlänge ist zu klein! * return "maxz>="..dx.."!" end local s1="" -- Ausgabestring if xn>xnmax then -- String ist zu lang? local b2=utf8.offset(s,xnmax-xr) -- Byte-Position Zeichen nnmax-xr local s1=utf8.char(utf8.codepoint(s, 1, b2))..rz -- String kürzen + rz return s1 elseif xn==xnmax then -- String hat richtige Länge return s else -- String ist zu kurz xl=xnmax-xn -- Anzahl "_" Ende String hinzufügen bis Länge=maxz s1=s..string.rep(" ",xl) -- Ausgabestring bilden return s1 end end --================================================================================ Beispielaufrufe... $("TF Depot 1c").text=DepotInhalt($("Depot 1c"),10,25,10,"Typ","Zugtyp") ... ... das Depot hat 3 Einträge und es sollen max. 10 Einträge angezeigt werden und die Fahrzeuge haben als Zusatzinfo die Variable "Zugtyp"... $("TF Depot 1a").text=DepotInhalt($("Depot 1a"),17,30) ... ... das Depot hat 35 Einträge davon sollen max. 17 angezeigt werden Einträge und die Fahrzeuge haben kein Zusatzinfo... $("TF Depot 1a").text=DepotInhalt($("Depot 1a"),35,30) ... ... das Depot hat 35 Einträge es sollen alle angezeigt werden und die Fahrzeuge haben kein Zusatzinfo... ... bedingt durch die maximale Größe des Textfeldes können aber nur 25 davon angezeigt werden... ... und abschließend gibt es noch das... Gruß EASY
-
Hallo, Nachtrag: In V8.5 funktioniert es noch, daß man auch das GBS Signal über das Steuerungsfenster umschalten kann. Da muß sich mit V9 etwas geändert haben... Gruß EASY
-
Hallo, ... aber man kann in dieser Konstellation im Steuerungsfenster das GBS Signal nicht umschalten... ... darum geht es in der ursprünglichen Fragestellung. Gruß EASY
-
Hallo, ... noch eine kleine Ergänzung für die Ausgabe... --[[ Hinweis: Für das Textfeld muß eine Monospace-Schrift verwendet werden! z.B: MS-Gothic, Consolas Die Formatierung des Textfeldes sind 3 Spalten Fortlaufende Nummer, Fahrzeugname, Geschwindigkeit des Fahrzeugs Die Breite der mittleren Spalte wird durch den längsten Namen festgelegt --]] local depot=$("Depot 1b") local n=depot.count -- Anzahl Depoteinträge local text="" -- Hilfsvariable für Text if n>0 then -- Depot ist nicht leer? local nz=0 -- Längsten Namen suchen (für Spaltenbreite) for i=0,n-1 do local nz1=utf8.len(depot.entries[i].name) if nz1>nz then nz=nz1 end end for i=0,n-1 do -- Depotliste durchgehen -- Nr., Fahrzeugname und Geschwindigkeit auslesen local name=depot.entries[i].name local v=depot.entries[i].speed local ts=string.format("%2s %s%ss %3s km/h",i,"%",-nz,v)-- Spaltenformatierung text=text..string.format(ts,name) -- Text um Eintrag erweitern if i<n-1 then -- nicht letzte Zeile? text=text.."\n" -- Zeilenumbruch end end else -- Depot ist leer! text="Depot ist leer" end $("Textfeld Depot 1b").text=text -- Text in das Textfeld schreiben ... sieht dann so aus... Gruß EASY
-
Hallo, ... Du kannst Dich weiterhin in der Karibik ausruhen... die Definition der Animation stimmt (soweit man sehen kann). ... was man allerdings auch sehen kann, daß der Animationsanfang schon auf dem Vorschaubild in V9 nicht stimmt... Gruß EASY
-
Hallo, ... kein Problem, dafür wieder ein Wort gelernt... Gruß EASY
-
Hallo, Hallo @Roter Brummer, bei mir sieht das jetzt so aus. Gruß Jürgen Startpunkt der Animation V8.5... und die erste Drehung ist im Uhrzeigersinn ... Startpunkt der Animation V9... und die erste Drehung ist entgegen dem Uhrzeigersinn Das Modell ist von @Franz, der nicht mehr aktiv ist. So wäre die Frage am @Neo ob Du da eine Möglichkeit der Korrektur siehst? ... ist hoffe das... Gruß EASY
-
Einige Fragen zum Modellbau
EASY antwortete auf Klartexters Thema in Modellbau mit externen Programmen
Hallo, ... habe ich schon einmal ausprobiert und nur einer Variante eine _Coustom mit gegeben. Bei mir hat es funktioniert und es wurde auch nur in der einen Variante angezeigt, daß es eine Tauschtextur gibt... und prinzipiell müssen die Texturdateien in den Varianten nicht den gleichen Namen haben (geht auch gar nicht, wenn im gleichen Verzeichnis [und die Textur die Variante bestimmt]) Gruß EASY -
Hallo, ich stelle einfach mal vor, was mir als Idee so durch den Kopf gegeistert ist... So könnte ein Tacho mit beispielsweise einer max. Geschwindigkeitsanzeige von 220 aussehen... Das Modell hat 2 Beschriftungsfelder, eine Anzeige mit Zeiger und Balken... ... und Richtungsanzeiger... Damit man (optisch) eine Höchstgeschwindigkeit des Fahrzeuges anzeigen kann, gibt es diese Taster-Aktionen... ... damit läßt sich z.B. ein Limit von 160 anzeigen... ... und (optisch) erkennen, ob das Limit überschritten wird... ... das Modell ist (permanent) beleuchtet... So ließen sich mit wenig Varianten, z.B. 0...330, 0...220, 0...110 (0...55) "trotzdem" unterschiedliche Höchstgeschwindigkeiten darstellen. Da ich nicht weiß, wann @Neo seinen Vorschlag umsetzt, mal nur zur Information... Anregungen und Meinungen?... gerne! Gruß EASY
-
Hallo, kleiner Nachtrag: Die "%s" Schalter gehen in ihrer Funktion... ... so kann man immerhin überprüfen ob man (noch) die Fähigkeit besitzt sich Begriffe in der richtigen Reihenfolge zu merken... Gruß EASY
-
Hallo, Im Fenster "Steuerung" habe ich schon was zum draufklicken. Versuche einfach mal bei dem Schieberegler im Steuerungsfenster auf Anhieb die Mitte zu treffen um die Geschwindigkeit auf 0 zu setzen... Gruß EASY
-
Hallo @Neo, ich habe eine Lok mit integrierten Schaltern... ... wenn ich auf "Fenster loslösen / Fenster fixieren" klicke habe ich folgende Anzeige... ... erst wenn ich die Markierung von der Lok nehme (oder das Steuerungsfenster schließe)... ... und dann die Lok wieder markiere (oder das Steuerungsfenster wieder öffne) stimmt die Anzeige wieder. Gruß EASY
-
Hallo, ... aktiv am Modell ist das nicht möglich. Ein Regler kann nicht gleichzeitig auch ein Taster sein Es läßt sich allerdings ein integrierter Taster definieren, der über "Steuerung" erreichbar ist und in der EV ausgewertet / angesprochen werden kann... ...dies kann ich in einem zukünftigen Modell berücksichtigen. Gruß EASY