PDA

Просмотр полной версии : [Вопрос] KillTimer



Айболит
10.08.2014, 21:43
Добрый вечер, ув. форумчане п-п-р, простите что я задаю часто вопросы, я еще новичок, и многого не знаю... Дело в том что, таймер не выключается а срабатывает обратно через 10 секунд.. Как это можно исправить?

//Вызвал..

SetTimerEx("bolhp",1000*10,true,"i",playerid);

//Действие.

forward bolhp(playerid);
public bolhp(playerid)
{
new
Float: p_heal;
GetPlayerHealth(playerid, p_heal);
//SetPlayerHealth(playerid, p_heal - 10.0);
SetPlayerHealth(playerid, p_heal + 1.0);
new Float:health;
GetPlayerHealth(playerid,health);
if(health > 100.0)
{
new timerbolhp = SetTimerEx("bolhp",1000*10,true,"i",playerid);
KillTimer(timerbolhp); // Выключить таймер.
SM(playerid,0xFF9600FF,"Курс лечение пройдет");
}
return 1;
}

Salvacore
10.08.2014, 21:46
funcname[] Название вызываемой функции.
interval Время, через которая функция будет выполнена в миллисекундах.
repeating Будет ли функция повторятся.(true/false)
format[] Формат используемых параметров.
{Float,_}:... Список параметров.


Стоит true

L0ndl3m
10.08.2014, 21:49
true на false замените...

Salvacore
10.08.2014, 21:54
KillTimer дорогостоящая функция(Типа того)
ага.

Айболит
10.08.2014, 21:56
true на false замените...

Я хочу сделать так, повторяет, а если больше > 100 HP, то таймер убивается как бы.

а если я сделаю false то повторят не будет..

Salvacore
10.08.2014, 22:00
new
Float: p_heal;
GetPlayerHealth(playerid, p_heal);

new Float:health;
GetPlayerHealth(playerid,health);
Смысла не понял.

Айболит
10.08.2014, 22:01
new
Float: p_heal;
GetPlayerHealth(playerid, p_heal);

new Float:health;
GetPlayerHealth(playerid,health);
Смысла не понял.

SetPlayerHealth(playerid, p_heal + 1.0); // На эту строчку посмотрите...

L0ndl3m
10.08.2014, 22:16
Вызов таймера:

SetPVarInt(playerid, "bolhp_timer", SetTimerEx("bolhp", 1000 * 10, true, "i", playerid));

Паблик:


forward bolhp(playerid);
public bolhp(playerid)
{
new
Float: p_heal;


GetPlayerHealth(playerid, p_heal);

//SetPlayerHealth(playerid, p_heal - 10.0);
SetPlayerHealth(playerid, p_heal + 1.0);

if(p_heal > 99.0)
{
KillTimer(GetPVarInt(playerid, "bolhp_timer"));
SendClientMessage(playerid, 0xFF9600FF, "Курс лечения пройден.");
}
}

Salvacore
10.08.2014, 22:24
SetPlayerHealth(playerid, p_heal + 1.0); // На эту строчку посмотрите...
Это тебе надо было приглянуться.
Легче можно было сделать, и Londlem сделал.

Айболит
10.08.2014, 22:35
Вызов таймера:

SetPVarInt(playerid, "bolhp_timer", SetTimerEx("bolhp", 1000 * 10, true, "i", playerid));

Паблик:


forward bolhp(playerid);
public bolhp(playerid)
{
new
Float: p_heal;


GetPlayerHealth(playerid, p_heal);

//SetPlayerHealth(playerid, p_heal - 10.0);
SetPlayerHealth(playerid, p_heal + 1.0);

if(p_heal > 99.0)
{
KillTimer(GetPVarInt(playerid, "bolhp_timer"));
SendClientMessage(playerid, 0xFF9600FF, "Курс лечения пройден.");
}
}



Londlem. Спасибо вам, помогли мне очень, спасибо еще раз.

DeimoS
12.08.2014, 19:00
Любите же вы велосипеды изобретать, ребятки...
Вот мой вариант

SetTimerEx("bolhp", 1000 * 10, false, "i", playerid);


forward bolhp(playerid);
public bolhp(playerid)
{
new Float: p_heal;

GetPlayerHealth(playerid, p_heal);
SetPlayerHealth(playerid, p_heal + 1.0);

if(p_heal > 99.0) SendClientMessage(playerid, 0xFF9600FF, "Курс лечения пройден.");
else SetTimerEx("bolhp", 1000 * 10, false, "i", playerid);
return 1;
}
Без каких-либо левых переменных и прочего. Мыслите проще, господа