【原神】猫猫钟离一键套盾 倒计时显示持续时间 电脑玩家必备!

​ ​此次使用到FindText工具进行判断钟离和猫猫的元素战技,然后触发长按技能进行套盾,之后血量条上面会出现倒计时和倒计时条,可用于查看护盾的持续时间,让自己可以更加从容,同时简化操作,毕竟懒惰使人进步嘛。

教学视频:
[[原神]猫猫钟离一键套盾 倒计时显示持续时间 电脑玩家必备!]

效果GIF:

【原神】猫猫钟离一键套盾 倒计时显示持续时间 电脑玩家必备!

 

切人不想放技能就按住Ctrl然后按1就可以了,软件在视频评论区。
代码:

;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄     脚本设定     ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
#NoEnv  ; 不检查空变量是否为环境变量(建议所有新脚本使用).
#SingleInstance force
#Persistent                 ;让脚本持续运行(即直到用户关闭或遇到 ExitApp).
#InstallKeybdHook           ;强制无条件安装键盘钩子.
#InstallMouseHook
#UseHook                    ;强制使用钩子实现全部或部分键盘热键.
#KeyHistory, 0              ;置为 0 来禁用按键历史.
SetKeyDelay,-1, 1           ;设置每次 Send 和 ControlSend 发送键击后自动的延时.
SetControlDelay, -1         ;设置在每次控件修改命令执行后自动的延时.
SetMouseDelay, -1           ;设置每次鼠标移动或点击后自动的延时.
SetWinDelay,-1              ;设置在每次执行窗口命令(例如 WinActivate) 后自动的延时.
SetBatchLines,-1            ;使用 SetBatchLines -1 让脚本无休眠运行(即让脚本以全速运行).
ListLines, Off              ;在历史中略去后续执行的行.
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄     参数设置     ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
WinSet, AlwaysOnTop, Off, ahk_exe YuanShen.exe
WinGetPos, pX, pY, pW, pH, ahk_exe YuanShen.exe ; 获取画图窗口的位置和大小
SetTimer, LoopTimer, 50
Gosub 窗口位置
gosub createGUI8    ;倒计时条UI
#Include FindText.ahk
return
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄     热    键     ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
#IfWinActive ahk_exe YuanShen.exe
~1::
    Text:="|<>#16@0.97$6.0AyzSAU"   ;颜色位置模式 #21 从左到右,从上到下第21个像素开始 @0.97:相似度为(97%) $6:图像宽度是6
    Text.="|<mao>#35@0.97$10.7Uz7yzzzzzwy"   ;猫盾 注意冒号(:)要改为英文下的点(.) 表示和上面一条一起查找 <>中间加识别用的名称 例如mao
    WinGetPos, pX, pY, pW, pH, ahk_exe YuanShen.exe ; 获取画图窗口的位置和大小
    if (ok:=FindText(X:="wait", Y:=1, pX+1176, pY+705, pX+1238, pY+753, 0, 0, Text))
    {
        Gui, 8:Destroy
        Gosub 窗口位置
        if (ok[1].id == "mao")  ;如果是猫(mao)的话
            cdtime1:=12000      ;倒计时就设置为12秒
        Gosub createGUI8
        Sleep(20)
        Send {e Down}
        Sleep(980)
        Send {e Up}
        Progress1 := A_TickCount
    }
return
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄     标    签     ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
窗口位置:
    cd1:= 1 
	cdtime1:=20500
    pH2:=pW*9/16                  ;游戏16比9分辨率计算去标题栏窗口高度
    PY2:=pY+(pH-pH2)              ;游戏去标题栏窗口左上角Y坐标
    UI_Y:=Ceil(pY2+pH2*0.873)     ;GUI的Y坐标
    UI_W:=Ceil(0.154*pW)           ;GUI的宽度
    UI_H:=Ceil(0.012*pH)*2        ;GUI的高度
    UI_P:=Ceil(0.00732*pW)        ;进度条的高度
    UI_X:=Ceil(pX+pW/2-UI_W/2)
Return
createGUI8:
    colorBG = 11213a
    Gui, 8:Font, s15 bold
    Gui, 8:+ToolWindow
    Gui, 8:Color, %colorBG%
    Gui, 8:Show, x%UI_X% y%UI_Y% w%UI_W% h%UI_H% NA ;NA: 显示窗口但不进行激活
    Gui, 8:-Caption +AlwaysOnTop +Disabled +E0x20 +LastFound
    WinSet, TransColor, 0x%colorBG% 250
    
    if cd1 and cdtime1
    {
        Gui, 8:Add, Text    , x0 y0 w%UI_W% h%UI_H% cE6C04D BackGround%colorBG% vjisi1 Center
        Gui, 8:Add, Progress, x0    w%UI_W% h%UI_P% cE6C04D BackGround%colorBG% vProgress1   
    }
Return
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄     函    键     ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
sleep(duration)  ;高精度睡眠时间
{
	SleepDuration:= duration
	DllCall("Sleep", UInt, SleepDuration)
	DllCall("Winmm\timeEndPeriod", UInt, TimePeriod)  ; 应该进行调用来让系统恢复正常.
}
LoopTimer()  ;实现按时间减少进度条;倒计时
{
	global
    if cd1 and cdtime1  ;不为空值和0值
    {
        tickCount := Progress1 + cdtime1 +100   ;释放技能时的时间+角色技能时间+100
        If A_TickCount < %tickCount% ;如果当前时间 小于(释放技能时的时间+角色技能时间+100) 
        {
            t2 := Round(-(A_TickCount -Progress1-cdtime1)/1000, 2)       ;t2 时间 越来越小 显示倒计时效果
            p3 := 100 - (A_TickCount -Progress1)/(cdtime1/100)           ;p3 越来越小 调整计时条长度
            ;ToolTip % t2 "####" p3 "####" (A_TickCount -Progress1)/(cdtime1/100)      ;debug
            if t2>0.3
                GuiControl,8:,jisi1,%t2%    ;倒计时数字
            else
                GuiControl,8:,jisi1, ̄▽ ̄
            GuiControl,8:,Progress1,%p3%    ;调整计时条 
        }
    }
}
;▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄     全局热键     ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄
#IfWinActive
F2::    ;保存(使用AutoAHK编辑器才会保存)之后重启
	ControlSend,ahk_parent,^s,ahk_exe AutoAHK.exe 
    sleep 50
	ControlSend,ahk_parent,^s,ahk_exe AutoAHK.exe
    sleep 100
	Reload
return
!F1::   ;Alt+F1获取鼠标停留处的坐标、色值代码
	MouseGetPos, MouseX, MouseY
	PixelGetColor, color, %MouseX%, %MouseY%, RGB
	StringLeft color,color,10
	ToolTip, GetColor(%MouseX%`,%MouseY%)=="%color%"
	clipboard = GetColor(%MouseX%,%MouseY%)=="%color%"
return
!F2::   ;Alt+F2获取鼠标停留处的游戏类名的代码
	WinGetClass, class, A
	ToolTip, #IfWinActive ahk_class %class%
	clipboard = #IfWinActive ahk_class %class%
return
!F3::   ;Alt+F3获取鼠标停留处的代码,用于快速移动鼠标并点击此处
	MouseGetPos, MouseX, MouseY
	ToolTip, SendInput {Click %MouseX%`,%MouseY%}
	clipboard =SendInput {Click %MouseX%,%MouseY%}
return
!F4::   ;Alt+F4获取鼠标停留处的代码,用于快速移动鼠标到此处丹不点击
	MouseGetPos, MouseX, MouseY
	ToolTip, MouseMove %MouseX%`,%MouseY%
	clipboard =MouseMove %MouseX%,%MouseY%
return
!F5::   ;Alt+F1鼠标停留处的窗口置顶或取消置顶
	WinSet, AlwaysOnTop, Toggle,A
	WinGetTitle, getTitle, A
	WinGet, getTop,ExStyle,A
	if (getTop & 0x8)
		ToolTip 已置顶 `n%getTitle%  ,  , , 2
	else
		ToolTip 取消置顶,,,2
return
 !Left::MouseMove, -1,  0, 0, R     ;鼠标左移一个像素
!Right::MouseMove,  1,  0, 0, R     ;鼠标右移一个像素
   !Up::MouseMove,  0, -1, 0, R     ;鼠标上移一个像素
 !Down::MouseMove,  0,  1, 0, R     ;鼠标下移一个像素
F8::        ;窗口化的原神左上角对其,用于snipaste截图软件定格画面后再用本AHK的Alt+F1热键取色
    WinMove 原神,, 0, 0 
Return

给TA捐赠
共{{data.count}}人
人已捐赠
应用

优秀思维作品:穿透烟雾自动开枪!构思来源于dbgba大佬早期作品

2022-9-6 1:49:52

其他函数应用

关于一个自动答题脚本的思路....

2022-9-7 23:02:16

2 条回复 A文章作者 M管理员
  1. dbgba
    dbgba给您捐赠了¥2
  2. 吃肉的猪

    感谢大佬分享,谢谢备注了每行代码的意思.

个人中心
购物车
优惠劵
有新私信 私信列表
搜索