Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Quelqu'un peut-il me faire ce script ?
Quelqu'un peut-il me faire ce script ?
Par TheRack le 8/9/2002 à 21:02:11 (#2122018)
Je ne m'y connais pas bien en language C, et si je me débrouille pour les choses les plus faciles, dans le cas que je vais vous exposer, je suis un peu bloqué. Si jamais il y a déjà la réponse quelque part dans ce forum, prière de me l'indiquer.
Voilà, je souhaite mettre un script dans "OnPhysicalAttack" d'un NPC qui fasse ceci:
si l'attaquant attaque le NPC avec l'epée X, alors, le combat se déroule normalement. En revanche, si l'attaquant attaque par un autre moyen (autre arme ou magie), alors tous les dégats faits au NPC sont annulés, et, par contre, c'est l'attaquant qui subit les dégats qu'il aurait lui-même infligé.
Une sorte de contre-attaque miroir, quoi. ! Les dégats que l'attaquant aurait infligé au NPC ricochent sur le NPC et sont infligés à l'attaquant. Ca vaut aussi pour les sorts. Ceux-ci se retournent contre leur lanceur.
Si quelqu'un pouvait me pondre un petit script pour ça, il serait super-méga-sympa.
Merci à tous,
TheRack
Par Jedaï le 8/9/2002 à 22:37:46 (#2122728)
object oPC = GetLastDamager();
if (!(GetLastWeaponUsed(oPC) == GetObjectByTag("epeeX") ||
!(GetDamageDealtByType(DAMAGE_TYPE_MAGICAL) == 0)))
{
int nNbDmg = GetTotalDamageDealt();
effect eHeal = EffectHeal(nNbDmg);
effect eDamage = EffectDamage(nNbDmg, DAMAGE_TYPE_DIVINE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, OBJECT_SELF);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC);
}
Par TheRack le 9/9/2002 à 13:43:13 (#2125543)
Sorry
Par Jedaï le 9/9/2002 à 17:49:02 (#2127124)
object oPC = GetLastDamager();
if (!(GetLastWeaponUsed(oPC) == GetObjectByTag("epeeX")) ||
!(GetDamageDealtByType(DAMAGE_TYPE_MAGICAL) == 0))
{
int nNbDmg = GetTotalDamageDealt();
effect eHeal = EffectHeal(nNbDmg);
effect eDamage = EffectDamage(nNbDmg, DAMAGE_TYPE_DIVINE);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, OBJECT_SELF);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC);
}
Et il ne peut fonctionner que dans le OnDamaged.
Par TheRack le 9/9/2002 à 18:12:25 (#2127291)
Ben merde alors
Par Jedaï le 9/9/2002 à 19:48:18 (#2127936)
object oPC = GetLastDamager();
if ((GetLastWeaponUsed(oPC) != GetObjectByTag("epeeX")) ||
(GetDamageDealtByType(DAMAGE_TYPE_MAGICAL) > 0))
{
int nNbDmg = GetTotalDamageDealt();
effect eHeal = EffectHeal(nNbDmg);
effect eDamage = EffectDamage(nNbDmg);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, OBJECT_SELF);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC);
}
Sinon tu as essayé de supprimer carrément le reste du script et de mettre juste ça ? Je ne vois pas d'erreur mais bon... Qu'est-ce qui se passe exactement : il se prend les dommages mais meurt-il ? etc..
Par Amaranthe le 9/9/2002 à 19:55:38 (#2127987)
Amaranthe.
Par Jedaï le 9/9/2002 à 20:08:38 (#2128100)
void main()
{
object oPC = GetLastDamager();
if ((GetLastWeaponUsed(oPC) != GetObjectByTag("epeeX")) ||
(GetDamageDealtByType(DAMAGE_TYPE_MAGICAL) > 0))
{
int nNbDmg = GetTotalDamageDealt();
effect eHeal = EffectHeal(nNbDmg);
effect eDamage = EffectDamage(nNbDmg);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, OBJECT_SELF);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oPC);
}
}
Par TheRack le 10/9/2002 à 11:14:38 (#2130776)
Peut-être est-ce trop demandé, mais pourais-tu m'envoyer un tout petit module avec deux PNJ et avec l'effet qui marche, comme dans ta description avec le barbare et le goblin ? Dis-moi aussi comment tu as essayé (
Je crois qu'il y a mon email quelque part en bas...
En tout cas, merci pour tout et désolé de t'em... avec ça !
bizarre :
Par Jedaï le 10/9/2002 à 21:42:38 (#2134790)
Malheureusement le e-mail intégré à ce forum ne semble pas proposer l'option fichier lié (ou alors je l'ai loupée). Alors si tu veux que je l'envoie donne moi ton adresse e-mail ici.
D'autre part
Par Jedaï le 10/9/2002 à 21:46:27 (#2134805)
Donc vérifie ce point aussi.
Par Tyn' le 10/9/2002 à 22:29:02 (#2135065)
Qui a dit bourrin? Même pas vrai.
Par TheRack le 11/9/2002 à 9:12:42 (#2136665)
mracordon@bluewin.ch
Encore merci de ta patience et de ta générosité !
TheRack
Par Jedaï le 11/9/2002 à 13:06:00 (#2137826)
Par Jedaï le 11/9/2002 à 13:06:16 (#2137830)
Par Jedaï le 14/9/2002 à 12:31:33 (#2154880)
Par Darkmore le 14/9/2002 à 14:30:06 (#2155577)
Jedaï-->D'après ce que j'ai vu ton script soigne les blessures qui viennent d'être infliger par autre chose que l'épéeX.
Est ce qu'il ne serait pas plus logique de passer le PNJ en mode "plot " et utiliser Ondamage pour lui infligé un EffectDamage uniquement si l'arme utilisée est l'arme X.
Parce que la si un sort lui applique l'effet Death (sort de mort par exemple) le PNJ meurt quand même il me semble... et ça semble génant pour Rake.
Alors après la question c'est : est ce que le Ondamage se déclanche si le PNJ est en plot?
Et est ce qu'on peut appliquer un EffectDamage efficace sur un PNJ en plot ?
Désolé j'apport plus de question que de réponses :merci: :p
Par TheRack le 14/9/2002 à 17:11:06 (#2156296)
Dans ce cas, je ne sais pas quelle est la meilleure solution. A vous de me dire...
En tout cas, merci encore...
Par Jedaï le 15/9/2002 à 16:59:54 (#2161967)
JOL Archives 1.0.1
@ JOL / JeuxOnLine