查看: 2501|回复: 5

[已经解决] 求隐藏的内建模块Input内容 或 全按键脚本修改

[复制链接]
梦石
0
星屑
253
在线时间
574 小时
注册时间
2006-8-25
回帖
772
发表于 2016-7-8 03:44:49 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
全按键脚本在不能处理按键时会保留按键缓存,能去掉吗- -
比如说战斗中在播放动画,这个时候点击确定没反应,但开始行动选项时,如果之前点击了确定,这个时候就会自动执行一次确定。

于是打算不用全按键脚本,自己修改内建模块Input,但F1帮助文件没有模块的脚本内容。
所以想重定义模块却不知道里面都有些什么功能。

评分

参与人数 1赞 +1 收起 理由
Vortur + 1 我也想造...555

查看全部评分

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2016-7-8 08:39:30 | 显示全部楼层
自带的 Input 模块是用 C++ 写的吧,只是开放了 Ruby 的接口
如果实在不满意的话建议不使用自带 Input 而是自己基于 Win32API 重写一套

另外你提到的这个问题,在开始行动时,加一句 Input.update 清空之前的输入重新刷新输入判定即可解决了,完全不需要修改或者重定义
回复

使用道具 举报

梦石
0
星屑
253
在线时间
574 小时
注册时间
2006-8-25
回帖
772
 楼主| 发表于 2016-7-8 14:47:22 | 显示全部楼层
本帖最后由 jhhuang 于 2016-7-8 14:48 编辑
喵呜喵5 发表于 2016-7-8 08:39
自带的 Input 模块是用 C++ 写的吧,只是开放了 Ruby 的接口
如果实在不满意的话建议不使用自带 Input 而是 ...


要的就是想知道Input.update的方法- -
这个方法能清空Input模板的缓存,但全键盘是Kboard模板的,好像没什么关系- -


  GetKeyState = Win32API.new("user32","GetAsyncKeyState",['I'],'I')
  GetKeyboardState = Win32API.new("user32","GetKeyState",['I'],'I')
  GetSetKeyState = Win32API.new("user32","SetKeyboardState",['I'],'I')
这东西的缓存照样存在- -

Input.update只对默认键进行了处理,估计里面没有写对其他键的处理,所以对全键盘脚本没效。
回复

使用道具 举报

梦石
1
星屑
23246
在线时间
9564 小时
注册时间
2012-6-19
回帖
7018

开拓者短篇九导演组冠军

发表于 2016-7-8 15:20:08 | 显示全部楼层
本帖最后由 喵呜喵5 于 2016-7-8 15:21 编辑
jhhuang 发表于 2016-7-8 14:47
要的就是想知道Input.update的方法- -
这个方法能清空Input模板的缓存,但全键盘是Kboard模板的,好像没 ...


问题在于,GetAsyncKeyState 和 Input 模块什么关系都没有啊
并且,GetAsyncKeyState 是不存在缓存的,为了让 GetAsyncKeyState 支持缓存反而是需要额外附加的代码,

所以,既然有缓存,你要重定义的实际上是全键盘脚本而不是 Input ,给你自己的全键盘脚本也加入一个 update 方法之后

  1. class << Input
  2.   alias m5_160708_u update
  3.   def update
  4.     m5_160708_u   
  5.     全键盘.update
  6.   end
  7. end
复制代码

点评

那全键盘里的【update】要写什么呢?  发表于 2017-11-29 20:36
认可答案。(最后问题还是回到起点上了- -发现SN10015还不错,还是研究那个好了)  发表于 2016-7-8 17:16

评分

参与人数 1星屑 +10 收起 理由
shitake + 10 miaowm5.update

查看全部评分

回复 1 0

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部