Jump to content
NobbyNobbs

Программирование джойстиков CH Products

Recommended Posts

Всех приветствую. Fighterstick в декабре начал плохо откликаться на тангаж, зачастую это делает с большой задержкой или застревает на треть не возвращаясь в центр, но если несколько раз его принудительно вернуть к центру то идёт на место. Возникла мысль временно поменять местами резюки(на крен будет не так критично), предполагаю, что один работает на крен другой на тангаж, но точно не знаю, подскажите так ли это. Буду очень благодарен.

 

Разобрал его, вижу картину

 

a1_033.jpg

 

Что за что отвечает пока не понял, у кого есть опыт поделитесь как временно поменять их местами и возможно ли сиё действо? 

 

Ещё помню в теме обсуждали покупку контроллеров, получилось у кого их заказать?

Edited by Gray

Share this post


Link to post
Share on other sites

там всё просто

гляди какой резюк крутица на оси когда тянешь тангаж а какой когда тянешь крен

и где то я читал что народ разбирает неисправный резюк и затирает простым карандашом рабочую износившуюся область

надолго ли это помогает не могу сказать.......попробуй , напишешь потом результат.
  • Upvote 1

Share this post


Link to post
Share on other sites

Там же три резюка, поэтому имхо на замену лучше взять именно «третий» - от колёсика.

Что касается «совместных» закупок, то вроде бы только 2ndSS joker в итоге потенциометры купил. Это если мой склероз меня не обманывает.

  • Upvote 1

Share this post


Link to post
Share on other sites

 

там всё просто
гляди какой резюк крутица на оси когда тянешь тангаж а какой когда тянешь крен
и где то я читал что народ разбирает неисправный резюк и затирает простым карандашом рабочую износившуюся область
надолго ли это помогает не могу сказать.......попробуй , напишешь потом результат.

 

Там же три резюка, поэтому имхо на замену лучше взять именно «третий» - от колёсика.

Что касается «совместных» закупок, то вроде бы только 2ndSS joker в итоге потенциометры купил. Это если мой склероз меня не обманывает.

 

Понял, благодарю. Вечером буду пробовать.

Share this post


Link to post
Share on other sites

 

там всё просто
гляди какой резюк крутица на оси когда тянешь тангаж а какой когда тянешь крен
и где то я читал что народ разбирает неисправный резюк и затирает простым карандашом рабочую износившуюся область

 

Благодарю ещё раз, так и есть, там всё очень просто и доступно. Резюк ничем не прикручен, сидит в пазах, чуть приподнял всю конструкцию и достал оба, правда до этого запомнил куда какой провод, на каждом резюке они несколько разные, сменил на тангаж с крена. Провода к резюку на клипсах, ничего паять не надо.

 

 

 

post-17274-0-98522800-1421250638_thumb.jpg

 

post-17274-0-62920500-1421250649_thumb.jpg

 

post-17274-0-92992800-1421250656_thumb.jpg

 

 

 

В калибровке по крену(что глючил) кажется пока всё в порядке

 

 

 

 

 но ближе к центру он до пересадки стал несколько притормаживать и думаю проявится позже, разбирать резюк не решился, буду искать в продаже, но летать уже можно  :drinks:  

Edited by Gray

Share this post


Link to post
Share on other sites
Реализовать аналоговое триммирование, которые разработчики неожиданно зажали от нас, посредством скриптов Control Managera, это всего одна строка кода. И этот скрипт 

даже прописан в примере #7 из мануала. Однако есть серьёзный конфликт! Дело в том, что пока вы используете линейную характеристику отклика, диапазон входных и 

выходных значений не сильно обрезаются... а при использовании масштабирования вообще никак не страдает... и сама характеристика остается линейной, т.е. не меняет своего 

характера. Совсем другое дело при использовании "сглаживающих" кривых. В этом случае при необходимости, например, "сдвинуть" выходное значение вверх на ~20% придется 

сдвигать вашу кривую влево >50%! И ваша "передаточная характеристика" будет выглядеть мягко говоря криво( рис.1 ). Вы теряете ~45% выходных значений, и "обжимаете" ~на 30% ход РУСа. Не сильно поможет и использование уже упоминавшегося масштабирования (рис.2). Диапазон значений хоть и будет восстановлен, но вот характер кривой становится весьма далек от того, который вы настраивали изначально... На рисунках реальные скрины, полученные на JoyTester 2 при установки в Control Managere всего лишь 

"среднего" значения "Gain and Response" в ГИП. Но мало того. Неважно где фомируется кривая - в Control Managere или средствами игры. Результат будет схож... а потому что 

наше триммирование выступает лишь как аргумент передаточной  функции, и соответственно может лишь сдвигать кривую влево-вправо... А нам-то надо вверх-вниз (см.рис.3)!

Посему переходим к собственному программированию кривых отклика. Подойдет неполный полином вида ax^n+bx+c. Из всех вариантов вполне приемлимые кривые 

получаются при 3-й и 4-й степени. Меняя b от 1 до 8-10 можно получить кривую от прямой линии до максимально искривленной (При b > 8-10 изменения становятся 

незначительными). Т.е. менять "чуствительность", что называется "на лету" (причем лучше, чем как это делатся в Control Managere;)).  Для сравнения на рис.5 и рис.6 полиномы 

3-й и 5-й степени соответственно для разных значений b. Предлагаемая арифметика позволяет "триммироваться" сохраняя масштаб кривой во всем диапазоне входных и выходных значений (рис.7 и рис.8).

 

1. Аналоговое триммирование от 3-й оси джоя - колесика "газа". Крутизна - 3-й степени. Вид получающихся кривых - на рис.4).



// CMS Script File
// Аналоговое триммирование С масштабированием оси
// и регулируемой кривизной отклика
//

%define jsy js1.a2 // назначаем ось для обработки
%define dy a1 // величина смещения - триммирования (по Y)
%define dvy a2 // расчетное смещение оси
%define mult_z3 a3 // знаменатель для полинома 3-й степени
%define B a5 // множитель линейной составляющей
//
SCRIPT
// начальные установки
if (firstscan) then // выполняется при первом запуске скрипта...
  B = 4; // коэффиуиент для линейной компоненты. По умолчанию 1:4
  mult_z3 = 128*128*128; // вычисляем коэфф. масштабирования для кривой 3-й степени
endif
// ... вычисляем значение CMS оси для каждой "половинки" хода РУС...
  if ([jsy >127]) then // для "верхней" половины хода РУС
    dvy = jsy - 127; // переносим "ноль" в центр диапазона
    cms.a1 = 127 + (dvy*dvy*dvy*(127-127/B+dy))/mult_z3 + dvy/B + dy;
  else // теперь для "нижней" половины...
    dvy = 127 - jsy; // переносим "ноль" в центр диапазона
    cms.a1 = 127 - (dvy*dvy*dvy*(127-127/B-dy))/mult_z3 + (dvy)/B - dy;
  endif
// в качестве триммера - колесико (ось JS1.A3)
dy = (js1.a3-127)/4; // вычисляем смещение. Ход = +1/4...-1/4 от хода
// 
sequence// Регулировка крутизны отклика. Уменьшаем крутизну до 1:1...
  wait( js1.b7 ); // по нажатию В2
  if ([B>1]) then
    B=B/2;
  endif
endsequence
//
sequence // увеличиваем крутизну до 1:8...
  wait( js1.b9 ); // по нажатию В2
  if ([B<8]) then
    B=B*2;
  endif
ENDSEQUENCE
ENDSCRIPT


..для РОФ чит беспрецендентный!... а что делать ;)

 

2. "Электронное триммирование "по кнопке" (а-ля пример #3 из мануала или продвинутый вариант от Terrora):



// CMS Script File

// Регулируемая кривая отклика +
// + триммирование С масштабированием
//
%define jsy js1.a2 // обозначаем ось для обработки
%define dy a1 // величина смещения - триммирования (по Y)
%define dvy a2 // расчетное смещение оси
%define mult_z3 a3 // знаменатель при x^3
%define B a5 // множитель линейной составляющей
%define permit_control b1 // флаг разрешения управления cms-осью от оси джоя (JS - CMS)
//
SCRIPT
// начальные установки
if (firstscan) then // выполняются при первом запуске скрипта...
  dy = 0; // смещение = 0
  B = 4; // коэффиуиент для линейной компоненты. По умолчанию 1:4
  permit_control = true; // управление JS-CMS разрешено
  mult_z3 = 128*128*128; // вычисляем коэфф. А. для кривой 3-й степени
endif
//
if( permit_control and (not js1.b2) ) then // Если B2 не нажата и разрешено управление JS-CMS...
// ... вычисляем значение CMS оси... для каждой "половинки" хода РУС...
  if ([jsy >127]) then // для "верхней" половины хода РУС
    dvy = jsy - 127; // пересчет X оси для координат с нулями в центре
    cms.a1 = 127 + (dvy*dvy*dvy*(127-127/B+dy))/mult_z3 + dvy/B + dy;
  else // теперь для "нижней" половины...
    dvy = 128 - jsy; // пересчет для оси Y
    cms.a1 = 127 - (dvy*dvy*dvy*(127-127/B-dy))/mult_z3 + dvy/B - dy;
  endif
endif
//
sequence // расчет смещения...
  wait( js1.b2 ); // по нажатию В2
  dy = cms.a1-127; // собственно, вычисляем смещение
  permit_control = false; // выключаем флаг разрешения управления...
endsequence // до тех пор, пока...
// ...РУС не будет возвращен в центр...
if ([jsy==127] OR [jsy==128]) then permit_control = true; endif
//
sequence// сброс "триммера"
  wait( js1.b3 ); // по нажатию В3 сбрасываем смещение в ноль
  dy = 0;
endsequence
// регулировка крутизны отклика
sequence// уменьшаем крутизну до 1:1...
  wait( js1.b7 ); // по нажатию В2
  if ([B>1]) then
    B=B/2;
  endif
endsequence
//
sequence // увеличиваем крутизну до 1:8...
  wait( js1.b9 ); // по нажатию В2
  if ([B<8]) then
    B=B*2;
  endif
ENDSEQUENCE
ENDSCRIPT


Пару пояснений к коду... В приведенном скрипте - "крутизна" 3-й степени. В силу ограничения величины целочисленных значений, используемых для расчетов нельзя 

использовать "в одно  действие" более чем 3-ю степень. Для 4-й и более придется производить промежуточные "подитоги" разделяя выражения скобками. Вот, например часть 

кода при "крутизне" 5-й степени:



%define mult_z3 a3 // знаменатель при x^3

%define mult_z2 a4 // знаменатель при x^2
......
  mult_z3 = 128*128*128; // вычисляем коэфф. А. для кривой 3-й степени
  mult_z2 = 128*128; // вычисляем коэфф. А. для кривой 2-й степени
.....
    cms.a1 = 127 + (dvy*dvy*(dvy*dvy*dvy*(127-127/B+dy))/mult_z3)/mult_z2 + (dvy)/B + dy;
...
cms.a1 = 127 + (dvy*dvy*(dvy*dvy*dvy*(127-127/B+dy))/mult_z3)/mult_z2 + (dvy)/B + dy;


Ещё пару нововведений: расчитывать потребное смещение не по значению оси РУС (JS1.A2), а по "выходному" значению оси CMS.A1. Это позволяет повторно корректировать 

значение триммирования без риска "скачка". А для сброса триммеров лучше задействовать лишнюю кнопку. После нажатия кнопки триммирования не держать её нажатой до 

возвращения РУС в центр, а "запрещать" управление (в коде логическое permit_control) до, как раз, возврата РУС в центр.

Удачных полетов...

post-877-0-11480200-1423999450_thumb.jpg

post-877-0-52699000-1423999480_thumb.jpg

post-877-0-63251200-1423999525_thumb.jpg

post-877-0-08066900-1423999600_thumb.jpg

post-877-0-92483600-1423999628_thumb.jpg

post-877-0-30917500-1423999654_thumb.jpg

Edited by =J13=Moroka
  • Upvote 5

Share this post


Link to post
Share on other sites

Зашумели резисторы на ch fighterstick, при перемещение палки джойстика значения x и y местами скачат на один пункт из 255. Вопрос, это как то повлияет на полёт или не стоит заморачиваться?

Share this post


Link to post
Share on other sites

Зашумели резисторы на ch fighterstick, при перемещение палки джойстика значения x и y местами скачат на один пункт из 255. Вопрос, это как то повлияет на полёт или не стоит заморачиваться?

Это как тебе самому... если мешает - стоит, не мешает - не стоит... Для "одного пункта" вполне пойдет такой вариант или такой, если шум больше...

 

...очень круто! 

для РОФа прям то что доктор прописал.

Да уж, для РОФ чит знатный получился ;)

Но и для БЗС может пригодится... не в плане триммирования... черт уж с ним.... и с аналоговым то же...

а как возможность менять кривую "на лету"... Ибо в самом Managere сделано грубо :(

Share this post


Link to post
Share on other sites

To =J13=Moroka

 

Крута!!!  Молодца!!!

 

Эх, и давно я тут не был. :)

Share this post


Link to post
Share on other sites

опс... нашел неточность...

в 1-м скрипте, где "аналоговое триммирование..." в строке

...

else // теперь для "нижней" половины...
    dvy = 127 - jsy; // переноси...

...

лучше исправить на dvy = 128 - jsy; (как в нижнем примере).

Вообще не сильно принципиально... "но порядок быть должон" 

... и в коментах есть мелкие неточности...  :blush:

ПС ... и очень осторожно надо с формулами если что-то менять... т.к. правило "от перестановки мест слагаемых (множителей) сумма (произведение) не меняется" здесь не работает :wacko: !

Share this post


Link to post
Share on other sites

Здравствуйте. Использую комплект из трех ПРО - СН устройств для полетов в космосиме Elite. Потребовалось назначить на оси тормозов педалей стрейфы в бок. Если напрямую назначить ось тормоза педали на стрейф в игре, то получаем постоянный стрейф в одну сторону, так как тормоз на педали не в центральном положении, а в нулевом.

Можно ли запрограммировать педали таким образом чтобы объединить две оси тормозов двух педалей в одну ось? Превратить педали из трехосных в двухосные, и игра могла видеть две оси как одну. Чтобы ось тормоза левой давала отклонение оси в одну сторону, а тормоз правой - в другую? Начальное положение педалей (тормоз не нажат) было как центральное положение оси.

Если это уже было, пожалуйста, просто напишите - было, ищи.

Спасибо

Edited by kutshai

Share this post


Link to post
Share on other sites

Всех приветствую. Fighterstick в декабре начал плохо откликаться на тангаж, зачастую это делает с большой задержкой или застревает на треть не возвращаясь в центр, но если несколько раз его принудительно вернуть к центру то идёт на место. Возникла мысль временно поменять местами резюки(на крен будет не так критично), предполагаю, что один работает на крен другой на тангаж, но точно не знаю, подскажите так ли это. Буду очень благодарен.

 

Что за что отвечает пока не понял, у кого есть опыт поделитесь как временно поменять их местами и возможно ли сиё действо? 

 

Ещё помню в теме обсуждали покупку контроллеров, получилось у кого их заказать?

Если проблема всё еще актуальна-было то же самое, тангаж "плавал", не всегда возвращался в ноль или возвращался с задержкой..оказалось, что просто отходит один из трех конактов на резюке. Поджал их немного пасатижами (для верности можно и подпаять)...то же самое можно проделать и по остальным резюкам.

Share this post


Link to post
Share on other sites

Где-то видел что паять эти потенциметры категорически не рекомендуется. Правда не помню где.

Share this post


Link to post
Share on other sites

Здравствуйте. Использую комплект из трех ПРО - СН устройств для полетов в космосиме Elite. Потребовалось назначить на оси тормозов педалей стрейфы в бок. Если напрямую назначить ось тормоза педали на стрейф в игре, то получаем постоянный стрейф в одну сторону, так как тормоз на педали не в центральном положении, а в нулевом.

Можно ли запрограммировать педали таким образом чтобы объединить две оси тормозов двух педалей в одну ось? Превратить педали из трехосных в двухосные, и игра могла видеть две оси как одну. Чтобы ось тормоза левой давала отклонение оси в одну сторону, а тормоз правой - в другую? Начальное положение педалей (тормоз не нажат) было как центральное положение оси.

Если это уже было, пожалуйста, просто напишите - было, ищи.

Спасибо

 

можно. кто-то тут даже писал, но не помню выкладывали ли... но там писать то.

 

script
cms.a1=js1.a2/2+128-((js1.a1+1)/2);
endScript
  • Upvote 1

Share this post


Link to post
Share on other sites

Спасибо за подсказку про объединение осей, всё получилось в итоге, но пришлось разобраться с настройкой в Менеджере через мануал. А в мануале пример с объединением осей является самым первым примером по работе со скриптами ). Может нужно сделать какой-нибудь фастстарт для совсем новичков с выжимкой из мануала? Что где ткнуть, куда вписать, чтобы человек. которому подсказали мог не вдаваясь в детали просто внести все в Менеджер и забыть до следующей задачи по скриптованию. Если есть смысл - сделаю со скринами

 

Прошу извинить за нубский вопрос, но почему вы не используете в качестве обозначения центра оси выражение 255/2 ?

%define centeros 255/2

В тех скриптах, которые проглядел всегда используется либо 127, либо 128, в зависимости от желания или от стороны сравнения (стремимся слева или справа). Есть какие-то ограничения на использование переменных в скриптах? Т.е. везде можно использовать целочисленное значение, но не везде переменную? Или просто привычка? )

Edited by kutshai

Share this post


Link to post
Share on other sites

...Прошу извинить за нубский вопрос, но почему вы не используете в качестве обозначения центра оси выражение 255/2 ?

%define centeros 255/2

... 255/2 будет равно 127... а центр посередине, между 127-128... И когда надо посчитать именно отклонение от центра надо использовать 127 для "нижней" половины и 128 для "верхней"

ну и чтобы не считать каждый раз... ведь "centeros" это не переменная. тогда уж лучше:

%define centeros a1
...
if (firstscan) then centeros = 255/2; endif
...

...Есть какие-то ограничения на использование переменных в скриптах? Т.е. везде можно использовать целочисленное значение, но не везде переменную? Или просто привычка? )

Ограничения есть... во-первых это  связано с тем что вся арифметика целочисленная, (и переменные то же) во-вторых макс число ~231... 

Edited by =J13=Moroka
  • Upvote 1

Share this post


Link to post
Share on other sites

Братья пацаки :gamer: чё та давно мы тут новые скрипты не выдумывали.Дело в следующем :scratch_one-s_head:нужен мне скрипт переключателя.

Вот к примеру есть виртуальные кнопки cms.b1 и cms.b2.Они эмулируют нажатия кнопок A и B на клавиатуре.Но...мне нужно чтобы эмулировлись эти нажатия одной кнопкой РУДа, к примеру js1.b10.А вот выбор того,какая виртуальная кнопка будет срабатывать,должен осуществлятся кнопкой-переключателем,к примеру js1.b3. Например:При загрузке карты,по умолчанию срабатывает cms.b1(при нажатии js1.b10).Нажимаем-отпускаем кнопку-переключатель(js.b3) и теперь срабатывает cms.b2(при нажатии js1.b10).Нажимаем-отпускаем кнопку-переключатель и снова срабатывает cms.b1.Ну и так далее....

Заранее благодарен за помощь :salute:

Share this post


Link to post
Share on other sites
я не понял один момент - вы намеренно отказываетесь от использования в качестве модификатора кнопки js1.b1 (нажатие на министик), которая переключает лампочки? к этой кнопке (ну и лампочкам) привязана предопределенная переменная PROTHRMODE и с ее помощь можно сделать описанный вами "переключатель" сразу на три позиции.
вот так:
if ([PROTHRMODE==0]) then
  cms.b1=js1.b10;
else if ([PROTHRMODE==1]) then
  cms.b2=js1.b10;
else
  cms.b3=js1.b10;
endif
endif
 
если же хочется именно так, как описано - два положения по кнопке b3, то в принципе все тоже самое, но флаг придется объявить самостоятельно.
%define flag b1

script

sequence
  wait(js1.b3);
    flag=true;
  wait(js1.b3);
    flag=false;
endsequence

if (flag) then
  cms.b2=js1.b10;
else
  cms.b1=js1.b10;
endif

endScript

зы. но вообще ИМХО после скрипта Мороки про кривые тут уже нечего постить. Ну разве что попробовать синус в ряд тейлора разложить и в джойтестере нарисовать  :biggrin:

Edited by NobbyNobbs
  • Upvote 2

Share this post


Link to post
Share on other sites

если же хочется именно так, как описано - два положения по кнопке b3, то в принципе все тоже самое, но флаг придется объявить самостоятельно.

Ну да.... И можно чуть покороче

sequence
  wait( js1.b3 );
    b1 = not b1;
  endsequence
cms.b1 = js1.b10 and b1;
cms.b2 = js1.b10 and not b1;
зы. но вообще ИМХО после скрипта Мороки про кривые тут уже нечего постить. Ну разве что попробовать синус в ряд тейлора разложить и в джойтестере нарисовать

Постить и постить!!!  Пусть синус... пусть тейлора... Но ветка умереть НЕ ДОЛЖНА!!!! :)

Edited by =J13=Moroka
  • Upvote 2

Share this post


Link to post
Share on other sites

 

 

я не понял один момент - вы намеренно отказываетесь от использования в качестве модификатора кнопки js1.b1 (нажатие на министик), которая переключает лампочки?

Эта кнопка нужна для других целей,мне удобно переключать js1.b3. :salute:

 

Share this post


Link to post
Share on other sites
У нас в игре имеется несколько "2-х позиционных" команд, висящих на одном переключателе. Например: вкл/выкл форсажа, переключение скоростей нагнетателя, уборка/выпуск шасси и ещё несколько аналогичных.

Сделать управление по этим командам более естественным можно, разнеся их на две отдельные кнопки: вкл-выкл, убрать-выпустить, следующий-предыдущий...Для этого надо сделать, чтобы одна и та же команда выполнялась при нажатии соответствующей кнопки только 1 раз подряд...

Это можно сделать например так:



// CMS Script File: Две кнопки из одного переключателя
%define FirstSw js1.b2; // По указанной здесь кнопке сработает первое переключение
%define SecondSw js1.b3; // ...а по этой следующее...

script
toggle (d1) = not cms.b1;
cms.b1 = (d1 and FirstSw) or (not d1 and SecondSw);
endScript


Рекомендуется на исполняющую кнопку назначить клавиатурные команды (Например" LShift + S" для нагнетателя). Т.к. в некоторых случаях может понадобиться быстро "переключить" соответствующий параметр с помощью клавиатуры, чтобы "попасть в соответствие" (например при старте новой миссии, если предыдущую вы закончили с включенной второй ступенью нагнетателя, закрытым/открытым фонарем, форсажом, и т.п.)

Edited by =J13=Moroka
  • Upvote 1

Share this post


Link to post
Share on other sites

Для установки "соответствия" (сброса таких переключателей) можно назначить какую-нибудь комбинацию, скажем, из четырех кнопок (не из группы переключателей), которую нужно один раз нажать в начале вылета. Тут два варианта действия этой комбинации: 1. обнулить все соответствующие флаги, 2. просто перезагрузить профиль.

Edited by 72AG_terror

Share this post


Link to post
Share on other sites

 

 

1. обнулить все соответствующие флаги...
 

Кстати, тогда надо будет заменить

toggle (d1) = not cms.b1;

на

sequence

wait( js1.b3 );

    b1 = not b1;


  endsequence 

 

 

... 2. просто перезагрузить профиль.
 

Share this post


Link to post
Share on other sites

Не успел отредактировать пост, как залочили :(

Хотел дописать, что, как уже обнаружил Zulu, таймера сбросить не получится, поэтому и надо менять на "sequence..."

Остается перегружать, что не так уж просто (по сравнению с "нажать комбинацию кнопок")... А было бы неплохо иметь такую возможность...

...но и она не исключает необходимости "согласования" кнопок. Поэтому лучше просто назначить две кнопки на одну команду и нет проблем :)

А скрипт нужен скорее, чтобы "апнуть" тему :

Share this post


Link to post
Share on other sites

Скрипт полезный, спасибо, что опубликовал. Пользуюсь такой штукой для нагнетателя.

 

Сброс, конечно, является недостатком, но для одной команды не проблема вручную сбросить при загрузке.

Share this post


Link to post
Share on other sites

Moroka, ты прав, конечно. Я как-то об этом не подумал - невнимательно читаю скрипт. :)

Буду подумать на эту тему...

Share this post


Link to post
Share on other sites
Назначаю прямо в ГИП на кнопочки макросы символов. В частности команды для личного оружия: выбрать (Ctrl+1 - Ctrl+3)... выстрелить (Ctrl+Space)... убрать (Ctrl+`)... Раздельная/совместная стрельба из пушек/пулеметов: Space, Space+LAlt... +RAlt... то бишь с модальными клавишами.

Прописываю по правилам с HOLD: "HOLD LCTL 1"... "HOLD LCTL SPC; и.т.п.

Но в результате!... когда стреляю из ракетницы стреляют и пушки/пулеметы! (коротко)... Когда выбираю ракетницу - выбираются движки (на 2-х моторниках)!... убираю оружие, выводится меню команд!... Стреляю из пулеметов или пушек - в первый момент стреляет все (и по гашеткам видно)  

Смотрю KeyTest... ага! LCtl отпускаетя раньше!...

post-877-0-94698800-1433236382_thumb.jpg

Ладненько... меняем HOLD на KEYS: KEYS +LCTL +1 -1 -LCTL... Зарускаем KeyTest... 

post-877-0-48426300-1433236414_thumb.jpgТО ЖЕ САМОЕ!

Идем дальше... вводим искуственно задержку CHARDLY: KEYS +LCTL +1 -1 CHARDLY -LCTL...

post-877-0-44969800-1433236438_thumb.jpg Наконец-то правильная картинка!...

Лезем в игру... О_НЕЕЕЕТ!!!! опять не из того стреляет/выбирает... как буд-то ничего и не менялось!

С ListMode не легче... Зачем-то жмет кнопки повторно! ...со всеми вытекающими...

post-877-0-51700400-1433236459_thumb.jpg

Замучался... опять назначаю DXкнопки... а так хотелось c cmc файлом поработать...

Но всё таки как правильно?! ...или может у меня глюки с ПО? Может конфликтуют с Saitek Про Квадрант? Кстати грешу на последнее. У меня и по осям РУДа то же чудеса  :wacko:

Share this post


Link to post
Share on other sites

когда стреляю из ракетницы стреляют и пушки/пулеметы! (коротко)... Когда выбираю ракетницу - выбираются движки (на 2-х моторниках)!... убираю оружие, выводится меню команд!... Стреляю из пулеметов или пушек - в первый момент стреляет все (и по гашеткам видно)

 

 

блин... а ведь было такое. сброс бомб висел на той же кнопке, что и пушки, но с шифтом и при сбросе короткая очередь вылетала... потом правда починилось, но в чем было дело я не помню, к сожалению.

 

кстати по поводу HOLD прикол один есть.

 

найдите 1 отличие.

 

post-14111-0-71902000-1433255632_thumb.png

  • Upvote 1

Share this post


Link to post
Share on other sites

Ага!... всего лишь буковкой L отличается. Хороший ребус :) Возможно с тех времен и версий, когда менеджер не различал где сено, где солома где лево, где право. А потом "на костылях" доделали... не без причуд ;) . А что, надо попробовать!

 

Кстати, в переведенном описании не все коды клавиш вставили... KP* и KP- есть в родном и работают...

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

...кстати по поводу HOLD прикол один есть...

...найдите 1 отличие...

Nobby, спасибо, отлично! Попадание в точку!

Нашлось ещё одно, самое главное отличие: с CTL всё работает как надо (в игре)! Но стоит прописать "предлог" L или R - Логика ломается! 

проверил с Alt, то же самое. Стоит прописать L или R - сразу появляется короткое ложное нажатие ("нажимается" всегда второй символ отдельно, без модификатора).

С Shift-ом не проверял, но возможна та же ошибка...

Share this post


Link to post
Share on other sites

Возвращусь к теме переключателя, что несколькими постами выше.

Посетила идея как быть с предустановкой такого переключателя в положение соответственно игровой ситуации...

Для этого будем переключать переменную d из логического переключателя toggle без выполнения команды. А чтобы "отделить" команду от переключения используем короткое (для команды) и долгое (для переключения) нажатие на соотв кнопки. На примере шасси: Стартуешь с полосы - нажми и удерживай (~1 сек) кнопку "выпуска". (в скрипте "off"). Переключатель d установится в соответствующее положение, соответственно сработает только команда "уборка" шасси (в скрипте "on"), а "выпуск" блокируется. А если стартуешь в небе, соответственно жми и удерживай "уборка шасси". ...

Особенности работы: команда подаётся в момент отпускания, а не по нажатию соответствующей кнопки. Время срабатывания "долгого" нажатия: t в секции %define...

... ну и сам скрипт чуть разросся :( Можно, правда все эти %define выкинуть, тогда не так страшно получится


// CMS Script File: Две кнопки для одного переключателя
//
%define on js1.b16 // кнопка "вкл"
%define off js1.b14 // кнопка "выкл"
%define son b1 // короткое нажатие "вкл"
%define soff b2 // короткое нажатие "выкл"
%define lon b3 // долгое нажатие "вкл"
%define loff b4 // долгое нажатие "выкл"
%define t 6 // время для срабатывания долгого нажатия
//
script
cms.b1 = (d1 and son) or (not d1 and soff); // cms.b1 - кнопка нужной команды
toggle (d1) = (!cms.b1) and !(lon and d1) and !(loff and !d1);// нифигасебе какая длинная получилась :0
// Распознаем короткие и долгие нажатия
timer(period,d2,t)=on;
son = d2 and !on; // короткое нажатие "on"
lon = !d2 and on; // долгое нажатие "on"
timer(period,d3,t)=off;
soff = d3 and !off; // короткое нажатие "off"
loff = !d3 and off; // долгое нажатие "off"
endScript

...а мне вот чего попалась!

Далее планирую выложить скипты для нормализации работы переключателей нагнетателя, - на каждую скорость, - своя кнопка (положение)

Оказывается уж больше года как Zulu уже всё знал!..., но зажал таки такой скрипт и молчал   ;), а мы тут мучайся... :)

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

блин... а ведь было такое. сброс бомб висел на той же кнопке, что и пушки, но с шифтом и при сбросе короткая очередь вылетала... потом правда починилось, но в чем было дело я не помню, к сожалению.

 

кстати по поводу HOLD прикол один есть.

 

найдите 1 отличие.

 

cmc.png

забавная находка :-)

Возвращусь к теме переключателя, что несколькими постами выше.

Посетила идея как быть с предустановкой такого переключателя в положение соответственно игровой ситуации...

Для этого будем переключать переменную d из логического переключателя toggle без выполнения команды. А чтобы "отделить" команду от переключения используем короткое (для команды) и долгое (для переключения) нажатие на соотв кнопки. На примере шасси: Стартуешь с полосы - нажми и удерживай (~1 сек) кнопку "выпуска". (в скрипте "off"). Переключатель d установится в соответствующее положение, соответственно сработает только команда "уборка" шасси (в скрипте "on"), а "выпуск" блокируется. А если стартуешь в небе, соответственно жми и удерживай "уборка шасси". ...

Особенности работы: команда подаётся в момент отпускания, а не по нажатию соответствующей кнопки. Время срабатывания "долгого" нажатия: t в секции %define...

... ну и сам скрипт чуть разросся :( Можно, правда все эти %define выкинуть, тогда не так страшно получится

 

 

// CMS Script File: Две кнопки для одного переключателя
//
%define on js1.b16 // кнопка "вкл"
%define off js1.b14 // кнопка "выкл"
%define son b1 // короткое нажатие "вкл"
%define soff b2 // короткое нажатие "выкл"
%define lon b3 // долгое нажатие "вкл"
%define loff b4 // долгое нажатие "выкл"
%define t 6 // время для срабатывания долгого нажатия
//
script
cms.b1 = (d1 and son) or (not d1 and soff); // cms.b1 - кнопка нужной команды
toggle (d1) = (!cms.b1) and !(lon and d1) and !(loff and !d1);// нифигасебе какая длинная получилась :0
// Распознаем короткие и долгие нажатия
timer(period,d2,t)=on;
son = d2 and !on; // короткое нажатие "on"
lon = !d2 and on; // долгое нажатие "on"
timer(period,d3,t)=off;
soff = d3 and !off; // короткое нажатие "off"
loff = !d3 and off; // долгое нажатие "off"
endScript
...а мне вот чего попалась!

Оказывается уж больше года как Zulu уже всё знал!..., но зажал таки такой скрипт и молчал ;), а мы тут мучайся... :)

а чо, я так и не выложил?

Share this post


Link to post
Share on other sites

Решил повозиться с экранными CMCC переменными screenx и screeny.

Читаются хорошо, а вот записать в них значение (и соответственно подвигать курсор) - никак :(

Есть у кого нибудь более успешный опыт, чем мой ?

Share this post


Link to post
Share on other sites

Решил повозиться с экранными CMCC переменными screenx и screeny.

Читаются хорошо, а вот записать в них значение (и соответственно подвигать курсор) - никак :(

Есть у кого нибудь более успешный опыт, чем мой ?

 

привет.

вроде бы все работает (если CH Control Manager закрыт).

Share this post


Link to post
Share on other sites

проверил. точно работает, главное контрол менеджер закрыть.

 

ну и чтобы зря добру не пропадать - вот не совсем удачный тестовый пример (неудачный потому что мышь перестанет фунциклировать - придется менеджер с клавиатуры запускать или министиком в ярлык прицеливаться  :)  )

 

%define centerx a1
%define centery a2
%define cursorx a3
%define cursory a4
 
script
 
centerx=screenwidth/2;
centery=screenheight/2;
 
cursorx=(js1.a1-128)*screenwidth/256;
cursory=(js1.a2-128)*screenheight/256;
 
  screenx=centerx+cursorx;
  screeny=centery+cursory;
 
endScript
 
  • Upvote 1

Share this post


Link to post
Share on other sites

 

 

вроде бы все работает (если CH Control Manager закрыт).
 

Точно, работает...Главное контрол менеджер закрыть!

Спасибо, Nobby... 

...и чтоб я без твоих подсказок делал :)

Share this post


Link to post
Share on other sites

Ребят, есть проблема. Я в этой теме пока страшный нуб, очень надеюсь что здесь кто-нибудь сможет подсказать.

Купил себе недавно CH PRO Throttle.

 

В настройках Windows USB Controller и в CH Control Manager всё вроде работает как надо. А вот в Elite: Dangerous, под который я его и брал, он у меня работает следующим образом: при нажатии на рычаг, сначала не происходит вообще ничего, до тех пор пока рычаг не достигает среднего положения - в этом момент скорость начинает резко увеличиваться, причем простая остановка рычага ничего не меняет - чтобы остановить увеличение скорости, приходится немного потянуть рычаг назад. Неудобно страшно, скорость контролировать вообще невозможно. До этого у меня был сайтек х52 - с ним никаких проблем не было.

 

В чем может быть дело?

 

Заранее благодарю за помощь.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...