勉强能用,现在手不好手指不想动太多.
想玩好的话节奏要根据情况变化,脚本是顾忌不了的
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn ; Enable warnings to assist with detecting common errors.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
/*
WinKawaks 1.62模拟器的战国传承3的脚本,功能是连发拳,连发武器,一键空中连击,还有一键大必杀,另加入numpad0暂停功能.
按键设定在全局变量那里,各种操作延时,以及我优化后的参数都在全局变量和注释.
在Gui修改参数的画,必须要Submit_才能生效.
测试效果不错.
By setycyas, 2022-09-20
*/
/* G_开头的表示全局变量
*/
G_punch_key := "c" ;拳按键
G_weapon_key := "x" ;武器按键
G_ab_key := "t" ;ab键一起按的宏
G_duration_punch := 100 ;按住拳键的持续时间
G_t_punch := 50 ;拳的连发延时,延时定义为上一次松开键到下一次按键的时间,下同.测试结果:全人物-50
G_duration_weapon := 200 ;按住武器键的持续时间
G_t_weapon = 190,220,120 ;武器的连发延时.测试结果:红,金鹰,影连,白鬼,阿国-190,220,120;金刚-190,220,150
G_weapon_delay_list := StrSplit(G_t_weapon, ",") ;武器连发时长数组
G_t_jump = 100,150 ;空中连击延时,第一个是武器键延时,第二个是拳键延时.测试结果:红-40,120;金鹰,影连,白鬼,阿国-100,150;金刚打不出来
G_t_jump_list := StrSplit(G_t_jump, ",") ;空中连击时长数组
G_jump_combo:=[1, 0, 1, 0] ;空中连击组合,1为武器,0为拳,如果用红可以增加连击长度,这里设定为4连击
/* 函数定义
*/
;按键与放开按键函数
press(key, pressDuration := 100){
OutputDebug, press(%key%)
send, {%key% down}
sleep, %pressDuration%
send, {%key% up}
OutputDebug, press(%key%) finished
}
;长期等待按键放开函数,等待一段时间,每waitDuration秒检查一次,若中途放开返回1,等待完毕未放开返回0
wait_key_up(key, waitTime, waitDuration := 100){
OutputDebug, wait_key_up(%key%, %waitTime%)
temp := 0 ;计算总等待时间
delta := 0 ;下一次等待时间
while (temp < waitTime) {
delta := (waitTime-temp > waitDuration) ? (waitDuration) : (waitTime-temp)
OutputDebug, delta=%delta%
if (!GetKeyState(key)) {
OutputDebug, wait_key_up(%key%, %waitTime%) returns 1
return 1
}
sleep ,%delta%
temp := temp+delta
}
OutputDebug, wait_key_up(%key%, %waitTime%) returns 0
return 0
}
/* 加入Gui
*/
Gui, Add, Text, , Delay for punch:
Gui, Add, Edit, vG_t_punch, %G_t_punch%
Gui, Add, Text, , Delay list for weapon:
Gui, Add, Edit, vG_t_weapon, %G_t_weapon%
Gui, Add, Text, , Delay for jump attacks:
Gui, Add, Edit, vG_t_jump, %G_t_jump%
Gui, Add, Button,, Submit_ ;提交
Gui, Add, Button,, Exit ;结束app
Gui, Show,w250h200, WinKawaks - sengoku3
return
/* Gui响应
*/
ButtonSubmit_:
Gui, Submit,NoHide ; 保存用户输入后每个控件的数据,NoHide可以在提交数据后保持窗体显示
G_weapon_delay_list := StrSplit(G_t_weapon, ",") ;武器连发时长数组
G_t_jump_list := StrSplit(G_t_jump, ",") ;空中连击时长数组
MsgBox, You have submit your changes!
return
ButtonExit:
ExitApp
return
/* 快捷键处理
*/
#IfWinActive, ahk_exe WinKawaks.exe
;连发拳,为防止死循环,有最大次数限制,放开键则停止:
~w::
OutputDebug, press w
loop, 10 {
press(G_punch_key, G_duration_punch)
if (!GetKeyState("w")) {
OutputDebug, w up
break
}
sleep, %G_t_punch%
}
;sleep, 40 ;避免按着w时连续形成下一次连击
return
;剑连发,按照G_t_weapon的延时进行连击
~s::
OutputDebug, press s
press(G_weapon_key, G_duration_weapon) ;必须持续按长时间,太短会无法反应!因为武器出手时间长
for k, v in G_weapon_delay_list {
isSUp := wait_key_up("s", v)
if (isSUp) {
OutputDebug, s up
break
}else{
press(G_weapon_key, G_duration_weapon)
}
}
;sleep, 40 ;避免按着s时连续形成下一次连击
return
;空中连击
~q::
OutputDebug, press q
for k, v in G_jump_combo {
next_wait := 0 ;下一个等待时间,根据武器和拳改变
if (v) {
press(G_weapon_key, G_duration_weapon)
next_wait := G_t_jump_list[1]
} else {
press(G_punch_key, G_duration_punch)
next_wait := G_t_jump_list[2]
}
sleep, %next_wait%
/* 下面是有等待q键弹起并中止连击的代码,考虑到连击较短,暂时放弃了这段代码,不再设置连击中止
if (v) {
press(G_weapon_key, 40)
next_wait := G_t_jump
} else {
press(G_punch_key)
next_wait := G_t_jump+20
}
IsQUp := wait_key_up("q", next_wait)
if (IsQUp){
OutputDebug, q up
break
}
*/
}
;sleep, 40 ;避免按着q时连续形成下一次连击
return
;大忍术或影连,金刚的投技忍术
~r::
press("down", 50)
sleep, 50
send {up down}
sleep, 50
send {%G_ab_key% down}
sleep, 50
send {up up}
send {%G_ab_key% up}
return
;暂停
~numpad0::
press("Enter")
return
#IfWinActive