|
|
Модератор форума: GUNNER161, Panikaha |
Форум РЕДАКТОР - ArmA 3 Скрипты С130 десантирование танков. (Нужен приблизительный алгоритм клент-серверного взаимодейств) |
С130 десантирование танков. |
› Понедельник
› 11.07.2016
› 15:39
› Сообщение #
Задача - загрузить несколько танков в самолет вместе с экипажем.
Как это вижу я: Подьезжаем на танке(любая техника) к самолету, у пилота постоянно крутится скрипт проверки на нахождение техники в радиусе 20 метров от самолета и добавляем addaction что будет запускать load_crew.sqf как только условие выполняется. На сторону сервера вешаем publicvariableeventhandler LOAD. load_crew.sqf добавляет танк в массив, так же берет каждого члена экипажа танка и добавляет в подмассив этого же массива. Массив засовываем в глобальнубю переменную LOAD и делает publicvariableserver LOAD. На стороне сервера прогоняем каждые элемент массива циклом foreach : удаляем танк всех членов экипажа запихиваем на места пасажиров в самолет. убираем все actions членам экипажа самолета. пилотируем самолет до точки сброса. проверяем высоту когда она больше 200 метров, добавляем экшн пилоту что выполняет publicvariable UNLOAD. На стороне сервера publicvariableeventhandler UNLOAD что вытаскивает из ранее созданного массива танк, удаляет го из массива и создает под самолетом на расстоянии 10 метров ниже. Всех членов экипажа заталкивает в танк и передает танк в скрипт что будет отсчитывать растояние до земли и создавать парашют. Правильно ли я набросал схему работы ? как вернуть экипаж на места в танке где они были перед загрузкой? Как быть если игрок вылетел из игры и на момент посадки в технику и if (isnull _x) == true ? |
› Понедельник
› 11.07.2016
› 16:35
› Сообщение #
load_crew.sqf добавляет танк в массив, так же берет каждого члена экипажа танка и добавляет в подмассив этого же массива. Если танк удаляется то достаточно его названия. Для экипажа, запомнить их места. Команда - fullCrew - даёт полное описание кто где сидит https://community.bistudio.com/wiki/fullCrew массив хранения - "C130_ms" входной параметр - [ самолёт, танк ] _ob = _this select 0; _vh = _this select 1; _ms = _ob getVariable ["C130_ms", []]; _ms = _ms + [typeOf _vh, fullCrew _vh];// или _ms = _ms + [[typeOf _vh] + fullCrew _vh]; _ob setVariable ["C130_ms",_ms, true ]; . получается вот такой список ["B_APC_Tracked_01_AA_F",[tnd,"driver",-1,[],false],[tng,"gunner",-1,[0],false],[tnc,"commander",-1,[0,0],false]] |
› Понедельник
› 11.07.2016
› 20:39
› Сообщение #
Отлично.
получается что бы выгрузить _ms_resulth = _ob getVariable ["C130_ms", []]; _veh = _ms_resulth select 0; _driver = ((_ms_resulth select 1) select 0); _gunner = ((_ms_resulth select 2) select 0); _commander = ((_ms_resulth select 3) select 0); /* создаем технику */ //////////////////////////////// if(!isNil "_driver") then { _driver assignAsDriver _veh }; if(!isNil "_gunner") then {_gunner assignAsGunner _veh }; if(!isNil "_commander") then {_commander assignAsCommander _veh}; [_veh] execVm скрипт десантирования; Я все правильно понял ? Добавлено (11.07.2016, 20:39) |
› Понедельник
› 11.07.2016
› 22:10
› Сообщение #
|
› Вторник
› 12.07.2016
› 00:10
› Сообщение #
|
| |||
| |||
Чат сайта |