Регенерация здоровья

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
Создаю ячейку и выбираю с помощью рандома.
PHP:
			case 3:
			{
				new Handle:datapack = INVALID_HANDLE;
				new Float:random_regen_timer = GetRandomFloat(1.0, 3.0);
				
				CreateDataTimer(random_regen_timer, RegenTimer, datapack, TIMER_REPEAT);
				PrintToChat(client, "Регенерация %dHP в %dс до %dHP.", regen_health, random_regen_timer, regen_maxhp);
				isRegenActive[client] = true;
				
				WritePackCell(datapack, client);
				ResetPack(datapack);
			}
Создаю таймер на регенерацию здоровья.
PHP:
public Action:RegenTimer(Handle:timer, any:serial)
{
	//new client = ReadPackCell(pack);
	new client = GetClientFromSerial(serial);
	
	if (client != 0)
	{
		new cHealth = GetClientHealth(client);
	
		regen_health = GetRandomInt(1, 5);
	
		if (isRegenActive[client] && client != 0)
		{
			SetEntityHealth(client, cHealth + regen_health);
		}
		else
		{
			return Plugin_Stop;
		}
	
		if (GetClientHealth(client) > regen_maxhp)
		{
			SetEntityHealth(client, regen_maxhp);
			return Plugin_Stop;
		}
	}
	
	return Plugin_Continue;
}
Проблема в том что, когда игроку попадается эта ячейка, ему пишет Регенерация 0 в 2.9999999с до 110HP, но регенерация не идет, только на 1-2 хп и потом останавливается.
 

FrozDark

Участник
Сообщения
1,769
Реакции
2,050
PHP:
			case 3:
			{
				new Handle:datapack = INVALID_HANDLE;
				new Float:random_regen_timer = GetRandomFloat(1.0, 3.0);
				
				CreateDataTimer(random_regen_timer, RegenTimer, datapack, TIMER_REPEAT);
				WritePackCell(datapack, GetClientSerial(client));
				PrintToChat(client, "Регенерация %dHP в %dс до %dHP.", regen_health, random_regen_timer, regen_maxhp);
				isRegenActive[client] = true;
			}
PHP:
public Action:RegenTimer(Handle:timer, any:dp)
{
	ResetPack(dp);
	new serial = ReadPackCell(dp);
	new client = GetClientFromSerial(serial);
	
	if (client > 0 && IsClientInGame(client) && IsPlayerAlive(client))
	{
		new cHealth = GetClientHealth(client);
	
		regen_health = GetRandomInt(1, 5);
	
		if (!isRegenActive[client])
		{
			return Plugin_Stop;
		}

		SetEntityHealth(client, cHealth + regen_health);
	
		if (GetClientHealth(client) > regen_maxhp)
		{
			SetEntityHealth(client, regen_maxhp);
			return Plugin_Stop;
		}
	}
	
	return Plugin_Continue;
}
 

Hejter

xor ebx, ebx
Сообщения
1,759
Реакции
393
PHP:
			case 3:
			{
				new Handle:datapack = INVALID_HANDLE;
				new Float:random_regen_timer = GetRandomFloat(1.0, 3.0);
				
				CreateDataTimer(random_regen_timer, RegenTimer, datapack, TIMER_REPEAT);
				WritePackCell(datapack, GetClientSerial(client));
				PrintToChat(client, "Регенерация %dHP в %dс до %dHP.", regen_health, random_regen_timer, regen_maxhp);
				isRegenActive[client] = true;
			}
PHP:
public Action:RegenTimer(Handle:timer, any:dp)
{
	ResetPack(dp);
	new serial = ReadPackCell(dp);
	new client = GetClientFromSerial(serial);
	
	if (client > 0 && IsClientInGame(client) && IsPlayerAlive(client))
	{
		new cHealth = GetClientHealth(client);
	
		regen_health = GetRandomInt(1, 5);
	
		if (!isRegenActive[client])
		{
			return Plugin_Stop;
		}

		SetEntityHealth(client, cHealth + regen_health);
	
		if (GetClientHealth(client) > regen_maxhp)
		{
			SetEntityHealth(client, regen_maxhp);
			return Plugin_Stop;
		}
	}
	
	return Plugin_Continue;
}

Благодарю.
 
Сверху Снизу