Aller au contenu


Move Qui Marche Pas....


  • Veuillez vous connecter pour répondre
10 réponses à ce sujet

#1 chef

chef

Posté 02 septembre 2006 - 14:17

Salut !

J'ai fait un script, qui ne fonctionne pas (si si, j'vous jure)

le voici :

begin B_B_st_pj_passage_secret_move

if ( B_B_glob_pj_passage_secret == 1 )

move y -128

endif

if ( B_B_glob_pj_passage_secret == 3 )

messagebox "move 3"
move y 128

endif


end


Alors, le truc, c est que une variable est mise a jour par un autre script avec un timer, de se coté, pas de probleme.
Le probleme, c est que je met la variable a 1, ok, il bouge, il fait se que il faut. Une fois la variable a 3, il fait rien...

Avez vous une idée de la raison pour la quel sa ne marche pas ? Merci.

Team Stargate



"Si vous traversez l'enfer, ne vous y arrêtez pas." - Wiston Churchill


#2 Nenfëa

Nenfëa

    Le poisson bavard de Kalendaar


Posté 02 septembre 2006 - 14:43

Hello ! :)

Combien de temps ta variable B_B_glob_pj_passage_secret reste-t-elle à 1 ? Si elle reste un grand nombre de frames secondes, alors ta porte secrète va vite se trouver à des distances astronomiques de sa position initiale, car elle sera déplacée de 128 unités par frame seconde ! :D

Elle risque donc de mettre un petit moment à revenir en place... :)

Edit : petite correction suite au post ci dessous, la fonction déplace de 128 unités par seconde et non par frame ! :) Désolé... :?
Nenfëa

- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!

Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!

Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !

#3 chef

chef

Posté 02 septembre 2006 - 15:08

Non non, elle se déplace pendant 2 secondes ^^ Et elle reste à portée de vue du joueur. Mais quand la variable va a 3, les objet (il sont plusieur) ne bouge pas d'un poil...


La fonction "move y 128" fait bouger les objets de 128 unitée par secondes non ? C'est se qui se passe et c est se qui est écrit dans la liste des fonctions...

Team Stargate



"Si vous traversez l'enfer, ne vous y arrêtez pas." - Wiston Churchill


#4 Nenfëa

Nenfëa

    Le poisson bavard de Kalendaar


Posté 02 septembre 2006 - 15:28

Oui, c'est bien ça ! :)

La seule différence que je vois, c'est le MessageBox qui est avant : si tu le mets après le Move ou que tu le supprimes carrément, as tu toujours le même problème ? :D

Edit : si ça ne marche pas (il y a des chances... :?), tu peux aussi mettre le script qui met à jour la variable globale, peut-être le problème vient-il de là ! :)
Nenfëa

- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!

Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!

Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !

#5 chef

chef

Posté 02 septembre 2006 - 15:56

(Ca ne marche pas  :D ) Voici le script attaché sur une armoire :

begin B_B_st_pj_passage_secret

float timer



;activation de l'armoire, mise a jour des variable :

if ( onactivate == 1 )

if ( B_B_glob_pj_passage_secret == 0 )
set B_B_glob_pj_passage_secret to 1
endif

if ( B_B_glob_pj_passage_secret == 2 )
set B_B_glob_pj_passage_secret to 3
Messagebox "Globale a 3." "ok"
endif

endif

;apres 2 secondes, si la variable == 1, on la met a 2.

if ( B_B_glob_pj_passage_secret == 1 )

set timer to ( timer + getsecondspassed )

if ( timer >= 2 )
set B_B_glob_pj_passage_secret to 2
endif
endif

;apres 2 secondes, si la variable == 3, on la met a 0.

if ( B_B_glob_pj_passage_secret == 3 )

set timer to ( timer + getsecondspassed )

if ( timer >= 2 )
set B_B_glob_pj_passage_secret to 0
endif
endif

;partie ou l'armoire dois bouger :

if ( B_B_glob_pj_passage_secret == 1 )
move x 128
endif

if ( B_B_glob_pj_passage_secret == 3 )
move x -128
endif


end

Merci.

Team Stargate



"Si vous traversez l'enfer, ne vous y arrêtez pas." - Wiston Churchill


#6 Nenfëa

Nenfëa

    Le poisson bavard de Kalendaar


Posté 02 septembre 2006 - 16:08

Voir le messagechef, le 02.09.2006 à 15:56, dit :

Previsualisation du code

begin B_B_st_pj_passage_secret

float timer

;activation de l'armoire, mise a jour des variable :

if ( onactivate == 1 )

if ( B_B_glob_pj_passage_secret == 0 )
set B_B_glob_pj_passage_secret to 1
endif

if ( B_B_glob_pj_passage_secret == 2 )
set B_B_glob_pj_passage_secret to 3
Messagebox "Globale a 3." "ok"
endif


endif

...

end
Cette partie ne doit pas se trouver dans le bloc OnActivate : il n'est executé qu'à l'instant précis où le joueur active l'armoire, or ce n'est plus le cas deux secondes après activation ! :D Sors la du bloc, ça devrait marcher. :)
Nenfëa

- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!

Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!

Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !

#7 chef

chef

Posté 02 septembre 2006 - 16:14

Oui, mais je voudrais que le joueur active une fois, les objet bougent. Il active encore une fois, les objet rebouge.

Donc, je voudrais que sa rebouge que apres activation ^^ Désolé d'être si difficile  :D

Team Stargate



"Si vous traversez l'enfer, ne vous y arrêtez pas." - Wiston Churchill


#8 Nenfëa

Nenfëa

    Le poisson bavard de Kalendaar


Posté 02 septembre 2006 - 16:29

Je ne suis pas sur de comprendre ce que tu aimerais faire... :)

Le joueur active une fois, les objets vont dans un sens. Que doit-il se passer s'il active une seconde fois ? Les objets vont dans le même sens pendant deux secondes ? Ils reviennent dans l'autre sens ?

L'activation doit-elle marcher même si les objets sont en cours de déplacement ?

Edit : d'accord, j'ai compris ! :D
Le problème vient du fait que tu ne remets jamais ta variable timer à 0, qui reste donc supérieure à 2 quand tu réactives pour la seconde fois ton objet ! :) Remets le à 0 à chaque fois que tu changes ta variable globale aux moments où les deux secondes se sont écoulées. :?
Nenfëa

- Les yeux, Bouh, vise les yeux!
- Pouiiiiiic!!!

Le monde de Gilbertus devenu réalité : Kalendaar!
Il était une fois un site vachement bien avec plein de nistoires dessus... ah, vous la connaissez déjà ?!

Wiwi d'or 2006 du plus serviable ! Tadaaaaaaaa !

#9 chef

chef

Posté 02 septembre 2006 - 16:33

Les objet revienne dans le sens inverse ^^ On ne peut pas activer l'armoire pendant que les objet sont en déplacement...

On active, sa bouge dans un sens. On réactive, sa bouge dans l'autre ^^

Team Stargate



"Si vous traversez l'enfer, ne vous y arrêtez pas." - Wiston Churchill


#10 PoufLeCascadeur

PoufLeCascadeur

Posté 02 septembre 2006 - 16:37

Salut,

Je n'en suis pas sûr mais je crois que Move doit toujours être mis avec un Timer.

Citation

if ( B_B_glob_pj_passage_secret == 3 )
move x -128
endif

C'est un peu comme si tu lui disais "Bouge à la vitesse de 128unités par seconde pendant 0 secondes"  :)
Donc il ne bouge pas.

Mais bon je n'en suis vraiment pas sûr je me trompe peut-être. :D
Essaye de t'inspirer du script de la Porte des Ames (celui qui génére l'ouverture de la grille) s'il ressemble à celui que tu veux faire :) . Son nom est
GG_OpenGate1


#11 chef

chef

Posté 03 septembre 2006 - 22:30

Le nombre de fois que j ai lu se script du temps ou je pigais rien au timer... (merci Dark-Amn mdr, mon héro XD)

Non, car, le mouvement fonctionne bien 1 seule fois, pas deux...

Merci de ton aide, mais je pense que ton idée est érronée....

Salut ! Ne cherchez plus, j'ai trouvé :arrow:

J'ai été amené a faire un script dans le même style qui avait le meme probleme...

begin B_B_st_pj_passage_secret

float timer
float timer2


if ( onactivate == 1 )

if ( B_B_glob_pj_passage_secret == 0 )
set B_B_glob_pj_passage_secret to 1
endif

if ( B_B_glob_pj_passage_secret == 2 )
set B_B_glob_pj_passage_secret to 3
Messagebox "Globale a 3." "ok"
endif

endif



if ( B_B_glob_pj_passage_secret == 1 )

set timer to ( timer + getsecondspassed )

if ( timer >= 2 )
set B_B_glob_pj_passage_secret to 2
endif
endif



if ( B_B_glob_pj_passage_secret == 3 )

set timer2 to ( timer2 + getsecondspassed )

if ( timer2 >= 2 )
set B_B_glob_pj_passage_secret to 0
endif
endif



if ( B_B_glob_pj_passage_secret == 1 )
move x 128
endif

if ( B_B_glob_pj_passage_secret == 3 )
move x -128
endif


end


Voila un probleme de résolu... Merci de votre... De votre attention ^^

Team Stargate



"Si vous traversez l'enfer, ne vous y arrêtez pas." - Wiston Churchill





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)