Je suis sur une réalisation d'un codage tcl que j'aimerai rendre le plus efficace possible et sans multiplié les conf sur l'eggdrop alors j'ai pensé que de mettre une seule configuration et plusieurs sockets pourrait etre la solution...
Soucis étant je ne sais pas du tout comment faire le lancement de la proc pour répondre à ceci
Citation : can't read "Dobromila(ip)": no such variable
while executing
"catch "connect $Dobromila(ip) $Dobromila(port)" Dobromila(idx)"
(procedure "connexion" line 3)
invoked from within
"connexion "
invoked from within
"if {![info exists bara(idx)]} { connexion }"
(file "scripts/socket.tcl" line 83)
invoked from within
"source scripts/socket.tcl"
(file "socket.conf" line 107)
[10:26:10] * FICHIER DE CONFIGURATION NON CHARGE (INTROUVABLE OU ERREUR)
Pour utilise un exemple du code de socket que j'avais, il lui faut le code entier sinon il risque d'avoirs quelques soucis :p
Tiens regarde le code entier qui et dispos sur le site.
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é."
Ce système de socket fonctionne bien, Mais ont et sur du namespace, donc sur certains points sa peut-être plus chiant tout dépend de ce que l'ont fait.
Mais je me suis jamais plaint j'ai toujours réussis à faire ce que j'ai voulut faire ;)
Si besoin base toi sur sa car c'est un code propre pour ma part, et si besoin demande sur le forum ont sera te guider je pense
EDIT : Si tu utilise comme type de server "UnrealIRCD", Pense à changer le protocol du server dans le code
Heu, tu as 4 procédures "connexion", ça ne te choque pas ?
Ensuite, tu utilises $Dobromila alors que nul part cette variable n'est définie, tu as juste défini $Bot(bot4).
Donc ou bien il te manque ue procédure qui crée les variables en fonction du contenu de $Bot ou bien tu n'as pas tout compris à ce que tu fais.
Je dois bien avoue que je suis perdu totalement CrazyCat..
J'ai testé ton codage aliasangelius
Mais moi j'aimerai comment dire ça faire un lancement de deux ou trois bot à partir d'une même configuration avec des rôles différent.. Et avec les codages que j'ai eu trouve j'arrive jamais à connecter les bots..
(20/03/2014, 11:56)aliasangelius a écrit : [ -> ]Salut,
Pour utilise un exemple du code de socket que j'avais, il lui faut le code entier sinon il risque d'avoirs quelques soucis :p
Tiens regarde le code entier qui et dispos sur le site.
Salut Alias ,
Si il et complet celui que je lui et donné sauf que toi tu l'utilise en namespace alors que moi non ^^
Je suis pas contre aliasangelius si ça te dérange pas...
Pour nom set Bela, Boleslava, Dobromila, Drahoslava et Jaromíra. Ce que je me pose aussi comme question, c'est est ce que sur la conf après je peux "assigner" un codage à un bot en particulier par exemple Bela=Radio - Dobromila=Moderation - Jaromira=Animation ?
Alors j'ai pas tout compris.
J'ai compris la partie pour assigner une tâche différentes par socket c'est sa que tu veut dire ?
Si c'est cela oui c'est tout à fait possible, Toutes sockets peuvent avoir une tâche prédéfini sur une chose ou autre.
Exemple : Tu va avoir Nickserv lui va enregistré les demande de pseudo pour être enregistré sur le réseaux.
Bela, Va avoir comme fonction de mettre le status +o sur le salon accueil au ircop.
Etc..
Mais oui c'est tout à fait possible, Faut faire du côté Evément server sur "privmsg".
Si tu sais pas vraiment comment faire dit le moi
Oui c'est ça en gros et oui j'aurai besoin d'aide je pense car je me suis peut-être montrer trop gourmand.. Et vu que j'apprends du moins j'essaie d'apprendre seul y a des trucs sur lesquels je suis court..
Bon.. La je pense qu'il va falloir quelques trucs.
Je vais refaire mon code et ensuite dedans ou ici je vais commenter plus ou moins, pour que tu comprenne.
Bien sur tu va bosser aussi pour modifié etc :)
Comme sa tu comprendra mieux je pense.