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
-
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'
-
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
-
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.
-
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]++;
}
...
-
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.
-
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");
}
...
-
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++
-
Je doit faire quoi ? ;D
-
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 ?
-
dini_IntSet != dini_Set
-
Je comprends plus rien, j'ai un cerveau qui fonctionne au 4L x)
-
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] ++;
}
}
}
}
}
-
Génial ! Mais comment je fait alors pour mettre ça avec mes 3 grades ?