Узнать значения таймаре
«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 секунд можно использовать, бонус возрождение.