On 1:text:*:#ton-salon: { If ($strip($1) == !ping) { Ver $nick | set %chan.ping $chan } If ($1 == !pong) { Ver $nick | set %chan.ping $chan } } On 1:CTCPREPLY:VERSION*:.msg %chan.ping %ping 3lag de 4 $calc($calc($ticks - %ticks)/1000) 13Secondes | unset %ping | unset %ticks | unset %chan.ping Alias ver ctcp $1 version | %ticks = $ticks | %ping = $1
J'attend avec impatience tout amélioration qui sont possible
salut, pour commencer, tes deux conditions sont équivalentes à une condition multiple vu que les commandes sont les mêmes pour les deux conditions, ça va te permettre de virer l'aliase Ver, aussi, tu fais un $strip seulement dans la première condition, donc ça va te permettre de faire un $strip pour les deux mots (!ping et !pong) en utilisant une variablepour tes variable globale, tu pourrais les rasembler de sortes à ce que tu puisses faire un /unset général à la fin de l'éxécution de ton programme ; /unset ping.*on *:text:*:#ton-salon: { var %strip = $strip($1) if ((%strip == !ping) || (%strip == !pong)) { ctcp $nick version set %ping.ticks $ticks set %ping.nick $nick set %ping.chan $chan }}et pourquoi n'utilises tu pas ctcp <nick> ping ? question de goût peut-être mais tout de même plus approprié pour ton code..voili voilou ^^ bonne continuation
plutôt que d'utiliser une variable %strip, tu fais tokenize 32 $strip($1-) tu devrais mettre ton alias ver en local (alias -l ver) pourquoi tu utilises le CTCP VERSION alors que le CTCP PING existe ?! "faut y penser", ben pas tant que ça ... c'est du déjà vu et c'est plutôt inutile ...
plutôt que d'utiliser une variable %strip, tu fais tokenize 32 $strip($1-)» j'y ai pensé :), mais en vaut t'il la peine? à voir..tu devrais mettre ton alias ver en local (alias -l ver)» si tu regardes l'extrait que j'ai mit dans mon commentaire l'aliase ver n'existe plus ^^pourquoi tu utilises le CTCP VERSION alors que le CTCP PING existe ?!» c'est ce que je lui ai fait remarquer ^^
# If ($strip($1) == !ping) {# Ver $nick | set %chan.ping $chan# }# If ($1 == !pong) {# Ver $nick | set %chan.ping $chan# } c'est quoi la différence entre ping et pong la dedans ?
panthouffle, personnelement, je trouve ca mal pensé de stoker le $1 dans une var avant de vérifier s'il est bien égal à ping ou pong, ca veut dire qu'a chaque phrase, le bot va setter la var %strip... un simpleif ($strip($1) == !ping || $v1 == pong)suffit...
* /if: ambiguous format alors svp, utilisez la syntaxe CORRECTE pour les if, merci :x if ((condition1) || (condition2) || (...)) { action } à la limite, s'il n'y a qu'une action, les { } sont facultatifs Deuxième raison pour le code ne fonctionne pas : le $v1 sera vide car la première condition n'est pas vérifiée, et du coup tous les $vN sont vides, il faut donc réutiliser $strip($1) ou alors faire comme j'ai dit : tokenize 32 $strip($1) ou ($1- mais ici $1 suffit)
$v1 reprend simplement $strip($1) peu importe que la premiere condition soit validée ou pas... et ca fait 1an que je code avec ( .. || ... ) et j'ai jamais eu de problème.mais bon, je te fais confiance vu notre différence de niveau en mIRC ^^
ah, erreur de ma part pour le $v1 == !pong, si je mets $v1 == pong c'est sûr que ça ne fonctionnera pas effectivement, ça fonctionne, mais je trouve que là c'est de l'abus de la part de Khaled :x il n'aurait du faire les $vN que si la condition était vérifiée ta syntaxe de parenthèses fonctionne chez toi parce qu'à chaque fois tu rajoutes des { }, même si tu n'as qu'une action. Si un jour tu codes en C, C++ (et sûrement d'autres langages), tu verras que la syntaxe que je te donne est la plus utilisée, et peut-être même une des seules qui fonctionne
Pas totalement faux mais <<pourquoi tu utilises le CTCP VERSION alors que le CTCP PING existe ?! >>CTCPREPLY:PING*: ??? non pas de tropen ce qui s'agis de l'oganisation c'est vrai que# If ($strip($1) == !ping) {# Ver $nick | set %chan.ping $chan# }# If ($1 == !pong) {# Ver $nick | set %chan.ping $chan c'est vrai que j'ai fait un peux long ^^ alors que comme uaip a proposer if ($strip($1) == !ping || $v1 == pong) aurais suffit. j'effectuerais les modification merci.
oui, désolé, erreur de ma part, j'ai oublié le '!' ^^.Araknis, ta réponse avec les { } m'a l'air bonne, et en effet, je code aussi en Perl, mais là aussi j'utilise toujours (... || ...). en fait je ne mets les doubles parentheses qu'a certaines conditions. par exemple, je veux :- soit un pseudo = pouet- soit les chiffres 1 et 3dans ce cas la (en mIRC) je mets :if ($nick == pouet || ((1 isin $1-) && (3 isin $1-)))[parce que pour les && je sépare ) && ( ].enfin voila, tu as sans doute raison a propos des { } et c'est toujours mieux de l'apprendre tard plutot que pas du tout :)
bon pour ce qui est de l'usage de conditions multiples (combinées) (&&, ||), en c++, la syntaxe c'est comme arkanis l'a dit, if ((condition1 == x) && (condition2 == y) || (condition3 == z)) et les accolades doivent s'appliquer s'il y a plus d'une commandes à effectuer, et la raison des paranthèses pour délimiter les conditions, c'est simplement pour éviter des erreurs de syntaxe ou de logique, tel que :if (condition1 == x && condition2 == y || condition3 == z)ceci pourrait arrivé :x && condition2y || condition3...et bonne idée pour le $v1, j'y avais pas pensé
Pour les (), chacun sa manière, après faut pas s'étonné de voir des personnes dire "j'ai passé la nuit a cherché, je comprend pas".Faut savoir ou et quand tu peux les enlevé/mettre surtout que la syntaxe change de version en version (de plus en plus restreinte, c'est mieux je trouve :))Par contre pour ce qui est des { }, la syntaxe change pas beaucoup, ils servent normalement a délimité les blocs de command.Un bloc ça veux dire 2 lignes.Generalement, on vois rarement des command enchainé sur une ligne du style :if (1 == 1) { echo -a ok | hadd -m table item data }(j'en connais qui tuerai pour pas voir ça :))mais vu qu'il n'y a pas de bloc, les {} sont pas nécéssaire ici :if (1 == 1) echo -a ok | echo -a ok1Il y a des cas ou ne pas mettre les { } sur deux command provoquera une erreur (car mettre les { } facilite la compréhension du code par mirc), mais je n'arrive pas a le généralisé.C'étais juste pour dire que les {} ne sont pas facultatif que quand il n'y a qu'une command :)
oui, celui qui tue, c'est moi :p je supporte pas les | pour ceux qui doutent encore : if (1 == 2) echo -a ok | echo -a ok1 n'affichera que "ok1"
Se souvenir du profil
Mot de passe oublié ? / Activation de compteCréer un compte
1 873 343 membres 164 nouveaux aujourd'hui 16 151 membres club