Communauté Eggdrop
problème sur un principe de tcl [résolu] - Version imprimable

+- Communauté Eggdrop (https://forum.eggdrop.fr)
+-- Forum : Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8)
+--- Forum : Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4)
+--- Sujet : problème sur un principe de tcl [résolu] (/showthread.php?tid=398)



problème sur un principe de tcl [résolu] - systak - 13/05/2009

bonjour tout le monde donc voilà le morceau de code qui va suivre est juste un petit exercice pour moi pour comprendre bien proprement comment fonctionne une exception dans un bind donc voilà le bind que je test de faire

principe une liste de nick admin a ne pas pouvoir kick ou meme de host
problème aucune réaction
Code :
set nadmin "Orion,systak,test"


bind pub - !xkick kick

proc kick {nick uhost hand chan arg} {
    global nadmin hadmin
    set n0 [lindex $arg 1]
    set c0 [lindex $arg 2]
        foreach nadmin $nadmin {
        if {[string match -nocase $nadmin]}  {
  putquick "kick $c0 $n0 kicked"
  }
}
}

je précise oui je débute vraiment sur ce sujet xD

merci de votre aide


RE: problème sur un principe de tcl - CrazyCat - 13/05/2009

Le but est donc, si je comprends bien, de kicker une personne sauf si elle est dans la liste ?

Le parcours du tableau est un peu excessif alors que tu peux rechercher directement dans la liste, et en plus il est faux: tu ne compares rien dans ton "string match", et il y a un problème de logique.
Imaginons que tu fasses !xkick systak, lorsque tu vas parcourir ton tableau, le premier item rencontré sera Orion, donc rien n'interdit (à ce moment) de kicker systak, ce qui sera fait. Le second bloquera (mais trop tard) et le troisième autorisera (et un kick sera fait sur un utilisateur déjà absent).

Voici plutôt ce que j'imagine:
TCL
set nadmin "Orion,systak,test"
bind pub - !xkick kick
proc kick {nick uhost hand chan arg} {
   set n0 [string tolower [lindex $arg 0]]
   set protected [split [string tolower $::nadmin] ","]
   if {[lsearch $protected $n0] == -1} {
      putquick "kick $chan $n0 kicked"
   }
}





RE: problème sur un principe de tcl - systak - 13/05/2009

merci bien pour les explications Smile je vais m exerce a tout sa Smile


RE: problème sur un principe de tcl - systak - 13/05/2009

j'ai essayer avec ce que tu a mis la j'ai une réponse en pl

[19:41] Tcl error [kick]: wrong # args: no script following "{[lsearch $protected $n0] == -1}" argument

de plus en regardant le code tout a l'heure a la fin tu met

}
} tu a donc un } en trop ou bien tu a oublie il ligne xD lol et la je doit dire que je comprend pas le retour en pl :s


RE: problème sur un principe de tcl - heretoc - 13/05/2009

Comme il ta dit ces comme il l'imagine donc ce n'est pas forcement un code fonctionnel juste de quoi te permettre de te debrouiller.


RE: problème sur un principe de tcl - MenzAgitat - 13/05/2009

il manque un "{" :

TCL
set nadmin "Orion,systak,test"
bind pub - !xkick kick
proc kick {nick uhost hand chan arg} {
   set n0 [string tolower [lindex $arg 0]]
   set protected [split [string tolower $::nadmin] ","]
   if {[lsearch $protected $n0] == -1} {
      putquick "kick $chan $n0 kicked"
   }
}





RE: problème sur un principe de tcl - systak - 13/05/2009

héhé merci MenzAgitat c'est vrai que la en voyant la correction je me suis ouaaaa trop bête ^^'


RE: problème sur un principe de tcl - CrazyCat - 13/05/2009

J'ai modifié mon exemple pour le corriger, désolé de cette bévue Smile


RE: problème sur un principe de tcl - systak - 14/05/2009

looool CrazyCat t'inquiète c'était ironique biensure hein mon niveau reste très bas mais je bidouille on va dire xD pas toujours dans l'ordre des choses certes mais bon :p mais effectivement je suis arrive a ce que je voulais faire me reste 2 ou 3 fixe a faire sur le group de tcl mais c'est sur la bonne voix Smile