Make this timer without using y_timers? Please help -
ervinmasic - 15.12.2015
This is timer, and i want to make it without using include y_timers.
Official code please, because my server dont response when i put y_timers include in my gamemode. I use mysql.
This is timer:
Код:
task PaintballArenaUpdate[1000]()
{
for(new i = 0; i < MAX_ARENAS; i++)
{
if(PaintBallArena[i][pbActive] == 1)
{
if(PaintBallArena[i][pbGameType] == 3)
{
if(PaintBallArena[i][pbFlagRedActive] == 1)
{
if(PaintBallArena[i][pbFlagRedActiveTime] <= 0)
{
ResetFlagPaintballArena(i,1);
PaintBallArena[i][pbFlagRedActiveTime] = 0;
}
PaintBallArena[i][pbFlagRedActiveTime]--;
}
if(PaintBallArena[i][pbFlagBlueActive] == 1)
{
if(PaintBallArena[i][pbFlagBlueActiveTime] <= 0)
{
ResetFlagPaintballArena(i,2);
PaintBallArena[i][pbFlagBlueActiveTime] = 0;
}
PaintBallArena[i][pbFlagBlueActiveTime]--;
}
}
// Inactive Players Check
if(PaintBallArena[i][pbPlayers] > 1)
{
PaintBallArena[i][pbTimeLeft]--;
}
if(PaintBallArena[i][pbTimeLeft] == 300-1)
{
SendPaintballArenaMessage(i, COLOR_YELLOW, "Five minutes left in this round!");
//SendPaintballArenaSound(i, 1057);
////SendPaintballArenaAudio(i, 5, 100);
}
if(PaintBallArena[i][pbTimeLeft] == 180)
{
SendPaintballArenaMessage(i, COLOR_YELLOW, "Three minutes left in this round!");
//SendPaintballArenaSound(i, 1057);
////SendPaintballArenaAudio(i, 4, 100);
}
if(PaintBallArena[i][pbTimeLeft] == 120)
{
SendPaintballArenaMessage(i, COLOR_YELLOW, "Two minutes left in this round!");
//SendPaintballArenaSound(i, 1057);
//SendPaintballArenaAudio(i, 3, 100);
}
if(PaintBallArena[i][pbTimeLeft] == 60)
{
SendPaintballArenaMessage(i, COLOR_YELLOW, "One minute left in this round!");
//SendPaintballArenaSound(i, 1057);
//SendPaintballArenaAudio(i, 2, 100);
}
if(PaintBallArena[i][pbTimeLeft] == 30)
{
SendPaintballArenaMessage(i, COLOR_YELLOW, "30 seconds left in this round!");
//SendPaintballArenaSound(i, 1057);
//SendPaintballArenaAudio(i, 6, 100);
}
if(PaintBallArena[i][pbTimeLeft] == 12)
{
SendPaintballArenaMessage(i, COLOR_RED, "Sudden death, 5 seconds left!");
//SendPaintballArenaSound(i, 1057);
//SendPaintballArenaAudio(i, 37, 100);
}
if(PaintBallArena[i][pbTimeLeft] == 7)
{
SendPaintballArenaMessage(i, COLOR_YELLOW, "Round Over!");
//SendPaintballArenaSound(i, 1057);
//SendPaintballArenaAudio(i, 20, 100);
}
if(PaintBallArena[i][pbTimeLeft] >= 1 && PaintBallArena[i][pbTimeLeft] <= 7)
{
foreach(Player, p)
{
new arenaid = GetPVarInt(p, "IsInArena");
if(arenaid == i)
{
TogglePlayerControllable(p, 0);
PaintballScoreboard(p, arenaid);
}
}
//SendPaintballArenaSound(i, 1057);
}
if(PaintBallArena[i][pbTimeLeft] <= 0)
{
new
winnerid = SortWinnerPaintballScores(i),
string[60 + MAX_PLAYER_NAME];
format(string, sizeof(string), "%s has won $%d from the Paintball Match, thanks for playing!",GetPlayerNameEx(winnerid),PaintBallArena[i][pbMoneyPool]);
GivePlayerMoney(winnerid,PaintBallArena[i][pbMoneyPool]);
SendPaintballArenaMessage(i, COLOR_YELLOW, string);
foreach(Player, p)
{
new arenaid = GetPVarInt(p, "IsInArena");
if(arenaid == i)
{
PaintballScoreboard(p, arenaid);
TogglePlayerControllable(p, 1);
}
}
foreach(Player, p)
{
new arenaid = GetPVarInt(p, "IsInArena");
if(arenaid == i)
{
LeavePaintballArena(p, arenaid);
}
}
ResetPaintballArena(i);
}
}
}
}
Re: Make this timer without using y_timers? Please help -
PaulDinam - 15.12.2015
Simply code this whole batch of code into a separate samp timer, if you don't know how to use regular timers then read it on samp wiki, it's easy.
pawn Код:
SetTimer("SecondTimer", 1000, true);
forward SecondTimer();
public SecondTimer()
{
  for(new i = 0; i < MAX_ARENAS; i++)
  {
    if(PaintBallArena[i][pbActive] == 1)
    {
      if(PaintBallArena[i][pbGameType] == 3)
      {
        if(PaintBallArena[i][pbFlagRedActive] == 1)
        {
          if(PaintBallArena[i][pbFlagRedActiveTime] <= 0)
          {
            ResetFlagPaintballArena(i,1);
            PaintBallArena[i][pbFlagRedActiveTime] = 0;
          }
          PaintBallArena[i][pbFlagRedActiveTime]--;
        }
        if(PaintBallArena[i][pbFlagBlueActive] == 1)
        {
          if(PaintBallArena[i][pbFlagBlueActiveTime] <= 0)
          {
            ResetFlagPaintballArena(i,2);
            PaintBallArena[i][pbFlagBlueActiveTime] = 0;
          }
          PaintBallArena[i][pbFlagBlueActiveTime]--;
        }
      }
      // Inactive Players Check
      if(PaintBallArena[i][pbPlayers] > 1)
      {
        PaintBallArena[i][pbTimeLeft]--;
      }
      if(PaintBallArena[i][pbTimeLeft] == 300-1)
      {
        SendPaintballArenaMessage(i, COLOR_YELLOW, "Five minutes left in this round!");
        //SendPaintballArenaSound(i, 1057);
        ////SendPaintballArenaAudio(i, 5, 100);
      }
      if(PaintBallArena[i][pbTimeLeft] == 180)
      {
        SendPaintballArenaMessage(i, COLOR_YELLOW, "Three minutes left in this round!");
        //SendPaintballArenaSound(i, 1057);
        ////SendPaintballArenaAudio(i, 4, 100);
      }
      if(PaintBallArena[i][pbTimeLeft] == 120)
      {
        SendPaintballArenaMessage(i, COLOR_YELLOW, "Two minutes left in this round!");
        //SendPaintballArenaSound(i, 1057);
        //SendPaintballArenaAudio(i, 3, 100);
      }
      if(PaintBallArena[i][pbTimeLeft] == 60)
      {
        SendPaintballArenaMessage(i, COLOR_YELLOW, "One minute left in this round!");
        //SendPaintballArenaSound(i, 1057);
        //SendPaintballArenaAudio(i, 2, 100);
      }
      if(PaintBallArena[i][pbTimeLeft] == 30)
      {
        SendPaintballArenaMessage(i, COLOR_YELLOW, "30 seconds left in this round!");
        //SendPaintballArenaSound(i, 1057);
        //SendPaintballArenaAudio(i, 6, 100);
      }
      if(PaintBallArena[i][pbTimeLeft] == 12)
      {
        SendPaintballArenaMessage(i, COLOR_RED, "Sudden death, 5 seconds left!");
        //SendPaintballArenaSound(i, 1057);
        //SendPaintballArenaAudio(i, 37, 100);
      }
      if(PaintBallArena[i][pbTimeLeft] == 7)
      {
        SendPaintballArenaMessage(i, COLOR_YELLOW, "Round Over!");
        //SendPaintballArenaSound(i, 1057);
        //SendPaintballArenaAudio(i, 20, 100);
      }
      if(PaintBallArena[i][pbTimeLeft] >= 1 && PaintBallArena[i][pbTimeLeft] <= 7)
      {
        foreach(Player, p)
        {
          new arenaid = GetPVarInt(p, "IsInArena");
          if(arenaid == i)
          {
            TogglePlayerControllable(p, 0);
            PaintballScoreboard(p, arenaid);
          }
        }
        //SendPaintballArenaSound(i, 1057);
      }
      if(PaintBallArena[i][pbTimeLeft] <= 0)
      {
        new
          winnerid = SortWinnerPaintballScores(i),
          string[60 + MAX_PLAYER_NAME];
        format(string, sizeof(string), "%s has won $%d from the Paintball Match, thanks for playing!",GetPlayerNameEx(winnerid),PaintBallArena[i][pbMoneyPool]);
        GivePlayerMoney(winnerid,PaintBallArena[i][pbMoneyPool]);
        SendPaintballArenaMessage(i, COLOR_YELLOW, string);
        foreach(Player, p)
        {
          new arenaid = GetPVarInt(p, "IsInArena");
          if(arenaid == i)
          {
            PaintballScoreboard(p, arenaid);
            TogglePlayerControllable(p, 1);
          }
        }
        foreach(Player, p)
        {
          new arenaid = GetPVarInt(p, "IsInArena");
          if(arenaid == i)
          {
            LeavePaintballArena(p, arenaid);
          }
        }
        ResetPaintballArena(i);
      }
    }
  }
  return 1;
}