1. Can_colide попробуй заменить на NONE
2. Какие именно аргументы ты передаешь в скрипт (Именно сам скрипт передачи параметров нужен)
3. Как именно происходит "визуализация" объекта, который ты ставишь (не когда уже поставил, а когда еще редактируешь)
1. Пробовал - результат визуально одинаковый.
Да и в справке написано, что будут созданы там где надо, без учета пересечений с другими объектами - т.е. не учитывая их.
2. В какой скрипт? - Я же выше кинул скрипты, технически только данные параметры и идут. Ниже более подробно прикреплю.
3. Не совсем понял, что значит визуализация... - Создаю объект, аттачу к игроку. При использовании привязки - детач объекта, и аттач к объекту привязки. При нажатии хот-кея установки(финал стройки) - Детач, получение координат, векторов, и отправка на сервер.
Рекомендую эти команды для определения позиций
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
Далее при создании композиции, желательно поставить, например игровую логику, и уже относительно её определять позиции обектов.
И определять позиции лучше относительно локальных координат центра (игровая логика), и этой командой
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
или этой
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
не знаю будет ли разница.
Далее при расстановке объектов, опять же ставите по координатам, где будет создаваться композиция, игровую логику и, внимание, аттачите отспавненные объкты к логике, координаты для аттача мы определили выше командой
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
После создания всех объектов удаляем игровую логику.
getPosWorld\setPosWorld - частично решило проблему.
т.е. - При установке ВСЕ ОК. Идеально.
Серверу отправляются данные. Он устанавливает объект. Объект ставится там где надо. При привязке к объекту, так же все ок. Никаких щелей и смещений.
А вот при старте сервера и загрузке с БД объектов, появляются небольшие щели и смещения...
Вот кусок из процедуры которая ставит объект при крафте -
_player = (_this select 0);
_class = (_this select 1);
_pos = (_this select 2);
_vectorDir = (_this select 3);
_vectorUp = (_this select 4);
_code = (_this select 5);
...................................................................................................
_object = createVehicle [_class, _pos, [], 0, "CAN_COLLIDE"];
_object setVectorDirAndUp [_vectorDir, _vectorUp];
_object setPosWorld _pos;
_object setVariable ["_uid", _uid, true];
_data = [_uid, _class, _pos, _vectorDir, _vectorUp, 0, _code_key, Ultima_Date, Ultima_Date];
Ultima_BD_DLL_Name callExtension format["9|OBJECTS_BUILDABLE|%1|%2", _uid, _data]; // Запись в БД
А вот кусок из процедуры, при старте сервера, когда объекты загружаются и устанавливаются -
Загрузка с БД:
...................................................................................................................................................................................................
_tmp = call compile _tmp;
a_Ultima_Objects_Buildable set [(count a_Ultima_Objects_Buildable), _tmp];
...................................................................................................................................................................................................
Полная процедура установки:
Ultima_proc_Objects_Buildable_Spawn =
{
Private ["_i", "_rec", "_uid", "_class", "_pos", "_vectorDir", "_vectorUp", "_damage", "_date_create", "_date_used", "_object"];
for "_i" from 0 to (count a_Ultima_Objects_Buildable) - 1 do
{
_rec = (a_Ultima_Objects_Buildable select _i);
_uid = (_rec select 0);
_class = (_rec select 1);
_pos = (_rec select 2);
_vectorDir = (_rec select 3);
_vectorUp = (_rec select 4);
_damage = (_rec select 5);
//_code_key
_date_create = (_rec select 7);
_date_used = (_rec select 8);
_object = createVehicle [_class, _pos, [], 0, "CAN_COLLIDE"];
_object setVectorDirAndUp [_vectorDir, _vectorUp];
_object setPosWorld _pos;
_object setDamage _damage;
_object setVariable ["_uid", _uid, true];
a_Ultima_Objects_Buildable set [_i, (_rec + [_object])];
_object addMPEventHandler ["MPKilled", {_this spawn Ultima_proc_Objects_Buildable_Killed}];
diag_log(format["[#Ultima]: [Сервер]: [Постройки]: [Событие]: Загружена и создана постройка с идентификатором: %1", _uid]);
};
};
Может, при считывании из БД, при использовании - call compile _tmp "бьются" координаты?
Добавлю в РПТ... но сомневаюсь.