Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
Melnikov

Бесконечная стамина при ношении предмета NEW 06.02.2023

Рекомендованные сообщения

/* Прописываем в Init.c данный конфиг
		#include "$CurrentDir:mpmissions\"Папка Миссии"\Speedrun.c"
*/
ref SpeedrunTimer m_SpeedrunTimer = new SpeedrunTimer();

class SpeedrunTimer
{
	ref TStringArray	unlimitedStamina	= {
		//"ClassName предмета, с помощью которого будет бесканечная стамина"
	};
	
	ref TStringArray	gasMaskTimer	= {
		//"ClassName предмета, с помощью которого будет заторможенная стамина"
	};
	
	ref array<EntityAI>	objects = new array<EntityAI>;

    void SpeedrunTimer()
    {
		GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(this.SpeedTimer, 1 * 500, true)
    }

    void SpeedTimer()
    {
		//GetGame().GetServerFPS();
		//Print();
		
		int MASK_TIMER = 5000 * 2;
		
		ref array<Man> players = new array<Man>;
		GetGame().GetPlayers( players );
		for ( int i = 0; i < players.Count(); i++ )
		{
			PlayerBase player = PlayerBase.Cast(players.Get(i));
			
			if(!player.IsAlive())
				return; 

			int attachmentCount = player.GetInventory().AttachmentCount();
				
			for (int aItem = 0; aItem < attachmentCount; aItem++)
			{
				EntityAI attachment = player.GetInventory().GetAttachmentFromIndex(aItem);
				if (attachment.IsItemBase())
				{
					ItemBase item = ItemBase.Cast(attachment);
					if (unlimitedStamina.Find(item.GetType()) >= 0 )
					{
						player.GetStaminaHandler().SetStamina(100); 
					}	
					if (gasMaskTimer.Find(item.GetType()) >= 0 )
					{
					    float health_remove = 0;
					    int attachCount = item.GetInventory().AttachmentCount();
					    if (attachCount > 0) {
					        for ( int x = 0; x < attachCount; x++ )
                            {
                                ItemBase itemFilter = ItemBase.Cast( item.GetInventory().GetAttachmentFromIndex( x ) );
                                if (itemFilter.GetHealth("", "Health") > 0) {
                                    health_remove = itemFilter.GetMaxHealth()/MASK_TIMER;
                                    itemFilter.DecreaseHealth( "", "", health_remove );
                                    itemFilter.AddHealth("", "", -health_remove);
                                    itemFilter.SetQuantity(Math.Round(itemFilter.GetQuantityMax()*(itemFilter.GetHealth()))/(itemFilter.GetMaxHealth()));
                                }
                                else {
                                    player.AddHealth("", "Health", -0.1);
                                }
                            } 
					    }
					    else {
					        if (item.GetHealth("", "Health") > 0 ) {
                                health_remove = item.GetMaxHealth()/MASK_TIMER;
                                item.DecreaseHealth( "", "", health_remove );
                                item.AddHealth("", "", -health_remove);
                                item.SetQuantity(Math.Round(item.GetQuantityMax()*(item.GetHealth()))/(item.GetMaxHealth()));
					        }
                            else {
                                player.AddHealth("", "Health", -0.1);
                            }
					    }
					}	
				}
			}
		}
    }
}

Возможно есть ошибки, но у меня корректно работает на чистом серве... Приятного пользования!
мой диск: ᴍᴇʟɴɪᴋᴏᴠ#3249

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


Ссылка на сообщение
Поделиться на других сайтах





🤦‍♂️ это при каком онлайне работает корректно? Один, два? Запусти на сервере с 30+

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


Ссылка на сообщение
Поделиться на других сайтах
8 часов назад, Equadro сказал:

🤦‍♂️ это при каком онлайне работает корректно? Один, два? Запусти на сервере с 30+

Проверили на серваке, при онлайне 50+, работает, да не совсем корректно (Скорее всего серверный ФПС страдает, ибо 200/300 ну такое)...
Стамина нормально восстанавливается. В добавок, я указывал, что могут быть ошибки... я не указывал, что конфиг идеален.

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


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.