Variable

J4Gu4R Messages postés 385 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 3 juillet 2007 - 17 août 2004 à 14:50
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 - 18 août 2004 à 23:07
voila j'apprend petit a petit les scripting, et maintenant j'voudrait passer aux variables. G chercher des tas de tuto mais j'suis toujours incapable de faire un truc par exemple :

j'voulais faire en sorte k'un echo me prévienne quand chaque nick arrive dans mon salon mais seulement jusqu'au 20ème nick après ça s'arrete.

on *:join:#: {
if $active !ischan { halt }
;vérifie ke la fenetre est bien un salon
var %join = 0
;variable initialisé à 0
:debut
inc %join
; valeur donnée
if $nick($chan,%join) == $me { goto debut }
;si nick ki rejont c moi retour au début
echo $me($chan,%join) $1-
;sinon le script continue l'echo $1-
if %join = 20 { goto debut }
;ensuite si la boucle est inférieur a 20 elle continue sinon à 20 ou + elle s'arrête
}

probleme j'ai du mélanger quelque chose en tout cas ça marche pas...

ps : je sais que ça sers a rien mais bon pour apprendre C toujours bien d'essayé des truc voila

merci à vous

-J4Gu4R-

10 réponses

cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
17 août 2004 à 15:10
ca peut pas etre bon
décortiques ce que tu fais :
a chaque fois que quelqu'un rejoins un salon , tu remets la variable a zéro :
var %join = 0
;variable initialisé à 0
:debut
inc %join
puis tu incrémentes
de plus if $active !ischan { halt } < je pige rien a ce que tu fais ; tu cherches a savoir si la fenêtre ou tu es , l'active est un salon ? :(
sincèrement je pige pas trop ton code je t'en fais un que tu pourras ptet adapter :

On *:Join:#:{
;tu mets la var globale a 0 si c'est toi qui rejoint
if ($nick == $me) { set %join [ $+ ( $chan ] ] 0 }
if (%join [ $+ ( $chan ] ] <= 20) { echo $chan : $nick a rejoint $chan }
}

j'ai mis une variable par salon je pense que c'est mieux , les crochets sont ptet pas très compréhensibles j'avoue ...
tu ne peux pas te servir de "var %x gnagna" ici car ce genre de variables , dites locales , sont effacées a la fin du "on join" et donc ca marcherait pas pour deux plusieurs nicks de suite ...
en espérant t'avoir éclairé un peu

Pada
;ensuite tu incrémentes si ce n'est pas toi
else { inc %join [ $+ ( $chan ] ] }

}
PaDa
0
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
17 août 2004 à 15:11
RAH j'ai poliotté : voici le code sans polio :

On *:Join:#:{
;tu mets la var globale a 0 si c'est toi qui rejoint
if ($nick == $me) { set %join [ $+ ( $chan ] ] 0 }
;ensuite tu incrémentes si ce n'est pas toi
else { inc %join [ $+ ( $chan ] ] }
if (%join [ $+ ( $chan ] ] <= 20) { echo $chan : $nick a rejoint $chan }
}

dsl ...

PaDa
0
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
17 août 2004 à 15:13
bon allé je désespère pas ...

On *:Join:#:{
;tu mets la var globale a 0 si c'est toi qui rejoint
if ($nick == $me) { set %join [ $+ [ $chan ] ] 0 }
;ensuite tu incrémentes si ce n'est pas toi
else { inc %join [ $+ [ $chan ] ] }
if (%join [ $+ [ $chan ] ] <= 20) { echo $chan : $nick a rejoint $chan }
}

prochain post j'arrête de scripter ...
PaDa
0
J4Gu4R Messages postés 385 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 3 juillet 2007
17 août 2004 à 16:50
mdrrrrrrr t'a pas bien dormi cette nuit??

ok dac' j'avais cru comprendre que les variables locales était effacée une fois le script terminé donc j'm'étais dit dans mon code après 20 nick, bon ok G pigé maintenant.

et en fait ske tu pigeais tout a l'heure c'est ke j'essayais de faire comprendre au script ke sur deux salon le code ne ferai pas 10 personnes sur un et 10 sur l'autre mais bien 20 nick sur chacun des deux :-)

et puis t'inkiète pas continue de scripté comment on ferai après si les bons arrete hein?? lol

ps : si tu connait un bon tuto j'suis preneur parce ke pour l'instant j'pige pas trop ceux ke j'ai vu ou trop incomplet... merci a toi PaDa pou ton aide précieuse

-J4Gu4R-
0

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

Posez votre question
J4Gu4R Messages postés 385 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 3 juillet 2007
17 août 2004 à 17:15
je vient d'essayer ton :

#messages4 off
On *:Join:#:{
if ($nick == $me) { set %join [ $+ [ $chan ] ] 0 }
else { inc %join [ $+ [ $chan ] ] }
if (%join [ $+ [ $chan ] ] <= 20) { echo -s 4 $chan : $nick a rejoint $chan }
}
#messages4 end

le pti probleme c'est que la boucle s'arrête pas au 20ème nick lol
faudrait peut etre ke j'mette un ":fin" et " goto fin " quelque part non?

-J4Gu4R-
0
J4Gu4R Messages postés 385 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 3 juillet 2007
17 août 2004 à 17:33
Genre :

#messages4 off
On *:Join:#:{
if ($nick == $me) { set %join [ $+ [ $chan ] ] 0 }
else { inc %join [ $+ [ $chan ] ] }
if (%join [ $+ [ $chan ] ] <= 20) { echo -s 4 $chan : $nick a rejoint $chan | ( goto fin ) }
:fin
}
#messages4 end

marche pas en plus si j'ai le salon J4Gu4R et le salon J4Gu4R94 ça marche ke pour le salon avec le chiffre mais bon C pas trop ça le probleme lol, Ctai juste un coup d'essai comme ça

j'sais meme pas pourquoi j'poste le message...
j'doit etre fatigué aussi :-)
0
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
17 août 2004 à 17:40
Evite les goto dans la mesure du possible . Ce n'est que mon avis mais ca permet pas de bien voir ce qu'on fait
Ensuite tu n'as pas de boucle : une boucle c'est dans un remote ou un évènement si tu faisais plein de fois la même chose ...
Exemple j'affiche les nombres de 1 a 10:
Alias unadix {
var %i 1
while (%i <= 10) {
echo -a >> %i !
inc %i
}
echo -a >> Fini !
}
Ca c'est une boucle .
mon truc n'arrête pas d'incrémenter %join#salon , il arrête de faire l'echo .
tu peux faire ca pour que ca arrête aussi d'incrémenter :

On *:Join:#:{
;tu mets la var globale a 0 si c'est toi qui rejoint
if ($nick == $me) { set %join [ $+ [ $chan ] ] 0 }
;ensuite tu incrémentes si ce n'est pas toi
elseif (%join [ $+ [ $chan ] ] <= 20) {
inc %join [ $+ [ $chan ] ]
echo $chan : $nick a rejoint $chan
}
}

PaDa
0
J4Gu4R Messages postés 385 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 3 juillet 2007
17 août 2004 à 18:45
ha ok ok j'commence a piger un peu.
ok merci PaDa j'vais voir un peu ça et puis ça m'donne une autre idée en + lol
c'est sympa merci encore...

-J4Gu4R-
0
cs_tiot Messages postés 83 Date d'inscription samedi 9 novembre 2002 Statut Membre Dernière intervention 18 août 2004
18 août 2004 à 22:34
"Evite les goto dans la mesure du possible ."

Il ne faut pas les éviter, mais plutôt les bannir ! Cela rend les sources complètements illisible ! Et c'est contraire à la notion de langage struturé !

Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh bruzum-ishi krimpatul
0
cs_PaDa Messages postés 1804 Date d'inscription mardi 15 juillet 2003 Statut Membre Dernière intervention 22 septembre 2009 5
18 août 2004 à 23:07
Lol . ya eu un long débat la dessus sur scriptsdb je vais pas m'étendre et je compte pas relancer ce genre de polémique , mais bon c'est surtout paske toua humain tu trouves pas ca joli . Une fois compilés les scripts donnent parfois (souvent?)strictement la même chose avec un goto ou un while et ya beaucoup d'autres choses complexes et intéressantes sur lesquelles se prendre la tête plutot que ce genre de règle stériles que s'infligent certains soit disant puristes...
Un code propre ne souffrira pas d'un goto au milieu s'il est de très bonne qualité , et ce quelque soit le langage...
Je vais cependant dans ton sens par habitude et pour une optimisation supposée et une lisibilité accrue dans la plupart des cas mais bon prends pas des boutons , regarde , t'en perds déja ton francais sur les deux dernières lignes loul
Pada
0
Rejoignez-nous