World of Gothic Archiv > NWN-Hilfe
Kamikaze
Seite 1 von 1  1 
24.08.2002, 14:29 #1
VieleVonEins
Beiträge: 21
Kamikaze
Ich will ja auch mal was Konstruktives für das Forum tun, deshalb hier eine kleine Idee von mir.

Es gibt da doch dieses Script für explodierende Fässer. Ja, also ich hab mir gedacht es wäre witzig dieses Script bei On Death einer Kreatur einzusetzen. Hab ich dann auch dann gemacht. Daraus wurde dann mein kamikaze Zombie, der auch so eininge Nahkämpfer zum Bogen greifen liess. dazu kann ich nur sagen: macht die Explosion ruhig gefährlich, denn umso härter ist der Kampf und das macht (zumindest mir viel spass). Ach ja....achtet darauf das die Kamikazekreaturen deutlich langsamer sind als die SC´s damit sie auch Zeit haben einen Fernkampf einzuleiten....und macht sie tough aber nicht zu strong, sollen ja schwer zu stoppen sein.

Viel spass damit (hehe) Ihr werdet die Spieler laufen sehen......

VVE:D
25.08.2002, 19:39 #2
Nizidraman
Beiträge: 1.171

Man erinnere sich an die Kamikazekobolde vor Firkraags Höhle. *träum* Mit den ganzen Scripts wird NWN doch noch besser als BG :D
26.08.2002, 10:26 #3
VieleVonEins
Beiträge: 21
Kein Schaden durch Explosion
Ahhhhhh....Mal wieder typisch das mir sowas passiert..
Also ich habe folgendes Script für meine Kamikazi´s verwendet und wie könnte es anders sein, es gibt ein PROBLEM.
Sie machen KEINEN Schaden. Weder SC noch NSC noch monster werden durch die Explosion geschädigt. Bitte, wer´s drauf hat, lest es mal durch und schreibt, was an dem Script nicht stimmt.
Danke.



void main()
{
float fDamageRange = 4.0;
int iMinDamage = 30;
int iAddDamage = d10();
if(GetLocalInt(OBJECT_SELF,"ExplodeOnce")==0)
{
SetLocalInt(OBJECT_SELF,"ExplodeOnce",1);
effect eExpl = EffectVisualEffect(VFX_FNF_FIREBALL);
effect eSmoke = EffectVisualEffect(VFX_FNF_SMOKE_PUFF);
effect eBump = EffectVisualEffect(VFX_FNF_SCREEN_BUMP);
effect eDamage = EffectDamage(GetCurrentHitPoints(),DAMAGE_TYPE_FIRE);
DelayCommand(0.2,ApplyEffectToObject(DURATION_TYPE_INSTANT,eExpl,OBJECT_SELF));
DelayCommand(0.3,ApplyEffectToObject(DURATION_TYPE_INSTANT,eBump,OBJECT_SELF));
DelayCommand(0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,eSmoke,OBJECT_SELF));
ApplyEffectToObject(DURATION_TYPE_INSTANT,eDamage,OBJECT_SELF);
}
else
{
object o;
effect eFireDamage;
o = GetFirstObjectInShape(SHAPE_SPHERE,fDamageRange,GetLocation
(OBJECT_SELF),TRUE,OBJECT_TYPE_ALL);
while(GetIsObjectValid(o))
{
eFireDamage = EffectDamage(iMinDamage + iAddDamage,DAMAGE_TYPE_FIRE,DAMAGE_POWER_PLUS_TWO);
DelayCommand(0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,eFireDamage,o));
o = GetNextObjectInShape(SHAPE_SPHERE,fDamageRange,GetLocation(OBJECT_SELF), TRUE,OBJECT_TYPE_ALL);
}

}
}
30.08.2002, 09:08 #4
Elessar
Beiträge: 495

Wenn du das ins Ob Death Script geschmissen hast, dann ist es klar, dass es nicht geht, schliesslich wird das OnDeath Script nur einmal aufgerufen und du hast eine Abfrage nach einer Variable ganz oben, soll heissen es wird nur der obere Teil durchgeführt und das nach dem else nicht mehr... Wenn es nicht klar ist, dann sag es und ich schreibe es kurz um...
30.08.2002, 09:41 #5
VieleVonEins
Beiträge: 21

Wäre super nett, wenn du mir das umschreiben könntest.
Und danke, dass du überhaupt geantwortet hast.

VVE
30.08.2002, 11:33 #6
Elessar
Beiträge: 495

Ich habe alles rausgeschmissen, das ich als unnötig befunden habe... allerdings ist nichts getestet...

code\:

void main()
{
float fDamageRange = 4.0;
int iMinDamage = 30;
int iAddDamage = d10();

effect eExpl = EffectVisualEffect(VFX_FNF_FIREBALL);
effect eSmoke = EffectVisualEffect(VFX_FNF_SMOKE_PUFF);
effect eBump = EffectVisualEffect(VFX_FNF_SCREEN_BUMP);

DelayCommand(0.2,ApplyEffectToObject(DURATION_TYPE_INSTANT,eExpl,OBJECT_SELF));
DelayCommand(0.3,ApplyEffectToObject(DURATION_TYPE_INSTANT,eBump,OBJECT_SELF));
DelayCommand(0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,eSmoke,OBJECT_SELF));


object o;
effect eFireDamage = EffectDamage(iMinDamage + iAddDamage,DAMAGE_TYPE_FIRE,DAMAGE_POWER_PLUS_TWO);
o = GetFirstObjectInShape(SHAPE_SPHERE,fDamageRange,GetLocation(OBJECT_SELF) ,TRUE,OBJECT_TYPE_ALL);

while(GetIsObjectValid(o))
{
DelayCommand(0.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,eFireDamage,o));
o = GetNextObjectInShape(SHAPE_SPHERE,fDamageRange,GetLocation(OBJECT_SELF), TRUE,OBJECT_TYPE_ALL);
}
}

30.08.2002, 16:14 #7
VieleVonEins
Beiträge: 21

Also danke nochmal. War echt nett von Dir das für mich zu machen....(aber ist ja auch ne gute idee).

VVE
Seite 1 von 1  1