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 ...
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
Citation :Tcl error [::eva_tcl:op]: can't read "eva(idx)": no such variable
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 !
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)]}{ utimer 30[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_server
utimer 10[namespace current]::verify}
#***********************************## Verify si le serveur est Connecté ##***********************************#proc verify {}{variable aurore
if[valididx [set[namespace current]::aurore(idx)]]{
utimer 30[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. ##**********************#
bind evnt - prerestart [namespace current]::eva:restart
proc eva:restart {args}{variable aurore
putdcc $aurore(idx)":$aurore(serv) SQUIT $aurore(serv) :Restart Sockets."catch{close$aurore(idx)}}
#********************## Rehash du Service. ##********************#
bind dcc n xrehash [namespace current]::eggy:xrehash
proc eggy:xrehash {nick idx arg}{variable aurore
putdcc $idx"\002Rehash de Aurore-Service et des fichiers\002"
utimer 4 rehash
}
#*********************## Restart du Service. ##*********************#
bind dcc n xrestart [namespace current]::eggy:xrestart
proc eggy:xrestart {nick idx 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. ##*****************#
bind dcc n xdie [namespace current]::eggy:xdie
proc eggy:xdie {nick idx 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 a écrit : [ -> ]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)]}{ utimer 30[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_server
utimer 10[namespace current]::verify}
#***********************************## Verify si le serveur est Connecté ##***********************************#proc verify {}{variable aurore
if[valididx [set[namespace current]::aurore(idx)]]{
utimer 30[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. ##**********************#
bind evnt - prerestart [namespace current]::eva:restart
proc eva:restart {args}{variable aurore
putdcc $aurore(idx)":$aurore(serv) SQUIT $aurore(serv) :Restart Sockets."catch{close$aurore(idx)}}
#********************## Rehash du Service. ##********************#
bind dcc n xrehash [namespace current]::eggy:xrehash
proc eggy:xrehash {nick idx arg}{variable aurore
putdcc $idx"\002Rehash de Aurore-Service et des fichiers\002"
utimer 4 rehash
}
#*********************## Restart du Service. ##*********************#
bind dcc n xrestart [namespace current]::eggy:xrestart
proc eggy:xrestart {nick idx 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. ##*****************#
bind dcc n xdie [namespace current]::eggy:xdie
proc eggy:xdie {nick idx 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)