中国虚拟军事网(VME)- 专注于武装突袭系列虚拟军事游戏

 找回密码
 加入VME

QQ登录

只需一步,快速开始

搜索
查看: 6441|回复: 26

[求助] 提问~某按键实现某功能,脚本该怎么写?

[复制链接]
发表于 2013-3-18 09:28:26 | 显示全部楼层 |阅读模式
我找到例如这些


_display = findDisplay 46;

// Stops Capture after pressing the ESC key
_display displaySetEventHandler ["KeyDown", "if ((_this select 1) == 1) then {BIS_EndCapture = true};"];
感觉都很好理解
但是findDisplay 46;这个定义是什么? 维基里说:
找到显示其IDD(这是指在的description.ext或配置)。
如果所指定的显示无法找到displayNull(“无显示”),则返回,(可以测试与的isNull命令。)
主显示屏使用IDD46。 (例如:findDisplay46)。这将返回displayNull的在专用服务器上(所以一定要检查isDedicated如果使用的最好推迟到条件)。

难道还要到description.ext这里去定义?

不能理解呢{:soso_e153:}
发表于 2013-3-18 09:50:53 | 显示全部楼层
完全不懂的 路过帮顶......
发表于 2013-3-18 10:42:05 来自手机 | 显示全部楼层
(findDisplay 46) displaySetEventHandler ["KeyDown", "hintSilent str(_this select 1)"];
删除按键事件处理( findDisplay  46 )  displayRemoveEventHandler "keyDown";
 楼主| 发表于 2013-3-18 11:50:47 | 显示全部楼层
wj59789 发表于 2013-3-18 10:42
(findDisplay 46) displaySetEventHandler ["KeyDown", "hintSilent str(_this select 1)"];
删除按键事件 ...

我知道你用手机发很辛苦~不过大神你至少得告诉我按哪个键啊?
发表于 2013-3-18 12:15:23 | 显示全部楼层
idd 46只不过是所有子项控制键的总项代号,当然你可以通过Rsc去定义自己的display idd,什么1234, 4321都可以。finddisplay定位你所要所有控制的idd,用displayCtrl定位idd下的idc运行你对话框或控制。

P.S.如果你想一探究竟到你的config viewer去翻找,里面有所有对应的idd和idc,有上千个。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入VME

x
 楼主| 发表于 2013-3-18 13:04:29 | 显示全部楼层
FFUR2007SLX2_5 发表于 2013-3-18 12:15
idd 46只不过是所有子项控制键的总项代号,当然你可以通过Rsc去定义自己的display idd,什么1234, 4321都可 ...

打个比方我要定义一个按键
然后用命令去让按键触发事件
具体怎么操作?

难道这些按键都是BIS预先定义好的我只能找出来?而不能自己去定义??
发表于 2013-3-18 13:23:12 | 显示全部楼层
下网上载 发表于 2013-3-18 13:04
打个比方我要定义一个按键
然后用命令去让按键触发事件
具体怎么操作?

定义按键使用displayAddEventHandler,而不是displaySetEventHandler

给你一张表你就明白了:
  1. ESC = 1
  2. F1 = 59
  3. F2 = 60
  4. F3 = 61
  5. F4 = 62
  6. F5 = 63
  7. F6 = 64
  8. F7 = 65
  9. F8 = 66
  10. F9 = 67
  11. F10 = 68
  12. F11 = 87
  13. F12 = 88
  14. PRINT = 183
  15. SCROLL = 70
  16. PAUSE = 197
  17. ^ = 41
  18. 1 = 2
  19. 2 = 3
  20. 3 = 4
  21. 4 = 5
  22. 5 = 6
  23. 6 = 7
  24. 7 = 8
  25. 8 = 9
  26. 9 = 10
  27. 0 = 11
  28. ?= 12
  29. ?= 13
  30. ?= 26
  31. ?= 39
  32. ?= 40
  33. # = 43
  34. < = 86
  35. , = 51
  36. . = 52
  37. - = 53
  38. + = NOT DEFINED
  39. POS1 = 199
  40. TAB = 15
  41. ENTER = 28
  42. DELETE = 211
  43. BACKSPACE = 14
  44. INSERT = 210
  45. END = 207
  46. PAGEUP = 201
  47. PAGEDOWN = 209
  48. CAPS = 58
  49. A = 30
  50. B = 48
  51. C = 46
  52. D = 32
  53. E = 18
  54. F = 33
  55. G = 34
  56. H = 35
  57. I = 23
  58. J = 36
  59. K = 37
  60. L = 38
  61. M = 50
  62. N = 49
  63. O = 24
  64. P = 25
  65. Q = 16
  66. U = 22
  67. R = 19
  68. S = 31
  69. T = 20
  70. V = 47
  71. W = 17
  72. X = 45
  73. Y = 44
  74. Z = 21
  75. SHIFTL = 42
  76. SHIFTR = 54
  77. UP = 200
  78. DOWN = 208
  79. LEFT = 203
  80. RIGHT = 205
  81. NUM_0 = 82
  82. NUM_1 = 79
  83. NUM_2 = 80
  84. NUM_3 = 81
  85. NUM_4 = 75
  86. NUM_5 = 76
  87. NUM_6 = 77
  88. NUM_7 = 71
  89. NUM_8 = 72
  90. NUM_9 = 73
  91. NUM_+ = 78
  92. NUM = 69
  93. NUM_/ = 181
  94. NUM_* = 55
  95. NUM_- = 74
  96. NUM_, = 83
  97. NUM_ENTER = 156
  98. STRGL = 29
  99. STRGR = 157
  100. WINL = 220
  101. WINR = 219
  102. ALT = 56
  103. SPACE = 57
  104. ALTGR = 184
  105. APP = 221
复制代码
  1. moduleName_keyDownEHId = (findDisplay 46) displayAddEventHandler ["KeyDown", "if ((_this select 1) == 17) then {fsm = [] execfsm "xx.fsm";};"];
复制代码
 楼主| 发表于 2013-3-18 13:30:49 | 显示全部楼层
FFUR2007SLX2_5 发表于 2013-3-18 13:23
定义按键使用displayAddEventHandler,而不是displaySetEventHandler

给你一张表你就明白了:

秒懂~~果然是有良心的版主
发表于 2013-3-18 13:52:29 | 显示全部楼层
FFUR2007SLX2_5 发表于 2013-3-18 12:15
idd 46只不过是所有子项控制键的总项代号,当然你可以通过Rsc去定义自己的display idd,什么1234, 4321都可 ...

留名学习
 楼主| 发表于 2013-3-18 14:14:11 | 显示全部楼层
FFUR2007SLX2_5 发表于 2013-3-18 13:23
定义按键使用displayAddEventHandler,而不是displaySetEventHandler

给你一张表你就明白了:

额~~想设定P键~但是无效不知道为啥

_display = findDisplay 46;
_display displayAddEventHandler ["KeyDown", "if ((_this select 1) == 25) then {0.1 fadeSound 0};"];
sqf脚本运行~无报错~无效果
发表于 2013-3-18 16:23:14 来自手机 | 显示全部楼层
帮顶,试一下3楼命令
突然想到一个问题,在第二组引号输入命令那里,好像执行一些if什么的命令就无法单独的删除已赋值到局部变量的按键事件,而只能删除全部findDisplay 46的"KeyDown",这样其它的也被删,为什么失效坐等版主解答。
发表于 2013-3-18 22:08:57 | 显示全部楼层
本帖最后由 FFUR2007SLX2_5 于 2013-9-14 15:55 编辑
wj59789 发表于 2013-3-18 16:23
帮顶,试一下3楼命令
突然想到一个问题,在第二组引号输入命令那里,好像执行一些if什么的命令就无法单独的 ...


displayRemoveAllEventHandlers删除的只是Handler,不是全部。

额~~想设定P键~但是无效不知道为啥

_display = findDisplay 46;
_display displayAddEventHandler ["KeyDown", "if ((_this select 1) == 25) then {0.1 fadeSound 0};"];
sqf脚本运行~无报错~无效果


fadesound从A2开始就已经失效了,A3同样。
 楼主| 发表于 2013-3-18 22:27:34 | 显示全部楼层
FFUR2007SLX2_5 发表于 2013-3-18 22:08
displayRemoveAllEventHandlers删除的只是Handler,不是全部。

木有啊~其他功能也不行~~而且fadesound我在AA2里用得好好的~~~
发表于 2013-3-19 13:15:58 | 显示全部楼层
下网上载 发表于 2013-3-18 22:27
木有啊~其他功能也不行~~而且fadesound我在AA2里用得好好的~~~

Fadesound也没有问题,你把你觉得有问题的地方贴上来。
 楼主| 发表于 2013-3-19 13:18:40 | 显示全部楼层
FFUR2007SLX2_5 发表于 2013-3-19 13:15
Fadesound也没有问题,你把你觉得有问题的地方贴上来。

就是这样写啊~
_display = findDisplay 46;
_display displayAddEventHandler ["KeyDown", "if ((_this select 1) == 25) then {0.1 fadeSound 0};"];
按P键去掉声音~或者实现其他动作~跳机啊~什么的等等~~都不行~
您需要登录后才可以回帖 登录 | 加入VME

本版积分规则

小黑屋|中国虚拟军事网

GMT+8, 2024-4-27 11:53

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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