GTAOnline.net

San Andreas Multiplayer (sa:mp) => Scripting SA-MP [Pawn center] => Discussion démarrée par: .:: Miguel .:: le 04 Novembre 2011, 19:24:48

Titre: Problème calculé le temps
Posté par: .:: Miguel .:: le 04 Novembre 2011, 19:24:48
Salut,
Je créé un FS pour pas floodé tout marche sauf que je voudrait intégré il est encore mute combien de temps dans le message

J'ai testé sa

<?php
new TempsUnmute;

    if(
NombreFloodChat[playerid] > 4)
    {
      
format(stringsizeof(string), "Il vous reste encore %d sec avant d'être unmute",TempsUnmute);
      
SendClientMessage(playerid,0xFEFEFE,string);
      
TempsUnmute SetTimerEx("MuteFlood",100000,0,"i",playerid);
      return 
0;
     }

forward MuteFlood(playerid);
public 
MuteFlood(playerid)
{
   
NombreFloodChat[playerid] = 0;
}
 

Mais sa me rajoute que 1sec a chaque fois que je flood.Sa me met pas le temps qu'il reste ou le temps qu'il a fait depuit le dernier mute

Titre: Re : Problème calculé le temps
Posté par: Gilux le 04 Novembre 2011, 23:00:41
TempsUnmute[playerid] peut être ?

++
Titre: Re : Problème calculé le temps
Posté par: .:: Miguel .:: le 04 Novembre 2011, 23:14:53
Nah aucun résulta
Titre: Re : Problème calculé le temps
Posté par: Xartrick le 05 Novembre 2011, 12:00:25
Personnellement, pour un système de mute, j'aurais opté pour un timer qui se répète toutes les secondes.
Ensuite, je lui communiquerait le nombre de secondes (ou de tour) qu'il faut pour s'arrêter (et donc unmuted) et j'ajouterais une variable qui s'incrémente à chaque tour (ce qui correspondra au seconde écoulé).
Pour optenir le temps restant, il faudra faire ...


temps_donnee - temps_courant
temps_donnee est le nombre de tours à effectuer et temps_courant le nombre de tours effectué.
Ensuite, lorsque ces deux variables sont égales, le joueur peut être unmuted.
Titre: Re : Problème calculé le temps
Posté par: Katou76 le 05 Novembre 2011, 12:20:31
Salut,

Tu peut créer une variable qui te permet d’ajouter le temps que tu désire le mute:

Par Exemple:
TeampsMute[playerid] = 10000;
Ensuite tu créer un Timer qui check toutes les secondes et tu décrémente ta variable:

public Timer()
{
     if(TempsMute... > 0)
     {
          TeampsMute[playerid] --;
     }
     else if(TeampsMute... <= 0)
     {
           TempsMute[playerid] = 0; // Le joueur peut reparler
     }
}

Il me semble que c'est sa ^^
Titre: Re : Problème calculé le temps
Posté par: Xartrick le 05 Novembre 2011, 13:50:25
@Katou76: C'est exactement ce que j'ai proposé à quelques exceptions prêt.
Sinon, dans ton code, jamais le mute ne se terminera.


if(TeampsMute[playerid] <= 0)
{
    TempsMute[playerid] = 0;
}

Quel est l'intérêt de mettre la variable à zéro si elle est déjà à zéro.
À la place de ça, tu devrais fermer le Timer, ou plutôt le détruire.
Titre: Re : Problème calculé le temps
Posté par: Katou76 le 05 Novembre 2011, 16:05:04
Oui je détaillé un peu plus ton explication pour mieux comprendre et le code que j'ai fais, je l'ai tapé en 5 minutes sans me relire, il y a plusieurs code pour faire ce genre de système ^^
Titre: Re : Problème calculé le temps
Posté par: WaTsoN le 13 Novembre 2011, 17:04:33
Pour calculer le temp ?