commit
7beb86d9f1
293
DoroHelper.ahk
293
DoroHelper.ahk
|
@ -10,7 +10,7 @@ stdScreenW := 3840
|
||||||
stdScreenH := 2160
|
stdScreenH := 2160
|
||||||
waitTolerance := 50
|
waitTolerance := 50
|
||||||
colorTolerance := 15
|
colorTolerance := 15
|
||||||
currentVersion := "v0.1.22"
|
currentVersion := "v0.1.23"
|
||||||
usr := "kyokakawaii"
|
usr := "kyokakawaii"
|
||||||
repo := "DoroHelper"
|
repo := "DoroHelper"
|
||||||
;颜色判断
|
;颜色判断
|
||||||
|
@ -33,8 +33,7 @@ CheckForUpdateHandler(isManualCheck) {
|
||||||
try {
|
try {
|
||||||
latestObj := Github.latest(usr, repo)
|
latestObj := Github.latest(usr, repo)
|
||||||
if (currentVersion != latestObj.version) {
|
if (currentVersion != latestObj.version) {
|
||||||
; 发现新版本
|
userResponse := MsgBox( ; 发现新版本
|
||||||
userResponse := MsgBox(
|
|
||||||
"DoroHelper存在更新版本:`n"
|
"DoroHelper存在更新版本:`n"
|
||||||
"`nVersion: " latestObj.version
|
"`nVersion: " latestObj.version
|
||||||
"`nNotes:`n"
|
"`nNotes:`n"
|
||||||
|
@ -580,8 +579,7 @@ FreeShop(numOfBook) {
|
||||||
firstClaimCkptY := [1305]
|
firstClaimCkptY := [1305]
|
||||||
firstClaimUsedColor := ["0x127CD7"] ; 领取过的按钮颜色
|
firstClaimUsedColor := ["0x127CD7"] ; 领取过的按钮颜色
|
||||||
if !UserCheckColor(firstClaimCkptX, firstClaimCkptY, firstClaimUsedColor, scrRatio) {
|
if !UserCheckColor(firstClaimCkptX, firstClaimCkptY, firstClaimUsedColor, scrRatio) {
|
||||||
; --- 执行第一次免费领取 ---
|
ShopFreeClaim() ; 执行第一次免费领取
|
||||||
ShopFreeClaim() ; 调用辅助函数处理领取流程
|
|
||||||
; 检查是否还有第二次免费次数 (刷新按钮是否有红点)
|
; 检查是否还有第二次免费次数 (刷新按钮是否有红点)
|
||||||
refreshCkptX := [697]
|
refreshCkptX := [697]
|
||||||
refreshCkptY := [949]
|
refreshCkptY := [949]
|
||||||
|
@ -626,7 +624,7 @@ FreeShop(numOfBook) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Sleep 1000 ; 刷新后额外等待一下界面加载
|
Sleep 1000 ; 刷新后额外等待一下界面加载
|
||||||
ShopFreeClaim() ; --- 执行第二次免费领取 ---
|
ShopFreeClaim() ; 执行第二次免费领取
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
;废铁商店检查是否已经购买
|
;废铁商店检查是否已经购买
|
||||||
|
@ -1073,7 +1071,6 @@ SimulationRoom() {
|
||||||
ExitApp
|
ExitApp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
;MsgBox "ok"
|
|
||||||
;开始模拟
|
;开始模拟
|
||||||
stdTargetX := 1917
|
stdTargetX := 1917
|
||||||
stdTargetY := 1274
|
stdTargetY := 1274
|
||||||
|
@ -1212,64 +1209,6 @@ SimulationRoom() {
|
||||||
Sleep sleepTime // 2
|
Sleep sleepTime // 2
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
UserClick(stdTargetX, stdTargetY, scrRatio)
|
||||||
Sleep sleepTime
|
Sleep sleepTime
|
||||||
/*
|
|
||||||
stdTargetX := 1902
|
|
||||||
stdTargetY := 1461
|
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
|
||||||
Sleep sleepTime // 2
|
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
|
||||||
Sleep sleepTime // 2
|
|
||||||
*/
|
|
||||||
;点击不选择和确定
|
|
||||||
/*
|
|
||||||
tX := 2104
|
|
||||||
tY := 1656
|
|
||||||
desiredColor := ["0x089FE4"]
|
|
||||||
|
|
||||||
while !UserCheckColor([tX], [tY], desiredColor, scrRatio) {
|
|
||||||
tY := tY + 65
|
|
||||||
if tY > 2160 {
|
|
||||||
MsgBox "模拟室结束异常!"
|
|
||||||
ExitApp
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
;MsgBox "点不选择"
|
|
||||||
stdTargetX := 2185
|
|
||||||
stdTargetY := tY - 200
|
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
|
||||||
Sleep sleepTime // 2
|
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
|
||||||
Sleep sleepTime // 2
|
|
||||||
|
|
||||||
;MsgBox "点击确定"
|
|
||||||
stdTargetX := 2185
|
|
||||||
stdTargetY := tY
|
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
|
||||||
Sleep sleepTime
|
|
||||||
|
|
||||||
stdCkptX := [2104]
|
|
||||||
stdCkptY := [tY]
|
|
||||||
desiredColor := ["0x089FE4"]
|
|
||||||
|
|
||||||
while UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
|
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
|
||||||
Sleep sleepTime
|
|
||||||
if A_Index > waitTolerance {
|
|
||||||
MsgBox "模拟室结束异常!"
|
|
||||||
ExitApp
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
stdTargetX := 2191
|
|
||||||
stdTargetY := 1349
|
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
|
||||||
Sleep sleepTime // 2
|
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
|
||||||
Sleep sleepTime // 2
|
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
|
||||||
Sleep sleepTime
|
|
||||||
*/
|
|
||||||
;退回大厅
|
;退回大厅
|
||||||
stdTargetX := 333
|
stdTargetX := 333
|
||||||
stdTargetY := 2041
|
stdTargetY := 2041
|
||||||
|
@ -1287,8 +1226,8 @@ SimulationRoom() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
;7: 新人竞技场打第三位,顺带收50%以上的菜
|
;7: 新人竞技场收菜
|
||||||
RookieArena(times) {
|
Arena() {
|
||||||
;进入方舟
|
;进入方舟
|
||||||
stdTargetX := 2689
|
stdTargetX := 2689
|
||||||
stdTargetY := 1463
|
stdTargetY := 1463
|
||||||
|
@ -1332,6 +1271,9 @@ RookieArena(times) {
|
||||||
Sleep sleepTime // 2
|
Sleep sleepTime // 2
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
UserClick(stdTargetX, stdTargetY, scrRatio)
|
||||||
Sleep sleepTime // 2
|
Sleep sleepTime // 2
|
||||||
|
}
|
||||||
|
;新人竞技场
|
||||||
|
RookieArena(times) {
|
||||||
;进入竞技场
|
;进入竞技场
|
||||||
stdTargetX := 2208
|
stdTargetX := 2208
|
||||||
stdTargetY := 1359
|
stdTargetY := 1359
|
||||||
|
@ -1444,6 +1386,9 @@ RookieArena(times) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
;特殊竞技场
|
||||||
|
SpecialArena(times) {
|
||||||
|
}
|
||||||
;8: 对前n位nikke进行好感度咨询(可以通过收藏把想要咨询的nikke排到前面)
|
;8: 对前n位nikke进行好感度咨询(可以通过收藏把想要咨询的nikke排到前面)
|
||||||
NotAllCollection() {
|
NotAllCollection() {
|
||||||
stdCkptX := [2447]
|
stdCkptX := [2447]
|
||||||
|
@ -1663,7 +1608,7 @@ LoveTalking(times) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
;9: 爬塔一次(做每日任务)
|
;9: 爬塔一次(做每日任务)
|
||||||
TribeTower() {
|
FailTower() {
|
||||||
stdTargetX := 2689
|
stdTargetX := 2689
|
||||||
stdTargetY := 1463
|
stdTargetY := 1463
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
UserClick(stdTargetX, stdTargetY, scrRatio)
|
||||||
|
@ -2079,24 +2024,6 @@ Interception() {
|
||||||
ExitApp
|
ExitApp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
;不勾选自动拦截就直接退出
|
|
||||||
if !isCheckedInterception
|
|
||||||
return
|
|
||||||
*/
|
|
||||||
/*
|
|
||||||
stdCkptX := [1917]
|
|
||||||
stdCkptY := [910]
|
|
||||||
desiredColor := ["0x037EF9"]
|
|
||||||
|
|
||||||
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
|
|
||||||
Sleep sleepTime
|
|
||||||
if A_Index > waitTolerance {
|
|
||||||
MsgBox "进入拦截战失败!"
|
|
||||||
ExitApp
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
stdTargetX := 559
|
stdTargetX := 559
|
||||||
stdTargetY := 1571
|
stdTargetY := 1571
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
UserClick(stdTargetX, stdTargetY, scrRatio)
|
||||||
|
@ -2311,30 +2238,6 @@ Interception() {
|
||||||
ExitApp
|
ExitApp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
stdTargetX := 904
|
|
||||||
stdTargetY := 1805
|
|
||||||
stdCkptX := [1893, 1913, 1933]
|
|
||||||
stdCkptY := [1951, 1948, 1956]
|
|
||||||
desiredColor := ["0xFFFFFF", "0xFFFFFF", "0xFFFFFF"]
|
|
||||||
|
|
||||||
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]
|
stdCkptX := [1390]
|
||||||
stdCkptY := [1799]
|
stdCkptY := [1799]
|
||||||
|
@ -2369,26 +2272,6 @@ Interception() {
|
||||||
ExitApp
|
ExitApp
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
;进入特殊拦截战
|
|
||||||
/*
|
|
||||||
stdTargetX := 2059
|
|
||||||
stdTargetY := 1689
|
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
|
||||||
Sleep sleepTime
|
|
||||||
|
|
||||||
stdCkptX := [1425]
|
|
||||||
stdCkptY := [1852]
|
|
||||||
desiredColor := ["0x02AEF5"]
|
|
||||||
|
|
||||||
while !UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
|
|
||||||
UserClick(stdTargetX, stdTargetY, scrRatio)
|
|
||||||
Sleep sleepTime
|
|
||||||
if A_Index > waitTolerance {
|
|
||||||
MsgBox "进入特殊拦截战失败!"
|
|
||||||
ExitApp
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
;11: 邮箱收取
|
;11: 邮箱收取
|
||||||
Mail() {
|
Mail() {
|
||||||
|
@ -2591,6 +2474,9 @@ OnePass() { ;执行一次通行证
|
||||||
if UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
|
if UserCheckColor(stdCkptX, stdCkptY, desiredColor, scrRatio) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
;通用塔
|
||||||
|
UniversalTower() {
|
||||||
|
}
|
||||||
; 通用函数,用于切换 g_settings Map 中的设置值
|
; 通用函数,用于切换 g_settings Map 中的设置值
|
||||||
ToggleSetting(settingKey, guiCtrl, *) {
|
ToggleSetting(settingKey, guiCtrl, *) {
|
||||||
global g_settings
|
global g_settings
|
||||||
|
@ -2601,19 +2487,11 @@ ToggleSetting(settingKey, guiCtrl, *) {
|
||||||
}
|
}
|
||||||
ChangeOnNumOfBook(GUICtrl, *) {
|
ChangeOnNumOfBook(GUICtrl, *) {
|
||||||
global g_numeric_settings
|
global g_numeric_settings
|
||||||
g_numeric_settings["NumOfBook"] := GUICtrl.Value - 1 ; 转换为 0-3 存储
|
g_numeric_settings["NumOfBook"] := GUICtrl.Value - 1
|
||||||
}
|
|
||||||
ChangeOnNumOfBattle(GUICtrl, *) {
|
|
||||||
global g_numeric_settings
|
|
||||||
g_numeric_settings["NumOfBattle"] := GUICtrl.Value + 1 ; 转换为 2-5 存储
|
|
||||||
}
|
|
||||||
ChangeOnNumOfLoveTalking(GUICtrl, *) {
|
|
||||||
global g_numeric_settings
|
|
||||||
g_numeric_settings["NumOfLoveTalking"] := GUICtrl.Value ; 直接存储 1-10
|
|
||||||
}
|
}
|
||||||
ChangeOnInterceptionBoss(GUICtrl, *) {
|
ChangeOnInterceptionBoss(GUICtrl, *) {
|
||||||
global g_numeric_settings
|
global g_numeric_settings
|
||||||
g_numeric_settings["InterceptionBoss"] := GUICtrl.Value ; 直接存储 1-5
|
g_numeric_settings["InterceptionBoss"] := GUICtrl.Value
|
||||||
}
|
}
|
||||||
ChangeOnSleepTime(GUICtrl, *) {
|
ChangeOnSleepTime(GUICtrl, *) {
|
||||||
global sleepTime
|
global sleepTime
|
||||||
|
@ -2702,18 +2580,21 @@ ClickOnDoro(*) {
|
||||||
FriendPoint()
|
FriendPoint()
|
||||||
if g_settings["SimulationRoom"]
|
if g_settings["SimulationRoom"]
|
||||||
SimulationRoom()
|
SimulationRoom()
|
||||||
if g_settings["RookieArena"]
|
if g_settings["Arena"] {
|
||||||
RookieArena(g_numeric_settings["NumOfBattle"])
|
Arena() ;收菜
|
||||||
|
if g_settings["RookieArena"] ;新人竞技场
|
||||||
|
RookieArena(g_numeric_settings["NumOfRookieBattle"])
|
||||||
|
if g_settings["SpecialArena"] ;新人竞技场
|
||||||
|
SpecialArena(g_numeric_settings["NumOfSpecialBattle"])
|
||||||
|
else
|
||||||
|
BackToHall()
|
||||||
|
}
|
||||||
if g_settings["LoveTalking"]
|
if g_settings["LoveTalking"]
|
||||||
LoveTalking(g_numeric_settings["NumOfLoveTalking"])
|
LoveTalking(g_numeric_settings["NumOfLoveTalking"])
|
||||||
if g_settings["CompanyTower"] {
|
if g_settings["FailTower"]
|
||||||
if g_settings["TribeTower"]
|
FailTower()
|
||||||
TribeTower() ; 执行每日任务版 (进塔就退)
|
if g_settings["CompanyTower"]
|
||||||
else
|
CompanyTower()
|
||||||
CompanyTower() ; 执行完整爬塔版
|
|
||||||
} else if g_settings["TribeTower"] {
|
|
||||||
TribeTower() ; 即使 CompanyTower 未勾选,也要执行每日任务版
|
|
||||||
}
|
|
||||||
if g_settings["Interception"]
|
if g_settings["Interception"]
|
||||||
Interception()
|
Interception()
|
||||||
if g_settings["Mail"]
|
if g_settings["Mail"]
|
||||||
|
@ -2722,11 +2603,14 @@ ClickOnDoro(*) {
|
||||||
Mission()
|
Mission()
|
||||||
if g_settings["Pass"]
|
if g_settings["Pass"]
|
||||||
Pass()
|
Pass()
|
||||||
|
if g_settings["UniversalTower"]
|
||||||
|
UniversalTower()
|
||||||
}
|
}
|
||||||
if isBoughtTrash == 0
|
if isBoughtTrash == 0
|
||||||
MsgBox "协同作战商店似乎已经刷新了,快去看看吧"
|
MsgBox "协同作战商店似乎已经刷新了,快去看看吧"
|
||||||
MsgBox "Doro完成任务!" CompanyTowerInfo()
|
MsgBox "Doro完成任务!" CompanyTowerInfo()
|
||||||
;ExitApp
|
if g_settings["SelfClosing"]
|
||||||
|
ExitApp
|
||||||
Pause
|
Pause
|
||||||
}
|
}
|
||||||
SleepTimeToLabel(sleepTime) {
|
SleepTimeToLabel(sleepTime) {
|
||||||
|
@ -2750,47 +2634,31 @@ NumOfBookToLabel() {
|
||||||
global g_numeric_settings
|
global g_numeric_settings
|
||||||
return String(g_numeric_settings["NumOfBook"] + 1)
|
return String(g_numeric_settings["NumOfBook"] + 1)
|
||||||
}
|
}
|
||||||
NumOfBattleToLabel() {
|
|
||||||
global g_numeric_settings
|
|
||||||
return String(g_numeric_settings["NumOfBattle"] - 1)
|
|
||||||
}
|
|
||||||
NumOfLoveTalkingToLabel() {
|
|
||||||
global g_numeric_settings
|
|
||||||
return String(g_numeric_settings["NumOfLoveTalking"])
|
|
||||||
}
|
|
||||||
InterceptionBossToLabel() {
|
InterceptionBossToLabel() {
|
||||||
global g_numeric_settings
|
global g_numeric_settings
|
||||||
return String(g_numeric_settings["InterceptionBoss"])
|
return String(g_numeric_settings["InterceptionBoss"])
|
||||||
}
|
}
|
||||||
SaveSettings(*) {
|
|
||||||
WriteSettings()
|
|
||||||
MsgBox "设置已保存!"
|
|
||||||
}
|
|
||||||
WriteSettings(*) {
|
WriteSettings(*) {
|
||||||
global g_settings, g_numeric_settings, sleepTime, colorTolerance
|
global g_settings, g_numeric_settings, sleepTime, colorTolerance
|
||||||
; 从 g_settings Map 写入开关设置
|
; 从 g_settings Map 写入开关设置
|
||||||
for key, value in g_settings {
|
for key, value in g_settings {
|
||||||
IniWrite(value, "settings.ini", "Toggles", key)
|
IniWrite(value, "settings.ini", "Toggles", key)
|
||||||
}
|
}
|
||||||
; --- 新增:从 g_numeric_settings Map 写入数值设置 ---
|
|
||||||
for key, value in g_numeric_settings {
|
for key, value in g_numeric_settings {
|
||||||
IniWrite(value, "settings.ini", "NumericSettings", key) ; 使用新段名
|
IniWrite(value, "settings.ini", "NumericSettings", key)
|
||||||
}
|
}
|
||||||
; --- 新增结束 ---
|
|
||||||
; 写入其他独立设置
|
; 写入其他独立设置
|
||||||
IniWrite(sleepTime, "settings.ini", "Other", "sleepTime")
|
IniWrite(sleepTime, "settings.ini", "Other", "sleepTime")
|
||||||
IniWrite(colorTolerance, "settings.ini", "Other", "colorTolerance")
|
IniWrite(colorTolerance, "settings.ini", "Other", "colorTolerance")
|
||||||
; 注意:numOfBook, numOfBattle 等不再需要单独写入
|
|
||||||
}
|
}
|
||||||
LoadSettings() {
|
LoadSettings() {
|
||||||
global g_settings, g_numeric_settings, sleepTime, colorTolerance ; 移除不再使用的全局变量
|
global g_settings, g_numeric_settings, sleepTime, colorTolerance
|
||||||
default_settings := g_settings.Clone() ; 保留一份默认开关设置
|
default_settings := g_settings.Clone()
|
||||||
; 从 Map 加载开关设置
|
; 从 Map 加载开关设置
|
||||||
for key, defaultValue in default_settings {
|
for key, defaultValue in default_settings {
|
||||||
readValue := IniRead("settings.ini", "Toggles", key, defaultValue)
|
readValue := IniRead("settings.ini", "Toggles", key, defaultValue)
|
||||||
g_settings[key] := readValue
|
g_settings[key] := readValue
|
||||||
}
|
}
|
||||||
; --- 新增:从 Map 加载数值设置 ---
|
|
||||||
default_numeric_settings := g_numeric_settings.Clone() ; 保留一份默认数值设置
|
default_numeric_settings := g_numeric_settings.Clone() ; 保留一份默认数值设置
|
||||||
for key, defaultValue in default_numeric_settings {
|
for key, defaultValue in default_numeric_settings {
|
||||||
readValue := IniRead("settings.ini", "NumericSettings", key, defaultValue)
|
readValue := IniRead("settings.ini", "NumericSettings", key, defaultValue)
|
||||||
|
@ -2801,16 +2669,13 @@ LoadSettings() {
|
||||||
g_numeric_settings[key] := defaultValue
|
g_numeric_settings[key] := defaultValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
; --- 新增结束 ---
|
|
||||||
; 加载其他独立设置 (带默认值)
|
; 加载其他独立设置 (带默认值)
|
||||||
sleepTime := IniRead("settings.ini", "Other", "sleepTime", 1500)
|
sleepTime := IniRead("settings.ini", "Other", "sleepTime", 1500)
|
||||||
colorTolerance := IniRead("settings.ini", "Other", "colorTolerance", 15)
|
colorTolerance := IniRead("settings.ini", "Other", "colorTolerance", 15)
|
||||||
; 确保加载的值有效 (可选,但推荐)
|
}
|
||||||
if !(sleepTime ~= "^(750|1000|1250|1500|1750|2000)$")
|
SaveSettings(*) {
|
||||||
sleepTime := 1500
|
WriteSettings()
|
||||||
if !(colorTolerance ~= "^(15|35)$")
|
MsgBox "设置已保存!"
|
||||||
colorTolerance := 15
|
|
||||||
; 可以为 g_numeric_settings 中的值添加范围检查,如果需要
|
|
||||||
}
|
}
|
||||||
; 全局设置 Map 对象
|
; 全局设置 Map 对象
|
||||||
global g_settings := Map(
|
global g_settings := Map(
|
||||||
|
@ -2823,28 +2688,35 @@ global g_settings := Map(
|
||||||
"Mission", 1, ; 任务
|
"Mission", 1, ; 任务
|
||||||
"Pass", 1, ; 通行证
|
"Pass", 1, ; 通行证
|
||||||
"SimulationRoom", 1, ; 模拟室
|
"SimulationRoom", 1, ; 模拟室
|
||||||
|
"Arena", 1, ; 竞技场收菜
|
||||||
"RookieArena", 1, ; 新人竞技场
|
"RookieArena", 1, ; 新人竞技场
|
||||||
|
"SpecialArena", 1, ; 特殊竞技场
|
||||||
"LoveTalking", 1, ; 咨询
|
"LoveTalking", 1, ; 咨询
|
||||||
"CompanyWeapon", 0, ; 企业武器熔炉 (商店)
|
"CompanyWeapon", 0, ; 企业武器熔炉 (商店)
|
||||||
"Interception", 0, ; 拦截战
|
"Interception", 0, ; 拦截战
|
||||||
"CompanyTower", 1, ; 企业塔
|
"CompanyTower", 1, ; 企业塔
|
||||||
"TribeTower", 0, ; 每日爬塔任务
|
"UniversalTower", 1, ; 通用塔
|
||||||
|
"FailTower", 0, ; 每日爬塔任务
|
||||||
"LongTalk", 1, ; 详细咨询 (若图鉴未满)
|
"LongTalk", 1, ; 详细咨询 (若图鉴未满)
|
||||||
"AutoCheckUpdate", 0, ; 自动检查更新
|
"AutoCheckUpdate", 0, ; 自动检查更新
|
||||||
|
"SelfClosing", 0, ; 完成后自动关闭程序
|
||||||
"BookFire", 0, ; 手册:燃烧
|
"BookFire", 0, ; 手册:燃烧
|
||||||
"BookWater", 0, ; 手册:水冷
|
"BookWater", 0, ; 手册:水冷
|
||||||
"BookWind", 0, ; 手册:风压
|
"BookWind", 0, ; 手册:风压
|
||||||
"BookElec", 0, ; 手册:电击
|
"BookElec", 0, ; 手册:电击
|
||||||
"BookIron", 0 ; 手册:铁甲
|
"BookIron", 0, ; 手册:铁甲
|
||||||
|
;"CheckBox",0 ; 简介个性化礼包
|
||||||
)
|
)
|
||||||
; 其他非简单开关的设置 Map 对象
|
; 其他非简单开关的设置 Map 对象
|
||||||
global g_numeric_settings := Map(
|
global g_numeric_settings := Map(
|
||||||
"NumOfBook", 3, ; 购买手册数量 (0-3) -> 对应 DropDownList 选项 1-4
|
"NumOfBook", 3, ; 购买手册数量
|
||||||
"NumOfBattle", 5, ; 新人竞技场次数 (2-5) -> 对应 DropDownList 选项 1-4
|
"NumOfRookieBattle", 5, ; 新人竞技场次数
|
||||||
"NumOfLoveTalking", 10, ; 咨询次数 (1-10) -> 对应 DropDownList 选项 1-10
|
"NumOfSpecialBattle", 5, ; 新人竞技场次数
|
||||||
"InterceptionBoss", 1 ; 拦截战BOSS选择 (1-5) -> 对应 DropDownList 选项 1-5
|
"NumOfLoveTalking", 10, ; 咨询次数
|
||||||
|
"InterceptionBoss", 1 ; 拦截战BOSS选择
|
||||||
)
|
)
|
||||||
global isBoughtTrash := 1 ; 检测废铁商店
|
global isBoughtTrash := 1 ; 检测废铁商店
|
||||||
|
;检测管理员身份
|
||||||
if !A_IsAdmin {
|
if !A_IsAdmin {
|
||||||
MsgBox "请以管理员身份运行Doro"
|
MsgBox "请以管理员身份运行Doro"
|
||||||
ExitApp
|
ExitApp
|
||||||
|
@ -2895,9 +2767,10 @@ doroGui.SetFont()
|
||||||
doroGui.Add("Button", "R1 x+10", "帮助").OnEvent("Click", ClickOnHelp)
|
doroGui.Add("Button", "R1 x+10", "帮助").OnEvent("Click", ClickOnHelp)
|
||||||
doroGui.Add("Button", "R1 x+10", "检查更新").OnEvent("Click", ClickOnCheckForUpdate)
|
doroGui.Add("Button", "R1 x+10", "检查更新").OnEvent("Click", ClickOnCheckForUpdate)
|
||||||
Tab := doroGui.Add("Tab3", "xm") ;由于autohotkey有bug只能这样写
|
Tab := doroGui.Add("Tab3", "xm") ;由于autohotkey有bug只能这样写
|
||||||
Tab.Add(["doro设置", "收获", "商店", "日常", "默认"])
|
Tab.Add(["设置", "收获", "商店", "日常", "默认"])
|
||||||
Tab.UseTab("doro设置")
|
Tab.UseTab("设置")
|
||||||
AddCheckboxSetting(doroGui, "AutoCheckUpdate", "自动检查更新(确保能连上github)", "R2")
|
AddCheckboxSetting(doroGui, "AutoCheckUpdate", "自动检查更新(确保能连上github)", "R1.2")
|
||||||
|
AddCheckboxSetting(doroGui, "SelfClosing", "任务完成后自动关闭程序", "R1.2")
|
||||||
doroGui.Add("Text", , "点击间隔(单位毫秒),谨慎更改")
|
doroGui.Add("Text", , "点击间隔(单位毫秒),谨慎更改")
|
||||||
doroGui.Add("DropDownList", "Choose" SleepTimeToLabel(sleepTime), [750, 1000, 1250, 1500, 1750, 2000]).OnEvent("Change",
|
doroGui.Add("DropDownList", "Choose" SleepTimeToLabel(sleepTime), [750, 1000, 1250, 1500, 1750, 2000]).OnEvent("Change",
|
||||||
ChangeOnSleepTime)
|
ChangeOnSleepTime)
|
||||||
|
@ -2916,7 +2789,7 @@ AddCheckboxSetting(doroGui, "Pass", "通行证收取", "R1.2")
|
||||||
Tab.UseTab("商店")
|
Tab.UseTab("商店")
|
||||||
doroGui.Add("Text", "R1.2 Section", "普通商店")
|
doroGui.Add("Text", "R1.2 Section", "普通商店")
|
||||||
AddCheckboxSetting(doroGui, "FreeShop", "每日白嫖2次", "R1.2 xs+15")
|
AddCheckboxSetting(doroGui, "FreeShop", "每日白嫖2次", "R1.2 xs+15")
|
||||||
doroGui.Add("CheckBox", " R1.2 xs+15", "购买简介个性化礼包")
|
doroGui.Add("Text", " R1.2 xs+15", "❌购买简介个性化礼包")
|
||||||
doroGui.Add("Text", "R1.2 xs", "竞技场商店")
|
doroGui.Add("Text", "R1.2 xs", "竞技场商店")
|
||||||
doroGui.Add("Text", "R1.2 xs+15", "购买手册:")
|
doroGui.Add("Text", "R1.2 xs+15", "购买手册:")
|
||||||
AddCheckboxSetting(doroGui, "BookFire", "燃烧", "R1.2 xs+15")
|
AddCheckboxSetting(doroGui, "BookFire", "燃烧", "R1.2 xs+15")
|
||||||
|
@ -2925,39 +2798,35 @@ AddCheckboxSetting(doroGui, "BookWind", "风压", "R1.2 X+1")
|
||||||
AddCheckboxSetting(doroGui, "BookElec", "电击", "R1.2 X+1")
|
AddCheckboxSetting(doroGui, "BookElec", "电击", "R1.2 X+1")
|
||||||
AddCheckboxSetting(doroGui, "BookIron", "铁甲", "R1.2 X+1")
|
AddCheckboxSetting(doroGui, "BookIron", "铁甲", "R1.2 X+1")
|
||||||
AddCheckboxSetting(doroGui, "CompanyWeapon", "购买公司武器熔炉", "R1.2 xs+15")
|
AddCheckboxSetting(doroGui, "CompanyWeapon", "购买公司武器熔炉", "R1.2 xs+15")
|
||||||
;以下为无效功能
|
doroGui.Add("Text", " R1.2 xs+15", "❌购买简介个性化礼包")
|
||||||
doroGui.Add("CheckBox", " R1.2", "购买简介个性化礼包")
|
doroGui.Add("Text", "R1.2 xs Section", "废铁商店")
|
||||||
doroGui.Add("Text", "R1.2 xs Section", "废铁商店(简介个性化礼包和废铁商店还在做)")
|
doroGui.Add("Text", " R1.2 xs+15", "❌购买珠宝")
|
||||||
doroGui.Add("Checkbox", " R1.2 xs+15", "购买珠宝")
|
|
||||||
doroGui.Add("Text", " R1.2 xs+15", "购买好感券:")
|
doroGui.Add("Text", " R1.2 xs+15", "购买好感券:")
|
||||||
doroGui.Add("Checkbox", " R1.2 xs+15", "通用")
|
doroGui.Add("Text", " R1.2 xs+15", "❌通用")
|
||||||
doroGui.Add("Checkbox", " R1.2 x+1", "朝圣者")
|
doroGui.Add("Text", " R1.2 x+1", "❌朝圣者")
|
||||||
doroGui.Add("Checkbox", " R1.2 x+1", "反常")
|
doroGui.Add("Text", " R1.2 x+1", "❌反常")
|
||||||
doroGui.Add("Checkbox", " R1.2 xs+15", "极乐净土")
|
doroGui.Add("Text", " R1.2 xs+15", "❌极乐净土")
|
||||||
doroGui.Add("Checkbox", " R1.2 x+1", "米西利斯")
|
doroGui.Add("Text", " R1.2 x+1", "❌米西利斯")
|
||||||
doroGui.Add("Checkbox", " 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("Checkbox", " R1.2 xs+15", "信用点+盒")
|
doroGui.Add("Text", " R1.2 xs+15", "❌信用点+盒")
|
||||||
doroGui.Add("Checkbox", " R1.2 x+1", "战斗数据辑盒")
|
doroGui.Add("Text", " R1.2 x+1", "❌战斗数据辑盒")
|
||||||
doroGui.Add("Checkbox", " R1.2 x+1", "芯尘盒")
|
doroGui.Add("Text", " R1.2 x+1", "❌芯尘盒")
|
||||||
Tab.UseTab("日常")
|
Tab.UseTab("日常")
|
||||||
AddCheckboxSetting(doroGui, "SimulationRoom", "模拟室5C(普通关卡需要快速战斗)", "R1.2")
|
AddCheckboxSetting(doroGui, "SimulationRoom", "模拟室5C(普通关卡需要快速战斗)", "R1.2")
|
||||||
AddCheckboxSetting(doroGui, "RookieArena", "新人竞技场(请点开快速战斗)", "R1.2")
|
AddCheckboxSetting(doroGui, "Arena", "竞技场收菜", "R1.2 Section")
|
||||||
AddCheckboxSetting(doroGui, "LoveTalking", "咨询妮姬(可以通过收藏改变妮姬排序)", "R1.2 Section") ; 注意 Section 选项用法
|
AddCheckboxSetting(doroGui, "RookieArena", "新人竞技场(请点开快速战斗)", "R1.2 XP+15 Y+M")
|
||||||
AddCheckboxSetting(doroGui, "LongTalk", "若图鉴未满,则进行详细咨询", "R1.2 XP+15 Y+M")
|
AddCheckboxSetting(doroGui, "SpecialArena", "特殊竞技场(请点开快速战斗)", "R1.2 Y+M")
|
||||||
AddCheckboxSetting(doroGui, "CompanyTower", "爬企业塔", "R1.2 xs Section")
|
AddCheckboxSetting(doroGui, "LoveTalking", "咨询妮姬(可以通过收藏改变妮姬排序)", "R1.2 xs Section") ; 注意 Section 选项用法(保存此控件位置并定义一个新控件段)
|
||||||
AddCheckboxSetting(doroGui, "TribeTower", "只完成每日任务,在进入后退出", "R1.2 XP+15 Y+M")
|
AddCheckboxSetting(doroGui, "FailTower", "爬塔摆烂一次(用于完成每日任务)", "R1.2")
|
||||||
|
AddCheckboxSetting(doroGui, "CompanyTower", "尽可能地爬企业塔", "R1.2 xs Section")
|
||||||
AddCheckboxSetting(doroGui, "Interception", "使用对应编队进行异常拦截自动战斗", "R1.2 xs")
|
AddCheckboxSetting(doroGui, "Interception", "使用对应编队进行异常拦截自动战斗", "R1.2 xs")
|
||||||
doroGui.Add("DropDownList", "Choose" InterceptionBossToLabel(), ["克拉肯(石),编队1", "过激派(头),编队2", "镜像容器(手),编队3",
|
doroGui.Add("DropDownList", "Choose" InterceptionBossToLabel(), ["克拉肯(石),编队1", "过激派(头),编队2", "镜像容器(手),编队3",
|
||||||
"茵迪维利亚(衣),编队4", "死神(脚),编队5"]).OnEvent("Change", ChangeOnInterceptionBoss)
|
"茵迪维利亚(衣),编队4", "死神(脚),编队5"]).OnEvent("Change", ChangeOnInterceptionBoss)
|
||||||
|
AddCheckboxSetting(doroGui, "UniversalTower", "尽可能地爬通用塔", "R1.2")
|
||||||
Tab.UseTab("默认")
|
Tab.UseTab("默认")
|
||||||
doroGui.Add("Text", , "购买几本代码手册?")
|
doroGui.Add("Text", , "购买代码手册数量")
|
||||||
doroGui.Add("DropDownList", "Choose" NumOfBookToLabel(), [0, 1, 2, 3]).OnEvent("Change", ChangeOnNumOfBook)
|
doroGui.Add("DropDownList", "Choose" NumOfBookToLabel(), [0, 1, 2, 3]).OnEvent("Change", ChangeOnNumOfBook)
|
||||||
doroGui.Add("Text", , "新人竞技场打几次?")
|
|
||||||
doroGui.Add("DropDownList", "Choose" NumOfBattleToLabel(), [2, 3, 4, 5]).OnEvent("Change", ChangeOnNumOfBattle)
|
|
||||||
doroGui.Add("Text", , "咨询几位妮姬?")
|
|
||||||
doroGui.Add("DropDownList", "Choose" NumOfLoveTalkingToLabel(), [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]).OnEvent("Change",
|
|
||||||
ChangeOnNumOfLoveTalking)
|
|
||||||
Tab.UseTab()
|
Tab.UseTab()
|
||||||
doroGui.Add("Button", "Default w80 xm+100", "DORO!").OnEvent("Click", ClickOnDoro)
|
doroGui.Add("Button", "Default w80 xm+100", "DORO!").OnEvent("Click", ClickOnDoro)
|
||||||
doroGui.Show()
|
doroGui.Show()
|
||||||
|
|
110
README.md
110
README.md
|
@ -1,66 +1,61 @@
|
||||||
# 免责声明
|
<div align="center">
|
||||||
|
|
||||||
本项目仅供个人学习研究使用,严禁用于商业用途。除Github以外其他任何网站、社交平台中有关本项目的内容**均非本人发布**,若造成侵犯著作权、版权或违反网络安全法规等任何后果,均与本人无关。
|
<img alt="LOGO" src="./img/logo.png" width="256" height="256" />
|
||||||
|
|
||||||
# 前言
|
# DoroHelper
|
||||||
|
|
||||||
PC端自用日常任务清理助手:DoroHelper。支持国际服和港澳台服客户端。支持多开。
|
PC 端日常任务清理助手。一键清理多项日常事务。支持国际服和港澳台服客户端。支持多开。
|
||||||
|
|
||||||

|
</div>
|
||||||
|
|
||||||
|
## 免责声明
|
||||||
|
|
||||||
### 叠甲:
|
本项目仅供个人学习研究使用,严禁用于商业用途。除 Github 以外其他任何网站、社交平台中有关本项目的内容**均非本人发布**,若造成侵犯著作权、版权或违反网络安全法规等任何后果,均与本人无关。
|
||||||
|
|
||||||
使用任何脚本程序均有封号风险,请谨慎。
|
使用任何脚本程序均有封号风险,请谨慎。
|
||||||
|
|
||||||
### 再叠甲:
|
程序可能会有操作不兼容的情况出现。第一次使用最好在旁边看着。万一 Doro 失控,请按 Ctrl + 1 组合键结束进程或者 Ctrl + 2 组合键暂停进程。
|
||||||
|
|
||||||
程序是根据我自己的账号进度写的,所以可能会有操作不兼容的情况出现。第一次使用最好在旁边看着。万一Doro失控,请按Ctrl + 1组合键结束进程或者Ctrl + 2组合键暂停进程(debug)。
|
## 使用
|
||||||
|
|
||||||
|
### 运行 ahk 文件(推荐)
|
||||||
|
|
||||||
# 下载
|
1. 将整个项目文件下载到本地并解压(右上角绿色 code 按钮-Download ZIP)
|
||||||
|
1. 下载[AutoHotkey V2.0](https://www.autohotkey.com/download/ahk-v2.exe)
|
||||||
|
1. 以管理员身份运行 DoroHelper.ahk
|
||||||
|
|
||||||
在右边的release里有我编译好的exe文件可以直接用。
|
### 运行 exe 文件
|
||||||
|
|
||||||
不放心的话也可以下载代码,安装AutoHotkey V2.0并以管理员模式运行`DoroHelper.ahk`。也可以用任意文本编辑器打开`DoroHelper.ahk`修改(史山)代码以适配自己的情况。
|
1. 下载右边的 release 文件
|
||||||
|
1. 以管理员身份运行 DoroHelper.exe
|
||||||
|
|
||||||
也可以使用Ahk2Exe编译`DoroHelper.ahk`自己生成exe可执行文件。
|
## 功能介绍
|
||||||
|
|
||||||
|
Doro 只是想让你少被该死的读条、闪光弹和重复劳动折磨。一键清理多项日常事务(按顺序执行),包括:
|
||||||
|
|
||||||
# 功能介绍
|
|
||||||
|
|
||||||
Doro只是想让你少被该死的读条、闪光弹和重复劳动折磨。一键清理多项日常事务(按顺序执行),包括:
|
|
||||||
|
|
||||||
- **前哨基地防御**
|
- **前哨基地防御**
|
||||||
|
|
||||||
_1次一举歼灭+2次收菜_
|
- 1 次一举歼灭+2 次收菜
|
||||||
|
|
||||||
- **付费商店**
|
- **付费商店**
|
||||||
|
|
||||||
_领取每日、周、月免费钻_
|
- 领取每日、周、月免费钻
|
||||||
|
|
||||||
- **免费商店**
|
- **免费商店**
|
||||||
|
|
||||||
_普通商店每天白嫖2次,竞技场购买自定义数量的属性技能书,购买公司武器熔炉_
|
- 普通商店每天白嫖 2 次
|
||||||
|
- 竞技场购买自定义数量的属性技能书
|
||||||
|
- 购买公司武器熔炉
|
||||||
|
|
||||||
- **派遣远征和收菜**
|
- **派遣远征和收菜**
|
||||||
|
|
||||||
- **收取赠送好友点数**
|
- **收取赠送好友点数**
|
||||||
|
- **模拟室 5C 通关**
|
||||||
- **模拟室5C通关**
|
|
||||||
|
|
||||||
- **新人竞技场进行自定义数量的战斗**
|
- **新人竞技场进行自定义数量的战斗**
|
||||||
|
|
||||||
_顺带收取pjjc囤积超过50%的菜_
|
|
||||||
|
|
||||||
- **进行自定义次数的好感度咨询**
|
- 顺带收取 pjjc 囤积超过 50%的菜
|
||||||
|
|
||||||
_支持补充咨询图鉴_
|
- **进行十次好感度咨询**
|
||||||
|
- **光速爬塔失败 1 次(蹭每日任务点数)**
|
||||||
- **光速爬塔失败1次**
|
|
||||||
|
|
||||||
_蹭每日任务点数_
|
|
||||||
|
|
||||||
- **爬企业塔**
|
- **爬企业塔**
|
||||||
|
|
||||||
- **自动异常拦截**
|
- **自动异常拦截**
|
||||||
|
@ -69,51 +64,36 @@ PC端自用日常任务清理助手:DoroHelper。支持国际服和港澳台
|
||||||
|
|
||||||
- **每日奖励收取**
|
- **每日奖励收取**
|
||||||
|
|
||||||
- **Pass收取**
|
- **Pass 收取**
|
||||||
|
|
||||||
# 使用说明
|
## 要求
|
||||||
|
|
||||||
对大多数老玩家来说Doro设置保持默认就好。
|
- 【设定-画质-全屏幕模式 + 16:9 的显示器比例】(推荐) 或 【16:9 的窗口模式】(窗口尽量拉大,否则像素识别可能出现误差)
|
||||||
|
|
||||||
万一Doro失控,请按Ctrl + 1组合键结束进程。
|
|
||||||
|
|
||||||
万一Doro失控,请按Ctrl + 1组合键结束进程。
|
|
||||||
|
|
||||||
万一Doro失控,请按Ctrl + 1组合键结束进程。
|
|
||||||
|
|
||||||
## 要求:
|
|
||||||
|
|
||||||
- 【设定-画质-全屏幕模式 + 16:9的显示器比例】(推荐) 或 【16:9的窗口模式】(窗口尽量拉大,否则像素识别可能出现误差)
|
|
||||||
|
|
||||||
- 设定-画质-开启光晕效果
|
- 设定-画质-开启光晕效果
|
||||||
|
|
||||||
- 设定-画质-开启颜色分级
|
- 设定-画质-开启颜色分级
|
||||||
|
|
||||||
- 游戏语言设置为简体中文
|
- 游戏语言设置为简体中文
|
||||||
|
- 以**管理员身份**运行 DoroHelper
|
||||||
- 以**管理员身份**运行DoroHelper
|
|
||||||
|
|
||||||
- 不要开启windows HDR显示
|
- 不要开启 windows HDR 显示
|
||||||
|
|
||||||
## 步骤:
|
## 步骤
|
||||||
|
|
||||||
打开NIKKE启动器。点击启动。等右下角腾讯ACE反作弊系统扫完,NIKKE主程序中央SHIFT UP logo出现之后,再切出来点击“DORO!”按钮。如果你看到鼠标开始在左下角连点,那就代表启动成功了。然后就可以悠闲地去泡一杯咖啡,或者刷一会儿手机,等待Doro完成工作了。
|
打开 NIKKE 启动器。点击启动。等右下角腾讯 ACE 反作弊系统扫完,NIKKE 主程序中央 SHIFT UP logo 出现之后,再切出来点击“DORO!”按钮。如果你看到鼠标开始在左下角连点,那就代表启动成功了。然后就可以悠闲地去泡一杯咖啡,或者刷一会儿手机,等待 Doro 完成工作了。
|
||||||
|
|
||||||
也可以在游戏处在大厅界面时(有看板娘的页面)切出来点击“DORO!”按钮启动程序。
|
也可以在游戏处在大厅界面时(有看板娘的页面)切出来点击“DORO!”按钮启动程序。
|
||||||
|
|
||||||
游戏需要更新的时候请更新完再使用Doro。
|
## 其他
|
||||||
|
|
||||||
## 其他:
|
如果出现死循环,提高点击间隔可以解决 80%的问题。
|
||||||
|
|
||||||
如果出现死循环,提高点击间隔可以解决80%的问题。
|
|
||||||
|
|
||||||
如果你的电脑配置较好的话,可以尝试降低点击间隔。
|
如果你的电脑配置较好的话,可以尝试降低点击间隔。
|
||||||
|
|
||||||
可以尝试设置得和我一样:
|
## 反馈和改进
|
||||||
|
|
||||||

|
加入[DoroHelper 反馈群](https://qm.qq.com/q/f0Q1yr7vzi)(584275905)
|
||||||

|
|
||||||
|
|
||||||
# 借物表
|
## 借物表
|
||||||
|
|
||||||
<https://github.com/samfisherirl/Github.ahk-API-for-AHKv2>
|
[Github.ahk-API-for-AHKv2](https://github.com/samfisherirl/Github.ahk-API-for-AHKv2)
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 493 KiB |
BIN
img/preview.png
BIN
img/preview.png
Binary file not shown.
Before Width: | Height: | Size: 111 KiB |
BIN
img/setting1.png
BIN
img/setting1.png
Binary file not shown.
Before Width: | Height: | Size: 1.2 MiB |
BIN
img/setting2.png
BIN
img/setting2.png
Binary file not shown.
Before Width: | Height: | Size: 281 KiB |
Loading…
Reference in New Issue