GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: ShaDowxx™ le 11 Février 2011, 17:46:59

Titre: Donner un grade par nombre d'heure joué
Posté par: ShaDowxx™ le 11 Février 2011, 17:46:59
Bonjour,

Je voudrais savoir comment faire pour pouvoir donner des grades à un joueur par le nombre d'heure qu'il joue. Si un joueur joue moin de 3 Heures c'est un Noob. Si un joueur joue plus de 6 Heures alors c'est un Apprenti etc ...

Pouvez-vous m'aider ? Merci d'avance

++ Ju'
Titre: Re : Donner un grade par nombre d'heure joué
Posté par: scrapy le 11 Février 2011, 17:58:08
Je sais Faire Comme pour les Grade MDC

Exemple lvl 3 = Noob a la place de MDC
lvl 6 = Apprenti a la place de MDC
Titre: Re : Donner un grade par nombre d'heure joué
Posté par: ShaDowxx™ le 11 Février 2011, 17:59:23
Oui, je sais faire ça j'ai déjà défini toute mes grades mais je ne sais pas comment les exploités les heures.
Titre: Re : Donner un grade par nombre d'heure joué
Posté par: babaorum59 le 11 Février 2011, 18:42:31
d'après un gm que j'ai vue :
forward :
forward UpdateStatsTime(playerid);onplayerconnect :
public OnPlayerConnect(playerid)
{
STime[playerid] = SetTimerEx("UpdateStatsTime", 1000, true, "i", playerid);
puis
public UpdateStatsTime(playerid)
{
SSeconds[playerid]++;
if(SSeconds[playerid] == 59)
{
    SSeconds[playerid] = 0;
    SMinutes[playerid]++;
}
if(SMinutes[playerid] == 59)
{
    SMinutes[playerid] = 0;
    SHours[playerid]++;
}
...
Titre: Re : Donner un grade par nombre d'heure joué
Posté par: Leonidas300 le 11 Février 2011, 21:12:27
ou alors à chaque Heure passé tu monte le "lennbdheurequilajouer" et tu rajoute sa
crée un public et tu dit

if(PlayerInfo[playerid][Lenbdheurequilajouer] == 3)
{
          SetPlayerGrade(playerid, "Novice ^^");
}

pareil pour les autres grade.
Titre: Re : Donner un grade par nombre d'heure joué
Posté par: babaorum59 le 11 Février 2011, 22:59:12
ou comme sa
public UpdateStatsTime(playerid)
{

if(HEUREDEJEU[playerid] == 3)
{
    SetPlayerGrade(playerid, "Débutant");
            dini_IntSet(filename,(playerid), "Grade", "Débutant");
}
if(HEUREDEJEU[playerid] == 6)
{
    SetPlayerGrade(playerid, "Apprenti");
            dini_IntSet(filename,(playerid), "Grade", "Apprenti");
}
if(HEUREDEJEU[playerid] == 9)
{
    SetPlayerGrade(playerid, "Novice");
            dini_IntSet(filename,(playerid), "Grade", "Novice");
}
...
Titre: Re : Re : Donner un grade par nombre d'heure joué
Posté par: S!m le 12 Février 2011, 00:04:12
Salut,

simple remarque:

public UpdateStatsTime(playerid)
{
SSeconds[playerid]++;
if(SSeconds[playerid] == 59)
{
    SSeconds[playerid] = 0;
    SMinutes[playerid]++;
}
if(SMinutes[playerid] == 59)
{
    SMinutes[playerid] = 0;
    SHours[playerid]++;
}
        ...
}


Cette fonction est fausse. Enfin, elle est inexacte.

Cette fonction ajoute une minute quand 59 secondes sont passées. Que je sache, il y a 60 secondes dans une minute...

En gros, on ne peut pas avoir de 59e seconde.
Exemple: on passe de 58 minutes et 58 secondes à 1heure en 1 seconde....

La vraie fonction serait plutôt comme ceci:

public UpdateStatsTime(playerid)
{
SSeconds[playerid]++;
if(SSeconds[playerid] == 60)
{
    SSeconds[playerid] = 0;
    SMinutes[playerid]++;
}
if(SMinutes[playerid] == 60)
{
    SMinutes[playerid] = 0;
    SHours[playerid]++;
}
        ...
}

ps. si tu avais incrémenté tes variables après les tests, 59 aurait été la valeur correcte.

bonne chance

++Sim++
Titre: Re : Donner un grade par nombre d'heure joué
Posté par: ShaDowxx™ le 12 Février 2011, 09:53:51
Je doit faire quoi ?  ;D
Titre: Re : Re : Donner un grade par nombre d'heure joué
Posté par: babaorum59 le 12 Février 2011, 09:58:52
ou comme sa
public UpdateStatsTime(playerid)
{

if(HEUREDEJEU[playerid] == 3)
{
   SetPlayerGrade(playerid, "Débutant");
            dini_IntSet(filename,(playerid), "Grade", "Débutant");
}
if(HEUREDEJEU[playerid] == 6)
{
   SetPlayerGrade(playerid, "Apprenti");
            dini_IntSet(filename,(playerid), "Grade", "Apprenti");
}
if(HEUREDEJEU[playerid] == 9)
{
   SetPlayerGrade(playerid, "Novice");
            dini_IntSet(filename,(playerid), "Grade", "Novice");
}
...
test celle ci
mais je comprend pas un truc , le grade s'affiche ou ?
Titre: Re : Donner un grade par nombre d'heure joué
Posté par: cristab le 12 Février 2011, 12:47:03
dini_IntSet != dini_Set
Titre: Re : Donner un grade par nombre d'heure joué
Posté par: ShaDowxx™ le 12 Février 2011, 13:14:23
Je comprends plus rien, j'ai un cerveau qui fonctionne au 4L x)
Titre: Re : Donner un grade par nombre d'heure joué
Posté par: cristab le 12 Février 2011, 16:15:41
je vous fait par de ma fonction pour les heure passer pour les jeux car les votre vont bugger ^^
public TempsDeJeu()
{
for(new o=0; o < MAX_PLAYERS;o++)
{
    if(IsPlayerConnected(o))
    {
    Minute[o]++;
    if(Minute[o] == 60)
    {
        Minute[o] = 0;
        Heure[o] ++;
if(Heure[o] == 24)
{
    Heure[o] = 0;
    Jour[o] ++;
}
}
}
}
}
Titre: Re : Donner un grade par nombre d'heure joué
Posté par: ShaDowxx™ le 12 Février 2011, 16:41:20
Génial ! Mais comment je fait alors pour mettre ça avec mes 3 grades ?