Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contr√īle

Recherche | Retour aux forums

JOL Archives

HELP : script évolué pour faire dormir un PNJ

Par SidSilver le 19/11/2002 à 15:19:45 (#2594414)

Je recherche un script qui permet non seulement de faire dormir un PNJ (ça c'est facile) mais je veux aussi que lorsqu'il dort, il ronfle (avec effet visuel zZz et son).
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)

Essaye avec ceci :


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)

Voici mon nouveau script :


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)

Je n'ai toujours pas trouvé comment afficher l'effet visuel "zZzz" au dessus des PNJ qui dorment...
Quelqu'un peu m'aider ???

Par Kemay le 19/11/2002 à 19:00:41 (#2596217)

Les effets visuels de type "Impact" (VFX_IMP) ont une durée "instantanée"(en fait ils jouent une animation dont la durée est fixe). Tu ne peux pas l'utiliser avec une durée permanente. Essaie en remplaçant ta ligne par :

DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eRonfle, oPNJ));

Par SidSilver le 19/11/2002 à 20:19:31 (#2596872)

J'ai essayé ta ligne de commande, mais ça ne marche toujours pas...
Je ne comprend pas.

Par shadoh le 20/11/2002 à 9:14:33 (#2599682)

Au pire, si cela ne marche pas, essaye de placer un PNJ invisible et de lui appliquer un AssignCommand associé avec ActionCastSpellAtObject.

Par eMRaistlin le 20/11/2002 à 9:33:03 (#2599755)

euh... shadoh, tu as pas utilisé de Spell, la... oO??

Par shadoh le 20/11/2002 à 10:57:35 (#2600203)

??? heu je te suis pas la eMRaistlin.

Les sorts ont été définis par eEffect1 (EffectSleep()) et eEffect2 (pour le VFX).

Par eMRaistlin le 20/11/2002 à 11:04:35 (#2600261)

non :

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)

Oui en effet merci, je me suis mélangé les pinceaux entre le TRUE/FALSE de EffectVisualEffect et celui d'ActionCastSpellAtObject :).

J'ai corrigé l'erreur :).

Par SidSilver le 20/11/2002 à 20:03:10 (#2605617)

C'est bien beau tout ça, mais dans l'histoire, je n'arrive toujours pas a faire ronfler mes dormeurs... (niveau effet visuel).

Par shadoh le 20/11/2002 à 22:55:02 (#2607316)

Ba y à pas grand chose à rajouter... Les VFX te servent pour les effets graphiques des sorts. Normalement, avec le bon VFX ca devrait marcher. 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). Je vai tester de voir si chez moi ça marche. On sait jamais.

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)

Ah la la la la :). Savez pas prendre des initiatives par vous meme ou quoi ?:D.

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)

Pas de problème :). Au moins ça m'occupe pendant mon congé maladie :D.

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