Модератор форума: СМЕРШ, Slon |
Форум РЕДАКТОР - ArmA 1 Вопрос-Ответ Снайперская поддержка со сменой позиций и ограничением огня (Вопрос по осуществлению) |
Снайперская поддержка со сменой позиций и ограничением огня |
› Воскресенье
› 09.05.2010
› 12:10
› Сообщение #
Привет всем! =)
Спасибо Вам всем (особенно группам САРМАТ и ОТК за их кампании и миссии) за оказание помощи (сайт неоднократно помогал устранять возникающие проблемы, за что я ему премного благодарен) =) Теперь перейду к делу. Вопросы: Если где-то вопрос уже задавался, прошу прощения и направить меня на эту тему =) Сообщение отредактировал ScrEagle - Воскресенье, 09.05.2010, 19:37
|
› Воскресенье
› 09.05.2010
› 14:42
› Сообщение #
Запретить стрельбу можно командой
_Sniper setCombatMode "BLUE" разрешить _Sniper setCombatMode "RED" подсчёт колва убитых сложней, думаю нужно контролировать момент выстрела и прирост рейтинга, или контроль каждому противнику - кто его убил (больше ресурса сожрёт) _Sniper addEventHandler ["Fired", {Sniper_Fire = true}]; опции "Радио Браво/Чарли/Дельта" это радио тригеры , в файл init.sqf нужно записать Сообщение отредактировал Slon - Воскресенье, 09.05.2010, 14:47
|
› Воскресенье
› 09.05.2010
› 15:14
› Сообщение #
Slon, стыдно признаться, но я только начинаю постигать азы и половина этого скрипта для меня - загадка =) можно объяснить суть скрипта?
|
› Воскресенье
› 09.05.2010
› 15:47
› Сообщение #
думаю стыдится нечего, все когдато начинают.
разберём файл построкам. подумав немного изменил запуск файла можно произвести из инита снайпера строкой текст файла и пояснения _Sniper = _this select 0; - получение ИД объекта _trup = 0; - предварительная установка счётчика трупов While {alive _Sniper} do {) - циклическое повторение пока снайпер жив _rn = Rating _sniper; - запомнить текущий рейтинг WaitUntil {_rn != Rating _sniper}; - ожидание изменения рейтинга sleep 0.1; - пауза в выполнении (навсякий случай) if (_rn < Rating _sniper) then {_trup = _trup + 1; - если рейтинг вырос то убит противник if (_trup > 2) then {hint "Сменить позицию";_trup = 0} если трупов больше 2 то тут можно чтото сделать |
› Воскресенье
› 09.05.2010
› 16:00
› Сообщение #
А, теперь более менее понятно.
Значит, сделал следующим образом. Снайпер (т.к. _sniper не принимает (локальная переменная в глобальном пространстве...), то имя снайпера без нижнего регистра) на позиции. Прописано Sniper setCombatMode "BLUE". Активирую Радио Альфа, тут снайпер по идее должен выполнить скрипт. Но выдает ошибку.
Code if (_rn < Rating _sniper) then {_trup = _trup + 1; Error Error select: Config Снайпер молча уползает на следующий вэйпоинт, который должен активироваться после смерти 2-ух или 3-ех врагов. UPD: Quote (Slon) _rn = Rating _sniper; - запомнить текущий рейтинг Значит, он запоминает текущий рейтинг, после чего снайпер стреляет?
Quote (Slon) WaitUntil {_rn != Rating _sniper}; - ожидание изменения рейтинга sleep 0.1; Рейтинг изменен, проходит 0.1 сек. и снайпер снова стреляет?
Quote (Slon) if (_trup > 2) then {hint "Сменить позицию";_trup = 0} После двух трупов, активируется вэйпоинт смены позиции? Сообщение отредактировал ScrEagle - Воскресенье, 09.05.2010, 16:05
|
› Воскресенье
› 09.05.2010
› 16:08
› Сообщение #
наверно скрипт нетам
Прикрепления:
1161494.jpg
(23.5 Kb)
|
› Воскресенье
› 09.05.2010
› 16:11
› Сообщение #
Slon, а что за строчка Sniper_Fire = false?
Вот бли-ин... протупил, пропустил в скрипте эту строчку. Сейчас исправлю... UPD: Сообщение отредактировал ScrEagle - Воскресенье, 09.05.2010, 16:14
|
› Воскресенье
› 09.05.2010
› 16:18
› Сообщение #
ничего непропустил, эксперементирую с поинтами.
до конечного варианта скрипта нужно ещё многое учесть, например можно запускать скрипт из каждого поинта, тогда можно без цикла- добежал запустил скрипт троих положил скрипт в конце командует перебежку и выключается, на следущем поинте всё повторится |
› Воскресенье
› 09.05.2010
› 16:24
› Сообщение #
М-м, думаю с каждым поинтом будет лучше, т.к. кол-во таких "позиций" ограничено, думаю, будет легче к каждому прописать скрипт, чем цикл создавать.
Тогда, можно попробовать так: |
› Воскресенье
› 09.05.2010
› 16:55
› Сообщение #
Скрипты правильней писать в файлах а не на карте, на карте часть команд непотдерживается.
формат sqf - предпочтительно но необязательно. |
› Воскресенье
› 09.05.2010
› 16:57
› Сообщение #
Slon, дык это... в файлах и пишу =) через блокнот правда, а не через Арма-Редактор... в поинтах я предлагал писать только активацию скрипта через exec(VM).
Игра ругается на строчку: Code if (_rn < Rating _sniper) then {_trup = _trup + 1; Error Error select: Config В чем может быть причина?.. неправильно прописан или еще что... |
› Воскресенье
› 09.05.2010
› 17:18
› Сообщение #
так exec или execVM - это не одно и тоже, запускает разные интерпритаторы, может отсюда и ошибка
|
› Воскресенье
› 09.05.2010
› 17:23
› Сообщение #
Если использовать .sqf то вылезает следующее:
Code ...ct 0; _trup = 0; _rn = Rating _sniper; WaitUntil {_rn != ...' Error ; File: *путь к файлу с тест-мисой*\Fire.sqf, line 7 |
› Воскресенье
› 09.05.2010
› 17:46
› Сообщение #
не расширение определяет какой интерпритатор запустится , расширение можно писать любое (те. совсем любое)
определяется вызывающей строкой, а формат файла определяет синтаксис. вобщем вот что у меня получилось на карте в активацию и условие поинтов итд. меняется только цифра в Pusk == № радио тригер "Альфа" повторяемый, активация текст в файл init.sqf - (название обязательно) текст в файл Sc.sqf _sniper = _this select 0; _trup = 0; _sniper setBehaviour "CARELESS"; Сообщение отредактировал Slon - Воскресенье, 09.05.2010, 17:58
|
› Воскресенье
› 09.05.2010
› 17:54
› Сообщение #
А что такое синтаксис? Значит, от того, что я напишу в вызывающей строке (exec/execVM), зависит тип файла со скриптом? |
| |||
Чат сайта |