Question

SetPVarInt(i, "SatietyTime", GetPVarInt(i, "SatietyTime") + 1);
		if(GetPVarInt(i, "SatietyTime") == 300)
		{
			SetPVarInt(i, "SatietyTime", 0);
			PlayerInfo[i][pSatiety]--;
			if(PlayerInfo[i][pSatiety] <= 0)
			{
				PlayerInfo[i][pSatiety] = 0;
			}
			if(PlayerInfo[i][pSatiety] == 1 || PlayerInfo[i][pSatiety] == 15)
			{
				new Float:h;
				GetPlayerHealth(i,h);
				SetHealth(i,h-1);
     			SendClientMessage(i, COLOR_GREEN,"вы голодны !");
			}
		}

когда допустим голод снижается до 15 процентов в чат должно вывести   " вы голодны "  но не работает ((

Edited by sidoren.00@mail.ru

Share this post


Link to post

29 answers to this question

  • 0
SetPVarInt(i, "SatietyTime", GetPVarInt(i, "SatietyTime") + 1);
if(GetPVarInt(i, "SatietyTime") == 300)
{
	SetPVarInt(i, "SatietyTime", 0);
	PlayerInfo[i][pSatiety]--;
	if(PlayerInfo[i][pSatiety] <= 0) PlayerInfo[i][pSatiety] = 0;
	if(PlayerInfo[i][pSatiety] <= 1 || PlayerInfo[i][pSatiety] <= 15)
	{
		new Float:h;
		GetPlayerHealth(i,h);
		SetHealth(i,h-1);
		SendClientMessage(i, COLOR_GREEN, "вы голодны !");
	}
}

 

 

Edited by GLADE

Share this post


Link to post
  • 0
if(PlayerInfo[i][pSatiety] <= 0) PlayerInfo[i][pSatiety] = 0;
else if(PlayerInfo[i][pSatiety] <= 1 || PlayerInfo[i][pSatiety] <= 15)

 Попробуй

Share this post


Link to post
  • 0

тоже самое не помогает 

Share this post


Link to post
  • 0

@sidoren.00@mail.ru, сытость вообще уменьшается?

Share this post


Link to post
  • 0
40 минут назад, GLADE сказал:

@sidoren.00@mail.ru, сытость вообще уменьшается?

да она уменьшается , но когда наступает 0 % не что не пишет ,  типа ты голоден , и не отнимает хп ну типа от голода 

 

Share this post


Link to post
  • 0

@sidoren.00@mail.ru, покажи мне как у тебя объявлена pSatiety.

Share this post


Link to post
  • 0

вот все что связанно с pSatiety

 


enum pInfo {
	pSatiety,
}



public OnPlayerUpdate(playerid)
{
	SetProgressBarValue(Satiety, PlayerInfo[playerid][pSatiety]);// голод сброс
	UpdateProgressBar(Satiety, playerid); // обнавления голод бара														
	return 1;
}


public OnPlayerSpawn(playerid)
}
	Satiety = CreateProgressBar(548.00, 35.00, 57.50, 6.19, 3407871, 100.0);
	SetProgressBarValue(Satiety, PlayerInfo[playerid][pSatiety]);
	UpdateProgressBar(Satiety, playerid);
}

CMD:setsatiety(playerid, params[])
{
	if(PlayerLogged[playerid] == 0) return true;
	if(PlayerInfo[playerid][pAdmin] < 4 || AdminLogged[playerid] == false) return true;
	if(PlayerInfo[playerid][pAdminLogin] == 0) return SendClientMessage(playerid, CGREEN, YouCanNotAdminLogin);
	if(sscanf(params, "ud", params[0],params[1])) return SendClientMessage(playerid, CGREEN, "Введите: /setsatiety [id игрока] [кол-во сытости]");
	if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, CGREEN, TPLAYEROFFLINE);
	if(PlayerLogged[params[0]] == 0) return SendClientMessage(playerid, CGREEN, TPLAYERNLOGGED);
	if(params[1] > 10000 || params[1] < 0) return SendClientMessage(playerid, CGREEN, "Кол-во сытости от 0 до 100!");
	PlayerInfo[params[0]][pSatiety] = params[1];

	SendMes(playerid, COLOR_WHITE, "Вы установили сытость игроку: {00FF00}%s", sendername(params[0]));
	return true;
}
                                          
stock PlayerTimer()
{
	new string[128];
	foreach(new i:Player)
	{
      	SetPVarInt(i, "SatietyTime", GetPVarInt(i, "SatietyTime") + 1);
		if(GetPVarInt(i, "SatietyTime") == 300)
		{
			SetPVarInt(i, "SatietyTime", 0);
			PlayerInfo[i][pSatiety]--;
			if(PlayerInfo[i][pSatiety] <= 0) PlayerInfo[i][pSatiety] = 0;
			if(PlayerInfo[i][pSatiety] <= 1 || PlayerInfo[i][pSatiety] <= 15)
			{
				new Float:h;
				GetPlayerHealth(i,h);
				SetHealth(i,h-1);
				SendClientMessage(i, COLOR_GREEN, "Вы проголодались! Сходите в закусочную!");
			}
		}
		SetPVarInt(i, "HealthTime", GetPVarInt(i, "HealthTime") + 1);
		if(GetPVarInt(i, "HealthTime") == 60)
		{
			SetPVarInt(i, "HealthTime", 0);
			if(PlayerInfo[i][pSatiety] <= 0)
			{
				GetPlayerHealth(i,shealth);
				SetHealth(i,shealth-2.000);
			}
		}
stock LoadAccount(playerid)
 }
	PlayerInfo[playerid][pSatiety],
 }
 stock SaveAccount(playerid)
 {
 	format(src,sizeof(src),"satiety='%i',",PlayerInfo[playerid][pSatiety]);
	strcat(query,src,sizeof(query));
 }
 stock ResetStats(playerid)
	{
    PlayerInfo[playerid][pSatiety] = 0;
                                         конец

 

Share this post


Link to post
  • 0

@sidoren.00@mail.ru, устанавливай себе голод от 0 до 15 и через тестовую команду проверяй условие.
 

CMD:tests(playerid) {
	if(PlayerInfo[playerid][pSatiety] <= 15) SendClientMessage(playerid, COLOR_GREY, "* Вы проголодались"); 
	return 1;
}

 

Share this post


Link to post
  • 0
14 минут назад, GLADE сказал:

@sidoren.00@mail.ru, устанавливай себе голод от 0 до 15 и через тестовую команду проверяй условие.
 


CMD:tests(playerid) {
	if(PlayerInfo[playerid][pSatiety] <= 15) SendClientMessage(playerid, COLOR_GREY, "* Вы проголодались"); 
	return 1;
}

 

что должно произойти ?

 

Share this post


Link to post
  • 0

@sidoren.00@mail.ru, если переменная pSatiety меньше либо равна 15, ты вылезет сообщение "* Вы проголодались". Тем самым мы проверяем условия, которые используем в таймере.

Share this post


Link to post
  • 0
16 минут назад, GLADE сказал:

@sidoren.00@mail.ru, если переменная pSatiety меньше либо равна 15, ты вылезет сообщение "* Вы проголодались". Тем самым мы проверяем условия, которые используем в таймере.

а когда я через команду выдаю setsatiety - и пытаюсь снять через тестовую не чего не происходит 

Edited by sidoren.00@mail.ru

Share this post


Link to post
  • 0

@sidoren.00@mail.ru, попробуй заменить на это:

SetPVarInt(i, "SatietyTime", GetPVarInt(i, "SatietyTime") + 1);
if(GetPVarInt(i, "SatietyTime") == 300)
{
	SetPVarInt(i, "SatietyTime", 0);
	if(PlayerInfo[i][pSatiety] != 0) PlayerInfo[i][pSatiety]--;
	if(PlayerInfo[i][pSatiety] <= 15)
	{
		new Float:h;
		GetPlayerHealth(i,h);
		SetHealth(i,h-1);
		SendClientMessage(i, COLOR_GREEN, "Вы проголодались! Сходите в закусочную!");
	}
}

 

Edited by GLADE
Причина: Немного заменил.

Share this post


Link to post
  • 0
7 минут назад, GLADE сказал:

@sidoren.00@mail.ru, попробуй заменить на это:


SetPVarInt(i, "SatietyTime", GetPVarInt(i, "SatietyTime") + 1);
if(GetPVarInt(i, "SatietyTime") == 300)
{
	SetPVarInt(i, "SatietyTime", 0);
	PlayerInfo[i][pSatiety]--;
	if(PlayerInfo[i][pSatiety] <= 0) PlayerInfo[i][pSatiety] = 0;
	else if(PlayerInfo[i][pSatiety] <= 15)
	{
		new Float:h;
		GetPlayerHealth(i,h);
		SetHealth(i,h-1);
		SendClientMessage(i, COLOR_GREEN, "Вы проголодались! Сходите в закусочную!");
	}
}

 

не чего не происходит 

Share this post


Link to post
  • 0

@sidoren.00@mail.ru, если не выводит сообщение, значит не проходит условие. Попробуй так, чтобы удостовериться, что условие не проходит.

SetPVarInt(i, "SatietyTime", GetPVarInt(i, "SatietyTime") + 1);
if(GetPVarInt(i, "SatietyTime") == 300)
{
	SetPVarInt(i, "SatietyTime", 0);
	if(PlayerInfo[i][pSatiety] != 0) PlayerInfo[i][pSatiety]--;
	if(PlayerInfo[i][pSatiety] <= 15) SendClientMessage(i, COLOR_GREEN, "Вы проголодались! Сходите в закусочную!");
}

 

Share this post


Link to post
  • 0
3 минуты назад, GLADE сказал:

@sidoren.00@mail.ru, если не выводит сообщение, значит не проходит условие. Попробуй так, чтобы удостовериться, что условие не проходит.


SetPVarInt(i, "SatietyTime", GetPVarInt(i, "SatietyTime") + 1);
if(GetPVarInt(i, "SatietyTime") == 300)
{
	SetPVarInt(i, "SatietyTime", 0);
	if(PlayerInfo[i][pSatiety] != 0) PlayerInfo[i][pSatiety]--;
	if(PlayerInfo[i][pSatiety] <= 15) SendClientMessage(i, COLOR_GREEN, "Вы проголодались! Сходите в закусочную!");
}

 

не приходит 

Share this post


Link to post
  • 0

@sidoren.00@mail.ru, тобишь, Вы изменяете сытость через /setsatiety и сообщение не приходит? У Вас условие, если GetPVarInt будет равен 5 минутам, то сообщение должно прийти. Попробуйте изменить на 15 и подождать 5 минут.

Edited by GLADE

Share this post


Link to post
  • 0
9 минут назад, GLADE сказал:

@sidoren.00@mail.ru, тобишь, Вы изменяете сытость через /setsatiety и сообщение не приходит? У Вас условие, если GetPVarInt будет равен 5 минутам, то сообщение должно прийти. Попробуйте изменить на 15 и подождать 5 минут.

теперь сытость не отнимается 

Edited by sidoren.00@mail.ru

Share this post


Link to post
  • 0

@sidoren.00@mail.ru, у Вас оба условия не проходят. Впервые с таким сталкиваюсь.

Share this post


Link to post
  • 0

у меня еще есть вариант

, но там он мне бесконечно спамит вы голодны , после того как я сброшу голод до 15 

 

Edited by sidoren.00@mail.ru

Share this post


Link to post
  • 0

@sidoren.00@mail.ru, скиньте сюда этот вариант.

 

Share this post


Link to post
  • 0
Только что, GLADE сказал:

@sidoren.00@mail.ru, скиньте сюда этот вариант.

 

вот там я использовал таймер а тут 

public OnPlayerUpdate(playerid)
{
	if(PlayerInfo[playerid][pSatiety] > 100)
	{
		PlayerInfo[playerid][pSatiety] = 100;
	}
	else if(PlayerInfo[playerid][pSatiety] == 0)
	{
  		new Float:health;
 		GetPlayerHealth(playerid, health);
		PlayerInfo[playerid][pSatiety] = -1;
	  	SendClientMessage(playerid,COLOR_RED,"Вы проголодались! Сходите в закусочную!");
	  	return true;
	}

public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid)

	PlayerInfo[playerid][pSatiety] -=1;
	new Float:health;
	if(PlayerInfo[playerid][pSatiety] <= 50)
	{
		GetPlayerHealth(playerid, health);
		SetPlayerHealth(playerid, health - 1.0);
	}
	if(PlayerInfo[playerid][pSatiety] <= 30)
	{
		GetPlayerHealth(playerid, health);
		SetPlayerHealth(playerid, health - 1.0);
	}

 

Share this post


Link to post
  • 0
5 минут назад, sidoren.00@mail.ru сказал:

у меня еще есть вариант

, но там он мне бесконечно спамит вы голодны


В этом варианте спамит постоянно?

Share this post


Link to post
  • 0
3 минуты назад, GLADE сказал:


В этом варианте спамит постоянно?

нет  он начинает спамить после того как  моя сытось упадет до 15 ,но я понял как он работает , то есть 

else if(PlayerInfo[playerid][pSatiety] == 0) // если сделаю < 0 ) 
	{
  		new Float:health;
 		GetPlayerHealth(playerid, health);
		PlayerInfo[playerid][pSatiety] = -1; // тот я не могу поставить 0 иначе начтет спамить , вы голоды 

Edited by sidoren.00@mail.ru

Share this post


Link to post
  • 0
Только что, sidoren.00@mail.ru сказал:

он начинает спамить после того как  моя сытось упадет до 15


Вы тот таймер убрали?

Share this post


Link to post
  • 0
Только что, GLADE сказал:


Вы тот таймер убрали?

нет , но щас попробую без него , хочешь сказать конфликтит 

PlayerInfo[playerid][pSatiety] = -1;
else if(PlayerInfo[playerid][pSatiety] == 0) с теми 

 

 

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • Nik_Rofid
      By Nik_Rofid
      Здравствуйте, можно ли на сервере копии радмира сделать так, что бы на машину можно было установить конкретный номер например ставится на машу рандом номер а будет х777хх77