设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5527|回复: 16
打印 上一主题 下一主题

[原创发布] SEP 全键盘脚本 v1.0

[复制链接]

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22432
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

跳转到指定楼层
1
发表于 2018-1-10 23:47:33 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
名字带SEP,实际上并不依赖于SEP核心插件,可以独立插入使用。
恩,只是为了造一个功能比较全面(就是键比较全)并且低冲突可能的轮子而已。

键名是从.Net core里的常量表导出的,应该不会更多了……我自己的加强版118键键盘上的键都按通过了。

判定方法是
Keyboard.press?(键名)
Keyboard.trigger?(键名)
Keyboard.repeat?(键名),关于repeat的表现可以自己设定(由于RM一帧更新一次的限制,只能以帧为单位设定)
这些和Input类的使用是一样的

键名可以是真正的常量表的名字,比如Keyboard::A
也可以简写为:A
还可以用数组写成[:A, :B, :C],任意一个键按下均判定为真
还可以……写成"A"甚至"a",后台会自动映射为真实键名

注入了Input.update,只要调用Input.update就可以更新全键盘状态

但是,没有像夏娜版的全键盘一样把判定也注入进去,并不是因为注入不了。
原因是为了兼容键名的多种写法,不可避免的会和Input::A, Input::X这样的名称冲突。
RM的A并不是键盘上的A,地球人都知道——
我也一度试图注入把Input::A重新定义为[:L_SHIFT, :R_SHIFT, :Z],但想用户(玩家,不是开发者)按F1可以自己修改这种定义……所以最后放弃了。

最后,欢迎测试。

RUBY 代码复制
  1. #==============================================================================
  2. # ■ SEP 全键盘处理 v1.0 by SailCat
  3. #------------------------------------------------------------------------------
  4. #   方法:本脚本插入Main之前使用
  5. #   依赖:无
  6. #   版本:v1.0 (Build 180110)
  7. #   效果:
  8. #     1. 全键盘按键响应
  9. #     2. 注入Input模块的update处理
  10. #     3. Lock键、Shift/Ctrl/Alt/Win键状态的响应
  11. #     4. 获得输入的字符
  12. #   配置:重复延迟和重复间隔速率
  13. #   冲突:其他类似脚本
  14. #   说明:
  15. #     1. 调用全键盘方法为Keyboard.press?(键名常量、符号或字符)。
  16. #     2. 上述press?也可替换为trigger?或repeat?,含义与Input中的同名方法相同。
  17. #     3. 其他检测包括对于Lock键的状态,Shift/Ctrl/Alt/Win的状态检测等。
  18. #     4. 使用Keyboard.type_char可以获得打字键入的字符。
  19. #==============================================================================
  20. #==============================================================================
  21. # ■ SailCat's 插件公用
  22. #==============================================================================
  23. module SailCat
  24.   $sailcat_import ||= {}
  25.   #--------------------------------------------------------------------------
  26.   # ● 脚本配置区
  27.   #--------------------------------------------------------------------------
  28.   module Keyboard_Config
  29.     REPEAT_DELAY = 8            # 首次重复前的延迟值(帧)
  30.     REPEAT_SPEED = 2            # 每次重复按键的间隔(帧),越大越慢
  31.     #--------------------------------------------------------------------------
  32.     # ● 配置检查,请勿更改
  33.     #--------------------------------------------------------------------------
  34.     unless REPEAT_SPEED > 0
  35.       raise "重复按键的间隔不能低于1帧"
  36.     end
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 植入
  40.   #--------------------------------------------------------------------------
  41.   $sailcat_import[:Keyboard] = 1.0
  42. end
  43.  
  44. #==============================================================================
  45. # ■ 全键盘处理核心
  46. #==============================================================================
  47. module Keyboard
  48.   include SailCat::Keyboard_Config
  49.   #--------------------------------------------------------------------------
  50.   # ● 常量
  51.   #--------------------------------------------------------------------------
  52.   NONE = 0
  53.   L_BUTTON, R_BUTTON, CANCEL, M_BUTTON, X_BUTTON1, X_BUTTON2 = *1..6
  54.   BACKSPACE, TAB, LINE_FEED, V_TAB, CLEAR, ENTER = *8..13
  55.   SHIFT_KEY, CONTROL_KEY, ALT_KEY, PAUSE_KEY = *16..19
  56.   CAPS_LOCK, KANA_MODE, JUNJA_MODE, DUMMY, FINAL_MODE, KANJI_MODE = *20..25
  57.   ESCAPE, IME_CONVERT, IME_NONCONVERT, IME_ACCEPT, IME_MODECHANGE = *27..31
  58.   SPACE, PAGEUP, PAGEDOWN, ENDKEY, HOME, LEFT, UP, RIGHT, DOWN = *32..40
  59.   SELECT, PRINT, EXECUTE, PRINTSCREEN, INSERT, DELETE, HELP = *41..47
  60.   D0, D1, D2, D3, D4, D5, D6, D7, D8, D9 = *48..57
  61.   A, B, C, D, E, F, G, H, I, J, K, L, M = *65..77
  62.   N, O, P, Q, R, S, T, U, V, W, X, Y, Z = *78..90
  63.   LWIN, RWIN, APPS, SLEEP = 91, 92, 93, 95
  64.   NUM0, NUM1, NUM2, NUM3, NUM4, NUM5, NUM6, NUM7, NUM8, NUM9 = *96..105
  65.   MULTIPLY, ADD, SEPARATOR, SUBTRACT, DECIMAL, DIVIDE = *106..111
  66.   F1, F2, F3, F4, F5, F6, F7, F8, F9, F10, F11, F12 = *112..123
  67.   F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24 = *124..135
  68.   NUM_LOCK, SCROLL_LOCK = 144, 145
  69.   L_SHIFT, R_SHIFT, L_CTRL, R_CTRL, L_ALT, R_ALT = *160..165
  70.   B_BACK, B_FORWARD, B_REFRESH, B_STOP, B_SEARCH, B_FAVOR, B_HOME = *166..172
  71.   VOL_MUTE, VOL_DOWN, VOL_UP = *173..175
  72.   MEDIA_NEXT, MEDIA_PREVIOUS, MEDIA_STOP, MEDIA_PLAYPAUSE = *176..179
  73.   LAUNCH_MAIL, SELECT_MEDIA, LAUNCH_APP1, LAUNCH_APP2 = *180..183
  74.   SEMICOLON, PLUS, COMMA, MINUS, PERIOD, QUESTION, TILDE = *186..192
  75.   L_BRACE, PIPE, R_BRACE, QUOTE, OEM8 = *219..223
  76.   BACKSLASH, PROCESS_KEY, PACKET = 226, 229, 231
  77.   ATTN, CRSEL, EXSEL, ERASE_EOF, PLAY, ZOOM, NONAME, PA1, OEM_CLEAR = *246..254
  78.   ANY_BUTTON = [1, 2, 4, 5, 6]
  79.   ANY_KEY = [8..13, 27, 32..57, 65..90, 96..135, 186..192, 219..223].map do |x|
  80.     x.to_a
  81.   end.flatten
  82.   #--------------------------------------------------------------------------
  83.   # ● API
  84.   #--------------------------------------------------------------------------
  85.   GetAsyncKeyState = Win32API.new("user32", "GetAsyncKeyState", "i", "i")
  86.   GetKeyState = Win32API.new("user32", "GetKeyState", "i", "i")
  87.   #--------------------------------------------------------------------------
  88.   # ● 用于检测重复按键的标记器
  89.   #--------------------------------------------------------------------------
  90.   Flags = {}
  91.   #--------------------------------------------------------------------------
  92.   # ● 更新键盘输入,该方法每帧调用1次
  93.   #--------------------------------------------------------------------------
  94.   def self.update
  95.     Flags.each_key do |k|
  96.       GetAsyncKeyState.call(k) & 32768 != 0 ? Flags[k] += 1 : Flags.delete(k)
  97.     end
  98.   end
  99.   #--------------------------------------------------------------------------
  100.   # ● 判断对应的键是否现在被按下
  101.   #--------------------------------------------------------------------------
  102.   def self.press?(key)
  103.     key = get_key(key) unless key.is_a?(Numeric) or key.is_a?(Array)
  104.     return key.any?{|k| press?(k)} if key.is_a?(Array)
  105.     GetAsyncKeyState.call(key) != 0 ? (Flags[key] ||= 0; true) : false
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ● 判断对应的键是否重新被按下
  109.   #--------------------------------------------------------------------------
  110.   def self.trigger?(key)
  111.     key = get_key(key) unless key.is_a?(Numeric) or key.is_a?(Array)
  112.     return key.any?{|k| trigger?(k)} if key.is_a?(Array)
  113.     Flags[key] ? Flags[key] == 0 : press?(key)
  114.   end
  115.   #--------------------------------------------------------------------------
  116.   # ● 判断对应的键是否重复被按下
  117.   #--------------------------------------------------------------------------
  118.   def self.repeat?(key)
  119.     key = get_key(key) unless key.is_a?(Numeric) or key.is_a?(Array)
  120.     return key.any?{|k| repeat?(k)} if key.is_a?(Array)
  121.     Flags[key] ? (Flags[key] >= REPEAT_DELAY and (Flags[key] - REPEAT_DELAY) %
  122.       REPEAT_SPEED == 0) : press?(key)
  123.   end
  124.   #--------------------------------------------------------------------------
  125.   # ● 键盘状态判断
  126.   #--------------------------------------------------------------------------
  127.   def self.lock?(key);    GetKeyState.call(key) & 1 == 1;           end
  128.   def self.caps_lock?;    lock?(CAPS_LOCK);                         end
  129.   def self.num_lock?;     lock?(NUM_LOCK);                          end
  130.   def self.scroll_lock?;  lock?(SCROLL_LOCK);                       end
  131.   #--------------------------------------------------------------------------
  132.   # ● 修饰键判断
  133.   #--------------------------------------------------------------------------
  134.   def self.shift?;        press?([SHIFT_KEY, L_SHIFT, R_SHIFT]);    end
  135.   def self.ctrl?;         press?([CONTROL_KEY, L_CTRL, R_CTRL]);    end
  136.   def self.alt?;          press?([ALT_KEY, L_ALT, R_ALT]);          end
  137.   def self.win?;          press?([L_WIN, R_WIN]);                   end
  138.   #--------------------------------------------------------------------------
  139.   # ● 当前按下的键名
  140.   #--------------------------------------------------------------------------
  141.   def self.key_code
  142.     a = ANY_KEY.select{|key| repeat?(key)}
  143.     a.empty? ? 0 : a[0]
  144.   end
  145.   #--------------------------------------------------------------------------
  146.   # ● 当前输入的字符
  147.   #--------------------------------------------------------------------------
  148.   def self.type_char
  149.     k = key_code
  150.     k == 0 ? "" : key2char(k, shift?, caps_lock?, num_lock?)
  151.   end
  152.   #--------------------------------------------------------------------------
  153.   # ● 打字中判定
  154.   #--------------------------------------------------------------------------
  155.   def self.typing?
  156.     not type_char.empty?
  157.   end
  158.   #--------------------------------------------------------------------------
  159.   # ● 根据字符或符号取得键名
  160.   #--------------------------------------------------------------------------
  161.   def self.get_key(key)
  162.     if key.is_a?(Symbol)
  163.       const_get(key) rescue NONE
  164.     elsif key.is_a?(String)
  165.       char2key(key)
  166.     end
  167.   end
  168.   #--------------------------------------------------------------------------
  169.   # ● 将按键转化为字符
  170.   #--------------------------------------------------------------------------
  171.   def self.key2char(code, shift = false, caps = false, num = true)
  172.     case code
  173.     when BACKSPACE..ENTER, ESCAPE, SPACE
  174.       code.chr
  175.     when D0..D9
  176.       shift ? ")!@#\$%^&*("[code - D0].chr : code.chr
  177.     when A..Z
  178.       shift ^ caps ? code.chr : (code + 32).chr
  179.     when NUM0..NUM9
  180.       num ? (code - 48).chr : ""
  181.     when MULTIPLY..DIVIDE
  182.       (num || code != DECIMAL) ? "*+,-./"[code - 106].chr : ""
  183.     when SEMICOLON..TILDE
  184.       ";:=+,<-_.>/?`~"[(code - SEMICOLON << 1) + (shift ? 1 : 0)].chr
  185.     when L_BRACE..QUOTE
  186.       "[{\\|]}\'\""[(code - L_BRACE << 1) + (shift ? 1 : 0)].chr
  187.     else
  188.       ""
  189.     end
  190.   end
  191.   #--------------------------------------------------------------------------
  192.   # ● 将字符转化为按键
  193.   #--------------------------------------------------------------------------
  194.   def self.char2key(char)
  195.     return NONE if char.empty?
  196.     case char[0]
  197.     when 8..13, 27, 32, 48..57, 65..90
  198.       char[0]
  199.     when 97..122
  200.       char[0] - 32
  201.     else
  202.       pindex = ")!@#\$%^&*(".index(char[0])
  203.       return D0 + pindex if pindex
  204.       pindex = ";:=+,<-_.>/?`~".index(char[0])
  205.       return SEMICOLON + (pindex >> 1) if pindex
  206.       pindex = "[{\\|]}\'\"".index(char[0])
  207.       return L_BRACE + (pindex >> 1) if pindex
  208.       NONE
  209.     end
  210.   end  
  211. end
  212.  
  213. #==============================================================================
  214. # ■ Input 模块的注入
  215. #==============================================================================
  216. module Input
  217.   class << self
  218.     unless method_defined?(:sailcat_sep_update)
  219.       alias sailcat_sep_update update
  220.       def update
  221.         sailcat_sep_update
  222.         Keyboard.update
  223.       end
  224.     end
  225.   end
  226. end

评分

参与人数 3星屑 +200 +3 收起 理由
RyanBern + 200 + 1 精品文章
芯☆淡茹水 + 1 精品文章
梦幻想 + 1 塞糖

查看全部评分

SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。

Lv5.捕梦者

梦石
0
星屑
34870
在线时间
4148 小时
注册时间
2007-12-15
帖子
9981
2
发表于 2018-1-11 06:32:38 | 只看该作者
那个……急着赶车先不测试了,问一下事件里应该如何调用
比如我想按顺序输入,对应小键盘区域的方向键623a
然后用
Keyboard.press?(键名)
Keyboard.trigger?(键名)
Keyboard.repeat?(键名)
三个都输入623a
然后公用时间建立输入时间限制12帧以内
…………
抱歉实在不会,能给个范例我照猫画虎吗……
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22432
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

3
 楼主| 发表于 2018-1-11 09:56:15 | 只看该作者
本帖最后由 SailCat 于 2018-1-11 10:01 编辑
89444640 发表于 2018-1-11 06:32
那个……急着赶车先不测试了,问一下事件里应该如何调用
比如我想按顺序输入,对应小键盘区域的方向键623a
...


脚本:$game_variables[1] = Graphics.frame_count
变量操作:[0002]=0
循环:
    条件分歧:脚本:Keyboard.trigger?([:NUM6, :NUM2, :NUM3, :A][$game_variables[2]]) and $game_variables[2] < 4
       变量操作:[0002] += 1
    分歧结束
    条件分歧:变量:0002 == 4
       中断循环
    分歧结束
    条件分歧:脚本:Graphics.frame_count - $game_variables[1] > 12
       中断循环
     分歧结束
     注释:以下脚本的作用是返回事件解释器刷新帧数
               注意第一行的#不能省略否则默认引擎会卡死
     脚本:#
               false
以上反复
条件分歧:变量:[0002] == 4
   输入成功的处理
除此以外
   输入失败的处理
分歧结束
SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
34870
在线时间
4148 小时
注册时间
2007-12-15
帖子
9981
4
发表于 2018-1-11 13:53:12 | 只看该作者
本帖最后由 89444640 于 2018-1-12 20:22 编辑

病人30秒打断你一次思路,果然上班没法做美工以外的工作……
改了好几次终于能长长输入了,但是输入成功后跳出对话框


回家重新试,发现低级错误,看差了,果然还是需要没干扰时候做,这回没问题了。
查了一个条件分歧没写。
脚本很好用,我试试看能不能和战斗配合。
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9275
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

5
发表于 2018-1-11 20:59:04 | 只看该作者
  1. F13, F14, F15, F16, F17, F18, F19, F20, F21, F22, F23, F24
复制代码

F13到F24是哪些按键···
话说F12和F1不是已经被占用了吗···那这两你要改掉?

还有就是快捷键组合怎么做?(比如alt+a之类的)直接用条件组合?

点评

F1-F4、F10-F12我只是用通用代码捕捉,没有特殊处理,但如果不改RGSS102j.dll实际上是会被拦截的。如果改了呢当然就能捕捉到了。  发表于 2018-1-11 21:39
我的加强版键盘上是有F13-F16的……至于F17到24 我没见过……但.net core里是这么定义的常量,我就全导出来了 alt a的话就Keyboard.trigger?(:A) and Keyboard.alt?  发表于 2018-1-11 21:35
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
34870
在线时间
4148 小时
注册时间
2007-12-15
帖子
9981
6
发表于 2018-1-12 21:59:11 | 只看该作者
本帖最后由 89444640 于 2018-1-12 22:15 编辑

试图用公用事件来处理搓招,目前是这样。


试图实现这样的效果,在轮到角色出手的时候,播放动画,提示让玩家输入出招指令,动画时长不同,随着按键数量的多少,从20帧~60帧不等
当动画播放完成,如果输入指令正确,则播放该招式的出手和命中动画并产生伤害。失败,不播放,提示出招失败。


但是 我正常设定动画也不行,因为强制播放了,不设定也不行,因为不设不能显示出有伤害……

显示动画和伤害上出现了问题,
首先是提示输入指令的动画不播放,因为角色待机动画占用了……可能用脚本写成,在屏幕上播放动画编号XX的方式就能成功播放了,

然后,默认编辑器显示动画是敌人选择1~8 角色选择1~4,无法实现某个角色对某个敌人攻击的效果。
角色可以换位置,因此不能指定固定编号显示动画。
如何让指定的角色和指定的攻击对象显示出手动画和受创动画,因为用了全动画脚本 出手和命中是同时播放的,所以如果一起播放,视觉上没问题。

然后是伤害显示,只能播放动画,无法显示出伤害的具体数值。敌人不出伤害数值就莫名其妙的死亡了,不合理呀。
但是如果用战斗动画设定了伤害,即使出招失败也会播放动画,依然不合理。

如果不用上述方法,只用战斗动画自带的伤害进行判断,即使出招失败,也会播放动画。无法达到搓招失败不出招的效果。


感觉上,如果可以用脚本让出招失败的时候,角色此回合的行动强制中断就能实现应有的效果了。

如果这个想法成功,战斗系统部分会从根本上发生变化。
需要MP消耗和搓招才能发出的招式都很强,而且越强的招式越难发,一旦成功,甚至可以继续链接其他的招式形成格斗的连续技。因为需要自己背出招表。不过这个连续技播放上可能不好看因为没法像真正的格斗难养输入和出招是同步的。

有什么方法,能在按键成功的情况下,正常的显示角色出手动画和命中动画,并且显示伤害吗?

然后调成这样,角色出手动画和命中动画为空,招式伤害为0,只用公用事件来处理。

虽然可以播放出招提示的动画了,伤害也有了,但是命中敌人产生的伤害只能是范围随机变量或者固定数值数值,无法根据实际情况计算,而且无法显示出来,感觉相当不好。
而且依然只能固定角色位置来攻击敌方全体才能正常显示,无法时间角色在1~4的随机位置出手攻击1~8的随机位置单体敌人。

点评

我先试试攻击方和对象方,伤害数值的计算估计也可以以用脚本解决,但是根据闪烁来判断对象方受创并产生伤害这个似乎就不能实现了?  发表于 2018-1-12 22:24
要拿到谁用的,对谁用的并不难: 谁用的:$scene.instance_variable_get(:@active_battler) 对谁用的:$scene_instance_variable_get(:@target_battlers) 显示动画:x.animation_id=y   发表于 2018-1-12 22:21
全动画脚本的冲突太大了…… 技能挂接的公共事件会在对象方动画之后执行,这是个很要命的设定,虽然有它的道理所在,但是你要的这种效果就麻烦  发表于 2018-1-12 22:18
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

遠航の猫咪

梦石
3
星屑
22432
在线时间
2335 小时
注册时间
2005-10-15
帖子
1160

开拓者

7
 楼主| 发表于 2018-1-12 22:31:55 | 只看该作者
本帖最后由 SailCat 于 2018-1-12 22:40 编辑
89444640 发表于 2018-1-12 21:59
试图用公用事件来处理搓招,目前是这样。


假设你的出手动画1515,对象动画1516

先把技能设置为一个无害技能,但是会附加一个无用的状态(不然弹你一脸miss)
使用动画和对象动画都设置为无

然后另设一个真正的有伤害技能,比如技能ID是999,但是不要让角色学会它。

成功处理部分:
脚本(注意里面的数字):
user = $scene.instance_variable_get(\
:@active_battler)
targets = $scene.instance_variable_get(\
:@target_battlers)
user.animation_id =1515 if user
targets.each do |t|
  t.animation_id = 1516
  t.skill_effect(user, $data_skills[999])
end
等待:X帧(X为你的动画长度+4)

失败处理部分:
应该是什么都不用写(除了文章提示)

评分

参与人数 1+1 收起 理由
89444640 + 1 已完美显示伤害XD

查看全部评分

SailCat (小猫子·要开心一点) 共上站 24 次,发表过 11 篇文章 上 次 在: [2006年01月28日11:41:18 星期六] 从 [162.105.120.91] 到本站一游。
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
34870
在线时间
4148 小时
注册时间
2007-12-15
帖子
9981
8
发表于 2018-1-12 22:47:29 | 只看该作者
本帖最后由 89444640 于 2018-1-13 11:47 编辑

更新……

果然昨天夜里脑子不清醒了
现在正常了,写给自己以便以后继续做免时候忘了。
1 招式的空白属性,两个招式都要打上对勾。

2 对象闪烁不能按照正常的方式写命中和未命中,只能写无,否则无法正常显示伤害。
然后至于是不是100%命中,都搓招了就算100%命中也正常。


然后以下是用此脚本制作的仿照格斗游戏搓招出招,不顾哟还得在菜单中还得选一下招式。


多谢猫姐指导。






点评

有个地方不是999,是$data_skills[999],我一时忘了那个skill_effect的参数了  发表于 2018-1-12 23:42
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
540
在线时间
72 小时
注册时间
2023-1-27
帖子
26
9
发表于 2023-2-20 15:23:56 | 只看该作者
想咨询一下[原创发布] SEP 全键盘脚本 v1.0
D1是菜单 K是取消
如果预先按了K 按D1呼出菜单会呼出后瞬间退出,请问能帮忙解决一下吗?我没有脚本基础T.T

点评

105行改成 GetAsyncKeyState.call(key) & 32768 != 0 ? (Flags[key] ||= 0; true) : false  发表于 2023-2-20 16:47
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
540
在线时间
72 小时
注册时间
2023-1-27
帖子
26
10
发表于 2023-2-20 19:28:13 | 只看该作者
15217320790 发表于 2023-2-20 15:23
想咨询一下[原创发布] SEP 全键盘脚本 v1.0
D1是菜单 K是取消
如果预先按了K 按D1呼出菜单会呼出后瞬间退出 ...

有效 感谢你 好人一生平安
回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-24 13:44

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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