Rencontres
Meetic.fr
Netclub
Amoureux.com

Téléchargements
Bots mIRC
Addons mIRC
Scripts mIRC
Snippets mIRC
Clients IRC
Scripts TCL

Aide IRC & T'chat
Histoire de l'IRC
Définitions
Abréviations
Modes des salons
Les Smileys Java
Aide applet Java
Nétiquette du Chat
Liste des Raws
Les réseaux IRC
Tutorial des Bans
Quizz sur l'IRC
Installer un quizz
Tutorial Ezbounce
Le RFC1459
Messages de quit

Aide IriX (Voila)
Edito
Avoir IriX
Commandes IriX
Commandes CSA
FAQ
La charte

Les Commandes
Bounce/Bnc
NickServ (Jeux.fr)
NickServ (EpiKnet)
NickServ (Voila)
Thema/Metro/Robot
Opérateur
IRCop
Géofront
User
Voila/Wanadoo
Ezbounce

Infos Chat Voila
Présentation
Historique
Le map
Les robots officiels
Détection proxy

Aide Eggdrop
Télécharger
Installez-le
Configurez-le
Les Commandes
Aide TCL
Aide TCL avancée
Scripts TCL
Trivia
Installer Géofront/Eva
Egg sous shell

Aide IRCD/IRCU
Bahamut
Unreal
IRCd Hybrid
IRCoderZ
IRCOxyd
IRCProgs
IRCu de type ancien
IRCu2.10.11.04
CService (IriX)
Services Epona
IRCServices
SCoderZ
UWorld
Entrechat

| Les Liens | Forum IRC | Accueil | Annuaire du Chat | Amour et romantisme |
Ajouter en page de démarrage | Ajouter aux favoris | Chat en direct
- Dialoguer en direct !

Google

Aide tcl de base

Comme vous le savez sûrement, les bots mIRC se "meurent" de plus en plus, laissant place aux eggdrops/windrops. Nous allons donc, dans cette rubrique apprendre les bases du scripting tcl qui sert bien évidemment, à faire des scripts pour les eggdrops/windrops. C'est l'équivalent des addons mIRC... on scripte et on ajoute les scripts dans la configuration de l'eggdrop.

Bien, dans notre aide tcl, nous ferons un script servant à s'op, déop, kick, kickban etc par les commandes .op ..deop etc.. sur le channel.. Ces commandes ne seront valables que si l'user qui la tape à un access Opérateur au bot.

 

1 - { Les Binds }

Les binds définissent à quoi le bot doit réagir.. il en existe une trentaine en tcl. Nous verrons ici les binds msg, pub, et dcc...qui sont les binds les plus faciles... et qui conviendront très bien à notre partie "Aide tcl de base"...

- Msg permet au bot de répondre à une commande qui se passe en privé.

(ex: &op #csadmin Jo)

- Dcc permet au bot de répondre à une commande qui, elle, se passera en dcc bien évidemment.

(ex: &op #csadmin Jo)

- pub permet au bot de répondre à une commande qui, répondra aux commandes sur le channel.

(ex: &op Jo) si on tape ça sur #csadmin.

 

2 - { Les Procédures }

Une procédure est une portion de code qui peut être appelée par n'importe quoi dans un script. On peut aussi en faire des fonctions (lorsqu'elles retournent quelque chose). Pour les eggdrops/windrops, la procédure est appelée par un bind.

proc nom de la procédure { arguments } { corps de la procédure }

proc pub:!salut { nick uhost handle channel arg } {
putserv "PRIVMSG $channel salut"
}

(par exemple)

Nous verrons plus tard dans le détail l'utilisation de putserv et des variables. Sachez simplement que putserv permet d'envoyer une information au serveur. Ce petit script donnera donc :
<Vous> !salut
<Eggdrop> salut

 

3 - { Les Variables }

Les variables permettent de stocker des informations dans la mémoire de l'eggdrop.
Par exemple, dans le script :
nick, uhost, handle, channel et arg sont des variables dont le contenu est donné par le bind. Pour utiliser le contenu d'une variable, il faut précéder son nom par un $.
Exemple : $channel retourne le nom du channel sur lequel s'est passée l'action.
Il existe aussi des variables globales dont le contenu est défini par le bot. Pour les utiliser dans une procédure, il faut signaler au bot que son champ d'action n'est pas limité à la procédure, en lui indiquant au début du corps de la procédure les variables globales à utiliser à l'aide de l'instruction globale.
Exemple :
bind pub - !nick pub:!nick
proc pub:!nick { nick uhost handle channel arg } {
global botnick
putserv "PRIVMSG $channel :Mon nick est $botnick"
}


Résultat :
<Vous> !nick
<Webs00> Mon nick est Webs00

Il existe un tas de variables, variables globales comme botnick botname server version numversion uptime server-online lastbindbotname server version numversion uptime server-online lastbind...

4 - { Commandes d'écriture }

Il en existe 2 sortes : Celles qui permettent d'écrire sur le serveur, et celles qui permettent d'écrire dans les logs.. Celles concernant le serveur sont putquick, pushmode, putserv, puthelp et putkick (pushmode permet d'envoyer des modes au serveur, c'est l'équivalent d'un /mode). Putkick permet de kicker quelqu'un sur un channel. Puthelp, putserv et putquick permettent d'envoyer toutes les autres commandes au serveur, en utilisant les RAW IRC.

elles qui désormais, concernent l'écriture dans les logs sont putlog, putcmdlog, putxferlog et putloglev.putlog, putcmdlog et putxferlog ont la même syntaxe, et écrivent respectivement dans les logs.

Syntaxe : put*log "texte

putloglev a une syntaxe différente :
Syntaxe : putloglev "level(s)" "channel" "texte"

 

5 - { Les conditions (If)

Le "if" permet de faire quelques commandes si, et seulement si elles répondent à une condition qui est spécifiée par le "if".Une expression est vraie, si la valeur de celle-ci (qui peut être donnée par une fonction, par exemple) est différente de 0. Une expression est fausse si la valeur de celle-ci est 0.

Il existe trois syntaxes dans lesquelles nous pouvons employer if. Elles sont les suivantes : (if expressions commandes) , (if expression commande.2 else commande.2) , (if if expression1 commandes1 elseif expression2 commandes2 elseif expression3 commandes3 else commandes4).

Pour illustrer ces syntaxes , voici trois scripts les présentant :

bind pub - !isvoice pub:isvoice
proc pub:isvoice { nick uhost handle channel arg } {
if [isvoice $nick $channel] {
   putserv "PRIVMSG $channel :T'es voice sur $channel."
}

bind pub - !isvoice pub:isvoice
proc pub:isvoice { nick uhost handle channel arg } {
if [isvoice $nick $channel] {
   putserv "PRIVMSG $channel :T'es voice sur $channel."
} else {
   putserv "PRIVMSG $channel :T'es pas voice sur $channel."
}

bind pub - !isvoice pub:isvoice
proc pub:isvoice { nick uhost handle channel arg } {
if [isvoice $nick $channel] {
   putserv "PRIVMSG $channel :T'es voice sur $channel."
} elseif [isop $nick $channel] {
   putserv "PRIVMSG $channel :T'es pas voice sur $channel mais t'es op"
} else {
   putserv "PRIVMSG $channel :T'es rien du tout sur $channel."
}


Si l'expression qui suit le "if" n'est pas vraie, l'eggdrop regarde si l'expression qui suit le "elseif" est vraie. Si elle est vraie, les commandes qui suivent le "elseif" sont exécutées. Sinon, l'eggdrop examine le "elseif" suivant ou passe au "else".
 

6 - { Les Boucles }

Les boucles permettent de contrôler l'exécution de votre script, en répétant certaines instructions.
Il y a trois boucles différentes en TCL : for, foreach, while.
L'instruction while permet d'exécuter un bloc d'instruction tant que la condition désignée est véridique.
Syntaxe : while condition instructions

set x 0
while {$x<5} {
    putlog "x = $x"
     incr x
}

(exemple tiré d'un autre site)


L'instruction for est un peu plus complexe : Sa syntaxe est la suivante :
Syntaxe :for début test suivant instructions

Ce script a le même effet que celui servant d'exemple à while.
for {set x 0} {$x<5} {incr x} {
   putlog "x = $x"
}

 

7- { Les Tableaux }

Les tableaux sont gérés de façon très simple en TCL.

Exemple : nom-du-tableau(index)

set nick(1) "Khorbald"
set nick(2) "Jo"
for {set index 1} {$index<=2} {incr index} {
putlog "Nick numéro $index : $nick($index)"
}

Résultat :
<Eggdrop> Nick 1 : Laurent
<Eggdrop> Nick 2 : Lucas
 

8 - { Les Listes }

Les listes sont, éventuellement, une autre façon de gérer des données que les tableaux. Une liste s'écrit et se présente sous la forme suivante : { texte texte1 texte2 }
Instructions de gestion des listes :
Instructions non détaillées :
list : crée une liste
join : crée une liste
lappend : ajoute des éléments à une liste
lindex : lit un élément d'une liste
linsert : insère des éléments dans une liste
llength : retourne le nombre d'éléments d'une liste
lrange : retourne un ou plusieurs éléments d'une liste
lreplace : remplace des éléments d'une liste
lsearch : recherche un élément dans une liste
lsort : trie les éléments d'une liste



9- { Script Final }

## Webs.tcl ##

bind pub o &op pub:&op
proc pub:&op { nick uhost handle channel arg } {
set opnick [lindex $arg 0]
putserv "MODE $channel +o $opnick"
}
bind pub o &deop pub:&deop
proc pub:&deop { nick uhost handle channel arg } {
set deopnick [lindex $arg 0]
putserv "MODE $channel -o $deopnick"
}
bind pub o &voice pub:&voice
proc pub:&voice { nick uhost handle channel arg } {
set voicenick [lindex $arg 0]
putserv "MODE $channel +v $voicenick"
}
bind pub o &devoice pub:&devoice
proc pub:&devoice { nick uhost handle channel arg } {
set devoicenick [lindex $arg 0]
putserv "MODE $channel -v $devoicenick"
}
bind pub o &kick pub:&kick
proc pub:&kick { nick uhost handle channel arg } {
set kicknick [lindex $arg 0]
set reason [lrange $arg 1 end]
putserv "KICK $channel $kicknick :$reason"
}
bind pub o &ban pub:&ban
proc pub:&ban { nick uhost handle channel arg } {
set bannick [lindex $arg 0]
putserv "MODE $channel +b $bannick"
}
bind pub o &topic pub:&topic
proc pub:&topic { nick uhost handle channel arg } {
set topicz [lrange $arg 0 end]
putserv "TOPIC $channel :topicz"
}
putlog "Webs.tcl"

Ce tcl est bien évidemment un tcl de base qui est très simple mais qui est ici un bon exemple pour notre rubrique.

Shine

Au Ciné : News
Tu peux garder un secret
Jackpot
GAL
Teeth
Drillbit Taylor : garde du corps
Bataille à Seattle
Les Aventures de Impy le dinosaure
Moi qui ai servi le roi d'Angleterre
Agnus Dei
Wonderful Town
Si Loin
Loin de Sunset Boulevard

Newsletter
Restez informé de l'actualité du cinéma avec Nord-Cinéma

Services IRC
T'chat sur votre site
Cinéma sur votre site
Module T'chat Voila

Aide bot mIRC
CService
Faire son bot



Aide mIRC
Alias
Popup
Remotes
Variables
Cours de scripting

Partenaires
Home cinéma
Cinema
Nouveautes DVD
Location dvd
Forum de l'IRC

©2002-2004 CSAdmin.net | Contact | L'équipe Liens | Faites de csadmin.net votre page d'accueil
CSAdmin.net est déclaré à la CNIL sous le numéro 856687
Google