Jump to content
Zum Start hinzufügen

Weitere Informationen

3D-Modellbahn Studio

Eine Vollbild-App auf Ihrem Startbildschirm mit Push-Benachrichtigungen und mehr.

So installieren Sie diese App auf iOS und iPadOS
  1. Tippen Sie auf das Teilen-Symbol in Safari
  2. Scrollen Sie durch das Menü und tippen Sie auf Zum Startbildschirm hinzufügen.
  3. Tippen Sie oben rechts auf Hinzufügen.
So installieren Sie diese App auf Android
  1. Tippen Sie auf das 3-Punkte-Menü (⋮) in der oberen rechten Ecke des Browsers.
  2. Tippen Sie auf Zum Startbildschirm hinzufügen oder App installieren.
  3. Bestätigen Sie durch Tippen auf Installieren.

Empfohlene Beiträge

Geschrieben

Hallo @Goetz und Alle,

leider finde ich keinen Weg bei Fahrzeugen beim kurzzeitigen Parken in der Nacht das Licht aus und auch wieder einschalten. Bei etwa 60 Fahrzeugen kann ich ja nicht alle einzeln Abfragen, auch haben die Lichtschalter unterschiedliche Namen, und wie kann ich den „Automatik Modus“ dabei umgehen.

Gibt es da einen einfachen Lösungsweg ?

UF 1.jpg

Mit Vorweihnachtliche Grüßen aus Bremen

Axel

Geschrieben
vor 2 Minuten schrieb JimKnopf:

bei Fahrzeugen beim kurzzeitigen Parken in der Nacht das Licht aus und auch wieder einschalten.

Hallo Axel,
du kannst bei Betreten des Parkplatzes (= Bremskontakt) im auslösenden Fahrzeug das Licht und die Automatik ausschalten.

Bleibt das Problem mit den unterschiedlichen Namen. Da fällt mir leider nichts besseres ein, als in einer Objekt-Variablen mit einheitlichem Namen in jedem Fahrzeug den individuellen Namen des Lichtschalters zu hinterlegen.

Viele Grüße
Götz

Geschrieben

Hallo @JimKnopf ,

vor 17 Minuten schrieb Goetz:

Bleibt das Problem mit den unterschiedlichen Namen. Da fällt mir leider nichts besseres ein, als in einer Objekt-Variablen mit einheitlichem Namen in jedem Fahrzeug den individuellen Namen des Lichtschalters zu hinterlegen.

Das Hinterlegen des Werts einer individuellen Variable ist hier händisch sehr mühsam. @prinz, hat aber mal ein Skript entwickelt, mit dem man einfach die Animationsnamen automatisch zuweisen kann. Aus einer vordefinierten Liste an Namen (Modulvariable), wird über eine Testfunktion pcall geprüft, ob das Modell einen Animationsnamen aus der Liste besitzt. Trifft dies zu, wird dann der individuelle Name für die Animation als Objektvariable eingetragen. Das Einzige, was man ergänzen müsste, wäre den Vorratsspeicher mit den möglich vorkommenden Namen zu füllen.

https://community.3d-modellbahn.de/forums/topic/8646-t%C3%BCrsteuerung-von-neo/#findComment-110505

Die Anlage entstand noch vor Version 9 und spricht nur die Animationen an. Für die Lichter, die mit dem integrierten Schalter gesteuert werden, müsste man statt den Namen für die Animationen die Namen für die integrierten Schalter verwenden und die Testfunktion pcall so anpassen, dass sie nicht mehr Animationen, sondern Lichter anspricht.

Viele Grüße
Tim

Geschrieben

Alternativ kann man sich irgendwo einen Hilfsweg legen, neue Autos zuerst darauf stellen und dann mittels EV den Namen des Lichtschalters in einer Variablen speichern. Dazu muss man den Lichtschalter nur einmal bedienen. Das erspart mühseliges (und fehlerträchtiges) Abschreiben der Schalternamen.

Lichtschalter Namen.jpg

Geschrieben
1 hour ago, JimKnopf said:

Hallo @Goetz und Alle,

leider finde ich keinen Weg bei Fahrzeugen beim kurzzeitigen Parken in der Nacht das Licht aus und auch wieder einschalten. Bei etwa 60 Fahrzeugen kann ich ja nicht alle einzeln Abfragen, auch haben die Lichtschalter unterschiedliche Namen, und wie kann ich den „Automatik Modus“ dabei umgehen.

Gibt es da einen einfachen Lösungsweg ?

UF 1.jpg

Mit Vorweihnachtliche Grüßen aus Bremen

Axel

wenn du mein parkmodulbeispiel studierst, da ist das alles geloest. alledings sind die animationsnamen eine pain whenn man das nicht automatisieren kann.
Gruss
Gmd

Geschrieben

Hallo Götz,

vor 24 Minuten schrieb Goetz:

Alternativ kann man sich irgendwo einen Hilfsweg legen, neue Autos zuerst darauf stellen und dann mittels EV den Namen des Lichtschalters in einer Variablen speichern. Dazu muss man den Lichtschalter nur einmal bedienen. Das erspart mühseliges (und fehlerträchtiges) Abschreiben der Schalternamen.

das ist eine sehr gute Idee. Danke. Funktioniert im Prinzip wie das Anlernen einer Universalfernbedienung und ist bei Loks und Wagen noch viel hilfreicher.

Gruß

Tino

Geschrieben
  • Autor

Danke für die schnellen Antworten


@Goetz den Weg mit den Objekt variablen habe ich ja genau so mit den unterschiedlichen Sound und Rauchpartikel bei den Lok´s gemacht. Das bekomme ich wohl hin.

Unbenannt.JPG


@gmd dein Parkmodulbeispiel muss ich mir ansehen und mal sehen ob ich den Sinn dahinter in mein altes Hirn bekomme.

Danke nochmals Gruß Axel

Geschrieben

Axel hier ein kleiner auschnitt, erschrecke nicht vor dem Lua. Wenn du es erstmal verstanden hast ist es ganz einfach.

vehicle_variable.jpg

Zunaechst einmal definierst du den tatsechlichen animationsnamen fuer das fahrzeug in einer variablen, also in diesem fall "Light"
und diese Fahrzeug kennt "08 Fahrlicht"
Wenn du das gemacht hast sagst du einfach

local vehicle = layout:getEntityByName("Fahrzeugname")
VP_VSet_LightOff(vehicle)


Done. Alles weiter unten is generisches script und musst du nicht anfassen.
Man kann das noch weiter verallgemeinern und kann alle animationen ueber eine liste zuweisen, das mache ich aber in meinem
externen programm.
Das functioniert mit jeder animation, dann wird jeweils dieses kommando ersetzt VP_VSet_ActionFromVar(vehicle, "Light", v)
Fuer indicator oder brakelight oder andere animationen. Das ist das prinzip, welches ich anwende um spezielle zugriffe auf objekte zu kapseln.

local VP_Debug = true
local function VP_Log(...)
    if VP_Debug then
        print(...)
    end
end

-- Generic: set action state using the name stored in a vehicle variable

local function VP_VSet_ActionFromVar(vehicle, varKey, state)
    if not vehicle or not vehicle.variables then return end
    local actionName = vehicle.variables[varKey]
    if not actionName then return end
    local action = vehicle.actions[actionName]

    if not action then
        if VP_Debug then
            VP_Log("VP ACTION:", vehicle.name,
                   "missing action for", varKey, "name=", tostring(actionName))
        end
        return
    end
    action.state = state
    if VP_Debug then
        VP_Log("VP ACTION:", vehicle.name,
               varKey, "→", actionName, "state=", tostring(state))
    end
end

function VP_VSet_LightState(vehicle, on)
  local v = (on true or on 1) and 1 or 0
  VP_VSet_ActionFromVar(vehicle, "Light", v)
end

function VP_VSet_LightOn(vehicle)
VP_VSet_LightState(vehicle, 1)
end

function VP_VSet_LightOff(vehicle)
    VP_VSet_LightState(vehicle, 0)
end

Gruss
Gmd

Geschrieben

Hallo @gmd ,

wenn du möchtest, dann kannst du dein Script so formatieren ...

local VP_Debug = true
local function VP_Log(...)
    if VP_Debug then
        print(...)
    end
end

-- Generic: set action state using the name stored in a vehicle variable
local function VP_VSet_ActionFromVar(vehicle, varKey, state)
    if not vehicle or not vehicle.variables then return end
    local actionName = vehicle.variables[varKey]
    if not actionName then return end
    local action = vehicle.actions[actionName]
    if not action then
        if VP_Debug then
            VP_Log("VP ACTION:", vehicle.name,
                   "missing action for", varKey, "name=", tostring(actionName))
        end
        return
    end
    action.state = state
    if VP_Debug then
        VP_Log("VP ACTION:", vehicle.name,
               varKey, "→", actionName, "state=", tostring(state))
    end
end

function VP_VSet_LightState(vehicle, on)
    local v = (on true or on 1) and 1 or 0
    VP_VSet_ActionFromVar(vehicle, "Light", v)
end

function VP_VSet_LightOn(vehicle)
    VP_VSet_LightState(vehicle, 1)
end

function VP_VSet_LightOff(vehicle)
    VP_VSet_LightState(vehicle, 0)
end

indem du in der Kopfleiste auf diesen Format Auswahl.jpg Knopf drückst und aus der Liste Code Block.jpg auswählst.

Gruß
Götz

Geschrieben

haha, da sieht du mal wie selten ich das hiert benutze )
Danke fuer den tip, das hatte ich kurz gesucht, bis meine ungeduld uebernahm...
gruss
Gmd

Geschrieben
  • Autor
vor 1 Stunde schrieb Goetz:

Alternativ kann man sich irgendwo einen Hilfsweg legen, neue Autos zuerst darauf stellen und dann mittels EV den Namen des Lichtschalters in einer Variablen speichern. Dazu muss man den Lichtschalter nur einmal bedienen. Das erspart mühseliges (und fehlerträchtiges) Abschreiben der Schalternamen.

Lichtschalter Namen.jpg

Danke aber mit Lua … ich benutze lieber den Weg wie von Götz beschrieben. Bin schon dabei allen Fahrzeugen die Variable Fahrlicht mitzugeben.

Gruß Axel

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Push-Benachrichtigungen konfigurieren

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.