Просмотр полной версии : Объясните мне.. или опять об опциях управления!!
Swift_CCCP
18.09.2007, 21:44
Программисты растолкуйте мне - сложно ли сделать в играх следующий опрос кнопок джойстика, клавиатуры и "прочая" следующим образом:
Держим кнопку «форсаж» - он включен, отпустили – выключен, так же для фары, АНО итд.
Зачем? Затем, что бы сделать управление через тумблеры, кнопки с фиксацией и без итд.
Я понимаю, что не все сделают, не у всех есть, но сохранить имеющиеся и добавить в опции управления то можно. А то получается замкнутый круг – производители джойстиков не спешат делать подобное а разработчики игр не внедряют.
А мы как в прошлом веке тычем клаву!!!
Готов оставить на один месяц высокооплачиваемую работу в финансовом учреждении для переговоров MG и Saitek :-).
Станислав
18.09.2007, 22:03
У тя случаем не Х52?
А НВ уже не хватает?С НВ все это можно вполне.
Кроме пожалуй бомбосбрасывателя - что бы одним нажатием кнопки последовательно сбрасывались ВСЕ бомбы или ракеты. Вот тут не смог, и уважаемый Хрюкс тоже не помог, ибо там цикл идет... А в остальном - все можно.
С НВ все это можно вполне.
Кроме пожалуй бомбосбрасывателя - что бы одним нажатием кнопки последовательно сбрасывались ВСЕ бомбы или ракеты. Вот тут не смог, и уважаемый Хрюкс тоже не помог, ибо там цикл идет... А в остальном - все можно.
А шасси у "ишака" как выпускаешь-убираешь ?
одним нажатием кнопки на джое..запрограммировал на 40 повторов ее и все :)
Держим кнопку «форсаж» - он включен, отпустили – выключен, так же для фары, АНО итд.
Всё это решается с помощью NV . Правда, ИТД- понятие растяжимое.:)
Программисты растолкуйте мне - сложно ли сделать в играх следующий опрос кнопок джойстика, клавиатуры и "прочая" следующим образом:
Держим кнопку «форсаж» - он включен, отпустили – выключен, так же для фары, АНО итд.
Зачем? Затем, что бы сделать управление через тумблеры, кнопки с фиксацией и без итд.
Я понимаю, что не все сделают, не у всех есть, но сохранить имеющиеся и добавить в опции управления то можно. А то получается замкнутый круг – производители джойстиков не спешат делать подобное а разработчики игр не внедряют.
А мы как в прошлом веке тычем клаву!!!
Готов оставить на один месяц высокооплачиваемую работу в финансовом учреждении для переговоров MG и Saitek :-).
Разработчики очень нервно относятся к увеличению количества команд...
у меня есть опыт локальных переговоров. :)
Хотя все и согласны, что TOGGLE - это зло.
А тумблера никто никому не заказывал самому сделать. Я РУД себе именно так и сделал - количество кнопок резко уменьшилось.
=YeS=OTTO
19.09.2007, 18:52
НА джое СН я сделал так что одно нажатие включил
второе нажатие выключил
одной кнопкой
а вот можно ли на Х52?
помоему врядли
Можно - ССТ вообще хорошая вещь;)
Swift_CCCP
20.09.2007, 00:10
У меня x-45 из 2-й поставки в Россию. Сейчас модернизирую F-16.
В разработке NewViev я тоже принимал некоторое участие (совсем маленькое).Различными SST, JoytoKey итд так же пользуюсь не первый деньно мой вопрос в другом.
Когдато джойстики были тоже только контактные, но АНАЛОГОВЫЕ джои сильно помогли расширить управление.
Собственно я хочу глядя на тумблер в верхнем положении знать, что свет включен, вниз - выключен. Не эмулировать это различными маперами, а "тупо щелкать".
Такая тема поднималась много раз, но воз и ныне там...
Можно в "следующем симе" сделать графику и физику "как в жизни",
но управление в виде 101 клавиши помоему себя изжило и необходимо
не ждать милости от "Saitek и К", а уже дать возможность подключить что-то самодельное.
Не спорю это можно и сейчас, но через Ж.
В конце концов, не у меня же "все правильно".
Просто представте какая может быть панель управления с расширенными опциями. Сейчас - это типа бы Илья с помощью своих педалей управлял бы клавишами Z и X.
А такое чем не устраивает? Зачем велосипед изобретать?
CH Multi Function Panel
Swift_CCCP
21.09.2007, 17:50
Я что-то "такого" еще в продаже не видел.
И за эту сумму можно посерьезней сделать.
А чего б не сдлеать как в МСФС. Одна кнопка включает другая выключает. И никаких проблем с современными джойстиками. Т.е. для например АНО в конфиге 3 варианта
вкл АНО
выкл АНО
вкл/выкл АНО - для кливишников и джоев непрограмированных
Swift_CCCP
22.09.2007, 22:00
А чего б не сдлеать как в МСФС. Одна кнопка включает другая выключает. И никаких проблем с современными джойстиками. Т.е. для например АНО в конфиге 3 варианта
вкл АНО
выкл АНО
вкл/выкл АНО - для кливишников и джоев непрограмированных
О чем я и спрашиваю - ЭТО ТРУДНО?
Stalevar
22.09.2007, 22:32
О чем я и спрашиваю - ЭТО ТРУДНО?
Вообще то да. Это увеличивает кол-во функций(кода, относящегося, к управлению, время програмирования/тестировния, багов, (вписать свой вариант)) относящихся к управлению в 2-3 раза по сравнению с обычным вкл/выкл. Ценность сомнительна, проблемы очевидны. Сделать можно, но наверняка никто не хочет возиться, тратить лишнее время и создавать себе лишние проблемы, чтоб пара тройка избранных тумблерочками побаловалась :D
Вообще то да. Это увеличивает кол-во функций(кода, относящегося, к управлению, время програмирования/тестировния, багов, (вписать свой вариант)) относящихся к управлению в 2-3 раза по сравнению с обычным вкл/выкл. Ценность сомнительна, проблемы очевидны. Сделать можно, но наверняка никто не хочет возиться, тратить лишнее время и создавать себе лишние проблемы, чтоб пара тройка избранных тумблерочками побаловалась :D
Угу, тем более что эта пара-тройка избранных уже сейчас может решить эту проблему, пусть даже и через Ж. :D
А каким образом решается задача синхронизации? Допустим, при старте в полете шасси изначально убраны, при старте на земле - выпущены. И как быть?
Вообще то да. Это увеличивает кол-во функций(кода, относящегося, к управлению, время програмирования/тестировния, багов, (вписать свой вариант)) относящихся к управлению в 2-3 раза по сравнению с обычным вкл/выкл.
Хм...ну ты дал. 3 функции ToOn, ToOff, IsOn, в обработчике конпки "вкл" if(!IsOn())ToOn(), в обработчике кнопки "выкл" if(IsOn())ToOff(), а в тожле if (IsOn())ToOff() else ToOn(). Это типа трудно? Могут вылезти лишние баги? Или ты считаешь, что программеры МГ до этого не додумаются?
А вот с синхронизацией и правда тяжело. Хотя если имеется управляющая панель на ЖК, то и не сильно сложно, с "железными" тумблерами конечно практически никак.
А каким образом решается задача синхронизации? Допустим, при старте в полете шасси изначально убраны, при старте на земле - выпущены. И как быть?
Во первых, врядли обладатели подобных контролов часто летают стартуя в воздухе.
Во вторых, вернуть тумблеры в исходное скорее всего станет привычным делом в начале вылета. На время возврата можно предусмотреть аппаратное отключение контактов тумблеров, чтобы кнопки ложно не срабатывали.
В третьих, можно предусмотреть и сигнализацию несинхронных параметров светодиодами к примеру. Через LUA/Devicelink зачитывать состояние и сверятьсмя с контролами. :mdaa:
Но ИМХО лишнее всё это :) Современная техника смотрю к тачпадам стремится :) А вы обратно в тумблерам вернуться хотите.
Хм...ну ты дал. 3 функции ToOn, ToOff, IsOn, в обработчике конпки "вкл" if(!IsOn())ToOn(), в обработчике кнопки "выкл" if(IsOn())ToOff(), а в тожле if (IsOn())ToOff() else ToOn(). Это типа трудно? Могут вылезти лишние баги? Или ты считаешь, что программеры МГ до этого не додумаются?
А вот с синхронизацией и правда тяжело. Хотя если имеется управляющая панель на ЖК, то и не сильно сложно, с "железными" тумблерами конечно практически никак.
Что-то у Вас просто слишком.
Вот пример NewView по обработке кнопок.
Пару коментов к коду:
fpkShft1 - пока кнопка удерживается функция отрабатывает в состояние 1.
fpkShft2 - тоже для состояния 2.
fpkTrigger1 - переключатель с состояния 1 в нормальное и обратно
fpkTrigger2 - тоже для состояния 2 и нормального
fpkOn1 - включение состояния 1
fpkOn2 - тоже для 2
fpkOff1 - включение нормального состояния из состояния 1
fpkOff2 - тоже из состояния 2
Ну и fpkOn + fpkOff работают как триггер fpkTrigger.
Итак код функции:
procedure_TFunctionProcessor.Check(var_Functions:_TFunction);
begin
__//_Func1_с_удержанием
__if_Functions[FunctionsID[fpkShft1]]_then
__begin
____OnShift1();
____if_Mode_<>_fpmShft1_then
____begin
______Mode_:=_fpmShft1;
______VValue_:=_fpvFunc1;
____end;
__end
__else
__begin
____//_Func2_с_удержанием
____if_Functions[FunctionsID[fpkShft2]]_then
____begin
______if_Mode_<>_fpmShft2_then
______begin
________Mode_:=_fpmShft2;
________VValue_:=_fpvFunc2;
______end;
____end
____else
____begin
______//_Normal
______if_(Mode_=_fpmShft1_)_or
_________(Mode_=_fpmShft2_)_then
______begin
________Mode_:=_fpmNormal;
________VValue_:=_fpvNormal;
______end;
______//_Func1_trigger
______if_Functions[FunctionsID[fpkTrigger1]]_or
_________(Functions[FunctionsID[fpkOn1]]_and
__________Functions[FunctionsID[fpkOff1]])_then
______begin
________if_(Mode_<>_fpmTrig1On_)_and
___________(Mode_<>_fpmTrig1Off)_then
________begin
__________if_(Mode_<>_fpmOn1)_then
__________begin
____________Mode_:=_fpmTrig1On;
____________VValue_:=_fpvFunc1;
__________end
__________else
__________begin
____________Mode_:=_fpmTrig1Off;
____________VValue_:=_fpvNormal;
__________end;
________end;
______end
______else
______begin_//_Не_Func1_триггер
________//_Сбросить_(преобразовать)_фиксированный_триггер
________if_Mode_=_fpmTrig1On_then
__________Mode_:=_fpmOn1
________else
________if_Mode_=_fpmTrig1Off_then
__________Mode_:=_fpmNormal;
________//_Func1_вкл
________if_Functions[FunctionsID[fpkOn1]]_then
________begin
__________Mode_:=_fpmOn1;
__________VValue_:=_fpvFunc1;
________end;
________if_Functions[FunctionsID[fpkOff1]]_then
________begin
__________Mode_:=_fpmNormal;
__________VValue_:=_fpvNormal;
________end;
______end;_//_Func1_trigger
______//_Func2_trigger
______if_Functions[FunctionsID[fpkTrigger2]]_or
_________(Functions[FunctionsID[fpkOn2]]_and
__________Functions[FunctionsID[fpkOff2]])_then
______begin
________if_(Mode_<>_fpmTrig2On_)_and
___________(Mode_<>_fpmTrig2Off)_then
________begin
__________if_(Mode_<>_fpmOn2)_then
__________begin
____________Mode_:=_fpmTrig2On;
____________VValue_:=_fpvFunc2;
__________end
__________else
__________begin
____________Mode_:=_fpmTrig2Off;
____________VValue_:=_fpvNormal;
__________end;
________end;
______end
______else
______begin_//_Не_Func1_триггер
________//_Сбросить_(преобразовать)_фиксированный_триггер
________if_Mode_=_fpmTrig2On_then
__________Mode_:=_fpmOn2
________else
________if_Mode_=_fpmTrig2Off_then
__________Mode_:=_fpmNormal;
________//_Func1_вкл
________if_Functions[FunctionsID[fpkOn2]]_then
________begin
__________Mode_:=_fpmOn2;
__________VValue_:=_fpvFunc2;
________end;
________if_Functions[FunctionsID[fpkOff2]]_then
________begin
__________Mode_:=_fpmNormal;
__________VValue_:=_fpvNormal;
________end;
______end;_//_Func1_trigger
____end;_//_else_if_Func1
__end;_//_else_if_Shift_Func1
end;
Считаете, что можно сильно упростить?
P.S. А куда индент делся? Заменил пробелы на подчерки.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot