PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Skampschleuder



Indy
27.12.2007, 18:25
Hallo, ich versuche gerade einen Stab zu basteln, der einen Skamp auf den Gegner schleudert.

Folgendermaßen sieht mein Skript bereits aus:


Scriptname 1TestScampSchleuder

short Start
float timer

Begin ScriptEffectStart

set Start to 1
set timer to 0.2

End


Begin ScriptEffectUpdate

if ( Start == 1 )
set Start to 2
scampref.MoveTo Player
endif
if timer > 0
set timer to timer - GetSecondsPassed
else
player.PushActorAway scampref 20
endif


Was bis jetzt noch nicht klappt:
1. Der Skamp soll immer vor dem Spieler erscheinen, nicht an irgendeiner Seite von ihm, damit dieser auch zuverlässig auf den Gegner geschleudert wird.

2. Der Skamp erscheint seltsamerweise immer nur, wenn der Zauber auf den Gegner gerichtet wird, also nicht wenn man ihn in die Luft schießt.

Weiß jemand bei den beiden Problemen Rat?

Lazarus
27.12.2007, 19:01
1. Der Skamp soll immer vor dem Spieler erscheinen, nicht an irgendeiner Seite von ihm, damit dieser auch zuverlässig auf den Gegner geschleudert wird.
Man müsste erst die Blickrichtung des Spielers abfragen und den Skamp danach erscheinen lassen. Ist aber meiner Meinung nach den Aufwand nicht wert und außerdem recht unpräzise.



2. Der Skamp erscheint seltsamerweise immer nur, wenn der Zauber auf den Gegner gerichtet wird, also nicht wenn man ihn in die Luft schießt.
Weil die Wirkung immer erst mit einem Treffer eintritt. Du könntest einen Berührungszauber daraus machen und die Option 'Spell explodes without target'(o.ä.) aktivieren. Geht vielleicht auch mit einem Auf-Ziel-Zauber, habe das noch nicht ausprobiert.

Malachit
27.12.2007, 19:10
Schau mal hier (http://cs.elderscrolls.com/constwiki/index.php/PlaceAtMe). Vor Dir wäre dann:
player.PlaceAtMe CreatureScamp, 1, 256, 0

Indy
27.12.2007, 19:54
Danke für die Hilfe, funktioniert bereits richtig super. ;)
Jetzt geht es nur noch um den Schaden, der verursacht werden soll.

Mein Code sieht jetzt so aus:


Scriptname 1TestScampSchleuder

short Start
float timer
ref refname

Begin ScriptEffectStart


set Start to 1
set timer to 0.05

End


Begin ScriptEffectUpdate

if ( Start == 1 )
set Start to 2
set refName to player.PlaceAtMe 1Testskamp 1, 100, 0
endif
if timer > 0
set timer to timer - GetSecondsPassed
else
player.PushActorAway refname 25
endif

End

Begin ScriptEffectFinish

if ( Start == 2 )
set Start to 3
refname.MoveTo scampmarker
endif

End

Dafür möchte ich jetzt


ZielID.ModAV Health -90

verwenden, doch wie bestimme ich die "ZielID", welche das anvisierte Ziel sein soll?

Lazarus
27.12.2007, 20:11
Auf keinen Fall ModAv benutzen(außer vielleicht bei 'niederen' Werten wie Aggression), das kann dazu führen, dass sich der Attributswert festfährt und durch nichts mehr beeinflusst werden kann.

Leider gibt es keine Funktion, mit der sich mal eben Schaden zufügen lässt. Am besten platzierst du irgendwo einen Marker, verpasst ihm eine Reference und nimmst folgendes in den Script:

ref target [<- oben unter scriptname]

Begin ScriptEffectStart
set target to getself
DeinTollerMarker.moveto target
DeinTollerMarker.cast EinenSchadenVerursachendenZauber target

bg2408
27.12.2007, 23:06
Leider gibt es keine Funktion, mit der sich mal eben Schaden zufügen lässt. Am besten platzierst du irgendwo einen Marker, verpasst ihm eine Reference und nimmst folgendes in den Script:Doch, gibt es. ModAV2 (OBSE) ;).

PS: Das größte Problem an ModAV ist, daß es den Base Actor beeinflußt. Heißt triffts einen Clannfear, haben fortan alle weiteren Clannfears das Leben weniger.

Indy
29.12.2007, 12:34
Doch, gibt es. ModAV2 (OBSE) ;).

PS: Das größte Problem an ModAV ist, daß es den Base Actor beeinflußt. Heißt triffts einen Clannfear, haben fortan alle weiteren Clannfears das Leben weniger.

Seltsam. Ich hatte bereits 2 NPCs der selben ID hingesetzt mit verschiedenen Referenzen und dein beschriebenes Problem trat nicht auf. Als ich den ersten mit ModAV um 10000 Lebenspunkte ärmer machte und tötete juckte das den anderen überhaupt nicht.

Oder habe ich an deiner Beschreibung etwas falsch verstanden?