Un script anti-flood pour mon eggdrop - Version imprimable +- Communauté Eggdrop (https://forum.eggdrop.fr) +-- Forum : Eggdrop et TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=8) +--- Forum : Scripts TCL (https://forum.eggdrop.fr/forumdisplay.php?fid=4) +--- Sujet : Un script anti-flood pour mon eggdrop (/showthread.php?tid=251) Pages :
1
2
|
Un script anti-flood pour mon eggdrop - Virgile - 05/08/2008 [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 : TCL
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. RE: Un script anti-flood pour mon eggdrop - MenzAgitat - 05/08/2008 La syntaxe pour la commande if est la suivante : TCL
ou TCL
ou TCL
Ne confonds pas les [ ] avec les { } et attention au retour à la ligne avant les elseif et else. RE: Un script anti-flood pour mon eggdrop - Virgile - 06/08/2008 Merci pour la réponse. J'avance un peu plus, j'ai quelque peu modifié mon code qui n'allait pas, mais j'ai toujours cette même erreur, mais surement plus pour la même raison. J'édite mon premier message avec le nouveau code. Hum, je ne peux pas éditer mon premier message avant 60 minutes. Je pose donc mon code dans celui-ci : TCL
RE: Un script anti-flood pour mon eggdrop - MenzAgitat - 06/08/2008 L'utilisation de [ ] force l'évaluation (entendre exécution) du code contenu à l'intérieur. TCL
prenons par exemple ta première condition : TCL
vaut 1 si les conditions sont vérifiées et 0 sinon. Les [ ] qui l'entourent vont exécuter le résultat (donc 1 ou 0) Donc tu exécutes [1] ou [0] selon le résultat de l'évaluation, et ni 1 ni 0 ne sont une commande valide. Maintenant que tu comprends le problème, voici la ligne corrigée : TCL
Ici, certaines parenthèses que j'ai mises pourraient être enlevées mais dans un souci de lisibilité et de rapidité d'exécution du code (ça aide l'interpréteur), laissons-les. RE: Un script anti-flood pour mon eggdrop - Virgile - 06/08/2008 MenzAgitat a écrit :Donc tu exécutes [1] ou [0] selon le résultat de l'évaluation, et ni 1 ni 0 ne sont une commande valide. D'accord je comprend ! D'où le "invalid command name "1"" Merci beaucoup. Je viens de tester une ènième fois mon script, et il fonctionne en globalité, il reste quelques petites choses à mettre au point. Merci encore ! RE: Un script anti-flood pour mon eggdrop - DaV34 - 07/08/2008 N'hésites pas à distribuer ton système une fois que tu l'auras finit en globalité, ça pourrait intéresser du monde RE: Un script anti-flood pour mon eggdrop - Virgile - 08/08/2008 Voilà, j'ai terminé avec ce système anti-flood, je l'ai pour ainsi quasiment refondu, les bugs que j'avais m'ont caché les différentes choses qui faisait que le système précédent ne fonctionnait pas. Limite qui s'enclenchait quand il ne faut pas, qui ne s'enlevait pas, timer mal foutu, ... Sur le conseil de DaV34, je le met donc à disposition de toutes personnes souhaitant l'utiliser. Après quelques tests, il semble fonctionner plutôt bien. Néanmoins, je ne garantis pas sa stabilité, ni sa rapidité... En effet, je trouve le code assez lourd pour un script anti-flood. Il est sujet à optimisation. Ce script est en libre service, faites moi seulement part de vos optimisations/modifications importantes sur ce sujet ou par e-mail, précisé dans le fichier. Et si vous utilisez ce script, citez juste où vous l'avez trouvé . (Merci à vous encore une fois !) antiflood - v0.9 RE: Un script anti-flood pour mon eggdrop - CrazyCat - 08/08/2008 J'ai vite regardé, et je ne ferais qu'une remarque pour l'instant, en rapport avec ta "signature": plutôt que d'utiliser "global", appelle les variables du namespace global. Par exemple: TCL
peut devenir: TCL
Et les appels des variables se font avec $::variable. RE: Un script anti-flood pour mon eggdrop - Virgile - 08/08/2008 Et qu'est ce ça change en faite ? C'est plus propre ? Sinon, as-tu une quelconque remarque sur script ? Des techniques à ne plus utiliser, certaines méthodes pas très propres, possibles optimisations, ... ? RE: Un script anti-flood pour mon eggdrop - Merwin - 08/08/2008 Ca ne changes rien du tout Virgile, c'est un tout petit peu plus rapide en temps d'éxécution, global effectue en fait une copie de la variable globale dans la procédure, alors qu'en spécifiant avec :: tu fais directement référence à la variable globale, sans passer par une copie. Disons que c'est une question de choix, tout simplement RE: Un script anti-flood pour mon eggdrop - Virgile - 08/08/2008 Bien, je comprend. Mais je dois quand même continuer à utiliser global dans certains cas ou dorénavant utiliser :: en permanence ? RE: Un script anti-flood pour mon eggdrop - Merwin - 08/08/2008 C'est purement une question de choix, d'esthétique, à toi de voir ce que tu préfères, je serais d'avis que tu continus à utiliser global, parceque la tu vas utiliser quelquechose dont tu ne comprends pas le sens, les namespace. RE: Un script anti-flood pour mon eggdrop - Virgile - 08/08/2008 D'accord, merci. J'irais me documenter sur les namespace, c'est toujours ça de pris. RE: Un script anti-flood pour mon eggdrop - Merwin - 08/08/2008 Note: T'as fais n'importe quoi dans ton script, tu déclare la procédure init_var dans une condition, quel intéret? Tu dois la déclarer avant et l'appeller dans ta condition plutot non? RE: Un script anti-flood pour mon eggdrop - Virgile - 08/08/2008 Oui effectivement, c'est important ? Je ne sais pas, du moment qu'elle est appellée et executée =/ . |