JeuWeb - Crée ton jeu par navigateur

Version complète : [REGLE] Limiter le nombres d'attaques en 24h
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
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 ?
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.
Je veux seulement limiter les attaques d'un meme joueur sur un meme ennemi... Je vais donc voir, merci.
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.
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
Ok, merci pour tout.