tenir un monstre dans un champ de force

Répondre
Partager Rechercher
Salut,

tout est dans le titre.

En fait, j'aimerais qu'un monstre ne puisse sortir d'une zone délimitée par un trigger, et qu'il semble tenu par une espèce de champ de force (au niveau de l'anim, qu'il s'énerve un peu). Ce dernier, bien sûr, pourrait être suspendu par le déclenchement d'un autre trigger !
Ou bien un gros trigger avec un script dans le OnExit, ou bien l'entourer de triggers avec un script dans le OnEnter.

Demande si tu veux que je développe
Alors, bien pour un tag de monstre "MO_PABO", tu fait un grand trigger des dimentions de ta "cage" de tag "MO_CAGE", et tu met un waypoint au centre de celui ci, de tag "WP_CENTER"

OnExit du trigger :

Code PHP:

void main()
{
    
object oMonster GetNearestObjectByTag("MO_PABO");
    
AssignCommand(oMonsterClearAllActions();
    
AssignCommand(oMonsterPlayAnimation(<celle que tu veux ^^>);
    
AssignCommand(oMonsterActionMoveToObject(GetNearestObjectByTag("WP_CENTER");

il ne te reste plus qu'a ajouter des effets supplémentaires, genre un bruit de monstre qui crie, et éventuellement des effets de dégats sur le monstre.
ok, par contre, une dernière chose, est il possible d'avoir un piège personnalisé.

Si un pnj le détecte, il essaie de le désamorcer, et le cas échéant, le champ de force reste.
Si il n'est pas détecté, il (le piège) éteind le champ de force, et là, c'est la fête au pnj avec la vilaine bébête qui va se retrouve libre.

Le problème de ce type de piège, c'est que je ne veux pas d'effets particulier comme piège à feu, à gaz, à pieux, etc... Je ne veux rien, uniquement l'arrêt du champ de force.
Bonne question. Euhhh... Sans effets spéciaux ça va être dur... Au bout de combien de temps le piège ouvre la cage s'il n'est pas désamorcé ? Imaginons que ce soit 10 ssecondes :
au bout de 10 econdes, ou le piège est désamorcé, ou il ne l'est pas. Si il ne l'est pas au bout de dix secondes, il est supprimé. Si il l'est pas de problème, le piège est désamorcé et tout va bien. Le problème est que le pauvre PJ ne doit pas marcher dessus... Si il le fait, tu ouvres la cages, tu soignes le PNJ.
Mais bon.... Je ne vois pas d'autres solutions.
g pas tt compris, et j'ai pas aurora sous la main, mais il me semble qu'il y a un evenement "ondisarm" donc bon ...
alors soit tu fais un triger, avec u piege autour qu'on peut désarmer, le trigger libere le monstre dans son onenter et le piege supprime le trigger dans son ondisarm
soit tu peux mettre un onenter dans un piege ... g pas aurora sous la main, et me suis peu intéressé aux piege pour l'instant, mais bon ... me semble que c'est possible, les piege n'étant que des triggers, enfin me semble ...
Tu oublies la détection du piège, reyan... Le trigger ne marchera pas, j'y ai pensé, mais ça ne sera plus un piège. Faut un vrai piège.... Mais c'est ce que j'ai dit : tu as trois choix, il entre dedans, il le désarme ou il le rate...
nan, nan, pour le piège, c'est un piège statique. Si le pj l'évite, ben il a de la chance, et tout va bien, le champ de force reste, et le bestiau sort pas.
Si il le détecte, ben il essaie de le désamorcer, si il n'y arrive pas, ben il le marque et l'évite.
En fait, un trigger m'irait bien, mais je voit pas comment faire pour la détection !
Parce que bon, une poignée de dragons énervés, si on peut éviter, c'est pas si mal !!!!!
mm, me suis peut etre mal exprimé.

je parlait dans ma premire solution que je testerais si j'avais ce qu'il faut, d'un VRAI piege, vrai de chez vrai et tt, donc un fait un vrai piege, dessus il y a un event OnDisarm, c'est quasi sur.
donc, tu dessine ton piege, si il y a pas de onenter dedans, ba tu créé un triiger (normal) un tout petit peu plus petit, a l'interieur du piege.
dans le ondisarm, tu met un script avec un

Code PHP:

DestroyObject(GetObjectByTag("TAGDUTRIGGER")); 

et pas degat dans le pige, quand le PJ s'avance, soit il detecte le piege, le desamorce, et par la meme occasion detruit le trigger qui libere les dragons, soit il desamorce pas et dans ce cas libere les dragon en marchant dessus, maintenant pour les echecs de désamorcage .. euh ... chais pas comment faire.

a la place du destroy object, un peu radical
tu peu fairee un test sur une variable dans le trigger, varaible q'un désamorcage du piege a mit à 1, ou quelque chose du genre, mais bon ...
rq, je n'ai vraiment pas aurora, donc ne prétend pas que c'est possible, mais il me semble bien que si ...
ok pour tout ça, ..... mais, il me faudrait un piège ... sans piège.
Un piège qui n'aurait rien de lié sauf le fait de libérer un champ de force.
J'ai beau chercher, je retombe toujours sur un piège à pieu, à acide, ou tout ce que l'on veut, mais pas sans rien.....
a tu trouvé un effet interessant pour ton champ de force ? sais tu exactement ce que tu veux visuellement ?

on peut bien sur, mais il me faudrais un peu plus d'infos
ok, je m'explique :

pour le champ de force, c'est ok.
maintenant, il me faut un truc qui ressemble à un piège (avec les fonctions de détection, désamorçage, etc..) qui ne donne si on le touche que l'effet d'éteindre ce champ de force, et pas les effets traditionnels type piège à pieu, gaz, etc....
Voilà, si quelqu'un trouve, et bien je le remercie d'avance..
Toujours personne pour mon piège ?
Bon, j'ai encore 1 problème
Pourquoi mon dragon, de temps en temps, il sort de sa zone ?
Le script en dans le OnEnter de la zone où il doit pas pouvoir aller.
Si il entre, il devrait retourner sur le DragS02, mais il y va pas tout le temps, alors il sort et ça marche pas.
La variable mur est là juste pour savoir si le pj a touché le piège vu plus haut et à donc désactivé le champ de force.

Code PHP:

void main()
{
  
object oDrag GetObjectByTag("NW_DRGRED001");
  
object oFDrag GetObjectByTag("DragS02");
  
int nMur GetLocalInt(GetArea(OBJECT_SELF), "mur") + 0;

  if ((
GetEnteringObject() == oDrag) && (nMur == 0))
  {

    
AssignCommand(oDragClearAllActions());
    
AssignCommand(oDragPlayAnimation(ANIMATION_FIREFORGET_TAUNT));
    
AssignCommand(oDragActionForceMoveToObject(oFDrag));

  }

Ca commence a me faire ch....
Le piège devrait suffir à lui même. Il y a un event onDisarm et un autre onTrapTriggered. Il suffit de mettre des scripts dans ces events pour gérer l'ouverture du champ de force.

Et pour le champ de force, c'est pas dans le onExit qu'il faut le mettre, le script ??
C'est fou comme on cherche des trucs compliqués alors que c'est si simple !
Pour le piège, comme le dit gaeriel/nekresh, n'importe quel piège fait l'affaire en remplissant les event onDisarm et onTrapTriggered les scripts passent en priorité.
Bon j'ai encore 1 problème : quand le pj déclenche le piège, le champ de force doit disparaitre. Le script est :

Code PHP:

void main()
{
  
int i;
  for (
05i++)
  {
     
DestroyObject(GetNearestObjectByTag("Murlumiere"));
  }
  
SetLocalInt(GetArea(OBJECT_SELF), "mur"1);

Y'a 5 murs de lumière qui vont bien, mais ils ne disparaissent pas après le script. Par contre, la variable mur change bien d'état.
Donc y'a un problème avec le Destroy, mais je vois pas où !!
Citation :
Provient du message de Reyan
mm, me suis peut etre mal exprimé.

je parlait dans ma premire solution [...] d'un VRAI piege, vrai de chez vrai et tt, donc un fait un vrai piege, dessus il y a un event OnDisarm, c'est quasi sur.
donc, tu dessine ton piege, si il y a pas de onenter dedans, ba tu créé un triiger (normal) un tout petit peu plus petit, a l'interieur du piege.
dans le ondisarm, tu met un script avec un [...]

et pas degat dans le piege,
[...]
rq, je n'ai vraiment pas aurora, donc ne prétend pas que c'est possible, mais il me semble bien que si ...
juste qu'on dise pas que je suis de mauvaise foi
ca c parce que le destroy n'est appliqué qu'a la fin, donc la il ne peut detruire qu'un seul mur ... bon, j'ai p-e une idée, mais si y a même pas un seul mur de détruit, je vois pas.
Mais il y a plus qualifié que moi
bon, j'ai pas trop utiliser de for encore, donc si c pas bon ...
mais essai ca p-e ...

Code PHP:

void main()
{
  
int i 1;
  for (
1<= 5i++)
  {
     
DestroyObject(GetNearestObjectByTag("Murlumiere"OBJECT_SELFi));
  }
  
SetLocalInt(GetArea(OBJECT_SELF), "mur"1);

Répondre

Connectés sur ce fil

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