Une même commande pour plusieurs actions ?

cs_Lodan51 Messages postés 57 Date d'inscription lundi 4 juillet 2005 Statut Membre Dernière intervention 19 janvier 2006 - 18 août 2005 à 16:15
Nolson Messages postés 216 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 16 mars 2006 - 21 août 2005 à 17:59
Bonjour, voici la suite d'un ancien probléme désormais résolu :
J'ai créé des remotes, avec des commandes qui servent à s'enregistrer, à démarrer, et, à suivre l'évoulution d'un jeu sur mon salon. La commande !poupon.go enregistre, la !poupon.eclore démarre l'éclosion d'un oeuf pour une durée de 20 minutes. Suite à ce temps, la commande !poupon.jouer me sert à vérifier le niveau du poupon et à redémarrer une nouvelle série de timers jusq'au niveau suivant. Une fois le niveau suivant donc acquis aprés un nouveau temps minimum, je voudrais me servir de cette même commande ( !poupon.jouer ) pour vérifier tout les niveaux du poupon, et, rendre celle-ci impossible si la série de timers en cours n'est pas finie. Donc : Une seule commande pour démarrer une série de timers, et, vérifier avant si cela est possible grâce au niveau recquis ( car mettre pour chaque level une commande !poupon.jouer1,2,3,4,5 etc.... trop dur pour les joueurs :p ).
Mais je ne sais pas comment faire pour rendre cette commande unique ?
je vous donne donc ce remote en éspérant que vous puissiez m'aider :

on *:text:!poupon.jouer*:#:{
if ( [ [ $+(%,px,$nick) ] ] = 2 ) {
/msg $chan 12 $nick 4 ton poupon est né, il est désormais au niveau13 [ [ $+(%,px,$nick) ] ] 12! | $+(timerpoupon,$nick,8) 1 05 /msg $chan 4Tu obtiens2 160 euros4 ! | /set [ [ $+(%,eu,$nick) ] ] 160 | $+(timerpoupon,$nick,10) 1 10 /msg $chan 12 $nick 4Tu dois maintenant l'entretenir et lui apporter tout les soins nécéssaires.... Bonne chance :) | $+(timerpoupon,$nick,11) 1 12 /notice $nick 12 $nick 6Besoin d'aide ? Tape !poupon.aide, et pour continuer, retape !poupon.jouer ! }
else { /notice 12 $nick 4tu ne peux pas encore faire cette action tant que3 l'oeuf4 n'a pas éclos ! }
}

Si je me suis bien éxprimé, il me suffirait de copier coller autant de ça que de niveau avec des timers et effets différents dans la même remote ( celle-ci ), mais avec les ( ) et { } j'avoue être un peu perdu :p

Je vous remercie d'avance !

Lodan51

11 réponses

fjxokt Messages postés 840 Date d'inscription vendredi 28 janvier 2005 Statut Membre Dernière intervention 25 février 2009 1
18 août 2005 à 16:37
on *:text:!poupon.jouer*:#:{

if ( [ [ $+(%,px,$nick) ] ] = 2 ) {

if
(!$timer($+(timerpoupon,$nick)) { msg $chan 12 $nick 4 ton poupon
est né, il est désormais au niveau13 [ [ $+(%,px,$nick) ] ] 12! |
$+(timerpoupon,$nick,8) 1 05 msg $chan 4Tu obtiens2 160 euros4 ! |
set [ [ $+(%,eu,$nick) ] ] 160 | $+(timerpoupon,$nick,10) 1 10 msg
$chan 12 $nick 4Tu dois maintenant l'entretenir et lui apporter tout
les soins nécéssaires.... Bonne chance :) | $+(timerpoupon,$nick,11) 1
12 notice $nick 12 $nick 6Besoin d'aide ? Tape !poupon.aide, et pour
continuer, retape !poupon.jouer ! }

else { notice 12 $nick 4tu ne peux pas encore faire cette action tant que3 l'oeuf4 n'a pas éclos ! }

elseif ( [ [ $+(%,px,$nick) ] ] = 3 ) { blabla ou blabla }

elseif ( [ [ $+(%,px,$nick) ] ] = 4 ) { blabla ou blabla }

}

}



bon j'ai essayé de décoder ce que tu as dis mais je crois pas avoir réussi

enfin bon, a mon avis tu doit te servir de l'identifieur $timer

ex $timer(nomdutimer) retourne le nom du timer si il est en fonctionnement , sinon il ne retourne rien

donc sert toi de la condition: if ($timer(nick))
0
S333 Messages postés 266 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 26 juin 2008
18 août 2005 à 18:56
la proposition de fjxokt(galère à écrire ton pseudo ^^) est bonne, juste à rajouter un } avant le premier elseif.

lodan51, tu pourrais expliquer un peu mieu à quoi correspondrait chaque niveau ?

Parce que si !poupon.jouer sert uniquement a augmenter les nivo, pas
besoin de copier le code Xfois, mais créer juste des timers "évolutif"
Genre nivo 1-2 = 20min 2-3= 40min(20 * 2) etc...



Sinon fait ton code comme tu le sens, et on peut t'aider ensuite à le rendre plus compact :)
---------------------------------
Signature des parents :
0
cs_Lodan51 Messages postés 57 Date d'inscription lundi 4 juillet 2005 Statut Membre Dernière intervention 19 janvier 2006
19 août 2005 à 01:09
Alors ensuite justement, à cause d'un dysfonctionnement de mon bot, j'ai perdu mes remotes ( erff ), donc, obliger de revoir tout à zéro et j'avoue bien galérer là
J'ai donc reconçu mon remote en changeant le systéme de démmarrage du jeu :

Tout d'abord, le jeu doit démarrer obligatoirement par la commande !poupon.go dont voici le remote :

on *:text:!poupon.go*:#:{
{ /msg $chan 12 $nick 4merci ! Tu es enregistré comme joueur du13 " Poupon Game "4 :) | /set $+(%,px,$nick) 1 | /set [ [ $+(%,sa,$nick) ] ] 0 | /set[ [ $+(%,ps,$nick) ] ] 0 | /set[ [ $+(%,eu,$nick) ] ] 0 | /set[ [ $+(%,se,$nick) ] ] 0 | /set[ [ $+(%,ta,$nick) ] ] 0 | /set[ [ $+(%,hu,$nick) ] ] 0 }
}

Jusque là, tout va bien, avec cette commande, je défini les valeurs d'un joueur ( ex : px et sa correspondent au poids et à la santé du poupon).
Mais ensuite, tout va mal car une fois cette commande lancé, le joueur à la possibilitée seulement de lancer !poupon.jouer qui active le début de l'évolution du pupon. Le probléme : jusqu'à ce que le méssage " durée avant éclosion 15 minutes " s'affichent ça marche, aprés ça marche pas et le timerpoupon3 ne démarre pas ( je le vois par le bot ). Voici le remote :

on *:text:!poupon.jouer*:#:{
if ( [ [ $+(%,px,$nick) ] ] = 1 ) {
/msg $chan 12 $nick 4 tu reçoits un oeuf de13 poupon4 ! | $+(timerpoupon,$nick,1) 1 10 /msg $chan 12 $nick 4ton3 oeuf4 va éclore prochainement. 2Durée avant éclosion :7 20 minutes4 ! }
$+(timerpoupon,$nick,2) 1 300 /msg $chan 12 $nick 4ton3 oeuf4 va bientôt éclore. 2Durée avant éclosion :7 15 minutes4 ! }
$+(timerpoupon,$nick,3) 1 600 /msg $chan 12 $nick 4ton3 oeuf4 va bientôt éclore. 2Durée avant éclosion :7 10 minutes4 ! }
$+(timerpoupon,$nick,4) 1 900 /msg $chan 12 $nick 4ton3 oeuf4 ne va pas tarder à éclore. 2Durée avant éclosion :7 5 minutes4 ! }
$+(timerpoupon,$nick,5) 1 1140 /msg $chan 12 $nick 4éclosion imminente !!!! 2Durée avant éclosion :7 1 minute4 ! }
$+(timerpoupon,$nick,3) 1 1200 /msg $chan 12 $nick 4 enfin le moment est arrivé :) Voici un joli13 poupon4 ! }
}

Je compte ensuite me sérvir de cette commande unique !poupon.jouer pour lancer tout les passages de niveaux à niveaux ( ex : 1 à 2, 2 à 3, etc....), mais déja ça ne marche pas comme ça, innutile de tenter la suite. remarquez que si !poupon.go n'a pas été lancé avant, il devrait y avoir un else { à la fin de ce remote ci dessus car c'est la valeur px qui est défini dans la premiére en haut, qui vérifie dans la seconde si !poupon.jouer peut être éxécuter ou non. Hors en plaçant ce else, rien ne m'était dit si je ne respectais pas cette condition. Donc probléme aussi de placement de ( ou de { je pense.

Pour finir car c'est long n'est ce pas ? :p IL faut OBLIGATOIREMENT en résumant : 1 - !poupon.go (défini des valeurs, et, px à 1 pour vérifier dans la seconde commande, si la premiére a bien été lancé). 2 - !poupon.jouer (active l'éclosion de l'oeuf de poupon uniquement si la commande 1 a bien été lancé, sinon, un else que je n'arrive pas à placer dans le second remote doit avertir de le faire).

Je m'éxcuse si ce coup-ci je ne suis pas assez précis, mais cela est déja long :p
Merci de votre aide ( dont j'ai encore bien besoin)

Lodan51
0
S333 Messages postés 266 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 26 juin 2008
19 août 2005 à 12:10
Ok :) Bah t'es pas dans le faux, c'est juste un problème de }

Tu en as à la fin de chaque commande... ce qui n'est pas bon. Sous
"Mirc Editor" le code est bien mis en page, les { ouvre un bloc de
commandes de } le ferme le bloc est lui décalé.

on *:text:!poupon.jouer*:#:{ ;tu ouvre un bloc de commande lorsque l'on tape !poupon.jouer

avec le if { t'en ouvre un autre qui est dans le premier.

Tu le fermes après le timer1 (erreur) puis tu
ferme celui du on text après le timer2. timer3 et plus font donc partit
d'aucun bloc. et ne seront jamais activé...

En Clair, supprimme tous les } après les timer.

Change le nom du dernier timer(c'est un 3, au lieu d'un 6), mets 2 } c'est à dire: } } à la fin de ce timer6

ou avec un else :

$+(timerpoupon,$nick,6) 1 1200 /msg $chan 12 $nick 4 enfin le moment est arrivé :) Voici un joli13 poupon4!

}

else { notice $nick Tu ne t'es pas identifié à l'aide de la commande !poupon.go }

}

-----------------------------
Signature des parents :
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Lodan51 Messages postés 57 Date d'inscription lundi 4 juillet 2005 Statut Membre Dernière intervention 19 janvier 2006
19 août 2005 à 12:55
Ah bah voilà enfin que ça marche je te remercie S333.
Maintenant il va me faloir trouver le moyen de copier coller cette remote au complet pour chaque niveau que je voudrait lancer par des timers avec la commande !poupon.jouer. Car comme je le disais avant, cette commande vérifie donc la valeur px, si elle est de 1, alors c'est ce qui se passe dans le remote ci-dessus ( 2 sujets plus haut ) qui doit avoir lieu et une fois le poupon au niveau 2, c'est à dire l'oeuf éclos, en retappant à nouveau !poupon.jouer, je veux que ce soit la suite de ce remote qui soit activé et non la première. Cela car px sera égal à 2.
Si tu me suis, donc, il se peut que je revienne ici dans la journée lool.
En tout cas merci de ton aide :)

Lodan51
0
cs_Lodan51 Messages postés 57 Date d'inscription lundi 4 juillet 2005 Statut Membre Dernière intervention 19 janvier 2006
19 août 2005 à 16:56
Donc je reviens vers ce remote car maintenant tout fonctionne mais pour se sérvir de la même commande !poupon.jouer afin de lancer des timers en fonction du niveau px, je dois bien faire ça si je ne me trompe pas :

on *:text:!poupon.jouer*:#:{
if ( [ [ $+(%,px,$nick) ] ] = 1 ) {
/msg $chan 12 $nick 4 tu reçois un oeuf de13 poupon4 ! | $+(timerpoupon,$nick,1) 1 10 /msg $chan 12 $nick 4ton3 oeuf4 va éclore prochainement. 2Durée avant éclosion :7 20 minutes4 !
$+(timerpoupon,$nick,2) 1 300 /msg $chan 12 $nick 4ton3 oeuf4 va bientôt éclore. 2Durée avant éclosion :7 15 minutes4 !
$+(timerpoupon,$nick,3) 1 600 /msg $chan 12 $nick 4ton3 oeuf4 va bientôt éclore. 2Durée avant éclosion :7 10 minutes4 !
$+(timerpoupon,$nick,4) 1 900 /msg $chan 12 $nick 4ton3 oeuf4 ne va pas tarder à éclore. 2Durée avant éclosion :7 5 minutes4 !
$+(timerpoupon,$nick,5) 1 1140 /msg $chan 12 $nick 4éclosion imminente !!!! 2Durée avant éclosion :7 1 minute4 !
$+(timerpoupon,$nick,6) 1 1200 /msg $chan 12 $nick 4 enfin le moment est arrivé :) Voici un joli13 poupon4! | $+(timerpoupon,$nick,7) 1 1202 /notice $nick 6Tu as désormais accés à toutes les commandes car ton poupon est né. Tape !poupon.aide pour voir les commandes ! | inc $+(%,px,$nick) 1
}
else { notice $nick 6Tu ne t'es pas identifié à l'aide de la commande !poupon.go }
elseif ( [ [ $+(%,px,$nick) ] ] = 2 ) {
LA SUITE
}

Est ce bien cela ?
Sachant que les timers, les textes avec les inc des valeurs ne seront plus les mêmes

Lodan51
0
S333 Messages postés 266 Date d'inscription vendredi 8 juillet 2005 Statut Membre Dernière intervention 26 juin 2008
21 août 2005 à 13:58
Oui c'est ça :)



Maintenant il te reste à faire "La suite"

Mais, je pense que ton code sera optimisable par la suite, car
certaines choses se déclencheront toujours lors de !poupon.jouer, et
d'autres seront elles uniques au niveau.



Bonne chance
-----------------------
Signature des parents :
0
cs_Lodan51 Messages postés 57 Date d'inscription lundi 4 juillet 2005 Statut Membre Dernière intervention 19 janvier 2006
21 août 2005 à 15:34
Pour ça c'est bon je n'est plus trop de soucis car j'ai créé différente remotes pour chaque niveaux, un peu long mais bon, c'est le seul moyen que j'ai trouvé pour que ça marche en attendant :p
Sinon, une autre commande me pose des soucis, voici le remote :

on *:text:!poupon.miam*:#:{
if ($2 && [ [ $+(%,mi,$nick) ] ] >=1 && [ [ $+(%,px,$nick) ] ] >=1 ) {
/notice $nick 6Tu viens de donner à manger à ton poupon qui semble apprécier la nourriture :) | $+(timerpoupon,$nick,70) 1 5 /notice $nick 6Ton poupon gagne 1 centimétre, 1 gramme, et 5 % de santé ! | /dec $+(%,mi,$nick) 1 | /inc $+(%,sa,$nick) 5 | /inc $+(%,ta,$nick) 1 | /inc $+(%,ps,$nick) 1
}
else { notice $nick 6Tu ne peux pas nourrir ton poupon pour le moment ! }
}

Je tape !poupon.miam pour decrementer de 1 la valeur " mi ". Si cette valeur est inférieur à 1, le else entre en jeu, jusque là, c'est bon. A savoir que la valeur est incrementer par des timers lors de l'attente du passage d'un level à un autre. Mais, le soucis, même quand les " mi " sont superieur à zero, donc, que je peux m'en servir pour nourrir le poupon, c'est encore le else qui entre en jeu comme si je ne pouvais pas ?
En clair, impossible de nourrir le poupon même si j'ai des " mi " à 10 ! Le else prend toujours le desssu ?

Merci de ton aide

Lodan51
0
Nolson Messages postés 216 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 16 mars 2006
21 août 2005 à 16:29
Que vient faire le $2 dans ton if?
Tu ne t'en sers pas après.
Retire-le.

if ($2 && [ [ $+(%,mi,$nick) ] ] >=1 && [ [ $+(%,px,$nick) ] ] >=1 ) {
devient
if ( [ [ $+(%,mi,$nick) ] ] >=1 && [ [ $+(%,px,$nick) ] ] >=1 ) {
0
cs_Lodan51 Messages postés 57 Date d'inscription lundi 4 juillet 2005 Statut Membre Dernière intervention 19 janvier 2006
21 août 2005 à 17:46
D'accord mais là c'est carrément le remote au complet qui ne fonctionne plus, la commande !poupon.miam n'a plus aucun effets ?
!poupon.miam ne peut être lancé que si px et mi est égale au minimum à 1. Sinon si l'une ou l'autre ou bien les deux conditions sont fausses, le else doit agir, mais là, plur rien
Pourquoi ?
Encore merci !

Lodan51
0
Nolson Messages postés 216 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 16 mars 2006
21 août 2005 à 17:59
Je viens de voir : Décolle les 1 des = dans to if.
if ( [ [ $+(%,mi,$nick) ] ] >= 1 && [ [ $+(%,px,$nick) ] ] >= 1 ) {
0
Rejoignez-nous