Rechargement des points d'action : (niveau débutant)
Pour faire un rechargement exact à la seconde pret, vous avez besoin de 3 champs dans votre table.
Il est conseillé de séparer la table "membre" qui contient les informations de connexion et celle du "joueur" qui contient le pseudo, les caractéristiques, et donc les PA.
La table membre devrait avoir :
- un champ de type INT (10) qui contiendra la date de la dernière connexion à la seconde pret (
date_der_connexion)
- un champ de type SMALLINT (4) qui contiendra le reste du calcul des PA en secondes (
sec_pa)
La table joueur devrait avoir :
- un champ de type SMALLINT (4) qui représente le nombre de PA courant (
PA)Si vous avez un fichier de configuration (vivement conseillé), ajoutez y les variables suivantes :
$global_PA_MAX = 700; // nombre de PA au maximum
$global_PA_Temps=600; // temps de rechargement d'un PA en seconde, ici un toutes les 10 minutes
Ensuite, à la connexion du joueur :
// on récupère les infos du joueur
$req = mysql_query('SELECT PA, date_der_connexion , sec_pa, id_joueur FROM membre m, joueur j WHERE m.id_joueur = j.id && m.id = '.$id.' LIMIT 1');
$perso = mysql_fetch_array($req);
// on va calculer le nombre de secondes écoulées depuis sa dernière connexion + le reste de sa dernière connexion
$seconds=time()- ($perso['date_der_connexion']+$perso['sec_pa']);
//on va déterminer le nombre de PA gagné, floor() arrondi à l'entier inférieur le calcul.
$nbPA=floor($seconds/$global_PA_Temps);
//calculons le reste de la division, on le rajoutera à la prochaine connexion
$Reste_PA=$seconds % $global_PA_Temps;
//on vérifie que notre résultat $nbPA ne dépasse pas le maximum
if($global_PA_MAX<$nbPA+$perso['PA']) $nbPA=$global_PA_MAX-$perso['PA'];
//on affiche le résultat
echo 'Gain de '.$nbPA.' PA, prochain PA dans '.$Reste_PA.' seconde(s) ';
//mise à jour
mysql_query('UPDATE membre SET sec_pa = '.$Reste_PA.', date_der_connexion = '.time().' WHERE id = '.$id.' LIMIT 1');
mysql_query('UPDATE joueur SET PA = PA + '.$nbPA.' WHERE id = '.$perso['id_joueur'].' LIMIT 1');
voilà, les PA seront maintenant distribués à la seconde prêt :=)