Archives des forums MMO/MMORPG > Neverwinter Nights > NWN - Maskado > HELP : script évolué pour faire dormir un PNJ
HELP : script évolué pour faire dormir un PNJ
Par SidSilver le 19/11/2002 Ã 15:19:45 (#2594414)
Le tout si possible sur un lit de camp (qui d'après bioware permettrai de faire dormir un perso dessus).
Merci par avance. :cool:
Par shadoh le 19/11/2002 Ã 15:57:02 (#2594713)
void main()
{
string sTag = "Tag du PNJ";
int nNth = 1;
object oTarget = OBJECT_SELF;
object oPNJ = GetNearestObjectByTag(sTag, oTarget, nNth);
effect eEffect1 = EffectSleep();
effect eEffect2= EffectVisualEffect(VFX_IMP_SLEEP);
AssignCommand(oPNJ, ActionMoveToObject(oTarget, FALSE, 0.0f));
ActionWait(1.0);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect1, oPNJ, 0.0f);
ActionWait(1.0);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eEffect2, oPNJ, 0.0f);
}
Je ne garantis rien mais à priori, pour faire ce que tu veux, il faut faire venir ton PNJ sur l'objet sur lequel il doit dormir. Puis il faut lancer un sort de sommeil permanent. Puis finalement appliquer le VFX (effet spécial) qui fait des ZzZzZz au dessus de ton PNJ.
Par SidSilver le 19/11/2002 Ã 16:06:36 (#2594770)
void main()
{
object oPNJ = OBJECT_SELF;
effect eSleep = EffectSleep();
effect eRonfle = EffectVisualEffect(VFX_IMP_SLEEP, FALSE);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eSleep, oPNJ);
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_PERMANENT, eRonfle, oPNJ));
}
Cependant, j'ai un petit problème... les zZz ne s'affichent pas !
Sinon ton idée pour le lit ne marche pas, j'avais deja essayé.
Pour le son, je vais en placer un manuellement.
Par SidSilver le 19/11/2002 Ã 17:32:23 (#2595452)
Quelqu'un peu m'aider ???
Par Kemay le 19/11/2002 Ã 19:00:41 (#2596217)
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eRonfle, oPNJ));
Par SidSilver le 19/11/2002 Ã 20:19:31 (#2596872)
Je ne comprend pas.
Par shadoh le 20/11/2002 Ã 9:14:33 (#2599682)
Par eMRaistlin le 20/11/2002 Ã 9:33:03 (#2599755)
Par shadoh le 20/11/2002 Ã 10:57:35 (#2600203)
Les sorts ont été définis par eEffect1 (EffectSleep()) et eEffect2 (pour le VFX).
Par eMRaistlin le 20/11/2002 Ã 11:04:35 (#2600261)
en fait, en faisant ApplyEffect, tu fais exactement ce que ca dit : tu applique l'effet : le sortn'est pas lancé. l'effet est mis, point barre. D'ou la necessite d'ailleur de rajouter un VFX.
Si je dis ca, c'est pasque tu disait :C'est normal que ça n'est pas marché, il y a une petite erreur dans le script que je t'ai donné. Remplace tous les FALSE par des TRUE. Ca aura pour effet de faire que meme si le lanceur du sort ne peut pas normalement lancer de sorts, il en lancera quand meme.
Ca, c'est dans la description de ActionCastSpell, de memoire. danc le applyEffect, on ne se demande pas si le PNJ peut ou peut pas...
C'est pour cela que je me dis qu'il y a dut avoir confusion.
Par shadoh le 20/11/2002 Ã 11:32:30 (#2600481)
J'ai corrigé l'erreur :).
Par SidSilver le 20/11/2002 Ã 20:03:10 (#2605617)
Par shadoh le 20/11/2002 Ã 22:55:02 (#2607316)
Par SidSilver le 20/11/2002 Ã 23:46:59 (#2607822)
Provient du message de shadoh
Hors, si je me souviens bien, VFX_IMP_SLEEP c'est l'effet graphique qui met des ZzZzZzZ au dessus de la cible (demande confirmation à d'autres).
J'utilise justement VFX_IMP_SLEEP (cf plus haut) mais il n'affiche rien, pourtant j'ai essayé de plein de manières différentes mais rien a faire...
Donc, si tu trouve un script qui marche, fait nous en partager... ;)
Merci ! :merci:
Par shadoh le 20/11/2002 Ã 23:56:55 (#2607913)
Bon alors avec ceci ça va marcher (je viens de tester).
Sur le onSpawn de ton PNJ tu mets ça :
void main()
{
effect eEffect1 = EffectSleep();
object oTarget = OBJECT_SELF;
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEffect1,oTarget);
}
Sur le onHeartBeat de ton PNJ tu mets ça :
void main()
{
effect eEffect2 = EffectVisualEffect(VFX_IMP_SLEEP,FALSE);
object oTarget = OBJECT_SELF;
ApplyEffectToObject(DURATION_TYPE_PERMANENT,eEffect2,oTarget);
}
Par SidSilver le 21/11/2002 Ã 0:01:12 (#2607959)
Provient du message de shadoh
Ah la la la la :). Savez pas prendre des initiatives par vous meme ou quoi ? :D.
Eh bien, je fais la plupart de mes scripts moi même et j'en adapte bcp d'autres pour mes besoins, seulement là je voulais éviter d'utiliser le OnHeartBeat pour ne pas trop surcharger mon module... voilà ...
Mais merci quand même pour ton script ;) .
Par shadoh le 21/11/2002 Ã 0:03:42 (#2607974)
PS : tu peux aussi essayer de placer un objet invisible et de lui faire lancer le VFX sur ton PNJ. Ca marchera pareil mais bon perso j'aime pas utiliser les objets invisibles :).
PPS : je pense pas que tu risques de surcharger ton module (et accessoirement faire griller le proc des utilisateurs ;)) avec des scripts aussi leger que celui ci sur ton OnHearBeat :).
JOL Archives 1.0.1
@ JOL / JeuxOnLine