GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: babaorum59 le 21 Février 2012, 16:21:51

Titre: mystats avec heures bug
Posté par: babaorum59 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);
         }
      }
   }
Titre: Re : mystats avec heures bug
Posté par: cristab 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
Titre: Re : mystats avec heures bug
Posté par: Xartrick 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).
Titre: Re : mystats avec heures bug
Posté par: cristab 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
Titre: Re : mystats avec heures bug
Posté par: Xartrick 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.