Donc j'ai essayé de faire ce que je pense à mon avis comment je vois la chose.
Je m'explique.
La tu as ta procédure auth que tu as faite djkenny.
Donc si je désire mettre cette procédure au "level" 100 minimum pour permettre de pouvoir s'authentifié.
voici comment je vois ça moi.. :
tcl
bind msg - auth mon:auth
proc mon:auth {nick host hand arg}{variable authed ;#on déclare la variable qui contiendra les utilisateurs identifié
#on ouvre le fichier et récupère les données qui sont dedansset a [open users.db]set users [split[read$a]"\n"]close$a #les données sont contenues dans $userswhile{[gets$a line]>= 0}{if{$line == "100: $authed"}{set salon [lindex$arg0]set pseudo [lindex$arg1]set pass [lindex$arg2]foreach u $users{set c [lindex$u0] #on verifi que le salon correspond au salon contenue dans la ligne du fichier, sinon on saute a la boucle suivanteif![string equal -nocase $c$salon]continue #on controle si le pseudo correspond, sinon on saute la boucle suivanteset ps [lindex$u1]if![string equal -nocase $ps$pseudo]continue #on vérifie si le mot de passe correspondset pa [lindex$u2]if![string equal $pa$pass]continue #pour finir on teste le hostset h [lindex$u4]if![string match -nocase $h"$nick!$host"]continue #arrivé la l utilisateur a remplis toutes les conditions pour s identifier donc on va le retenirset level [lindex$u3]set authed($nick,$salon)$level
putserv "NOTICE $nick :Vous êtes identifié sur le salon $salon" # et on fini la procédurereturn} #sinon arrivé la l utilisateur n'as pas d'accès donc on lui dit
putserv "NOTICE $nick :Vous n'avez pas d'accès"}}}
#le op maintenantset level(op)200
bind pub - !op mon:op
proc mon:op {nick host hand chan arg}global level
variable authed
#on vérifie que la personne est auth sur le salon et que le level est suffisantif{[info exists authed($nick,$chan)]&&$authed($nick,$chan)>=$level(op)}{
putserv "MODE $chan +o $nick"}else{
putserv "NOTICE $nick :Accès refusé"}}
parce-que je vois nul par que tu utilises la variable $users (qui contient le contenu du fichier)
ensuite tu essais de lire dans un fichier qui est déjà fermé et tu utilise la variable authed comme une var normal alors que c est un array
donc a mon avis y en a un de nous 2 qui n'a absolument rien compris
C'est en reconnaissant ses erreurs que l'on progresse
04/07/2011, 20:43 (Modification du message : 04/07/2011, 20:44 par djkenny.)
mais si tu veux vraiment que la personne ai le level 100 minimum pour se auther
tcl
proc mon:auth {nick host hand arg}{variable authed ;#on déclare la variable qui contiendra les utilisateurs identifié
#on ouvre le fichier et récupère les données qui sont dedansset a [open users.db]set users [split[read$a]"\n"]close$a #les données sont contenues dans $usersset salon [lindex$arg0]set pseudo [lindex$arg1]set pass [lindex$arg2]foreach u $users{set c [lindex$u0] #on verifi que le salon correspond au salon contenue dans la ligne du fichier, sinon on saute a la boucle suivanteif![string equal -nocase $c$salon]continue #on controle si le pseudo correspond, sinon on saute la boucle suivanteset ps [lindex$u1]if![string equal -nocase $ps$pseudo]continue #on vérifie si le mot de passe correspondset pa [lindex$u2]if![string equal $pa$pass]continue #pour finir on teste le hostset h [lindex$u4]if![string match -nocase $h"$nick!$host"]continue #arrivé la l utilisateur a remplis toutes les conditions pour s identifier donc on va le retenirset level [lindex$u3]if{$level<100}continueset authed($nick,$salon)$level
putserv "NOTICE $nick :Vous êtes identifié sur le salon $salon" # et on fini la procédurereturn} #sinon arrivé la l utilisateur n'as pas d'accès donc on lui dit
putserv "NOTICE $nick :Vous n'avez pas d'accès"}
C'est en reconnaissant ses erreurs que l'on progresse