• 23 Avril 2025, 23:54:01


Auteur Sujet: mystats avec heures bug  (Lu 914 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne babaorum59

  • *
  • Tueur
  • Messages: 58
    • Voir le profil
mystats avec heures bug
« le: 21 Février 2012, 16:21:51 »
salut , je crée un systeme de mystats tout marche sauf quand 60 minute de transforme a 1h et redevien 0 minutes
je vous montre le code :
après le changement de minute a 1h , les minutes de change plus il reste par exemple a 1h0! comment regler se probleme ?
public tempsjeu(playerid)
{
    for(new i=0;i<=MAX_PLAYERS;i++)
   {
       if(IsPlayerConnected(i))
      {
            new playername[256];
            GetPlayerName(i, playername, sizeof(playername));
         dini_IntSet(udb_encode(playername), "Minutes",Minutes[playerid]);
         if(Minutes[playerid]==60)
           GetPlayerName(i, playername, sizeof(playername));
         Hours[playerid]=Hours[playerid]+1;
         dini_IntSet(udb_encode(playername), "Heures",Hours[playerid]+1);
         dini_IntSet(udb_encode(playername), "Minutes",Minutes[playerid]=0);
         }
      }
   }

Citer
l'alcool est un ennemie et fuir l'ennemie c'est étre un lache

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : mystats avec heures bug
« Réponse #1 le: 21 Février 2012, 16:58:33 »
je vais jouer un petit peu le chiant mais pourquoi 2 topic pour la meme erreur??

De plus mettre sont code entre les balise [code ] serais un plus

<?php
public tempsjeu(playerid)
{
    for(new 
i=0;i<=MAX_PLAYERS;i++)
   {
       if(
IsPlayerConnected(i))
      {
            new 
playername[256];
            
GetPlayerName(iplayernamesizeof(playername));
            
dini_IntSet(udb_encode(playername), "Minutes",Minutes[playerid]);
            if(
Minutes[playerid]==60)
            {
                
GetPlayerName(iplayernamesizeof(playername));
                
Hours[playerid]=Hours[playerid]+1;
                
dini_IntSet(udb_encode(playername), "Heures",Hours[playerid]+1);
                
dini_IntSet(udb_encode(playername), "Minutes",Minutes[playerid]=0);
            }
         }
      }
   }

moi je rajoute <?php en haut du code pour avoir de la coloration

Donc dans ton code que tu nous presente on ne vois pas a qu'elle moment tu incremente la variable Minutes[playerid] peu être un oublie a voir si tu l'as fait autre part
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : mystats avec heures bug
« Réponse #2 le: 21 Février 2012, 18:40:09 »
Voilà ton code original (avec l'indentation et l'espacement qui va avec.

public tempsjeu(playerid)
{
for (new i = 0; i <= MAX_PLAYERS; i++)
{
if (IsPlayerConnected(i))
{
new playername[256];

GetPlayerName(i, playername, sizeof(playername));
dini_IntSet(udb_encode(playername), "Minutes", Minutes[playerid]);

if (Minutes[playerid] == 60)
GetPlayerName(i, playername, sizeof(playername));

Hours[playerid] = Hours[playerid] + 1;

dini_IntSet(udb_encode(playername), "Heures", Hours[playerid] + 1);
dini_IntSet(udb_encode(playername), "Minutes", Minutes[playerid] = 0);
}
}
}

À la condition (il n'y en à qu'une, tu récupère le nom du joueur, c'est tout !
Mais sinon, à chaque fois tu ajoute une heure.


Hours[playerid] = Hours[playerid] + 1;

dini_IntSet(udb_encode(playername), "Heures", Hours[playerid] + 1);

Ici, dans un esprit logique, ajouté une heure plus une heure, ce n'est pas juste ...

dini_IntSet(udb_encode(playername), "Minutes", Minutes[playerid] = 0);
Une affectation dans un paramètre de fonction, du grand n'importe quoi (de mon point de vu).

Hors ligne cristab

  • *
  • Messages: 8379
    • Voir le profil
Re : mystats avec heures bug
« Réponse #3 le: 21 Février 2012, 19:06:53 »
je vient juste de remarquer qu'il augmente de 2heures toute les 60 minutes ^^
imaginons Hours[playerid] vaut 3
Hours[playerid] = Hours[playerid] + 1;//la je vaut 4
dini_IntSet(udb_encode(playername), "Heures", Hours[playerid] + 1);//ici je vaut 5

De plus la fonction est erroner pourquoi tempsjeu(playerid) et pas tempsjeu() car a aucun moment playerid ne peu être utiliser mais i donc les variable ne doivent pas être Minutes[playerid] mais Minutes[i ]

La seul chose juste est GetPlayerName(i, playername, sizeof(playername));

Juste pour dire que le compilateur doit fournir des lignes d'erreur est qu'il serais bien de les regarder

Mais bon sa fait tres longtemps que je n'ai pas toucher au pawn mais si Xartrick, S!m ou Ssk peu confirmer ce que je dit ou me corriger
« Modifié: 21 Février 2012, 19:09:34 par cristab »
pas d'aide en PM, vous êtes sur un forum est il me semble que vous êtes la pour avoir de l'aide donc pourquoi MP une seul personne qui ne vous répondra pas alors qu'il y a plein de membre ici

Hors ligne Xartrick

  • *
  • C & Pawn Programmer
  • Messages: 1391
    • Voir le profil
    • Xartrick's Area
Re : mystats avec heures bug
« Réponse #4 le: 21 Février 2012, 19:08:58 »
Effectivement, tu fais une boucle sur tout les joueurs, mais tu agis toujours sur le même joueur.