写了个能用的战国传承 3 连击脚本

勉强能用,现在手不好手指不想动太多.

想玩好的话节奏要根据情况变化,脚本是顾忌不了的

#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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值