//https://www.52pojie.cn/thread-931900-1-1.html?from=singlemessage&isappinstalled=0
```
Dim 當前應用包名,X坐標,Y坐標
當前應用包名 = sys.GetFront()
TracePrint 當前應用包名
Dim addr = "0x7"//開始搜索的起始值,我們要找的X坐標信息的地址為886F9040,我們可以填0x7,比8小一點。因為在特征碼定位和基址定位中地址是不變的,所以作用是用來加快搜索速度
Dim tb1 = {"lv":1109308085} //第一個特征點的坐標,我們就拿X坐標的值來。顯然有點畫蛇添足,其實直接拿X坐標地址去讀內存就直接獲取X坐標的值了
Dim tb2 = {"lv":1116455199,"offset":8}//第二個特征點的坐標。GG里面Y坐標的地址比X坐標地址大,偏移就是為正數
Dim tb = {tb1, tb2}
Dim t = TickCount()//按鍵自帶命令,計算內存搜索時間的
Dim A = Sys.MemorySearch(當前應用包名, True,addr, tb, "i32",0,1)//這里的True代表新搜索,顯然第一次是新搜索,i32的意思就是特征點的數據類型tb1和tb2這兩個鍵表值的類型,i就是int,1109308085和1116455199,是32位整數型,0代表搜索范圍,0為最廣,1是搜索次數。只搜索一次。
//返回的A為一個數組。可能在數組中會搜索到很多結果,一般以數組第一個為準,所以搜索到保存A坐標的信息的地址是是A(0)
TracePrint "搜索地址為:"&A(0)&",耗時"&(TickCount()-t)
//此時A(0)應該是為16進制的地址字符串,偏移為10進制數據,要把結果轉換成10進制數值加上偏移再轉成16進制的數據。最后轉成字符串才能在內存搜索這個命令里面去使用
Dim X地址 = 地址相加(A(0), 0)//該函數下面有注釋
Dim Y地址 = 地址相加(A(0), 8)
TracePrint X地址 //6進制的地址字符串
Do
X坐標 = Sys.MemoryRead(當前應用包名, X地址, "f32")//我們GG搜索到的值為雙精度浮點數,所以為f32,這里大小寫應該不敏感,官方的提示全部是大寫。我用小寫也可以搜到
TracePrint X坐標 //輸出X的浮點數坐標值
Y坐標 = Sys.MemoryRead(當前應用包名, Y地址, "f32")
TracePrint Y坐標//輸出Y的浮點數坐標值
ShowMessage "x坐標為:"&X坐標&"\ny坐標為"&Y坐標//頁面直接顯示一下
Delay 300//循環讀取加點間隔
Loop
Function 地址相加(地址, 偏移)
Dim A = Right(地址,Len(地址)-2)//去掉16進制左邊的0x
Dim B = Clng("0x"&A)//把這個16進制數據強制轉換成十進制整型
Dim C = B+偏移 //結果加偏移
Dim D = Hex(C) //強制轉16進制
Dim E = "0x"&D //加上0x,轉成字符串
地址相加 = E
End Function
```