Voila un pote ma demandé de lui codé quelques commande pour son serveur,
voila le code en question (pas complet)
tcl
set vhostmodo2 {*@domain.tld
}set vhostmodo1 {*@domain.tld
}
bind pub - !modo aidemodo
bind pub - !kr kick
proc kick { nick host hand channel arg }{global vhostmodo1 kick
foreach vhost $vhostmodo1{if[string match -nocase $vhost$host]{
putserv "cs kick $channel $arg $arg-1"}}}
Donc j'ai tenter de cette manière mais ne fonctionne pas et aucun message d'erreur en PL avec le bot.
Voila je voudrais qu'en tapant !kr pseudo bla bla bla bla
Ca kick l'utilisateur pour la raison bla bla bla bla
Mais je ne vois absolument pas comment mi prendre...
Merci pour votre aide future
Edit : j'ai édité le code car j'ai enfin réussie à faire comprendre à mon pote qu'un eggdrop IRCop c'est pas bon pour la sécurité.
Citation :PUB
Utilisé pour une commande donnée sur un canal. Le premier mot devient la commande, ceux qui suivent deviennent les arguments text.
Syntaxe: bind pub <flags> <command> <proc>
Procédure: procname <nick> <user@host> <handle> <channel> <text>
Donc, ta procédure reçoit obligatoirement 5 arguments, pas un de plus ou de moins.
tcl
proc kickraison { nick host hand channel text }{
En définissant ta procédure ainsi, tu obtiens dans $text le nick à kicker suivi du message de kick. Il faut donc couper $text.
tcl
set args [split$text] # on mets chaque élément de $text dans la liste $argsset victim [lindex$args0] # le premier élément de $args est la victime
set reason [join[lrange$args1 end]] # la suite est la raison du kick
Donc si j'ai bien compris je reprend ma procédure en enlevant 'arg' pour le remplacer par 'text'
Concernant les set je les rajoute hors de la procédure et je fait appel à eux de la même façon que pour le salon de log ?
C'est bien ça ?
Il me semble qu'il te manque les bases du tcl...
Dans la déclaration de ta procédure, tu appelles le dernier élément "args", "text", "roger_rabbit", ça n'a pas la moindre importance, tout ce qui importe c'est que ta procédure ait 5 arguments dans sa déclaration, pas un de plus ou de moins vu que le bind en envoie 5.
Et NON. Les sets sont forcément dans la procédure, vu qu'il s'agit de la découpe du dernier argument de la procédure. En toute logique, ils devraient être soit après la ligne "global", soit après la ligne "if ..."
Bonsoir,
Alors j'ai tenter de façon voici la première (je met juste la procédure)
tcl
proc kickraison { nick host hand channel text }{global vhostmodo1 kickraison
set args [split$text] # on mets chaque élément de $text dans la liste $argsset victim [lindex$args0] # le premier élément de $args est la victime
set reason [join[lrange$args1 end]] # la suite est la raison du kick
foreach vhost $vhostmodo1{if[string match -nocase $vhost$host]{
putserv "cs kick $channel $victim $reason"
putserv "PRIVMSG $::log :\0034$victim \00312à été kick de \0034$channel \00312par \0034$nick \00312pour flood."}}}
Ne fonctionne pas et j'ai se message d'erreur en pl
Code :
[00:59:10] <Aragorn> [00:59:10] Tcl error [kickraison]: can't read "args": no such variable
et de cette façon
tcl
proc kickraison { nick host hand channel text }{global vhostmodo1 kickraison
foreach vhost $vhostmodo1{if[string match -nocase $vhost$host]{set args [split$text] # on mets chaque élément de $text dans la liste $argsset victim [lindex$args0] # le premier élément de $args est la victime
set reason [join[lrange$args1 end]] # la suite est la raison du kick
putserv "cs kick $channel $victim $reason"
putserv "PRIVMSG $::log :\0034$victim \00312à été kick de \0034$channel \00312par \0034$nick \00312pour flood."}}}
Ne fonctionne pas non plus et aucun message en pl
Ai-je mal inséré le code?
Le premier set sert à découper $text en une liste de mots
Le second sert à mettre le premier élément de cette liste dans la variable $victim
Le troisième mets tous les éléments suivants sous forme d'une seule chaîne dans la variable $reason.
Non.
Le script est fait pour agir en commande publique, donc c'est le chan où elle est lancée qui est pris comme canal d'action.
Le premier argument est donc le nick de la victime.