Archiv verlassen und diese Seite im Standarddesign anzeigen : Scripting: Wenn in der Nähe, dann... && Timer
Aloa,
ich mal wieder mit zwei Fragen:
1. Ist es möglich, einer Kreatur ein Script zu geben, womit sie jedem beeinflußt, der z.B. näher als 25 Meter kommt?
2. Wie genau baue ich einen Timer ein, sodaß z.B. im Rahmen eines Script Effects nach 15 Sekunden etwas bestimmtes passiert?
1. Das ist durchaus möglich. Die Funktion dazu heißt GetDistance (http://cs.elderscrolls.com/constwiki/index.php/GetDistance), allerdings solltest Du die Abfragen dazu etwas eingrenzen, damit nicht in jedem Frame abgefragt wird, wie nahe der Spieler ist. Das könnte sonst auf die Performance gehen.
2. Bei einem ScriptEffect kannst Du ausnutzen, dass der Block ScriptEffectFinish am Ende des Zaubers liegt. Das heißt Du gibst einem Zauber die Wirkungsdauer 15 Sekunden, dann läuft der Block ScriptEffectFinish erst nach 15 Sekunden und auch nur einmal.
Ansonsten heißt die Funktion, die Du suchst, GetSecondsPassed (http://cs.elderscrolls.com/constwiki/index.php/GetSecondsPassed).
1. Das ist durchaus möglich. Die Funktion dazu heißt GetDistance (http://cs.elderscrolls.com/constwiki/index.php/GetDistance), allerdings solltest Du die Abfragen dazu etwas eingrenzen, damit nicht in jedem Frame abgefragt wird, wie nahe der Spieler ist. Das könnte sonst auf die Performance gehen.Wie genau kann ich das eingrenzen? Sorry für die dumme Frage, aber diesbezüglich bin ich etwas überfragt :\.
2. Bei einem ScriptEffect kannst Du ausnutzen, dass der Block ScriptEffectFinish am Ende des Zaubers liegt. Das heißt Du gibst einem Zauber die Wirkungsdauer 15 Sekunden, dann läuft der Block ScriptEffectFinish erst nach 15 Sekunden und auch nur einmal.Das geht so leider nicht. Grund: Der Script Effect dauert 60 Sekunden - aber nach 15 Sekunden soll sich für den Spieler etwas ändern.
Ansonsten heißt die Funktion, die Du suchst, GetSecondsPassed (http://cs.elderscrolls.com/constwiki/index.php/GetSecondsPassed).Danke!
1. Hm, wie genau man das eingrenzt, kommt darauf an, was Du damit machen willst. :) Aber verkehrt sollte diese Zeile am Anfang Deines Scripts nicht sein:
if ( GetDistance Player > 2500 )
return
else
;Code
endif
2. Ich weiß nicht, wie GetSecondsPassed innerhalb eines ScriptEffects reagiert. Ich würde hier auf den ScriptEffectUpdate-Block zurückgreifen. Du müsstest allerdings testen, ob dieser Block wirklich jede Sekunde durchläuft. :\
Scriptname MeinMagieEffektScript
short Start
short done
Begin ScriptEffectStart
set Start to 0
End
Begin ScriptEffectUpdate
if ( Start == 15 )
if ( done == 0 )
set done to 1
;Code
endif
elseif ( Start < 15 )
set Start to ( Start + 1 )
endif
End
Begin ScriptEffectFinish
End
Brausebart
18.08.2007, 11:14
Ich weiß nicht, wie GetSecondsPassed innerhalb eines ScriptEffects reagiert.
Soweit ich sagen kann, genauso wie in einem GameMode-Block. Es gibt auch noch dieses ScriptEffectElapsedSeconds (http://cs.elderscrolls.com/constwiki/index.php/ScriptEffectElapsedSeconds), was ich aber noch nie benutzt habe, da Timer mit GetSecondsPassed in einem Skripteffekt ebenso gut zu realisieren sind.
Du müsstest allerdings testen, ob dieser Block wirklich jede Sekunde durchläuft.
Der Update-Block wird in jedem Frame einmal ausgeführt. Das Skriptbeispiel würde demnach nach 15 Frames den Effekt auslösen, nicht nach 15 sek. Ich würde folgenden Code vorschlagen:
scn MeinMagieEffektScript
short Done
float Timer
begin ScriptEffectStart
set Timer to 15
end
begin ScriptEffectUpdate
if Done == 0
set Timer to Timer - GetSecondsPassed
if Timer < 0
set Done to 1
; Code
endif
endif
end
Danke Brausebart.
Wenn der Update-Block einmal jeden Frame durchläuft, funktioniert mein Script natürlich nicht. Und dass GetSecondsPassed in ScriptEffekten ebenso arbeitet, ist eine wertvolle Information. :)
Super, danke, hat alles funktioniert!
Huzzah, und wieder ein neuer Zauberspruch für mein Magieplugin. Jetzt nur noch ein paar für Alteration und ein Meteoritenhagel (oder so) für Destruction und ich bin glücklich ^^.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.