3GO模拟飞行网|3GO Cyber Air Force

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 16993|回复: 7

[技术贴]在DCS World里自定义按键

[复制链接]
发表于 2014-8-22 11:37:49 | 显示全部楼层 |阅读模式
本帖最后由 Regulus 于 2014-8-22 11:45 编辑

1.本文只适合DCS World 1.2.9及以上版本,不适合DCS Ka-50 1.0x
2.本文只适合可点击开关的键位
3.本文参考了http://forums.eagle.ru/showthrea ... ghlight=devices.lua,感谢原作者
4.本文以Ka-50为例,但是一样可以用到其他的可点击座舱的飞机
5.修改前备份原文件

内容简介:
本文描述了如何将游戏没有的按键增加到键位表里,或者修改原有按键的行为(比如按下按键打开某个开关,松开按键关闭开关)

一.文件结构介绍。
DCS W将设备输入(键盘,鼠标,头瞄等)的默认配置放在../Mods/Aircrafts/xxxx/Input/xxxx/zzzz/default.lua
其中,XXXX是飞机名字,比如Ka-50,A-10C,zzzz是设备名字,比如mouse,keyboard(键盘),joystick(摇杆)。在本文中我们会用到keyboard/default.lua和joystick/default.lua。在本文中我们只需要修改这2个文件即可

可点击开关的定义在../Mods/Aircrafts/xxxx/Cockpit/Scripts/clickabledata.lua
设备定义在../Mods/Aircrafts/xxxx/Cockpit/Scripts/device.lua
命令定义文件../Mods/Aircrafts/xxxx/Cockpit/Scripts/command_defs.lua
暂时只需要4个文件

二.文件修改介绍
先来看keyboard/default.lua的一行
  1. {combos = {{key = 'A'}}, down = iCommandPlane_WeaponMode_Manual_Auto, name = 'Weapon system control switch Manual/Auto ', category = 'Ins Weapons Status and Control Panel PUI-800'},
复制代码
对应在joystickboard/default.lua里的是
  1. {down = iCommandPlane_WeaponMode_Manual_Auto, name = 'Weapon system control switch Manual/Auto ', category = 'Ins Weapons Status and Control Panel PUI-800'},
复制代码
这一行表示一个键位,用于控制武器发射模式是自动还是手动。每按一次A切换一次。现在我要做一点修改,让猪肝油门上的APU开关,搬上去的时候是自动,放下来的时候是手动。
首先,在clickabledata.lua里找到对应的按键,如何用关键词查找不是本文内容,本文不作赘述:
  1. elements["PUI800-AUTO-PTR"]                        = {class = {class_type.TUMB,class_type.TUMB}, hint = LOCALIZE("Manual/Auto weapon system control switch"),                                                           device = devices.WEAP_INTERFACE, action = {device_commands.Button_5,device_commands.Button_5}, stop_action = {}, arg = {403,403}, arg_value = {-direction*1.0,direction*1.0}, arg_lim = {{0.0, 1.0},{0.0, 1.0}}, use_OBB = true, updatable = true}
复制代码
需要关注的代码用红色标记
WEAP_INTERFACE表示这个开关的device是WEAP_INTERFACEaction表示用哪一个按钮。arg_lim表示开关的取值范围是0.0-1.0,arg_value表示取值的“步长”。在本例中,device是WEAP_INTERFACE,取值范围0.0-1.0,只能取0或者1,使用第5个按钮

现在,根据WEAP_INTERFACE在device.lua里找到对应的device ID是
  1. devices["WEAP_INTERFACE"]                        = 12
复制代码
记住这个ID,后面会用到

在command_defs.lua的末尾有
  1. start_command   = 3000
  2. device_commands =
  3. {
  4.         Button_1  = start_command + 1;
  5.         Button_2  = start_command + 2;
  6.         Button_3  = start_command + 3;
  7.         Button_4  = start_command + 4;
  8. ......
复制代码
将joystickboard/default.lua下的
  1. {down = iCommandPlane_WeaponMode_Manual_Auto, name = 'Weapon system control switch Manual/Auto ', category = 'Ins Weapons Status and Control Panel PUI-800'},
复制代码
修改为
  1. {down = 3005, up = 3005, cockpit_device_id = 12, value_down = 1.0, value_up = 0.0, name = 'Weapon system control switch Manual/Auto ', category = 'Ins Weapons Status and Control Panel PUI-800'},
复制代码
新的命令表示在按下按键的时候,将设备12的第5个按钮的值设为1,松开按键的时候,将其设为0。通常都是按键按下为1,松开为0.但是也有例外,比如起落架就是反的,开关合上的时候为0,松开的时候为1。

为了降低阅读量,把keyboard里的那一行注释掉(在行首加--)
  1. --{combos = {{key = 'A'}}                                                   , down = iCommandPlane_WeaponMode_Manual_Auto, name = 'Weapon system control switch Manual/Auto ', category = 'Ins Weapons Status and Control Panel PUI-800'},
复制代码
保存好后,进入游戏设置界面,找到对应的键位,然后把APU开关设置上去,就能使用了。

如果是旋钮或者三位开关的话则有点麻烦,需要用到多个键位,不过思路是一样的。

如果能解决自己增加可点击开关就好了,比如把总距杆的开关设置成可点击的
发表于 2014-8-22 12:19:56 | 显示全部楼层
本帖最后由 Regulus 于 2014-8-22 12:31 编辑

现在多档旋钮/多位开关,一直点会循环,逻辑对应为 val = min + (val % (max - min)); max - min > 1
应该一个键位就能搞,设置好[min,max]范围和按键对应的步长应该就可以

---------------------------
点错了,恢复。。。。Regulus
 楼主| 发表于 2014-8-22 12:31:49 | 显示全部楼层
L0op8ack 发表于 2014-8-22 12:19
现在多档旋钮/多位开关,一直点会循环,逻辑对应为 val = min + (val % (max - min)); max - min > 1
应该 ...

我设想的是用物理开关来控制,键盘用一个按键控制自然是可以的
发表于 2014-8-22 13:53:16 | 显示全部楼层
扭逼类忒            
发表于 2014-8-22 15:06:34 | 显示全部楼层
好思路,有内涵,

可是这样会被防作弊踢出么?
发表于 2014-8-23 06:34:45 | 显示全部楼层
铀235 发表于 2014-8-22 15:06
好思路,有内涵,

可是这样会被防作弊踢出么?

一般不会。除非服务器的账号拥有此机型并安装,设置相应文件的校验。没有此机型的话,MOD文件夹里没有对应文件。如果校验,将无法进入服务器。
发表于 2014-8-23 06:35:58 | 显示全部楼层
缺点是一更新就那啥…
 楼主| 发表于 2014-8-23 10:09:08 | 显示全部楼层
默认配置文件应该用不着校验吧?想不出怎么用它来作弊。
更新被恢复只有手动再覆盖回去了...

这个最有用的还是用来做座舱,不用担心物理开关和飞机开关的同步问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|手机版|3GO模拟飞行网|3GO Cyber Air Force ( 沪ICP备08002287号|沪ICP备14050587号 )

GMT+8, 2024-12-22 11:11

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表