не поздно ещё ответить? )))
когда создаёшь или редактируешь профиль на второй закладке после выбора подключённых девайсов будет меню настройки осей ... тебе нужнонижнее окошечко с рудом и полунки названные SCX и SCY
Вид для печати
не поздно ещё ответить? )))
когда создаёшь или редактируешь профиль на второй закладке после выбора подключённых девайсов будет меню настройки осей ... тебе нужнонижнее окошечко с рудом и полунки названные SCX и SCY
Ребят, а никто не сталкивался с такой проблемой - создаешь скрипт в скрипт-эдиторе, назначаешь его в окошке "Fly Now" какому-нибудь приложению, жмешь, чтобы это приложение запустить, в итоге запускается скрипт(гуй включается, виртуальный джой коннектица, все ок), а вот приложение - нет. Я сначала думал, что криво прописан путь к приложению, потом протестил на плеере - ниче подобного. А самое смешное, что скрипты, созданные гуем(хранящиеся в fcf-файлах), работают как надо, и сами запускаются, и приложение запускается, а вот если от этого скрипта скопировать(в гуе есть кнопочка view script) текст в скрипт эдитор, и создать новый файл tmc, по идее идентичный по функционалу с изначальным fcf-файлом, то опять приложения не стартуют.
Система - семерка х64, приложения запускаются не под админом(очень не хотелось бы под админом запускать).
--- Добавлено ---
Еще как есть. Я себе делал на Т16000 три троттла. Скриптом самописным, правда. У меня было так - жмешь кнопку(я две кнопки в тумблер переделал) - ползунок управляет первой осью, жмешь вторую - ползунок управляет второй осью, первая остается в той же позиции, в которой была на момент переключения, отпускаешь обе кнопки - работает третья ось.Цитата:
Сообщение от Vok
Я ради этого ТАРГЕТ и скачал.
Пожалуйста.
У меня хатка по дефолту почему-то не работала, поэтому замапил вручную. Предпоследние две строки в мейне - чтобы кнопки, управляющие переключением, не мешались нигде. Кроме того, сделать такое же поведение осей можно было бы другим способом, с использованием функций DXAxis. Правда, тут слои не используются, чисто переключатель через кнопки. А вообще, через эвент хендлер можно организовать очень извращенное поведение джойстика.Код:include "target.tmh"
//program startup
int main()
{
Configure(&RMFD, MODE_EXCLUDED);
Configure(&LMFD, MODE_EXCLUDED);
Configure(&HCougar, MODE_EXCLUDED);
Configure(&Joystick, MODE_EXCLUDED);
Configure(&Throttle, MODE_EXCLUDED);
if(Init(&EventHandle, CREATE_JOYSTICK)) return 1;
MapAxis(&T16000, JOYX, DX_X_AXIS);
MapAxis(&T16000, JOYY, DX_Y_AXIS);
MapAxis(&T16000, RUDDER, DX_ZROT_AXIS);
MapAxis(&T16000, THR, DX_SLIDER_AXIS);
MapKey(&T16000, H1U, DXHATUP);
MapKey(&T16000, H1R, DXHATRIGHT);
MapKey(&T16000, H1L, DXHATLEFT);
MapKey(&T16000, H1D, DXHATDOWN);
MapKey(&T16000, B11, 0);
MapKey(&T16000, B12, 0);
MapKey(&T16000, TS3, TEMPO(DX31, DX32, 333));
}
//event handler
int EventHandle(int type, alias o, int x)
{
if (x == B11 | x == B12)
{
if(T16000[B12] == 1)
{
MapAxis(&T16000, THR, DX_XROT_AXIS);
return 0 ;
}
if(T16000[B11] == 1)
{
MapAxis(&T16000, THR, DX_YROT_AXIS);
return 0 ;
}
MapAxis(&T16000, THR, DX_SLIDER_AXIS);
}
DefaultMapping(&o, x);
}
Ну че как, Vok, работает???
На Warthogе есть переключатели с тремя положениями, возможно ли запрограммировать так, что бы, к примеру, переключение с нижнего положения к центральному было одно действие, а с верхнего к центральному другое?
да... там вообще масса вариантов
можно сделать что среднее положение это третье действие
Мне нужно не третье действие, а производная от крайних положений, другими словами 4 действия от переключателя с тремя положениями (два действия выбираются в зависимости от куда идет рычажок). На скрипте есть, что -то подобное?
А у меня там скрипт выложен несколькими постами ранее, там вот эти строки:
оживляют хатку. Она работает точно так, как и должна, после этих строк, больше ничего делать не надо, в том числе и промежуточные положения(типа DXHATUPRIGRT) мапить не надо. Хотя, наверно, можно и замапить.Код:MapKey(&T16000, H1U, DXHATUP);
MapKey(&T16000, H1R, DXHATRIGHT);
MapKey(&T16000, H1L, DXHATLEFT);
MapKey(&T16000, H1D, DXHATDOWN);
Да, можно так сделать, может, есть даже встроенные функции для чего-то подобного, но как минимум можно это сделать эвент хэндлером. Я так понял, вы хотите сделать так: переключатель из центра в положение 1 - сделать первое, из центра в положение 2 - сделать второе, из положения 2 центр - третье, из положения 1 в центр - четвертое. Это сделать не трудно, например, вы можете завести переменную, которая будет хранить положение, в котором был переключатель до текущего момента, и использовать разную обработку событий в зависимости от значения этой переменной, кроме того, в обработке события должно быть изменение значения этой переменной. Только вот вы не сможете из крайнего положения переключить в другое крайнее так, чтобы не произошло два действия, а не одно.
Нет, переменная не мониторится сама по себе. Посмотри мой пост от 11.10.12(чуть выше на этой странице), там есть полный скрипт. Вот, там есть функция int EventHandle(int type, alias o, int x), которая вызывается всегда, когда происходит какое-то событие на физическом устройстве, будь то перемещение оси или нажатие/отпускание любой кнопки. Надо вне этой функции создать переменную(кажется, ключевое слово static не поддерживается таргетом), которая будет хранить состояние переключателя. Когда ты переключаешь переключатель, функция вызывается, а в аргумент "х"(кстати, это я назвал аргумент, как в мануале, можно дать ему любое имя, и есть более лучшие информативные варианты, например, назвать этот аргумент "source") этой функции передается код твоего переключателя, который говорит нам, что с переключателем что-то случилось. При помощи if`а ты отлавливаешь именно это событие(у меня там отлавливаются нажатие кнопок В11 или В12), и совершаешь необходимое действие на виртуальном контроллере. Т.е., например, из позиции 1 переключатель переключился в центр. В переменной x ты получишь код, соответствующий нажатию переключателя в центр, а в твоей переменной будет лежать что-то(ты сам можешь это определить, например, так 1 - первая позиция, 2 - вторая позиция, 0 - центр), что, как ты знаешь, соответствует нахождению переключателя в позиции 1. При помощи еще одного if`а ты проверяешь, что лежит в твоей переменной - если 1 - прогаешь один набор действий, если 2 - то другой набор. Кроме самих действий(нажатие кнопочек на виртуальном контроллере и т.д.) тебе нужно будет присвоить своей переменной новое значение (в нашем примере - 0, т.к. переключатель переместился в центр), вот, как бы, и все. Не нужно специальной функции мониторинга, все действия с переменной будут производиться только тогда, когда будет происходить событие, этой переменной касающееся.
К сожалению, это такое объяснение на пальцах пока, у меня таргета ща нет под рукой, и я чутка подзабыл, что точно там передается, но схема примерно такая.
Кстати, если ты не программист и тебе непонятны какие-то конструкции местого языка, можешь смело гуглить эти конструкции, как если бы они относились к языку Си, т.к. таргетовский язык практически точно его копирует, там есть даже некоторые функции из стандартной библиотеки, например, printf.
Если не справишься, пиши, я поставлю таргет, и сделаю примеры кода. И еще, там, в таргете, есть device analizer, запусти его, и посмотри, что происходит, когда ты переключаешь переключатели. По идее, джойстик с точки зрения программы - это много кнопок и несколько осей, так вот, посмотри, какие кнопки в аналайзере отжимаются/нажимаются, когда ты щелкаешь переключателем. И сюда напиши результаты наблюдений. Находятся ли какие-то из них в нажатом положении всегда, если переключатель в определенной позиции.
--- Добавлено ---
И, кстати, всем советую пользоваться таргетом сразу начиная со скриптов - гуевое его программирование весьма ущербно на мой взгляд, и нет смысла его использовать, когда есть такой суперский скриптовый язык, а заодно вы больше поймете, че там да как работает.
Спасибо большое, для меня вполне понятно, вполне хорошо разъяснил! Функция мониторинга EventHandle мониторит все действия джоя и при if "нужное событие" then делаем "нужное действие" (можно через Case попробовать). Я понял, что С используется, я по логике языков - нормально, благо мой профиль, С только в универе учил, а это было давно, надо вспоминать. :)
А ну ок, университетского знания си вполне достаточно. Кстати, там есть массив текущих значений всех (вот эта штука в моем коде: "T16000[B11]") переменных джоя - кнопочек, осей, для крутых джоев - наверно еще и светодиодов. Из него можно узнать текущее состояние джоя. Например, если нужно узнать, нажата кнопка или отжата(EventHandle вызывается в обоих случаях и в его аргументах в обоих этих случаях будет одно и то же), то можно использовать этот массив.
З.Ы. Как на нашем форуме процитировать определенный кусок поста? А то либо весь пост, либо надо самому теги цитаты ставить и/или текст копировать...
ничего не понимаю, профиль создал, во Fly NOW! добавил, с ехе.шником игры связал (RoF.exe), а настройки кнопок не подключаются, что не так делаю ?
всем спасибо за помощь, проблему решил.
Почему бы тебе не рассказать остальным, как? Может, никто не знает?
как я понял он пересоздал профиль с нуля ... и в этот раз создавал уже не бейсик а адвансед профиль)
именно.
p.s. я думал все и так знают, раз никто не ответил.
не... я с твоими симптомами не сталкивался ... и на форумах не встречал ....
особенно то что у тебя там что тоработать отказывалось ..
да я про тебя ничего и не говорю =) ты первый кто меня в нужном направлении подтолкнул =)
Приветик парни! Тоже мучаю TARGET ... мануал скачал по скриптам на русском...но блин пипец как этот мануал криво написан...наверняка его писал какой то программер...который просто уверен что все вокруг только и делают , что сидят и пишут всякие проги на С++...
Вообщем GUI то понятно всё и без мануала...видео на Ю-тубе ещё глянул:
_http://www.youtube.com/watch?v=xLjW--HeH5I
_http://www.youtube.com/watch?v=UOrFfjfe0p4
Может кому пригодится...
А вот со Script Editor немного сложновато...
Вообще не понятно как при написаннии скрипта узнавать какая кнопка ...извращался по разному...вообще помоему Foxy было удобнее ,хотя может я просто ещё не совсем разобрался...Что то типа вот этого у меня сейчас с TARGETом происходит....)))
http://www.youtube.com/watch?feature...&v=JMJXvsCLu6s
Если кто силён в Скрипт Эдиторе, свяжитесь со мной по скайпу...у меня несколько вопросов , но тут расписывать просто лень...так бы на словах пару минут бы заняло...
Мой скайп: mazit76
Стучитесь в любое время не стесняйтесь...
Буду очень благодарен за помощь...
У меня скайпа нет(устанавливать не будут, потому, что религия не позволяет), но я готов помочь. Можешь в этой теме пример скрипта позырить, если есть конкретные вопросы, пиши сюда или в личку, не ленись, помогу, чем смогу, хотя я тоже не суперпрофи.
Народ помогите создать функцию что ли...уж не знаю как и назвать...
Вообщем суть в следующем....
Задумывалось,задать на кнопку S4 на РУСе - колёсный тормоз "w", при условии что шасси выпущены Pinky - Вперёд (PSF)
Если шасси убраны ,т.е. Pinky - Назад (PSB) , то кнопка S4 должна Вкл/Выкл лазерное целеуказание "R_SHIFT+INS"
Если шасси выпущены , т.е. Pinky - Вперёд (PSF) и нажать кнопки S4 + S3 (S3 у меня назначена как Shift (IO)) , то сгенерируется нажатие "INS" - Включить переднюю стойку.
Выпуск шасси назначил на Pinky - Вперёд (PSF) , а уборку на Pinky - Назад (PSB)
Но тут столкнулся с проблемой...если на переключатель Pinky ничего не назначено , то кнопка S4 работает так как я и хотел...
Но как только я назначаю на Pinky уборку и выпуск шасси, то шасси выпускается и убирается, в зависимости от положения Pinky, а S4 перестаёт работать...
Вот в общем то такая проблема...видимо что то не то делаю...но не пойму как этот момент реализовать...
Может конечно не совсем понятно расписал суть своей задумки...но тогда спрашивайте ,более подробно распишу...
А может быть вообще не реально это реализовать...
В любом случае жду советов...
+++++++++++++++++++++++++++++++++++++++++++++++++++++
Ух .... разобрался...Долго тупил,но всё сделал...%)
Завтра трагет поставлю и позырю, что там да как, а пока посмотри в таргетовском тестере, всегда ли кнопочки работают так, как ты назначил, не запуская игры.
И еще, например, в ЧА 2 (и в других играх серии DCS, похоже, в ЛОГС2 вроде нет такого) кнопки, назначенные перенключателями (и, возможно, даже модификатораи) дают неприятный эффект: если у тебя, например, переключателем назначен шифт, то при его включении некоторые клавиатурные комбинации перестают работать. Но вроде не все, а кажется, те, где есть какие-то другие модификаторы, не знаю с чем это связано, видимо при его включении к комбинациям добавляется этот шифт. В ГС2 можно было использовать переключатели, и они не оказывали никакого влияния на комбинации, где переключатель не участвует.
И вообще, запости сюда получившийся у тебя скрипт, мы посмотрим...
Да у меня там в этом скрипте кроме меня никто ничего не разберёт...У меня РУС от Cougara, РУД от Warthog...
Да и к тому же программист из меня не особо...
Вообщем я взял готовый скрипт...и переделал его под себя...что то убрал,что то добавил...
Вот ссылка на оригинал, но он для РУС и РУД Warthog
http://files.digitalcombatsimulator.com/ru/14359/
Ну могу и свой выложить конечно...может кому пригодится...
Razum , дружище , новая проблема.
Вообщем решил сделать следующее на кнопке есть IO - модификатор, потом TEMPO - возможность Длинного и Короткого нажатия , DOWN - эмитирует занажатое положение кнопки , UP - отпустить кнопку.
Вообщем при длинном (TEMPO) нажатии кнопки с модификатором (I) нажимается и удерживатся в зажатом положении кнопка F12 , при коротком (TEMPO) нажатии кнопки с модификатором (I) кнопка F12 отпускается из зажатого состояния ,
при длинном нажатии (TEMPO) без модификатора (I) , генерируется нажатие F11 ,
при коротком нажатии (TEMPO) без модификатора (I) , генерируется нажатие F10 .
Вот собственно и всё...с виду то ничего сложного,но не получается прописать как нада...
Кто может парни напишите пожалуйста...
Лучше все-таки ложи свой код(прям сюда, под тегом code, может, кому даже пригодится), потому, что непонятно, почему не получается. Самом написать, пример того, что требуется, пока нет возможности...
А да всё уже сделал...кстати не знаю почему не получалось, возможно из-за скобок ошибка была или ещё из-за чего...
Вообщем крутил вертел в итоге получилось...
Как поменять стандартные виды в А-10С на свои...где там чё нада подкрутить что бы виды по нажатию R_Alt+ Num1....9 были такие как я сам их настрою. В DCS A-10C v1.1.1.1
я добился холда триггера, но как привязать зацикливание смены состояния леда к текущему
состоянию триггера TG1 я не могу понять. Умные люди, хелп ми плиз
Скрытый текст:
PS. Хочу, чтобы пока кнопка TG1 была нажата LED1 моргал.
Не знаю, реализуемо ли это, если моргание светодиодом само по себе не предусмотрено... А это весь код?
В принипе, можно написать обработчик, который на нажатие кнопки запустит функцию, которая в бесконечном цикле будет включать/выключать светодиод, пока флаг стоит в "1", и прекращать работу, когда 0. Но не знаю, не будет ли от этого джой лагать, и будет ли он вообще работать в таких условиях.
у меня получалось секунд на 8 заставить моргать светодиод... каким то извращенным способом
Требуется помощь по редактору скриптов.
Пытаюсь завести комбинацию клавиш " L_Shift+"а" " и как то ТАРГЕТ не особо хочет ее отрабатывать. Или вообще отказывается нажимать комбинацию или срабатывает на второе, третье нажатие. Про то, что лучше отказаться от Alt, Ctrl и Shift, и разнести команды на отдельные кнопки, уже слышал. Но если в самом мануале про скрипты упоминаются такие комбинации - :
то почему они не работают на практике? И как быть с DCSW где сплошь и рядом комбинации....Код:MapKey(&Throttle, BSF, L_SHIFT+L_CTL+ 'c');
//Когда на РУДе переключатель boat switch переведете в переднее положение, сгенерируется нажатие комбинации клавиш “Left_shift Left_control c”.
Делаю выбор типа автопилота при помощи трех-ходового переключателя и кнопки:
В верхнем положении отрабатывает правильно, включает полный автопилот. А вот в среднем, там где должна пройти команда «L_Sift+A» получается ерунда. После первого раза срабатывает просто "А", второе нажатие подряд - «L_Sift+A», третье - опять "А", четвертое - отключает автопилот.Код:include "target.tmh"
char autopilot1; //создаем флаг1 - автопилоты
int main()
{
if(Init(&EventHandle)) return 1;
//+++ Автопилот +++
autopilot1=0;//устанавливаем требуемое значение флага при запуске конфигурации
MapKey(&Throttle, APPAT, EXEC("autopilot1=1;")); // Автопилот1=1 (TRUE) когда зажата на ASS up
MapKeyR(&Throttle, APPAT, EXEC("autopilot1=0;")); // Автопилот1=0 (FALSE) когда отпускаем ASS mid
MapKey(&Throttle, APALT, EXEC("autopilot1=3;")); // Автопилот1=3 (TRUE) когда зажата на ASS dw
MapKeyR(&Throttle, APALT, EXEC("autopilot1=0;")); // Автопилот1=0 (FALSE) когда отпускаем ASS mid
MapKey( &Throttle, APDIS, EXEC(
"if(autopilot1) ActKey(PULSE+KEYON+USB[0x04]);"
"if(autopilot1==0) ActKey(PULSE+KEYON+L_SHIFT+USB[0x04]);"
"if(autopilot1==3)ActKey(PULSE+KEYON+USB[0x04]);"
)); //Если autopilot1=1 (TRUE), при нажатии на APDIS будет генерироваться нажатие клавиши «A».
//Если autopilot1=0 (FALSE), при нажатии на APDIS будет генерироваться нажатие клавиш «L_Sift+A»
}
int EventHandle(int type, alias o, int x)
{
DefaultMapping(&o, x);
}
Подскажите, что делаю не так и как надо правильно?