Модератор форума: Slon |
Форум РЕДАКТОР - ArmA 2 Operation Arrowhead Вопрос - ответ Как назначить клавишам действие? (Нажал кнопку — скрипт) |
Как назначить клавишам действие? |
› Четверг
› 12.05.2011
› 21:44
› Сообщение #
Допустим, я использовал скрипт драки, но нажимать меню действий слишком долго, тем более бот зря времени ни теряет. Как назначить кнопке удар прикладом?
Я знаю, что ничего не знаю
|
› Четверг
› 12.05.2011
› 22:20
› Сообщение #
http://community.bistudio.com/wiki/displaySetEventHandler
там и пример есть |
› Четверг
› 19.05.2011
› 13:43
› Сообщение #
Там много всяких переменных, я немного запутался. Slon можешь кинуть миссию-пример для наглядности? заранее спасибо)))
Добавлено (19.05.2011, 13:41) Добавлено (19.05.2011, 13:43)
Я знаю, что ничего не знаю
|
› Четверг
› 19.05.2011
› 20:40
› Сообщение #
Я конечно не Слон в скриптах, он толще :prof:.
Peters : Тебе надо использовать второй пример "Example 2". Там есть Init им задействуется сама функция определения клавишы и запуск скрипта keyspressed.sqf. Он там чуть ниже описан. Его метаешь в папку с миссией например. То есть, конкретно для клавиши "R" у тебя должно быть число 19, так как "F" в примере - код 33. Вот тут список на любую кнопку http://community.bistudio.com/wiki/ListOfKeyCodes NUM - это цифровой блок клавиатуры, те что справа. Свой скрипт ты можешь засосывать в функцию вызова или запихивать код непосредственно во второй sqf вместо строки "// code here". Он выполнится и его выполнение будет отмечено как true следующей строкой. |
› Четверг
› 19.05.2011
› 20:57
› Сообщение #
Цитата (Peters) назначает скрипт на любую клавишу верней на ВСЕ клавиши (findDisplay 46) номер канала ввода/вывода KeyDown - событие - клавишаНажата, 33 - код клавиши F 19 - код клавиши R делее вызывается файл или функция, или прямо тут в скобках код написать. для вылавливания определённой клавиши используется фильтр на основе операторов if или Switch пример, прямо в скобках (sqf) на операторе IF (findDisplay 46) displaySetEventHandler ["KeyDown"," if ((_this select 1) == 33) then {hint ""this press F""}; if ((_this select 1) == 19) then {hint ""this press R""}; "]; тоже самое на операторе Switch (findDisplay 46) displaySetEventHandler ["KeyDown"," Switch (_this select 1) do { case 33 : {hint ""this press F""}; case 19 : {hint ""this press R""}; }; "]; |
› Пятница
› 20.05.2011
› 12:57
› Сообщение #
Отлично, это работает))) А как сделать так, чтобы при определенных условиях, например: player distance _man <5, с кнопки R убиралось действие перезарядки? А то получается смешанная анимка; если условие не выполняется, то действие перезарядки возвращается. И как поставить сочетание клавиш, например, Shift+E?
Я знаю, что ничего не знаю
|
› Суббота
› 04.06.2011
› 22:48
› Сообщение #
Peters : Хорошо, Слон всё расписал подробно.
Quote (Peters) Отлично, это работает))) А как сделать так, чтобы при определенных условиях, например: player distance _man <5, с кнопки R убиралось действие перезарядки? А то получается смешанная анимка; если условие не выполняется, то действие перезарядки возвращается. И как поставить сочетание клавиш, например, Shift+E? Сделай аналогично. То есть в теле скрипта создай условие, прикотором при выполнении твоих условий, то есть if player distance _man <5 - переназначай кнопку R (у меня она тоже на перезарядке). То есть перезарядка от кнопки R не будет работать, или будет сброс за цикл, либо запрет выполнения анимки перезарядки. Следующей строкой ставь условие выполнения нужного действия и при выходе из цикла аозвращай управление прежней клавише. То есть, когда надо, ты можешь сам переназначить клавиши или запретить их опрос, а затем когда опять вернуться к прежним установкам. В идеале, неплохо бы код запрограммированной клавиши сохранять как переменную, значение которой, восстанавливалось бы по завершении твоего цикла. Насчёт второго - не знаю. Если есть возможность опросить Шифт, то тогда в теле скрипта по идее надо делать условие на опрос Шифта и какой-либо клавиши вместе с ним. Сообщение отредактировал patorius - Суббота, 04.06.2011, 22:53
|
› Суббота
› 16.07.2011
› 23:16
› Сообщение #
(findDisplay 46) displaySetEventHandler ["KeyDown","_this execVM ""file.sqf"";"]; - это в ините бойца надо прописывать? вообще чёт ничего не понял
|
› Суббота
› 16.07.2011
› 23:58
› Сообщение #
Quote (findDisplay 46) displaySetEventHandler ["KeyDown","_this execVM ""file.sqf"";"]; - это в ините бойца надо прописывать? вообще чёт ничего не понял В ините бойца не сработает. Во время выполнения кода из инита (findDisplay 46) еще не существует. Лучший вариант - прописать в файле init.sqf c небольшой задержкой, чтобы код выполнился уже после вступления в игру. |
› Пятница
› 12.07.2013
› 06:42
› Сообщение #
Как то криво работает такой способ активации скрипта. А как как подключить кнопку непосредственно в с крипте? А то отключаются остальные подключенные скрипты.
|
› Пятница
› 12.07.2013
› 06:52
› Сообщение #
Цитата (T-72Б) (findDisplay 46) - 46 это номер клавиши? та, от которой будет скрипт запускаться? Цитата (T-72Б) (findDisplay 46) displaySetEventHandler ["KeyDown","_this execVM 'Script.sqf'"]; Код _key = _this select 1; if (_key == 0x13) then {<< Действие при нажатии клавиши R >>}; Код _key = _this select 1; _shift = _this select 2; if (_key == 0x13 && _shift) then {<< Действие >>}; // Сработает только при нажатии комбинации клавиш Shift + R. Все клавиши (их коды) можно найти здесь. |
› Среда
› 31.07.2013
› 06:24
› Сообщение #
И опять скрипт в скрипте у аригато прыжок активируется на пробел причем в самом скрипте. Тоесть я подключил через инит скрипт и он при загрузке игры активируется. я посмотрел скрипт и вижу что кнопка пробела в конце скрипта. Вроде должно быть сначала пробел потом исполняется прыжок. Может я чего не догоняю?
Добавлено (31.07.2013, 06:24) |
› Среда
› 31.07.2013
› 07:07
› Сообщение #
Цитата Чтобы при наведении на цель появилась надпись "ударить" Это добавленное действие _Ca = Player addAction [ "Ударить", "Udar.sqf", [], 6, false, false, "", "(Player distance cursorTarget < 2) && (cursorTarget isKindOf ""Man"")"]; |
› Среда
› 31.07.2013
› 10:44
› Сообщение #
Это мп миссия. Тип цели как боты так и игроки. Расстояние 5-6 метров чтобы загорелось "ударить". Как то так.
|
› Среда
› 31.07.2013
› 11:25
› Сообщение #
poman,
Привет вот пример ! Прикрепления:
TEST_UDAR.Deser.rar
(0.9 Kb)
Мой сайт The red fox studio
скипты Сброс ящиков на парашюте! Меню помощи техники арма 2 оа мои видеоуроки , по максу и кислороду !!! видео урок разрезка модели в максе и юви для фотошопа Развертка модели в 3ds max !!!! Наложение текстуры в кислороде 2 Видео урок кислород2 геометрия разлёт деталей в максе при экспорте в кислый экспорт модели из кислорода в игру |
| |||
Чат сайта |