ANTI FLOOD SIMPLE

mslot1 Messages postés 30 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 21 mars 2005 - 20 janv. 2003 à 15:02
cs_Joan38 Messages postés 3 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 2 août 2006 - 20 mai 2006 à 16:38
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/14473-anti-flood-simple

cs_Joan38 Messages postés 3 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 2 août 2006
20 mai 2006 à 16:38
Et excuser moi pour satisfaire lebaronrouge, j'ai ajouter unset $+(%,flood,.,$nick) :

on *:TEXT:*:#: {
if ($me isop $chan && $nick !isop $chan && $nick !ishop $chan) {
inc -u3 $+(%,flood,.,$nick) 1
if ($eval($+(%,flood,.,$nick),2) > 4) {
notice $me $nick a floodé.
ban -u120 $chan $address($nick,2)
kick $chan $nick Arretez d'envoyer autant de messages $nick. Vous étes bannie 2min de $chan.
unset $+(%,flood,.,$nick)
}
}
}
cs_Joan38 Messages postés 3 Date d'inscription samedi 22 mai 2004 Statut Membre Dernière intervention 2 août 2006
20 mai 2006 à 16:17
Lol, mais pour l'amour de dieu testez vos scripts. Vous fait des truc et vous les posté alors qu'il marche pas lol.
Delirium, tu dit "a wi merde" mais tu corrige pas. Il n'y a meme pas verification de si tu est op ou hop ou pas. Moi je met 0/10.

rugbymen : 7/10 a oue quand meme pour un truc qui marche pas c pas mal.

bobjay : tu connais bien la prog en générale ? Et bien pour un script qui contient des kilomètres de lignes superflues ou avec des trucs inutiles il est reussi la ton script ^^

Bon biensur je vous donne le truc qui marche et testé par MOI :

on *:TEXT:*:#: {
if ($me isop $chan && $nick !isop $chan && $nick !ishop $chan) {
inc -u3 $+(%,flood,.,$nick) 1
if ($eval($+(%,flood,.,$nick),2) > 4) {
notice $me $nick a floodé.
ban -u120 $chan $address($nick,2)
kick $chan $nick Arretez d'envoyer autant de messages $nick. Vous étes bannie 2min de $chan.
}
}
}
cs_lebaronrouge Messages postés 288 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 14 février 2009
6 janv. 2006 à 16:50
Delirium passé le delai la variable n'est pas éffacé :

timer $+ $address 1 3 unset $+(%,flood,$host,$chan)
;si il dit rien, au bout de 3 sec, la variable est effacée

je verifie elle conserve la variable ainsi que le nombre de on text tapé par l'user , ce qui fait que si il retape un text a un moment ou l'autre il atteint le nombre qui le fera jarter , en gros le unset est ok que lorsque il aura été ban et la ok ca l'efface de la variable.
pb entre le :

/timer $+ $address 1 3 /unset $+(%,flood,$host,$chan)
et le
/unset $+(%,flood,$address,$chan)

qui on l'air d'être considéré comme variables diférentes (due certainement au : /timer $+ $address )
InFerNaLeX Messages postés 142 Date d'inscription lundi 18 octobre 2004 Statut Membre Dernière intervention 8 juin 2006
17 avril 2005 à 23:12
* /if: '<=' Opérateur inconnu (ligne 6, script16.ini) ^^
rugbymen Messages postés 35 Date d'inscription lundi 31 janvier 2005 Statut Membre Dernière intervention 13 février 2005
21 févr. 2005 à 00:09
bon 7/10
cs_Delirium Messages postés 30 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 3 mai 2004
20 mai 2004 à 21:43
Merci pr ton comment... en effet tu as raison pour le $host (dailleur que je me demande pk j'ai mi ça (je devais être bien fatigué lol)) et juste le "if ($nick != $me) {" est inutile pour la simple et bonne raison que "on *:text:*:#: {" ne prend pas en compte les lignes qui sont envoyée... donc le code ne s'execute pas quand le bot envoi des lignes donc $nick ne pourra jamais être = à $me :)
bobjay Messages postés 66 Date d'inscription mercredi 19 mai 2004 Statut Membre Dernière intervention 1 avril 2007
19 mai 2004 à 03:34
Moi je trouve la source de Delirium sympa et instructive: avant de voir cette source je ne pensais pas que ce type de variable était possible dans irc (je débute dans le scripting IRC, mais je connais bien la prog en générale)
Ce script est court, ce qui m'a attiré en 1er lieu d'ailleurs, car pour faire un tel script, certaines personnes mettent des kilomètres de lignes superflues ou avec des trucs inutiles ce qui rend le code obscur.
Je me suis permis de reprendre ton code Delirium, en y mettant une touche personnelle que voici:

on *:text:*:#: {

if ($nick != $me) {
inc $+(%,flood,$address,$chan) 1

if ($eval($+(%,flood,$address,$chan),2) <= 4) {
timer $+ $address 1 3 unset $+(%,flood,$address,$chan)
}
else {
/mode $chan +b $address
timer 1 60 /mode $chan -b $address
unset $+(%,flood,$address,$chan)
/msg $chan 4,1 $nick a été banni 1 min du chan $chan pour flood 
kick $chan $nick Le flood n'est pas toléré sur $chan, merci de vous en souvenir la prochaine fois !
}
}

}

Explication: Ce script me sert à calmer les personnes qui s'amausaient a faire flooder mon bot (ce qui faisait déconecter le bot) en floodant les appels des fonctions du bot car le bot répondait aussitot. Certes j'aurais pu mettre un timer et limiter le tps de reponse du bot, mais je trouve plus amusant d'avoir un bot rapide à la réponse, et qui peut calmer les petits malins qui floodent sur le chan (car ca marche aussi sur le chan en general et pas seulement pour les fonctions du bot).

Détail: J'utilise "if ($nick != $me) {" pour empecher que le bot subisse un auto-ban car comme le bot répond aussi vite ques les personnes qui floodent les appels de fonction du bot, il flood lui-même en conséquence. J'ai aussi ajouté un kick+reason au ban, histoire que la personne soit vraiment kickée et bannie pendant une minute.

PS: je pense que $host employé dans le code de Délirium devrait être remplacé par $address pour que le script fonctionne bien. En tout cas je l'ai fait dans mon code et ça tourne niquel maintenant... En tout cas continuez de pondre des sources utiles et simples comme celle de Délirium, ça aide beaucoup les débutants comme moi dans le domaine convivial du scripting IRC ^^
NIRC Messages postés 3 Date d'inscription vendredi 20 juin 2003 Statut Membre Dernière intervention 24 juin 2003
26 juil. 2003 à 04:13
Humf vraiment je le trouve... pas à mon goùt .........
cs_PereNoel Messages postés 68 Date d'inscription mardi 31 décembre 2002 Statut Membre Dernière intervention 2 mai 2004
29 juin 2003 à 09:20
note: le if ($nick == $me) {... est inutile
Bah vOui c'est inutile, c'est pas un On Input :P
Sinon ça va, c'est sympa et marche bien :]
cs_Delirium Messages postés 30 Date d'inscription vendredi 11 octobre 2002 Statut Membre Dernière intervention 3 mai 2004
22 janv. 2003 à 20:10
a wi merde
mslot1 Messages postés 30 Date d'inscription lundi 20 janvier 2003 Statut Membre Dernière intervention 21 mars 2005
20 janv. 2003 à 15:02
heu...ji crôa ke tia fé une pitite connerie ou alors c moi ki ai mal compris ton bout de script :
"on *:TEXT:*:#: {
if ($nick isop $chan) {
/notice $nick euh fé gaffe au flood stp
;si le gars est op sur le chan
}"
si je ne me trompe pas, ca, a chak fois k'un op va parler sur le chan ca va lui envoyer un notice...non ? ;pp
c pas o bon endroit c tout ^^
aller corrige moi ca sinon le reste me parait bon :)
Rejoignez-nous