作者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)