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

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

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

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

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

Как получить предмет на земле

Всем привет , Как получить предмет на земле и его температуру? , или хотя бы сам предмет , я могу получить предмет в инвентаре и в руках , но как получить именно на земле найти не могу

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


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

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

  • 0

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

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


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

Хочу написать скрипт , чтоб предмет если имеет температуру , начинал остывать находясь , не в инвентаре и не в руках , на земле 

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


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

При выкидывании предмета на землю , я начинаю следить за температурой предмета , а установить температуру предмета не получается , функция срабатывает , начинается остывание , но сам предмет не остывает , отслеживаю через чат 

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


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

Ну так если вы его скидываете, вы уже знаете сам предмет. Т.е. как объект его уже идентифицировали отдельно и можете с ним работать. Сути проблемы тогда не понимаю.
Температуру объекта как в инвентаре персонажа, так и вне инвентаря можно редактировать, персонаж на это прямо не влияет никак. Вам лишь надо саму функцию остывания написать для этого предмета.

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


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

Я не вытаскиваю предмет на прямую , я изменил класс itembase , чтоб ко всем предметам относилось , я проверяю если у предмета температура больше 20 , запускаю остывание но не срабатывает предмет не остывает 

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


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

Аааа, тогда сканировать надо предметы в близости от точки по радиусу, скажем, в метр, и из полученного массива уже выбирать нужное. Например так:

array<Object> ScanInMapObjectsAtPositionInRadius(vector pos, int radius)
	{
		private array<Object> nearest_objects = new array<Object>;
		private array<CargoBase> proxy_cargos = new array<CargoBase>;
		private Object object;	
		private array<Object> Massive_searched_objects = new array<Object>;
		
		GetGame().GetObjectsAtPosition(pos, radius, nearest_objects, proxy_cargos); 
		proxy_cargos.Clear(); Massive_searched_objects.Clear();
		for ( int i = 0; i < nearest_objects.Count(); i++ )
		{
			object = nearest_objects.Get(i);
			if ( object.IsItem())
			{
				Massive_searched_objects.Insert(object);
			}
		}
		nearest_objects.Clear(); proxy_cargos.Clear(); object = NULL; 
		return Massive_searched_objects;
	}

Не уверен в правильности функции IsItem, но смысл примерно такой

Изменено пользователем 123new (история изменений)

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


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

Ага спасибо , посмотрю как буду дома , отпишусь

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
06.05.2020 в 10:01, Dmitriy сказал:

Хочу написать скрипт , чтоб предмет если имеет температуру , начинал остывать находясь , не в инвентаре и не в руках , на земле 

 

Ну как бы в помощь - в классе ItemBase есть функция
 

override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc)


В ней можно отследить что предмет поменял свое положение и попал на землю
 

if (oldLoc.GetType() == InventoryLocationType.GROUND)
{

 предмет сбросили на землю

}

Ну а используя

 

AddTemperature(-1);

Можнол плавно понижать температуру

Например  запустив таймер в EEItemLocationChanged
И что бы не напрягать двиг, сделать его срабатывающим раз, ну скажем в 10 секунд

Если интересно выложу готовое решение чуть позже, в простом варианте



 

Изменено пользователем BorizzK (история изменений)

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


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

Да было б интересно ознакомится , я через setTemperature(-3) пытался изменить 

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


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

Просто в качеств примера

 

Чуть позже будет гайд в скриптах

 

modded class ItemBase extends InventoryItem
{
	ref Timer m_TemperatureDecrease;

	override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc)
	{
		super.EEItemLocationChanged(oldLoc,newLoc);
		
		if (oldLoc.GetType() == InventoryLocationType.ATTACHMENT)
		{
			if (GetTemperature() > 20)
			{
				m_TemperatureDecrease = new Timer( CALL_CATEGORY_SYSTEM );
				m_TemperatureDecrease.Run(10, this, "DecreaseTemperature", NULL, true);
			}
		}
	}

	void DecreaseTemperature()
	{
		if (GetTemperature() > GetTemperatureInit())
		{
			AddTemperature(-1);
		}
		else
		{
			m_TemperatureDecrease.Stop();
			m_TemperatureDecrease = NULL;
		}
	}
}

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

Изменено пользователем BorizzK (история изменений)

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


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

Да хороший пример , спасибо большое

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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

Поддержка