• 23 Avril 2025, 19:29:17


Auteur Sujet: Timer pour un joueur spécifique  (Lu 1211 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Timer pour un joueur spécifique
« le: 16 Mars 2013, 20:32:23 »
Bonjour,

Je me lance dans une petite "fonction" qui permettrait de savoir depuis quand une personne est inactive.
C'est à dire lancé un timer, et au bout d'une minute ça mettrait +1 à la variable.

A la fin du timer par exemple, ça ferait:

Code: (pawn) [Sélectionner]
/*
 Là je récupère la position actuelle, je définis cette position comme s'appelant Pos1.
Ensuite, dans le timer je vérifie si la position récupéré (pos1) est égale à Pos2 (actuelle).
Et si la condition vaut: true alors je fais:
*/

minute++;

Si, par contre la condition retourne "false" alors je remets la variable à 0.

Code: (pawn) [Sélectionner]
minute = 0;
Le problème étant que je n'arrive pas à récupérer l'id d'un joueur précis dans un timer, j'ai essayé sous cette forme:

Code: (pawn) [Sélectionner]
forward montimer(playerid); // En haut du script

SetTimer("montimer", 1000, true); // Dans OnPlayerSpawn (donc au moment où il a spawn)

public montimer(playerid)
{
      Kick(playerid); // Juste un exemple.
      return 1;
}

Et ça ne fonctionne pas. Si vous pouviez m'éclairer.
En vous remerciant :p


Adju ♥
(-_-)



Hors ligne Kiloutre

  • Nolife, nerd et geek passionné d'Ordinatique ! ^^
  • *
  • Grand Banditisme
  • Messages: 567
    • Voir le profil
Re : Timer pour un joueur spécifique
« Réponse #1 le: 17 Mars 2013, 01:42:30 »
Salut, il faut que tu utilises SetTimerEx pour avoir des paramètres dans un timer.
Voilà ce que tu devrais faire :
SetTimerEx("montimer", 1000, true, "i", playerid);On met << "i" >> car la valeur que l'on envoie est un chiffre. ("s" pour une chaine de caractères, etc...)
On peut aussi mettre plusieurs paramètres mais de type différent : exemple :
SetTimerEx("montimer", 1000, true, "isf", playerid, name, 1.005);(f pour float, tu l'auras compris :smile:, malheureusement le "s" ne marche pas actuellement)
Ravi de t'avoir aidé (si je l'ai fait)  :rolleyes:
http://wiki.sa-mp.com/wiki/SetTimerEx

[/url]

Hors ligne Infu

  • *
  • Modo LS - Admin FnF
  • Messages: 3551
    • Voir le profil
Re : Timer pour un joueur spécifique
« Réponse #2 le: 17 Mars 2013, 11:56:49 »
Ah d'accord, merci beaucoup ;)


Adju ♥
(-_-)



Hors ligne Eloctro

  • Pawno Fan
  • *
  • Grand Banditisme
  • Aight !
  • Messages: 846
    • Voir le profil
    • GtaSA-RP
Re : Timer pour un joueur spécifique
« Réponse #3 le: 17 Mars 2013, 13:40:54 »
Ou plus simple ,le callback OnPlayerUpdate est appelé à chaque actions du joueur .
Voila un petit code que je t'ai fait :
Code: (pawn) [Sélectionner]
#define GetPlayerDowntime(%0) (GetTickCount()-PlayerDowntime[%0])
new PlayerDowntime[MAX_PLAYERS];
public OnPlayerUpdate(playerid)
{
    PlayerDowntime[playerid]=GetTickCount();
    return 1;
}

Utilise GetPlayerDowntime(playerid) pour renvoyer le temps d'inactivité(en ms)
« Modifié: 17 Mars 2013, 14:40:23 par Eloctro »

Hors ligne Ssk

  • *
  • Lulu's Stunt - Le serveur stunt de Lulu !
  • Messages: 8154
    • Voir le profil
Re : Timer pour un joueur spécifique
« Réponse #4 le: 17 Mars 2013, 14:03:42 »
Si je me souviens GetTickCount(), ne fonctionne pas sous linux.



Derrière tout programme se cache un programmeur, je considère le monde comme un programme.
Mon blog

Hors ligne Eloctro

  • Pawno Fan
  • *
  • Grand Banditisme
  • Aight !
  • Messages: 846
    • Voir le profil
    • GtaSA-RP
Re : Timer pour un joueur spécifique
« Réponse #5 le: 17 Mars 2013, 14:37:29 »
Personnellement j'ai jamais rencontré ce problème.