Question

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;
			}
			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
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev
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
keyl
Великий Гуру
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
sidoren.00@mail.ru
Новичок
40 минут назад, GLADE сказал:

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

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

 

Share this post


Link to post
  • 0
sidoren.00@mail.ru
Новичок

вот все что связанно с 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
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev

@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
Новичок
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
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev

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

Share this post


Link to post
  • 0
sidoren.00@mail.ru
Новичок
16 минут назад, GLADE сказал:

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

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

Edited by sidoren.00@mail.ru

Share this post


Link to post
  • 0
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev

@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
sidoren.00@mail.ru
Новичок
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
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev

@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
Новичок
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
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev

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

Edited by GLADE

Share this post


Link to post
  • 0
sidoren.00@mail.ru
Новичок
9 минут назад, GLADE сказал:

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

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

Edited by sidoren.00@mail.ru

Share this post


Link to post
  • 0
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev

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

Share this post


Link to post
  • 0
sidoren.00@mail.ru
Новичок

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

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

 

Edited by sidoren.00@mail.ru

Share this post


Link to post
  • 0
sidoren.00@mail.ru
Новичок
Только что, 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
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev
5 минут назад, sidoren.00@mail.ru сказал:

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

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


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

Share this post


Link to post
  • 0
sidoren.00@mail.ru
Новичок
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
𝙡𝙖𝙨𝙩 𝙚𝙢𝙥𝙚𝙧𝙤𝙧.
Создатель WayDev
Только что, sidoren.00@mail.ru сказал:

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


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

Share this post


Link to post
  • 0
sidoren.00@mail.ru
Новичок
Только что, 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

    • снайк
      By снайк
      Проект Meridian Project (CR:MP) выходит на стадию активного расширения. Мы серьезно обновили основу мода и теперь ищем талантливых разработчиков, готовых вместе с нами дополнять и улучшать игровой мир.
       
      Важное уточнение по условиям: На текущем этапе мы работаем на энтузиазме и долгосрочную перспективу. В данный момент все средства уходят на техническую разработку и поддержание серверной инфраструктуры, поэтому сразу оплачивать работу мы не сможем.
       
      Как только сервер будет успешно запущен и начнет функционировать в штатном режиме, мы перейдем на оплату труда. Со своей стороны гарантируем честность и различные «плюшки» на сервере для членов команды.
       
      Что мы предлагаем:
      Работа над структурированным и оптимизированным модом.
      Четкие ТЗ и адекватное руководство.
      Возможность стать частью ключевого состава на старте.
       
      Наши требования:
      Уверенное владение языком PAWN.
      Знание MySQL и основ оптимизации.
      Желание развивать качественный проект, а не просто «накидать код».
      Ответственность: взялись за задачу — довели до конца.
       
      Ваши задачи:
      Разработка и внедрение новых систем (работы, функционал фракций и др.).
      Исправление багов и доработка текущего функционала.
       
      Убедительная просьба: если вас не устраивают условия работы на перспективу или вам не интересен сам процесс создания качественного продукта — пожалуйста, не тратьте наше и своё время. Мы ищем единомышленников, которые готовы расти вместе с проектом, а не тех, кто ищет легкой и быстрой наживы здесь и сейчас.
       
      Связаться с нами: 
      Telegram: https://t.me/escape_log
      ВКонтакте: https://vk.com/oskar_novicc
    • tamikmod
      By tamikmod
      проблема на фото указана, прошу помочь