Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > Invocation Scriptée.
Invocation Scriptée.
Par mickmils le 11/7/2002 Ă 22:08:12 (#1793561)
J'essaie de créer un NPC qui invoque deux bestioles que j'ai crée avec les wizards (donc pas le spell d'invocation par défaut).
Une fois qu'elles se font buter, le NPC initie un nouveau dialogue.
C'est en théorie assez simple, mais étant moi même une quiche, je n'y arrive pas :p
Quelqu'un peut aider ?
Aussi, serait il possible du customizer ou bidouiller le systeme
de scripts afin qu'il utilise des points de Mana ? Ou de créer
un spell qui ne fait que modifier une variable ?
Mickmils
une quiche répond ...
Par izuall le 12/7/2002 Ă 1:27:23 (#1794368)
sinon pour le script désolé mais je sais pas du tout , mais ca serait super intéréssent qu'un des "pro" nous ponde ca ...
Par Kray le 12/7/2002 Ă 1:31:19 (#1794380)
Par Dilandau le 12/7/2002 Ă 10:05:54 (#1795170)
il te faut deux waypoint a coter de ton NPC.
void main()
{
object NPC = GetObjectByTag("Tag de ton NPC");
location loc = GetLocation(GetObjectByTag("Tag Waypoint 1");
location loc1 = GetLocation(GetObjectByTag("Tag Waypoint 2");
AssignCommand(NPC,ActionCastSpellAtLocation(SPELL_SUMMON_CREATURE_III,loc,METAMAGIC_ANY,TRUE));
AssignCommand(NPC,ActionCastSpellAtLocation(SPELL_SUMMON_CREATURE_III,loc1,METAMAGIC_ANY,TRUE));
}
bien celui la il crée deux créature, mais je ne sais pas détecter si elle sont morte, a moins de ne pas utiliser un sort mais juste de faire un jump au creature plaquer dans le niveau avec un effet en dessous.
void main()
{
object NPC = GetObjectByTag("tag du NPC");
object crea = GetObjectByTag("tag créature");
object crea2 = GetObjectByTag("tag creature 2");
location loc =GetLocation(GetObjectByTag("tag way 1"));
location loc1 =GetLocation(GetObjectByTag("Tag way 2"));
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2),loc);
AssignCommand(crea,ActionJumpToLocation(loc));
ApplyEffectAtLocation(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_2),loc1);
AssignCommand(crea2,ActionJumpToLocation(loc1));
While (GetIsDead(crea) && GetIsDead(crea2)) {;}
AssignCommand(NPC,ActionStartConversation(cible));
}
Par Adalorn le 12/7/2002 Ă 10:39:36 (#1795331)
While (GetIsDead(crea) && GetIsDead(crea2)) {DelayComand(6.0);}
sinon, tu auras une boucle infinie trops rapide (là , il vérifie déja tout les round, je sait pas si DelayComand marche sans actions, sinon,
DelayComand (6.0, ActionWait(6.0));
va aussi regarder les gestes que fait le lanceur pour lancer le sort
autre solution pour les créatures, placer dans Ondead des créatures:
if (GetIsdead(GetObjectByTag("tag creature")) && GetIsDead(GetObjectByTag("tag creature 2")))
ActionStartConversation(oPlayer,"conversation_qui_à _lieu_aprés_la_mort_des_deux_créatures_appelées_crea_et_crea2",TRUE);
Edit:// je pense que c'est mieu :
effect invoc = EffectSummonCreature("tag creature")+ EffectSummonCreature("tag creature 2 ") + EffectVisualEffect(VFX_FNF_SUMMON_MONSTER_3)
puis AplyEffectAtLocation.....
Par Dilandau le 12/7/2002 Ă 13:23:09 (#1796108)
JOL Archives 1.0.1
@ JOL / JeuxOnLine