Модератор форума: Slon |
Форум РЕДАКТОР - ArmA 2 Operation Arrowhead Вопрос - ответ Сцепка объекта с объектом (в зоне где имеется объект) |
Сцепка объекта с объектом (в зоне где имеется объект) |
› Суббота
› 29.08.2015
› 16:03
› Сообщение #
if (count _LAPS <2)
И вообще, такую лестницу городить не надо, все выполняется за один заход. { _dir=getdir _x; [_x,_dir] execVM "build_hero_nest_1_lvl.sqf"; [_x,_dir] execVM "build_hero_nest_2_lvl.sqf" ....... и тд } foreach _LAPS; cursorTarget - это не переменная, а команда. (подчеркивание не нужно) Если в условии имеются в виду класснеймы объектов, то правильнее будет так: if (typeOf cursorTarget in ["Cow01","Cow02",............]) Это что? |
› Суббота
› 29.08.2015
› 17:08
› Сообщение #
Как я понял нужно в таком ключе, пытался я уж раз 20-30 установить со следующей кодом одиножды у меня появился 1-ый этаж без лестницы, остальные раз 19-29 с лесницой:
Добавлено (29.08.2015, 16:28) Добавлено (29.08.2015, 16:30) Добавлено (29.08.2015, 17:08) |
› Суббота
› 29.08.2015
› 18:12
› Сообщение #
тогда уж alive cursortarget
Не понял. При запуске скрипта все двери объектов, которые он ставит, приводятся в начальное состояние |
› Суббота
› 29.08.2015
› 18:42
› Сообщение #
Вообщем починил, только проверка предмета не работает,
Не понял. При запуске скрипта все двери объектов, которые он ставит, приводятся в начальное состояние Дело в том, что объекты которые вы помогли установить это объекты из аддона origins mod для мода dayz, так вот эти товарищи (создатели origins mod'a) не распостроняют серверные файлы, лишь только аренда сервера, ничего править нельзя и добавить, хотя насколько я знаю это запрещено бисами, т.к. все аддоны должны быть открыты, их собирались прикрыть по моему, так вот, данный объект по дефолту имеет открытые двери, мне же нужно закрыть их, благодаря вам и вашим разьяснениями помощи получилось закрыть его при установке, но после рестарта сервера опять появляется дверь, есть ли возможность применения анимации всем объектам определенного класса? Я разбирал клиентскую сторону до ниточки, они портили конфиги, с горем пополам с помощью depbo открыл их Добавлено (29.08.2015, 18:42) |
› Суббота
› 29.08.2015
› 19:17
› Сообщение #
В сложных условиях без правильных скобок не обойтись.
if (есть предмет И (дистанция) И ((корова1) ИЛИ (корова2) ИЛИ.....)) Если "Cow01" это класснейм, то нужно использовать typeof После рестарта сервера добавленные объекты остаются на месте, что ли? Тогда нужно опять пробежаться по массиву вышек, найти в каждом элементе объекты "elektro_hero" и закрыть у них двери. Второй цикл вложен в первый { _blds = nearestObjects [_x, ["elektro_hero"], 10]; sleep 0.5; { _x animate ['hatch_hide',1]; ...... } foreach _blds; } foreach _LAPS Опять же следует помнить, что локальные переменные действуют только внутри одного скрипта, иначе нужно пользовать глобальные |
› Суббота
› 29.08.2015
› 19:59
› Сообщение #
Проверка предмета все так же не работает, с дистанцией интересно, если подойти на на дистанцию меньше 5 появиться пункт, потом можно бежать куда угодно, пункт будет, доить можно будет, и проверка жива ли корова так же не работает, вроде сделал все как вы писали
|
› Суббота
› 29.08.2015
› 21:13
› Сообщение #
Переходи от простых условий к сложным, если все сразу не работает. Проблема может быть в любом.
В экшен нужно внести условие с дистанцией, чтобы вне ее меню не было unit addAction [title, script, arguments, priority, showWindow, hideOnUse, shortcut, condition То есть "player distance cursortarget < 5" А еще лучше вешать экшен на корову |
› Суббота
› 29.08.2015
› 23:12
› Сообщение #
Спасибо, мне америкос подсказал как сделать проверку предмета:
Добавлено (29.08.2015, 22:43) Добавлено (29.08.2015, 22:46) Добавлено (29.08.2015, 22:49) Добавлено (29.08.2015, 22:50) Добавлено (29.08.2015, 22:51) Добавлено (29.08.2015, 23:06) Добавлено (29.08.2015, 23:10) Добавлено (29.08.2015, 23:12) |
› Воскресенье
› 30.08.2015
› 00:09
› Сообщение #
Все так начинали, не переживай:)
После рестарта сервера должна появиться девственная карта, без апргейдов вышек. Ну не могут там оставаться объекты с прошлого раза. Значит, ставим первоначальный скрипт заново со всеми нужными действиями. Если ты открывал скриптом дверь, а потом вручную ее закрыл, она в следующий раз снова откроется скриптом. Про _blds тогда забудь. Или я не понимаю. Ты добавляешь экшен игроку. s_player_moloko = player addaction....... Можно вместо этого добавить предмету, корове в данном случае s_player_moloko = cursortarget addaction Анимация обычно в модели записывается и вроде бы строка ее запуска показывается, если натравить на объект vehinfo Это простой скрипт, уже имеющийся в модели, типа открытия рампы у самолета и тп (напр. [this]exec "ca\air2\Mi35\data\scripts\rdoorcl.sqs"; ) а привязать его выполнение можно к чему угодно. Сообщение отредактировал andrucio - Воскресенье, 30.08.2015, 00:10
|
› Воскресенье
› 30.08.2015
› 12:08
› Сообщение #
Цитата После рестарта сервера должна появиться девственная карта, без апргейдов вышек. Ну не могут там оставаться объекты с прошлого раза. Значит, ставим первоначальный скрипт заново со всеми нужными действиями. Если ты открывал скриптом дверь, а потом вручную ее закрыл, она в следующий раз снова откроется скриптом. Про _blds тогда забудь. Или я не понимаю. |
› Воскресенье
› 30.08.2015
› 13:05
› Сообщение #
А рестарт отследить можешь? Чтобы запустить скрипт.
Тогда Скриптов будет несколько, а для доступности данных используем глобальные переменные. Массив вышек не меняется, считаем его один раз и пишем не в _LAPS, а в LAPS. Далее запуск другого скрипта после рестарта Тогда нужно опять пробежаться по массиву вышек, найти в каждом элементе объекты "elektro_hero" и закрыть у них двери.Второй цикл вложен в первый { _blds = nearestObjects [_x, ["elektro_hero","...здесь перечисляешь все объекты с дверями"], 10]; sleep 0.5; { _x animate ['hatch_hide',1]; ...... здесь анимации на закрывание разных дверей } foreach _blds; } foreach LAPS; 10 - это радиус поиска для нужных объектов. вычисляется опытным путем Сложности здесь могут быть в том, что у разных объектов разное название дверей. Тогда для выбора нужных анимаций используется фильтр case. (в принципе, можно обойтись и одним скриптом, он будет крутиться в цикле, с ожиданием рестарта и последующим запуском повторного закрытия дверей) а вот это странно. И для коррекции иногда помогают паузы. Объекты не ставятся мгновенно, а ты ему уже анимацию предлагаешь. sleep 0,5 будет достаточно |
› Воскресенье
› 30.08.2015
› 17:52
› Сообщение #
А рестарт отследить можешь? Чтобы запустить скрипт.
Сервер автоматом раз в 4 часа выключает BEC и серверная сторона имеет отдельный аддон (серверный) в нем можно подключить скрипт, таким образом добавлял объекты на карту, вот я значит "сделал" пункт меню действий на открытие\закрытие хелипада (того самого бутона) но почему-то он меня действий появляться зараза не хочет, не могли бы вы пожалуйста посмотреть в чем ошибка меню действий: open_close_helipad_h.sqf (сам скрипт открытия, тоже не знаю верен ли) Добавлено (30.08.2015, 16:24) Добавлено (30.08.2015, 16:26) Добавлено (30.08.2015, 16:28) Добавлено (30.08.2015, 16:32) Добавлено (30.08.2015, 17:25) Добавлено (30.08.2015, 17:52) |
› Воскресенье
› 30.08.2015
› 18:39
› Сообщение #
Ну наверное сможет, только ему нужно знать массив LAPS и то, что скрипт по установке барахла уже выполнен - чтобы было что закрывать.
строка _blds = nearestObjects [_x, ["elektro_hero"], 25000]; ищет объекты "elektro_hero" возле каждого элемента массива LAPS, и здесь достаточно 10-15 (в зависимости, насколько большие прилепляемый к вышке объекты). 25000 надо применять выше, LAPS = nearestObjects [vehicle player, ["Land_sloup_vn"], 25000] Но при таком значении будет приличный фриз секунд эдак в 15. И надо брать не позицию игрока, а середину карты. Зачем? Массив уже посчитан. |
› Воскресенье
› 30.08.2015
› 19:01
› Сообщение #
Так это другой скрипт, один от игрока (стройка) который сделали ранее, а сейчас пытаемся сделать 2-ой закрытие при старте сервера, а зачем еще раз искать вышки, нельзя ли сразу elektro_hero?
Добавлено (30.08.2015, 18:56) Добавлено (30.08.2015, 19:01) |
› Воскресенье
› 30.08.2015
› 19:48
› Сообщение #
Искать еще раз не надо, они уже есть.
А если опять по всей карте - будет еще один фриз. Если у тебя на каждой вышке только один прицепленный объект elektro_hero, то вместо nearestObjects использовать nearestObject и без внутреннего цикла Это точно? Проверял? Если хочешь по всей карте сразу, тогда не от юнита, а от середины карты. Центр можно высчитать парой команд, либо указать примерно. |
| |||
Чат сайта |