Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Probleme tcl [ Divers / Eggdrop ] (foufou33)

vendredi 13 juin 2008 à 21:44:53 | Probleme tcl

foufou33

hello,

j'aurai aimer avoir une aide concernant ce code svp.

proc detect_massjoin {idx sock chan nick} {
global c_ l_ salon nick nickmassjoin pooshy
foreach a $pooshy(chanexc) { if {$chan==$a} {return 0} }
if {![info exists c_($chan)]} {
set c_($chan) 1
if {[array exists l_]} { unset l_ }
set l_($nick) 1
utimer 2 [list unset c_($chan)]
} else {
if {$c_($chan) >= 5} {
set l_($nick) 1
set nickmassjoin "$nick"
putquick "whois $nick"
foreach a [array names l_] {
unset l_($a)
}
} else { incr c_($chan); set l_($nick) 1; }
}
}

Malheureusement quand un Pooshy en socket est sur le salon, et que y'a un join, le socket se deconnecte immédiatement.

Auriez vous une idée pourquoi il se deconnecte svp ?

Merci :)

samedi 14 juin 2008 à 08:37:22 | Re : Probleme tcl

uaip

Salut, dans cette procédure, rien n'est suceptible de déconnecter qui que ce soit. Il y a seulement des traitements de variables.

"global c_ l_ salon nick nickmassjoin pooshy"
... ok, c'est bien, mais on ne sait pas ce que certaines contiennent

Cordialement, uaip.

samedi 14 juin 2008 à 14:50:43 | Re : Probleme tcl

foufou33

Hello uaip et merci d'avoir répondu.

J'ai oublié de mettre l'autre code hier et j'en suis désolé.

voici ce que ca donne.

proc xsock11_event {idx arg} {

global sock11 pooshy botnick fichier

regsub -all {\\} $arg {\\\\} arg

regsub -all {\{} $arg {\{} arg

regsub -all {\}} $arg {\}} arg

regsub -all {\]} $arg {\]} arg

regsub -all {\[} $arg {\[} arg

regsub -all {\"} $arg {\"} arg

putloglev 8 * "\[IN\] $arg"

if {[lindex $arg 0]=="PING"} { putdcc $pooshy(idxA) "PONG [lrange $arg 1 end]"; return 0 }

if {[lindex $arg 1]=="NOTICE"} {

set nick [string trim [lindex [split $arg !] 0] :]

if {[string match #* [lindex $arg 2]]} { putdcc $pooshy(idxR) ":$pooshy(nickR) KILL $nick :1Veuillez éviter les notices salons sur les salons 1!officiels1!" }

}

if {[lindex $arg 1]=="JOIN"} {

set nick [string trim [lindex [split $arg !] 0] :]

set chan [string trim [lindex $arg 2] :]

if {$nick!=$pooshy(nickA)} { detect_massjoin $pooshy(idxA) $pooshy(nickA) $chan $nick }

}

}

Lors d'un join sur un quelconque salon, voici en retour d'erreur que j'ai: [14:43:55] <Pooshy> [14:44] Erreur tcl [xsock11_event]: invalid command name "detect_massjoin"

EN gros l'erreur donne ca; sur l'evenement de la deco du socket:

[14:43:55] » Join\ Test- guest@687.578.532.513 -[1]- #!cotes-girondines!
[14:43:55] « Quit\ Pooshy-A - guest@2003147087.akseo.fr  EOF from client

Aurai tu une idée ?

Cordialement :)


samedi 14 juin 2008 à 15:37:49 | Re : Probleme tcl

uaip

Pour commencer, je ne connais pas parfaitement l'agencement des regexps en TCL mais je crois que tes regsub (à part la première) ne servent à rien.
Ensuite, pour ton erreur [14:43:55] <Pooshy> [14:44] Erreur tcl [xsock11_event]: invalid command name "detect_massjoin"

euh... essaye peut-être de mettre ta proc detect_massjoin avant xsock11_event. Ou alors essaye de vérifier avant si les 4 paramètres envoyés sont bien existants, ainsi je te conseille de les tester.
genre:

if {$nick!=$pooshy(nickA)} {
set toi ton_pseudo
putquick "NOTICE $toi :param1:
$pooshy(idxA)"
putquick "NOTICE $toi :param2: $pooshy(nickA)"
putquick "NOTICE $toi :param3: $chan"
putquick "NOTICE $toi :param4: $nick)"
#detect_massjoin $pooshy(idxA) $pooshy(nickA) $chan $nick
}


Si les 4 paramètres sont bien existants, ben.. à vrai dire, je ne sais pas vraiment, parce-que là c'est pareil, je ne sais pas du tout à quoi correspond $pooshy(idxA) etc... (puis je ne suis pas codeur tcl )
Au pire, mets un lien qui dirige vers ton code (si tu le veux), en attendant je vais parler de ton problème à quelques personnes, voire ce qu'elles en disent.

PS: évite les codes couleurs type mIRC, utilise plutôt l'octal, par exemple \00301 poru écrire en noir (petit tuto ici )

Cordialement, uaip.

samedi 14 juin 2008 à 15:49:57 | Re : Probleme tcl

foufou33

re mister alors j'ai suivi comme tu as dis et maintenant il me dit:

[15:44:48] <Pooshy> [15:44] Pooshy joined #!bot!.
[15:44:49] <Pooshy> [15:44] Erreur tcl [xsock00_event]: variable "nick" already exists

A ne plus rien y comprendre...

Pour les couleurs désolé c'est dû au C/c :X

donc le code je l'ai regroupé comme tu me l'a conseillé :)

Mais il me dit que dans la variable, le "nick" existe déjà...

Completement paumé la !

$pooshy(idxA): Socket du Pooshy-A

Set pooshy(nickA) "Pooshy-A"

Etc... bien sur c'est pas la copie conforme du vrai Pooshy !

Je fais meme quelque ajouts dessus par exemple un Anti mass join, Anti channel notice et pourquoi pas anti Flood Bot.

Si y'a des idées suis preneurs :D


samedi 14 juin 2008 à 15:56:16 | Re : Probleme tcl

uaip

Ah oui attends tiens, je pense à un truc (c'est la raison de ton nouveau problème)... dans ta proc detect_massjoin, tu appelles une variable gobale nick, cependant... tu nommes également une variable du même nom puisque tu as:

proc detect_massjoin {idx sock chan nick} {
global c_ l_ salon nick nickmassjoin pooshy
(...)
}
Changes donc l'une des 2 de nom. Mais bon, c'est encore des approximations que je te donne, puisqu'encore une fois je répète que tu ne nous donnes pas les valeurs de tes variables globales, donc ça aide pas.


Cordialement, uaip.

samedi 14 juin 2008 à 16:04:21 | Re : Probleme tcl

foufou33

Hey tu as eu une idée que moi meme je n'aivais pas vu :s

ca donne ca donc,

### ANTI MASS JOIN ###

proc detect_massjoin {idx sock chan nick} {

global c_ l_ salon nickmassjoin pooshy

foreach a $pooshy(chanexc) { if {$chan==$a} {return 0} }

if {![info exists c_($chan)]} {

set c_($chan) 1

if {[array exists l_]} { unset l_ }

set l_($nick) 1

utimer 2 [list unset c_($chan)]

} else {

if {$c_($chan) >= 5} {

set l_($nick) 1

set nickmassjoin "$nick"

putquick "notice Gpx : whois $nick"

foreach a [array names l_] {

unset l_($a)

}

} else { incr c_($chan); set l_($nick) 1; }

}

}

### Module des sockets ###

proc xsock00_event {idx arg} {

global sock00 pooshy botnick fichier

regsub -all {\\} $arg {\\\\} arg

regsub -all {\{} $arg {\{} arg

regsub -all {\}} $arg {\}} arg

regsub -all {\]} $arg {\]} arg

regsub -all {\[} $arg {\[} arg

regsub -all {\"} $arg {\"} arg

putloglev 8 * "\[IN\] $arg"

if {[lindex $arg 0]=="PING"} { putdcc $pooshy(idxR) "PONG [lrange $arg 1 end]"; return 0 }

if {[lindex $arg 1]=="NOTICE"} {

set nick [string trim [lindex [split $arg !] 0] :]

if {[string match #* [lindex $arg 2]]} { putquick "KILL $nick :1Veuillez éviter les notices salons sur les salons 1!officiels1!" }

}

if {[lindex $arg 1]=="JOIN"} {

set nick [string trim [lindex [split $arg !] 0] :]

set chan [string trim [lindex $arg 2] :]

if {$nick!=$pooshy(nickR)} { detect_massjoin $pooshy(idxR) $pooshy(nickR) $chan $nick }

}

}

proc xsock01_event {idx arg} {

global sock01 pooshy botnick fichier

regsub -all {\\} $arg {\\\\} arg

regsub -all {\{} $arg {\{} arg

regsub -all {\}} $arg {\}} arg

regsub -all {\]} $arg {\]} arg

regsub -all {\[} $arg {\[} arg

regsub -all {\"} $arg {\"} arg

putloglev 8 * "\[IN\] $arg"

if {[lindex $arg 0]=="PING"} { putdcc $pooshy(idxS) "PONG [lrange $arg 1 end]"; return 0 }

if {[lindex $arg 1]=="NOTICE"} {

set nick [string trim [lindex [split $arg !] 0] :]

if {[string match #* [lindex $arg 2]]} { putdcc $pooshy(idxR) ":$pooshy(nickR) KILL $nick :1Veuillez éviter les notices salons sur les salons 1!officiels1!" }

}

if {[lindex $arg 1]=="JOIN"} {

set nick [string trim [lindex [split $arg !] 0] :]

set chan [string trim [lindex $arg 2] :]

if {$nick!=$pooshy(nickS)} { detect_massjoin $pooshy(idxS) $pooshy(nickS) $chan $nick }

}

}

proc xsock10_event {idx arg} {

global sock10 pooshy botnick fichier nickmassjoin

regsub -all {\\} $arg {\\\\} arg

regsub -all {\{} $arg {\{} arg

regsub -all {\}} $arg {\}} arg

regsub -all {\]} $arg {\]} arg

regsub -all {\[} $arg {\[} arg

regsub -all {\"} $arg {\"} arg

putloglev 8 * "\[IN\] $arg"

if {[lindex $arg 0]=="PING"} { putdcc $pooshy(idxH) "PONG [lrange $arg 1 end]"; return 0 }

if {[lindex $arg 1]=="NOTICE"} {

set nick [string trim [lindex [split $arg !] 0] :]

if {[string match #* [lindex $arg 2]]} { putdcc $pooshy(idxR) ":$pooshy(nickR) KILL $nick :1Veuillez éviter les notices salons sur les salons 1!officiels1!" }

}

if {[lindex $arg 1]=="JOIN"} {

set nick [string trim [lindex [split $arg !] 0] :]

set chan [string trim [lindex $arg 2] :]

if {$nick!=$pooshy(nickH)} { detect_massjoin $pooshy(idxH) $pooshy(nickH) $chan $nick }

}

}

[15:56:45] » Join\ TesT - guest@687.578.532.513 -[1]- #!cotes-girondines!
[15:56:46] Modes sur #!cotes-girondines! : +stn
[16:01:19]

Jusque la tout va pour le mieux et me reste à cloner en croisant les doigts que cela fonctionne :s

Je te tiens au courant et si tu avais des eclairises de ton cotes ;)

merci a toi


samedi 14 juin 2008 à 16:07:44 | Re : Probleme tcl

foufou33

bon ben fausse joie, la j'ai beau trouvé les erreurs mais que dalle.

Si tu as un mail au pire jte file ca mais pas ici :)


samedi 14 juin 2008 à 16:12:26 | Re : Probleme tcl

uaip

Ben mp... (désolé j'ai pas encore regardé ton code, j'ai le bac a réviser )

Cordialement, uaip.

samedi 14 juin 2008 à 16:13:41 | Re : Probleme tcl

foufou33

non probleme fait moi signe quand tu es dispo et bon revision ;)



Cette discussion est classé dans : set, nick, chan, unset, if


Répondre à ce message

Sujets en rapport avec ce message

problem de massmsg et acces vip [ par D9moniac ] bonjour ( comme le di la chartre :p )Voila je need kk qui pourai m aider pour 2 source .en fait je voulai deja en fair une pour que kd on dit kk chose Disfonction de la remote [ par Shaka54 ] Bonjour, voila, j'ai un pti probleme avec la remote.Normalement, lorqu'un Op tape !debout, la comande devrait s'activer, Voice, les 3permiers qui parl comment /unset à 00h00 automatique sur un compteur acces sur $chan..? [ par freenaute ] bonjour tout le monde d'ici !voici ma ligne remote, (bricolée certes en lisant help mirc), active en acces, tout va bien. Mon script est actif 24/24.= PB : Mon auto unban disfonctionne [ par fandesandro ] J'ai besoin d'un petit coup de pouce pour faire mon auto unban :on @*:BAN:#:{   if ($banmask iswm $ial($me)) {     mode $chan -b $me    join $chan    clone scan [ par mikl59 ] Bonjour je debute et j' ai trouver ce code pou scanner les clones il marche en faisans /clonescanca me met une fenetre @scanner mais quand un clone se besoin d'aide script.tcl stripcodes abcgru [ par snip74 ] Bonjour,dans mon code ci dessous qui marche très bien.bind pub - !stats pub_statproc pub_stat {nick host hand chan args} {     if {[string tolower $ch donner un âge à mon eggdrop [ par freenaute ] slt à tous.,une commande vire les mineurs et les sans âges des pseudos en entrée sur $chan.raw 311 donne nick, realname etc...exemple: nick = trucmuch remotes xchat [ par romu83 ] bonjour a toutes et tous,je viens de passer sous kubuntu sur une de mes machines. j'ai installer xchat mais je ne sais absolument pas comment doit on ban $newnick == nadnick après modif de $nick [ par freenaute ] hello.je suis op, j'ai déjà un addon shitlist, et je veux ban le pseudo qui change (durant sa session) par nouveau nick interdit qui se trouverait dan On Notice dans une boucle if (pour popup) [ par PeGaZe33000 ] Bonsoir tout le monde et meilleurs v½ux pour l'année 2009 :)Je me permet de vous proposer cette question parce que ça fait maintenant 10 jours que je


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,452 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.