Bonjour étant novice en tcl j'ai voulu essayer de codé qu'elle que chose en prenant l'aide du code de aliaseangelus de son tcl autorised mais il me detect une erreur a la ligne 1 donc ici =>
Effectivement, il y a une erreur, mais c'est dans la ligne:
tcl
::msgcat::mcset fr msg1 "\00314Felicitation \0034° \0033$nick \0034° \037\0031a etait ajoutà dans la liste des opÃrateur de $chan sur l'host %host\037\0031"
A mon avis, c'est %chan et non pas $chan (et idem pour $nick), ce qui donnerait:
tcl
::msgcat::mcset fr msg1 "\00314Félicitations \0034° \0033%nick \0034° \037\0031a été ajouté dans la liste des opérateur de %chan sur l'host %host\037\0031"
(25/02/2014, 23:59)CrazyCat a écrit : Effectivement, il y a une erreur, mais c'est dans la ligne:
tcl
::msgcat::mcset fr msg1 "\00314Felicitation \0034° \0033$nick \0034° \037\0031a etait ajoutà dans la liste des opÃrateur de $chan sur l'host %host\037\0031"
A mon avis, c'est %chan et non pas $chan (et idem pour $nick), ce qui donnerait:
tcl
::msgcat::mcset fr msg1 "\00314Félicitations \0034° \0033%nick \0034° \037\0031a été ajouté dans la liste des opérateur de %chan sur l'host %host\037\0031"
J'ai une erreur a le ligne 36 voici l'erreur apres un rehash
tcl
|23:19:40| <Protector>[23:19:48] Je crée le fichier operateur.db
|23:19:40| <Protector>[23:19:48] Tcl errorinfile 'air.conf':
|23:19:40| <Protector>[23:19:48] can't read"::autorise::pseudo": no such variable
|23:19:40| <Protector>while executing
|23:19:40| <Protector>"bind join - "$::autorise::pseudo*" [namespace current]::joinauto"
|23:19:40| <Protector>(file"scripts/op.tcl" line 36)
|23:19:40| <Protector> invoked from within
|23:19:40| <Protector>"source scripts/op.tcl"
|23:19:40| <Protector>(file"air.conf" line 115)
|23:19:40| <Protector>[23:19:48]* FICHIER DE CONFIGURATION NON CHARGE (INTROUVABLE OU ERREUR)
-
DCC session closed
(26/02/2014, 00:27)CrazyCat a écrit : J'ai l'impression que tu n'as pas le script complet ou bien que tu l'as mal configuré.
Où l'as-tu récupéré exactement ?
Je les pris ici c le tcl de aliasangelus de autorised.tcl que j'ai esseyer de modifié...
Déjà tu as un gros soucis..
Comme la dit Crazy c'est %chan dans le message de msgcat et non pas $chan.
En faite msgcat gère le format de msgcat sous cette forme pour après lors d'un appel dans un putserv par exemple va se retrouver en $...
Je te montre un exemple :
Message msgcat :
tcl
::msgcat::mcset fr msg1 "\00314Felicitation \0034° \0033%nick \0034° \037\0031a etait ajoutà dans la liste des opÃrateur de %chan sur l'host %host\037\0031"
Voici comment faire.
De plus ont peut voir que ton msgcat "msg1" n'es stipuler nulle part dans ton code..
Donc si tu déclare une phrase en msgcat, et que tu ne la stipule pas dans ton code de join par exemple ou autre.. Tu aura obligatoirement une erreur.
D'ou ton erreur "que l'eggdrop ne trouve pas msgcat, et/ou ne trouve pas la variable"
Essaye de roulez avec une voiture sans essence, tu verra que sa voudra pas.
Je regarderais mieux plus tard, Mais je pense pas me tromper dans ce que je dit :)
EDIT : Je ferais aussi une modifications sur une chose, Car y'a un bug dans le code je viens de le voir en regardant le tcl.
Au sujet des pseudos y'a un bugs me semble t-il
Déjà tu as un gros soucis..
Comme la dit Crazy c'est %chan dans le message de msgcat et non pas $chan.
En faite msgcat gère le format de msgcat sous cette forme pour après lors d'un appel dans un putserv par exemple va se retrouver en $...
Je te montre un exemple :
Message msgcat :
tcl
::msgcat::mcset fr msg1 "\00314Felicitation \0034° \0033%nick \0034° \037\0031a etait ajoutà dans la liste des opÃrateur de %chan sur l'host %host\037\0031"
Voici comment faire.
De plus ont peut voir que ton msgcat "msg1" n'es stipuler nulle part dans ton code..
Donc si tu déclare une phrase en msgcat, et que tu ne la stipule pas dans ton code de join par exemple ou autre.. Tu aura obligatoirement une erreur.
D'ou ton erreur "que l'eggdrop ne trouve pas msgcat, et/ou ne trouve pas la variable"
Essaye de roulez avec une voiture sans essence, tu verra que sa voudra pas.
Je regarderais mieux plus tard, Mais je pense pas me tromper dans ce que je dit :)
EDIT : Je ferais aussi une modifications sur une chose, Car y'a un bug dans le code je viens de le voir en regardant le tcl.
Au sujet des pseudos y'a un bugs me semble t-il
Merci Aliasangelus je vais regardé sa de plus prés...
Voici le code TCL refait.
Alors regarde bien ton code à toi, Et regarde mes modifications.
Et dit moi ce que tu trouve de différents, Et bien sur test le code car je ne peux le tester disposant d'aucun eggdrop.
Voici le code :
tcl
namespaceeval ::autorise{
# Nous vÃrifions si ya le package requis pour le msgcat.package require msgcat # Nous mettons la langue de msgcat en français.
::msgcat::mclocale fr
# Nom du fichier ou seront les pseudos autorisÃ.variable fichiers "operateur.db" # Les messages de msgcat.
::msgcat::mcset fr Join "\0031Auto-Op Accepter Pour \0034 %s \0031Sur \0034%s"
::msgcat::mcset fr Ajout "\00314Félicitation \0034° \0033%s \0034° \037\0031a etait ajoutà dans la liste des opÃrateur de %s sur l'host %s\037\0031"
::msgcat::mcset fr Del "\0031Auto-Op Supprimé Pour \0034%s \0031Sur \0034%s" # Listes des binds.
bind join - "$::autorise::salons *"[namespace current]::joinauto
bind pub o "!opadd"[namespace current]::+ajout
bind pub o "!opdel"[namespace current]::-ajout
# ProcÃdure de crÃation du fichier Autorise.if{![file exists $fichiers]}{setload[open$fichiers w+]close$load
putlog "\2Je crÃe le fichier $fichiers\2"} # ProcÃdure de join.proc joinauto {nick host hand chan}{variable salons
set k [lindex[split$nick |]0]set vnick $nickif[isbotnick $nick]returnif{[acceesalon $nick]==0}{
putserv "privmsg $chan :[::msgcat::mc Join $nick $chan]"
pushmode $salons +o $nickreturn0} # ProcÃdure d'ajout de pseudo autorise.proc +ajout { nick host hand chan arg }{variable fichiers
variable salons
set temp [lindex$arg0]if{$temp == ""}{
putserv "NOTICE $nick :Utilisation: !opadd <pseudo>"
putserv "NOTICE $nick :Exemple !opadd $nick"return0}set lis "[fread $fichiers]"if{[lsearch -exact "x $fichiers""$temp"]!="0"}{lappend lis $temp
fwrite $fichiers$temp
putserv "privmsg $chan :[::msgcat::mc Ajout $nick $chan $host]"return0}
putserv "NOTICE $nick :\002Erreur:\002$temp\002 \0034est dÃjà dans la liste\0034"return0} # ProcÃdure de suppression de pseudo autorise.proc -ajout { nick host hand chan arg }{variable fichiers
variable salons
set temp [lindex$arg0]if{$temp == ""}{
putserv "NOTICE $nick :Utilisation: !opdel <pseudo>"
putserv "NOTICE $nick :Exemple: !opdel $nick"return0}set autoajout "[fread $fichiers]"set tmp ""foreach bb $autoajout{if{![string match $temp$bb]}{lappend tmp $bb}}
fdel $fichiers$tmp
putserv "privmsg $chan :[::msgcat::mc Del $nick $chan]"return0} # ProcÃdure pour voir la liste des autorise.
bind pub o "!opliste"[namespace current]::autoproc auto { nick host hand chan arg }{variable fichiers
variable salons
set fp [open$fichiers"r"]set fc -1
putserv "notice $nick :\037\00300,01 -> Liste des operateur. <-\037\003"while{![eof$fp]}{set data [gets$fp]incr fc
if{$data!=""}{
putserv "notice $nick :\0031\[\0034$data\0031\0031 ]\0031"}
unset data
}close$fp
putserv "notice $nick :\037\00300,01 -> Fin de la liste des operateur. <-\037\003"} # Ne pas toucher Systeme Proc !!proc acceesalon {nick}{variable fichiers
set fa [open$fichiers r]set access 0while{![eof$fa]}{set ligne [gets$fa]if{[string tolower $nick] == [string tolower $ligne]}{set access 1}}close$fareturn$access} # ProcÃdure d'Ãcriture de fichier.proc fwrite {fi arg}{set f [open$fi a]puts$f$argclose$f} # ProcÃdure de suppression de fichier.proc fdel {fi arg}{set f [open$fi w]puts$f$argclose$f} # ProcÃdure de lecture de fichier.proc fread {fi}{set f [open$fi r]set t [gets$f]close$freturn$t}}
putlog "\002\0034Chargement.. \002\037\0031op.tcl V1.0 by toretto\037\0031"
Je les recommancé de zero le code maintenanc aucune erreur en PL mais parcontre quand je tape example !opadd pseudo il me l'ajoute bien mais il le mais pas +o sur le chan demandé voici le code
tcl
namespaceeval ::autorise{
# Nous vérifions si ya le package requis pour le msgcat.package require msgcat # Nous mettons la langue de msgcat en français.
::msgcat::mclocale fr
# Salon back ou va se situé l'autorise.variable salons "#Accueil" # Nom du fichier ou seront les pseudos autorisé.variable fichiers "operateur.db" # Les messages de msgcat.
::msgcat::mcset fr msg1 "\00314Felicitation \0034° \0033%nick \0034° \037\0031a etait ajoute dans la liste des operateur de %chan sur l'host %host\037\0031" # Procédure de création du fichier Autorise.if{![file exists $fichiers]}{setload[open$fichiers w+]close$load
putlog "\2Je crée le fichier $fichiers\2"} # Procédure de join.
bind join - "$::autorise::salons *"[namespace current]::joinautoproc joinauto {nick host hand chan}{variable salons
set k [lindex[split$nick |]0]set vnick $nickif[isbotnick $nick]returnif{[acceesalon $nick]==1}{}
putserv "privmsg $chan :[::msgcat::mc msg1 $nick $chan $host]"
putmode $salons +o $nickreturn1} # Procédure d'ajout de pseudo autorise.
bind pub o "!opadd"[namespace current]::+ajout
proc +ajout { nick host hand chan arg }{variable fichiers
variable salons
set temp [lindex$arg0]if{$temp == ""}{
putserv "NOTICE $nick :Utilisation: !opadd <pseudo>"
putserv "NOTICE $nick :Exemple !opadd $nick"return0}set lis "[fread $fichiers]"if{[lsearch -exact "x $fichiers""$temp"]!="0"}{lappend lis $temp
fwrite $fichiers$temp
putserv "NOTICE $nick :\002$temp\002 \0034a été ajouté\0034"
putserv "PRIVMSG $salons :\002$temp\002 \0034est ajouté au operateur\0034"return0}
putserv "NOTICE $nick :\002Erreur:\002$temp\002 \0034est déjà dans la liste des operateur\0034"return0} # Procédure de suppression de pseudo autorise.
bind pub o "!opdel"[namespace current]::-ajout
proc -ajout { nick host hand chan arg }{variable fichiers
variable salons
set temp [lindex$arg0]if{$temp == ""}{
putserv "NOTICE $nick :Utilisation: !opdel <pseudo>"
putserv "NOTICE $nick :Exemple: !opdel $nick"return0}set autoajout "[fread $fichiers]"set tmp ""foreach bb $autoajout{if{![string match $temp$bb]}{lappend tmp $bb}}
fdel $fichiers$tmp
putserv "NOTICE $nick :\002$temp\002 \0034supprimé des operateur\0034"
putserv "PRIVMSG $salons :\002$temp\002 \0034est supprimé des operateur\0034"return0} # Procédure pour voir la liste des autorise.
bind pub o "!oplist"[namespace current]::autoproc auto { nick host hand chan arg }{variable fichiers
variable salons
set fp [open$fichiers"r"]set fc -1
putserv "notice $nick :\037\00300,01 -> Liste des operateur. <-\037\003"while{![eof$fp]}{set data [gets$fp]incr fc
if{$data!=""}{
putserv "notice $nick :\0031\[\0034$data\0031\0031 ]\0031"}
unset data
}close$fp
putserv "notice $nick :\037\00300,01 -> Fin de la liste des operateur. <-\037\003"} # Ne pas toucher Systeme Proc !!proc acceesalon {nick}{variable fichiers
set fa [open$fichiers r]set access 0while{![eof$fa]}{set ligne [gets$fa]if{[string first [string tolower $ligne][string tolower $nick]]==0}{set access 1}}close$fareturn$access} # Procédure d'écriture de fichier.proc fwrite {fi arg}{set f [open$fi a]puts$f$argclose$f} # Procédure de suppression de fichier.proc fdel {fi arg}{set f [open$fi w]puts$f$argclose$f} # Procédure de lecture de fichier.proc fread {fi}{set f [open$fi r]set t [gets$f]close$freturn$t}}