JeuWeb - Crée ton jeu par navigateur
[REGLE] Limiter le nombres d'attaques en 24h - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : [REGLE] Limiter le nombres d'attaques en 24h (/showthread.php?tid=227)



[REGLE] Limiter le nombres d'attaques en 24h - Globe - 18-09-2006

Bonjour à tous...

bossant actuellement sur un RPG basique j'aurais aimé quelques idées pour un système qui empecherait d'attaquer plusieurs fois la meme personne en moins de 24h...

Biensur j'utiliserais le timestamp mais j'aimerais savoir comment vous rangeriez ces informations dans une table...

Par exemple une table contenant deux champs d'id, celui de la victime et de l'assaillant, et le time à l'époque de la dernière attaque ? Ce qui créerais énormément d'entrées...

Ou avez vous un système plus ingénieux ?


RE: Limiter le nombres d'attaques en 24h - comode - 19-09-2006

Il faudrais que tu sois plus précis... si tu veux qu'une personne ne puisse attaquer une personne qu'une fois par 24h, une relation attaque(int(11) #assaillant, int(11) #assalli, int(11)timestamp) suffirait, avec un nettoyage occasionnel de la table 'delete from attaque where timestamp <= '.time(); et la condition permettant l'attaque :
'select * from attaque where assaillant = '.$id_assaillant.' and assalli = '.$id_assalli.' and timestamp <= '.time();
Si cette reqette ne retourne pas de résultat, l'attaque est possible, et toute attaque effectuée implique que le compteur soit remis a time() + 1j.
Ensuite, tu fais le nettoyage de la base quotidiennement et le tour est joué.
Cette méthode permet a un jour de n'attaquer qu'une seule fois un autre joueur sur une periode donnée, mais rien n'empeche 50 personnes d'attaquer le meme joueur dans ce laps.

Si c'est justement ce que tu veux, a ta place, je pense que j'utiliserai la même méthode sauf que la table attaque ressemblerai a attaque(int(11) #assailli, int(11)timestamp) où timestamp stockerai la date de l'attaque, et que je testerai si il est possible d'attaquer par la requete :
'count(assalli) from attaque where assalli = '.$id_assalli.' and timestamp > '.(time() - 86400);
Il te suffit alors de tester si le resultat est supérieur ou inférieur au nombre maximum d'attaque possible /24h pour savoir si il est encore possible d'attaquer ce joueur.
Ensuite, comme pour la méthode précédente, un 'delete from attaque where timestamp <= '.(time() + 84600); journalier est de toute façon indispensable pour pas encombrer inutilement ta bdd.


RE: Limiter le nombres d'attaques en 24h - Globe - 19-09-2006

Je veux seulement limiter les attaques d'un meme joueur sur un meme ennemi... Je vais donc voir, merci.


RE: Limiter le nombres d'attaques en 24h - phpgamer - 19-09-2006

Sinon, dès qu'un joueur attaque un autre joueur, tu met les id de ces deux joueurs dans une table, et tu vide la table toutes les 24h avec un cron.


RE: Limiter le nombres d'attaques en 24h - comode - 19-09-2006

T'es pas obligé de mettre un CRON, tu peux faire ça au moment du Login aussi.
Sinon, pour un joueur peut attaquer 1 autre joueur 1 seule fois, c'est la première méthode que je décrit la bonne Wink


RE: Limiter le nombres d'attaques en 24h - Globe - 19-09-2006

Ok, merci pour tout.