Prob de Script : Téléportation

Répondre
Partager Rechercher
Salut

Voila, petit problême de script : Le PJ est dans un labyrinthe remplis de salle contenant chacune un portail.

A chaque fois que le PJ clic sur un portail il se retrouve dans une autre salle, de façon aléatoire.

Le script ci-dessous ne fonctionne pas, car le PJ est téléporté à tous les WP, les uns apres les autres :

Code PHP:

object oPC=GetLastUsedBy();
object oStart;
int oChiffre;

void main()
{
 for(
oChiffre 1oChiffre 43oChiffre++)
 {
  if((
oStart GetObjectByTag("WP_LAB_"IntToString(oChiffre))) != OBJECT_INVALID)
   {
    
AssignCommand(oPC,ActionJumpToObject(oStart));
   }
 }

C'est mon premier script et je comprends pas
C'est normal
Tu as utilisé un FOR(oChiffre = 1; oChiffre < 43; oChiffre++)
cela veut dire que une fois qu'il clickera sur un portail, il passera par tous les portails les uns apres les autres dans l'ordre de oChiffre, cad wp 1, wp 2, wp 3...wp 42, wp 43
pauvre testeur j'imagine etre teleporté 43 x ca doit pas etre la joie ^^
a la place du for (que tu vas enlever tout de suite !! ^^)
met plutot :
Code PHP:

object oPC=GetLastUsedBy();
object oStart;
int oChiffre;

void main()
{
  
oChiffre Random(43);
  while((
oStart GetObjectByTag("WP_LAB_"IntToString(oChiffre))) != OBJECT_INVALID)
   {
    
AssignCommand(oPC,ActionJumpToObject(oStart));
    
oChiffre Random(43);
   }
 }

Le random(43) va generer un entier aleatoire entre 0 et 43, si tu n'as pas de waypoint 0, ca peut faire planter mais c geré par le test
Code PHP:

("WP_LAB_"IntToString(oChiffre))) != OBJECT_INVALID
Mais toi tu l'utilisais avec un IF, cad que si jamais le waypoint n'etait pas valide, alors il ne serait pas teleporté, mais tu veux qu'il soit teleporté a un autre endroit si le waypoint initial n'etait pas valide.
Donc au lieu d'un if, tu utilise un while qui va refaire un nombre aleatoire puis retester si ce coup ci le waypoint est valide et relancer la procedure jusqu'a ce qu'il trouve un waypoint valide.
Normalement, ca ne devrait pas foirer
Heu...

Ca fait un effet bizarre :

- Si je met un waypoint nommé : WP_LAB_0 dans la zone, la téléportation se fait comme je le souhaite à deux détails pres :

1er : des que l on clic sur un téléporteur, le jeu bloque de facon anormale avant que la téléportation ne s'effectue.
2eme : ca marque une erreur

Script lab_portal_jump, OID:80001657, Tag:Portal, ERREUR:TOO MANY INSTRUCTIONS

- Si je ne met pas de waypoint nommé : WP_LAB_0 dans la zone, la téléportation se fait, mais pas comme souhaité.

C'est a dire que le PJ est téléporté sur plusieurs Waypoint a la fois avant de s'arréter (que ce soit un jump ou 30 jumps)

Le truc que je veux faire est un seul jump aléatoire
Moi je suis étonné que tu sois téléporté avec ce script : Le jump s'effectue uniquement dans le cas d'un waypoint invalide, tel que c'est fait...
Essayes plutôt ceci, ça devrait aller mieux :

Code PHP:

object oPC=GetLastUsedBy();
object oStart=OBJECT_INVALID;
int oChiffre;

void main()
{
  do
   {
    
oChiffre Random(43);
    
oStart GetObjectByTag("WP_LAB_"IntToString(oChiffre));
   }while(
oStart == OBJECT_INVALID)
  
AssignCommand(oPC,ActionJumpToObject(oStart));
 }

[Edité pour une meilleure version ^^]
Pourquoi faire court quand on peut faire long ?
Non, sérieusement, un switch() dans ce cas précis possède 2 défauts :
- comme le if, ça ne passe qu'une fois avant de sortir... donc pas de gestion des waypoints invalides... a moins de coller le switch dans une boucle while mais la je vois plus trop l'intérêt a partir de ce moment la
- Ca t'oblige a écrire une ligne pour chaque waypoint... pourquoi s'embêter a faire en 43 lignes ce que tu peux faire en 4 lignes ? Sans compter que c'est plus léger en terme de temps de traitement...
Citation :
Provient du message de Manshoon_Zhent
Heu...

Ca fait un effet bizarre :

- Si je met un waypoint nommé : WP_LAB_0 dans la zone, la téléportation se fait comme je le souhaite à deux détails pres :

1er : des que l on clic sur un téléporteur, le jeu bloque de facon anormale avant que la téléportation ne s'effectue.
2eme : ca marque une erreur

Script lab_portal_jump, OID:80001657, Tag:Portal, ERREUR:TOO MANY INSTRUCTIONS

- Si je ne met pas de waypoint nommé : WP_LAB_0 dans la zone, la téléportation se fait, mais pas comme souhaité.

C'est a dire que le PJ est téléporté sur plusieurs Waypoint a la fois avant de s'arréter (que ce soit un jump ou 30 jumps)

Le truc que je veux faire est un seul jump aléatoire
erf lol quelle merde je fait, j'ai fait la teleportation illimité sauf en rajoutant un bug dedans lol.
Il etait tard...

(je suis credible ?? )
Répondre

Connectés sur ce fil

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