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.
06/08/2008, 12:26 (Modification du message : 06/08/2008, 12:28 par Virgile.)
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 :
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.
08/08/2008, 02:13 (Modification du message : 08/08/2008, 03:00 par Virgile.)
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é ;).
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:
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, ... ?
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 ;-)
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.
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?