实在不清楚该发哪一版了,LOMAC,DCS还是硬件版。版主看着该搬的就随便搬吧。
新杆子到手快一周了,但基本还没拿来玩,因为在给摇杆写代码...这次附带的名叫T.A.R.G.E.T的配套软件功能实在太强大了!我之前没有用过Cougar所以并不知道thrustmaster之前的编程软件有多强大,但从文档里面来看这一代软件比cougar的也要更强大。目前在参照DCS的文档给LOMAC2.0的A-10a写配置文件,基本弄好了。
程序带有两个主程序,一个是可视化界面的,另外一个是脚本编辑器。两者都内嵌了编译模块来把脚本做成dll挂接起来。前者有Basic和Advanced两种编辑模式,用图形界面生成一些比较“简单”的脚本。后者就纯粹是种编程工具了,可以理解为类似VisualStudio的东西,只不过没有跟踪调试功能,虽然的确有测试工具。整套软件的基本作用是把ThrustMaster旗下所有支持该软件的六款设备映射成一台虚拟的符合DirectX标准的游戏控制器。这可以提供很好的向下兼容性,同时可以把自定义的控制器事件映射成键盘事件来突破DirectX对于轴和按键数量的限制,同时来完成很多复杂的功能。
最妙的部分就是手写脚本了,仔细研究后发现它基本是按照c的思路来的,其中甚至有指针的概念,允许创建char形式存在的全局变量,可以使用循环判断选择等标准的流程控制结构,可以使用C里面大部分的算术逻辑运算符(包括二进制运算符!)。这些基本保证了可以通过自写脚本来实现任意复杂的功能。一行行码代码还是比较辛苦的,比较简单的方法是用GUI程序生成一个基本的profile,把它的脚本拷贝出来再用脚本编辑器作进一步的加工。可以用脚本实现的先进功能很多,下面随便举些例子:
1.很多真正的HOTAS系统上对按一个按钮的时间长短是有区别的,譬如A-10C杆子上的MasterModeControlButton,短按是切换HUD的5个子模式,长按是直接切换到对空模式。这里可以使用TEMPO('x','y',time)的动作来实现。如果按钮持续按下的时间小于time个毫秒就按下键盘的x键,否则按下y键
2.HOTAS系统上同一按钮在不同的操作模式下有不同的功能,譬如当a-10c的SOI(Sensor ofInterest)在TAD上时DataManagementSwitch用来控制TAD的缩放等等,SOI在AIM-9上时则用来控制响尾蛇的火控。软件内建的机制中允许所有的事件被注册于Up,Middle,Down三个层上面,默认的事件都在Middle层。三者还可以在再根据某个键(譬如shift)是否被按下而分成两个子层,这样一共获得6个子层。可以把这六个层映射为六种模式,同一控制器事件在六个层的行为可以分别定义。
3.上面提到的6个层还是根据实际的控制器事件(譬如一个3向开关外加一个上档键)来决定当前所处的层。而由于脚本允许使用全局变量和判断语句而实际上可以在逻辑上分出无穷多个层来,也就是让控制器事件根据某个全局变量的值来决定具体的动作。用全局变量储存飞机的一些状态(MasterArm开关,自动导航模式,flap/gear的位置等等),所有按键时间都根据这些储存起来的状态来操作。
4.所有的控制器事件被分为press和release两种,我们可以让一个按钮被释放的时候也触发一个事件。譬如有一个拨杆式开关,拨到上面相当于这个信号一直有效,拨到下面相当于信号消失。我们可以在它的"press“事件上映射一个pulse类型的键盘f事件,”release"上再映射一个键盘f事件。这样LOMAC提供的襟翼toggle功能就变成了一个switch功能。
5.一个事件的行为可以被定义为一个序列,每次事件触发时激活序列中不同的行为。譬如想让一个按键第一按对应导航,第二次对应空地,第三次对应空空,只要在这按键的行为里写上SEQ('1','7','6')就可以了。
6.一个事件的行为也可以定义为一个CHAIN,此时CHAIN中包含的所有行为被同时激活(其实是依次顺序执行,间隔很短)。其中各事件之间的间隔也可以被定义。官方文档中有一个很强大的例子,通过定义一个包含了一大堆键盘动作'q’和延时动作的CHAIN动作来给LOMAC2.0增加了“可预编程的”诱饵弹投放程序。
7.类似上面的例子,允许自定义子程序,这其实可以用来给游戏软件本身增加新的功能...就好像上面的诱饵弹投放程序。
8.CHAIN和SEQ可以组合,这样就可以在LOMAC的A-10a上面模拟出DCS:A-10c的MasterModeControlButton了。(第一次按执行'1',第二次‘7,c’,第三次'c',第四次'o',第五次'6')
9.可以把按钮映射成虚拟的轴,也可以把轴映射成虚拟的按钮,也可以把轴的一部分映射成虚拟的按钮。譬如一个古老的游戏用数字键1~0控制发动机推力,不支持节流阀,可以直接把节流阀不同行程映射成对应的键盘事件。又譬如可以设定当节流阀打到低于5%行程的时候出发一个组合键来关闭发动机,而抬高到5%~10%行程的时候执行启动引擎的操作。这个功能我还没做因为Warthog的节流阀已经有类似的功能了。
10.有个ActKey()函数用来直接发送键盘中断,有个EXEC()函数用来执行程序脚本...无限的扩充潜力啊
11.据说可以控制Warthog节流阀面板上的指示灯!不过这一版的T.A.R.G.E.T只是个ReleaseCandidate没有这个功能。反正硬件接口已经有了软件会慢慢跟上来的。
目前就想到这些。建议懂得C语言的同学都来自己写profile~ |