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

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

[script] Probleme pour lancer des effects en boucle

Par Rhakim Solari le 6/8/2002 à 0:24:13 (#1922492)

Alors c simple: 2 npc qui font mine de se lancer des sorts à tour de role, les sorts n'étant que des effects sans plus...

J'ai écrits un petit scripts, mais j'ai deux problemes:

1 - Il vaut mieux placer le script où? J'avais pensé dans le OnSpawn, mais le fait qu'il tourne ne boucle meme lorsque l'on est pas à portée de vue, ca risque de faire ramer le module non?

2 - Bon, je suis une quiche (vu que le terme est à la mode ;) ), et j'aimerais savoir comment je peut faire pour que mon script se lance en boucle, parceque là, le npc lance le "sort" une seul fois, et puis plus rien :sanglote:

Re: [script] Probleme pour lancer des effects en boucle

Par Shanya AlThor le 6/8/2002 à 13:37:40 (#1924894)

Provient du message de Rhakim Solari
Alors c simple: 2 npc qui font mine de se lancer des sorts à tour de role, les sorts n'étant que des effects sans plus...
1 - Il vaut mieux placer le script où? J'avais pensé dans le OnSpawn, mais le fait qu'il tourne ne boucle meme lorsque l'on est pas à portée de vue, ca risque de faire ramer le module non?


Etant une mega quiche dans les scripts, je ne saurais te répondre parfaitement. Cependant je vois souvent des sujets parlant d'un OnPerceive ou un truc comme cela.
Je pense que ca colle bien avec ce que tu sembles vouloir faire...

Par Gargantuel le 6/8/2002 à 14:51:20 (#1925325)

Je vois pas beaucoup d'autre solution que d'utiliser le OnHeartBeat de chaque NPC.
Toutes les 6 secondes, le NPC lancera un sort comme dans le module d'intro de Bioware où un NPC s'entraine a lancer des sorts sur un manequin.
D'ailleurs tu peux regarder comment ils ont fait.

Par Rhakim Solari le 7/8/2002 à 17:37:14 (#1931146)

Le probleme, c'est que j'aimerais éviter le OnHeartBeat...

Par Kemay le 8/8/2002 à 1:47:03 (#1932712)

Une solution pourrait être de faire un trigger autour de tes NPC. Tu fais le trigger assez grand pour qu'il représente la distance à laquelle le joueur doit être de tes NPCs pour qu'il commence à se alancer leurs sorts à la face. Les scripts suivants partent du principe que les NPCs mages ont pour tag "MAGE1" et "MAGE2" et le trigger ("TR_MAGEDUEL")

Dans l'event onEnter du trigger:

void main()
{
object oPC = GetEnteringObject();
if ( GetIsPC(oPC) )
{
int nPCIn = GetLocalInt(OBJECT_SELF,"PCIn") + 1;
object oMage1 = GetObjectByTag("MAGE1");
SetLocalInt(OBJECT_SELF,"PCIn",nPCIn);
ExecuteScript("MageDuel",oMage1);
}
}

Dans l'event onExit du trigger :
void main()
{
object oPC = GetExitingObject();
if ( GetIsPC(oPC) )
{
int nPCIn = GetLocalInt(OBJECT_SELF,"PCIn") - 1;
SetLocalInt(OBJECT_SELF,"PCIn",nPCIn);
}
}

le script "MageDuel", un nouveau script sauvergardé sous ce nom qui ne nécessite d'être attaché à aucun event:
void main()
{
//Si il y a des joueurs dans le trigger exécuter la série de "faux" sorts
if ( GetLocalInt(GetObjectByTag("TR_MAGEDUEL"),"PCIn") > 0 )
{
object oMage1 = OBJECT_SELF;
object oMage2 = GetObjectByTag("MAGE2");
//la série de de sorts (en fait sans effet autre que visuel)
ActionCastFakeSpellAtObject(SPELL_ENERGY_DRAIN,oMage2);
AssignCommand(oMage2,ActionWait(2.0));
AssignCommand(oMage2,ActionCastFakeSpellAtObject(SPELL_LIGHTNING_BOLT,oMage1));
ActionWait(2.0);
//Fin de la série de "faux" sorts
//Executer à nouveau le script
ActionDoCommand(ExecuteScript("MageDuel",OBJECT_SELF));
}
//Si il n'y a pas de joueurs dans le trigger arrêter tout
else
{
ClearAllActions();
AssignCommand(oMage2,ClearAllActions());
}
}


Voilà, ca devrait marcher. Je n'ai pas le temps de tester pour l'instant, mais le principe est là : Trigger Power / A mort le onHeartBeat ;)

Par Rhakim Solari le 8/8/2002 à 23:28:36 (#1936979)

Merci, je n'en demandais pas tant :)

Je testerais ca demain :)

ActionDoCommand(ExecuteScript("MageDuel",OBJECT_SELF));


En fait, c la commande ExecuteScript qui manquait à mon vocabulaire :ange:

JOL Archives 1.0.1
@ JOL / JeuxOnLine