Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
je rencontre un souci concernant une erreur assez génante car je trouve pas d'ou vient le souci.le Service est bien link au serveur,aucun souci dessus.
erreurs PL
Tcl error [::eva_tcl::xop]: can't read "eva(idx)": no such variable
Code: TCL
bind dcc n xop [namespace current]::xop
proc xop {nick idx args} {
variable eva
if [valididx [set [namespace current]::eva(idx)]] {
set chan [lindex $args 0]
set opnick [lindex $args 1]
if {$chan==""} {
putdcc $idx "\2Syntax:\2 .xop <Salon> <pseudo>."
return 0
}
if {$opnick==""} {
putdcc $idx "\2Syntax:\2 .xop <Salon> <pseudo>."
return 0
}
putdcc $eva(idx) ":$eva(serv) MODE $chan +o $opnick"
putdcc $eva(idx) ":$eva(serv) $eva(log) :\2\[Commande\]\21 $nick \2->\2 xop"
catch {close $eva(idx)}
}
}
merci de votre aide.
Cordialement
Hors ligne
Bonjour,
Sans le code entier, on ne peux t'aider car je ne sais pas si tu es dans un namespace, par exemple.
Hors ligne
désolé j'avais zappé de mettre le code en entier. donc oui il est dans le namespace. après n’ayant pas codé depuis un bon bout de temps je savais pas trop si le mieux était au lieu d'utilisé set eva(serv) il serais pas mieux de faire variable serverlink ect ..
Code: TCL
namespace eval ::eva_tcl {
variable version "0.2 RC1"
variable eva
set eva(serv) "eva.***.net"
set eva(ip) "ip"
set eva(port) "4400"
set eva(pwdlink) "motdepass"
set eva(info) "TCL Services"
set eva(nick) "Eva_TCL"
set eva(identd) "Data"
set eva(host) "localhost.com"
set eva(nom) "Services TCL"
set eva(log) "#Services"
set eva(quit01) "Redemarage Service."
set eva(quit02) "Fermeture Service."
proc checkconnect {} {
if {![info exists eva(idx)]} { utimer 30 [namespace current]::checkconnect } else { xconnect:serv }
}
proc xconnect:serv {} {
variable eva
if [catch {set eva(idx) [connect $eva(ip) $eva(port)]} err] {
putlog "Connection error :$err"
return
}
putdcc $eva(idx) "PASS $eva(pwdlink)"
putdcc $eva(idx) "SERVER $eva(serv) 1 [unixtime] [unixtime] J09 :TCL Services"
putdcc $eva(idx) ":$eva(serv) NICK $eva(nick) 1 1 $eva(identd) $eva(ip) $eva(serv) :$eva(info)"
putdcc $eva(idx) ":$eva(nick) MODE $eva(nick) +ikdowgs 16384"
putdcc $eva(idx) ":$eva(nick) JOIN $eva(log)"
putdcc $eva(idx) ":$eva(nick) MODE $eva(log) +nOtsv $eva(nick)"
putdcc $eva(idx) ":$eva(nick) MODE $eva(log) +o $eva(nick)"
putdcc $eva(idx) ":$eva(nick) TOPIC $eva(log) :1\[Eva Service\] Bienvenue sur le Channel des Logs de \2$eva(nick)\2 !"
control $eva(idx) [namespace current]::controling_server
utimer 10 [namespace current]::verify
}
proc verify {} {
variable eva
if [valididx [set [namespace current]::eva(idx)]] {
utimer 30 [namespace current]::verify
} else {
xconnect:serv
}
}
proc controling_server {idx arg} {
variable eva
set arg1 [lindex [split $arg " "] 0]
set arg2 [lindex [split $arg " "] 1]
set arg3 [lindex [split $arg " "] 2]
set arg4 [lindex [split $arg " "] 3]
set arg5 [lindex [split $arg " "] 4]
set arg6 [lindex [split $arg " "] 5]
set arg7 [lindex [split $arg " "] 6]
set arg8 [lindex [split $arg " "] 7]
set arg10 [string trim [lrange [split $arg " "] 3 end] :]
if [valididx [set [namespace current]::eva(idx)]] {
if {$arg2=="PING"} {
putdcc $eva(idx) ":$eva(serv) PONG $eva(ip) :$eva(serv)"
}
if {$arg2=="QUIT"} {
set pseudo [string trim [lindex $arg 0] :]
set message [string trim [lrange $arg 2 end] :]
if [string equal "Killed" [lindex $message 0]] {
putdcc $eva(idx) ":$eva(serv) PRIVMSG $eva(log) :Kill $pseudo vient d'être kill du serveur : $message"
} else {
putdcc $eva(idx) ":$eva(serv) PRIVMSG $eva(log) :Quit: $pseudo a quitter le serveur : $message"
}
}
}
}
bind evnt - prerestart [namespace current]::eva:restart
proc eva:restart {args} {
variable eva
putdcc $eva(idx) ":$eva(serv) SQUIT $eva(serv) :Restart Sockets."
catch {close $eva(idx)}
}
bind dcc n xrehash [namespace current]::eggy:xrehash
proc eggy:xrehash {nick idx arg} {
variable eva
putdcc $idx "\002Rehash de TCL Service et des fichiers\002"
utimer 4 rehash
}
bind dcc n xrestart [namespace current]::eggy:xrestart
proc eggy:xrestart {nick idx arg} {
variable eva
putdcc $idx "\002Redémarrage de TCL Service\002"
if [valididx [set [namespace current]::eva(idx)]] {
putdcc $eva(idx) ":$eva(nick) QUIT :$eva(quit01)"
putdcc $eva(idx) ":$eva(serv) SQUIT :$eva(serv)"
catch {close $eva(idx)}
foreach kill [utimers] {
if {[lindex $kill 1]=="[namespace current]::verify"} { killutimer [lindex $kill 2] }
}
}
xconnect:serv
}
bind dcc n xdie [namespace current]::eggy:xdie
proc eggy:xdie {nick idx arg} {
putdcc $idx "\002Arrêt de TCL Service\002"
if [valididx [set [namespace current]::eva(idx)]] {
putdcc $eva(idx) ":$eva(nick) QUIT : $eva(quit02)"
putdcc $eva(idx) ":$eva(serv) SQUIT :$eva(quit02)"
catch {close $eva(idx)}
foreach kill [utimers] {
if {[lindex $kill 1]=="[namespace current]::verify"} { killutimer [lindex $kill 2] }
}
}
}
bind dcc n xop [namespace current]::xop
proc xop {nick idx args} {
variable eva
set chan [lindex $args 0]
set opnick [lindex $args 1]
if {$chan==""} {
putdcc $idx "\2Syntax:\2 .xop <Salon> <pseudo>."
return 0
}
if {$opnick==""} {
putdcc $idx "\2Syntax:\2 .xop <Salon> <pseudo>."
return 0
}
putdcc $eva(idx) ":$eva(serv) MODE $chan +o $opnick"
putdcc $eva(idx) ":$eva(serv) $eva(log) :\2\[Commande\]\2 $nick \2->\2 xop"
}
bind chon - * [namespace current]::user_joined
proc user_joined {hand idx args} {
variable eva
putdcc $idx "\[Authentification Réussie\]"
if [valididx [set [namespace current]::eva(idx)]] {
putdcc $eva(idx) ":$eva(nick) PRIVMSG $eva(log) :\0034|Join.Partyline\|\0032 - $hand vient de joindre la party-line."
catch {close $eva(idx)}
}
}
bind chof - * [namespace current]::user_parted
proc user_parted {hand idx args} {
variable eva
if [valididx [set [namespace current]::eva(idx)]] {
putdcc $eva(idx) ":$eva(nick) PRIVMSG $eva(log) :\0034|Part.Partyline\|\0032 - $hand vient de se déconnecter de la party line."
catch {close $eva(idx)}
}
}
[namespace current]::xconnect:serv
}
Dernière modification par DnS (13/12/2013 18:45:38)
Hors ligne
variable crée des variables locales liées aux variables namespace correspondantes.
Dans ton cas, utilise "global eva"
Hors ligne
d'accord merci Nickoos je vais testé cela
[édite]
après testé je rencontre toujours la même erreur ..
Code: TCL
Tcl error [::eva_tcl::xop]: can't read "eva(idx)": no such variable
Dernière modification par DnS (13/12/2013 20:11:24)
Hors ligne
Pages : 1