salut,
lorsque tu set ta variable active au début du tcl, tu crées une variable globale. Par contre lorsqu'une variable est créée dans une procédure elle est dite locale. Ces 2 variables, même si elles portent le même nom, ne sont donc pas liées. Il faut donc appeler ta variable globale dans la procédure.
Pour cela, 2 manières:
ou:
sinon pour le code, tu crées 2 procédures l'une dans l autre, je doutes que se soit ce que tu voulais faire, essais comme ça:
lorsque tu set ta variable active au début du tcl, tu crées une variable globale. Par contre lorsqu'une variable est créée dans une procédure elle est dite locale. Ces 2 variables, même si elles portent le même nom, ne sont donc pas liées. Il faut donc appeler ta variable globale dans la procédure.
Pour cela, 2 manières:
tcl
#à placer au début de la proc
global active
ou:
tcl
#ici on indique à tcl ou chercher la variable (les :: indique que c est une variable globale)
set ::active 1
sinon pour le code, tu crées 2 procédures l'une dans l autre, je doutes que se soit ce que tu voulais faire, essais comme ça:
tcl
############################# Robot pour verifer les connexions (non fini) #####################
set active 0
bind raw - "NOTICE" myproc
bind msg - "MD5" exemple3:repond3
proc myproc { from keyword arg } {
global active
if {[string match "*connecting on port*" $arg]} {
set nnickname [lindex $arg 9]
##Si le if ci-dessus change la valeur de la variable 'active' il execute pas le script ci-dessous
#ici $active étant un bolean (1 ou 0) on est pas obligé de mettre ==0 il sufi de mettre un ! devant et pour ==1 ne rien mettre
if {!$active} {
putserv "PRIVMSG #connect :commande gline + commande privmsg pour connexion non autorisé."
}
}
}
##Detection du message que le robot recoit en pv
##/PRIVMSG eggdrop :MD5 <le_code_md5_généré_par_un_applet>
proc exemple3:repond3 {nick uhost handle arg} {
global active
##xxxxx c'est le mot de passe
set Pass "xxxxx"
## le md5 avec le nick et le Pass et le $arg dernier mot aprés message "MD5 <xxxxxxxxxxxxxxxxxxx>"
if {[md5 $nick$Pass]==$arg} {
putserv "PRIVMSG #connect :Verification OK pour $nick - hash [md5 $nick$Pass]"
##le set ne veut pas changer la variable je comprend pas - GROS PROBLEME sinon la personne risque le gline meme si le md5 est bon
#ici on a mis global au début de la proc donc pas besoin de mettre les :: devant active
set active 1
##changement de variable obligatoire pour pas que le if en bas ne s'execute
}
}