@@ -6,17 +6,33 @@ SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
66#Persistent
77SetBatchLines , - 1
88
9- update_log :="
9+ supported_resolutions :="
1010 (
11+ 1280 x 720
12+ 1440 x 900
13+ 1600 x 900
14+ 1920 x 1080
15+ 2560 x 1080
16+ 2560 x 1440
17+ 3440 x 1440
18+ 3840 x 2160
19+ )"
1120
12- > 现在更新源将会自动选择
13- > The update source will now be automatically selected
14-
21+ update_log:="
22+ (
1523
24+ > 新增 1440x900 分辨率支持
25+ > Added 1440x900 resolution support
26+ > 添加了对于更靠近中心的UI位置的支持
27+ > Added support for UI positions which is closer to center
28+ > 进一步优化了图像的搜索效率
29+ > Further optimized image search efficiency
1630
1731)"
1832
19- version:=" 0.2.5"
33+ version:=" 0.2.6"
34+ isCNServer:=0
35+ ; 出现了一个国际服玩家UI位置与国服不一致的情况。尚不能确定是服务器间差异或是其他的客户端差异所造成。暂时先令所有的图标搜索范围均扩大。
2036
2137; @Ahk2Exe-IgnoreBegin
2238if A_Args.Length() > 0
@@ -60,7 +76,7 @@ IfExist, updater.exe
6076}
6177#include update.ahk
6278
63- TrayTip " Genshin Fishing automata Start`nv" version " `n原神钓鱼人偶启动"
79+ TrayTip , % " Genshin Fishing Automata " , % " Genshin Fishing Automata Start`nv" version " `n原神钓鱼人偶启动"
6480
6581img_list:=Object(" bar" ,Object(" filename" ," bar.png" )
6682," casting" ,Object(" filename" ," casting.png" )
@@ -110,10 +126,13 @@ log(txt,level=0)
110126
111127genshin_window_exist()
112128{
129+ ; global isCNServer
113130 genshinHwnd := WinExist (" ahk_exe GenshinImpact.exe" )
131+ ; isCNServer := 0
114132 if not genshinHwnd
115133 {
116134 genshinHwnd := WinExist (" ahk_exe YuanShen.exe" )
135+ ; isCNServer := 1
117136 }
118137 return genshinHwnd
119138}
@@ -174,26 +193,60 @@ dLinePt(p)
174193 return Ceil (p* dLine)
175194}
176195
196+ ; iconSize = dLinePt(0.0353) * dLinePt(0.0442)
197+
177198getState :
199+ if (isCNServer) {
200+ iconLeftPt := 0.167
201+ } else {
202+ iconLeftPt := 0.222
203+ }
204+ iconTopPt := 0.084
205+ iconBottomPt := 0
206+ iconRightPt := 0
207+
208+ if (last_iconX>0 ) {
209+ last_iconLeftPt := (winW - last_iconX)/ dLine
210+ last_iconTopPt := (winH - last_iconY)/ dLine
211+
212+ iconBottomPt := (winH - last_iconY - dLinePt(0.0442 * 1.5 ))/ dLine
213+ iconRightPt := (winW - last_iconX - dLinePt(0.0353 * 1.5 ))/ dLine
214+ if (iconBottomPt<0 ){
215+ iconBottomPt := 0
216+ }
217+ if (iconRightPt<0 ){
218+ iconRightPt := 0
219+ }
220+ iconLeftPt := last_iconLeftPt + (0.0353 * 0.5 )
221+ iconTopPt := last_iconTopPt + (0.0442 * 0.5 )
222+ log (" lastIcon=" last_iconX " , " last_iconY " dLine=" dLine, 3 )
223+ }
224+ ; log("search from [" winW-dLinePt(iconLeftPt) ", " winH-dLinePt(iconTopPt) "] to [" winW-dLinePt(iconRightPt) ", " winH-dLinePt(iconBottomPt) "]", 3)
178225; k:=(((winW**2)+(winH**2))**0.5)/(((1920**2)+(1080**2))**0.5)
179- ImageSearch , iconX, iconY, winW- dLinePt(0.167 ), winH- dLinePt(0.084 ), winW, winH, % " *32 *TransFuchsia " A_Temp " /genshinfishing/" winW winH " /" img_list.ready.filename
226+ ImageSearch , iconX, iconY, winW- dLinePt(iconLeftPt ), winH- dLinePt(iconTopPt ), winW- dLinePt(iconRightPt) , winH- dLinePt(iconBottomPt) , % " *32 *TransFuchsia " A_Temp " /genshinfishing/" winW winH " /" img_list.ready.filename
180227if (! ErrorLevel ){
228+ last_iconX := iconX
229+ last_iconY := iconY
181230 state:=" ready"
182231 statePredict:=state
183232 stateUnknownStart := 0
184233 log (" state->" statePredict, 1 )
185234 return
186235}
187- ImageSearch , iconX, iconY, winW- dLinePt(0.167 ), winH- dLinePt(0.084 ), winW, winH, % " *32 *TransFuchsia " A_Temp " /genshinfishing/" winW winH " /" img_list.reel.filename
236+ ImageSearch , iconX, iconY, winW- dLinePt(iconLeftPt ), winH- dLinePt(iconTopPt ), winW- dLinePt(iconRightPt) , winH- dLinePt(iconBottomPt) , % " *32 *TransFuchsia " A_Temp " /genshinfishing/" winW winH " /" img_list.reel.filename
188237if (! ErrorLevel ){
238+ last_iconX := iconX
239+ last_iconY := iconY
189240 state:=" reel"
190241 statePredict:=state
191242 stateUnknownStart := 0
192243 log (" state->" statePredict, 1 )
193244 return
194245}
195- ImageSearch , iconX, iconY, winW- dLinePt(0.167 ), winH- dLinePt(0.084 ), winW, winH, % " *32 *TransFuchsia " A_Temp " /genshinfishing/" winW winH " /" img_list.casting.filename
246+ ImageSearch , iconX, iconY, winW- dLinePt(iconLeftPt ), winH- dLinePt(iconTopPt ), winW- dLinePt(iconRightPt) , winH- dLinePt(iconBottomPt) , % " *32 *TransFuchsia " A_Temp " /genshinfishing/" winW winH " /" img_list.casting.filename
196247if (! ErrorLevel ){
248+ last_iconX := iconX
249+ last_iconY := iconY
197250 state:=" casting"
198251 statePredict:=state
199252 stateUnknownStart := 0
@@ -205,6 +258,8 @@ if(stateUnknownStart == 0) {
205258 stateUnknownStart := A_TickCount
206259}
207260if (statePredict! =" unknown" && A_TickCount - stateUnknownStart>=2000 ){
261+ last_iconX := 0
262+ last_iconY := 0
208263 statePredict:=" unknown"
209264 ; Click, Up
210265 log (" state->" statePredict, 1 )
@@ -217,13 +272,11 @@ if(!genshin_hwnd){
217272 SetTimer , main, - 800
218273 Return
219274}
220- if (WinExist (" A" ) ! = genshin_hwnd)
221- {
275+ if (WinExist (" A" ) ! = genshin_hwnd) {
222276 SetTimer , main, - 500
223277 Return
224278}
225279getClientSize(genshin_hwnd, winW, winH)
226-
227280if (oldWinW! =winW || oldWinH! =winH) {
228281 log (" Get dimension=" winW " x" winH,1 )
229282 if (InStr (FileExist (A_Temp " /genshinfishing/" winW winH), " D" )) {
@@ -259,13 +312,12 @@ if(oldWinW!=winW || oldWinH!=winH) {
259312oldWinW:=winW
260313oldWinH:=winH
261314if (! isResolutionValid) {
262- tt(" Unsupported resolution`n不支持的分辨率`n" winW " x" winH)
315+ tt(" Unsupported resolution`n不支持的分辨率`n" winW " x" winH " `n`nThe supported resolutions are as follows`n支持的分辨率如下`n " supported_resolutions )
263316 SetTimer , main, - 800
264317 Return
265318}
266319
267- if (statePredict==" unknown" || statePredict==" ready" )
268- {
320+ if (statePredict==" unknown" || statePredict==" ready" ) {
269321 Gosub , getState
270322 if (statePredict! =" unknown" && debugmode){
271323 tt(" state = " state " `nstatePredict = " statePredict " `n" winW " ," winH)
0 commit comments