Construction Set Moveto Funktion mit Lights

Corelegend

Fremdländer
Hallo zusammen,

ich habe folgendes Problem. Ich möchte per Script ein Light vor den Player bewegen sobald der nen Helm aufsetzt. Normal funktioniert das ja mit moveto player.
Aber irgendwie bewegt sich das Licht nicht.
Hier mal mein Script:

Code:
--------------------------------------
scriptname 00lightplayer

short equipped
float timer
float fquestdelaytime
--------------------------------------
begin onequip player

set equipped to 1

end
--------------------------------------
begin onunequip player

set equipped to 0

end
--------------------------------------
begin gamemode

set fquestdelaytime to 1

if (equipped == 1 ) && ( timer <= 0 )
set timer to 1
lightref.enable    ;lightref ist das Licht
lightref.moveto player 
elseif (equipped == 0 )
lightref.disable
endif

if (timer > 0 )
set timer to timer - getsecondspassed
endif

end
---------------------------------------

Wäre super wenn jemand einen Tipp für mich hätte.
Danke Corelegend
 
diese Zeile wird nur einmal ausgeführt:
lightref.moveto player
weil beim nächsten Durchlauf timer ja nichtmehr <= 0 ist, also muss diese Zeile in die time > 0 Schleife mit rein. Übrigens ist mir aufgefallen, dass du nach dem if ( meistens kein Leerzeichen mehr lässt, da würd ich schon eins hinmachen, also if ( a == 1 ) (Du => if (a == 1 ))

Ansonsten - wozu sind diese gestrichelten linien? Motzt er da nicht? Da würd ich noch ein ; davor machen, wenn du sie unbedingt brauchst.

Wozu ist der Timer und die QuestDelayTime eigentlich gut?
 
Baal Lukor schrieb:
Wozu ist der Timer und die QuestDelayTime eigentlich gut?

Normalerweise werden die Questscripts alle 5 Sekunden einmal ausgeführt.
Mit der Deklaration dieser Variable kann man die "Pausen" verringern bzw vergrössern.
Bei "set fquestdelaytime to 1" wird das script jede sekunde ausgeführt.

Mehr dazu findest du gibbet hier. Die Letzten 2 Absätze.
http://cs.elderscrolls.com/constwiki/index.php/Quest_scripts
 
Baal Lukor schrieb:
Wozu ist der Timer und die QuestDelayTime eigentlich gut?
der "timer" wird in jedem Durchlauf um "getsecondspassed" runtergezählt. Das ist schon richtig so. Sobald der timer auf 0 ist (also 1 Sekunde vergangen), soll etwas passieren.
Ich würde lieber fQuestDelayTime ändern (ist das überhaupt ein Quest-Skript? eher nicht), als diesen Timer zu benutzen, aber das Problem liegt vermutlich eher beim "moveto". Ich muss mir die Stelle mal eingerückt anschauen.

EDIT: sag' mal bitte genauer, auf was "lightref" da eigentlich zeigt. Ist das nur eine Lichtquelle ohne 3D-Repräsentation oder eine Laterne? Und ist das auch eine "persistant reference"?

Grüße,
Andreas.
 
Zuletzt bearbeitet:
@Baal Lukor Jetzt habsch auch deine frage "richtig verstanden", Du wolltest gar nicht wissen für was das Gut ist sondern warum er das im Script eingebaut hat ;)

@Corelegend Ich sehe da auch keinen Sinn drin diesen Timer einzubauen, vielleicht hattest du ja deine Gründe. Ansonsten versuch es mal so

Code:
scriptname 00lightplayer

short equipped


begin onequip player
        set equipped to 1
end


begin onunequip player
        set equipped to 0
end

begin gamemode
        if (equipped == 1 ) 
               lightref.enable
               lightref.moveto player 
        else 
               lightref.disable
        endif
end

Natürlich muss es die referenz "lightref" auch geben.
 
Zuletzt bearbeitet:
  • Like
Reaktionen: Corelegend
Ihr habt recht der timer ist eigentlich total sinnlos :? schienbar ein Relikt vergangener Versuche. Ich probier jetzt mal den Script von Zerlix.