Ich hab ein Problem, die Lok hat als KI keinen Sound, hat das mit dem lua Script zutun?
Lokbau - LUA Script
-
-
Was mache ich falsch? funktioniert nicht
if Call("*:GetControlValue", "Headlightsw", 0) == 1 then
Call( "Fwd_Headlight_01:Activate", 1)
Call( "Fwd_Headlight_02:Activate", 1)
else
Call( "Fwd_Headlight_01:Activate", 0)
Call( "Fwd_Headlight_02:Activate", 0)
end
LG Taurus -
Ich kenne mich in Lua nicht aus, aber setz das mal komplett in Klammern:
if (Call("*:GetControlValue", "Headlightsw", 0) == 1) then
-
Nein geht leider nicht, aber trotzdem danke
-
Ist natürlich schwer zu sagen, wenn man das Modell und seine Nodes nicht kennt, aber probiere doch mal folgende Variante:
if math.floor (Call ( "*:GetControlValue", "Headlightsw", 0)) == 1 then
Call( "*:ActivateNode","Fwd_Headlight_01", 1)
Call( "*:ActivateNode","Fwd_Headlight_02", 1)elseif math.floor (Call ( "*:GetControlValue", "Headlightsw", 0)) == 0 then
Call( "*:ActivateNode","Fwd_Headlight_01", 0)
Call( "*:ActivateNode","Fwd_Headlight_02", 0)end
Würde mich freuen, wenn Du mir ne Rückmeldung gibst, ob es geklappt hat.
Gruß
Harzi -
-
Hallo Harzi, Danke fürs helfen.
Aber leider funktioniert das auch nicht.LG Taurus
-
Ist es denn ein Childobjekt oder einfach ein Node, welches im Modell eingebaut ist?
-
Ich will beide aktivieren, also so eine Lichtsteuerung (aus, halb, voll).
-
Die Benennung stimmt? Controler im Inputmapper und die Benamsung der Childobjekte und der Nodes?
Schreib hier mal auf wie Du die einzelnen Teile benannt hast.
- Inputmapper
- Child
und
- Node
-
Der ControlValue ist Headlightsw
Child Fwd_Headlight_01 usw.
Node habe grad bemerkt dass ich die nicht weiß -
-
So müsste sich das Childobjekt "Fwd_Headlight_01" ansprechen lassen
if Call( "GetIsPlayer" ) == 1 then
if math.floor(Call("*:GetControlValue", "Headlightsw", 0)) == 1 then
Call( "Fwd_Headlight_01:Activate", 1)
elseif math.floor(Call("*:GetControlValue", "Headlightsw", 0)) == 0 then
Call( "Fwd_Headlight_01:Activate", 0)
endend
Probier mal so, wenn es jetzt nicht klappt, dann weiß ich auch nicht mehr weiter. Bitte Rückmeldung.
-
Ich probiers morgen, vielen dank für deine Hilfe
-
Hat nicht funktioniert. Muss ich vielleicht noch was anderes definieren?
-
Hab ne andere Frage, kann man so Nodes ansteuern?
Call("TestNode:ActivateNode", 1)
LG
-
Hallo Taurus0815,
nein, der korrekte Aufruf wäre:
Call( "ActivateNode", "TestNode", 1 )
*********************
So, nun zu Deinem vorletzten Problem mit den Lichtern:
Der einzige Controller für die Headlights ist "headlights", das ist intern im Sim fest verdrahtet! Kann mit der Taste H, oder einem definiertem Schalter im Cab bedient werden.
Jedoch muss ein korrekter Eintrag in der bin erfolgen.Wenn Du "headlightsw" benutzt, greifen andere Mechanismen.
Hast Du Beides "headlights" und "headlightsw" benutzt? -
-
Ich benutze jetzt Lichtschalter als Variable, Headlights hab ich rausgenommen.
-
und geht es mit der Variable Lichtschalter?
danke, ahb gar nicht daran gedacht, dass es Probleme mit dem Headlights controler geben könnte. Es ist eben immer besser vier Augen schauen auf ein Problem.
-
Also der Variable Lichtschalter funktioniert schon mal, nur die Nodes kann ich nach wie vor nicht steuern
LG
-
Eine Frage,
Wie kann man die Strecke messen die man fährt?
Dass ich zB. messe ab wann ich 900m gefahren bin
und dann mitif weg > 900 then
Call ("SetControlValue", "Wegmessung",1)
endLG
-
weg = weg + (m/s * deltaTime)
Aber bei dem Konstrukt da oben musst vorsichtig sein. Denn so produziert das nutzloses Dauerfeuer. Du musst Wegmessung zwischenspeichern und gegenprüfen um den Vorgang nur auszulösen wenn nötig. Performance im Script ist bei kleineren Scripts zwar egal, aber man kommt ganz schnell an die Grenze und muss dann anfangen zu optimieren. Vor allem Dauerfeuer auf Calls und unnötig viele Calls müssen vermieden werden. Jeder Call verursacht eine messbare Scriptlaufzeitverlängerung.
also dann:
-- variable inizialisieren
local weg = 0;
local wegmessung = 0;-- im Update(time)
local simSpeed = Call("GestSpeed"); -- will man ja vll mehrfach verwendenweg = weg + (math.abs(simSpeed) * time);
if(weg > 900 and wegmessung ~= 1) then
wegmessung = 1;
Call("SetControlValue", "Wegmessung", 0, wegmessung);
-- hier dann vll weg zurücksetzen (würde ich aber nicht machen sondern eine weitere var zum zwischenspeichern von wegpunkten)
weg = 0;
end....
-