Correction du classement #13
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "fix/classement"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Il y a trois parties a cette PR : le calcul des points, le calcul du classement et l'historique.
Calcul des points
Les points a ajouté au joueur lors de la construction d'un batiment (ou tout autre ressources) sont calculés là : https://gitea.nemunai.re/halo-battle/game/src/branch/master/onyx2/include/Class/user.php#L114. On voit que ce calcul se base fortement sur la fonctionbourse_calcPrixBase
(ici et la valeure de la bourse. Si la bourse est à 0, pas de points. Non content d'être très inégalitaire (car la « valeure » d'un point peut varier), il se base sur la bourse, système pas fini du tout dans le coe (ni dans les docs d'ailleurs).Il faut donc le nourrir de fausse valeure, via les requêtes SQL suivantes :INSERT INTO bourse_ressources VALUES (1, 1000, "");UPDATE bourse_ressources SET id=0;INSERT INTO bourse_ressources VALUES (1, 1000, "");INSERT INTO bourse_ressources VALUES (2, 1000, "");En fait, c'était n'importe quoi :) En regardant plus précisément, on ne devrait pas du tout utiliser cette fonction, qui a un but tout autre : calculer le prix d'achat d'une ressource sur le marché. Je repasse donc a un système plus simple :
le nombre de ressources consommées x 0.7
Calcul du classement
Le calcul du classement est assez simple, celui qui a le plus de point est en haut, celui avec le moins de points en bas. Pour celà, la requête suivante fait le job :
SET @p=0; UPDATE $table_user SET place_points = (@p:=@p+1) ORDER BY points DESC;
Il faut faire tourner cette requête assez réguliérement, j'ai donc créer un système de cron, qui permet de faire tourner des scripts en backends, quand il y a moins de charge (à 3h du matin par exemple).
Historique
De nombreux joueurs ont déjà lancé plein de constructions sur le server, on aimerait donc les prendre en compte dans le calcul. Pour cela, le script suivant est à placer dans
cron/
et a executer, une et une seule fois (sinon il double le nombre de point):Peux-tu plutôt ajouter une méthode
multi_query
, au lieu de faire la condition, celle-ci n'est pas nécessaire car on sait au départ si l'on souhaite faire du multi_query ou non.e25094d4f6
toafa97638fa