[J'avais posté un message similaire sur eggdrop-fr.org. Néanmoins leur forum semble... desertique !]
Bonjour,
J'essaie tant bien que mal de coder une fonction d'aide pour le future fonctionnement de mon eggdrop.
Une sécurité anti-flood s'impose donc.
La version de mon egg-drop est la suivante : v1.7
Voilà le code :
J'ai une erreur, la suivante :
Je détail (Dans le cas où ne serait pas clair) le fonctionnement de mon code.
Je me sert de deux variables, une qui sera associée à un timer, une autre pour "compter" les demandes d'aide.
Dans des variables qui ne seront pas modifiées je stock les limites, ici 3 requêtes maximum pour 10 secondes.
A l'aide d'un timer, j'incrémente une variable tout les secondes.
De même à chaque requête, j'incrémente la variable correspondante.
Si les deux variables sont comprise dans la limite, on affiche l'aide.
Si non, on affiche une erreur, et on initialise le compteur d'un timer.
Une fois la variable du timer initialisée (attente_max), on fait patienter l'user 60 secondes, au bout desquelles toutes la variables seront réinitialisée.
Et on recommence...
Merci de votre aide.
Bonjour,
J'essaie tant bien que mal de coder une fonction d'aide pour le future fonctionnement de mon eggdrop.
Une sécurité anti-flood s'impose donc.
La version de mon egg-drop est la suivante : v1.7
Voilà le code :
tcl
#Variables constantes
set request_max 3
set timer_max 10
#Variables
set timer_flood 0
set anti_flood 0
set attente_max 60
#Timer
utimer 1 "incr timer_flood"
#Binds
bind pub - !aide pub:aide
bind msg - aide msg:aide
#Procedures
proc pub:aide { nick uhost handle channel arg } {
global timer_flood anti_flood attente_max timer_max request_max
if [[[$timer_flood < $timer_max && $anti_flood < $request_max] || [$timer_flood >= $timer_max && $anti_flood <= $request_max]] && $attente_max == 60] {
putquick "NOTICE $nick :Aide...Bla bla"
incr anti_flood
}
elseif [$attente_max == 0] {
set attente_max 60
putquick "PRIVMSG $channel :La limite de : $request_max pour $timer_max secondes a été atteinte."
putquick "PRIVMSG $channel :Merci de patienter $attente_max secondes"
}
elseif [$attente_max == 60] {
utimer 60 "set attente_max 0 set timer_flood 0 set anti_flood 0"
}
}
J'ai une erreur, la suivante :
Citation :Tcl error [pub:aide]: invalid command name "1"
Je détail (Dans le cas où ne serait pas clair) le fonctionnement de mon code.
Je me sert de deux variables, une qui sera associée à un timer, une autre pour "compter" les demandes d'aide.
Dans des variables qui ne seront pas modifiées je stock les limites, ici 3 requêtes maximum pour 10 secondes.
A l'aide d'un timer, j'incrémente une variable tout les secondes.
De même à chaque requête, j'incrémente la variable correspondante.
Si les deux variables sont comprise dans la limite, on affiche l'aide.
Si non, on affiche une erreur, et on initialise le compteur d'un timer.
Une fois la variable du timer initialisée (attente_max), on fait patienter l'user 60 secondes, au bout desquelles toutes la variables seront réinitialisée.
Et on recommence...
Merci de votre aide.
—( ^^ )—
Pensez à global var dans une procédure ! L'oublier c'est le payer cher... Moi ça m'a couté une journée de prise de tête et des cheveux !
Pensez à global var dans une procédure ! L'oublier c'est le payer cher... Moi ça m'a couté une journée de prise de tête et des cheveux !