Pb sur un trigger dans le OnEnter

Répondre
Partager Rechercher
Hello,

je voudrais faire en sorte que lorsqu'un pj (ou plusieurs) pénetre dans un trigger, il y ai 4 sorts qui se déclenchent à partir de 4 endroit différents(j'ai utilisé des objects invisibles que j'ai placé sur des colonnes: un sort par colonne) et que tant qu'il y a du monde dans la zone les 4 sorts se déclenchent tous les 3 secondes. Mon pb c'est que ca marche pas, ca me fait planter.
voici le code:

Code PHP:

void main()
{
 
object oColonneA GetObjectByTag("t_colonneA");
object oColonneB GetObjectByTag("t_colonneB");
object oColonneC GetObjectByTag("t_colonneC");
object oColonneD GetObjectByTag("t_colonneD");
object oPC GetEnteringObject();

 if (
GetIsObjectValid(oPC))
  {
   
AssignCommand(oColonneAActionCastSpellAtObject(SPELL_MAGIC_MISSILEoPCMETAMAGIC_ANYTRUE0PROJECTILE_PATH_TYPE_DEFAULTTRUE));

  
AssignCommand(oColonneBActionCastSpellAtObject(SPELL_CONE_OF_COLDoPCMETAMAGIC_ANYTRUE0PROJECTILE_PATH_TYPE_DEFAULTTRUE));
  
AssignCommand(oColonneCActionCastSpellAtObject(SPELL_CALL_LIGHTNINGoPCMETAMAGIC_ANYTRUE0PROJECTILE_PATH_TYPE_DEFAULTTRUE));
  
AssignCommand(oColonneDActionCastSpellAtObject(SPELL_FIREBALLoPCMETAMAGIC_ANYTRUE0PROJECTILE_PATH_TYPE_DEFAULTTRUE));
ActionWait(3.0);
}


Pouvez vous m'aidez? merci
a+

ps : j'ai pas réussi à mettre les balises pour le code. désolé. Dites moi comment faire. Merci
C'est pas compliqué, pour obtenir le résultat suivant :
Code PHP:

//code 

Il te suffit de taper [*PHP]//code[*/PHP] (sans les "*") et voilà

Par ailleurs pour ta question, je ne sais pas même si je ne vois pas où est la répétition dans ton script (tu l'as bien mis dans le OnEnter hein, pas dans le OnHeartBeat ?).
Outre la question de la boucle soulignée par Jedai, Le problème est que les objets inanimés ne peuvent pas lancer de sorts, donc si tu veut le faire tel quel, il faut simuler les effets. C'est relativement simple pour cône de froid, appel de la foudre et missile magiques, il suffit de reproduire les scripts de sort en les modifiant un peu pour la cause. ça l'est moins pour la boule de feu, car à ma connaissance il n'y a pas de VFX préfabriqué qui la produise (pas l'explosion, le missile), et on ne peut pas ajouter ce type de VFX (projectile) au jeu (bizarre mais j'ai cherché ce 2da et je ne l'ai pas trouvé, à quoi fait référence la valeur de Proj_FX_imp dans visualeffect.2da je ne sais pas... Skanzo?).
La solution simple c'est de poser des "néant_humain" à côté de tes colonnes (ou mieux le néantissime humain de Skanzo qui traine sur ce forum , cherche le topic de RAT sur un doppelganger, ça doit etre dans les 5 premières pages si la recherche ne donne rien ), et de leur faire lancer les sorts à eux (toujours avec cheat = TRUE), comme ce sont des créatures, plus de problème.

PS: oublies les ActionWait, ActionWait n'est presque jamais ce que tu veux.
Citation :
PS: oublies les ActionWait, ActionWait n'est presque jamais ce que tu veux
Bein, ca depend, mais bon, la, il demande a un trigger de faire actionwait, je confirme que ca peut pas marcher
bonjour,
tout d'abord merci pour vos réponses.
Je confirme le script se trouve bien dans le OnEnter.
Je suis par contre surpris par ta réponse Sire PomPom quand tu dis que des objets inanimés ne peuvent pas lancer de sort: j'ai souvenir d'un script où il y a une porte piégé par une statue. Lorsque l'on touche la porte, la statue lance un magic missile. Et de mémoire ce script fonctionnait bien.
Mais bon je suis peut etre entrain de me fourvoyer.

J'ai peut etre pas bien compris tes explications: Pourrais tu me donner un exemple pour illustrer ton propos "il faut simuler les effets"?

Pour revenir au pb du OnEnter, étant donné qu'il s'agit d'une zone au sol, si un pj se déplace continuellement dans la zone, j'imagine que celà déclenche le OnEnter à chaque fois et par conséquence prends bcp de ressource: Mon pb de plantage n'est il pas là ?

Comment puis je gérer le fait que je veuille laisser un laps de temps de 3 secondes entre le moments ou les sorts sont lancé*s et la prochaine fois où ils seront exécutés?

J'ai jetté un oeil au script de Rat sur les Dopplegangers, c'est une effet une solution mais je ne vois pas pourquoi l'histoire de la statue qui piege une porte fonctionne et pkoi je pourrais pas l'appliquer à mon pb.

J'espère que vous saurez m'éclairer sur l'ensemble de ces pbs.
Merci.
a+

ps: j'ai rajouté les balises au code.
Citation :
Provient du message de Sire Pom-pom
.... ça l'est moins pour la boule de feu, car à ma connaissance il n'y a pas de VFX préfabriqué qui la produise (pas l'explosion, le missile), et on ne peut pas ajouter ce type de VFX (projectile) au jeu (bizarre mais j'ai cherché ce 2da et je ne l'ai pas trouvé, à quoi fait référence la valeur de Proj_FX_imp dans visualeffect.2da je ne sais pas... Skanzo?).....
enfin moi c'etait pour repondre à ça...

et puis qu'on lance un sort ou qu'on le simule avec un effet visuel+ un script de degat... le resultat est le meme....

enfin, moi.. c'etait pour donner une idée...
essaye comme ca afin de remplacer ton ActionWait()....
tous ca en remplaçant le IF (...) {....} par celui là...
Code PHP:

if (GetIsObjectValid(oPC) && (!GetLocalInt(OBJECT_SELF,"variable")))
  {
  
SetLocalInt(OBJECT_SELF,"variable",TRUE);
 
AssignCommand(oColonneAActionCastSpellAtObject(SPELL_MAGIC_MISSILEoPCMETAMAGIC_ANYTRUE0PROJECTILE_PATH_TYPE_DEFAULTTRUE));

  
AssignCommand(oColonneBActionCastSpellAtObject(SPELL_CONE_OF_COLDoPCMETAMAGIC_ANYTRUE0PROJECTILE_PATH_TYPE_DEFAULTTRUE));
  
AssignCommand(oColonneCActionCastSpellAtObject(SPELL_CALL_LIGHTNINGoPCMETAMAGIC_ANYTRUE0PROJECTILE_PATH_TYPE_DEFAULTTRUE));
  
AssignCommand(oColonneDActionCastSpellAtObject(SPELL_FIREBALLoPCMETAMAGIC_ANYTRUE0PROJECTILE_PATH_TYPE_DEFAULTTRUE));
DelayCommande(3.0,SetLocalInt(OBJECT_SELF,"variable",FALSE));

pour les effet je peut pas te dire si ca cloche mais autant c'est juste ton actionwait qui fait planter le tout....
*a tester*
Citation :
Provient du message de tonton le grognon
enfin moi c'etait pour repondre à ça...

et puis qu'on lance un sort ou qu'on le simule avec un effet visuel+ un script de degat... le resultat est le meme....

enfin, moi.. c'etait pour donner une idée...

Je suis d'accords : je repondait au post du dessus par rapport au statue qui lancent des sorts.
(ah, non, y'a un truc que je voulais rajouter : "le resultat est le meme....", mais la methode est differente, comme de se rendre a Bastille en Bus ou en Metro : meme resultat, mais pas la meme galere ^^)
Citation :
Pour revenir au pb du OnEnter, étant donné qu'il s'agit d'une zone au sol, si un pj se déplace continuellement dans la zone, j'imagine que celà déclenche le OnEnter à chaque fois et par conséquence prends bcp de ressource: Mon pb de plantage n'est il pas là ?
Non, le OnEnter ne se déclenche qu'à l'entrée du joueur dans le trigger, c'est à dire lorsqu'il franchit la limite entre l'intérieur et l'extérieur du trigger (je croyais pourtant que "Enter" était suffisamment clair), il n'y a donc aucune raison (à part si le joueur se trémousse ou si tu as fait un trigger particulièrement tordu) pour que le OnEnter se déclenche plusieurs fois de suite.

Ce qui m'amène à critiquer le script de Sounéva, qui ne fait pas ce que tu veux : il a simplement reformulé ton script pour que si deux personnes rentrent l'une à la suite de l'autre en moins de 3 secondes dans le trigger, le script ne se déclenche qu'une fois. Or tu veux au contraire qu'il se répète toutes les 3 secondes tant que le PJ est dans le trigger, non ?

J'ai la flemme de te faire le script, donc je te renvoit à un post qui te montrera la technique à utiliser (© Jedaï ) :
https://forums.jeuxonline.info/showthread.php?t=154022
ou encore le script de la fameuse statue de Jaha qui utilise la même technique (avec des fourberies vraiment sadiques ) :
https://forums.jeuxonline.info/showthread.php?t=157785

Voilà, avec tout ça tu devrais y arriver
Citation :
Provient du message de Jedaï

ou encore le script de la fameuse statue de Jaha qui utilise la même technique (avec des fourberies vraiment sadiques ) :
Sadique ?? hum... heu... oui j'avoue, mais j'adore

Jaha Effect
Ben, je viens de bidouiller le module catapult! , et apparemment ActionCastSpellAtLocation marche sur les scripts de plaçables, avec bCheat = TRUE ou sans, ça ne change rien...
Désolé donc, j'étais persuadé du contraire.
jedai a raison mon script ne fait pas tout a fait ce que tu demande, je le reformule donc.

Code PHP:

if (GetIsObjectValid(oPC) && (!GetLocalInt(oPC,"variable")))
  {
  
SetLocalInt(oPC,"variable",TRUE);
 
AssignCommand(oColonneAActionCastSpellAtObject(SPELL_MAGIC_MISSILEoPCMETAMAGIC_ANYTRUE0PROJECTILE_PATH_TYPE_DEFAULTTRUE));

  
AssignCommand(oColonneBActionCastSpellAtObject(SPELL_CONE_OF_COLDoPCMETAMAGIC_ANYTRUE0PROJECTILE_PATH_TYPE_DEFAULTTRUE));
  
AssignCommand(oColonneCActionCastSpellAtObject(SPELL_CALL_LIGHTNINGoPCMETAMAGIC_ANYTRUE0PROJECTILE_PATH_TYPE_DEFAULTTRUE));
  
AssignCommand(oColonneDActionCastSpellAtObject(SPELL_FIREBALLoPCMETAMAGIC_ANYTRUE0PROJECTILE_PATH_TYPE_DEFAULTTRUE));
DelayCommande(3.0,SetLocalInt(oPC,"variable",FALSE));


là quelque soit le nombre de PJ qui rentre ils se prendrons tous tout ces sorts toutes les 3 secondes.

voilou voilou....
Ca n'a rien à voir avec le schmilblick mais quelqu'un a testé le projectile "vache volante" qui est commenté dans le module catapult? C'est peut-être archi connu mais si ça marche je ne l'ai jamais vu...
oui mais j'ai mis la variable sur le oPC.....

ça devrait bien envoyer les effets sur chaque PJ entrant toutes les 3 secondes donc.....

par contre si 5/6 joueur rentre en même temps dans le trigger ça doit faire un joli feu d'artifice.:bouffon:
Talking
autant pour moi j'ai du rêver effectivement...
il n'y a pas un événement InTrigger ????

donc soit le OnHeartBeat......tant apprécié
sinon une boucle récurrente donc en rajoutant un executescript....


*réfléchi*


comment récupérer le PC dans ce cas......avec un GetIsInTrigger non ? a ca existe pas...?

bon suffit d'y rajouter une boucle en somme.....
j'ai tous simplement fantasmé....
j'en suis désoler et faut que je dorme aussi....

PS: pis on va laisser le demandeur finir ce petit script, c'est plus formateur comme ca.
Sounéva, les deux liens que j'ai donné ne sont pas là pour faire joli !!
Ils te montreront une méthode simple, optimisé et claire pour faire ça.

(Et n'oublie pas que ExecuteScript() a deux arguments et que le deuxième ne doit pas forcément être fixé à OBJECT_SELF)
oui je me rappelle même de ces deux sujets.......après les avoir relu .


ce qui m'a pousser a poster c'est plus le bug qu'a décrit fantome.
et je me souvient bien (ca remonte a loin tout de même) c'est justement du au ActionWait appliquer au trigger qui ne peut pas recevoir d'action, ou de file d'action...
pareil pour nos amis les place-ables

enfin si mes souvenir sont bon.

PS: je dit peut être une bêtise, mais je me souvient d'un sujet (la version FR n'était pas encore sortie ) similaire ou la personne disait que son script faisait planter aurora.
et un grand maître lui a fait judicieusement remarquer qu'il ne pouvait pas demander a un objet d'attendre.....a une créature oui.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés