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 !

IA BOT


Information sur la source

Catégorie :Bots Niveau : Expert Date de création : 13/09/2003 Date de mise à jour : 31/05/2004 16:56:13 Vu / téléchargé: 16 848 / 1 278

Note :
9,82 / 10 - par 11 personnes
9,82 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (49)
Ajouter un commentaire et/ou une note

Description

C'est un bot qui sera rien dire et vous devez lui aprendre à parler. Le bot aprend relativement rapidement (disons qu'en 10minutes de conversation il connait pas mal de mot). L'interrêt de la chose est ... euh ... bah j'avais scripté ça par défi, on peut critiquer mon système mais il a l'avantage d'être simple, ludique et rapide.
Si vous arrivez à faire un bot qui s'exprime assez bien vous pouvez m'envoyer la bd à tiot@redpowa.com je la posterai sur mon site (http://moipetit.free.fr/ia/) essayez de ne pas écrire comme un porc.

Normalement cette add-on ne marche que sur mIRC 6.03 et 6.1x
 

Source

  • ;*******************************************
  • ;*** ***
  • ;** **
  • ;* IA BOT VERSION 1.5b BY TIOT *
  • ;* *
  • ;** **
  • ;*** ***
  • ;*******************************************
  • ;La super moderne menubar
  • menu menubar {
  • ia
  • .config:dialog -m ia ia
  • .connection:if ((%ia.ip) && (%ia.port)) if (%ia.nick) ia.co
  • .déconnection:{ .timeria off | if ($hget(ia)) hsave -o ia ia/ia.hash | hfree -w ia* | ia.s QUIT :ia bot by tiot }
  • }
  • ;-----------------------------
  • ;
  • ; LES REMOTES
  • ;
  • ;-----------------------------
  • ;un tit dialog
  • dialog ia {
  • title "ia config"
  • size -1 -1 197 172
  • option dbu
  • button "Annuler",77, 73 132 37 12, cancel
  • button "OK", 5, 16 131 37 12, ok
  • edit %ia.ip,1,60 19 75 10
  • edit %ia.port,2, 60 34 75 10
  • edit %ia.nick,3, 60 49 75 10
  • edit %ia.Md,4, 60 64 75 10
  • edit %ia.JOIN, 7, 60 79 75 10
  • edit %ia.call, 8, 60 94 75 10
  • text "Serveur",10,7 20 50 8, center
  • text "Port",11,7 35 50 8, center
  • text "Nickname",12, 7 50 50 8, center
  • text "Mode par défault",13,7 65 50 8, center
  • text "chans join",14,7 80 50 8, center
  • text cmde d'apelle,15,7 95 50 8, center
  • check "log pv",61,140 19 50 10
  • check "fenetre debug",62,140 29 50 10
  • }
  • on 1:dialog:ia:init:0:{
  • if (%ia.log) did -c ia 61
  • if (%ia.debug) did -c ia 62
  • }
  • ;Quand on appuie sur "ok" çà sauve tout
  • on 1:dialog:ia:sclick:5:{
  • set %ia.ip $did(1).text
  • set %ia.port $did(2).text
  • set %ia.nick $did(3).text
  • set %ia.Md $did(4).text
  • set %ia.join $did(7).text
  • set %ia.call $iif($left($did(8).text,1) != :,:) $+ $did(8).text
  • set %ia.log $did(61).state
  • set %ia.debug $did(62).state
  • }
  • on 1:load:{
  • if ($version < 6.00) { echo -a 12Votre version de mIRC est trop vielle pour suporter cette add-on | return }
  • if ($version < 6.03) echo -a 12Version mIRC <6.03 des commandes ne marcheront plus : /ia.saveBD !eff !wm et surment d'autre commandes
  • mkdir ia
  • mkdir ia\log
  • if (!%ia.port) {
  • set %ia.port 6667
  • set %ia.nick ia
  • set %ia.Md n
  • set %ia.call ia
  • }
  • echo -a 12Ia bot chargé dans votre mIRC
  • }
  • on 1:exit:if ($hget(ia)) hsave -o ia ia\ia.hash
  • ;***************************
  • ;**** ****
  • ;*** ***
  • ;** LES SOCKETS **
  • ;*** ***
  • ;**** ****
  • ;***************************
  • ;Sert à faire envoyer des cmdes aux serveur à la main
  • alias ia.s sockwrite -n ia $1-
  • ;Sert à se connecter au serveur
  • alias ia.co sockopen ia %ia.ip %ia.port
  • on 1:sockopen:ia:{
  • sockwrite -n ia NICK %ia.nick
  • sockwrite -n ia USER ia "" "" :ia by tiot
  • echo -a 2Connection ouverte
  • }
  • on 1:sockread:ia:{
  • if ($sockerr > 0) return
  • var %temp
  • sockread %temp
  • tokenize 32 %temp
  • if ($1 == PING) sockwrite -n $sockname PONG $2
  • ;On fait un montage, si c sur un salon à fait :
  • ;ia.traite $chan $nick phrase
  • ;si c'est dans un pv
  • ;ia.traite $nick $nick phrase
  • elseif ($2 == PRIVMSG) {
  • ;%temp contiendra l'host du gars, cela m'évite de le passer en paramètre.
  • set %ia.temp $gettok($1,2,64)
  • if ($asc($3) == 35) { if ($strip($4) == %ia.call) ia.traite $3 $right($gettok($1,1,33),-1) $strip($5-) }
  • else ia.traite $right($gettok($1,1,33),-1) $right($gettok($1,1,33),-1) $strip($right($4-,-1))
  • }
  • ;Si le nick est déjà prit on rajoute un `
  • elseif ($2 == 433) sockwrite -n ia NICK %ia.nick $+ `
  • elseif ($2 == 001) { if (%ia.join) sockwrite -n ia JOIN %ia.join | echo -a 2Bot connecté }
  • }
  • ;***************************
  • ;**** ****
  • ;*** ***
  • ;** LES ALIAS **
  • ;*** ***
  • ;**** ****
  • ;***************************
  • ;-----------------------
  • ;
  • ;LES ALIAS INDIPENSABLE
  • ;
  • ;-----------------------
  • ;Vas traiter l'entrée.
  • ;$1 = Où il doit dire la phrase.
  • ;$2 = Nick du gars
  • ;$3- = phrase dite par le gars
  • ;%ia.temp = qqch qui identifie la personne. Par default (avec les socket) c l'host de la personne
  • alias ia.traite {
  • ;%c = Phrase dite par la personne
  • ;%ia.axx = access de la personne (l n c o a)
  • var %c,%ia.axx
  • %ia.axx = $ia.axx(%ia.temp)
  • ;On inianalise
  • if (!$hget(ia)) ia.init
  • if ($left($3,1) == !) {
  • if ($3 == !help) ia.out $1 Toutes l'aide sur ce bot se trouve sur: 2http://moipetit.free.fr/ia/readme.htm
  • elseif ($3 == !syn) {
  • if ($ia.axx2(%ia.axx,c)) ia.out $1 $gettok($ia.syn($4-),2-,32)
  • else ia.out $1 Access insufisant
  • }
  • elseif ($3 == !eff) {
  • if ($ia.axx2(%ia.axx,c)) ia.out $1 $gettok($ia.eff($4-),2-,32)
  • else ia.out $1 Access insufisant
  • }
  • elseif ($3 == !non) {
  • if (!$ia.axx2(%ia.axx,l)) { ia.out $1 Access insufisant | return }
  • if ($hget(ia,t2. $+ %ia.temp) != $null ) {
  • hadd ia t1. $+ %ia.temp $hget(ia,t2. $+ %ia.temp)
  • ia.CmotP $4-
  • }
  • hadd ia t3. $+ %ia.temp $hget(ia,t2. $+ %ia.temp)
  • hadd ia t2. $+ %ia.temp $hget(ia,t1. $+ %ia.temp)
  • hadd ia t1. $+ %ia.temp $4-
  • ia.out $1 $iif($asc($1) == 35,$2 $+ :) $4-
  • }
  • elseif ($3 == !reco) {
  • hdel -w ia t?. $+ %ia.temp
  • hadd ia idk. $+ %ia.temp 1
  • ia.out $1 La conversation recommence depuis le début
  • }
  • elseif ($3 == !stats ) ia.out $1 Je connais $hget(ia,Nbr) phrases, $hfind(ia,^m([^?])+$,0,r) mots et ma bd pèse $bytes($file(ia\ia.txt).size).suf
  • elseif ($3 == !version) ia.out $1 Ia bot version 1.5b by tiot (2http://moipetit.free.fr/ia/)
  • elseif ($istok(!addm !delm !addp !Wm !Wp !Remplace,$3,32)) {
  • if ($ia.axx2(%ia.axx,c)) {
  • var %c
  • if ($3 == !addm) %c = $ia.addm($4-)
  • elseif ($3 == !delm) %c = $ia.delm($4-)
  • elseif ($3 == !addp) %c = $ia.addp($4-)
  • elseif ($3 == !wp) %c = $ia.wp($4-)
  • elseif ($3 == !wm) %c = $ia.wm($4-)
  • elseif ($3 == !remplace) %c = $ia.Remplace($4-)
  • }
  • ia.out $1 $gettok(%c,2-,32)
  • else ia.out $1 Access insufisant
  • }
  • elseif ($istok(!auth !addh !delh !listh !addaxx !delaxx !listaxx,$3,32)) return $ia.BotAxx($1,$3-)
  • return
  • }
  • ;bordel
  • %c = $ia.cher($3-,$hget(ia,t1. $+ %ia.temp))
  • if ($ia.axx2(%ia.axx,l)) ia.CmotP $3-
  • if ($asc($1) == 35) ia.out $1 $2 $+ : %c
  • else {
  • if (%ia.log) {
  • write ia\log\ $+ %ia.temp $+ $date(dd.mm.yy) $+ .log $timestamp $+(<,$1,>) $3-
  • write ia\log\ $+ %ia.temp $+ $date(dd.mm.yy) $+ .log $timestamp $+(<,%ia.nick,>) %c
  • }
  • if (%ia.debug) {
  • if (!$window(@Ia)) window -en @ia
  • aline @ia $2 -> $3-
  • aline @ia %ia.nick -> %c
  • }
  • ia.out $1 %c
  • }
  • ;ia,idk = 1 si il a trouver une réponse, sinon il est égal à 0
  • if (!$hget(ia,idk. $+ %ia.temp)) {
  • hadd ia t3. $+ %ia.temp $hget(ia,t2. $+ %ia.temp)
  • hadd ia t2. $+ %ia.temp $hget(ia,t1. $+ %ia.temp)
  • hadd ia t1. $+ %ia.temp $3-
  • hadd ia idk. $+ %ia.temp 1
  • }
  • else {
  • hadd ia t3. $+ %ia.temp $hget(ia,t2. $+ %ia.temp)
  • hadd ia t2. $+ %ia.temp $3-
  • hadd ia t1. $+ %ia.temp %c
  • }
  • }
  • ;$1 = #canaux/nick vers lequelle vas le msg
  • ;$2- = phrase que le bot dit
  • ;C'est l'alias qui indique la sortit, dans ce le cas par default c un socket.
  • alias ia.out {
  • sockwrite -n ia PRIVMSG $1 : $+ $2-
  • }
  • ;Vas lié chaque mot de $hget(ia,t1. $+ %ia.temp) avec la phrase $1-
  • alias ia.CmotP {
  • var %P = $hget(ia,t1. $+ %ia.temp),%ia.Np,%b,%a,%c
  • if ($read(ia\ia.txt,w,$1-)) %ia.Np = $readn
  • else {
  • write ia\ia.txt $1-
  • hinc ia Nbr
  • %ia.Np = $hget(ia,Nbr)
  • }
  • %P = $replace(%P,$chr(44),$chr(32),',$chr(32),?,$chr(32) $+ ?)
  • %P = $remove(%P,?)
  • %b = $numtok(%P,32)
  • while (%b) {
  • %c = %a
  • %a = $gettok(%P,%b,32)
  • dec %b
  • if ($hgeti(ia,eff,%a)) continue
  • if ($hgetg(ia,s. $+ %a,1) == 0) %a = $hgetg(ia,s. $+ %a,2)
  • %c = %a $+ ? $+ %c
  • ia.LPM %a %ia.Np
  • ia.LPM %c %ia.Np
  • }
  • hdel -w ia m.*?
  • hdel -w ia m.?*
  • return 1 Les phrase sont bien lié
  • }
  • ;C'est l'alias qui vas chercher la bonne phrase celon $1 et $2
  • ;$1 est la phrase primordial et $2 au cas où
  • alias ia.cher {
  • hdel -w ia2 *
  • if (($numtok($1,32) < 4) && ($2 != $null)) tokenize 32 $1 $1 $2
  • else tokenize 32 $1
  • var %list,%phrase,%a1,%c1,%c2,%a2,%b,%a,%b2,%b1 = $0,%Max = 0
  • ;%Phrase = c la phrase qu'il va sortir
  • ;%List = liste des n° de phrases possible
  • ;%a1 = c un MOT de la phrase
  • ;%c1 = c un groupe de mot de la phrase
  • ;%a2 = c une des phrases liées a %a1
  • ;%b,%b1,%b2 = compteurs de boucle
  • ;%Max = max de fois qu'une phrase est cité
  • while (%b1) {
  • %c1 = %a1
  • %a1 = $gettok($1-,%b1,32)
  • if ($hgetg(ia,s. $+ %a1,1) == 0) %a1 = $hgetg(ia,s. $+ %a1,2)
  • %c1 = %a1 $+ ? $+ %c1
  • %b2 = $numtok($ia.m(%a1),32)
  • while (%b2) {
  • %a2 = $gettok($ia.m(%a1),%b2,32)
  • hinc ia2 %a2
  • if ($hget(ia2,%a2) > %Max) %Max = $ifmatch
  • dec %b2
  • }
  • %b2 = $numtok($ia.m(%c1),32)
  • while (%b2) {
  • %a2 = $gettok($ia.m(%c1),%b2,32)
  • hinc ia2 %a2 2
  • if ($hget(ia2,%a2) > %Max) %Max = $ifmatch
  • dec %b2
  • }
  • dec %b1
  • }
  • ;On recherche les phrases les plus cités.
  • %b = $hfind(ia2,%max,0,n).data
  • while (%b) {
  • if ($len(%list) > 900) break
  • %list = %list $hfind(ia2,%max,%b,n).data
  • dec %b
  • }
  • ;%phrase contient maintenant la phrase final, il faut maintenant chercher les synonymes.
  • %phrase = $read(ia\ia.txt,$gettok(%list,$rand(1,$numtok(%list,32)),32))
  • %b = $numtok(%phrase,32)
  • while (%b) {
  • %a = $gettok(%phrase,%b,32)
  • if ($hget(ia,s. $+ %a) != $null) {
  • if ($hgetg(ia,s. $+ %a,1) == 0) %a = $hgetg(ia,s. $+ %a,2)
  • %a = $hget(ia,s. $+ %a)
  • %a = $gettok(%a,$rand(2,$numtok(%a,32)),32))
  • %Phrase = $puttok(%Phrase,%a,%b,32)
  • }
  • dec %b
  • }
  • if (%Phrase == $null) { hadd ia idk. $+ %ia.temp 0 | return j'aurais du dire ... ? }
  • else return %Phrase
  • }
  • ;Lié Le mot $1 avec la phrase n° $2
  • ;-Si $2 est déjà dans $1 on le met en pôle position
  • ;-Si l'item est remplit on vire le dernièrs token et on place notre $2 en -20 position
  • :-tout ce passe bien on le met normal (en dernièrs position comme même)
  • alias ia.LPM {
  • if ($hgeti(ia,m. $+ $1,$2)) {
  • hdelt ia m. $+ $1 $2
  • hadd ia m. $+ $1 $2 $ia.m($1)
  • return 1
  • }
  • if ($len($ia.m($1)) > 900) {
  • hadd ia m. $+ $1 $instok($deltok($ia.m($1),-1,32),$2,-20,32)
  • return 1
  • }
  • haddt ia m. $+ $1 $2
  • return 1
  • }
  • ;$1 = access de la personne
  • ;$2 = commande qu'il veut éxercé (c l a o)
  • ;return 1 si il peut éxercer la commande, sinon 0.
  • ;Cette alias sert uniquement si vous voulez intégré l'ia à votre bot.
  • alias ia.axx2 {
  • if ($2 isin $1) return 1
  • else return 0
  • }
  • ;Cette alias retourne l'access de la personne par raport à %ia.temp (par défault contient l'host).
  • ;Vous pouvez ici personalisez vos access pour intégrer l'ia à votre bot.
  • alias ia.axx {
  • if ($hget(ia,a. $+ $1) != $null) return $ifmatch
  • else return %ia.Md
  • }
  • ;retourne les lien du mot $1 (c un alias de fainiantise)
  • alias ia.m return $hget(ia,m. $+ $1)
  • ;Cette alias sert à inialiser le bot.
  • alias ia.init {
  • .hmake -s ia 100
  • if (!$hget(ia2)) .hmake -s ia2 100
  • if ($exists(ia\ia.hash)) hload ia ia\ia.hash
  • else {
  • hadd ia eff la le un une l' des les d'
  • hadd ia a. $+ %ia.temp olac
  • }
  • hadd ia Nbr $lines(ia\ia.txt)
  • .timeria 0 300 hsave -o ia ia\ia.hash
  • if ($hget(ia,NL) != $null) ia.ConBD
  • }
  • ;-------------------------------------------------------------------
  • ;
  • ;Les alias indispensables et qui peuvent servir dans d'autre script
  • ;
  • ;-------------------------------------------------------------------
  • ;Rajoute $3 à la listes de token de l'item $2 de la hash $1
  • alias haddt hadd $1 $2 $addtok($hget($1,$2),$3,32)
  • ;Enlève $3 à la listes de token de l'item $2 de la hash $1
  • alias hdelt hadd $1 $2 $remtok($hget($1,$2),$3,1,32)
  • ;Retourne $true si $3 est dans la liste de token de l'item $2 de la hash $1
  • alias hgeti return $istok($hget($1,$2),$3,32)
  • ;Return le $3 de la listes des token de l'item $2 de la hash $1
  • alias hgetg return $gettok($hget($1,$2),$3,32)
  • ;---------------------
  • ;
  • ;Les alias optionnels
  • ;
  • ;---------------------
  • ;-0 para : liste des synonymes
  • ;-1 para : liste des synonymes de 1
  • ;-2 para : mettre $1 synonyme à $2
  • alias ia.syn {
  • tokenize 32 $1-
  • if (!$1) {
  • var %list,%b = $hfind(ia,s.*,0,w)
  • while (%b) {
  • %list = $addtok(%list,$right($hfind(ia,s.*,%b,w),-2),32)
  • dec %b
  • }
  • return 1 %list
  • }
  • if (!$2) {
  • ;La on recherche tous les synonyme du mot et les balance. Si le mot n'existe pas on fait un return
  • ;Si par contre le première lettre est "0" (cad ce n'est pas un syn de référence, on balance le syn de ref)
  • if (!$hget(ia,s. $+ $1)) return 0 $1 n'a aucun synonyme
  • if (!$hgetg(ia,s. $+ $1,1)) tokenize 32 $hgetg(ia,s. $+ $1,2)
  • return 1 $hgetg(ia,s. $+ $1,2-)
  • }
  • ;Il y a un synonyme de référence, c lui qui à tout les liens.
  • ;Chaque synonyme on pour nom "s.Nom" leur item contient "N syn", N est de 0 si le synonyme n'est pas de référence.
  • ;Si n = 1 alors le synonyme est dé référence, et tout ce qui est après le N se sont les synonyme qui se réfère à lui
  • ;Donc une prise de tête en perspective pour gérer tout çà
  • :syn
  • var %a1 = $hget(ia,s. $+ $1),%a2 = $hget(ia,s. $+ $2),%c1 = $gettok(%a1,2-,32),%c2 = $gettok(%a2,2-,32),%r1 = $gettok(%a1,1,32),%r2 = $gettok(%a2,1,32)
  • ;A chaque fois le 1 c pour $1 et le 2 pour $2 (dans les var)
  • :%a = N syn (est nul si $1 n'a aucun synonyme)
  • ;%c = liste des syonyme
  • ;%r = 1 si synonyme est de référence sinon 0
  • ;si $1 n'existe pas
  • if (!%a1) {
  • ;si $1 et $2 n'ont aucun synonyme
  • if (!%a2) {
  • hadd ia s. $+ $1 1 $2
  • hadd ia s. $+ $2 0 $1
  • ia.ccl $2 $1
  • ia.RP $2 $1
  • }
  • ;si $1 n'existe pas et $2 lui éxiste.
  • else {
  • ;si $2 est une référence
  • if (%r2) {
  • haddt ia s. $+ $2 $1
  • hadd ia s. $+ $1 0 $2
  • ia.ccl $1 $2
  • ia.RP $1 $2
  • }
  • ;si $2 n'est pas une référence (mais $1 n'éxiste pas) on dit $1 synonyme de la référence de $2
  • else {
  • haddt ia s. $+ %c2 $1
  • hadd ia s. $+ $1 0 %c2
  • ia.ccl $1 %c2
  • ia.RP $1 %c2
  • }
  • }
  • }
  • ;Par contre si $1 n'est pas null
  • else {
  • ;Si $1 est une référence
  • if (%r1) {
  • ;Si $2 n'éxiste pas
  • if (!%a2) {
  • haddt ia s. $+ $1 $2
  • hadd ia s. $+ $2 0 $1
  • ia.ccl $2 $1
  • ia.RP $2 $1
  • }
  • ;Si $2 éxite
  • else {
  • ;Si $2 et $1 sont des référence alors $1 devient la référence de $2 est donc des référencés de $2
  • if (%r2) {
  • var %a,%b = $numtok(%a2,32)
  • while (%b) {
  • %a = $gettok(%a2,%b,32)
  • haddt ia s. $+ $1 %a
  • hadd ia s. $+ %a 0 $1
  • dec %b
  • }
  • haddt ia s. $+ $1 $2
  • hadd ia s. $+ $2 0 $1
  • ia.ccl $2 $1
  • ia.RP $2 $1
  • }
  • ;$1 est une référence et $2 a pour référence %a2. Donc $1 synonyme de %c2
  • else {
  • if ($1 == %c2) return 0 $1 déjà synonyme avec $2
  • tokenize 32 $1 %c2
  • goto syn
  • }
  • }
  • }
  • ;Si $1 éxiste mais n'est pas une référence, donc il est référencé à %c1
  • else {
  • ;Cela revient à $2 synonyme de %c1
  • if ($2 == %c1) return 0 $1 déjà synonyme avec $2
  • tokenize 32 %c1 $2
  • goto syn
  • }
  • }
  • return 1 $1 Synonyme bien enregistré
  • }
  • ;Copie les liens de $1 dans $2 puis efface $1
  • alias ia.ccl {
  • var %a = $ia.m($1),%b = $numtok(%a,32)
  • while (%b) {
  • ia.LPM $2 $gettok(%a,%b,32)
  • dec %b
  • }
  • hdel ia m. $+ $1
  • }
  • ;Remplace dans toutes les phrase $1 par $2 et dans tous les groupes de mots.
  • alias ia.RP {
  • var %b = 1,%c,%d,%b2
  • while ($read(ia\ia.txt,w,* $+ $1 $+ *,%b)) {
  • %d = $ifmatch
  • %c = $readn
  • %b = %c
  • %b2 = $findtok(%d,$1,0,32)
  • while (%b2) {
  • write -l $+ %c ia\ia.txt $reptok(%d,$1,$2,%b2,32)
  • dec %b2
  • }
  • inc %b
  • }
  • %b = $hfind(ia,m. $+ $1 $+ ?*,0,w)
  • while (%b) {
  • %c = $hfind(ia,m. $+ $1 $+ ?*,%b,w)
  • dec %b
  • if ($hget(ia,m. $+ $2 $+ ? $+ $gettok(%c,2,164)) != $null) { ia.ccl %c $2 $+ ? $+ $gettok(%c,2,164) | continue }
  • hadd ia m. $+ $2 $+ ? $+ $gettok(%c,2,164) $hget(ia,%c)
  • hdel ia %c
  • }
  • %b = $hfind(ia,m.*? $+ $1,0,w)
  • while (%b) {
  • %c = $hfind(ia,m.*? $+ $1,%b,w)
  • dec %b
  • if ($hget(ia,m. $+ $gettok(%c,1,164) $+ ? $+ $1) != $null) { ia.ccl %c $gettok(%c,1,164) $+ ? $+ $1 | continue }
  • hadd ia m. $+ $gettok(%c,1,164) $+ ? $+ $1 $hget(ia,%c)
  • hdel ia %c
  • }
  • }
  • ;Efface la phrase $1- ou le n° de phrase $1
  • alias ia.eff {
  • tokenize 32 $1-
  • if ($1 == null) return 0 Pas assez de paramètre
  • if ($1- !isnum) {
  • if ($read(ia\ia.txt,w,$1-) == $null) return 0 La phrase n'existe pas
  • tokenize 32 $readn
  • }
  • write -l $+ $1 ia\ia.txt --- ligne éffacé --- $ticks
  • ;Le (^|\s) $+ $1 $+ (\s|$) et pour "$1 mot de l'item"
  • %b = $hfind(ia,(^|\s) $+ $1 $+ (\s|$),0,r).data
  • while (%b) {
  • %c = $hfind(ia,(^|\s) $+ $1 $+ (\s|$),%b,r).data
  • ;Le if sert à savoir si on loock bien un mot
  • if ($left(%c,2) == m.) hdelt ia %c $1
  • dec %b
  • }
  • return 1 Phrase corectement éffacé.
  • }
  • ;---------------------------------------------
  • ;
  • ; ALIAS DE MODIFICATION DE LA BD AVANCÉE
  • ;
  • ;----------------------------------------------
  • ;Lie les mots $2- à la phrase n° $1
  • ;$1 = n° de phrase valide
  • ;$2- = mot
  • alias ia.addm {
  • tokenize 32 $1-
  • if ($2 == $null) return 0 Pas assez de paramètre
  • if ($1 !isnum) return 0 $1 n'est pas un n°
  • if ($1 > $hget(ia,Nbr)) return 0 $1 ne corespond à aucune phrase
  • var %a,%b = $numtok($2-,32)
  • while (%b) {
  • %a = $gettok($2-,%b,32)
  • if (? isin %a) {
  • if ($hgetg(ia,s. $+ $gettok(%a,1,164),1) == 0) %a = $hgetg(ia,s. $+ $gettok(%a,1,164),2) $+ ? $+ $gettok(%a,2,164)
  • if ($hgetg(ia,s. $+ $gettok(%a,2,164),1) == 0) %a = $gettok(%a,1,164) $+ ? $+ $hgetg(ia,s. $+ $gettok(%a,2,164),2)
  • }
  • if ($hgetg(ia,s. $+ %a,1) == 0) %a = $hgetg(ia,s. $+ %a,2)
  • ia.LPM %a $1
  • dec %b
  • }
  • return 1 Les mots $2- on été lié à la phrase n° $1 
  • }
  • alias ia.delm {
  • tokenize 32 $1-
  • if ($2 == $null) return 0 Pas assez de paramètre
  • if ($1 !isnum) return 0 $1 n'est pas un n°
  • if ($1 > $read(ia\ia.txt,0)) return 0 $1 ne corespond à aucune phrase
  • var %b = $numtok($2-,32)
  • while (%b) {
  • hdelt ia m. $+ $gettok($2-,%b,32) $1
  • dec %b
  • }
  • return 1 Les mots $2- ne sont plus liés avec la phrase n° $1 
  • }
  • alias ia.addp {
  • tokenize 32 $1-
  • if ($1 isnum) {
  • if ($2 == $null) return 0 Pas assez de paramètre
  • if ($1 > $hget(ia,Nbr)) return 0 Erreur, la phrase n° $+ $1 n'éxiste pas
  • write -l $+ $1 ia\ia.txt $2-
  • }
  • else {
  • if ($read(ia\ia.txt,w,$1-)) return 0 La phrase est déjà enregistré n° $readn
  • write ia\ia.txt $1-
  • hinc ia Nbr
  • }
  • return 1 Phrase bien ajouté et à pour n° $hget(ia,Nbr) 
  • }
  • alias ia.Wp {
  • tokenize 32 $1-
  • if (($1 isnum) && ($2 == $null)) return 1 La phrase n° $1 Correspond à $read(ia\ia.txt,$1)
  • if ($read(ia\ia.txt,w,$1-)) return 1 La phrase a pour numero: $readn
  • else return 0 La phrase n'est pas dans la BD
  • }
  • alias ia.Wm {
  • tokenize 32 $1-
  • if ((!$1) || ($1 !isnum)) return 0 $1 n'éxiste pas ou n'est pas un nombre
  • var %b1,%list,%c
  • %b1 = $hfind(ia,(^|\s) $+ $1 $+ (\s|$),0,r).data
  • %list = $null
  • while (%b1) {
  • %c = $hfind(ia,(^|\s) $+ $1 $+ (\s|$),%b1,r).data
  • ;Le if sert à savoir si on loock bien un mot
  • if ($left(%c,2) == m.) %list = %list $right(%c,-2)
  • dec %b1
  • }
  • return 1 2 $+ %list lié à4 $1
  • }
  • alias ia.remplace {
  • tokenize 32 $1-
  • if ($2 == $null) return 0 Pas assez de paramètre
  • if ($1 === $2) return 0  $1 et $2 c la même chose chez moi
  • ia.ccl $1 $2
  • ia.RP $1 $2
  • return 1 Opération réussi: $1 a été remplacé par $2 
  • }
  • ;-------------------------------------------------------
  • ;
  • ;Alias s'occupant de SAUV - LOAD - CONVERTIR la BD
  • ;
  • ;-------------------------------------------------------
  • alias ia.saveBD {
  • if (!$1) { echo -a precisez le nom de votre sauvgarde: /ia.saveBD pokemon.txt | return }
  • if (!$exist(ia\save\)) mkdir ia\save
  • var %a,%b,%b1,%i,%c,%c1
  • %i = $ticks
  • %c = $gettok($ia.syn,2-,32)
  • %b = $numtok(%c,32)
  • while (%b) {
  • %a = $gettok(%c,%b,32)
  • write ia\save\ $+ $1 s: %a $hgetg(ia,s. $+ %a,2-)
  • dec %b
  • }
  • %b = 1
  • var %list
  • while ($read(ia\ia.txt,%b)) {
  • write ia\save\ $+ $1 m %b $ifmatch
  • %b1 = $hfind(ia,(^|\s) $+ %b $+ (\s|$),0,r).data
  • %list = $null
  • while (%b1) {
  • %c = $hfind(ia,(^|\s) $+ %b $+ (\s|$),%b1,r).data
  • ;Le if sert à savoir si on loock bien un mot
  • if ($len(%list) > 900) {
  • write ia\save\ $+ $1 mm %b %list
  • %list = $null
  • }
  • if ($left(%c,2) == m.) %list = %list $right(%c,-2)
  • dec %b1
  • }
  • write ia\save\ $+ $1 mm %b %list
  • inc %b
  • }
  • if ($isid) return 1 La BD a bien été sauvé en $calc($ticks - %i) ms
  • else echo 2 -a La BD a bien été sauvé en $calc($ticks - %i) ms
  • }
  • alias ia.LoadBD {
  • var %b,%b1,%c,%N,%der,%ou = $shortfn($sfile($mircdir,Choisit la BD à loader,LOAD))
  • %b = 1
  • if (!$hget(ia)) ia.init
  • if ($1 == -r) {
  • hdel -w ia m.*
  • hdel -w ia s.*
  • remove ia\ia.txt
  • }
  • while ($read(%ou,%b)) {
  • tokenize 32 $ifmatch
  • if ($1 == s:) ia.syn $2 $3
  • elseif ($1 == m) {
  • if ($read(ia\ia.txt,w,$3-)) %N = $readn
  • else {
  • write ia\ia.txt $3-
  • hinc ia Nbr
  • %N = $hget(ia,Nbr)
  • }
  • %der = $2
  • }
  • elseif ($1 == mm) {
  • if (%der != $2) return 0 problème lors du chargement de la BD
  • ia.addm %N $3-
  • }
  • else return 0 Ce fichier n'est pas un BD d'une ia
  • inc %b
  • }
  • if ($isid) return 1 chargement réussi
  • else echo 2 -a Chargement réussi
  • }
  • alias ia.ConBD {
  • hadd ia Nbr $hget(ia,Nl)
  • hdel ia Nl
  • var %b,%c
  • %b = $hfind(ia,1.*,0,w)
  • while (%b) {
  • %c = $hfind(ia,1.*,%b,w)
  • hadd ia m. $+ $right(%c,-2) $hget(ia,%c)
  • hdel ia %c
  • dec %b
  • }
  • hdel -w ia 0.*
  • hdel -w ia 1.*
  • hdel -w ia 2.*
  • hdel -w ia 3.*
  • hdel -w ia t.*
  • %b = $hfind(ia,syn.*,0,w)
  • while (%b) {
  • %c = $hfind(ia,syn.*,%b,w)
  • hadd ia s. $+ $right(%c,-4) $hget(ia,%c)
  • hdel ia %c
  • dec %b
  • }
  • hdel -w ia syn.*
  • hadd ia eff la le un une l' des les d'
  • return 1 Convertion de la base réussi
  • }
  • ;--------------------------------------------------------
  • ;
  • ;L'alias s'occupant de la gestion des access
  • ;
  • ;--------------------------------------------------------
  • alias ia.BotAxx {
  • var %axx = $ia.axx(%ia.temp)
  • var %nick = $1
  • tokenize 32 $2
  • if ($1 == !addh) {
  • if ((a !isin %axx) || (!$3)) return
  • if ((o isin $hget(ia,a. $+ $2)) && (o !isin %axx)) return
  • hadd ia a. $+ $2 $3
  • ia.out %nick $2 avec les modes $3 a bien été rajouté (ou modifié)
  • }
  • elseif ($1 == !delh) {
  • if ((a !isin %axx) || (!$2)) return
  • if (!$hget(ia,a. $+ $2)) { ia.out %nick $2 n'existe pas | return }
  • if ((o isin $hget(ia,a. $+ $2)) && (o !isin %axx)) return
  • hdel ia a. $+ $2
  • ia.out %nick l'host de $2 a été bien éffacé
  • }
  • elseif ($1 == !listh) {
  • var %list,%c,%b = $hfind(ia,a.*,0,w)
  • while (%b) {
  • %c = $hfind(ia,a.*,%b,w)
  • if ($len(%list) > 400) { ia.out %nick Liste des axxh: %list | %list = $null }
  • %list = %list ( $+ $right(%c,-2) $+ : $+ $hget(ia,%c) $+ )
  • dec %b
  • }
  • ia.out %nick Liste des axxh: %list
  • }
  • elseif ($1 == !addaxx) {
  • if ((a !isin %axx) || (!$4)) return
  • if ((o isin $gettok($hget(ia,axx. $+ $2),2,32)) && (o !isin %axx)) return
  • hadd ia axx. $+ $2 $3 $4
  • ia.out %nick Un axx à été rajouté (username $2 et mode $4 $+ )
  • }
  • elseif ($1 == !delaxx) {
  • if ((a !isin %axx) && (!$2)) return
  • if (o isin $gettok($hget(ia,axx. $+ $2),2,32) && (o !isin %axx)) return
  • hdel ia axx. $+ $2
  • }
  • elseif ($1 == !listaxx) {
  • var %list,%c,%b = $hfind(ia,axx.*,0,w)
  • while (%b) {
  • %c = $hfind(ia,axx.*,%b,w)
  • if ($len(%list) > 400) { ia.out %nick Liste des axx: %list | %list = $null }
  • %list = %list ( $+ $right(%c,-4) $+ : $+ $gettok($hget(ia,%c),2,32) $+ )
  • dec %b
  • }
  • ia.out %nick Liste des axx: %list
  • }
  • elseif ($1 == !auth) {
  • var %c = $hget(ia,axx. $+ $2)
  • if ((!$3) || (!%c)) return
  • if ($3 != $gettok(%c,1,32)) return
  • hadd ia a. $+ %ia.temp $gettok(%c,2,32)
  • }
  • return
  • }
;*******************************************
;***                                     ***
;**                                       **
;*       IA BOT VERSION 1.5b BY TIOT        *
;*                                         *
;**                                       **
;***                                     ***
;*******************************************

;La super moderne menubar 
menu menubar {
  ia 
  .config:dialog -m ia ia
  .connection:if ((%ia.ip) && (%ia.port)) if (%ia.nick) ia.co
  .déconnection:{ .timeria off | if ($hget(ia)) hsave -o ia ia/ia.hash | hfree -w ia* | ia.s QUIT :ia bot by tiot }
}

;-----------------------------
;
;         LES REMOTES
;
;-----------------------------

;un tit dialog
dialog ia {
  title "ia config"
  size -1 -1 197 172
  option dbu

  button "Annuler",77, 73 132 37 12, cancel
  button "OK", 5, 16 131 37 12, ok
  edit %ia.ip,1,60 19 75 10 
  edit %ia.port,2, 60 34 75 10  
  edit %ia.nick,3, 60 49 75 10
  edit %ia.Md,4, 60 64 75 10
  edit %ia.JOIN, 7, 60 79 75 10
  edit %ia.call, 8, 60 94 75 10
  text "Serveur",10,7 20 50 8, center
  text "Port",11,7 35 50 8, center
  text "Nickname",12, 7 50 50 8, center
  text "Mode par défault",13,7 65 50 8, center
  text "chans join",14,7 80 50 8, center
  text cmde d'apelle,15,7 95 50 8, center
  check "log pv",61,140 19 50 10
  check "fenetre debug",62,140 29 50 10
}

on 1:dialog:ia:init:0:{
  if (%ia.log) did -c ia 61
  if (%ia.debug) did -c ia 62
}

;Quand on appuie sur "ok" çà sauve tout
on 1:dialog:ia:sclick:5:{
  set %ia.ip $did(1).text
  set %ia.port $did(2).text
  set %ia.nick $did(3).text
  set %ia.Md $did(4).text
  set %ia.join $did(7).text
  set %ia.call $iif($left($did(8).text,1) != :,:) $+ $did(8).text
  set %ia.log $did(61).state
  set %ia.debug $did(62).state
}

on 1:load:{
  if ($version < 6.00) { echo -a 12Votre version de mIRC est trop vielle pour suporter cette add-on | return }
  if ($version < 6.03) echo -a 12Version mIRC <6.03 des commandes ne marcheront plus : /ia.saveBD !eff !wm et surment d'autre commandes
  mkdir ia
  mkdir ia\log
  if (!%ia.port) {
    set %ia.port 6667
    set %ia.nick ia
    set %ia.Md n
    set %ia.call ia
  }
  echo -a 12Ia bot chargé dans votre mIRC
}

on 1:exit:if ($hget(ia)) hsave -o ia ia\ia.hash

;***************************
;****                   ****
;***                     ***
;**      LES SOCKETS      **
;***                     ***
;****                   ****
;***************************


;Sert à faire envoyer des cmdes aux serveur à la main
alias ia.s sockwrite -n ia $1-

;Sert à se connecter au serveur
alias ia.co sockopen ia %ia.ip %ia.port

on 1:sockopen:ia:{
  sockwrite -n ia NICK %ia.nick
  sockwrite -n ia USER ia "" "" :ia by tiot
  echo -a 2Connection ouverte
}

on 1:sockread:ia:{
  if ($sockerr > 0) return 
  var %temp
  sockread %temp 
  tokenize 32 %temp  
  if ($1 == PING) sockwrite -n $sockname PONG $2

  ;On fait un montage, si c sur un salon à fait : 
  ;ia.traite $chan $nick phrase
  ;si c'est dans un pv
  ;ia.traite $nick $nick phrase

  elseif ($2 == PRIVMSG) {
    ;%temp contiendra l'host du gars, cela m'évite de le passer en paramètre.
    set %ia.temp $gettok($1,2,64)
    if ($asc($3) == 35) { if ($strip($4) == %ia.call) ia.traite $3 $right($gettok($1,1,33),-1) $strip($5-) }
    else ia.traite $right($gettok($1,1,33),-1) $right($gettok($1,1,33),-1) $strip($right($4-,-1))
  }
  ;Si le nick est déjà prit on rajoute un `
  elseif ($2 == 433) sockwrite -n ia NICK %ia.nick $+ ` 
  elseif ($2 == 001) { if (%ia.join) sockwrite -n ia JOIN %ia.join | echo -a 2Bot connecté }

}






;***************************
;****                   ****
;***                     ***
;**       LES ALIAS       **
;***                     ***
;****                   ****
;***************************

;-----------------------
;
;LES ALIAS INDIPENSABLE
;
;-----------------------

;Vas traiter l'entrée.
;$1 = Où il doit dire la phrase.
;$2 = Nick du gars
;$3- = phrase dite par le gars
;%ia.temp = qqch qui identifie la personne. Par default (avec les socket) c l'host de la personne

alias ia.traite {
  ;%c = Phrase dite par la personne
  ;%ia.axx = access de la personne (l n c o a) 

  var %c,%ia.axx
  %ia.axx = $ia.axx(%ia.temp)

  ;On inianalise
  if (!$hget(ia)) ia.init

  if ($left($3,1) == !) {
    if ($3 == !help) ia.out $1 Toutes l'aide sur ce bot se trouve sur: 2http://moipetit.free.fr/ia/readme.htm 
    elseif ($3 == !syn) { 
      if ($ia.axx2(%ia.axx,c)) ia.out $1 $gettok($ia.syn($4-),2-,32) 
      else ia.out $1 Access insufisant     
    }
    elseif ($3 == !eff) {
      if ($ia.axx2(%ia.axx,c)) ia.out $1 $gettok($ia.eff($4-),2-,32)
      else ia.out $1 Access insufisant 
    }
    elseif ($3 == !non) {
      if (!$ia.axx2(%ia.axx,l)) { ia.out $1 Access insufisant | return }
      if ($hget(ia,t2. $+ %ia.temp) != $null ) {
        hadd ia t1. $+ %ia.temp $hget(ia,t2. $+ %ia.temp)
        ia.CmotP $4-
      }
      hadd ia t3. $+ %ia.temp $hget(ia,t2. $+ %ia.temp)    
      hadd ia t2. $+ %ia.temp $hget(ia,t1. $+ %ia.temp)
      hadd ia t1. $+ %ia.temp $4-
      ia.out $1 $iif($asc($1) == 35,$2 $+ :) $4-
    }
    elseif ($3 == !reco) {
      hdel -w ia t?. $+ %ia.temp
      hadd ia idk. $+ %ia.temp 1    
      ia.out $1 La conversation recommence depuis le début
    }
    elseif ($3 == !stats ) ia.out $1 Je connais $hget(ia,Nbr) phrases, $hfind(ia,^m([^?])+$,0,r) mots et ma bd pèse $bytes($file(ia\ia.txt).size).suf    
    elseif ($3 == !version) ia.out $1 Ia bot version 1.5b by tiot (2http://moipetit.free.fr/ia/)     
    elseif ($istok(!addm !delm !addp !Wm !Wp !Remplace,$3,32)) {
      if ($ia.axx2(%ia.axx,c)) {
        var %c
        if ($3 == !addm) %c = $ia.addm($4-)
        elseif ($3 == !delm) %c = $ia.delm($4-)
        elseif ($3 == !addp) %c = $ia.addp($4-)
        elseif ($3 == !wp) %c = $ia.wp($4-) 
        elseif ($3 == !wm) %c = $ia.wm($4-)
        elseif ($3 == !remplace) %c = $ia.Remplace($4-)
      }
      ia.out $1 $gettok(%c,2-,32)
      else ia.out $1 Access insufisant     
    } 
    elseif ($istok(!auth !addh !delh !listh !addaxx !delaxx !listaxx,$3,32)) return $ia.BotAxx($1,$3-)    
    return
  }

  ;bordel
  %c = $ia.cher($3-,$hget(ia,t1. $+ %ia.temp))
  if ($ia.axx2(%ia.axx,l)) ia.CmotP $3-

  if ($asc($1) == 35) ia.out $1 $2 $+ : %c
  else {
    if (%ia.log) {
      write ia\log\ $+ %ia.temp $+ $date(dd.mm.yy) $+ .log $timestamp $+(<,$1,>) $3- 
      write ia\log\ $+ %ia.temp $+ $date(dd.mm.yy) $+ .log $timestamp $+(<,%ia.nick,>) %c
    }
    if (%ia.debug) {
      if (!$window(@Ia)) window -en @ia
      aline @ia $2 -> $3-
      aline @ia %ia.nick -> %c
    }
    ia.out $1 %c
  }
  ;ia,idk = 1 si il a trouver une réponse, sinon il est égal à 0
  if (!$hget(ia,idk. $+ %ia.temp)) { 
    hadd ia t3. $+ %ia.temp $hget(ia,t2. $+ %ia.temp)    
    hadd ia t2. $+ %ia.temp $hget(ia,t1. $+ %ia.temp)
    hadd ia t1. $+ %ia.temp $3-
    hadd ia idk. $+ %ia.temp 1
  }
  else {
    hadd ia t3. $+ %ia.temp $hget(ia,t2. $+ %ia.temp)    
    hadd ia t2. $+ %ia.temp $3-
    hadd ia t1. $+ %ia.temp %c
  }
}

;$1 = #canaux/nick vers lequelle vas le msg
;$2- = phrase que le bot dit
;C'est l'alias qui indique la sortit, dans ce le cas par default c un socket. 
alias ia.out {
  sockwrite -n ia PRIVMSG $1 : $+ $2- 
}

;Vas lié chaque mot de $hget(ia,t1. $+ %ia.temp) avec la phrase $1-
alias ia.CmotP { 
  var %P = $hget(ia,t1. $+ %ia.temp),%ia.Np,%b,%a,%c
  if ($read(ia\ia.txt,w,$1-)) %ia.Np = $readn
  else {
    write ia\ia.txt $1- 
    hinc ia Nbr 
    %ia.Np = $hget(ia,Nbr) 
  }
  %P = $replace(%P,$chr(44),$chr(32),',$chr(32),?,$chr(32) $+ ?)
  %P = $remove(%P,?)
  %b = $numtok(%P,32)
  while (%b) {
    %c = %a
    %a = $gettok(%P,%b,32)
    dec %b
    if ($hgeti(ia,eff,%a)) continue
    if ($hgetg(ia,s. $+ %a,1) == 0) %a = $hgetg(ia,s. $+ %a,2)
    %c = %a $+ ? $+ %c
    ia.LPM %a %ia.Np
    ia.LPM %c %ia.Np
  }
  hdel -w ia m.*?
  hdel -w ia m.?*  
  return 1 Les phrase sont bien lié
}

;C'est l'alias qui vas chercher la bonne phrase celon $1 et $2
;$1 est la phrase primordial et $2 au cas où 
alias ia.cher {
  hdel -w ia2 *
  if (($numtok($1,32) < 4) && ($2 != $null)) tokenize 32 $1 $1 $2
  else tokenize 32 $1
  var %list,%phrase,%a1,%c1,%c2,%a2,%b,%a,%b2,%b1 = $0,%Max = 0

  ;%Phrase = c la phrase qu'il va sortir
  ;%List = liste des n° de phrases possible 
  ;%a1 = c un MOT de la phrase
  ;%c1 = c un groupe de mot de la phrase
  ;%a2 = c une des phrases liées a %a1
  ;%b,%b1,%b2 = compteurs de boucle
  ;%Max = max de fois qu'une phrase est cité

  while (%b1) {
    %c1 = %a1     
    %a1 = $gettok($1-,%b1,32)
    if ($hgetg(ia,s. $+ %a1,1) == 0) %a1 = $hgetg(ia,s. $+ %a1,2) 
    %c1 = %a1 $+ ? $+ %c1  
    %b2 = $numtok($ia.m(%a1),32)
    while (%b2) {
      %a2 = $gettok($ia.m(%a1),%b2,32)    
      hinc ia2 %a2   
      if ($hget(ia2,%a2) > %Max) %Max = $ifmatch
      dec %b2    
    }

    %b2 = $numtok($ia.m(%c1),32)
    while (%b2) {
      %a2 = $gettok($ia.m(%c1),%b2,32)     
      hinc ia2 %a2 2
      if ($hget(ia2,%a2) > %Max) %Max = $ifmatch
      dec %b2    
    }
    dec %b1
  }
  ;On recherche les phrases les plus cités.
  %b = $hfind(ia2,%max,0,n).data
  while (%b) {
    if ($len(%list) > 900) break
    %list = %list $hfind(ia2,%max,%b,n).data  
    dec %b  
  }

  ;%phrase contient maintenant la phrase final, il faut maintenant chercher les synonymes. 
  %phrase = $read(ia\ia.txt,$gettok(%list,$rand(1,$numtok(%list,32)),32)) 
  %b = $numtok(%phrase,32)
  while (%b) {
    %a = $gettok(%phrase,%b,32)
    if ($hget(ia,s. $+ %a) != $null) {
      if ($hgetg(ia,s. $+ %a,1) == 0) %a = $hgetg(ia,s. $+ %a,2) 
      %a = $hget(ia,s. $+ %a)      
      %a = $gettok(%a,$rand(2,$numtok(%a,32)),32))
      %Phrase = $puttok(%Phrase,%a,%b,32)
    }
    dec %b
  }
  if (%Phrase == $null) { hadd ia idk. $+ %ia.temp 0 | return j'aurais du dire ... ? }
  else return %Phrase
}

;Lié Le mot $1 avec la phrase n° $2
;-Si $2 est déjà dans $1 on le met en pôle position
;-Si l'item est remplit on vire le dernièrs token et on place notre $2 en -20 position
:-tout ce passe bien on le met normal (en dernièrs position comme même)
alias ia.LPM {
  if ($hgeti(ia,m. $+ $1,$2)) {
    hdelt ia m. $+ $1 $2
    hadd ia m. $+ $1 $2 $ia.m($1)
    return 1
  }
  if ($len($ia.m($1)) > 900) {
    hadd ia m. $+ $1 $instok($deltok($ia.m($1),-1,32),$2,-20,32)
    return 1
  }
  haddt ia m. $+ $1 $2
  return 1
}

;$1 = access de la personne
;$2 = commande qu'il veut éxercé (c l a o)
;return 1 si il peut éxercer la commande, sinon 0.
;Cette alias sert uniquement si vous voulez intégré l'ia à votre bot.  
alias ia.axx2 {
  if ($2 isin $1) return 1
  else return 0
}

;Cette alias retourne l'access de la personne par raport à %ia.temp (par défault contient l'host). 
;Vous pouvez ici personalisez vos access pour intégrer l'ia à votre bot. 
alias ia.axx {
  if ($hget(ia,a. $+ $1) != $null) return $ifmatch
  else return %ia.Md
}

;retourne les lien du mot $1 (c un alias de fainiantise)
alias ia.m return $hget(ia,m. $+ $1)

;Cette alias sert à inialiser le bot. 
alias ia.init {
  .hmake -s ia 100
  if (!$hget(ia2)) .hmake -s ia2 100
  if ($exists(ia\ia.hash)) hload ia ia\ia.hash
  else {
    hadd ia eff la le un une l' des les d'
    hadd ia a. $+ %ia.temp olac 
  }
  hadd ia Nbr $lines(ia\ia.txt)
  .timeria 0 300 hsave -o ia ia\ia.hash 
  if ($hget(ia,NL) != $null) ia.ConBD
}
;-------------------------------------------------------------------
;
;Les alias indispensables et qui peuvent servir dans d'autre script
;
;-------------------------------------------------------------------

;Rajoute $3 à la listes de token de l'item $2 de la hash $1
alias haddt hadd $1 $2 $addtok($hget($1,$2),$3,32)

;Enlève $3 à la listes de token de l'item $2 de la hash $1
alias hdelt hadd $1 $2 $remtok($hget($1,$2),$3,1,32)

;Retourne $true si $3 est dans la liste de token de l'item $2 de la hash $1
alias hgeti return $istok($hget($1,$2),$3,32)

;Return le $3 de la listes des token de l'item $2 de la hash $1
alias hgetg return $gettok($hget($1,$2),$3,32)

;---------------------
;
;Les alias optionnels
;
;---------------------


;-0 para : liste des synonymes
;-1 para : liste des synonymes de 1
;-2 para : mettre $1 synonyme à $2
alias ia.syn {
  tokenize 32 $1-
  if (!$1) {
    var %list,%b = $hfind(ia,s.*,0,w) 
    while (%b) {
      %list = $addtok(%list,$right($hfind(ia,s.*,%b,w),-2),32)
      dec %b
    }     
    return 1 %list
  }
  if (!$2) {
    ;La on recherche tous les synonyme du mot et les balance. Si le mot n'existe pas on fait un return
    ;Si par contre le première lettre est "0" (cad ce n'est pas un syn de référence, on balance le syn de ref)
    if (!$hget(ia,s. $+ $1)) return 0 $1 n'a aucun synonyme 
    if (!$hgetg(ia,s. $+ $1,1)) tokenize 32 $hgetg(ia,s. $+ $1,2)
    return 1 $hgetg(ia,s. $+ $1,2-)
  }
  ;Il y a un synonyme de référence, c lui qui à tout les liens.
  ;Chaque synonyme on pour nom "s.Nom" leur item contient "N syn", N est de 0 si le synonyme n'est pas de référence.
  ;Si n = 1 alors le synonyme est dé référence, et tout ce qui est après le N se sont les synonyme qui se réfère à lui
  ;Donc une prise de tête en perspective pour gérer tout çà 
  :syn    
  var %a1 = $hget(ia,s. $+ $1),%a2 = $hget(ia,s. $+ $2),%c1 = $gettok(%a1,2-,32),%c2 = $gettok(%a2,2-,32),%r1 = $gettok(%a1,1,32),%r2 = $gettok(%a2,1,32)
  ;A chaque fois le 1 c pour $1 et le 2 pour $2 (dans les var)
  :%a = N syn (est nul si $1 n'a aucun synonyme)
  ;%c = liste des syonyme 
  ;%r = 1 si synonyme est de référence sinon 0

  ;si $1 n'existe pas
  if (!%a1) {
    ;si $1 et $2 n'ont aucun synonyme 
    if (!%a2) {
      hadd ia s. $+ $1 1 $2
      hadd ia s. $+ $2 0 $1
      ia.ccl $2 $1
      ia.RP $2 $1
    }
    ;si $1 n'existe pas et $2 lui éxiste. 
    else {
      ;si $2 est une référence
      if (%r2) {
        haddt ia s. $+ $2 $1
        hadd ia s. $+ $1 0 $2
        ia.ccl $1 $2     
        ia.RP $1 $2    
      }
      ;si $2 n'est pas une référence (mais $1 n'éxiste pas) on dit $1 synonyme de la référence de $2
      else {
        haddt ia s. $+ %c2 $1
        hadd ia s. $+ $1 0 %c2
        ia.ccl $1 %c2 
        ia.RP $1 %c2
      }
    }
  }
  ;Par contre si $1 n'est pas null 
  else {
    ;Si $1 est une référence 
    if (%r1) {
      ;Si $2 n'éxiste pas
      if (!%a2) {
        haddt ia s. $+ $1 $2
        hadd ia s. $+ $2 0 $1
        ia.ccl $2 $1
        ia.RP $2 $1
      }
      ;Si $2 éxite 
      else {
        ;Si $2 et $1 sont des référence alors $1 devient la référence de $2 est donc des référencés de $2
        if (%r2) {
          var %a,%b = $numtok(%a2,32)
          while (%b) {
            %a = $gettok(%a2,%b,32)
            haddt ia s. $+ $1 %a 
            hadd ia s. $+ %a 0 $1           
            dec %b
          }
          haddt ia s. $+ $1 $2
          hadd ia s. $+ $2 0 $1
          ia.ccl $2 $1
          ia.RP $2 $1
        }
        ;$1 est une référence et $2 a pour référence %a2. Donc $1 synonyme de %c2
        else {
          if ($1 == %c2) return 0 $1 déjà synonyme avec $2
          tokenize 32 $1 %c2
          goto syn 
        }
      }
    }
    ;Si $1 éxiste mais n'est pas une référence, donc il est référencé à %c1
    else {
      ;Cela revient à $2 synonyme de %c1
      if ($2 == %c1) return 0 $1 déjà synonyme avec $2 
      tokenize 32 %c1 $2
      goto syn  
    }      
  }
  return 1 $1 Synonyme bien enregistré   
}


;Copie les liens de $1 dans $2 puis efface $1
alias ia.ccl {
  var %a = $ia.m($1),%b = $numtok(%a,32)
  while (%b) {
    ia.LPM $2 $gettok(%a,%b,32)
    dec %b
  }
  hdel ia m. $+ $1
}

;Remplace dans toutes les phrase $1 par $2 et dans tous les groupes de mots.
alias ia.RP {
  var %b = 1,%c,%d,%b2
  while ($read(ia\ia.txt,w,* $+ $1 $+ *,%b)) {
    %d = $ifmatch    
    %c = $readn
    %b = %c
    %b2 = $findtok(%d,$1,0,32)
    while (%b2) {
      write -l $+ %c ia\ia.txt $reptok(%d,$1,$2,%b2,32)
      dec %b2
    }
    inc %b
  }
  %b = $hfind(ia,m. $+ $1 $+ ?*,0,w)
  while (%b) {
    %c = $hfind(ia,m. $+ $1 $+ ?*,%b,w)
    dec %b
    if ($hget(ia,m. $+ $2 $+ ? $+ $gettok(%c,2,164)) != $null) { ia.ccl %c $2 $+ ? $+ $gettok(%c,2,164) | continue }
    hadd ia m. $+ $2 $+ ? $+ $gettok(%c,2,164) $hget(ia,%c)
    hdel ia %c
  }
  %b = $hfind(ia,m.*? $+ $1,0,w)
  while (%b) {
    %c = $hfind(ia,m.*? $+ $1,%b,w)
    dec %b
    if ($hget(ia,m. $+ $gettok(%c,1,164) $+ ? $+ $1) != $null) { ia.ccl %c $gettok(%c,1,164) $+ ? $+ $1 | continue }
    hadd ia m. $+ $gettok(%c,1,164) $+ ? $+ $1 $hget(ia,%c)
    hdel ia %c
  }
}

;Efface la phrase $1- ou le n° de phrase $1
alias ia.eff {
  tokenize 32 $1-
  if ($1 == null) return 0 Pas assez de paramètre
  if ($1- !isnum) {
    if ($read(ia\ia.txt,w,$1-) == $null) return 0 La phrase n'existe pas
    tokenize 32 $readn
  }
  write -l $+ $1 ia\ia.txt --- ligne éffacé --- $ticks
  ;Le (^|\s) $+ $1 $+ (\s|$) et pour "$1 mot de l'item"
  %b = $hfind(ia,(^|\s) $+ $1 $+ (\s|$),0,r).data
  while (%b) {
    %c = $hfind(ia,(^|\s) $+ $1 $+ (\s|$),%b,r).data
    ;Le if sert à savoir si on loock bien un mot
    if ($left(%c,2) == m.) hdelt ia %c $1 
    dec %b
  }
  return 1 Phrase corectement éffacé. 
}

;---------------------------------------------
;
; ALIAS DE MODIFICATION DE LA BD AVANCÉE 
;
;----------------------------------------------

;Lie les mots $2- à la phrase n° $1 
;$1 = n° de phrase valide
;$2- = mot 
alias ia.addm {
  tokenize 32 $1-  
  if ($2 == $null) return 0 Pas assez de paramètre 
  if ($1 !isnum) return 0 $1 n'est pas un n° 
  if ($1 > $hget(ia,Nbr)) return 0 $1 ne corespond à aucune phrase 
  var %a,%b = $numtok($2-,32)
  while (%b) {
    %a =  $gettok($2-,%b,32)
    if (? isin %a) {
      if ($hgetg(ia,s. $+ $gettok(%a,1,164),1) == 0) %a = $hgetg(ia,s. $+ $gettok(%a,1,164),2) $+ ? $+ $gettok(%a,2,164) 
      if ($hgetg(ia,s. $+ $gettok(%a,2,164),1) == 0) %a = $gettok(%a,1,164) $+ ? $+ $hgetg(ia,s. $+ $gettok(%a,2,164),2)  
    }
    if ($hgetg(ia,s. $+ %a,1) == 0) %a = $hgetg(ia,s. $+ %a,2)   
    ia.LPM %a $1
    dec %b
  }
  return 1 Les mots $2- on été lié à la phrase n° $1 
}

alias ia.delm {
  tokenize 32 $1-
  if ($2 == $null) return 0 Pas assez de paramètre 
  if ($1 !isnum) return 0 $1 n'est pas un n° 
  if ($1 > $read(ia\ia.txt,0)) return 0 $1 ne corespond à aucune phrase 
  var %b = $numtok($2-,32)
  while (%b) {
    hdelt ia m. $+ $gettok($2-,%b,32) $1
    dec %b
  }
  return 1 Les mots $2- ne sont plus liés avec la phrase n° $1 
}

alias ia.addp {
  tokenize 32 $1-
  if ($1 isnum) {
    if ($2 == $null) return 0 Pas assez de paramètre
    if ($1 > $hget(ia,Nbr)) return 0 Erreur, la phrase n° $+ $1 n'éxiste pas
    write -l $+ $1 ia\ia.txt $2-
  }
  else {
    if ($read(ia\ia.txt,w,$1-)) return 0 La phrase est déjà enregistré n° $readn
    write ia\ia.txt $1-
    hinc ia Nbr
  } 
  return 1 Phrase bien ajouté et à pour n° $hget(ia,Nbr) 
}
alias ia.Wp {
  tokenize 32 $1-
  if (($1 isnum) && ($2 == $null)) return 1 La phrase n° $1 Correspond à $read(ia\ia.txt,$1) 
  if ($read(ia\ia.txt,w,$1-)) return 1 La phrase a pour numero: $readn
  else return 0 La phrase n'est pas dans la BD
}

alias ia.Wm {
  tokenize 32 $1-
  if ((!$1) || ($1 !isnum)) return 0 $1 n'éxiste pas ou n'est pas un nombre
  var %b1,%list,%c
  %b1 = $hfind(ia,(^|\s) $+ $1 $+ (\s|$),0,r).data  
  %list = $null    
  while (%b1) {
    %c = $hfind(ia,(^|\s) $+ $1 $+ (\s|$),%b1,r).data
    ;Le if sert à savoir si on loock bien un mot      
    if ($left(%c,2) == m.)  %list = %list $right(%c,-2)
    dec %b1
  }
  return 1  2 $+ %list lié à4 $1 
}

alias ia.remplace {
  tokenize 32 $1-
  if ($2 == $null) return 0 Pas assez de paramètre
  if ($1 === $2) return 0  $1 et $2 c la même chose chez moi 
  ia.ccl $1 $2
  ia.RP $1 $2
  return 1 Opération réussi: $1 a été remplacé par $2 
}
;-------------------------------------------------------
;
;Alias s'occupant de SAUV - LOAD - CONVERTIR la BD
;
;-------------------------------------------------------

alias ia.saveBD {
  if (!$1) { echo -a precisez le nom de votre sauvgarde: /ia.saveBD pokemon.txt | return }
  if (!$exist(ia\save\)) mkdir ia\save  
  var %a,%b,%b1,%i,%c,%c1
  %i = $ticks
  %c = $gettok($ia.syn,2-,32)
  %b = $numtok(%c,32)
  while (%b) {
    %a = $gettok(%c,%b,32)
    write ia\save\ $+ $1 s: %a $hgetg(ia,s. $+ %a,2-)
    dec %b
  }
  %b = 1
  var %list
  while ($read(ia\ia.txt,%b)) {
    write ia\save\ $+ $1 m %b $ifmatch
    %b1 = $hfind(ia,(^|\s) $+ %b $+ (\s|$),0,r).data  
    %list = $null    
    while (%b1) {
      %c = $hfind(ia,(^|\s) $+ %b $+ (\s|$),%b1,r).data
      ;Le if sert à savoir si on loock bien un mot
      if ($len(%list) > 900) {
        write ia\save\ $+ $1 mm %b %list
        %list = $null
      }      
      if ($left(%c,2) == m.)  %list = %list $right(%c,-2)
      dec %b1
    }
    write ia\save\ $+ $1 mm %b %list
    inc %b
  }
  if ($isid) return 1 La BD a bien été sauvé en $calc($ticks - %i) ms
  else echo 2 -a La BD a bien été sauvé en $calc($ticks - %i) ms
}

alias ia.LoadBD {
  var %b,%b1,%c,%N,%der,%ou = $shortfn($sfile($mircdir,Choisit la BD à loader,LOAD))
  %b = 1
  if (!$hget(ia)) ia.init
  if ($1 == -r) {
    hdel -w ia m.*
    hdel -w ia s.*
    remove ia\ia.txt
  }  
  while ($read(%ou,%b)) { 
    tokenize 32 $ifmatch    
    if ($1 == s:) ia.syn $2 $3
    elseif ($1 == m) {
      if ($read(ia\ia.txt,w,$3-)) %N = $readn
      else {
        write ia\ia.txt $3- 
        hinc ia Nbr 
        %N = $hget(ia,Nbr) 
      }
      %der = $2
    }
    elseif ($1 == mm) {
      if (%der != $2) return 0 problème lors du chargement de la BD 
      ia.addm %N $3-
    }
    else return 0 Ce fichier n'est pas un BD d'une ia 
    inc %b
  }
  if ($isid) return 1 chargement réussi
  else echo 2 -a Chargement réussi
}
alias ia.ConBD {
  hadd ia Nbr $hget(ia,Nl)
  hdel ia Nl
  var %b,%c
  %b = $hfind(ia,1.*,0,w)
  while (%b) {
    %c = $hfind(ia,1.*,%b,w)
    hadd ia m. $+ $right(%c,-2) $hget(ia,%c)
    hdel ia %c
    dec %b
  }
  hdel -w ia 0.*
  hdel -w ia 1.*
  hdel -w ia 2.*
  hdel -w ia 3.*
  hdel -w ia t.*
  %b = $hfind(ia,syn.*,0,w) 
  while (%b) {
    %c = $hfind(ia,syn.*,%b,w)
    hadd ia s. $+ $right(%c,-4) $hget(ia,%c)
    hdel ia %c
    dec %b
  }
  hdel -w ia syn.*
  hadd ia eff la le un une l' des les d'
  return 1 Convertion de la base réussi
}

;--------------------------------------------------------
;
;L'alias s'occupant de la gestion des access
;
;--------------------------------------------------------

alias ia.BotAxx {
  var %axx = $ia.axx(%ia.temp)
  var %nick = $1
  tokenize 32 $2 
  if ($1 == !addh) { 
    if ((a !isin %axx) || (!$3)) return 
    if ((o isin $hget(ia,a. $+ $2)) && (o !isin %axx)) return
    hadd ia a. $+ $2 $3
    ia.out %nick $2 avec les modes $3 a bien été rajouté (ou modifié)
  }
  elseif ($1 == !delh) {
    if ((a !isin %axx) || (!$2)) return
    if (!$hget(ia,a. $+ $2)) { ia.out %nick $2 n'existe pas | return }
    if ((o isin $hget(ia,a. $+ $2)) && (o !isin %axx)) return
    hdel ia a. $+ $2 
    ia.out %nick l'host de $2 a été bien éffacé
  }
  elseif ($1 == !listh) {
    var %list,%c,%b = $hfind(ia,a.*,0,w)   
    while (%b) {
      %c = $hfind(ia,a.*,%b,w)
      if ($len(%list) > 400) { ia.out %nick Liste des axxh: %list | %list = $null }         
      %list = %list ( $+ $right(%c,-2) $+ : $+ $hget(ia,%c) $+ )  
      dec %b
    }
    ia.out %nick Liste des axxh: %list
  }
  elseif ($1 == !addaxx) {
    if ((a !isin %axx) || (!$4)) return 
    if ((o isin $gettok($hget(ia,axx. $+ $2),2,32)) && (o !isin %axx)) return
    hadd ia axx. $+ $2 $3 $4
    ia.out %nick Un axx à été rajouté (username $2 et mode $4 $+ )
  }
  elseif ($1 == !delaxx) {
    if ((a !isin %axx) && (!$2)) return 
    if (o isin $gettok($hget(ia,axx. $+ $2),2,32) && (o !isin %axx)) return 
    hdel ia axx. $+ $2      
  }
  elseif ($1 == !listaxx) {
    var %list,%c,%b = $hfind(ia,axx.*,0,w)
    while (%b) {
      %c = $hfind(ia,axx.*,%b,w)
      if ($len(%list) > 400) { ia.out %nick Liste des axx: %list | %list = $null }         
      %list = %list ( $+ $right(%c,-4) $+ : $+ $gettok($hget(ia,%c),2,32) $+ )
      dec %b
    }
    ia.out %nick Liste des axx: %list
  }
  elseif ($1 == !auth) {
    var %c = $hget(ia,axx. $+ $2)
    if ((!$3) || (!%c)) return
    if ($3 != $gettok(%c,1,32)) return
    hadd ia a. $+ %ia.temp $gettok(%c,2,32)
  }
  return
}

Conclusion

Je pense que c'est la dernière version de mon bot ...
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de T0x1K le 14/09/2003 01:03:04

essayé de ne pas écrire comme un porc. &lt;&lt; Ca serait bien que tu n'écrive pas comme un porc toi déjà lol. aussinon c'est bien!
bye

signaler à un administrateur
Commentaire de tiot le 18/10/2003 11:30:19

ce n'est pas bien de ce moquer, sinon je n'ai pas bcp de commentaire ...

signaler à un administrateur
Commentaire de Kerrigan le 30/10/2003 21:12:49

c'est magnifique !! vraiment beau boulot !!!!

signaler à un administrateur
Commentaire de samueldr le 31/10/2003 02:40:54

Ca a l'air bien...
mais commentaire sur les scripts de bot:
Pourquoi il y a souvent des dialogs???
cé inutile!
mon bot est hébergé sur un shell, je ne peux pas utiliser les idlogs...

donc, SvP, crée une version sans dialog mais config ETC en DCC merci!

signaler à un administrateur
Commentaire de tiot le 06/11/2003 15:24:00

Pour repondre à samueldr je dirais que je n'ai pas comprit ton problème.
En effet, je ne connais aucun shell qui accepte les scripts mIRC ... c pas du C ni du TCL ni aucune chose divers et varié suporter par un s hell. C du mIRC scripting il doit donc être utiliser sous mIRC.

Pour les dialogs c pas un problème, si tu es chaud tu as juste à mettre des valeurs dans des variables ... (normalement c détaillé dans l'help) ... toute les variables qui sont utilisées pour le bot sont de ce type %ia.* (avec * qui est n'importe quoi)

signaler à un administrateur
Commentaire de meenux le 19/11/2003 18:55:46

tiot cochonne va, c'est bien tu l'a fait ;)

signaler à un administrateur
Commentaire de Remi3d le 14/12/2003 13:37:01

Euh je comprend pas ..
j'ai demaré le bot sur mirc 6.03.je l'ai mis sur le salon
je me suis identifié,et ensuite faut commencer a parler?c ca?
il arrete pas de dire j'aurais du dire..?quand est ce quil commence a repondre ? A chaque fois je remet la meme conversation pour qu'il me reponde mais il veut pas . dans l'aide tu mets au bout d'un moment cad ?
faut le repeter jusqu'a ce qu'il comprenne?
Merci de me repondre au plus vite...

signaler à un administrateur
Commentaire de Remi3d le 14/12/2003 13:37:56

ah oui autre chose il faut en mettre une partie dans les alias et une dans les remote ou tt dans les alias??

signaler à un administrateur
Commentaire de tiot le 14/12/2003 16:12:57

Logiquement dès que tu utilises un mot qu'il a déjà entendu il va rebondir dessus ... si il ne te repond jamais c que tu as mal configurer les "modes par default" (nlc) je crois.

Il faut tout mettre dans les remotes

signaler à un administrateur
Commentaire de GjMan9 le 12/03/2004 17:44:22

Salut tiot !
Franchement ton script est terrible !
Le pb c'est la base de données, c chiant à faire...alors g mis la seule bd proposée ...
mais bon c un peu vulgaire et branché cul à mon gout ....
Je suis donc en train de créer une base de données plus "conventionnelle" et je te l'enverrai des que le bot sera capable de tenir une conversation logique.
Si tu as d'autres bd, merci de m'avertir, je serai vraiment content :)))))))))
@+
...et encore bravo !

Gj_M@n9

PS: il me semble qu'il y a quelques problèmes avec l'authentification host. J'ai mis i.a en mode n et j'e n'arrive pas à donner le mode lc  à plus d'une personne est ce normal ?

signaler à un administrateur
Commentaire de GjMan9 le 14/03/2004 00:39:53

...en fait c'est bon fallait que je me donne le mode olac des le premier chargement du script des la premiere connection et avec
le mode n par default pour tout le monde
Par contre la listh n'est pas modifiable par la suite d'ou le premier commentaire que j'ai posté.
voila

:o)

PS: j'ai fait deux bases de données ( "Henry" un vieux pervers et "Brandon" un bogoss LOL)

signaler à un administrateur
Commentaire de GjMan9 le 14/03/2004 00:42:02

...en fait c'est bon fallait que je me donne le mode olac des le premier chargement du script des la premiere connection et avec
le mode n par default pour tout le monde
Par contre la listh n'est pas modifiable par la suite d'ou le premier commentaire que j'ai posté.
voila

:o)

PS: j'ai fait deux bases de données ( "Henry" un vieux pervers et "Brandon" un bogoss LOL)

signaler à un administrateur
Commentaire de Showtime_2 le 03/05/2004 20:34:29

Franchement genial

Mais pour ta base de données c pareil que GjMan9

enfin voila koi trop cool

signaler à un administrateur
Commentaire de lefl0u le 10/06/2004 18:09:39

On le telecharge Ou ??

signaler à un administrateur
Commentaire de samsungman le 24/06/2004 17:16:43

Je comprend pas quand je lui parle y dit "Jaurai dut dire..." et quand je lui repond Y dit encrore "Jaurai dut dire ..." Jy comprend rien!

signaler à un administrateur
Commentaire de samsungman le 24/06/2004 17:32:52

et il repond souvent a coté de la plaque

signaler à un administrateur
Commentaire de tiot le 04/07/2004 23:13:57

Il est loin d'être parfait.
Suffit de dompter la bête !

Pour la base de donnée j'en attend tjrs :)

signaler à un administrateur
Commentaire de GjMan9 le 05/07/2004 20:32:53

bon bah ma Jessica ia bot commence a vraiment pas mal se debrouiller.
Vous pouvez lui parler sur #ia sur undernet.
Si elle vous plait je peux vous envoyer la BD.
J'ai d'autre BD (Brandon et Lolita).
De toute façon je v mettre les BD dispo sur mon site bientot.
http://gary.dub.free.fr/gjman9.htm
:)

PS: mettez vos bots ia sur #ia sur undernet avec les miens ca fera un chan bi1 rigolo.

signaler à un administrateur
Commentaire de GjMan9 le 13/07/2004 11:18:25

yopla !

Ayé ma base de données "Jessica" est dispo sur mon site http://gary.dub.free.fr/gjman9.htm
J'y ai mis aussi les logs de quelques "victimes"  piégées sur Undernet.
J'y ai mis aussi les mails qu'elle a recu looooooool (et oui Jessica donne son mail si on lui demande ! ).
Suite à quelques discussions avec tiot j'ai modifié légèrement le script à savoir:
- un timer aléatoire (entre 3 et 7 secondes) pour eviter que le bot ne reponde instantanément (ca faisait louche)
- une fenetre plus grande ia > config > join pour pouvoir joindre un nombre plus important de chan
- j'ai remplacé le "J'aurais du dire ... " par " t'as du mal avec ton clavier" car m1tenant que Jessica sait bien parlé, si elle n'a pas de reponse c'est que généralement le type ecrit en chinois :/
- j'ai remplacé le nom du bot "ia by tiot" par "je suis chaude" pour eviter que l'on sache que c 1 bot. (pareil pour le msg de quit).
- dès qu'on lui dit "do u ..." , "how r u " etc ... elle repond "je ne parle pas anglais" ca evite les conversations en franglais lol

A part ca je fais evoluer la BD assez rapidement, mais bon vu ke la sauvegarde marche pas terrible quand la BD devient importante, c'est tiot ki me la reconstitue ... donc je peux pas mettre la BD à jour sur le site quand je veux :/  ... mais bon ca viendra :)

Si vous aussi vous avez des BD correctes  ou avez des suggestions pour l'amelioration du script ca m'interesse !

@ bientot

(et encore felicitation tiot pour ce script genial, kler, commenté, sans bug ... bref parfait comme tu le dis toi meme ahahah)

signaler à un administrateur
Commentaire de samueldr le 23/07/2004 00:31:16

désolé pr le retard de réponse... je n'étais pas informé sur mon mail des réponses...

avant, j'avais un shell qui roulait windows et il allait bien :P c'est pour ca que javais un mirc sur un shell :P

j'Aurais du répondre avant

signaler à un administrateur
Commentaire de remington le 22/08/2004 04:40:44

j'ai remarké k'en pv les gens finissait par griller ke c t un bot parsque les reponses sont trop rapides
dc

"est il possible d'augmenter les temps de reponse du bot si oui comment ?"

et pour les gens ki grillent ke c un bot en general apres il ecrivent n'importe koi genre "lkjlkfsdjl" dc deuxieme question

"est il possible de mettre en ignore les gens ki flood et si oui comment ?"

merci de votre reponse

signaler à un administrateur
Commentaire de GjMan9 le 01/09/2004 05:48:30

réponse pour remington:
oui on peut le faire, j'ai demandé à tiot :)
Faut remplacer l'alias ia.out comme suit:

alias ia.out {
  .timer 1 $rand(5,7) sockwrite -n ia PRIVMSG $1 : $+ $2-
}

Comme ça le bot répond après un temps mort aléatoire compris entre 5 et 7 secondes.

Tu peux biensur changer le 5 et le 7 ...

PS: amélioration indispensable du bot !!!

signaler à un administrateur
Commentaire de J4Gu4R le 01/09/2004 16:37:14

heu salut tout l'monde
j'suis un pti peu dépasser moi
j'pense faire tout ski est dit dans le tuto mais rien ne se passe mon mirc est pourtant bien un 6.03


il se trouve que même en lisant le tuto du bot je n'arrive pas à le faire parler

problème 1:
une fois que j'ai configurer le bot ( serveur, port ect...), si j'ai bien compris faut être le premier à lui parler et taper "!addaxx (login) (pass) olac"
question 1:
est-ce que le login c'est obligatoirement mon nick ou ça peut être un mot aléatoire?

problème2:
je lui parle comme dans le tuto

moi: salut
ia: J'aurais du dire... ?
moi: comment vas tu ?
ia: J'aurais du dire... ?
moi: bien et toi ?
ia: J'aurais du dire... ?
moi: moi ça vas pas mal

et là j'voudrais m'arrêter, théoriquement ça fait court comme conversation mais j'vais pas faire un coup d'essai de 15 pages, et normalement il devrait déja se débrouiller à me répondre quand je lui dit "salut"
question2:
à partir de là je doit le fermer? lui dire quelque chose pour qu'il sauvegarde? je ne sais pas çen tous les cas ça ne fonctionne pas

problème3:
je recommence et je sauvegarde la BD comme dans le tuto "/ia.saveBD save1.txt
et là ya rien du tout dedans ( ya bien un dossier save qui se crée mais c tout)

problème 4:
dans mon répertoire Mirc dossier "ia" dossier save" j'ai non seulement pas de fichier txt qui s'est créer comme précédemment dit mais je trouve dans mon dossier ia un fichier "ia.txt avec quelque chose d'écrit de mon tout premier chargement mais c'est la seule chose qui a été sauvegarder jusqu'ici

bon... les question