Узнать  значения таймаре 
				  
«SeReGa»☆ 
 
 
Дата: Понедельник, 23.06.2014, 14:42:19 | Сообщение # 1   
  
 
Сообщений: 395
 
Репутация: 37  [ +/-  ]
 
 
Здравствуйте при создании 1 таймера на x секунд, я создаю повторяющийся таймер на 1 секунду для того чтобы отследить таймер под номером 1   как отследить таймер под номером 1   пример   Код
     new Handle:g_hTimers[MAXPLAYERS+1];     new Handle:g_FTimerFun[MAXPLAYERS+1] = {INVALID_HANDLE,...};   g_hTimers[client] = CreateTimer(x, Timer_f, client, TIMER_FLAG_NO_MAPCHANGE);//Создаю таймер на x секунд (если что x больше чем 1 секунда)   g_FTimerFun[client] = CreateTimer(1.0,Timer_Fun,client,TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);//Тут создаю повторяющийся таймер на 1 с   public Action:Timer_Fun(Handle:timer,any:client)   {      if(g_hTimers[client] != INVALID_HANDLE)      {       if(g_FTimerFun[client]==INVALID_HANDLE)       {        KillTimer(g_FTimerFun[client]);                 g_FTimerFun[client]=INVALID_HANDLE;       }       else          {        PrintHintText(client,"До окончания таймера  %f секунд",g_hTimers[client]);        return Plugin_Continue;       }      }      g_FTimerFun[client]=INVALID_HANDLE;         return Plugin_Stop;   }   public Action:Timer_f(Handle:hTimer, any:client)   {             PrintToChat(client,"таймер закончился");      g_hTimers[client] = INVALID_HANDLE;              return Plugin_Stop;   }
    ничего не получается.((  
Сообщение отредактировал «SeReGa»☆  - Понедельник, 23.06.2014, 14:43:43 
 
 
  
 
horr0r 
 
 
Дата: Понедельник, 23.06.2014, 18:14:25 | Сообщение # 2   
  
 
Сообщений: 149
 
Репутация: 40  [ +/-  ]
 
 
Лучше сделай один таймер для отсчета.   Код
   new timercount[MAXPLAYERS+1]; //ко всем переменным   timercount[client] = 30; //кол-во секунд   g_FTimerFun[client] = CreateTimer(1.0,Timer_Fun,client,TIMER_REPEAT|TIMER_FLAG_NO_MAPCHANGE);//Тут создаю повторяющийся таймер на 1 с      public Action:Timer_Fun(Handle:timer,any:client)      {      if(timercount[client] <= 0) return KillTimer(g_FTimerFun[client]);      timercount[client]--;      PrintHintText(client,"До окончания таймера %i секунд",timercount[client]);         return Plugin_Stop;      }   
  
Сообщение отредактировал horr0r  - Понедельник, 23.06.2014, 18:19:46 
 
 
  
 
«SeReGa»☆ 
 
 
Дата: Четверг, 26.06.2014, 16:22:36 | Сообщение # 3   
  
 
Сообщений: 395
 
Репутация: 37  [ +/-  ]
 
 
Исправте пожалуйста)   Код
#include <sourcemod>   new timercount[MAXPLAYERS+1]; //ко всем переменным    new Handle:g_FTimerFun[MAXPLAYERS+1];    public OnPluginStart()   {    RegConsoleCmd("test",T);   }   public Action:T(client, args)   {    if (client > 0 && args < 1)    {     TSrart(client);    }    return Plugin_Handled;   }   TSrart(client)   {    new Float:x=10.5;    timercount[client] = x; //кол-во секунд/////ERROR: warning 213: tag mismatch    g_FTimerFun[client] = CreateTimer(1.0, Timer_Fun, client, TIMER_REPEAT);//Тут создаю повторяющийся таймер на 1 с    }   public Action:Timer_Fun(Handle:timer,any:client)       {     if(timercount[client] <= 0)    {     return KillTimer(g_FTimerFun[client]);/////ERROR: warning 213: tag mismatch    }    timercount[client]--;     PrintHintText(client,"До окончания таймера %i секунд",timercount[client]);       return Plugin_Stop;       } 
Добавлено  (26.06.2014, 16:22:36) --------------------------------------------- и кол-во секунд у меня состоит с Float.   как быть??
  
 
 
  
 
Darkeneez 
 
 
Дата: Четверг, 26.06.2014, 16:42:01 | Сообщение # 4   
  
 
Сообщений: 221
 
Репутация: 18  [ +/-  ]
 
 
new Float: timercount[MAXPLAYERS+1]; //ко всем переменным 
Сообщение отредактировал Darkeneez  - Четверг, 26.06.2014, 16:42:09 
 
 
  
 
«SeReGa»☆ 
 
 
Дата: Четверг, 26.06.2014, 17:55:11 | Сообщение # 5   
  
 
Сообщений: 395
 
Репутация: 37  [ +/-  ]
 
 
Поправьте пожалуйсто если есть что   Код
#include <sourcemod>   new Float:timercount[MAXPLAYERS+1]; //ко всем переменным   new Handle:g_FTimerFun[MAXPLAYERS+1] = {INVALID_HANDLE,...};    public OnPluginStart()   {    RegConsoleCmd("test",T);   }   public Action:T(client, args)   {    if (client > 0 && args < 1)    {     TSrart(client);    }    return Plugin_Handled;   }   TSrart(client)   {    if(g_FTimerFun[client]!=INVALID_HANDLE)       {     KillTimer(g_FTimerFun[client]);     g_FTimerFun[client]=INVALID_HANDLE;    }    new x = GetRandomInt(1,4);    switch (x)//кол-во секунд    {     case 1:     {      timercount[client] = 5.0;     }     case 2:     {      timercount[client] = 10.0;     }     case 3:     {      timercount[client] = 15.0;     }     case 4:     {      timercount[client] = 10.5;     }    }    g_FTimerFun[client] = CreateTimer(1.0, Timer_Fun, client, TIMER_REPEAT);//Тут создаю повторяющийся таймер на 1 с    }   public OnClientDisconnect(client)   {    if(g_FTimerFun[client]!=INVALID_HANDLE)    {     KillTimer(g_FTimerFun[client]);     g_FTimerFun[client]=INVALID_HANDLE;    }   }   public Action:Timer_Fun(Handle:timer,any:client)       {     if(timercount[client] <= 0)    {     KillTimer(g_FTimerFun[client]);     g_FTimerFun[client]=INVALID_HANDLE;     PrintToChatAll("Timer is stopped.")     PrintHintText(client,"Таймер закончился");     return Plugin_Stop;    }    else    {     timercount[client]--;      PrintHintText(client,"До окончания таймера %f секунд",timercount[client]);         return Plugin_Continue;    }     } 
    и ещё вопрос   всегда пишет До окончания таймера 4.000000 секунд    как сделать чтоб писало До окончания таймера 4.00 секунд   
 
 
  
 
BarD 
 
 
Дата: Четверг, 26.06.2014, 18:40:24 | Сообщение # 6   
  
 
Сообщений: 943
 
Репутация: 137  [ +/-  ]
 
 
Код
PrintHintText(client, "До окончания таймера %0.1f секунд", timercount[client]);
 
Сообщение отредактировал BarD  - Четверг, 26.06.2014, 18:40:53 
 
 
  
 
«SeReGa»☆ 
 
 
Дата: Четверг, 26.06.2014, 19:01:59 | Сообщение # 7   
  
 
Сообщений: 395
 
Репутация: 37  [ +/-  ]
 
 
Благодарю) 
 
 
  
 
horr0r 
 
 
Дата: Четверг, 26.06.2014, 19:25:54 | Сообщение # 8   
  
 
Сообщений: 149
 
Репутация: 40  [ +/-  ]
 
 
Darkeneez , а это зачем?
 
 
  
 
Darkeneez 
 
 
Дата: Пятница, 27.06.2014, 05:25:44 | Сообщение # 9   
  
 
Сообщений: 221
 
Репутация: 18  [ +/-  ]
 
 
Цитата  horr0r  (
)
Darkeneez, а это зачем?
    Он к этой переменной присваивал значение float, у него выдавало ошибку 213   Цитата  «SeReGa»☆  (
)
Исправте пожалуйста) 
 Код  
Код
#include <sourcemod>    new timercount[MAXPLAYERS+1]; //ко всем переменным     new Handle:g_FTimerFun[MAXPLAYERS+1];     public OnPluginStart()    {      RegConsoleCmd("test",T);    }    public Action:T(client, args)    {      if (client > 0 && args < 1)      {       TSrart(client);      }      return Plugin_Handled;    }    TSrart(client)    {      new Float:x=10.5;      timercount[client] = x; //кол-во секунд/////ERROR: warning 213: tag mismatch      g_FTimerFun[client] = CreateTimer(1.0, Timer_Fun, client, TIMER_REPEAT);//Тут создаю повторяющийся таймер на 1 с     } 
    
 
 
  
 
horr0r 
 
 
Дата: Суббота, 28.06.2014, 08:30:31 | Сообщение # 10   
  
 
Сообщений: 149
 
Репутация: 40  [ +/-  ]
 
 
Darkeneez, дак зачем ты ставишь тип флот у этой переменной?    У меня все правильно было, я проверял, не обязательно это делать. Если только ты хочешь сделать интервал меньше одной секунды.   Просто он немного неправильно воспользовался).   Вот код: Код
   #include <sourcemod>    new timercount[MAXPLAYERS+1]; //ко всем переменным    new Handle:g_FTimerFun[MAXPLAYERS+1];    public OnPluginStart()    {     RegConsoleCmd("test",T);    }    public Action:T(client, args)    {     if (client > 0 && args < 1)     {       TSrart(client);     }     return Plugin_Handled;    }    TSrart(client)   {     timercount[client] = 30;    g_FTimerFun[client] = CreateTimer(1.0, Timer_Fun, client, TIMER_REPEAT);//Тут создаю повторяющийся таймер на 1 с    }    public Action:Timer_Fun(Handle:timer,any:client)     {     if(timercount[client] <= 0) return KillTimer(g_FTimerFun[client]);    timercount[client]--;     PrintHintText(client,"До окончания таймера %i секунд",timercount[client]);     return Plugin_Stop;   }
  
Сообщение отредактировал horr0r  - Суббота, 28.06.2014, 08:35:05 
 
 
  
 
«SeReGa»☆ 
 
 
Дата: Суббота, 28.06.2014, 21:05:33 | Сообщение # 11   
  
 
Сообщений: 395
 
Репутация: 37  [ +/-  ]
 
 
Код
#include <sourcemod>       new timercount[MAXPLAYERS+1]; //ко всем переменным       new Handle:g_FTimerFun[MAXPLAYERS+1];       public OnPluginStart()       {           RegConsoleCmd("test",T);       }       public Action:T(client, args)       {           if (client > 0 && args < 1)           {             TSrart(client);           }           return Plugin_Handled;       }       TSrart(client)      {           timercount[client] = 9.5;          g_FTimerFun[client] = CreateTimer(1.0, Timer_Fun, client, TIMER_REPEAT);//Тут создаю повторяющийся таймер на 1 с       }       public Action:Timer_Fun(Handle:timer,any:client)        {           if(timercount[client] <= 0) return KillTimer(g_FTimerFun[client]);          timercount[client]--;           PrintHintText(client,"До окончания таймера %i секунд",timercount[client]);           return Plugin_Stop;      }
    B.sp(22) : warning 213: tag mismatch   B.sp(28) : warning 213: tag mismatch   Размер заголовка: 1956 байт   Размер кода: 2280 байт   Размер данных: 1752 байт   Стек/Размер кучи: 16384 байт; Всего требования: 22372 байт   Наверное я неправильно компилирую  
Сообщение отредактировал «SeReGa»☆  - Суббота, 28.06.2014, 21:09:08 
 
 
  
 
horr0r 
 
 
Дата: Суббота, 28.06.2014, 21:32:36 | Сообщение # 12   
  
 
Сообщений: 149
 
Репутация: 40  [ +/-  ]
 
 
«SeReGa»☆ , все ты правильно компилируешь, просто ты используешь нецелое число. Код
   timercount[client] = 9.5;    
 
 
 
  
 
«SeReGa»☆ 
 
 
Дата: Воскресенье, 29.06.2014, 04:13:55 | Сообщение # 13   
  
 
Сообщений: 395
 
Репутация: 37  [ +/-  ]
 
 
Вот потому и   
Цитата  Darkeneez  (
)
new Float:timercount[MAXPLAYERS+1]; //ко всем переменным
  
 
 
  
 
PlaN4ik 
 
 
Дата: Воскресенье, 06.07.2014, 19:18:51 | Сообщение # 14   
  
 
Сообщений: 33
 
Репутация: -7  [ +/-  ]
 
 
Если не трудно подскажите как сделать сохранение данных таймера в sql ? Чтобы игрок после перезахода опять его не использовал, хотелось бы попробовать на мг респавн сделать. 1 раз в %d секунд можно использовать, бонус возрождение.