DoroHelper/DoroHelper.ahk

2818 lines
96 KiB
AutoHotkey
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#Requires AutoHotkey >=v2.0
#Include %A_ScriptDir%\lib\github.ahk
CoordMode "Pixel", "Client"
CoordMode "Mouse", "Client"
;操作间隔(单位:毫秒)
sleepTime := 1500
scrRatio := 1.0
;consts
stdScreenW := 3840
stdScreenH := 2160
waitTolerance := 50
colorTolerance := 15
currentVersion := "v0.1.23"
usr := "kyokakawaii"
repo := "DoroHelper"
;颜色判断
IsSimilarColor(targetColor, color) {
tr := Format("{:d}", "0x" . substr(targetColor, 3, 2))
tg := Format("{:d}", "0x" . substr(targetColor, 5, 2))
tb := Format("{:d}", "0x" . substr(targetColor, 7, 2))
pr := Format("{:d}", "0x" . substr(color, 3, 2))
pg := Format("{:d}", "0x" . substr(color, 5, 2))
pb := Format("{:d}", "0x" . substr(color, 7, 2))
;MsgBox tr tg tb pr pg pb
distance := sqrt((tr - pr) ** 2 + (tg - pg) ** 2 + (tb - pb) ** 2)
if (distance < colorTolerance)
return true
return false
}
;检查更新
CheckForUpdateHandler(isManualCheck) {
global currentVersion, usr, repo ; 确保能访问全局变量
try {
latestObj := Github.latest(usr, repo)
if (currentVersion != latestObj.version) {
userResponse := MsgBox( ; 发现新版本
"DoroHelper存在更新版本:`n"
"`nVersion: " latestObj.version
"`nNotes:`n"
. latestObj.change_notes
"`n`n是否下载?", , "36") ; 0x24 = Yes/No + Question Icon
if (userResponse = "Yes") {
; 用户选择下载
downloadTempName := "DoroDownload.exe" ; 临时文件名
finalName := "DoroHelper-" latestObj.version ".exe"
try {
Github.Download(latestObj.downloadURLs[1], A_ScriptDir "\" downloadTempName)
; 下载成功后重命名
FileMove(A_ScriptDir "\" downloadTempName, A_ScriptDir "\" finalName, 1) ; 1 = overwrite
MsgBox("新版本已下载至当前目录: " finalName, "下载完成")
ExitApp ; 下载完成后退出当前脚本
} catch as downloadError {
MsgBox("下载失败,请检查网络。`n(" downloadError.Message ")", "下载错误", "IconX")
; 删除临时文件
if FileExist(A_ScriptDir "\" downloadTempName)
FileDelete(A_ScriptDir "\" downloadTempName)
}
}
; else 用户选择不下载,什么也不做
} else {
; 没有新版本
if (isManualCheck) { ; 只有手动检查时才提示
MsgBox("当前Doro已是最新版本。", "检查更新")
}
}
} catch as githubError {
; 只有手动检查时才提示连接错误,自动检查时静默失败
if (isManualCheck) {
MsgBox("检查更新失败无法连接到Github或仓库信息错误。`n(" githubError.Message ")", "检查更新错误", "IconX")
}
}
}
ClickOnCheckForUpdate(*) {
CheckForUpdateHandler(true) ; 调用核心函数,标记为手动检查
}
;坐标转换-点击
UserClick(sX, sY, k) {
uX := Round(sX * k)
uY := Round(sY * k)
Send "{Click " uX " " uY "}"
}
;坐标转换-颜色
UserCheckColor(sX, sY, sC, k) {
loop sX.Length {
uX := Round(sX[A_Index] * k)
uY := Round(sY[A_Index] * k)
uC := PixelGetColor(uX, uY)
if (!IsSimilarColor(uC, sC[A_Index]))
return 0
}
return 1
}
;判断自动按钮颜色
isAutoOff(sX, sY, k) {
uX := Round(sX * k)
uY := Round(sY * k)
uC := PixelGetColor(uX, uY)
r := Format("{:d}", "0x" . substr(uC, 3, 2))
g := Format("{:d}", "0x" . substr(uC, 5, 2))
b := Format("{:d}", "0x" . substr(uC, 7, 2))
if Abs(r - g) < 10 && Abs(r - b) < 10 && Abs(g - b) < 10
return true
return false
}
;检查自动瞄准和自动爆裂按钮颜色
CheckAutoBattle() {
static autoBurstOn := false
static autoAimOn := false
; 检查并开启自动瞄准 (Auto Aim)
if !autoAimOn && UserCheckColor([216], [160], ["0xFFFFFF"], scrRatio) {
; 如果自动瞄准按钮是灰色/关闭状态
if isAutoOff(60, 57, scrRatio) {
UserClick(60, 71, scrRatio) ; 点击开启自动瞄准
Sleep sleepTime
}
autoAimOn := true ; 设置标志位,表示已尝试开启或已开启
}
; 检查并开启自动爆裂 (Auto Burst)
if !autoBurstOn && UserCheckColor([216], [160], ["0xFFFFFF"], scrRatio) { ; 假设检查点与 Auto Aim 相同
; 如果自动爆裂按钮是灰色/关闭状态
if isAutoOff(202, 66, scrRatio) {
Send "{Tab}" ; 发送 Tab 键尝试开启自动爆裂
Sleep sleepTime
}
autoBurstOn := true ; 设置标志位,表示已尝试开启或已开启
}
}
;登录
Login() {
stdTargetX := 333
stdTargetY := 2041
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if UserCheckColor([1973, 1969], [1368, 1432], ["0x00ADFB", "0x00ADFB"], scrRatio) {
UserClick(2127, 1400, scrRatio)
Sleep sleepTime
}
if UserCheckColor([1965, 1871], [1321, 1317], ["0x00A0EB", "0xF7F7F7"], scrRatio) {
UserClick(2191, 1350, scrRatio)
Sleep sleepTime
}
if UserCheckColor([1720, 2111], [1539, 1598], ["0x00AEFF", "0x00AEFF"], scrRatio) {
UserClick(1905, 1568, scrRatio)
Sleep sleepTime
}
if A_Index > waitTolerance * 50 {
MsgBox "登录失败!"
ExitApp
}
}
}
;返回大厅
BackToHall() {
stdTargetX := 333
stdTargetY := 2041
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退回大厅失败!"
ExitApp
}
}
}
;1: 防御前哨基地奖励
OutpostDefence() {
; --- 函数开始 --- (移除了 Start: 标签)
stdTargetX := 1092
stdTargetY := 1795
UserClick(stdTargetX, stdTargetY, scrRatio) ; 点击进入前哨基地
Sleep sleepTime
; 等待进入前哨基地的标准检查点
stdCkptX := [1500, 1847]
stdCkptY := [1816, 1858]
desiredColor := ["0xF8FCFD", "0xF7FCFD"]
loopCounter := 0 ; 独立的循环计数器
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
loopCounter += 1
if loopCounter > waitTolerance { ; 使用独立的计数器判断超时
MsgBox "进入防御前哨失败! (超时)"
ExitApp
}
if loopCounter > 10 { ; 尝试次数过多,可能卡住
MsgBox "进入防御前哨尝试次数过多,退出。"
; 可以选择是否在退出前尝试返回大厅
ExitApp
}
}
; 点击 "一举歼灭" 按钮
stdTargetX := 1686
stdTargetY := 1846
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
; 等待 "一举歼灭" 界面加载完成(通过检查点消失判断)
stdCkptX := [1500, 1847] ; 使用与进入时相同的检查点
stdCkptY := [1816, 1858]
desiredColor := ["0xF8FCFD", "0xF7FCFD"]
loopCounter := 0 ; 重置计数器
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio) ; 持续点击直到界面变化
Sleep sleepTime
loopCounter += 1
if loopCounter > waitTolerance {
MsgBox "进入一举歼灭失败! (超时)"
ExitApp
}
if loopCounter > 10 {
MsgBox "进入一举歼灭尝试次数过多,退出。"
ExitApp
}
}
; 检查是否有免费扫荡次数 (按钮非灰色)
sweepCkptX := [1933]
sweepCkptY := [1648]
sweepGrayColor := ["0xE9ECF0"] ; 灰色按钮颜色
if !UserCheckColor(sweepCkptX, sweepCkptY, sweepGrayColor, scrRatio) {
; --- 如果有免费次数,执行扫荡 ---
sweepTargetX := 2093 ; 扫荡按钮 X
sweepTargetY := 1651 ; 扫荡按钮 Y
UserClick(sweepTargetX, sweepTargetY, scrRatio)
Sleep sleepTime
sweepConfirmCkptX := [1933] ; 扫荡确认界面检查点 X
sweepConfirmCkptY := [1648] ; 扫荡确认界面检查点 Y
sweepConfirmColor := ["0x11ADF5"] ; 扫荡确认界面特征颜色
loopCounter := 0 ; 重置计数器
while UserCheckColor(sweepConfirmCkptX, sweepConfirmCkptY, sweepConfirmColor, scrRatio) {
UserClick(sweepTargetX, sweepTargetY, scrRatio) ; 持续点击扫荡按钮直到确认界面消失
Sleep sleepTime
; 检查并处理可能的次级弹窗 (例如资源不足提示)
if UserCheckColor([2088], [1327], ["0x00A0EB"], scrRatio) {
UserClick(2202, 1342, scrRatio) ; 点击次级弹窗确认
Sleep sleepTime ; 等待次级弹窗消失
}
loopCounter += 1
if loopCounter > 10 { ; 设置扫荡确认的超时次数
MsgBox "扫荡确认超时,退出。"
ExitApp
}
}
}
popupCkptX := [2356]
popupCkptY := [1870]
popupDesiredColor := ["0x0EAFF4"]
popupTargetX := 2156
popupTargetY := 1846
popupLoopCounter := 0 ; 为此弹窗处理循环设置独立计数器
while !UserCheckColor(popupCkptX, popupCkptY, popupDesiredColor, scrRatio) {
UserClick(popupTargetX, popupTargetY, scrRatio) ; 点击确认按钮区域
Sleep sleepTime
; 检查并处理另一个可能的次级弹窗
if UserCheckColor([2088], [1327], ["0x00A0EB"], scrRatio) {
UserClick(2202, 1342, scrRatio) ; 点击次级弹窗的确认
Sleep sleepTime ; 等待次级弹窗消失
}
popupLoopCounter += 1
if popupLoopCounter > 10 { ; 设置一个合理的超时次数
MsgBox("处理弹窗超时,退出。")
ExitApp
}
}
; 点击 "获得奖励" 按钮
rewardTargetX := 2156
rewardTargetY := 1846
UserClick(rewardTargetX, rewardTargetY, scrRatio)
Sleep sleepTime
; 等待返回大厅
hallCkptX := [64]
hallCkptY := [470]
hallDesiredColor := ["0xFAA72C"]
loopCounter := 0 ; 重置计数器
while !UserCheckColor(hallCkptX, hallCkptY, hallDesiredColor, scrRatio) {
UserClick(rewardTargetX, rewardTargetY, scrRatio) ; 持续点击直到返回大厅
Sleep sleepTime
; 再次检查并处理可能的次级弹窗
if UserCheckColor([2088], [1327], ["0x00A0EB"], scrRatio) {
UserClick(2202, 1342, scrRatio)
Sleep sleepTime
}
loopCounter += 1
if loopCounter > waitTolerance { ; 使用全局超时容忍度
MsgBox("前哨基地防御奖励领取后返回大厅异常! (超时)")
ExitApp
}
}
}
;2: 付费商店每日每周免费钻
CashShop() {
;进入商店
stdTargetX := 1163
stdTargetY := 1354
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [158, 199]
stdCkptY := [525, 439]
desiredColor := ["0x0DC2F4", "0x3B3E41"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
if UserCheckColor([2047], [1677], ["0x00A0EB"], scrRatio) or UserCheckColor([2047], [1677], ["0x9A9B9A"],
scrRatio) {
UserClick(1789, 1387, scrRatio)
Sleep sleepTime
UserClick(1789, 1387, scrRatio)
Sleep sleepTime
UserClick(2144, 1656, scrRatio)
Sleep sleepTime
while UserCheckColor([2047], [1677], ["0x00A0EB"], scrRatio) {
UserClick(2144, 1656, scrRatio)
Sleep sleepTime
}
break
}
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if UserCheckColor([2088], [1327], ["0x00A0EB"], scrRatio) {
UserClick(2202, 1342, scrRatio)
}
if A_Index > waitTolerance {
MsgBox "进入付费商店失败!"
ExitApp
}
}
Sleep sleepTime
if UserCheckColor([2047], [1677], ["0x00A0EB"], scrRatio) or UserCheckColor([2047], [1677], ["0x9A9B9A"], scrRatio) {
UserClick(1789, 1387, scrRatio)
Sleep sleepTime
UserClick(1789, 1387, scrRatio)
Sleep sleepTime
UserClick(2144, 1656, scrRatio)
Sleep sleepTime
while UserCheckColor([2047], [1677], ["0x00A0EB"], scrRatio) {
UserClick(2144, 1656, scrRatio)
Sleep sleepTime
}
}
delta := false
stdCkptX := [52]
stdCkptY := [464]
desiredColor := ["0xF7FCFD"]
if UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio)
delta := true
stdTargetX := 256
if delta
stdTargetX := 432
stdTargetY := 486
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [194]
if delta
stdCkptX := [373]
stdCkptY := [436]
desiredColor := ["0x0FC7F5"]
if delta
desiredColor := ["0x0BC7F4"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "进入礼包页面失败!"
ExitApp
}
}
stdCkptX := [514]
stdCkptY := [1018]
desiredColor := ["0xF2F8FC"]
if UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
stdTargetX := stdTargetX - 172
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
}
del := 336
stdCkptX := [1311]
stdCkptY := [612]
desiredColor := ["0xA0A0AC"]
if UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio)
del := 0
;每日
stdTargetX := 545 - del
stdTargetY := 610
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [431 - del]
stdCkptY := [594]
desiredColor := ["0x0EC7F5"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "进入每日礼包页面失败!"
ExitApp
}
}
stdTargetX := 212
stdTargetY := 1095
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
;每周
stdTargetX := 878 - del
stdTargetY := 612
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [769 - del]
stdCkptY := [600]
desiredColor := ["0x0CC8F4"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "进入每周礼包页面失败!"
ExitApp
}
}
stdTargetX := 212
stdTargetY := 1095
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
;每月
stdTargetX := 1211 - del
stdTargetY := 612
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [1114 - del]
stdCkptY := [600]
desiredColor := ["0x0CC8F4"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "进入每月礼包页面失败!"
ExitApp
}
}
stdTargetX := 212
stdTargetY := 1095
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
;回到大厅
stdTargetX := 333
stdTargetY := 2041
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "退出付费商店失败!"
ExitApp
}
}
}
;3: 免费商店 - 判断指定坐标的颜色对应哪种手册,并返回用户是否勾选了购买该手册
BuyThisBook(coor, k) {
global g_settings ; <--- 添加对全局 g_settings 的访问
uX := Round(coor[1] * k)
uY := Round(coor[2] * k)
uC := PixelGetColor(uX, uY)
; 将十六进制颜色代码转换为 RGB 十进制值
R := Format("{:d}", "0x" . SubStr(uC, 3, 2))
G := Format("{:d}", "0x" . SubStr(uC, 5, 2))
B := Format("{:d}", "0x" . SubStr(uC, 7, 2))
; 判断颜色并返回对应的 g_settings 值 (用户是否勾选了购买)
if (B > G and B > R) {
; 蓝色为主 -> 水冷手册 ("BookWater")
return g_settings["BookWater"] ;
}
if (G > R and G > B) {
; 绿色为主 -> 风压手册 ("BookWind")
return g_settings["BookWind"] ;
}
if (R > G and G > B and G > 80) {
; 铁甲手册 ("BookIron")
return g_settings["BookIron"] ;
}
if (R > B and B > G and B > 80) {
; 电击手册 ("BookElec")
return g_settings["BookElec"]
}
; 默认情况或主要是纯红色 -> 燃烧手册 ("BookFire")
return g_settings["BookFire"] ; (作为默认或纯红色的情况)
}
; 白嫖一次普通商店
ShopFreeClaim() {
local claimTargetX, claimTargetY, confirmCkptX, confirmCkptY, confirmColor, confirmTargetX, confirmTargetY,
shopCkptX, shopCkptY, shopColor, loopCounter ; 使用 local 避免污染全局
; --- 点击领取按钮 ---
claimTargetX := 383
claimTargetY := 1480
UserClick(claimTargetX, claimTargetY, scrRatio)
Sleep sleepTime
; --- 等待确认弹窗 ---
confirmCkptX := [2063]
confirmCkptY := [1821]
confirmColor := ["0x079FE4"]
loopCounter := 0
while !UserCheckColor(confirmCkptX, confirmCkptY, confirmColor, scrRatio) {
UserClick(claimTargetX, claimTargetY, scrRatio) ; 如果没等到,再点一下领取按钮
Sleep sleepTime // 2
loopCounter += 1
if loopCounter > waitTolerance {
MsgBox "普通商店免费领取:等待确认弹窗超时!"
ExitApp
}
}
; --- 点击确认按钮 ---
confirmTargetX := 2100
confirmTargetY := 1821
UserClick(confirmTargetX, confirmTargetY, scrRatio)
Sleep sleepTime
; --- 等待返回商店主界面 ---
shopCkptX := [118]
shopCkptY := [908]
shopColor := ["0xF99217"]
loopCounter := 0
while !UserCheckColor(shopCkptX, shopCkptY, shopColor, scrRatio) {
UserClick(confirmTargetX, confirmTargetY, scrRatio) ; 如果没等到,再点一下确认按钮
Sleep sleepTime // 2
loopCounter += 1
if loopCounter > waitTolerance {
MsgBox "普通商店免费领取:等待返回商店界面超时!"
ExitApp
}
}
; --- 单次免费领取完成 ---
}
FreeShop(numOfBook) {
global g_settings, isBoughtTrash, scrRatio, sleepTime, waitTolerance ; 确保访问全局变量
;进入商店
stdTargetX := 1193
stdTargetY := 1487
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
shopCkptX := [118]
shopCkptY := [908]
shopDesiredColor := ["0xF99217"] ; 商店主界面特征颜色
loopCounter := 0
while !UserCheckColor(shopCkptX, shopCkptY, shopDesiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio) ; 点击进入商店
Sleep sleepTime
loopCounter += 1
if loopCounter > waitTolerance {
MsgBox "进入普通商店失败!"
ExitApp
}
}
; 检查第一次免费领取是否可用 (按钮非蓝色)
firstClaimCkptX := [349]
firstClaimCkptY := [1305]
firstClaimUsedColor := ["0x127CD7"] ; 领取过的按钮颜色
if !UserCheckColor(firstClaimCkptX, firstClaimCkptY, firstClaimUsedColor, scrRatio) {
ShopFreeClaim() ; 执行第一次免费领取
; 检查是否还有第二次免费次数 (刷新按钮是否有红点)
refreshCkptX := [697]
refreshCkptY := [949]
refreshAvailableColor := ["0xFB5C24"] ; 有免费刷新次数的红点颜色
if UserCheckColor(refreshCkptX, refreshCkptY, refreshAvailableColor, scrRatio) {
; --- 执行刷新操作 ---
refreshTargetX := 476
refreshTargetY := 981
UserClick(refreshTargetX, refreshTargetY, scrRatio) ; 点击刷新按钮
Sleep sleepTime
; 等待刷新确认弹窗
refreshPopupCkptX := [2133]
refreshPopupCkptY := [1345]
refreshPopupColor := ["0x00A0EB"]
loopCounter := 0 ; 重置计数器
while !UserCheckColor(refreshPopupCkptX, refreshPopupCkptY, refreshPopupColor, scrRatio) {
UserClick(refreshTargetX, refreshTargetY, scrRatio) ; 继续点刷新
Sleep sleepTime // 2
loopCounter += 1
if loopCounter > waitTolerance {
MsgBox "普通商店刷新:等待确认弹窗超时!"
ExitApp
}
}
; 点击刷新确认按钮
refreshConfirmX := 2221
refreshConfirmY := 1351
UserClick(refreshConfirmX, refreshConfirmY, scrRatio)
Sleep sleepTime
; 等待刷新完成,返回商店主界面
loopCounter := 0 ; 重置计数器
; 点击一个空白区域确保焦点不在按钮上,防止意外点击
fallbackClickX := 588
fallbackClickY := 1803
while !UserCheckColor(shopCkptX, shopCkptY, shopDesiredColor, scrRatio) {
UserClick(fallbackClickX, fallbackClickY, scrRatio) ; 点击空白区域
Sleep sleepTime // 2
loopCounter += 1
if loopCounter > waitTolerance {
MsgBox "普通商店刷新:确认后返回商店超时!"
ExitApp
}
}
Sleep 1000 ; 刷新后额外等待一下界面加载
ShopFreeClaim() ; 执行第二次免费领取
}
}
;废铁商店检查是否已经购买
stdTargetX := 137
stdTargetY := 1737
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [137]
stdCkptY := [1650]
desiredColor := ["0xFB931A"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "废铁商店进入异常!"
ExitApp
}
}
if sleepTime < 1500
Sleep 500
global isBoughtTrash
stdCkptX := [349]
stdCkptY := [1305]
desiredColor := ["0x137CD5"]
if !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
isBoughtTrash := 0
}
else {
isBoughtTrash := 1
}
;如果需要,则购买竞技场商店前三本书
if (numOfBook >= 1 or g_settings["CompanyWeapon"]) {
stdTargetX := 134
stdTargetY := 1403
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [134]
stdCkptY := [1316]
desiredColor := ["0xFA9318"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "竞技场商店进入异常!"
ExitApp
}
}
if sleepTime < 1500
Sleep 500
}
if numOfBook >= 1 {
;购买第一本书
;如果今天没买过
stdCkptX := [349]
stdCkptY := [1305]
desiredColor := ["0x127CD7"]
;如果今天没买过
if !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) and BuyThisBook([378, 1210], scrRatio) {
stdTargetX := 384
stdTargetY := 1486
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2067]
stdCkptY := [1770]
desiredColor := ["0x07A0E4"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "第一本书购买异常!"
ExitApp
}
}
stdTargetX := 2067
stdTargetY := 1770
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [134]
stdCkptY := [1316]
desiredColor := ["0xFA9318"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index >= 2 {
stdTargetX := 2067
stdTargetY := 1970
}
if A_Index > waitTolerance {
MsgBox "第一本书购买异常!"
ExitApp
}
}
}
}
if numOfBook >= 2 {
;购买第二本书
;如果今天没买过
stdCkptX := [673]
stdCkptY := [1305]
desiredColor := ["0x137CD5"]
if !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) and BuyThisBook([702, 1210], scrRatio) {
stdTargetX := 702
stdTargetY := 1484
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2067]
stdCkptY := [1770]
desiredColor := ["0x07A0E4"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "第二本书购买异常!"
ExitApp
}
}
stdTargetX := 2067
stdTargetY := 1770
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [134]
stdCkptY := [1316]
desiredColor := ["0xFA9318"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index >= 2 {
stdTargetX := 2067
stdTargetY := 1970
}
if A_Index > waitTolerance {
MsgBox "第二本书购买异常!"
ExitApp
}
}
}
}
if numOfBook >= 3 {
;购买第三本书
;如果今天没买过
stdCkptX := [997]
stdCkptY := [1304]
desiredColor := ["0x147BD4"]
if !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) and BuyThisBook([1025, 1210], scrRatio) {
stdTargetX := 1030
stdTargetY := 1485
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2067]
stdCkptY := [1770]
desiredColor := ["0x07A0E4"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "第三本书购买异常!"
ExitApp
}
}
stdTargetX := 2067
stdTargetY := 1770
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [134]
stdCkptY := [1316]
desiredColor := ["0xFA9318"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index >= 2 {
stdTargetX := 2067
stdTargetY := 1970
}
if A_Index > waitTolerance {
MsgBox "第三本书购买异常!"
ExitApp
}
}
}
}
if g_settings["CompanyWeapon"] {
stdCkptX := [2011]
stdCkptY := [1213]
desiredColor := ["0xD65E46"]
if UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
stdTargetX := 2017
stdTargetY := 1485
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2067]
stdCkptY := [1770]
desiredColor := ["0x07A0E4"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "公司武器熔炉购买异常!"
ExitApp
}
}
stdTargetX := 2067
stdTargetY := 1770
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [134]
stdCkptY := [1316]
desiredColor := ["0xFA9318"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index >= 2 {
stdTargetX := 2067
stdTargetY := 1970
}
if A_Index > waitTolerance {
MsgBox "公司武器熔炉购买异常!"
ExitApp
}
}
}
}
stdTargetX := 333
stdTargetY := 2041
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "退出免费商店失败!"
ExitApp
}
}
}
;4: 派遣
Expedition() {
;进入前哨基地
stdTargetX := 1169
stdTargetY := 1663
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入前哨基地失败!"
ExitApp
}
}
stdCkptX := [1907, 1963, 1838, 2034]
stdCkptY := [1817, 1852, 1763, 1877]
desiredColor := ["0xFFFFFF", "0xFFFFFF", "0x0B1219", "0x0B1219"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入前哨基地失败!"
ExitApp
}
}
;派遣公告栏
;收菜
stdTargetX := 2002
stdTargetY := 2046
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2113, 2119, 2387]
stdCkptY := [372, 399, 384]
desiredColor := ["0x404240", "0x404240", "0x404240"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入派遣失败!"
ExitApp
}
}
stdTargetX := 2268
stdTargetY := 1814
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
Sleep 3000
;全部派遣
stdCkptX := [1869, 1977]
stdCkptY := [1777, 1847]
desiredColor := ["0xCFCFCF", "0xCFCFCF"]
;如果今天没派遣过
if !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
stdTargetX := 1930
stdTargetY := 1813
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2199, 2055]
stdCkptY := [1796, 1853]
desiredColor := ["0x00ADFF", "0x00ADFF"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "全部派遣失败!"
ExitApp
}
if UserCheckColor([1779], [1778], ["0xCFCFCF"], scrRatio)
break
}
stdTargetX := 2073
stdTargetY := 1818
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2199, 2055]
stdCkptY := [1796, 1853]
desiredColor := ["0x00ADFF", "0x00ADFF"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "全部派遣失败!"
ExitApp
}
}
}
;回到大厅
stdTargetX := 333
stdTargetY := 2041
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退出前哨基地失败!"
ExitApp
}
}
}
;5: 好友点数收取
FriendPoint() {
stdTargetX := 3729
stdTargetY := 553
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入好友界面失败!"
ExitApp
}
}
stdCkptX := [2104, 2197]
stdCkptY := [1825, 1838]
desiredColor := ["0x0CAFF4", "0xF7FDFE"]
stdTargetX := 2276
stdTargetY := 1837
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) && !UserCheckColor([2104, 2054], [1825, 1876], [
"0x8B8788", "0x8B8788"], scrRatio) {
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入好友界面失败!"
ExitApp
}
}
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "赠送好友点数失败"
ExitApp
}
}
stdTargetX := 333
stdTargetY := 2041
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退出好友界面失败!"
ExitApp
}
}
}
;6: 模拟室5C
SimulationRoom() {
stdTargetX := 2689
stdTargetY := 1463
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "进入方舟失败!"
ExitApp
}
}
stdCkptX := [1641]
stdCkptY := [324]
desiredColor := ["0x01D4F6"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入方舟失败!"
ExitApp
}
}
;进入模拟室
stdTargetX := 1547
stdTargetY := 1138
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [1829, 2024]
stdCkptY := [1122, 1094]
desiredColor := ["0xF8FCFD", "0xF8FCFD"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入模拟室失败!"
ExitApp
}
}
;开始模拟
stdTargetX := 1917
stdTargetY := 1274
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2054, 2331]
stdCkptY := [719, 746]
desiredColor := ["0xF8FBFD", "0xF8FBFD"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入选关失败!"
ExitApp
}
}
;选择5C
stdTargetX := 2127
stdTargetY := 1074
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
stdTargetX := 2263
stdTargetY := 1307
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
;点击开始模拟
;开始模拟
stdTargetX := 2216
stdTargetY := 1818
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [1991]
stdCkptY := [1814]
desiredColor := ["0xFA801A"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "开始模拟失败!"
ExitApp
}
}
stdTargetX := 1903
stdTargetY := 1369
stdCkptX := [304]
stdCkptY := [179]
desiredColor := ["0x858289"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入buff选择页面失败"
ExitApp
}
}
stdCkptX := [1760]
yy := 2160
stdCkptY := [yy]
desiredColor := ["0xDFE1E1"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
yy := yy - 30
stdCkptY := [yy]
if A_Index > waitTolerance {
ExitApp
}
}
stdTargetX := 1760
stdTargetY := yy
stdCkptX := [2053]
stdCkptY := [1933]
desiredColor := ["0x2E77C1"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入战斗准备页面失败!"
ExitApp
}
}
;点击进入战斗
stdTargetX := 2225
stdTargetY := 2004
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
stdCkptX := [1420, 2335]
stdCkptY := [1243, 1440]
desiredColor := ["0xFFFFFF", "0xFE0203"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
;UserClick(stdTargetX, stdTargetY - 300, scrRatio)
CheckAutoBattle()
Sleep sleepTime
if A_Index > waitTolerance * 2 {
;MsgBox "模拟室boss战异常"
break
}
}
stdTargetX := 1898
stdTargetY := 1996
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2115]
stdCkptY := [1305]
stdCkptX2 := [2115]
stdCkptY2 := [1556]
desiredColor := ["0xEFF3F5"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) && !UserCheckColor(stdCkptX2, stdCkptY2,
desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "模拟室结束异常!"
ExitApp
}
}
if colorTolerance != 15 {
Sleep 5000
}
;点击模拟结束
stdTargetX := 1923
stdTargetY := 1276
if UserCheckColor(stdCkptX2, stdCkptY2, desiredColor, scrRatio) {
stdTargetX := 1923
stdTargetY := 1552
}
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
;退回大厅
stdTargetX := 333
stdTargetY := 2041
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退回大厅失败!"
ExitApp
}
}
}
;7: 新人竞技场打第三位顺带收50%以上的菜
RookieArena(times) {
;进入方舟
stdTargetX := 2689
stdTargetY := 1463
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "进入方舟失败!"
ExitApp
}
}
stdCkptX := [1641]
stdCkptY := [324]
desiredColor := ["0x01D4F6"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入方舟失败!"
ExitApp
}
}
;收pjjc菜
if sleepTime < 1500
Sleep 1000
stdTargetX := 2278
stdTargetY := 1092
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
stdTargetX := 2129
stdTargetY := 1920
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
;进入竞技场
stdTargetX := 2208
stdTargetY := 1359
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [1641]
stdCkptY := [324]
desiredColor := ["0x01D4F6"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入竞技场失败!"
ExitApp
}
}
stdCkptX := [1683]
stdCkptY := [606]
desiredColor := ["0xF7FCFE"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入竞技场失败!"
ExitApp
}
}
;进入新人竞技场
stdTargetX := 1647
stdTargetY := 1164
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [784]
stdCkptY := [1201]
desiredColor := ["0xF8FCFE"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > 5 {
;退回大厅
stdTargetX := 333
stdTargetY := 2041
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退回大厅失败!"
ExitApp
}
}
return
}
if A_Index > waitTolerance {
MsgBox "进入新人竞技场失败!"
ExitApp
}
}
loop times {
;点击进入战斗
stdTargetX := 2371
stdTargetY := 1847
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2700]
stdCkptY := [1691]
desiredColor := ["0xF7FCFE"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "选择对手失败!"
ExitApp
}
}
;点击进入战斗
stdTargetX := 2123
stdTargetY := 1784
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2784]
stdCkptY := [1471]
desiredColor := ["0xF8FCFD"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "新人竞技场作战失败!"
ExitApp
}
}
}
;退回大厅
stdTargetX := 333
stdTargetY := 2041
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退回大厅失败!"
ExitApp
}
}
}
;8: 对前n位nikke进行好感度咨询(可以通过收藏把想要咨询的nikke排到前面)
NotAllCollection() {
stdCkptX := [2447]
stdCkptY := [1464]
desiredColor := ["0x444547"]
return UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio)
}
LoveTalking(times) {
;进入妮姬列表
stdTargetX := 1497
stdTargetY := 2004
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "进入妮姬列表失败!"
ExitApp
}
}
stdCkptX := [1466, 1814]
stdCkptY := [428, 433]
desiredColor := ["0x3B3C3E", "0x3B3C3E"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入妮姬列表失败!"
ExitApp
}
}
;进入咨询页面
stdTargetX := 3308
stdTargetY := 257
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [1650]
stdCkptY := [521]
desiredColor := ["0x14B0F5"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
;如果没次数了,直接退出
if UserCheckColor(stdCkptX, stdCkptY, ["0xE0E0E2"], scrRatio) {
stdTargetX := 333
stdTargetY := 2041
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退回大厅失败!"
ExitApp
}
}
return
}
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入咨询页面失败!"
ExitApp
}
}
;点进第一个妮姬
stdTargetX := 736
stdTargetY := 749
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [1504]
stdCkptY := [1747]
desiredColor := ["0xF99F22"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入妮姬咨询页面失败!"
ExitApp
}
}
loop times {
stdCkptX := [1994]
stdCkptY := [1634]
desiredColor := ["0xFA6E34"]
;如果能够快速咨询
if UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) && !(g_settings["LongTalk"] && NotAllCollection()) {
;点击快速咨询
stdTargetX := 2175
stdTargetY := 1634
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [1994]
stdCkptY := [1634]
desiredColor := ["0xFA6E34"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入妮姬咨询页面失败!"
ExitApp
}
}
;点击确定
stdTargetX := 2168
stdTargetY := 1346
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [1504]
stdCkptY := [1747]
desiredColor := ["0xF99F22"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "快速咨询失败!"
ExitApp
}
}
}
else {
;如果不能快速咨询
stdCkptX := [1982]
stdCkptY := [1819]
desiredColor := ["0x4A4A4C"]
if !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
stdTargetX := 2168
stdTargetY := 1777
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [1504]
stdCkptY := [1747]
desiredColor := ["0xF99F22"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "咨询失败!"
ExitApp
}
}
;点击确认
stdTargetX := 2192
stdTargetY := 1349
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2109]
stdCkptY := [1342]
desiredColor := ["0x00A0EB"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "咨询失败!"
ExitApp
}
}
stdCkptX := [1504]
stdCkptY := [1747]
desiredColor := ["0xF99F22"]
stdTargetX := 1903
stdTargetY := 1483
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
if Mod(A_Index, 2) == 0
UserClick(stdTargetX, stdTargetY, scrRatio)
else
UserClick(stdTargetX, 1625, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance * 2 {
MsgBox "咨询失败!"
ExitApp
}
}
}
}
if A_Index >= times
break
;翻页
stdTargetX := 3778
stdTargetY := 940
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [1982]
stdCkptY := [1819]
desiredColor := ["0x4A4A4C"]
numOfTalked := A_Index
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index + numOfTalked >= times + 2
break 2
if A_Index > waitTolerance {
MsgBox "咨询失败!"
ExitApp
}
}
}
;退回大厅
stdTargetX := 333
stdTargetY := 2041
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退回大厅失败!"
ExitApp
}
}
}
;9: 爬塔一次(做每日任务)
TribeTower() {
stdTargetX := 2689
stdTargetY := 1463
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "进入方舟失败!"
ExitApp
}
}
stdCkptX := [1641]
stdCkptY := [324]
desiredColor := ["0x01D4F6"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入方舟失败!"
ExitApp
}
}
;进入无限之塔
stdTargetX := 2278
stdTargetY := 776
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2405]
stdCkptY := [1014]
desiredColor := ["0xF8FBFE"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入无限之塔失败!"
ExitApp
}
}
stdTargetX := 1953
stdTargetY := 934
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2129, 2305]
stdCkptY := [1935, 1935]
desiredColor := ["0x2E77C2", "0x2E77C2"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "选择作战失败!"
ExitApp
}
}
stdTargetX := 2242
stdTargetY := 2001
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2129, 2305]
stdCkptY := [1935, 1935]
desiredColor := ["0x2E77C2", "0x2E77C2"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入作战失败!"
ExitApp
}
}
;按esc
stdCkptX := [2065]
stdCkptY := [1954]
desiredColor := ["0x238CFD"]
stdTargetX := 3780
stdTargetY := 75
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "按esc失败"
ExitApp
}
}
;按放弃战斗
stdCkptX := [2065]
stdCkptY := [1954]
desiredColor := ["0x238CFD"]
stdTargetX := 1678
stdTargetY := 1986
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "放弃战斗失败!"
ExitApp
}
}
;退回大厅
stdTargetX := 301
stdTargetY := 2030
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退回大厅失败!"
ExitApp
}
}
}
MissionCompleted() {
stdCkptX := [3451, 3756]
stdCkptY := [2077, 2075]
desiredColor := ["0x00A1FF", "0x00A1FF"]
if UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio)
return true
else
return false
}
MissionFailed() {
stdCkptX := [2306, 1920, 1590, 1560]
stdCkptY := [702, 1485, 1489, 1473]
desiredColor1 := ["0xB71013", "0xE9E9E7", "0x161515", "0xE9E9E7"]
desiredColor2 := ["0xAD080B", "0xE9E9E7", "0x161515", "0xE9E9E7"]
if UserCheckColor(stdCkptX, stdCkptY, desiredColor1, scrRatio) or UserCheckColor(stdCkptX, stdCkptY, desiredColor2,
scrRatio)
return true
else
return false
}
MissionEnded() {
stdCkptX := [3494, 3721, 3526, 3457, 3339, 3407]
stdCkptY := [2086, 2093, 2033, 2043, 2040, 2043]
desiredColor := ["0x6F6F6F", "0x6F6F6F", "0x030303", "0x434343", "0xE6E6E6", "0x000000"]
if UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio)
return true
else
return false
}
;输出失败的企业塔
failedTower := Array()
CompanyTowerInfo() {
info := ""
loop failedTower.Length {
info := info failedTower[A_Index] " "
}
if info != "" {
info := "`n" info "已经爬不动惹dororo..."
}
return info
}
;10: 企业塔
CompanyTower() {
stdTargetX := 2689
stdTargetY := 1463
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "进入方舟失败!"
ExitApp
}
}
stdCkptX := [1641]
stdCkptY := [324]
desiredColor := ["0x01D4F6"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入方舟失败!"
ExitApp
}
}
;进入无限之塔
stdTargetX := 2278
stdTargetY := 776
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [2405]
stdCkptY := [1014]
desiredColor := ["0xF8FBFE"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入无限之塔失败!"
ExitApp
}
}
Sleep 1500
;尝试进入每座企业塔
targX := [1501, 1779, 2061, 2332]
targY := [1497, 1497, 1497, 1497]
ckptX := [1383, 1665, 1935, 2222]
ckptY := [1925, 1925, 1925, 1925]
loop targX.Length {
i := A_Index
stdTargetX := targX[i]
stdTargetY := targY[i]
stdCkptX := [ckptX[i]]
stdCkptY := [ckptY[i]]
desiredColor := ["0x00AAF4"]
;如果未开放,则检查下一个企业
if !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio)
continue
;点击进入企业塔
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入企业塔失败!"
ExitApp
}
}
;直到成功进入企业塔
stdCkptX := [3738]
stdCkptY := [447]
desiredColor := ["0xF8FCFE"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入企业塔失败!"
ExitApp
}
}
;进入关卡页面
stdTargetX := 1918
stdTargetY := 919
stdCkptX := [992]
stdCkptY := [2011]
desiredColor := ["0x000000"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入企业塔关卡页面失败!"
ExitApp
}
}
;如果战斗次数已经用完
Sleep 1000
stdCkptX := [2038]
stdCkptY := [2057]
desiredColor := ["0x4D4E50"]
if UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
stdCkptX := [3738]
stdCkptY := [447]
desiredColor := ["0xF8FCFE"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
Send "{Escape}"
Sleep sleepTime
}
stdCkptX := [2405]
stdCkptY := [1014]
desiredColor := ["0xF8FBFE"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio)
Sleep sleepTime
Sleep 1500
continue
}
;点击进入战斗
stdTargetX := 2249
stdTargetY := 1997
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
;等待战斗结束
WaitForBattleEnd:
while !(MissionCompleted() || MissionFailed() || MissionEnded()) {
CheckAutoBattle()
Sleep sleepTime
if A_Index > waitTolerance * 20 {
MsgBox "企业塔自动战斗失败!"
ExitApp
}
}
;如果战斗失败或次数用完
if MissionFailed() || MissionEnded() {
if MissionFailed() {
towerName := ""
global failedTower
switch i {
case 1:
towerName := "极乐净土塔"
case 2:
towerName := "米西利斯塔"
case 3:
towerName := "泰特拉塔"
case 4:
towerName := "朝圣者塔"
default:
towerName := ""
}
failedTower.Push towerName
}
Send "{Escape}"
Sleep sleepTime
while MissionFailed() || MissionEnded() {
Send "{Escape}"
Sleep sleepTime
}
stdCkptX := [3738]
stdCkptY := [447]
desiredColor := ["0xF8FCFE"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(3666, 1390, scrRatio)
Sleep sleepTime
if UserCheckColor([2088], [1327], ["0x00A0EB"], scrRatio) {
UserClick(2202, 1342, scrRatio)
Sleep sleepTime
}
}
Sleep 5000
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(3666, 1390, scrRatio)
Sleep sleepTime
if UserCheckColor([2088], [1327], ["0x00A0EB"], scrRatio) {
UserClick(2202, 1342, scrRatio)
Sleep sleepTime
}
}
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
Send "{Escape}"
Sleep sleepTime
}
stdCkptX := [2405]
stdCkptY := [1014]
desiredColor := ["0xF8FBFE"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio)
Sleep sleepTime
Sleep 1500
continue
}
;如果战斗胜利
while MissionCompleted() {
Send "t"
Sleep sleepTime
}
goto WaitForBattleEnd
}
;退回大厅
stdTargetX := 301
stdTargetY := 2030
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退回大厅失败!"
ExitApp
}
}
}
;11: 进入异拦
Interception() {
global g_numeric_settings ;
stdTargetX := 2689
stdTargetY := 1463
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime // 2
if A_Index > waitTolerance {
MsgBox "进入方舟失败!"
ExitApp
}
}
stdCkptX := [1641]
stdCkptY := [324]
desiredColor := ["0x01D4F6"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入方舟失败!"
ExitApp
}
}
;进入拦截战
stdTargetX := 1781
stdTargetY := 1719
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [1641]
stdCkptY := [324]
desiredColor := ["0x01D4F6"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入拦截战失败!"
ExitApp
}
}
stdTargetX := 559
stdTargetY := 1571
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep 1000
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep 1000
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep 1000
;选择BOSS
switch g_numeric_settings["InterceptionBoss"] {
case 1:
stdTargetX := 1556
stdTargetY := 886
stdCkptX := [1907]
stdCkptY := [898]
desiredColor := ["0xFA910E"]
case 2:
stdTargetX := 2279
stdTargetY := 1296
stdCkptX := [1923]
stdCkptY := [908]
desiredColor := ["0xFB01F1"]
case 3:
stdCkptX := [1917]
stdCkptY := [910]
desiredColor := ["0x037EF9"]
case 4:
stdTargetX := 2281
stdTargetY := 899
stdCkptX := [1916]
stdCkptY := [907]
desiredColor := ["0x00F556"]
case 5:
stdTargetX := 1551
stdTargetY := 1299
stdCkptX := [1919]
stdCkptY := [890]
desiredColor := ["0xFD000F"]
default:
MsgBox "BOSS选择错误"
ExitApp
}
stdTargetX := 1556
stdTargetY := 886
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep 2000
if A_Index > waitTolerance {
MsgBox "选择BOSS失败"
ExitApp
}
}
;点击挑战按钮
if UserCheckColor([1735], [1730], ["0x28282A"], scrRatio) {
stdTargetX := 301
stdTargetY := 2030
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退回大厅失败!"
ExitApp
}
}
return
}
stdTargetX := 1924
stdTargetY := 1779
stdCkptX := [1390]
stdCkptY := [1799]
desiredColor := ["0x01AEF3"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "点击挑战失败!"
ExitApp
}
}
;选择编队
switch g_numeric_settings["InterceptionBoss"] {
case 1:
stdTargetX := 1882
stdTargetY := 1460
stdCkptX := [1843]
stdCkptY := [1428]
case 2:
stdTargetX := 2020
stdTargetY := 1460
stdCkptX := [1981]
stdCkptY := [1428]
case 3:
stdTargetX := 2151
stdTargetY := 1460
stdCkptX := [2113]
stdCkptY := [1428]
case 4:
stdTargetX := 2282
stdTargetY := 1460
stdCkptX := [2248]
stdCkptY := [1428]
case 5:
stdTargetX := 2421
stdTargetY := 1460
stdCkptX := [2380]
stdCkptY := [1428]
default:
MsgBox "BOSS选择错误"
ExitApp
}
desiredColor := ["0x02ADF5"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep 1500
if A_Index > waitTolerance {
MsgBox "选择编队失败!"
ExitApp
}
}
;如果不能快速战斗,就进入战斗
stdCkptX := [1964]
stdCkptY := [1800]
desiredColor := ["0xF96B2F"]
if !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
stdTargetX := 2219
stdTargetY := 1992
stdCkptX := [1962]
stdCkptY := [1932]
desiredColor := ["0xD52013"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入战斗失败!"
ExitApp
}
}
;退出结算页面
stdTargetX := 904
stdTargetY := 1805
stdCkptX := [3731, 3713, 3638]
stdCkptY := [2040, 2034, 2091]
desiredColor := ["0xE6E6E6", "0xE6E6E6", "0x000000"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
CheckAutoBattle()
Sleep sleepTime
if A_Index > waitTolerance * 20 {
MsgBox "自动战斗失败!"
ExitApp
}
}
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退出结算页面失败!"
ExitApp
}
}
}
;检查是否退出
stdCkptX := [1390]
stdCkptY := [1799]
desiredColor := ["0x01AEF3"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退出结算页面失败!"
ExitApp
}
}
;快速战斗
stdTargetX := 2229
stdTargetY := 1842
stdCkptX := [1964]
stdCkptY := [1800]
desiredColor := ["0xF96B2F"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "快速战斗失败!"
ExitApp
}
}
;退出结算页面
stdTargetX := 904
stdTargetY := 1805
stdCkptX := [2232, 2391, 2464]
stdCkptY := [2100, 2099, 2051]
desiredColor := ["0x000000", "0x000000", "0x000000"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "快速战斗结算失败!"
ExitApp
}
}
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退出结算页面失败!"
ExitApp
}
}
;检查是否退出
stdCkptX := [1390]
stdCkptY := [1799]
desiredColor := ["0x01AEF3"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退出结算页面失败!"
ExitApp
}
}
Sleep 1000
stdTargetX := 2229
stdTargetY := 1842
stdCkptX := [1964]
stdCkptY := [1800]
desiredColor := ["0xF96B2F"]
}
;退回大厅
stdTargetX := 301
stdTargetY := 2030
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退回大厅失败!"
ExitApp
}
}
}
;11: 邮箱收取
Mail() {
stdTargetX := 3667
stdTargetY := 81
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio) ;检测大厅点邮箱
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入邮箱失败!"
ExitApp
}
}
stdCkptX := [2085]
stdCkptY := [1809]
desiredColor := ["0xCAC7C4"] ;检测灰色的领取按钮
stdTargetX := 2085
stdTargetY := 1809
;Sleep sleepTime ;加载容错
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio) ;不是灰色就一直点全部领取
Sleep sleepTime
}
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
stdTargetX := 2394
stdTargetY := 291
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio) ;确认领取+返回直到回到大厅
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退出邮箱失败!"
ExitApp
}
}
}
;12: 任务收取
Mission() {
stdTargetX := 3341
stdTargetY := 206
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio) ;检测大厅点任务
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入任务失败!"
ExitApp
}
}
stdTargetX := 2286
stdTargetY := 1935
x0 := 1512 ;用于遍历任务
y0 := 395
while UserCheckColor([1365, 2087], [1872, 1997], ["0xF5F5F5", "0xF5F5F5"], scrRatio) { ;检测是否在任务界面
Sleep sleepTime
UserClick(x0, y0, scrRatio) ;点任务标题
Sleep sleepTime
if !UserCheckColor([1365, 2087], [1872, 1997], ["0xF5F5F5", "0xF5F5F5"], scrRatio) { ;退出
break
}
stdCkptX := [2276]
stdCkptY := [1899]
desiredColor := ["0x7B7C7B"]
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) { ;如果不是灰色就点
Sleep sleepTime
UserClick(stdTargetX, stdTargetY, scrRatio) ;点领取
}
x0 := x0 + 280 ;向右切换标题
}
}
;13: 通行证收取 兼容双通行证 兼容特殊活动
Pass() {
OnePass()
stdCkptX := [3395]
stdCkptY := [368]
stdCkptY1 := [468] ;活动可能偏移
desiredColor := ["0xFBFFFF"] ;白色的轮换按钮
stdTargetX := 3395
stdTargetY := 368
stdTargetY1 := 468
if UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) { ;如果轮换按钮存在
global PassRound
PassRound := 0
while (PassRound < 2) {
userClick(stdTargetX, stdTargetY, scrRatio) ;转一下
Sleep sleepTime
PassRound := PassRound + 1
stdCkptX := [3437]
stdCkptY := [338]
desiredColor := ["0xFE1809"] ;红点
if UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) { ;如果转出红点
Sleep sleepTime
userClick(stdTargetX, stdTargetY, scrRatio) ;再转一下
Sleep sleepTime
OnePass()
break
}
}
}
if UserCheckColor(stdCkptX, stdCkptY1, desiredColor, scrRatio) { ;检测是否偏移
global PassRound
PassRound := 0
while (PassRound < 2) {
userClick(stdTargetX, stdTargetY1, scrRatio) ;转一下
Sleep sleepTime
PassRound := PassRound + 1
stdCkptX := [3437]
stdCkptY := [438]
desiredColor := ["0xFE1809"] ;红点
if UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) { ;如果转出红点
Sleep sleepTime
userClick(stdTargetX, stdTargetY1, scrRatio) ;再转一下
Sleep sleepTime
OnePass()
break
}
}
}
}
OnePass() { ;执行一次通行证
stdTargetX := 3633
stdTargetY := 405
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio) ;检测大厅点通行证
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "进入通行证失败!"
ExitApp
}
}
stdCkptX := [1733]
stdCkptY := [699]
desiredColor := ["0xF1F5F6"]
stdTargetX := 2130
stdTargetY := 699
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) { ;左不是白则点右
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
}
stdCkptX := [1824]
stdCkptY := [1992]
desiredColor := ["0x7C7C7C"] ;检测灰色的全部领取
stdTargetX := 1824
stdTargetY := 1992
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio) ;不是灰色就一直点领取
Sleep sleepTime
}
stdCkptX := [2130]
stdCkptY := [699]
desiredColor := ["0xF1F5F6"]
stdTargetX := 1733
stdTargetY := 699
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) { ;右不是白则点左
UserClick(stdTargetX, stdTargetY, scrRatio)
Sleep sleepTime
}
stdCkptX := [1824]
stdCkptY := [1992]
desiredColor := ["0x7C7C7C"] ;检测灰色的全部领取
stdTargetX := 1824
stdTargetY := 1992
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio) ;不是灰色就一直点领取
Sleep sleepTime
}
stdCkptX := [64]
stdCkptY := [470]
desiredColor := ["0xFAA72C"]
stdTargetX := 2418
stdTargetY := 185
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
UserClick(stdTargetX, stdTargetY, scrRatio) ;确认领取+返回直到回到大厅
Sleep sleepTime
if A_Index > waitTolerance {
MsgBox "退出通行证失败!"
ExitApp
}
}
stdCkptX := [3395]
stdCkptY := [368]
desiredColor := ["0xFBFFFF"] ;检测是否多通行证
stdTargetX := 3395
stdTargetY := 368
if UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
}
}
; 通用函数,用于切换 g_settings Map 中的设置值
ToggleSetting(settingKey, guiCtrl, *) {
global g_settings
; 切换值 (0 变 1, 1 变 0)
g_settings[settingKey] := 1 - g_settings[settingKey]
; 可选: 如果需要,可以在这里添加日志记录
; ToolTip("切换 " settingKey " 为 " g_settings[settingKey])
}
ChangeOnNumOfBook(GUICtrl, *) {
global g_numeric_settings
g_numeric_settings["NumOfBook"] := GUICtrl.Value - 1
}
ChangeOnInterceptionBoss(GUICtrl, *) {
global g_numeric_settings
g_numeric_settings["InterceptionBoss"] := GUICtrl.Value
}
ChangeOnSleepTime(GUICtrl, *) {
global sleepTime
switch GUICtrl.Value {
case 1: sleepTime := 750
case 2: sleepTime := 1000
case 3: sleepTime := 1250
case 4: sleepTime := 1500
case 5: sleepTime := 1750
case 6: sleepTime := 2000
default: sleepTime := 1500
}
}
ChangeOnColorTolerance(GUICtrl, *) {
global colorTolerance
switch GUICtrl.Value {
case 1: colorTolerance := 15
case 2: colorTolerance := 35
default: colorTolerance := 15
}
}
ClickOnHelp(*) {
msgbox "
(
#############################################
使
Doro
DoroCtrl + 1
DoroCtrl + 1
DoroCtrl + 1
#############################################
- -- + 16:9 16:9
- --
- --
-
- ****DoroHelper
- windows HDR
#############################################
-NIKKEACENIKKESHIFT UP logoDORO!Doro
-DORO!
-使Doro
#############################################
:
-
-80%
-
)"
}
ClickOnDoro(*) {
WriteSettings()
global g_settings, g_numeric_settings ;
title := "勝利女神:妮姬"
try {
WinGetClientPos , , &userScreenW, &userScreenH, "勝利女神:妮姬"
} catch as err {
title := "ahk_exe nikke.exe"
}
numNikke := WinGetCount(title)
if numNikke = 0 {
MsgBox "未检测到NIKKE主程序"
ExitApp
}
loop numNikke {
nikkeID := WinGetIDLast(title)
WinGetClientPos , , &userScreenW, &userScreenH, nikkeID
global scrRatio
scrRatio := userScreenW / stdScreenW
;nikkeID := WinWait(title)
WinActivate nikkeID
Login() ;登陆到主界面
if g_settings["OutpostDefence"] ; 使用键名检查 Map
OutpostDefence()
if g_settings["CashShop"]
CashShop()
if g_settings["FreeShop"]
FreeShop(g_numeric_settings["NumOfBook"])
if g_settings["OutpostDefence"] ; 任务需要执行两次
OutpostDefence()
if g_settings["Expedition"]
Expedition()
if g_settings["FriendPoint"]
FriendPoint()
if g_settings["SimulationRoom"]
SimulationRoom()
if g_settings["RookieArena"]
RookieArena(g_numeric_settings["NumOfBattle"])
if g_settings["LoveTalking"]
LoveTalking(g_numeric_settings["NumOfLoveTalking"])
if g_settings["CompanyTower"] {
if g_settings["TribeTower"]
TribeTower() ; 执行每日任务版 (进塔就退)
else
CompanyTower() ; 执行完整爬塔版
} else if g_settings["TribeTower"] {
TribeTower() ; 即使 CompanyTower 未勾选,也要执行每日任务版
}
if g_settings["Interception"]
Interception()
if g_settings["Mail"]
Mail()
if g_settings["Mission"]
Mission()
if g_settings["Pass"]
Pass()
}
if isBoughtTrash == 0
MsgBox "协同作战商店似乎已经刷新了,快去看看吧"
MsgBox "Doro完成任务" CompanyTowerInfo()
if g_settings["SelfClosing"]
ExitApp
Pause
}
SleepTimeToLabel(sleepTime) {
return String(sleepTime / 250 - 2)
}
ColorToleranceToLabel(colorTolerance) {
switch colorTolerance {
case 15: return "1"
case 35: return "2"
default:
return "1"
}
}
IsCheckedToString(foo) {
if foo
return "Checked"
else
return ""
}
NumOfBookToLabel() {
global g_numeric_settings
return String(g_numeric_settings["NumOfBook"] + 1)
}
InterceptionBossToLabel() {
global g_numeric_settings
return String(g_numeric_settings["InterceptionBoss"])
}
WriteSettings(*) {
global g_settings, g_numeric_settings, sleepTime, colorTolerance
; 从 g_settings Map 写入开关设置
for key, value in g_settings {
IniWrite(value, "settings.ini", "Toggles", key)
}
for key, value in g_numeric_settings {
IniWrite(value, "settings.ini", "NumericSettings", key)
}
; 写入其他独立设置
IniWrite(sleepTime, "settings.ini", "Other", "sleepTime")
IniWrite(colorTolerance, "settings.ini", "Other", "colorTolerance")
}
LoadSettings() {
global g_settings, g_numeric_settings, sleepTime, colorTolerance
default_settings := g_settings.Clone()
; 从 Map 加载开关设置
for key, defaultValue in default_settings {
readValue := IniRead("settings.ini", "Toggles", key, defaultValue)
g_settings[key] := readValue
}
default_numeric_settings := g_numeric_settings.Clone() ; 保留一份默认数值设置
for key, defaultValue in default_numeric_settings {
readValue := IniRead("settings.ini", "NumericSettings", key, defaultValue)
; 确保读取的值是数字,如果不是则使用默认值
if IsNumber(readValue) {
g_numeric_settings[key] := Integer(readValue) ; 转换为整数
} else {
g_numeric_settings[key] := defaultValue
}
}
; 加载其他独立设置 (带默认值)
sleepTime := IniRead("settings.ini", "Other", "sleepTime", 1500)
colorTolerance := IniRead("settings.ini", "Other", "colorTolerance", 15)
}
SaveSettings(*) {
WriteSettings()
MsgBox "设置已保存!"
}
; 全局设置 Map 对象
global g_settings := Map(
"OutpostDefence", 1, ; 前哨基地防御
"CashShop", 1, ; 付费商店
"FreeShop", 1, ; 免费商店
"Expedition", 1, ; 派遣 (之前是 isCheckedExpedtion)
"FriendPoint", 1, ; 好友点数
"Mail", 1, ; 邮箱
"Mission", 1, ; 任务
"Pass", 1, ; 通行证
"SimulationRoom", 1, ; 模拟室
"RookieArena", 1, ; 新人竞技场
"LoveTalking", 1, ; 咨询
"CompanyWeapon", 0, ; 企业武器熔炉 (商店)
"Interception", 0, ; 拦截战
"CompanyTower", 1, ; 企业塔
"TribeTower", 0, ; 每日爬塔任务
"LongTalk", 1, ; 详细咨询 (若图鉴未满)
"AutoCheckUpdate", 0, ; 自动检查更新
"SelfClosing", 0, ; 完成后自动关闭程序
"BookFire", 0, ; 手册:燃烧
"BookWater", 0, ; 手册:水冷
"BookWind", 0, ; 手册:风压
"BookElec", 0, ; 手册:电击
"BookIron", 0, ; 手册:铁甲
;"CheckBox",0 ; 简介个性化礼包
)
; 其他非简单开关的设置 Map 对象
global g_numeric_settings := Map(
"NumOfBook", 3, ; 购买手册数量
"NumOfBattle", 5, ; 新人竞技场次数
"NumOfLoveTalking", 10, ; 咨询次数
"InterceptionBoss", 1 ; 拦截战BOSS选择
)
global isBoughtTrash := 1 ; 检测废铁商店
;检测管理员身份
if !A_IsAdmin {
MsgBox "请以管理员身份运行Doro"
ExitApp
}
;读取设置
SetWorkingDir A_ScriptDir
try {
LoadSettings()
}
catch as err {
WriteSettings()
}
if g_settings["AutoCheckUpdate"] {
CheckForUpdateHandler(false) ; 调用核心函数,标记为非手动检查
}
/**
* 添加一个与 g_settings Map 关联的复选框到指定的 GUI 对象.
* @param guiObj Gui - 要添加控件的 GUI 对象.
* @param settingKey String - 在 g_settings Map 中对应的键名.
* @param displayText String - 复选框旁边显示的文本标签.
* @param options String - (可选) AutoHotkey GUI 布局选项字符串 (例如 "R1.2 xs+15").
*/
AddCheckboxSetting(guiObj, settingKey, displayText, options := "") {
global g_settings, ToggleSetting ; 确保能访问全局 Map 和处理函数
; 检查 settingKey 是否存在于 g_settings 中
if !g_settings.Has(settingKey) {
MsgBox("错误: Setting key '" settingKey "' 在 g_settings 中未定义!", "添加控件错误", "IconX")
return ; 或者抛出错误
}
; 构建选项字符串,确保 Checked/空字符串 在选项之后,文本之前
initialState := IsCheckedToString(g_settings[settingKey])
fullOptions := options (options ? " " : "") initialState ; 如果有 options加空格分隔
; 添加复选框控件,并将 displayText 作为第三个参数
cbCtrl := guiObj.Add("Checkbox", fullOptions, displayText)
; 绑定 Click 事件,使用胖箭头函数捕获当前的 settingKey
cbCtrl.OnEvent("Click", (guiCtrl, eventInfo) => ToggleSetting(settingKey, guiCtrl, eventInfo))
; 返回创建的控件对象 (可选,如果需要进一步操作)
return cbCtrl
}
;创建gui
doroGui := Gui(, "Doro小帮手" currentVersion)
doroGui.Opt("+Resize")
doroGui.MarginY := Round(doroGui.MarginY * 0.9)
doroGui.SetFont("cred s12")
doroGui.Add("Text", "R1", "紧急停止按ctrl + 1 暂停按ctrl + 2")
doroGui.Add("Link", " R1", '<a href="https://github.com/kyokakawaii/DoroHelper">项目地址</a>')
doroGui.SetFont()
doroGui.Add("Button", "R1 x+10", "帮助").OnEvent("Click", ClickOnHelp)
doroGui.Add("Button", "R1 x+10", "检查更新").OnEvent("Click", ClickOnCheckForUpdate)
Tab := doroGui.Add("Tab3", "xm") ;由于autohotkey有bug只能这样写
Tab.Add(["设置", "收获", "商店", "日常", "默认"])
Tab.UseTab("设置")
AddCheckboxSetting(doroGui, "AutoCheckUpdate", "自动检查更新(确保能连上github)", "R1.2")
AddCheckboxSetting(doroGui, "SelfClosing", "任务完成后自动关闭程序", "R1.2")
doroGui.Add("Text", , "点击间隔(单位毫秒),谨慎更改")
doroGui.Add("DropDownList", "Choose" SleepTimeToLabel(sleepTime), [750, 1000, 1250, 1500, 1750, 2000]).OnEvent("Change",
ChangeOnSleepTime)
doroGui.Add("Text", , "色差容忍度,能跑就别改")
doroGui.Add("DropDownList", "Choose" ColorToleranceToLabel(colorTolerance), ["严格", "宽松"]).OnEvent("Change",
ChangeOnColorTolerance)
doroGui.Add("Button", "R1", "保存当前设置").OnEvent("Click", SaveSettings)
Tab.UseTab("收获")
AddCheckboxSetting(doroGui, "OutpostDefence", "领取前哨基地防御奖励+1次免费歼灭", "R1.2")
AddCheckboxSetting(doroGui, "CashShop", "领取付费商店免费钻(进不了商店的别选)", "R1.2")
AddCheckboxSetting(doroGui, "Expedition", "派遣委托", "R1.2")
AddCheckboxSetting(doroGui, "FriendPoint", "好友点数收取", "R1.2")
AddCheckboxSetting(doroGui, "Mail", "邮箱收取", "R1.2")
AddCheckboxSetting(doroGui, "Mission", "任务收取", "R1.2")
AddCheckboxSetting(doroGui, "Pass", "通行证收取", "R1.2")
Tab.UseTab("商店")
doroGui.Add("Text", "R1.2 Section", "普通商店")
AddCheckboxSetting(doroGui, "FreeShop", "每日白嫖2次", "R1.2 xs+15")
doroGui.Add("Text", " R1.2 xs+15", "❌购买简介个性化礼包")
doroGui.Add("Text", "R1.2 xs", "竞技场商店")
doroGui.Add("Text", "R1.2 xs+15", "购买手册:")
AddCheckboxSetting(doroGui, "BookFire", "燃烧", "R1.2 xs+15")
AddCheckboxSetting(doroGui, "BookWater", "水冷", "R1.2 X+1")
AddCheckboxSetting(doroGui, "BookWind", "风压", "R1.2 X+1")
AddCheckboxSetting(doroGui, "BookElec", "电击", "R1.2 X+1")
AddCheckboxSetting(doroGui, "BookIron", "铁甲", "R1.2 X+1")
AddCheckboxSetting(doroGui, "CompanyWeapon", "购买公司武器熔炉", "R1.2 xs+15")
doroGui.Add("Text", " R1.2 xs+15", "❌购买简介个性化礼包")
doroGui.Add("Text", "R1.2 xs Section", "废铁商店")
doroGui.Add("Text", " R1.2 xs+15", "❌购买珠宝")
doroGui.Add("Text", " R1.2 xs+15", "购买好感券:")
doroGui.Add("Text", " R1.2 xs+15", "❌通用")
doroGui.Add("Text", " R1.2 x+1", "❌朝圣者")
doroGui.Add("Text", " R1.2 x+1", "❌反常")
doroGui.Add("Text", " R1.2 xs+15", "❌极乐净土")
doroGui.Add("Text", " R1.2 x+1", "❌米西利斯")
doroGui.Add("Text", " R1.2 x+1", "❌泰特拉")
doroGui.Add("Text", " R1.2 xs+15", "购买资源")
doroGui.Add("Text", " R1.2 xs+15", "❌信用点+盒")
doroGui.Add("Text", " R1.2 x+1", "❌战斗数据辑盒")
doroGui.Add("Text", " R1.2 x+1", "❌芯尘盒")
Tab.UseTab("日常")
AddCheckboxSetting(doroGui, "SimulationRoom", "模拟室5C(普通关卡需要快速战斗)", "R1.2")
AddCheckboxSetting(doroGui, "RookieArena", "新人竞技场(请点开快速战斗)", "R1.2")
AddCheckboxSetting(doroGui, "LoveTalking", "咨询妮姬(可以通过收藏改变妮姬排序)", "R1.2 Section") ; 注意 Section 选项用法(保存此控件位置并定义一个新控件段)
AddCheckboxSetting(doroGui, "CompanyTower", "爬企业塔", "R1.2 xs Section")
AddCheckboxSetting(doroGui, "TribeTower", "只完成每日任务,在进入后退出", "R1.2 XP+15 Y+M")
AddCheckboxSetting(doroGui, "Interception", "使用对应编队进行异常拦截自动战斗", "R1.2 xs")
doroGui.Add("DropDownList", "Choose" InterceptionBossToLabel(), ["克拉肯(石)编队1", "过激派(头)编队2", "镜像容器(手)编队3",
"茵迪维利亚(衣)编队4", "死神(脚)编队5"]).OnEvent("Change", ChangeOnInterceptionBoss)
Tab.UseTab("默认")
doroGui.Add("Text", , "购买几本代码手册?")
doroGui.Add("DropDownList", "Choose" NumOfBookToLabel(), [0, 1, 2, 3]).OnEvent("Change", ChangeOnNumOfBook)
Tab.UseTab()
doroGui.Add("Button", "Default w80 xm+100", "DORO!").OnEvent("Click", ClickOnDoro)
doroGui.Show()
^1:: {
ExitApp
}
^2:: {
Pause -1
}