Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique.
x
depuis peut je me remet au TCL est je me lance dans un petit projet.
je souhaiterais savoir en utilisant le namespace comment dois je faire pour crée mon link.
dois je mettre tout en variable ?
c'est a dire comme cela ?
ou utilisé dans le namespace set eva(serv) ect ...
car en regardant dans le forum j'ai vue le NS de Alias mais qd j'ajoute genre les commandes op voice ect .. j'ai des erreurs de idx ...
Cordialement
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
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
Quote:Tcl error [::eva_tcl::xop]: can't read "eva(idx)": no such variable
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
j'ai essayé en global eva mais pareille je rencontre toujours la même erreur
tcl
Tcl error[::eva_tcl::xop]: can't read "eva(idx)": no such variable
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
14/12/2013, 12:30 (This post was last modified: 14/12/2013, 12:31 by aliasangelius.)
Salut,
Donc à savoir pour ce système la c'est des "set" et non des "variable" lors des appels de serveur etc..
Je te fait voir un exemple :
tcl
namespaceeval ::eva{variable eva
set evaServ "service***.fr"set evaIp "myip"set evaPort "4400"set evaLink "motdepassquitue"set evaInfo "TCL Services"
Pour ce qui et de ta procédure de xop, Elle et bonne c'est juste t'es variables qui faisait merder.
Du moins essaye ainsi et dit le si celà merde encore ou pas !
14/12/2013, 12:34 (This post was last modified: 14/12/2013, 12:42 by aliasangelius.)
A savoir, variable sa créer absolument pas la var !
Il fait comme un bloque de mémoire en gros, et pour que il sache ce tiens tel que $evaIP il faut le set pour permettre que info exists retourne le 0
Sinon, Tiens prend exemple sur celui que j'avais que djkenny m'avais refait :
tcl
namespaceeval ::socks{variable aurore
#********************## Service.Socket 1.0 ##********************##**************************## Information link reseau. ##**************************#set aurore(serv)"Aurore.****.fr"set aurore(ip)"ip"set aurore(port)"port"set aurore(pwdlink)"pass"set aurore(info)"Aurore Services"#****************************## Configuration des sockets. ##****************************#set aurore(nick)"Hera"set aurore(identd)"Hera"set aurore(host)"Services.****.fr"set aurore(nom)"Services-Log"#***************************## Salon de log des sockets. ##***************************#set aurore(log)"#Services"set aurore(quit01)"Redemarage Aurore-Service."set aurore(quit02)"Fermeture Aurore-Service."#****************************************## Lancement de la procédure des sockets. ##****************************************#proc checkconnect {}{if{![info exists aurore(idx)]}{utimer30[namespace current]::checkconnect}else{ xconnect:serv }}proc xconnect:serv {}{variable aurore
if[catch{set aurore(idx)[connect$aurore(ip)$aurore(port)]} err]{putlog"Connection error :$err"return}putdcc$aurore(idx)"PASS $aurore(pwdlink)"putdcc$aurore(idx)"SERVER $aurore(serv) 1 [unixtime] [unixtime] J09 ACAA\] +s :$aurore(info)"putdcc$aurore(idx)":$aurore(serv) NICK $aurore(nick) '' '' $aurore(identd) $aurore(host) $aurore(serv) '' :$aurore(nom)"putdcc$aurore(idx)":$aurore(nick) MODE $aurore(nick) +owsgkd"putdcc$aurore(idx)":$aurore(nick) JOIN $aurore(log)"putdcc$aurore(idx)":$aurore(nick) MODE $aurore(log) +ntsv $aurore(nick)"control$aurore(idx)[namespace current]::controling_serverutimer10[namespace current]::verify}#***********************************## Verify si le serveur est Connecté ##***********************************#proc verify {}{variable aurore
if[valididx[set[namespace current]::aurore(idx)]]{utimer30[namespace current]::verify}else{
xconnect:serv
}}proc controling_server {idx arg}{variable aurore
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{$arg2=="PING"}{putdcc$aurore(idx)":$aurore(serv) PONG $aurore(ip) :$aurore(serv)"}}#**********************## Restart des sockets. ##**********************#bindevnt - prerestart [namespace current]::eva:restartproc eva:restart{args}{variable aurore
putdcc$aurore(idx)":$aurore(serv) SQUIT $aurore(serv) :Restart Sockets."catch{close$aurore(idx)}}#********************## Rehash du Service. ##********************#binddcc n xrehash [namespace current]::eggy:xrehash
proc eggy:xrehash {nickidx arg}{variable aurore
putdcc$idx"\002Rehash de Aurore-Service et des fichiers\002"utimer4rehash}#*********************## Restart du Service. ##*********************#binddcc n xrestart [namespace current]::eggy:xrestart
proc eggy:xrestart {nickidx arg}{variable aurore
putdcc$idx"\002Redémarrage de Aurore-service\002"if[valididx[set[namespace current]::aurore(idx)]]{putdcc$aurore(idx)":$aurore(nick) QUIT :$aurore(quit01)"putdcc$aurore(idx)":$aurore(serv) SQUIT :$aurore(serv)"catch{close$aurore(idx)}foreach kill [utimers]{if{[lindex$kill1]=="[namespace current]::verify"}{killutimer[lindex$kill2]}}}
xconnect:serv
}#*****************## Die du Service. ##*****************#binddcc n xdie [namespace current]::eggy:xdie
proc eggy:xdie {nickidx arg}{putdcc$idx"\002Arrêt de Aurore-Service\002"if[valididx[set[namespace current]::aurore(idx)]]{putdcc$aurore(idx)":$aurore(nick) QUIT : $aurore(quit02)"putdcc$aurore(idx)":$aurore(serv) SQUIT :$aurore(quit02)"catch{close$aurore(idx)}foreach kill [utimers]{if{[lindex$kill1]=="[namespace current]::verify"}{killutimer[lindex$kill2]}}}}#****************************## Fin du Service Sockets 1.0 ##****************************## connection [namespace current]::xconnect:serv
}putlog"\0031Service Sockets 1.0 \0034Chargé."
(14/12/2013, 12:34)aliasangelius Wrote: A savoir, variable sa créer absolument pas la var !
Il fait comme un bloque de mémoire en gros, et pour que il sache ce tiens tel que $evaIP il faut le set pour permettre que info exists retourne le 0
Sinon, Tiens prend exemple sur celui que j'avais que djkenny m'avais refait :
tcl
namespaceeval ::socks{variable aurore
#********************## Service.Socket 1.0 ##********************##**************************## Information link reseau. ##**************************#set aurore(serv)"Aurore.****.fr"set aurore(ip)"ip"set aurore(port)"port"set aurore(pwdlink)"pass"set aurore(info)"Aurore Services"#****************************## Configuration des sockets. ##****************************#set aurore(nick)"Hera"set aurore(identd)"Hera"set aurore(host)"Services.****.fr"set aurore(nom)"Services-Log"#***************************## Salon de log des sockets. ##***************************#set aurore(log)"#Services"set aurore(quit01)"Redemarage Aurore-Service."set aurore(quit02)"Fermeture Aurore-Service."#****************************************## Lancement de la procédure des sockets. ##****************************************#proc checkconnect {}{if{![info exists aurore(idx)]}{utimer30[namespace current]::checkconnect}else{ xconnect:serv }}proc xconnect:serv {}{variable aurore
if[catch{set aurore(idx)[connect$aurore(ip)$aurore(port)]} err]{putlog"Connection error :$err"return}putdcc$aurore(idx)"PASS $aurore(pwdlink)"putdcc$aurore(idx)"SERVER $aurore(serv) 1 [unixtime] [unixtime] J09 ACAA\] +s :$aurore(info)"putdcc$aurore(idx)":$aurore(serv) NICK $aurore(nick) '' '' $aurore(identd) $aurore(host) $aurore(serv) '' :$aurore(nom)"putdcc$aurore(idx)":$aurore(nick) MODE $aurore(nick) +owsgkd"putdcc$aurore(idx)":$aurore(nick) JOIN $aurore(log)"putdcc$aurore(idx)":$aurore(nick) MODE $aurore(log) +ntsv $aurore(nick)"control$aurore(idx)[namespace current]::controling_serverutimer10[namespace current]::verify}#***********************************## Verify si le serveur est Connecté ##***********************************#proc verify {}{variable aurore
if[valididx[set[namespace current]::aurore(idx)]]{utimer30[namespace current]::verify}else{
xconnect:serv
}}proc controling_server {idx arg}{variable aurore
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{$arg2=="PING"}{putdcc$aurore(idx)":$aurore(serv) PONG $aurore(ip) :$aurore(serv)"}}#**********************## Restart des sockets. ##**********************#bindevnt - prerestart [namespace current]::eva:restartproc eva:restart{args}{variable aurore
putdcc$aurore(idx)":$aurore(serv) SQUIT $aurore(serv) :Restart Sockets."catch{close$aurore(idx)}}#********************## Rehash du Service. ##********************#binddcc n xrehash [namespace current]::eggy:xrehash
proc eggy:xrehash {nickidx arg}{variable aurore
putdcc$idx"\002Rehash de Aurore-Service et des fichiers\002"utimer4rehash}#*********************## Restart du Service. ##*********************#binddcc n xrestart [namespace current]::eggy:xrestart
proc eggy:xrestart {nickidx arg}{variable aurore
putdcc$idx"\002Redémarrage de Aurore-service\002"if[valididx[set[namespace current]::aurore(idx)]]{putdcc$aurore(idx)":$aurore(nick) QUIT :$aurore(quit01)"putdcc$aurore(idx)":$aurore(serv) SQUIT :$aurore(serv)"catch{close$aurore(idx)}foreach kill [utimers]{if{[lindex$kill1]=="[namespace current]::verify"}{killutimer[lindex$kill2]}}}
xconnect:serv
}#*****************## Die du Service. ##*****************#binddcc n xdie [namespace current]::eggy:xdie
proc eggy:xdie {nickidx arg}{putdcc$idx"\002Arrêt de Aurore-Service\002"if[valididx[set[namespace current]::aurore(idx)]]{putdcc$aurore(idx)":$aurore(nick) QUIT : $aurore(quit02)"putdcc$aurore(idx)":$aurore(serv) SQUIT :$aurore(quit02)"catch{close$aurore(idx)}foreach kill [utimers]{if{[lindex$kill1]=="[namespace current]::verify"}{killutimer[lindex$kill2]}}}}#****************************## Fin du Service Sockets 1.0 ##****************************## connection [namespace current]::xconnect:serv
}putlog"\0031Service Sockets 1.0 \0034Chargé."
Bonjour,
merci pour vos réponse rapide,et alias justement je me suis basé dessus voir même laissé comme ça le tcl en y rajoutant juste la proc xop mais toujours le même problème survient ...
CrazyCat je vais voir tout a heure ce que me retourne eva(idx)
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.
namespaceeval ::eva_tcl{variable version "0.2 RC1"variable eva
#********************## Service.Socket 1.0 by Alias##********************##**************************## Information link reseau. ##**************************#set eva(serv)"link.***.fr"set eva(ip)"myip"set eva(port)"4400"set eva(pwdlink)"mot de passe"set eva(info)"TCL Services"#****************************## Configuration des sockets. ##****************************#set eva(nick)"Eva_TCL"set eva(identd)"Data"set eva(host)"localhost.com"set eva(nom)"Services TCL"#***************************## Salon de log des sockets. ##***************************#set eva(log)"#Services"set eva(quit01)"Redemarage Service."set eva(quit02)"Fermeture Service."#****************************************## Lancement de la procédure des sockets. ##****************************************#proc checkconnect {}{if{![info exists eva(idx)]}{utimer30[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_serverutimer10[namespace current]::verify}#***********************************## Verify si le serveur est Connecté ##***********************************#proc verify {}{variable eva
if[valididx[set[namespace current]::eva(idx)]]{utimer30[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)"}}}#**********************## Restart des sockets. ##**********************#proc eva:restart{args}{variable eva
putdcc$eva(idx)":$eva(serv) SQUIT $eva(serv) :Restart Sockets."catch{close$eva(idx)}}#********************## Rehash du Service. ##********************#proc eggy:xrehash {nickidx arg}{variable eva
putdcc$idx"\002Rehash de TCL Service et des fichiers\002"utimer4rehash}#*********************## Restart du Service. ##*********************#proc eggy:xrestart {nickidx 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$kill1]=="[namespace current]::verify"}{killutimer[lindex$kill2]}}}
xconnect:serv
}#*****************## Die du Service. ##*****************#proc eggy:xdie {nickidx arg}{variable eva
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$kill1]=="[namespace current]::verify"}{killutimer[lindex$kill2]}}}}proc xop {nickidx arg}{variable eva
set salon [lindex$arg0]set pseudo [lindex$arg1]if{$salon=="" || $pseudo=="" || ![string match *#* $salon]} {putdcc$idx"\2Utilisation:\2 xop <salon> <pseudo>"return0}if[valididx[set[namespace current]::eva(idx)]]{putdcc$eva(idx)":$eva(nick) MODE $salon +o $pseudo"putdcc$eva(idx)":$eva(nick) PRIVMSG $eva(log) :\2\[Commande\]\21 $nick \2->\2 xop"catch{close$eva(idx)}}}proc xdeop {nickidx arg}{variable eva
set salon [lindex$arg0]set pseudo [lindex$arg1]if{$salon=="" || $pseudo=="" || ![string match *#* $salon]} {putdcc$idx"\2Utilisation:\2 xdeop <salon> <pseudo>"return0}if[valididx[set[namespace current]::eva(idx)]]{putdcc$eva(idx)":$eva(nick) MODE $salon -o $pseudo"putdcc$eva(idx)":$eva(nick) PRIVMSG $eva(log) :\[xdéOp\] *** $pseudo sur $salon par: $nick"catch{close$eva(idx)}}putlog"*** Xdéop par $nick - $pseudo sur $salon"}proc xvoice {nickidx arg}{variable eva
set salon [lindex$arg0]set pseudo [lindex$arg1]if{$salon=="" || $pseudo=="" || ![string match *#* $salon]} {putdcc$idx"\2Utilisation:\2 xvoice <salon> <pseudo>"return0}if[valididx[set[namespace current]::eva(idx)]]{putdcc$eva(idx)":$eva(nick) MODE $salon +v $pseudo"putdcc$eva(idx)":$eva(nick) PRIVMSG $eva(log) :\[xVoice\] *** $pseudo sur $salon par: $nick"catch{close$eva(idx)}}putlog"*** Xvoice par $nick - $pseudo sur $salon"}proc xdevoice {nickidx arg}{variable eva
set salon [lindex$arg0]set pseudo [lindex$arg1]if{$salon=="" || $pseudo=="" || ![string match *#* $salon]} {putdcc$idx"\2Utilisation:\2 xdevoice <salon> <pseudo>"return0}if[valididx[set[namespace current]::eva(idx)]]{putdcc$eva(idx)":$eva(nick) MODE $salon -v $pseudo"putlog"$eva(idx) :$eva(nick) MODE $salon -v $pseudo"putdcc$eva(idx)":$eva(nick) PRIVMSG $eva(log) :\[xdeVoice\] *** $pseudo sur $salon par: $nick"catch{close$eva(idx)}}putlog"*** Xdévoice par $nick - $pseudo sur $salon"}proc Pljoin {handidx args}{variable eva
putdcc$idx"\0034\002\[\002\0031Authentification \0033\037OK\037\0034\002\]"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)}}}proc Plpart {handidx 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)}}}#****************************## Fin du Service Sockets 1.0 ##****************************#bindevnt - prerehash [namespace current]::uninstallbindevnt - prerestart [namespace current]::eva:restartbinddcc n xrehash [namespace current]::eggy:xrehash
binddcc n xrestart [namespace current]::eggy:xrestart
binddcc n xdie [namespace current]::eggy:xdie
binddcc n xop [namespace current]::xopbinddcc - xdeop [namespace current]::xdeopbinddcc - xvoice [namespace current]::xvoicebinddcc - xdevoice [namespace current]::xdevoicebindchon - *[namespace current]::Pljoinbindchof - *[namespace current]::Plpart# connection[namespace current]::xconnect:serv
}putlog"[file tail [info script]] V[set eva_tcl::version] loaded success"
le souci n'y ai plus a partir du moment ou je kill le pid et relance le service.
La différence entre Linux et Windows ,c'est que Linux c'est comme une belle fille , il faut l'apprivoiser , la comprendre , la séduire tandis que Windows , c'est comme une prostitué , il faut payer et surtout bien se protéger.