Вопросы

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 процентов в чат должно вывести   " вы голодны "  но не работает ((

Отредактировано пользователем sidoren.00@mail.ru

Поделиться сообщением


Ссылка на сообщение

29 ответов на этот вопрос

  • 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, "вы голодны !");
	}
}

 

 

Отредактировано пользователем GLADE

Поделиться сообщением


Ссылка на сообщение
  • 0
if(PlayerInfo[i][pSatiety] <= 0) PlayerInfo[i][pSatiety] = 0;
else if(PlayerInfo[i][pSatiety] <= 1 || PlayerInfo[i][pSatiety] <= 15)

 Попробуй

Поделиться сообщением


Ссылка на сообщение
  • 0

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

Поделиться сообщением


Ссылка на сообщение
  • 0

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

Поделиться сообщением


Ссылка на сообщение
  • 0
40 минут назад, GLADE сказал:

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

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

 

Поделиться сообщением


Ссылка на сообщение
  • 0

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

Поделиться сообщением


Ссылка на сообщение
  • 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;
                                         конец

 

Поделиться сообщением


Ссылка на сообщение
  • 0

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

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

 

Поделиться сообщением


Ссылка на сообщение
  • 0
14 минут назад, GLADE сказал:

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


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

 

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

 

Поделиться сообщением


Ссылка на сообщение
  • 0

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

Поделиться сообщением


Ссылка на сообщение
  • 0
16 минут назад, GLADE сказал:

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

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

Отредактировано пользователем sidoren.00@mail.ru

Поделиться сообщением


Ссылка на сообщение
  • 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, "Вы проголодались! Сходите в закусочную!");
	}
}

 

Отредактировано пользователем GLADE
Причина: Немного заменил.

Поделиться сообщением


Ссылка на сообщение
  • 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, "Вы проголодались! Сходите в закусочную!");
	}
}

 

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

Поделиться сообщением


Ссылка на сообщение
  • 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, "Вы проголодались! Сходите в закусочную!");
}

 

Поделиться сообщением


Ссылка на сообщение
  • 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, "Вы проголодались! Сходите в закусочную!");
}

 

не приходит 

Поделиться сообщением


Ссылка на сообщение
  • 0

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

Отредактировано пользователем GLADE

Поделиться сообщением


Ссылка на сообщение
  • 0
9 минут назад, GLADE сказал:

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

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

Отредактировано пользователем sidoren.00@mail.ru

Поделиться сообщением


Ссылка на сообщение
  • 0

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

Поделиться сообщением


Ссылка на сообщение
  • 0

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

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

 

Отредактировано пользователем sidoren.00@mail.ru

Поделиться сообщением


Ссылка на сообщение
  • 0

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

 

Поделиться сообщением


Ссылка на сообщение
  • 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);
	}

 

Поделиться сообщением


Ссылка на сообщение
  • 0
5 минут назад, sidoren.00@mail.ru сказал:

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

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


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

Поделиться сообщением


Ссылка на сообщение
  • 0
3 минуты назад, GLADE сказал:


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

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

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

Отредактировано пользователем sidoren.00@mail.ru

Поделиться сообщением


Ссылка на сообщение
  • 0
Только что, sidoren.00@mail.ru сказал:

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


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

Поделиться сообщением


Ссылка на сообщение
  • 0
Только что, GLADE сказал:


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

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

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

 

 

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Артём Профиков
      От Артём Профиков
      У меня есть система подсказок вот так она выглядет
      ShowNotification(playerid, тип, "текст", время, "команда через /", "текст кнопки");
      Только есть вопрос как сделать так чтоб она активировалась в определенном радиусе? Заранее спасибо