TCL problème avec une variable
#3
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:
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
  }
}


C'est en reconnaissant ses erreurs que l'on progresse Wink
Répondre Avertir


Messages dans ce sujet
TCL problème avec une variable - par mecmec - 28/07/2011, 17:05
RE: TCL problème avec une variable - par BdS - 29/07/2011, 00:29
RE: TCL problème avec une variable - par djkenny - 29/07/2011, 09:18

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté