BOT GARDIEN DE CHAN AVEC MODULES RÉGLABLES (ANTI-TAKEOVER, FLOOD, PUB, RETOUR DE
juki_webmaster
Messages postés947Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 avril 2008
-
21 avril 2004 à 21:05
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009
-
18 juil. 2005 à 22:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 18 juil. 2005 à 22:47
j'ai refait un bot de ce genre, mais avec 14 modules, 1 an et quelques mois après celui présenté ici.
Je peux te dire qu'on apprend pas mal en 1 an et quelques mois :p
Tu peux héberger toi même le bot (donc je "donne" la source)
Le "problème", c'est qu'il faut mon addon (téléchargeable sur http://scripts.arkanis.info, partie de droite à lire), pour ensuite télécharger le bot du nom de BotWar (alias /botwar, ça DL tous les fichiers requis), pour enfin télécharger l'addon de protection pour BotWar :D
BotWar est un bot Newseur, VIP, et Gardien, ... il fait pas mal de choses donc
Je verrai si un jour je faciliterai le téléchargement ... :)
Il fonctionne sur Quakenet uniquement (il gère L et Q)
Si tu veux plus d'informations ou de l'aide, réponds à ce message ^^
cs_DevilsBlack
Messages postés4Date d'inscriptionlundi 18 juillet 2005StatutMembreDernière intervention19 juillet 2005 18 juil. 2005 à 20:56
Bah! sérieusement... Taurais du mettre le bot pour télécharger! Cé vrment plate :o(
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 1 mai 2005 à 12:31
je ne met pas de checkbox parce que les données sont sur le bot, non sur ton script.
Pour que les check box soient correctes, il faut vérifier sur le bot, et donc ça complique à ce niveau.
Et puis il y a un bouton "ShowMod" qui te dit l'état de tous les modules, donc ça revient au même
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 1 mai 2005 à 12:30
ça évite qu'il y ait trop de flood, oui pourquoi pas
ce bot est assez vieux, il faudrait que je le refasse entièrement :) sauf que j'ai pas beaucoup de temps :/
je vais changer ça de suite, merci
cs_neo66
Messages postés125Date d'inscriptionmercredi 15 octobre 2003StatutMembreDernière intervention20 mai 2006 30 avril 2005 à 21:05
z_Murf
Messages postés5Date d'inscriptiondimanche 13 février 2005StatutMembreDernière intervention23 avril 2006 16 févr. 2005 à 17:31
kestion : pk tu met des on / off et pas des checkbox ?
Kerrigan
Messages postés708Date d'inscriptionlundi 15 juillet 2002StatutMembreDernière intervention17 mars 2005 25 avril 2004 à 12:39
Se faire rippé c'est un risque a prendre mais ça ne doit surtout pas t'empecher de poster ici. Tant pis pour les ripper eux ne valent rien moi aussi je sais faire un c/c et soit sur que personne ne deviendras populaire en utilisant ta source meme modifier.
Tout le monde a deja vu que tu en parles ici et si qqun essai de te copier ça se vera et comme d'hab il sera puni par un magnifique 1/10 assortit de la vindicte de tous les scripteurs du site !!!!!
Si tu as besoin d'autre conseil pour avancer dans ton bot tu peux toujours me faire signe.
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 25 avril 2004 à 11:26
alias operateur.trouver { return $readini($+(%temp,*,1002),.ini,Config,Bot) }
:p
Merci beaucoup pour toutes ces corrections (qui viennent du fait que je ne lise aucun livre sur les méthodes, je ne fais que de regarder "comment font les autres", et j'essaye d'améliorer.
Pour la source entière du bot, je ne peux toujours pas la donner, car j'ai également toujours peur que l'on modifie la source (dont l'auteur), et que ce gars deviennent hyper populaire à grâce à ce remote (on sait jamais :p). Et de plus, je ne pense pas être le seul à avoir fait un bot dans ce type, et si je donne toute la source au public, ca risque de les géner (vous remarquerez que j'ai toujours de bonnes excuses :p). Moi-même, quand je modifie une source d'un autre, je mets toujours de qui je l'ai pris (ou de où), et me mets : modify by ArKanis (c'est le cas de mon 2eme remote sur ce site : journal + météo)
Je ne pense pas que tu sois comme ceux que je viens de décrire, donc si tu y tiens vraiment, je pourrai te passer tout le bot (pourvu qu'il ne devienne pas public).
M'enfin donc, merci beaucoup pour tout tes conseils, je m'en vais l'optimiser de suite :)
Kerrigan
Messages postés708Date d'inscriptionlundi 15 juillet 2002StatutMembreDernière intervention17 mars 2005 25 avril 2004 à 03:02
c'est pas mal mais ça merite une petite cure d'optimisation.
if ($me !ison $2) { set %temp $2 | retrouver.chan $2 }
transforme ça en alias pour factoriser et ne pas répéter de ligne, ça a plus de style. (et ya moins de caractere donc c plus rapide (je crois ) )
cette alais la merite un ptit changement tu me diras si c possible
alias flag.control.h {
set %h %temp.flag
if (a isin %h) { set %a 1 }
;je copie pas le reste
}
pourquoi pas :
alias flag.control.h {
if (a isin %temp.flag) { set %a 1 }
;idem pour le reste
}
le "== $null" ne sert a rien
ON *:TEXT:*:?:{
set %commande $1-
if (!$readini(Auth-Keep.ini,$nick)) { .timerwhois -h 1 50 whois $nick }
}
qui devient :
writeini -n $+($replace(%temp.chan,*,1002),.ini) Config Bot Q
petite modif pour diminuer le nombre de char et optimiser le code :
alias flag.nick {
if (%temp.chan ) && (%temp.nick ) {
return $readini($+($replace(%temp.chan,*,1002),.ini),Flag,%temp.nick)
}
set %nick $1
set %chan $4
set %auth $5
set %auth $replace(%auth,$chr(35), )
set %flag $6
a la suite c un usage abusif des variables. Allege le code avec des tokkens c'est plus stylé et je trouve que c'est mieux meme si ça tue le cerveau parfois. ( en plus tu les utilises (les tokkens) dans ton code tu n'as aucune excuse lol )
une derniere chose tu nous montre que tu sais utiliser les fichier ini mais tu satures ton fichier de variable ... utilise un autre fichier ini pour stocker tes variables ... MAIS, tu pourrais me dire que ça serait lent ?! hey bien passe aux hastables c'est presque pareil que les fichier ini.
je ne suis pas convaincu de la nécéssité de tes "==" dans tes conditions ( if ) enlevé les caratere en "trop" c'est rendre un code plus rapide il parait , tu devrais gagner un quart de sezieme de milième de seconde mais c'est deja ça ;)
$operateur.trouver ... soit je sais pas lire ce qui n'est pas improbable soit il n'est nul part dans ton code :(
donc pour conclure , les choses a retenir :
if ( %truc = $null ) { } devient if (!%truc ) { }
if ( %truc != $null ) { } devient if (%truc ) { }
les crocher d'évaluations ne sont en générale utile que dans des syntaxe du type :
%truc- [ $+ [ %itr ] ] (j'apelle ça une indirection comment t'apel ça toi ?)
pour les $replace ... ils ne servent a rien, pense a $+(,) ça fait gagner de la place
Et honnetement je n'aurais pas passer du temps a "corriger" ta source si ça ne me plaisait pas a la base. C'est du bon travail. Mais je veux voir le bot entier moi !!!!!!!!!! lol comme ça on pourra avancer dans ton code en lui donnant une sacrée cure d'optimisation !! il sera plus rapide plus fonctionel et j'en passe ...
T sur la bonne voie ne t'arretes pas !
RCA ArKanis
Messages postés1287Date d'inscriptionmercredi 21 avril 2004StatutMembreDernière intervention21 février 2009 23 avril 2004 à 11:12
Ce que je ne veux pas, c'est poster tout le bot, mais rien ne m'empeche de coller des choses que vous recherchez dedans :)
Mon système pour ne whois qu'une fois :
ON *:TEXT:*:?:{
set %commande $1-
if ($readini(Auth-Keep.ini,$nick) == $null) { .timerwhois -h 1 50 whois $nick }
}
raw 330:*:{
set %auth.nick $3
set -u0 %t $2
writeini -n Auth-Keep.ini Auth %t %auth.nick
; $2 est le nick, et $3 l'auth
; Je ne sais pas si cela marche autre part que sur Quakenet
writeini -n SVG-Auth-Keep.ini Auth %t %auth.nick
commande.suite %commande
}
alias commande.suite {
; Ici vous mettez ce que vous voulez en faire de l'auth
}
;Autre remote : mettre des flags (+ ou - amnovg)
;(toujours sur Quakenet, l'équivalent des flags de L et Q)
;Format de ce qui arrive en chanlev :
; $1 = nick de la personne qui met le flag
; $2 = Message (sans importance)
; $3 = chanlev (sans importance)
; $4 = Chan où le flag vas être mis
; $5 = Auth auquel rajouter le flag
; $6 = Flag
alias chanlev {
set %nick $1
set %chan $4
set %auth $5
set %auth $replace(%auth,$chr(35), )
set %flag $6
unset %a | unset %m | unset %n | unset %o | unset %v | unset %g | unset %b
set %temp.chan %chan
set %temp.nick %auth
set %temp.flag $flag.nick
if (($findtok(%flag,-,0,32) > 1) || ($findtok(%flag,+,0,32) > 1)) { flood %nick | .notice %nick 12,1[ 0Too much signs (-/+) 12] | return }
; flood $nick : c'est un anti-flood du bot => trop de commandes envoyé par nick, et il est ignore
if (($left(%flag,1) != +) && ($left(%flag,1) != -)) { flood %nick | .notice %nick 12,1[ 0Invalid flag specified. Valid flags are: + or - amnovgb 12] | unset %whois | return }
flag.control.h
unset %s
if ($left(%flag,1) == +) { set %s + | tokenize 43 %flag | if (- isin $1-) { tokenize 45 $1- } }
if ($left(%flag,1) == -) { set %s - | tokenize 45 %flag | if (+ isin $1-) { tokenize 43 $1- } }
if (%s == $null) { return }
; Il compare dans les lignes qui suivent le nouveau à l'ancien flag, pour garder des flags qu'il ne faut pas enlever
set %h $1
flag.control
if (%s == +) { set %s - | goto hehe }
if (%s == -) { set %s + | goto hehe }
:hehe
set %h $2
if (%h == $null) { unset %temp2 | goto fin }
flag.control
:fin
set %temp $null
if (%a == 1) { set %temp %temp $+ a }
if (%m == 1) { set %temp %temp $+ m }
if (%n == 1) { set %temp %temp $+ n }
if (%o == 1) { set %temp %temp $+ o }
if (%v == 1) { set %temp %temp $+ v }
if (%g == 1) { set %temp %temp $+ g }
if (%b == 1) { set %temp %temp $+ b }
flood %nick
unset %whois
unset %whois2
if (%temp != $null) {
; Il écrit ici le flag dans un fichier.ini : $chan.ini
writeini -n [ [ $replace(%chan,*,1002) ] $+ ] .ini Flag $replace(%auth,$chr(35), ) %temp
}
if (%temp == $null) {
remini [ [ $replace(%chan,*,1002) ] $+ ] .ini Flag $replace(%auth,$chr(35), )
}
.notice %nick 12,1[ 0Done. 12]
}
alias flag.control {
if (%s == +) {
if (a isin %h) { set %a 1 }
if (m isin %h) { set %m 1 }
if (n isin %h) { set %n 1 }
if (o isin %h) { set %o 1 }
if (v isin %h) { set %v 1 }
if (g isin %h) { set %g 1 }
if (b isin %h) { set %b 1 }
}
if (%s == -) {
if (a isin %h) { set %a 0 }
if (m isin %h) { set %m 0 }
if (n isin %h) { set %n 0 }
if (o isin %h) { set %o 0 }
if (v isin %h) { set %v 0 }
if (g isin %h) { set %g 0 }
if (b isin %h) { set %b 0 }
}
}
alias flag.control.h {
set %h %temp.flag
if (a isin %h) { set %a 1 }
if (m isin %h) { set %m 1 }
if (n isin %h) { set %n 1 }
if (o isin %h) { set %o 1 }
if (v isin %h) { set %v 1 }
if (g isin %h) { set %g 1 }
if (b isin %h) { set %b 1 }
}
alias flag.nick {
if ((%temp.chan $null) || (%temp.nick $null)) { return }
return $readini([ [ $replace(%temp.chan,*,1002) ] $+ ] .ini , Flag , %temp.nick)
}
; Tout ceci est assez mal rédigé, mais ca marche, alors j'ai pas cherché à modifier
;L'anti-kick est tout simplement un kick/ban du gars qui a kické, excepté si il est owner du bot (impossible d'empecher un kick, donc "anti" a seulement été choisi pour mieux comprendre à quoi ça sert).
;Anti-Takeover (encore un fois ne peut être totalement sûr à 100% : si le TOer est owner du L ou Q). Il consiste a bannir si il y a trop de kicks, et a revenir si il est ban.
ON *:KICK:#:{
if ($me !isop $chan) { return }
if ($readini([ [ $replace($chan,*,1002) ] $+ ] .ini,Kickeur,$address(nick,3)) == $null) { set %kickeur 0 }
else { set %kickeur $readini([ [ $replace($chan,*,1002) ] $+ ] .ini,Kickeur,$address($nick,3)) }
inc %kickeur
writeini -n [ [ $replace($chan,*,1002) ] $+ ] .ini Kickeur $address($nick,3) %kickeur
.timerkick. $+ $1 1 30 remini [ [ $replace($chan,*,1002) ] $+ ] .ini Kickeur $address($nick,3)
if (%kickeur >= 3) { b $chan $nick 12,1[ 0No Mass Kick on this channel ! 12] }
}
alias b {
if ($2 !ison $chan) { return }
mode $1 -o+b $2 $address($2,3) | kick $1 $2 $3-
}
;Et pour revenir :
raw 471:*:{ if ($me !ison $2) { set %temp $2 | retrouver.chan $2 } }
raw 473:*:{ if ($me !ison $2) { set %temp $2 | retrouver.chan $2 } }
raw 474:*:{ if ($me !ison $2) { set %temp $2 | retrouver.chan $2 } }
raw 475:*:{ if ($me !ison $2) { set %temp $2 | retrouver.chan $2 } }
raw 477:*:{ if ($me !ison $2) { set %temp $2 | retrouver.chan $2 } }
ON *:JOIN:#:{
if ($nick != $me) { return }
if (Q ison $chan) { writeini -n [ [ $replace(%temp.chan,*,1002) ] $+ ] .ini Config Bot Q }
if (L ison $chan) { writeini -n [ [ $replace(%temp.chan,*,1002) ] $+ ] .ini Config Bot L }
}
; J'admet que c'est pas très clair tout ceci, mais au moins j'ai donné ce que tu m'as demandé. J'ai sûrement oublié quelques petites condtions à supprimer, donc je ne pense pas qu'un simple copier/coller suffise pour que tout ceci marche :)
++ hf
Kerrigan
Messages postés708Date d'inscriptionlundi 15 juillet 2002StatutMembreDernière intervention17 mars 2005 23 avril 2004 à 00:28
Mais pourquoi tu postes pas le bot ? cet alias tout le monde peut le faire alors que visiblement tu sais faire mieux que ça. c'est a n'y rien comprendre.
En plus je suis très intéressé par ton antikick et ton anti takeover, je suis très dubitatif a leur sujet pour ne rien te cacher.
Tout ce qu'on demande ici c'est voir de belle chose. Plein de newbie postent des source minables et toi ben :
"tant d'heures de travail pour le donner à des personnes que je ne connais pas, désolé, mais je n'aime pas :)"
faut pas venir ici si tu le prends comme ça :D
bonne continuation.
juki_webmaster
Messages postés947Date d'inscriptionmercredi 19 novembre 2003StatutMembreDernière intervention 5 avril 20083 21 avril 2004 à 21:05
Agréable cette communauté !
Dommage que je ne vais jamais sur quakenet.
Tu garde la source du robot c'est ton choix,mais faudrais qu'ont puise bien le personnaliser.
Sinon sa ma l'aire trés bien.
18 juil. 2005 à 22:47
Je peux te dire qu'on apprend pas mal en 1 an et quelques mois :p
Tu peux héberger toi même le bot (donc je "donne" la source)
Le "problème", c'est qu'il faut mon addon (téléchargeable sur http://scripts.arkanis.info, partie de droite à lire), pour ensuite télécharger le bot du nom de BotWar (alias /botwar, ça DL tous les fichiers requis), pour enfin télécharger l'addon de protection pour BotWar :D
BotWar est un bot Newseur, VIP, et Gardien, ... il fait pas mal de choses donc
Je verrai si un jour je faciliterai le téléchargement ... :)
Il fonctionne sur Quakenet uniquement (il gère L et Q)
Si tu veux plus d'informations ou de l'aide, réponds à ce message ^^
18 juil. 2005 à 20:56
1 mai 2005 à 12:31
Pour que les check box soient correctes, il faut vérifier sur le bot, et donc ça complique à ce niveau.
Et puis il y a un bouton "ShowMod" qui te dit l'état de tous les modules, donc ça revient au même
1 mai 2005 à 12:30
ce bot est assez vieux, il faudrait que je le refasse entièrement :) sauf que j'ai pas beaucoup de temps :/
je vais changer ça de suite, merci
30 avril 2005 à 21:05
if ($operateur.trouver == Q) { .timerdeopall. $+ $1 1 2 msg Q deopall $1 | .timerchanlev 1 1 msg Q chanlev $1 %mon.kickeur -amo | .timerclear. $+ $1 1 5 msg Q clearchan $1 | timerunban. $+ $1 1 7 msg Q unbanall $1 | timerrejoin. $+ $1 1 10 msg Q invite $1 }
perso j'utilise ca:
if (%bot == Q) {
msg Q chanlev %chan %nick -amovt+b
.timer 1 1 msg Q recover %chan
.timer 1 1 msg Q ban %chan %host
.timer 1 2 $iif($me !ison %chan, msg Q invite %chan)
.timer 1 4 $iif($me !ison %chan, join %chan)
.timer 1 5 $iif($me !isop %chan, msg Q op %chan)
.timer 1 6 $iif(%nick ison %chan, recover.reply %nick %chan %host %raison, mode %chan +b %host)
}
16 févr. 2005 à 17:31
25 avril 2004 à 12:39
Tout le monde a deja vu que tu en parles ici et si qqun essai de te copier ça se vera et comme d'hab il sera puni par un magnifique 1/10 assortit de la vindicte de tous les scripteurs du site !!!!!
Si tu as besoin d'autre conseil pour avancer dans ton bot tu peux toujours me faire signe.
25 avril 2004 à 11:26
:p
Merci beaucoup pour toutes ces corrections (qui viennent du fait que je ne lise aucun livre sur les méthodes, je ne fais que de regarder "comment font les autres", et j'essaye d'améliorer.
Pour la source entière du bot, je ne peux toujours pas la donner, car j'ai également toujours peur que l'on modifie la source (dont l'auteur), et que ce gars deviennent hyper populaire à grâce à ce remote (on sait jamais :p). Et de plus, je ne pense pas être le seul à avoir fait un bot dans ce type, et si je donne toute la source au public, ca risque de les géner (vous remarquerez que j'ai toujours de bonnes excuses :p). Moi-même, quand je modifie une source d'un autre, je mets toujours de qui je l'ai pris (ou de où), et me mets : modify by ArKanis (c'est le cas de mon 2eme remote sur ce site : journal + météo)
Je ne pense pas que tu sois comme ceux que je viens de décrire, donc si tu y tiens vraiment, je pourrai te passer tout le bot (pourvu qu'il ne devienne pas public).
M'enfin donc, merci beaucoup pour tout tes conseils, je m'en vais l'optimiser de suite :)
25 avril 2004 à 03:02
if ($me !ison $2) { set %temp $2 | retrouver.chan $2 }
transforme ça en alias pour factoriser et ne pas répéter de ligne, ça a plus de style. (et ya moins de caractere donc c plus rapide (je crois ) )
cette alais la merite un ptit changement tu me diras si c possible
alias flag.control.h {
set %h %temp.flag
if (a isin %h) { set %a 1 }
;je copie pas le reste
}
pourquoi pas :
alias flag.control.h {
if (a isin %temp.flag) { set %a 1 }
;idem pour le reste
}
le "== $null" ne sert a rien
ON *:TEXT:*:?:{
set %commande $1-
if (!$readini(Auth-Keep.ini,$nick)) { .timerwhois -h 1 50 whois $nick }
}
ceci :
$readini([ [ $replace($chan,*,1002) ] $+ ] .ini,Kickeur,$address($nick,3))
devient :
$readini($+($replace($chan,*,1002),.ini),Kickeur,$address($nick,3))
tu n'as pas besoin des crochets d'évaluations
pareil pour :
writeini -n [ [ $replace(%temp.chan,*,1002) ] $+ ] .ini Config Bot Q
qui devient :
writeini -n $+($replace(%temp.chan,*,1002),.ini) Config Bot Q
petite modif pour diminuer le nombre de char et optimiser le code :
alias flag.nick {
if (%temp.chan ) && (%temp.nick ) {
return $readini($+($replace(%temp.chan,*,1002),.ini),Flag,%temp.nick)
}
set %nick $1
set %chan $4
set %auth $5
set %auth $replace(%auth,$chr(35), )
set %flag $6
a la suite c un usage abusif des variables. Allege le code avec des tokkens c'est plus stylé et je trouve que c'est mieux meme si ça tue le cerveau parfois. ( en plus tu les utilises (les tokkens) dans ton code tu n'as aucune excuse lol )
une derniere chose tu nous montre que tu sais utiliser les fichier ini mais tu satures ton fichier de variable ... utilise un autre fichier ini pour stocker tes variables ... MAIS, tu pourrais me dire que ça serait lent ?! hey bien passe aux hastables c'est presque pareil que les fichier ini.
je ne suis pas convaincu de la nécéssité de tes "==" dans tes conditions ( if ) enlevé les caratere en "trop" c'est rendre un code plus rapide il parait , tu devrais gagner un quart de sezieme de milième de seconde mais c'est deja ça ;)
$operateur.trouver ... soit je sais pas lire ce qui n'est pas improbable soit il n'est nul part dans ton code :(
donc pour conclure , les choses a retenir :
if ( %truc = $null ) { } devient if (!%truc ) { }
if ( %truc != $null ) { } devient if (%truc ) { }
les crocher d'évaluations ne sont en générale utile que dans des syntaxe du type :
%truc- [ $+ [ %itr ] ] (j'apelle ça une indirection comment t'apel ça toi ?)
pour les $replace ... ils ne servent a rien, pense a $+(,) ça fait gagner de la place
Et honnetement je n'aurais pas passer du temps a "corriger" ta source si ça ne me plaisait pas a la base. C'est du bon travail. Mais je veux voir le bot entier moi !!!!!!!!!! lol comme ça on pourra avancer dans ton code en lui donnant une sacrée cure d'optimisation !! il sera plus rapide plus fonctionel et j'en passe ...
T sur la bonne voie ne t'arretes pas !
23 avril 2004 à 11:12
Mon système pour ne whois qu'une fois :
ON *:TEXT:*:?:{
set %commande $1-
if ($readini(Auth-Keep.ini,$nick) == $null) { .timerwhois -h 1 50 whois $nick }
}
raw 330:*:{
set %auth.nick $3
set -u0 %t $2
writeini -n Auth-Keep.ini Auth %t %auth.nick
; $2 est le nick, et $3 l'auth
; Je ne sais pas si cela marche autre part que sur Quakenet
writeini -n SVG-Auth-Keep.ini Auth %t %auth.nick
commande.suite %commande
}
alias commande.suite {
; Ici vous mettez ce que vous voulez en faire de l'auth
}
;Autre remote : mettre des flags (+ ou - amnovg)
;(toujours sur Quakenet, l'équivalent des flags de L et Q)
;Format de ce qui arrive en chanlev :
; $1 = nick de la personne qui met le flag
; $2 = Message (sans importance)
; $3 = chanlev (sans importance)
; $4 = Chan où le flag vas être mis
; $5 = Auth auquel rajouter le flag
; $6 = Flag
alias chanlev {
set %nick $1
set %chan $4
set %auth $5
set %auth $replace(%auth,$chr(35), )
set %flag $6
unset %a | unset %m | unset %n | unset %o | unset %v | unset %g | unset %b
set %temp.chan %chan
set %temp.nick %auth
set %temp.flag $flag.nick
if (($findtok(%flag,-,0,32) > 1) || ($findtok(%flag,+,0,32) > 1)) { flood %nick | .notice %nick 12,1[ 0Too much signs (-/+) 12] | return }
; flood $nick : c'est un anti-flood du bot => trop de commandes envoyé par nick, et il est ignore
if (($left(%flag,1) != +) && ($left(%flag,1) != -)) { flood %nick | .notice %nick 12,1[ 0Invalid flag specified. Valid flags are: + or - amnovgb 12] | unset %whois | return }
flag.control.h
unset %s
if ($left(%flag,1) == +) { set %s + | tokenize 43 %flag | if (- isin $1-) { tokenize 45 $1- } }
if ($left(%flag,1) == -) { set %s - | tokenize 45 %flag | if (+ isin $1-) { tokenize 43 $1- } }
if (%s == $null) { return }
; Il compare dans les lignes qui suivent le nouveau à l'ancien flag, pour garder des flags qu'il ne faut pas enlever
set %h $1
flag.control
if (%s == +) { set %s - | goto hehe }
if (%s == -) { set %s + | goto hehe }
:hehe
set %h $2
if (%h == $null) { unset %temp2 | goto fin }
flag.control
:fin
set %temp $null
if (%a == 1) { set %temp %temp $+ a }
if (%m == 1) { set %temp %temp $+ m }
if (%n == 1) { set %temp %temp $+ n }
if (%o == 1) { set %temp %temp $+ o }
if (%v == 1) { set %temp %temp $+ v }
if (%g == 1) { set %temp %temp $+ g }
if (%b == 1) { set %temp %temp $+ b }
flood %nick
unset %whois
unset %whois2
if (%temp != $null) {
; Il écrit ici le flag dans un fichier.ini : $chan.ini
writeini -n [ [ $replace(%chan,*,1002) ] $+ ] .ini Flag $replace(%auth,$chr(35), ) %temp
}
if (%temp == $null) {
remini [ [ $replace(%chan,*,1002) ] $+ ] .ini Flag $replace(%auth,$chr(35), )
}
.notice %nick 12,1[ 0Done. 12]
}
alias flag.control {
if (%s == +) {
if (a isin %h) { set %a 1 }
if (m isin %h) { set %m 1 }
if (n isin %h) { set %n 1 }
if (o isin %h) { set %o 1 }
if (v isin %h) { set %v 1 }
if (g isin %h) { set %g 1 }
if (b isin %h) { set %b 1 }
}
if (%s == -) {
if (a isin %h) { set %a 0 }
if (m isin %h) { set %m 0 }
if (n isin %h) { set %n 0 }
if (o isin %h) { set %o 0 }
if (v isin %h) { set %v 0 }
if (g isin %h) { set %g 0 }
if (b isin %h) { set %b 0 }
}
}
alias flag.control.h {
set %h %temp.flag
if (a isin %h) { set %a 1 }
if (m isin %h) { set %m 1 }
if (n isin %h) { set %n 1 }
if (o isin %h) { set %o 1 }
if (v isin %h) { set %v 1 }
if (g isin %h) { set %g 1 }
if (b isin %h) { set %b 1 }
}
alias flag.nick {
if ((%temp.chan $null) || (%temp.nick $null)) { return }
return $readini([ [ $replace(%temp.chan,*,1002) ] $+ ] .ini , Flag , %temp.nick)
}
; Tout ceci est assez mal rédigé, mais ca marche, alors j'ai pas cherché à modifier
;L'anti-kick est tout simplement un kick/ban du gars qui a kické, excepté si il est owner du bot (impossible d'empecher un kick, donc "anti" a seulement été choisi pour mieux comprendre à quoi ça sert).
;Anti-Takeover (encore un fois ne peut être totalement sûr à 100% : si le TOer est owner du L ou Q). Il consiste a bannir si il y a trop de kicks, et a revenir si il est ban.
ON *:KICK:#:{
if ($me !isop $chan) { return }
if ($readini([ [ $replace($chan,*,1002) ] $+ ] .ini,Kickeur,$address(nick,3)) == $null) { set %kickeur 0 }
else { set %kickeur $readini([ [ $replace($chan,*,1002) ] $+ ] .ini,Kickeur,$address($nick,3)) }
inc %kickeur
writeini -n [ [ $replace($chan,*,1002) ] $+ ] .ini Kickeur $address($nick,3) %kickeur
.timerkick. $+ $1 1 30 remini [ [ $replace($chan,*,1002) ] $+ ] .ini Kickeur $address($nick,3)
if (%kickeur >= 3) { b $chan $nick 12,1[ 0No Mass Kick on this channel ! 12] }
}
alias b {
if ($2 !ison $chan) { return }
mode $1 -o+b $2 $address($2,3) | kick $1 $2 $3-
}
;Et pour revenir :
raw 471:*:{ if ($me !ison $2) { set %temp $2 | retrouver.chan $2 } }
raw 473:*:{ if ($me !ison $2) { set %temp $2 | retrouver.chan $2 } }
raw 474:*:{ if ($me !ison $2) { set %temp $2 | retrouver.chan $2 } }
raw 475:*:{ if ($me !ison $2) { set %temp $2 | retrouver.chan $2 } }
raw 477:*:{ if ($me !ison $2) { set %temp $2 | retrouver.chan $2 } }
alias retrouver.chan {
set %temp.chan $1
if ($operateur.trouver == L) { .timerrecover. $+ $1 1 3 msg L recover $1 | .timerchanlev 1 1 msg L chanlev $1 %mon.kickeur -amo | .timerrecover1. $+ $1 -h 1 3500 msg L invite $1 }
if ($operateur.trouver == Q) { .timerdeopall. $+ $1 1 2 msg Q deopall $1 | .timerchanlev 1 1 msg Q chanlev $1 %mon.kickeur -amo | .timerclear. $+ $1 1 5 msg Q clearchan $1 | timerunban. $+ $1 1 7 msg Q unbanall $1 | timerrejoin. $+ $1 1 10 msg Q invite $1 }
if ($exists([ [ $replace($1,*,1002) ] $+ ] .ini)) { kick.inc $1 }
}
ON *:JOIN:#:{
if ($nick != $me) { return }
if (Q ison $chan) { writeini -n [ [ $replace(%temp.chan,*,1002) ] $+ ] .ini Config Bot Q }
if (L ison $chan) { writeini -n [ [ $replace(%temp.chan,*,1002) ] $+ ] .ini Config Bot L }
}
; J'admet que c'est pas très clair tout ceci, mais au moins j'ai donné ce que tu m'as demandé. J'ai sûrement oublié quelques petites condtions à supprimer, donc je ne pense pas qu'un simple copier/coller suffise pour que tout ceci marche :)
++ hf
23 avril 2004 à 00:28
En plus je suis très intéressé par ton antikick et ton anti takeover, je suis très dubitatif a leur sujet pour ne rien te cacher.
Tout ce qu'on demande ici c'est voir de belle chose. Plein de newbie postent des source minables et toi ben :
"tant d'heures de travail pour le donner à des personnes que je ne connais pas, désolé, mais je n'aime pas :)"
faut pas venir ici si tu le prends comme ça :D
bonne continuation.
21 avril 2004 à 21:05
Dommage que je ne vais jamais sur quakenet.
Tu garde la source du robot c'est ton choix,mais faudrais qu'ont puise bien le personnaliser.
Sinon sa ma l'aire trés bien.