Jump to content
NobbyNobbs

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

Recommended Posts

Ну наконец-то:

http://s26.postimg.org/4snbjjynt/Clip9.jpg

 

отлично! 

теперь у меня есть один риторический вопрос и две небольших ремарки.

 

вопрос: нужно ли было нажимать кнопку mapped mode? но помня, о заповеди "работает - не трогай" ответ на него искать не будем.

 

и ремарки:

 

1. mapped mode нужно активировать при каждом запуске системы. самый простой вариант - добавить в папку "автозапуск" ярлык на утилиту CMStart, которая лежит в директории Control Managera, тогда все будет активироваться автоматически при запуске Windows. Можно конечно и руками через Control Manager.

2. чувствительность оси 0.5. учитывая, что это не совсем чувствительность, а настройка кривой отклика, значение  0.5, на мой взгляд, является не самым удачным вариантом. вы имеете низкую чувствительность и высокую точность в центре, что замечательно, но очень острую реакцию рулей в крайних положениях, что при той эффективности рулей направления, которая есть в БЗС совсем не здорово. поэтому поиграйтесь со значениями в районе 0,25, мне кажется так должно быть удобнее. но если вам хорошо летается с кривыми выставленными в 0,5, то почему бы и нет.

 

удачных полетов!

а, ну да, чуть не забыл. здоровья! обязательно лечите спину.

Edited by saatanaperkele

Share this post


Link to post
Share on other sites

Сейчас ломаю голову, как в режиме HOTAS управиться с доп. вооружением (ракетницы, пистолет - 6-7 команд), командами стрелкам и ведомым (всего 23 команды), и жестами (6 команд). Ну если не со всеми, то хотя бы с частью самых востребованных... :rolleyes:

Есть мысли какие нибудь на эту тему?

 

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

в общем и целом все сводится к тому "шифту", который где-то выше в теме написал Веспе, только мы его модернизируем следующим образом:

1. если мы не трогали шифт кнопка №1 работает, как кнопка №1

2. если мы один раз нажали на шифт, то кнопка №1 работает как кнопка №2;

3. если мы дважды нажали на шифт, то кнопка №1 работает как кнопка № 3.

4. если мы трижды... но это уже перебор имхо.

 

итак, переключатель "режимов":

 

sequence
wait(js1.b4); 
if([a1<2])then
a1=a1+1;
else
a1=0;
endif
endsequence
cms.a1=a1;

 

я думаю этот блок в комментариях не нуждается: при последовательном нажатии на кнопку b4 по кругу меняем значения оси a1 от 0 до 2 (cms.a1 я использовал чтобы протестировать этот кусок).

 

дальше идет "расширенный алгоритм Веспе" для той четырехпозиционной хатки, которая под указательным пальцем:

 

if (not (cms.b1 or cms.b2 or cms.b3)) then
cms.b1=(js1.b5 and [a1==0]);
cms.b2=(js1.b5 and [a1==1]);
cms.b3=(js1.b5 and [a1==2]);
else if (cms.b1) then
cms.b1 =js1.b5;
else if (cms.b2) then
cms.b2 =js1.b5;
a1=0;
else if (cms.b3) then
cms.b3 =js1.b5;
a1=0;
endif
endif
endif
endif
 
if (not (cms.b4 or cms.b5 or cms.b6)) then
cms.b4=(js1.b6 and [a1==0]);
cms.b5=(js1.b6 and [a1==1]);
cms.b6=(js1.b6 and [a1==2]);
else if (cms.b4) then
cms.b4 =js1.b6;
else if (cms.b5) then
cms.b5 =js1.b6;
a1=0;
else if (cms.b6) then
cms.b6 =js1.b6;
a1=0;
endif
endif
endif
endif
 
if (not (cms.b7 or cms.b8 or cms.b9)) then
cms.b7=(js1.b7 and [a1==0]);
cms.b8=(js1.b7 and [a1==1]);
cms.b9=(js1.b7 and [a1==2]);
else if (cms.b7) then
cms.b7 =js1.b7;
else if (cms.b8) then
cms.b8 =js1.b7;
a1=0;
else if (cms.b9) then
cms.b9 =js1.b7;
a1=0;
endif
endif
endif
endif
 
 
if (not (cms.b10 or cms.b11 or cms.b12)) then
cms.b10=(js1.b8 and [a1==0]);
cms.b11=(js1.b8 and [a1==1]);
cms.b12=(js1.b8 and [a1==2]);
else if (cms.b10) then
cms.b10 =js1.b8;
else if (cms.b11) then
cms.b11 =js1.b8;
a1=0;
else if (cms.b12) then
cms.b12 =js1.b8;
a1=0;
endif
endif
endif
endif

 

после нажатия кнопок хатки ось a1 сбрасывается в ноль, что освобождает нас от необходимости помнить в каком она положении находится.

 

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

 

зы. писать то же самое еще для двух хаток мне было лень.

ззы. архив с картой, состоящей из одного протроттла и скриптом Map.zip

Edited by saatanaperkele

Share this post


Link to post
Share on other sites

Да! Это хорошее решение! Систематизирует команды в таблицу!... а не устраивает из РУДа кларнет с Shiftами и Ctrlами :)

...сейчас проникнусь "расширенным алгоритмом Веспе" и попробую набросать табличку...

Спасибо!

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

поездил с новой центровкой на лагге, обплевался и повесил советские тормоза на педали.

две реальные оси привязаны к одной виртуальной, какая педаль нажата сильнее, та и отвечает за тормоза (сделал эту ось четвертой осью на педалях).
код до безобразия элементарен.
 
if([js3.a1>=js3.a2]) then
cms.a4=js3.a1;
else
cms.a4=js3.a2;
endif
 
присобачить это к советским тормозам в игре можно двумя способами: отключив DX у реальных педалей назначить управление из игры, затем включить DX обратно, либо прописать в файле current.actions строку
rpc_wheel_brakes,                                 joy2_axis_t,                                      0|
 
где вместо 2 может быть другая цифра.
Edited by saatanaperkele

Share this post


Link to post
Share on other sites

 

...когда в он-лайне на ЛАГГе, то до полосы и не добираюсь :) в лучшем случае аварийно в поле...

 

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

 

...кстати, составил удобную табличку команд... попробовал "расширенный алгоритм Веспе... потом попробовал его переделать... потом попробовал вариант на 2-х кнопках.. типа "1 точка-2 тире"... получил удовольствие от занятия программированием... и решил ... всё оставить как есть - на клавиатурных комбинациях :) тем более, что теперь табличка-то есть

 

Edited by =J13=Moroka
  • Upvote 1

Share this post


Link to post
Share on other sites

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

 

эээммм... да по правде говоря я просто очень сильно затупил :crazy:. совсем запарил, что общий тормоз и на немцев с те же успехом действует :blush:  

в общем там в #85 icon_share.png бред написан, надо как-то иначе выходить из положения с советскими самолетами... ну или другой профиль юзать, да, но тогда дополнительная ось тоже не нужна.

это все от расстройства по безвременно или своевременно сдохшему сайдвиндеру фф2 наверное  :)

Share this post


Link to post
Share on other sites

Если у вас Win 8 или Win 8.1 и после загрузки система не реагирует на Сombatstick/Fighterstick, проще всего оживить их проделав следующее:

  • запускаем Control manager
  • щелкаем на test/calibrate
  • щелкаем на Rescan
  • Готово
  • Upvote 2

Share this post


Link to post
Share on other sites
Всем привет. А вот и я сделаю свой вклад в общее дело. :)  Дам серию функционально законченных скриптов с пояснениями.

 

А оно надо???   :(  Х.З.  

 

Первое с чего хочу начать это усовершенствование работы РУД.

При пробеге после посадки ЛаГГа, Ла приходится обдувать хвостовое оперение винтом, для сохранения управляемости и исключения неуправляемого вращения называемого "циркуль".  При этом обдув должен быть не слишком сильным, что бы сохранить возможность тормозить колесами, и в то-же время быть достаточным для управления самолетом на пробеге.  Опытным путем установил, что для этого требуется поддерживать наддув в диапазон 300-330 мм.рт.ст.  Но точное дозирование в этом диапазоне затруднено, поэтому я написал скрипт, который снижает чувствительность РУД в зоне малых оборотов (нужных на посадке), и делает более чувствительным в зоне высоких, которые используются в бою.

 

Сразу оговорюсь, что у меня для двухмоторников, Ф4, и нашей техники, имеются собственные профили (mode) переключаемые на лету, поэтому в данном случае я осуществляю проверку профиля через предустановленную переменную CURRENTMODE, что бы скрипт работал только в режиме для ЛаГГа.  Для тех, у кого всего один профиль, эту проверку можно исключить.

 

Для удобства  в шапке скрипта определяем переменную которая будет соответствовать оси газа в режим Mapped

 

%DEFINE ComboThrottle   CMS.A2  // Эту ось потом в GUI назначим устройству  CM Device1  axis Z

 

Далее в теле скипта  помещаем следующий код

IF ([CURRENTMODE EQ 0]) THEN // Если активен нулевой профиль 

                            

  IF ([JS2.A3 <=85])THEN     // Если положение ручки в диапазоне 0-85 ( это режим макс. оборотов)

    ComboThrottle = JS2.A3 * 2 ;  // устанавливаем чувствительность оси (наклон функции) 2.0  

  ELSE                       // в остальных случаях

    Combothrottle = JS2.A3 /2 +128;  //устанавливаем чувствительность оси (наклон функции)  0.5

  ENDIF

ENDIF

 

Сразу поясню, что значения 85 и 128 не случайны, это расчетные  координаты точки пересечения прямых с коэфф. 0.5 и 2 на графике зависимости тяги от положения, если вы такой график нарисуете :)

 

И названия осей CMS.A2, JS2.A3  даны для моей конфигурации - естественно у вас они будут другие.

 

 

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

И приведение управления щитками в полном соответствии с РЛЭ, а не так как сейчас.

 

Если надо, продолжу :)

Edited by [I.B.]Zulu
  • Upvote 3

Share this post


Link to post
Share on other sites

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

 

CM logics.pdf

 

Очень помогает при освоении скриптового языка или когда забыл, что же они значат.   А именно так и бывает, однажды запрограммировав и получив надежный код, уже к этому не возвращаешься.  А когда вдруг потребовалось, что то написать новое, уже все забыл. В этом случае и приходит на помощь этот файлик :)

 

 

  • Upvote 2

Share this post


Link to post
Share on other sites

Про щитки скинь пожалуйста, как раз хотел написать себе ))

(речь про рлэ лагга/ла я так понимаю)

Share this post


Link to post
Share on other sites

Zulu, пиши про щитки.... Обмозгуем, попробуем, ....

У нас здесь интересных идей никогда много не бывает!

 

....и спасибо за диаграммы....

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

Zulu, пиши про щитки.... Обмозгуем, попробуем, ....

 

я написал уже ))

как-то вот так это у меня получилось
 
sequence
wait (cms.b48); //ждем нажатия кнопки на устройстве, пусть это будет "выпуск" (у меня переназначены фактически все кнопки, поэтому я жду виртуальную)   
if(not cms.b95)then //если не нажата кнопка "уборка"
cms.b94=true; //нажимаем кнопку "выпуск"
else //если же "уборка" нажата
cms.b95=false; //выключаем ее
endif
endsequence
 
sequence //аналогично для "уборки"
wait (cms.b54);
if(not cms.b94)then
cms.b95=true;
else
cms.b94=false;
endif
endsequence
Edited by NobbyNobbs

Share this post


Link to post
Share on other sites

только... есть мнение, что при использовании на немцах это будет немножко читерством.

Share this post


Link to post
Share on other sites

Ага, в общем где то так. Но, по РЛЭ логика чуток другая.
-Нажав кнопку "выпуска" - щитки выходят до тех пор, пока не выпустятся полностью (не надо удерживать кнопку). Если в процессе выпуска повторно нажать "выпуск", то щитки останавливаются в этом промежуточном положении.
- То же для кнопки "уборка".
- Полное время выпуска щитков около 6 секунд.

НО в БзС все по другому, щитки выпускаются (убираются) только покуда зажата кнопка. Поэтому наша задача, сделать так, что бы воздействие на кнопку прекращалось строго тогда, когда выпуск(уборка) закончились. Ну что бы еще и анимация в кабине соответствовала. Для этого в скрипт вводится анализ тиков системного времени. По ним происходит синхронизация, и по ним скрипт ориентируется сколько еще времени удерживать "нажатой" кнопку для БзСа

Итак основная идея, - иметь индивидуальный счетчик времени работы щитков. Если считчик равен нулю, то значит щитки убраны, если равен максимуму, то скрипт знает, что щитки выпущены на максимум. Благодаря счетчику, в случае прервывания выпуска, мы всегда будем знать, сколько же времени осталось до полного выпука, и наоборот.

Ну и последнее, мы можем выйти из игры с выпущенными щитками, а задем снова с поднятыми.Гы.Гы. Возникнет нестыковка истинного положения щитков с расчетным в скрипте. Поэтому мы должны предусмотреть возможность стартовой синхронизации щитков со счетчиком.

 

Прим. Скрипт внешне получился сложным. Но зато отработана канва с таймингами для подвязки работы щитков на Ось джойстика. Реализую чуть позже.

И простите меня, раскрашивать в цвета CH устал. Поэтому в конце красил только базовые вещи

Шапка
%DEFINE LaggFlapTime 6200*28 // ~170000 OS ticks - приблизительно 6,2 секунды.
                            //На разных компьютерах

                           //может отличаться. Подобрать экспериментально
%DEFINE TimeCheck  A1 // для хранения промежуточных значений TIMESTAMP
%DEFINE FLAPUP_BTN CMS.B124 // Кнопка подъема щитков
%DEFINE FLAPDN_BTN CMS.B125 // Кнопка выпуска щитков
%DEFINE DN_DIR     B4 // флаг движения вниз
%DEFINE UP_DIR     B5 // флаг движения вверх
%DEFINE LaGG       B2 // Flaps Normal(LaGG) - true, Yak - False
%DEFINE ON         B253 // Флаг разрешения работы


В теле скрипта

//-
ON = Lagg; // Переменная режима ЛаГГ (нужна только в моем скрипте)
ON = TRUE; /// Если надо выключить быстро скрипт - поставить в FALSE

PULSE (INIT) = JS4.B13; //Импульс принудительной стартовая инициализация

// Синхронизация
IF (INIT OR FIRSTSCAN) THEN //Если активен импульс стартовой синхронизации или если
// первый скан цикл по скрипту
Total_Flap_Time = 0; // Обнуляем счетчик времени работы щитков.
DN_DIR = FALSE; // Сбрасываем флаги направления движения щитков.
UP_DIR = FALSE;
ENDIF

IF(LaGG AND NOT ON) THEN // Если режиме ЛаГГ выключен - щитки работают как обычно в БзС
 FLAPUP_BTN = JS1.B7;
 FLAPDN_BTN = JS1.B9;
ENDIF


// --- Код работы щитков Для режима ЛаГГ
PULSE (STOP) = JS1.B9 OR JS1.B7; // Импульс прерывания для обработки нажатий кнопок щитков.
 IF (STOP AND ON) THEN // Если импульс получен
  CheckTime = TIMESTAMP; // Делаем засечку времени
  DN_DIR = JS1.B9 AND NOT DN_DIR; // Назначаем статус Флага Вниз (toggle)
  UP_DIR = JS1.B7 AND NOT UP_DIR; // Назначаем статус Флага Вверх (toggle)
ENDIF

SEQUENCE // Обработка движения вниз
WHILE (DN_DIR AND ON); //
Total_Flap_Time = Total_Flap_Time + (TIMESTAMP - CheckTime);
IF ([Total_Flap_Time >= LaggFlapTime]) THEN
 FLAPDN_BTN = FALSE;
 Total_Flap_Time = LaggFlapTime; // Выравниваем счетчик по максим. времени щитков
ELSE
 FLAPDN_BTN = TRUE;
ENDIF
DELAY(2);

ENDSEQUENCE

 

IF (NOT DN_DIR AND ON) THEN
 FLAPDN_BTN = FALSE; // Если флаг направления сброшен, отжимаем кнопку "Вниз"
ENDIF

SEQUENCE // Обработка движения щитков вверх
WHILE (UP_DIR AND ON); //
Total_Flap_Time = Total_Flap_Time - (TIMESTAMP - CheckTime);
IF ([Total_Flap_Time <= 0]) THEN
 FLAPUP_BTN = FALSE;
 Total_Flap_Time = 0; // Выравниваем счетчик на ноль.
ELSE
 FLAPUP_BTN = TRUE;
ENDIF
DELAY(2);

ENDSEQUENCE

 

IF (NOT UP_DIR AND ON) THEN
 FLAPUP_BTN = FALSE; // Если флаг направления сброшен, отжимаем кнопку "Вверх"
ENDIF
//-
A3 = Total_Flap_Time; // Поддержка в живом состоянии счетчика
Total_Flap_Time = A3; // т.к. существует баг ПО, приводящий к сбросу аналоговых переменных
// если они долго не используются. Потерял целый день, пока вычислил
// этот баг, связанный с рассинхронизацией при длительном неиспользовании щитков!!!

Edited by [I.B.]Zulu
  • Upvote 2

Share this post


Link to post
Share on other sites

да уж, фундаментальный подход.

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

 

зы. почему-то в шапке определяется TimeCheck, а в скрипте используется CheckTime.

  • Upvote 1

Share this post


Link to post
Share on other sites

 

 

зы. почему-то в шапке определяется TimeCheck, а в скрипте используется CheckTime.

Ай молодец! Ошибся тут, в написании. Должно быть одинаково естественно! :)

Share this post


Link to post
Share on other sites

Задачка любителям Пе-2 и программирования на выходные и праздничные дни :):

Надо с помощью хатки на РУДе (например той, что под указательный палец) плюс одной из кнопок  b2-b4 в качестве shifta:

1. оперативно переключаться между 2(3)-мя положениями: пилота и 2-х стрелков (фактически между управлением самолета и обороной хвоста)

2. оперативно, с помощью хатки, "в один клик" переключаться между всеми 4-я позициями стрелков - 1 верхнее и 3 нижних...

3. ...желательно задействовать команды "взять оружие" - T и "смотреть через прицел" - Shift+T

.... теперь о проблемах

4. ...что делать со скриптом, если одного из стрелков убили или "подсел"/ "вышел" "живой" игрок?

....

можно не сразу всё... а сначала первые 3 пункта...

 

ПыСы: Придется учитывать интервал между "сменой мест", т.к. подряд две команды Ctrl+C или Shift+C не срабатывают, пока не закончиться предыдущая... 

 

ПыПыСы: Приятных выходных... ;)

Edited by =J13=Moroka

Share this post


Link to post
Share on other sites

// Включение форсажа от двойного толчка РУД в макс. положении (по типу дабл клик на мышке, только РУДом, дважды, в макс положении)

в Шапке
%DEFINE MAXTHRTL1   D10     // Флаг Контрольный интервал 1
%DEFINE MAXTHRTL2   D11     // Флаг Контрольный интервал 2

%DEFINE TIME_5MIN   D12   // флаг действия 5 минутного интервала 

%DEFINE BOOST_ON    B20 
в теле скрипта
PULSE(D8) = [JS2.A3 <=3];  // Импульс от первого достижения макс. положения
                      //Запускаем таймер 350 мсек

TIMER (PERIOD,MAXTHRTL1,8) = [JS2.A3 <=3] AND NOT MAXTHRTL1 AND NOT MAXTHRTL2;  
                     // Засекли, что РУД двинулся назад  в указанный интервал времени                               //запускаем второй таймер

TIMER(PERIOD, MAXTHRTL2, 8) = [JS2.A3 > 7] AND NOT D8 AND MAXTHRTL1; 

 

PULSE(D9) = MAXTHRTL2 AND[JS2.A3 <=3 ];  // Раз за период второго таймера

                                         // РУД снова достиг макс, даем импульс
 

SEQUENCE  // реакция на импульс путем включения форсажа на кнопке CMS.B2
 WAIT(D9);  // дождались импульса D9
 BOOST_ON = TRUE;   // выставили флаг форсажа
 CMS.B2 = TRUE;     // нажали кнопку
DELAY(2);
 CMS.B2 = FALSE;    // отжали кнопку
ENDSEQUENCE

 

SEQUENCE  // Выключение форсажа  при движении РУД назад.
 WAIT(BOOST_ON AND [JS2.A3 > 10]);   // Если Форсаж активен и РУД поехал назад
 CMS.B2 = TRUE;    // нажали кнопку
DELAY(2);
 CMS.B2 = FALSE;  // отпустили кнопку
 BOOST_ON = FALSE;  // убрали флаг форсажа
ENDSEQUENCE
//-----------

Edited by [I.B.]Zulu
  • Upvote 3

Share this post


Link to post
Share on other sites

@=J13=Moroka

 

ИМХО тут скрипт не нужен, нужен простой маппер:

одной кнопке вы просто прописываете: "HOLD LCTL c" чтобы переключать позиции

второй: "HOLD LSHF c" чтобы переключать огневые точки, 

третьей: "KEYS +t  -t +lshf CHARDLY +t -t CHARDLY -lshf" чтобы брать лупомет и смотреть в прицел

 

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

Share this post


Link to post
Share on other sites

@=J13=Moroka

 

ИМХО тут скрипт не нужен, нужен простой маппер:

одной кнопке вы просто прописываете: "HOLD LCTL c" чтобы переключать позиции

второй: "HOLD LSHF c" чтобы переключать огневые точки, 

 

 

Да. А кнопки ОДИН и ДВА можно с легкостью заменить одной, например, используя ее в режиме LIST (список). Один раз нажали - стрелкИ, второй раз - пилоты. И так далее бесконечно по кругу.

Pressed     |    Released |

------------|-------------|

   C        |             |

------------|-------------|

HOLD LСTL c |             |

------------|-------------|

 

2 NobbyNobbs

"HOLD LSHF с"   = "С"    ;) 

Edited by [I.B.]Zulu
  • Upvote 1

Share this post


Link to post
Share on other sites

 

Если у вас Win 8 или Win 8.1 и после загрузки система не реагирует на Сombatstick/Fighterstick, проще всего оживить их проделав следующее:

  • запускаем Control manager
  • щелкаем на test/calibrate
  • щелкаем на Rescan
  • Готово

 

Небольшое Уточнение.

Проблема возникает так же в Win7 64 bit и не после Перезагрузки (после нее все зашибись), а после Sleep или Hybernate.

В качестве решения НА ВСЮ ЖИЗНЬ, кто то предложил купить PCI плату с портами USB и подключать джойстики туда. В этом случае, при засыпании питание с джоев будет сниматься всегда , а после оживления снова подаваться, что приведет к рескану устройств.

Вот.   Сам не пробовал. Мне и  программно рестарт сделать не влом, все равно ж map грузить, трекир(фритрек) подстраивать... :)

тест переключения портов на карту PCI результата не принес

Edited by RR_Zuboff

Share this post


Link to post
Share on other sites

@=J13=Moroka

 

ИМХО тут скрипт не нужен, нужен простой маппер:

...

Конечно, можно обойтись без скрипта! Команды есть... Но чтобы облегчить жизнь вирпилу (и усложнить програмисту :)) хочу, чтобы скрипт (4-х поз. хатка) непосредственно переключал в одну из 4-х позиций/огн.точек. Сейчас, чтобы пересесть с места пилота на место "нижнего" стрелка надо 2 раза выполнить команду... Снова за пилота - 1 раз, а вот сразу на верхнего стрелка - снова 2 раза. В условиях скоротечной атаки и задержек переключения(перемещения) легко "проскочить" нужную позицию. Прибавьте к этому такое же , перебором, переключение по огневым точкам... то понятно ,что даже просто увидеть в "нужном" прицеле вражину становится сложно ;)

Share this post


Link to post
Share on other sites

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

...кстати, если вы в одном из позиций "отпустили/взяли" оружие, то это состояние запоминается именно для этой позиции, и не связано с другими...

Share this post


Link to post
Share on other sites

тогда как то вот так:

 

 

 

 
post-14111-0-15253200-1399735529_thumb.png
 
 
%DEFINE CurNumber a1; // Номер рассчета 0-2 (пилот - штурман - радист)
%DEFINE TailGunnerPos a2; //позиция радиста борт1, борт2, люк
%DEFINE NextPos cms.b1;//
%DEFINE FirstGunnerStatus b2; //состояние штурмана
%DEFINE SecondGunnerStatus b3; //состояние радиста
%DEFINE a1 0;
%DEFINE a2 0;
%define TakeGun cms.b2;
%define Aim cms.b3;
%DEFINE NextPoint cms.b4;
 
script
sequence
//пусть j1.b6 это кнопка включения штурмана, cms.b1 ~ [Ctrl+C], cms.b2 ~ [t], cms.b3~[lshf+t], cms.b3~[lshf+c]
 
//переключаемся на штурмана
     wait(not FirstGunnerStatus and js1.b6 and [curnumber==0]);//если текущая позиция - пилот и мы первый раз сели за штурмана
        NextPos=true;  // переключаем позицию Ctrl+C
        delay(2);
        NextPos=false;
        TakeGun=true; //берем пулемет
        delay(2);
        TakeGun=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=1;
        FirstGunnerStatus=true;
endsequence
 
sequence
wait(FirstGunnerStatus and js1.b6 and [curnumber==0]);//если текущая позиция - пилот и мы не первый раз сели за штурмана
        NextPos=true;  // переключаем позицию Ctrl+C
        delay(2);
        NextPos=false;
        Aim=true; //пулемет у нас уже есть, просто смотрим в вприцел.
        delay(2);
        Aim=false;
        curnumber=1;
endsequence
 
 
sequence
     wait(not FirstGunnerStatus and js1.b6 and [curnumber==2]);//если текущая позиция - радист и мы первый раз сели за штурмана
        NextPos=true;  // переключаем позицию Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;
        delay(2);
        NextPos=false;
        delay(2);
        TakeGun=true; //берем пулемет
        delay(2);
        TakeGun=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=1;
        FirstGunnerStatus=true;
endsequence
 
sequence
wait(FirstGunnerStatus and js1.b6 and [curnumber==2]);//если текущая позиция - радист и мы не первый раз сели за штурмана
        NextPos=true;  // переключаем позицию Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;
        delay(2);
        NextPos=false;
        Aim=true; //смотрим в вприцел.
        delay(2);
        Aim=false;
        curnumber=1;
endsequence
// похоже, что со штурмана достаточно.
 
//------------------------------------------------------------------------------------
//радист
//j1.b10 - кнопка включения хвостовой огневой точки (не стал заморачиваться с сочетаниями)
sequence
        wait(not SecondGunnerStatus and js1.b10 and [curnumber==0]  and [TailGunnerPos==0]);//если текущая позиция пилот, это первое переключение на стрелка-радиста
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;  // два раза
        delay(2);
        NextPos=false;
        delay(2);
        TakeGun=true; //берем пулемет
        delay(2);
        TakeGun=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        SecondGunnerStatus=true;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b10 and [curnumber==0]  and [TailGunnerPos==0]);//если текущая позиция пилот, это не первое переключение на стрелка-радиста
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;  // два раза
        delay(2);
        NextPos=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b10 and [curnumber==0]  and [TailGunnerPos==1]);//если текущая позиция пилот, это не первое переключение на стрелка-радиста, текущая точка - левый борт
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;  // два раза
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;  // Lshf+C
        delay(2);
        NextPoint=false;
        delay(20); // с параметром надо поиграть, но с 2 и 10 обработать не успевает
        NextPoint=true;  // два раза
        delay(2);
        NextPoint=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=0;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b10 and [curnumber==0]  and [TailGunnerPos==2]);//если текущая позиция пилот, это не первое переключение на стрелка-радиста, текущая точка - правый борт
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;  // два раза
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;  // Lshf+C
        delay(2);
        NextPoint=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=0;
endsequence
sequence
        wait(not SecondGunnerStatus and js1.b10 and [curnumber==1]  and [TailGunnerPos==0]);//если текущая позиция штурман, это первое переключение на стрелка-радиста
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        TakeGun=true; //берем пулемет
        delay(2);
        TakeGun=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        SecondGunnerStatus=true;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b10 and [curnumber==1]  and [TailGunnerPos==0]);//если текущая позиция штурман, это не первое переключение на стрелка-радиста
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b10 and [curnumber==1]  and [TailGunnerPos==1]);//если текущая позиция штурман, это не первое переключение на стрелка-радиста, текущая точка - левый борт
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;  // Lshf+C
        delay(2);
        NextPoint=false;
        delay(20); // с параметром надо поиграть, но с 2 и 10 игра обработать не успевает
        NextPoint=true;  // два раза
        delay(2);
        NextPoint=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=0;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b10 and [curnumber==1]  and [TailGunnerPos==2]);//если текущая позиция штурман, это не первое переключение на стрелка-радиста, текущая точка - правый борт
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;  // Lshf+C
        delay(2);
        NextPoint=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=0;
endsequence
//-----------------------------------------------------------------------------------------------
//левая по курсу огневая точка б11
sequence
        wait(not SecondGunnerStatus and js1.b11 and [curnumber==0]  and [TailGunnerPos==0]);//если текущая позиция пилот, это первое переключение на стрелка-радиста
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(2);
        TakeGun=true; //берем пулемет
        delay(2);
        TakeGun=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=1;
        SecondGunnerStatus=true;
endsequence
sequence
        wait(not SecondGunnerStatus and js1.b11 and [curnumber==1]  and [TailGunnerPos==0]);//если текущая позиция штурман, это первое переключение на стрелка-радиста
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(2);
        TakeGun=true; //берем пулемет
        delay(2);
        TakeGun=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=1;
        SecondGunnerStatus=true;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b11 and [curnumber==0] and [TailGunnerPos==0]);//если текущая позиция пилот, это не первое переключение на стрелка-радиста, текущая турель задняя
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=1;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b11 and [curnumber==1] and [TailGunnerPos==0]);//если текущая позиция штурман, это не первое переключение на стрелка-радиста, текущая турель задняя
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=1;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b11 and [curnumber==0] and [TailGunnerPos==1]);//если текущая позиция пилот, это не первое переключение на стрелка-радиста, текущая турель левая
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=1;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b11 and [curnumber==1] and [TailGunnerPos==1]);//если текущая позиция штурман, это не первое переключение на стрелка-радиста, текущая турель левая
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=1;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b11 and [curnumber==0] and [TailGunnerPos==2]);//если текущая позиция пилот, это не первое переключение на стрелка-радиста, текущая турель правая
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(20);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=1;
 
endsequence
sequence
        wait(SecondGunnerStatus and js1.b11 and [curnumber==1] and [TailGunnerPos==2]);//если текущая позиция штурман, это не первое переключение на стрелка-радиста, текущая турель правая
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(20);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=1;
endsequence
//-----------------------------------------------------------------------------------------------
//правая по курсу огневая точка б9
sequence
        wait(not SecondGunnerStatus and js1.b9 and [curnumber==0]  and [TailGunnerPos==0]);//если текущая позиция пилот, это первое переключение на стрелка-радиста
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(20);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(2);
        TakeGun=true; //берем пулемет
        delay(2);
        TakeGun=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=2;
        SecondGunnerStatus=true;
endsequence
sequence
        wait(not SecondGunnerStatus and js1.b9 and [curnumber==1]  and [TailGunnerPos==0]);//если текущая позиция штурман, это первое переключение на стрелка-радиста
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(20);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(2);
        TakeGun=true; //берем пулемет
        delay(2);
        TakeGun=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=2;
        SecondGunnerStatus=true;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b9 and [curnumber==0] and [TailGunnerPos==0]);//если текущая позиция пилот, это не первое переключение на стрелка-радиста, текущая турель задняя
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(20);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=2;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b9 and [curnumber==1] and [TailGunnerPos==0]);//если текущая позиция штурман, это не первое переключение на стрелка-радиста, текущая турель задняя
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(20);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=2;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b9 and [curnumber==0] and [TailGunnerPos==1]);//если текущая позиция пилот, это не первое переключение на стрелка-радиста, текущая турель левая
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=2;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b9 and [curnumber==1] and [TailGunnerPos==1]);//если текущая позиция штурман, это не первое переключение на стрелка-радиста, текущая турель левая
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPoint=true;//LSHF+C
        delay(2);
        NextPoint=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=2;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b9 and [curnumber==0] and [TailGunnerPos==2]);//если текущая позиция пилот, это не первое переключение на стрелка-радиста, текущая турель правая
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=2;
 
endsequence
sequence
        wait(SecondGunnerStatus and js1.b9 and [curnumber==1] and [TailGunnerPos==2]);//если текущая позиция штурман, это не первое переключение на стрелка-радиста, текущая турель правая
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        Aim=true;//смотрим в прицел
        delay(2);
        Aim=false;
        curnumber=2;
        TailGunnerPos=2;
 
endsequence
//переключения inside места радиста стрелка
sequence
        wait(SecondGunnerStatus and js1.b9 and [curnumber==2] and [TailGunnerPos==0]);//если текущая позиция радист, текущая турель задняя, целевая - правая
        NextPoint=true;  // LSHF+C
        delay(2);
        NextPoint=false;
        delay(20);
        NextPoint=true;  // LSHF+C
        delay(2);
        NextPoint=false;
        TailGunnerPos=2;
 
endsequence
sequence
        wait(SecondGunnerStatus and js1.b9 and [curnumber==2] and [TailGunnerPos==1]);//если текущая позиция радист, текущая турель левая, целевая - правая
        NextPoint=true;  // LSHF+C
        delay(2);
        NextPoint=false;
        TailGunnerPos=2;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b11 and [curnumber==2] and [TailGunnerPos==0]);//если текущая позиция радист, текущая турель задняя, целевая - левая
        NextPoint=true;  // LSHF+C
        delay(2);
        NextPoint=false;
        TailGunnerPos=1;
 
endsequence
sequence
        wait(SecondGunnerStatus and js1.b11 and [curnumber==2] and [TailGunnerPos==2]);//если текущая позиция радист, текущая турель правая, целевая - левая
        NextPoint=true;  // LSHF+C
        delay(2);
        NextPoint=false;
        delay(20);
        NextPoint=true;  // LSHF+C
        delay(2);
        NextPoint=false;
        TailGunnerPos=1;
endsequence
sequence
        wait(SecondGunnerStatus and js1.b10 and [curnumber==2] and [TailGunnerPos==2]);//если текущая позиция радист, текущая турель правая, целевая - задняя
        NextPoint=true;  // LSHF+C
        delay(2);
        NextPoint=false;
        TailGunnerPos=0;
 
endsequence
sequence
        wait(SecondGunnerStatus and js1.b10ССС and [curnumber==2] and [TailGunnerPos==1]);//если текущая позиция радист, текущая турель левая, целевая - задняя
        NextPoint=true;  // LSHF+C
        delay(2);
        NextPoint=false;
        delay(20);
        NextPoint=true;  // LSHF+C
        delay(2);
        NextPoint=false;
        TailGunnerPos=0;
endsequence
//------------------------------------------------------------------------------
//переключаемся на пилота (b5)
sequence
        wait(js1.b5 and [curnumber==1]);//если текущая позиция штурман
        NextPos=true;  // Ctrl+C
        delay(2);
        NextPos=false;
        delay(2);
        NextPos=true;  // два раза
        delay(2);
        NextPos=false;
        curnumber=0;
endsequence
sequence
    wait(js1.b5 and [curnumber==2]); //если текущая позиция радист
        NextPos=true;// ctrl+c
        delay(2);
        NextPos=false;
        curnumber=0;
endsequence
endScript

 

 

 

 

еще надо сделать кнопку, которая все это безобразие будет обнулять.

файлы map и cms: tailgunners.zip

 

зы. а сколько у хейнкеля точек?  :biggrin:   :biggrin:   :biggrin:

  • Upvote 3

Share this post


Link to post
Share on other sites

// Включение форсажа от двойного толчка РУД в макс. положении (по типу дабл клик на мышке, только РУДом, дважды, в макс положении)

 

 

 

в Шапке

%DEFINE MAXTHRTL1   D10     // Флаг Контрольный интервал 1

%DEFINE MAXTHRTL2   D11     // Флаг Контрольный интервал 2

%DEFINE TIME_5MIN   D12   // флаг действия 5 минутного интервала 

%DEFINE BOOST_ON    B20 

в теле скрипта

PULSE(D8) = [JS2.A3 <=3];  // Импульс от первого достижения макс. положения

                      //Запускаем таймер 350 мсек

TIMER (PERIOD,MAXTHRTL1,8) = [JS2.A3 <=3] AND NOT MAXTHRTL1 AND NOT MAXTHRTL2;  

                     // Засекли, что РУД двинулся назад  в указанный интервал времени                               //запускаем второй таймер

TIMER(PERIOD, MAXTHRTL2, 8) = [JS2.A3 > 7] AND NOT D8 AND MAXTHRTL1; 

 

PULSE(D9) = MAXTHRTL2 AND[JS2.A3 <=3 ];  // Раз за период второго таймера

                                         // РУД снова достиг макс, даем импульс

 

SEQUENCE  // реакция на импульс путем включения форсажа на кнопке CMS.B2

 WAIT(D9);  // дождались импульса D9

 BOOST_ON = TRUE;   // выставили флаг форсажа

 CMS.B2 = TRUE;     // нажали кнопку

DELAY(2);

 CMS.B2 = FALSE;    // отжали кнопку

ENDSEQUENCE

 

SEQUENCE  // Выключение форсажа  при движении РУД назад.

 WAIT(BOOST_ON AND [JS2.A3 > 10]);   // Если Форсаж активен и РУД поехал назад

 CMS.B2 = TRUE;    // нажали кнопку

DELAY(2);

 CMS.B2 = FALSE;  // отпустили кнопку

 BOOST_ON = FALSE;  // убрали флаг форсажа

ENDSEQUENCE

//-----------

 

 

 

а про выключение через 5 минут?  :huh:

Share this post


Link to post
Share on other sites

тогда как то вот так:....

...

зы. а сколько у хейнкеля точек?  :biggrin:   :biggrin:   :biggrin:

:o: ...!!! "писать такое не для ленивых" (с)  ;) ... а говорили тут скрипт не нужен, нужен простой маппер:  :) 

Nobby, ты удивляешь! Столько придумать и написать, отладить, проверить в игре, записать видео и выложить!!!, ... чувствую, слабо мы тебя загружаем :).... однако браво :clapping: . 

 

По существу: Спасибо. Интересно, буду пробовать...

 

ПыСы: про Henkel даже страшно представить! там трое с пулеметом, как минимум, + огневые точки... 

Edited by =J13=Moroka
  • Upvote 1

Share this post


Link to post
Share on other sites

а про выключение через 5 минут?  :huh:

Гы. А пожалуйста :)

 

После первой последовательности (SEQUENCE)  в том скрипте вставить:

 
TIMER(ONDELAY, TIME_5MIN, 6000) = BOOST_ON; // 6000 * ~50ms = ~5 мин. (зависит от настроек на осн. вкладке)
 
А начало второй последовательности изменить с учетом триггер-таймера
 
SEQUENCE
WAIT(BOOST_ON AND ([JS2.A3 > 10] OR TIME_5MIN));
 
Теперь, форсаж отключится и через 5 минут тоже. Причем, отсчет 5 минут будет всегда синхронизирован по последнему условию для форсажа.
Edited by [I.B.]Zulu
  • Upvote 1

Share this post


Link to post
Share on other sites

Думаю, даже для верности, нужно время уменьшить хотя бы до 4 мин 45 сек, что бы гарантированно не получить отказа двигателя в БзС

Share this post


Link to post
Share on other sites

Друзья, если не влом поддержите мой призыв к разрабочиками ПО для CH устройств  http://www.ch-hangar.com/forum/index.php/topic/7706-feature-reqiest-and-script-improvements/, а то что то там тишина - разрабы отмалчиваются:

Тема касается следующих багов и неудобств:

- устранение известной проблемы с инициализацией устройств после "засыпания" компьютера под управлением Win8 64 bit, Win 7 64 bit  (причем это в общем то несложно сделать);

- доработки вкладки CMC устройств, что бы сделать более наглядной работу с ними

post-4254-0-62447600-1399749148_thumb.gif

 

- устранения отдельных (хоть и несмертельных, но изматывающих) багов в работе редактора и компилятора (перечислены);

 

- добавления служебного символа в язык программирования для подачи короткого звукового сигнала (удобно для информирования завершения работы времяпривязанных скриптов).

 

 

Можете там свои пожелания добавить, - может и сдвинем таки машину с мертвой точки :) Под лежачий камень вода не бежит :)

Edited by [I.B.]Zulu

Share this post


Link to post
Share on other sites

Друзья, если не влом поддержите мой призыв к разрабочиками ПО для CH устройств  http://www.ch-hangar.com/forum/index.php/topic/7706-feature-reqiest-and-script-improvements/, а то что то там тишина - разрабы отмалчиваются:

 

Можете там свои пожелания добавить, - может и сдвинем таки машину с мертвой точки :) Под лежачий камень вода не бежит :)

 

зарегистрировался и поставил под всеми постами в теме по лайку и оценку в 5 звезд ))

 

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

Edited by NobbyNobbs
  • Upvote 1

Share this post


Link to post
Share on other sites

Тоже поддержал. Я так понимаю, тамошний ник [i.B.] Zulu - Vink?

Share this post


Link to post
Share on other sites

Товарищи, дабы не плодить новых тем..может подскажите? Мучаюсь с файтерстиком-брал новый, появилась такая проблема: На оси тангажа рандомно появляются задержки, фризы. Тоесть тянешь на себя плавненько-ничего не происходит, потом резкий рывок до нужного значения. Летать очень проблематично, ощущение, что стоит дикая нелинейность. Ничего не програмировал, СН менеджеры пробовал разные версии, пробовал вообще без них , пробовал USB разные, разбирал (на свою голову)- резюки не болтаются, люфтов нет.. На сухом видел пару тем с похожей проблемой , но внятного решения так и не нашел.. (добавлю, что такие проблемы появляются в приложениях и играх- в том же джойтестере вроде все плавно рисуется по осям)

Edited by m0n0type

Share this post


Link to post
Share on other sites

ИМХО можно попробовать скачать последний манагер, создать визардом (кнопка со значком винампа) новый дефолтный профиль для стика (где спрашивает про combine - no, где про cms - yes), залить его в устройство (кнопка download) и посмотреть что будет. Попробовать включить mapped mode и снова посмотреть что будет. 

Share this post


Link to post
Share on other sites

ИМХО можно попробовать скачать последний манагер, создать визардом (кнопка со значком винампа) новый дефолтный профиль для стика (где спрашивает про combine - no, где про cms - yes), залить его в устройство (кнопка download) и посмотреть что будет. Попробовать включить mapped mode и снова посмотреть что будет. 

Спасибо, попробую (правда я ничерта в этом не смыслю, это чудо у меня меньше месяца) . Последний - это 4.55? А не полетят названия кнопок и осей?, а то придется во всех играх профили переделывать. И еще вопрос-новый профиль "вшивается" аппаратно, или нужны какие то проги в автозагрузке для его запуска?

Share this post


Link to post
Share on other sites

Спасибо, попробую (правда я ничерта в этом не смыслю, это чудо у меня меньше месяца) . Последний - это 4.55? А не полетят названия кнопок и осей?, а то придется во всех играх профили переделывать. И еще вопрос-новый профиль "вшивается" аппаратно, или нужны какие то проги в автозагрузке для его запуска?

 

Если будет вменяемо работать только в mapped mode, то нужно добавить в автозапуск программу CMStart из директории менеджера.

По поводу слетания настроек.. Точно не знаю, но по идее ничего слететь не должно.

Share this post


Link to post
Share on other sites

Спасибо, попробую (правда я ничерта в этом не смыслю, это чудо у меня меньше месяца) . Последний - это 4.55? А не полетят названия кнопок и осей?, а то придется во всех играх профили переделывать. И еще вопрос-новый профиль "вшивается" аппаратно, или нужны какие то проги в автозагрузке для его запуска?

Последний это 4.55a.

 

А ты говоришь, рандомно, это как часто?   При каких условиях возникает?  При каких пропадает? 

Share this post


Link to post
Share on other sites

Последний это 4.55a.

 

А ты говоришь, рандомно, это как часто?   При каких условиях возникает?  При каких пропадает? 

Да зависимости не выявил никакой..вот летишь себе , например, с небольшим креном - надо довернуть , а тангаж не отзывается, дергаешь дергаешь- потом оп!, и ты уже в крайней точке , нос в небо - здравствуй штопор). Ощущение, что либо в механике дело, либо в конфликте с другими устройствами ( у меня там сплошная солянка). Попробовал тупо воткнуть медиатор гитарный в щель  механ. крутилки триммера (может там люфтит)-вроде пока летается...Хотя пару раз все таки зависало, но терпимо.

Вот на сухом абсолютно такая же проблема , может понятней будет о чем это я - http://www.sukhoi.ru/forum/showthread.php?t=58778

(PS-Нубби, извини, если я тебе тему своими проблемами зафлудил- могу попросить модератора переместить мои в отдельную)

Edited by m0n0type

Share this post


Link to post
Share on other sites

Не по теме пишу, но все же помогите если кто знает !!!! СЖЕГ педали(замкнул ноги на резюке, ну и, похоже контроллер сгорел). как починить теперь ?

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...