Zitat Zitat von SirTroy Beitrag anzeigen
Ich hoffe es reicht den GetSecondsPassed befehl am anfang einmal zu verwenden, ich denke mal der läuft dann halt immer mit, oder?
Schon, allerdings nützt es nichts, wenn später im Script (aber noch vor der Abfrage) folgende Zeile erschient:
Zitat Zitat
Set Timer to 0


Ich hab in deinem Script mal herumgepfuscht um das mit dem Timer zu beheben:
Code:
Scriptname ZFinisherQuestScript

Short Done

Float fQuestdelayTime

Short Finisherkey

Ref PossibleTarget
Ref Target

Short Move
Short Possible

Float Timer

Begin GameMode
	If IsKeyPressed2 Finisherkey
		Set Move to 1
	Endif
	If Move == 1
		Set PossibleTarget to GetCrosshairRef
		If PossibleTarget != 0
			If ( PossibleTarget.IsActor ) && ( PossibleTarget.IsCreature == 0 ) && ( PossibleTarget.GetDead == 0 )		;Wozu so viele If-Befehle wenn eine einfache &&-Verknüpfung möglich ist?
				Set Target to PossibleTarget
				Set Possible to 1
			Else
				Set Move to 0
			Endif
		Else
			Set Move to 0
		Endif
		If Possible == 1
			Target.AddItem ZTFinisherRing 1
			Set Possible to 2
			Player.Pickidle
			Target.PickIdle
		elseif Possible == 2
			Set Timer to Timer + GetSecondsPassed		;Verschoben, damit der Befehl nicht unnötigerweise aufgerufen wird und man die Timer-Variable nur einmal zurücksetzten muss.
			If Timer >= 0.5			;Langsame Framerate kann auch von Zeit zu Zeit vorkommen, oder anders ausgedrückt: Ich sehe keinerlei Sinn an einer Obergrenze, wenn die Variable nur erhöht wird. ;)
				Target.Kill
				Target.RemoveItem ZTFinisherRing 1
				Set Move to 0
				Set Timer to 0
				Set Possible to 0
			Endif
		Endif
	Endif
End