作者nehex (きっと萌えられる)
看板EzHotKey
标题[AHK-] 模拟器格斗游戏一键必杀 (方向性无解?)
时间Tue Dec 29 00:10:12 2009
新手献曝 <(__;)>
没想到游戏按键所牵涉到的问题还满复杂的
也跟很多基本操作有关,组合键的情形真是无所不在。
这篇不敢说一定正确,测试上是有成功,只是堪用。
例子: 41236 + k (一般的说法 ?)
测试环境: win32 emu_segaMD_gens 2.14 ... ok!
方向键设置:左下右上 = asdw ; 拳头 = k
*修正:应该用 sendINPUT
; 时间轴
z:: ;
sendINPUT {a down} ; a--
sleep 34 ;a --34ms--
sendINPUT {s down} ; --(a+s)--
sleep 34 ;as as--34ms--
sendINPUT {a up} ;as - a = s --(as -s)--
sleep 34 ;s s--34ms--
sendINPUT {d down} ;s + d = sd --(s + d)--
sleep 34 ;sd sd--34ms--
sendINPUT {s up} ;sd - s = d --(sd -s)--
sleep 34 ;d d--34ms--
sendINPUT {k down} ;d + k --(d + k)--
sleep 34 ;dk dk--34ms--
send {d up} ;dk - d = k --(dk -d)--k--
send {k up} ;k -k =没了 --(k - k)--end
时间轴串起来看:
a--34ms--(a+s)--as--34ms--(as-s)--s--34ms--(s+d)--sd--34ms--
--(sd-s)--d--34ms--(d+k)--dk--(34ms)--(dk-d)--k--(k-k)--结束。
查询的关键字发现简体多叫 "一键必杀"
才知道用 send hold 之後再一起 sleep 可以视为组合键?
*改用 sendINPUT
像是 sendINPUT {y down}{u down}{i down}
sleep 1000
sendINPUT {y up}{u up}{i up}
据说可以视为 "yui 同时压下1000ms"
*但我想如果是 send 送出之後,yui之间会有很小的时间差吧
微秒时间的设定应该也跟模拟器的 frame 有关
对 60fps 来说,每 frame 应该是 1/60 sec = 0.01667 sec
看情形,有些可以到 1 frame ,有些游戏按键动作好像得 2~3 frame 以上才被接受
1ms = 0.001s
所以 2 frame 应该设定 0.017 x 2 = 34ms 才对?
大概就这样
当然,这样子只能往右边转半圈
有办法先侦测人物方向,再决定是右半圈还是左半圈吗? /__\?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.70.173.43
※ 编辑: nehex 来自: 219.70.173.43 (12/29 14:05)