Перейти к содержимому


Фотография

nearEntities на выделенном сервере


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 3

#1 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 16 November 2014 - 20:16

Либо я делаю что то не так, либо я чего то не понимаю, либо что то действительно не так.

 

Кусок кода, который предназначен крутиться на сервере

	//	Очистка
	_buildings	= ptm_objectsInBuildingSpawner_buildingsActivated;
	
	for "_i" from 0 to (count ptm_objectsInBuildingSpawner_buildingsActivated) - 1 do {
	
		_building	= ptm_objectsInBuildingSpawner_buildingsActivated select _i;
		
		if ((_building getVariable ["SpawnConveyorState", "idle"]) == "idle") then {
		
			_entities	= (position _building) nearEntities [["Man", "Car"], _cleenUpRadius];
			_isOk		= true;
		
			for "_k" from 0 to (count _units) - 1 do {		
				if (vehicle (_units select _k) in _entities) exitWith {_isOk = false};		
			};
		
			if (_isOk) then {
			
				_objects	= _building getVariable ["ptm_objectsInBuilding_objects", []];
			
				for "_j" from 0 to (count _objects) - 1 do {
				
					_object = _objects select _j;
					
					if !(isNull _object) then {
						deleteVehicle _object;
					};
				};
			
				_building setVariable ["ptm_objectsInBuilding_objects", []];
				_buildings	= _buildings - [_building];
			};
		};
	};

Если этот кусок кода будет крутится на сервере который я буду хостить из игры, то всё работает, всё норм.

 

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

 

И путём хитрожопых манёвров мне удалось выяснить причину, и ядром причины оказалась эта строка, в исполнении именно на выделенном сервере

_entities	= (position _building) nearEntities [["Man", "Car"], _cleenUpRadius];

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

 

Вот так вот, мля!


  • 0

#2 OFFLINE   dos622

dos622

    Ст. Прапорщик

  • Пользователи
  • 702 сообщений

Отправлено 26 January 2016 - 12:39

Хе хе, и как поборол?

или забыть и простить?

у меня похожая проблема, пускаю сервер, захожу, все ок, сервер ставит игрока, а вот его перемещений по карте, он не видит. для сервера, игрок всегда стоит, на той точке, на которую его поставил сервер.


  • 0

#3 OFFLINE   dos622

dos622

    Ст. Прапорщик

  • Пользователи
  • 702 сообщений

Отправлено 26 January 2016 - 14:19

Вообщем, нашел я костыль:)

в ините юнитов, как у тебя, так и у меня было прописано: enableSimulation фишко в том, что для МП оно не катит:) В арме 3 применяется для МП:

 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание


  • 0

#4 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 27 January 2016 - 18:18

Скорее всего так и есть.

Да не скорее, а так и есть, я не учёл эффект команды enableSimulation.

А комманду enableSimulationGlobal, по моему, ввели в аккурат когда я начал писать этот код, по этому применил не её.


  • 0




Яндекс.Метрика