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
30/06/2009, 08:39 (This post was last modified: 30/06/2009, 08:40 by fedora.)
tcl
# Channels concernés mettre "*" pour tous les channels:set fun(chans)"*"bindjoin - * notice:joinproc notice:join{nick uhost handchannel}{
Global botnick fun
if{(([lsearch -exact [string tolower $::fun(chans)][string tolower $channel]]!= -1) || ($::fun(chans) == "*"))&&($nick!= $botnick)}{
PUTSERV "NOTICE $nick :\00312Bienvenue\0034 $nick ,\00312 je suis Fun le robot d'animation pour connaitre mes commandes tapez !cmd (uniquement en couleur noir)"}}
j'aurais fait un truc comme cela,n'allant plus sur l'IRC il ce peut que je suis un peut rouillé! code bien sur a testé.(c'est ce que j'aurai fait personnellement ) y a surement des erreurs .
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.
bindjoin - "*"join:
procjoin: {nick uhost hand chan }{if{$chan == "#accueil"}{putserv"NOTICE $nick \00312Bienvenue\0034 $nick ,\00312 je suis Fun le robot d'animation pour connaitre mes commandes tapez !cmd (uniquement en couleur noir)"return0}}
Sachant que ce qui te manquer dans ton code etait le "bind join - "*" join:" qui permet au robot de dire un truc ou effectuer une tache au join d'une personne dans un salon
Ourgh ! Depuis Tcl 8.4 (ou 8.5 ?) il existe une option -nocase pour lsearch, et c'est bigrement pratique
Sinon, je pense qu'il est plus simple d'utiliser les variables depuis le namespace global ($::fun et $::botnick) plutot que de faire un global
Donc, a mon tour de proposer ma version:
tcl
set fun(chans){#chan1 #chan2}bindjoin - *join:fun
procjoin:fun {nick uhost handle chan}{if{(([lsearch -exact -nocase $::fun(chans)$chan!= -1) || ($::fun(chans) eq *))&&($nick ne $::botnick)}{putserv"NOTICE $nick :\00312Bienvenue\00304 $nick, \00312je suis Fun le robot d'animation. Pour connaitre mes commandes tape !cmd (uniquement en couleur noir)."}}
Ca reste globalement le meme que celui de fedora (euh.. ><')
set fun(chans){#chan1 #chan2}procjoin:fun {nick uhost handle chan}{if{$nick ne $::botnick}{putserv"NOTICE $nick :\00312Bienvenue\00304 $nick, \00312je suis Fun le robot d'animation. Pour connaitre mes commandes tape !cmd (uniquement en couleur noir)."}}proc fun:loadbind {}{foreach chan $::fun(chan){if{[botonchan$chan] eq 1}{bindjoin - "$chan *"join:fun
}}}
Et à la fin du tcl:
tcl
fun:loadbind
Ca permet de limiter les appels à la procédure join:fun aux seuls canaux autorisés. Je ne me souviens plus si join est stackable, donc ça peut être utile de mettre cette limite.
01/07/2009, 11:00 (This post was last modified: 01/07/2009, 11:13 by Aragorn.)
bonjour j'ai opter pour la solution de heretoc que je trouve plus facile as comprendre lol encore merci de votre aide
Je vous poste le code complet pour ceux qui veule on ne sais jamais
tcl
########################## ## Fun.tcl # # Par Alucard68 ## Le 29/06/2009 ## ########################## set fun_ver "1.1"set fun_author "Alucard68"bindpub - "!cmd"pub:cmd
bindpub - "!cmds"pub:cmd
bindpub - "!liste"pub:cmd
bindpub - "!jokes"pub:cmd
bindpub - "!commande"pub:cmd
bindpub - "!biere"pub:biere
bindpub - "!champagne"pub:champagne
bindpub - "!sky"pub:sky
bindpub - "!cafe"pub:cafe
bindpub - "!coca"pub:coca
bindpub - "!kiss"pub:kiss
bindpub - "!palo"pub:palo
bindpub - "!calin"pub:calin
bindpub - "!love"pub:love
bindpub - "!rose"pub:rose
bindpub - "!sexy"pub:sexy
bindpub - "!fouette"pub:fouette
bindpub - "!baffe"pub:baffe
bindpub - "!relou"pub:relou
bindpub - "!vanne"pub:vanne
bindpub - "!clope"pub:clope
procpub:cmd {nick uhost handle chan arg }{putserv"NOTICE $nick :\0032Pour faire fonctionner les commandes il faut taper de la maniere suivante !cmd pseudo ( exemple: !bierre Hathor )"putserv"NOTICE $nick :\0036Voici les commandes de Fun"putserv"NOTICE $nick :\0034"putserv"NOTICE $nick :\0037Les commandes barman:"putserv"NOTICE $nick :\00312!biere\0034 !coca\00312 !sky\0034 !cafe\00312 !champagne"putserv"NOTICE $nick :\0037Les commandes love:"putserv"NOTICE $nick :\00312!kiss\0034 !palo\00312 !love\0034 !calin\00312 !rose\0034 !sexy"putserv"NOTICE $nick :\0037Les commandes violantes:"putserv"NOTICE $nick :\00312!fouette\0034 !baffe\00312 !relou\0034 !vanne"putserv"NOTICE $nick :\0037Les commandes diverses:"putserv"NOTICE $nick :\00312!clope \0034!story (raconte une histoire bizarre)\00312 !chuck (raconte une aventure de Chuck Norris)\0034 !oracle (!oracle Une question ? exemple: !oracle qui est le plus beau ?)"putserv"NOTICE $nick :\0034"putserv"NOTICE $nick :\0036Fin des commandes de Fun"putserv"NOTICE $nick :\0032Fun a été crée par Alucard68 pour SliverChat."}procpub:biere {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0037$nick \00312offre une bonne bière bien fraiche à \0034$pseudo"}}procpub:champagne {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0037$nick \00312offre une bonne coupe de champagne à \0034$pseudo"}}procpub:coca {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0037$nick \00312offre un coca bien frais à \0034$pseudo"}}procpub:sky {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0037$nick \00312offre un bon sky 16 ans d'age à \0034$pseudo"}}procpub:cafe {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0037$nick \00312offre une tasse de \0034café\00312 à \0034$pseudo \00312Hmmm :D"}}procpub:kiss {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0037$nick \00312fait un énorme kisssss à \0034$pseudo"}}procpub:palo {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0037$nick \00312roule un énorme paloOoOoOoOo à \0034$pseudo"}}procpub:calin {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0034$nick \00312prend \0037$pseudo \00312dans ses bras et lui fait un énorme calin"}}procpub:love {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0034$nick \00312t'aime de tout son coeur \0037$pseudo ! \00312Déclaration devant vous sur $chan !"}}procpub:rose {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0037$nick \00312offre une belle rose à \0034$pseudo"}}procpub:sexy {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0037$nick \00312te trouve vraiment \0034très \00313tres \0037SEXY!!! \0034$pseudo"}}procpub:fouette {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0037$nick \00312fouette \0034$pseudo \00312de toute ses force (t'aime sa hein)"}}procpub:baffe {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0037$nick \00312prend le plus d'élant possible et donne une énorme baffe à\0034$ pseudo"}}procpub:relou {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0037$nick \00312trouve vraiment que \0034$pseudo \00312est très relou."}}procpub:vanne {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\00312C'était \0034Vanne Pourri Edition Collector\00312 powered by\0034 $pseudo \00312!!"}}procpub:clope {nick uhost handle chan arg }{set pseudo [split$arg]if{$pseudo!= ""}{putserv"PRIVMSG $chan :\0037$nick \00312offre une cigarette \002(\037)¯¯¯¯)¯¯¯¯¯¯¯¯¯¯¯\037)~~~\002\00312 à \0034 $pseudo \00312(c'est pas bien de fumer)"}}bindjoin - "*"join:
procjoin: {nick uhost hand chan }{if{$chan == "#Accueil"}{putserv"NOTICE $nick \00312Bienvenue\0034 $nick ,\00312 je suis Fun le robot d'animation pour connaitre mes commandes tapez !cmd (uniquement en couleur noir)"return0}}putlog"\0034Fun Version $fun_ver By $fun_author loaded"putlog"\0034Have Fun"
j'ai prix le tcl de Aragorn pour mon eggdrop toute l'installation c'est parfaitement dérouler. Le Script c'est bien charger le méssage je join fonctionne très bien.
Mais et oui il y a toujours un mais dans se genre de cas, bref.
Quand je tape !cmd sur le salon au lieux de reçevoir en notice la liste des commandes je ne reçois rien.
Et en part line avec mon eggdrop j'ai se message qui s'affiche.
Code:
[13:59:12] Tcl error [pub:cmd]: extra characters after close-quote
Je précise que je n'est pas toucher au code d'Aragorn.
tout d'abord, un petit effort sur le français ce serait plutôt sympa de ta part... c'est juste très désagréable de lire autant de fautes en si peu de phrases ;)
Pour ton erreur, je viens de copier / coller le code ci-dessus d'Aragorn et en ne faisant aucune modification tout fonctionne très bien... Tu es sûr de n'avoir rien modifié ?
Quote:14:18 KiBa !cmd
14:18 Alice Pour faire fonctionner les commandes il faut taper de la maniere suivante !cmd pseudo ( exemple: !bierre Hathor )
Personnellement j'utilise Jokes depuis des années et je n'ai jamais eu de problème, il est facile à comprendre, parfaitement modifiable en ajoutant ses propres commandes etc.
13/03/2012, 01:24 (This post was last modified: 13/03/2012, 01:26 by cestlemien.)
coucou :)
j'ajouterait que dans ton/le code, il est fait allusion aux commande !oracle/!chuck /!story; Qui sont des scripts tcl bien à part, et par consèquent reduit les commandes à nèant si le proprietaire de l'eggdrop n'as pas ces codes (et induit certaiment des erreures en PL) . idée : Peut -être ajouter dans le code " si oracle.tcl (et les autres.tcl) est dans /scripts return result ; sinon, 0 )
13/03/2012, 21:40 (This post was last modified: 13/03/2012, 22:13 by djkenny.)
salut,
un petit script que j avais codé il y a quelques temps et qui simplifie grandement la création et la suppression d'une commande
Code:
namespace eval ::jokes {
variable char !
unset -nocomplain jokes
variable jokes
variable chans {#tcl #chti}
array set jokes {
bisous "%1\$s fait un bisous à %2\$s"
biere "%1\$s offre une bière à %2\$s"
clope "%1\$s offre une clope à %2\$s"
}
proc init {} {
variable chans
variable jokes
variable char
if [string is space $chans] {set chans [channels]}
foreach c $chans {
bind pubm - "$c [set char]*" [namespace current]::send
}
set body {
variable jokes \n
variable char \n
set bind [lindex [split [lindex $arg 0] [set char]] 1] \n
set arg [lrange $arg 1 end] \n
switch -nocase -glob -- $bind \{ \n
}
foreach j [array names jokes] {
lappend body "$j \{putserv \"PRIVMSG \$chan :\[join \[format \$jokes($j) \$nick \$arg\]\]\"\} \n"
}
lappend body "\}"
proc send {nick host hand chan arg} [join $body]
}
init
}
le script crée à la volée la procédure contenant les commandes.
l'avantage est de ne pas avoir a créer de procédures ou de bind, tout est automatisé.
de même lorsqu'on supprime une commande, un simple rehash suffi a prendre en compte les modifications.
en espérant que ça puisse vous servir
C'est en reconnaissant ses erreurs que l'on progresse ;)