begin process at 2010 03 21 21:34:45
  Trouver un code source :
 
dans
 
Accueil > Forum > 

IRC

 > 

Divers

 > 

Eggdrop

 > 

Probleme tcl


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme tcl

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ée 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 remote + timer [ par ppzamateur ] voici un code entier, dans lequel; j'aimerais qu'on m'explique comment bloqué l'utilisation de chaque commande, pour 4 minute par salon... exemple: j On Rawmode [ par doob666 ] Bonjour, J'ai un petit soucis avec les on rawmode, je cherche un moyen pour que le on rawmode check le nombre de mode (par exemple : +o / +oo / +ooo écriture multicolore [ par Mauricelepoisson ] Bonjour, Je n'arrive pas à trouver pourquoi à l'exécution de ce petit alias, une ligne vide s'affiche alors que l'effet escompté est une couleur dif 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales