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

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

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

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

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

Деспавн машин вне радиуса игрока

Всем привет! Есть проблема суть такова (с) ?

 

Есть серверный мод, его задача - в процессе игры создать некие игровые объекты, немного ими поманипулировать и удалить. Всё идёт хорошо, пока дело не касается машин. Почему-то они исчезают, если находятся вне радиуса вокруг игрока. Причём только машины, со статичными объектами никаких проблем нет.
Т.е. создаётся два объекта, к примеру "Land_Container_1Mo" и "OffroadHatchback", оба абсолютно одинаковым способом, оба заносятся в массив внутри класса, если игрок всё время находится рядом с ними, то всё хорошо, скрипт их спавнит и деспавнит в нужные моменты без проблем. Если от этих двух объектов отойти подальше, по возвращении вижу только контейнер, а машина исчезает.

В качестве эксперимента пробовал выставить так машины в ряд, висеть над ними камерой и потихоньку телепортировать игрока дальше и дальше, начинают исчезать самые дальние в ряду. Такое ощущение, что раз в сколько-то секунд проходит некий сборщик мусора и удаляет машину, если в радиусе нет игроков.

Собственно, вопрос, как сообщить сборщику, что машины трогать не надо?

 

P.S. Ещё догадка, вся работа происходит на уровне 4_World, может поэтому нормально работают статичные объекты, а динамические не цепляются к Mission?

 

ref SomeWorkingClass GlobalSomeWorkingClass = new ref SomeWorkingClass; // Висит в игре постоянно

class SomeWorkingClass {
	ref array<Object> SpawnedObjects = new array<Object>;
	//array<SomeOtherClass> CarList ... - список машин с координатами и аттачами
	
	void SpawnCarObjects() {
		for (int i=0;i<CarList.Count();i++) {
	
			Object CarObject = GetGame().CreateObjectEx(CarList[i].ObjType,CarList[i].Pos, ECE_PLACE_ON_SURFACE); // Создание
			CarObject.SetOrientation(CarList[i].Rot); // Поворот
			
			...
			
			if (CarObject.CanAffectPathgraph()) {
				CarObject.SetAffectPathgraph(true, false);
				GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(GetGame().UpdatePathgraphRegionByObject, 100, false, CarObject);
			}

			...
				
			SpawnedObjects.Insert(CarObject); // В массив для дальнейшей работы
		}
	}
}

 

Второй вопрос глупый, но маленький, так что задам тут же) Как заставить заспавненный RoadFlare загореться? Пробовал с дымовыми гранатами, там срабатывает SmokeGrenadeBase.Unpin() и он сразу пускает дым. А фальшвейеры, если правильно понимаю, не граната, а некий используемый элемент, какую функцию какого класса нужно дёрнуть?

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

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


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

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

  • 0

Некорректно выбрал раздел, вместо "помощи" запихнул в "скриптинг", администраторы перенесите, пожалуйста

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


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

Проблема решена. Оказалось, всё упиралось в lifetime объекта в types.xml

Поставил рекомендуемое значение - ничего не удаляется

 

<lifetime>2592000</lifetime>

 

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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

Поддержка