Просмотр полной версии : [Вопрос] KillTimer
Добрый вечер, ув. форумчане п-п-р, простите что я задаю часто вопросы, я еще новичок, и многого не знаю... Дело в том что, таймер не выключается а срабатывает обратно через 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
true на false замените...
Salvacore
10.08.2014, 21:54
KillTimer дорогостоящая функция(Типа того)
ага.
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);
Смысла не понял.
new
Float: p_heal;
GetPlayerHealth(playerid, p_heal);
new Float:health;
GetPlayerHealth(playerid,health);
Смысла не понял.
SetPlayerHealth(playerid, p_heal + 1.0); // На эту строчку посмотрите...
Вызов таймера:
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 сделал.
Вызов таймера:
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. Спасибо вам, помогли мне очень, спасибо еще раз.
Любите же вы велосипеды изобретать, ребятки...
Вот мой вариант
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;
}
Без каких-либо левых переменных и прочего. Мыслите проще, господа
Powered by vBulletin® Version 4.2.0 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot