搜尋

英雄聯盟

返回清單
切換到指定樓層
通知這文章過時或找檔案 發表主題

英雄聯盟 League of Legends: AutoHotkey教學 - 讀取RIOT API和繪製基礎教學

[複製連結]
1
大藍鯨 ( Lv.50 智天使 ) 發表於 2023-10-10 11:09:15 | 只看該作者 |只看大圖 回覆獎勵 |降序瀏覽 |閱讀模式
League of Legends: 使用AutoHotkey讀取和繪製RIOT API(基礎教學)

作者製作了這個快速教學,幫助你們學習使用AutoHotkey來進行繪圖以及讀取RIOT API的基礎知識。

首先,如果你想要使用AutoHotkey來讀取League API,你需要安裝RIOT Games的根證書以解決一些安全連接錯誤。請按照以下幾個步驟進行操作:

1. 從以下網站下載證書:
https://static.developer.riotgames.c.../riotgames.pem


2. 以管理員身份打開你的命令提示符。

3. 輸入以下命令:certutil.exe -addstore root %path_to_certificate%
   例如:
   ‪certutil.exe -addstore root C:\riotgames.pem
   然後按下Enter。

4. 現在你的證書已經安裝好了,你可以在沒有證書錯誤的情況下讀取RIOT API。

這是RIOT遊戲典型的遊戲內請求。你可以在遊戲已經執行階段在瀏覽器中嘗試它們:
  1. - https://127.0.0.1:2999/swagger/v3/openapi.json
  2. - https://127.0.0.1:2999/swagger/v2/swagger.json
  3. - https://127.0.0.1:2999/liveclientdata/allgamedata
  4. - https://127.0.0.1:2999/liveclientdata/activeplayer
  5. - https://127.0.0.1:2999/liveclientdata/activeplayername
  6. - https://127.0.0.1:2999/liveclientdat...layerabilities
  7. - https://127.0.0.1:2999/liveclientdata/activeplayerrunes
  8. - https://127.0.0.1:2999/liveclientdata/playerlist
  9. - https://127.0.0.1:2999/liveclientdat...nerName=(place your summoner name here)
  10. - https://127.0.0.1:2999/liveclientdat...nerName=(place your summoner name here)
  11. - https://127.0.0.1:2999/liveclientdat...nerName=(place your summoner name here)
  12. - https://127.0.0.1:2999/liveclientdat...nerName=(place your summoner name here)
  13. - https://127.0.0.1:2999/liveclientdata/eventdata
  14. - https://127.0.0.1:2999/liveclientdata/gamestats
複製代碼
正如你所看到的,所有這些資料都以JSON格式儲存。你可以使用任何支援的程式語言通過HTTP請求來讀取任何此類資料,AutoHotkey也是可以的。我在AHK的文件中找到了一些關於如何從網際網路上下載文字到變數的方法,你可以在這個連結中找到它:
https://www.autohotkey.com/docs/v1/l...loadToFile.htm

如果你還沒有安裝證書,你可以使用以下程式碼來讀取RIOT API:
```
  1. ahk
  2. req := ComObjCreate("Msxml2.XMLHTTP")
  3. ; 打開一個啟用非同步的請求。
  4. req.open("GET", "https://www.autohotkey.com/download/1.1/version.txt", true)
  5. ; 設定我們的回呼函數 [需要v1.1.17+]。
  6. req.onreadystatechange := Func("Ready")
  7. ; 傳送請求。當請求完成時,將呼叫Ready()函數。
  8. req.send()
複製代碼
```

但是當你運行這段程式碼並連接到RIOT的API連結時,你會一直收到連接不安全的提示。只需按下“確定”按鈕,你的指令碼就可以繼續讀取值。但我認為更好的方法是安裝這個證書,它又快又簡單。有了安裝好的證書,你可以使用以下簡單的程式碼來讀取API:
```
  1. ahk
  2. whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
  3. whr.Open("GET", "https://www.autohotkey.com/download/1.1/version.txt", true)
  4. whr.Send()
  5. ; 使用上面的'true'和下面的呼叫允許指令碼保持響應性。
  6. whr.WaitForResponse()
  7. version := whr.ResponseText
  8. MsgBox % version
複製代碼
```

現在你知道了如何讀取網際網路API字串,以及如何將它們儲存到AutoHotkey變數中。現在讓我們學習如何解析這個字串中的重要值,如果它們是以JSON格式儲存的(就像RIOT的API一樣)。

這是AutoHotkey的JSON庫連結,其中包含了所有讀取和解析JSON字串對象的重要功能:
https://github.com/cocobelgica/AutoHotkey-JSON

現在我將與你分享一些如何使用這個庫的示例:
1. 在AutoHotkey中讀取JSON對象的基礎:
```
  1. ahk
  2. Json := "{\"name\":\"John\",\"age\":30,\"city\":\"New York\"}"
  3. obj := JsonToObj(Json)
  4. MsgBox % obj.name
  5. MsgBox % obj.age
  6. MsgBox % obj.city
複製代碼
```

2. 將JSON API資料讀取到AutoHotkey變數中:
(你需要安裝證書,並且在嘗試這些指令碼時遊戲必須正在運行)
```
  1. ahk
  2. whr := ComObjCreate("WinHttp.WinHttpRequest.5.1")
  3. whr.Open("GET", "https://127.0.0.1:2999/liveclientdata/allgamedata", true)
  4. whr.Send()
  5. whr.WaitForResponse()
  6. response := whr.ResponseText

  7. ; 使用JSON庫來解析響應
  8. Json := JsonToObj(response)
  9. gameMode := Json.gameData.gameMode
  10. MsgBox % "遊戲模式:" . gameMode
複製代碼
```

現在讓我們瞭解AutoHotkey的gdip庫以進行繪圖。原始下載連結可以在這裡找到:

我受到了這個視訊的啟發:
https://www.youtube.com/watch?v=y8AI97CG6B4
youtube
外連至此YOUTUBE影片連結



我製作了一些函數,以便在使用AHK繪圖時更容易。以下是基礎知識:

```
  1. ahk
  2. ; 建立一個畫布
  3. canvas := Gdip_CreateBitmap(800, 600)

  4. ; 選擇畫布
  5. Gd

  6. ip_GraphicsFromImage(canvas, g)

  7. ; 選擇畫筆顏色
  8. Gdip_SetSolidBrushColor(color, 0xFF0000) ; 紅色

  9. ; 繪製矩形
  10. Gdip_FillRectangle(g, color, 100, 100, 200, 200)

  11. ; 將畫布繪製到螢幕
  12. Gdip_DrawImage(hDC, canvas, 0, 0)

  13. ; 釋放資源
  14. Gdip_DisposeImage(canvas)
  15. Gdip_DeleteGraphics(g)
複製代碼
```

現在,如果你明白了如何讀取RIOT的API、建立AutoHotkey變數來儲存API的值,以及瞭解如何使用AHK進行基本繪圖,你現在可以實現並建立一個AutoHotkey指令碼,用於讀取記憶體或API的值,並在螢幕上繪製你需要的內容。我已經更新了上一次會話的指令碼到13.8版本。

在我的更新指令碼中,我使用了已安裝的證書,當我按下xbutton1時,本地玩家當前的狀態將出現在螢幕頂部。你可以在這裡下載我的更新版本:





哦,我還忘了說,你可以使用cmd來嘗試這些請求。你不需要安裝證書,只需使用cmd命令`curl --insecure`來忽略證書錯誤,就像這樣:

這是我指令碼的一個示例:

RIOT的API文件都可以在這裡找到:

https://developer.riotgames.com/docs/lol


UMXk1x8.jpg


TLUKJ8Y.jpg



更新jungle_tracker.ahk腳本,整合3個腳本進行統一通話管理,
新增快捷鍵設定和重新啟動腳本,
並添加對 config.ini 檔案配置的支持,以避免每次 offsets 版本更新後編輯每個腳本的繁瑣工作。

jungle_tracker-update.zip (69.54 KB, 下載次數: 0)



英雄聯盟》:使用AutoHotkey建立滑鼠自動對準敵方英雄的腳本教學
https://www.game735.com/thread-381757-1-1.html






大家正在看啥


收藏收藏 分享文章到FB上分享
回覆 使用道具 檢舉
複製專屬你的推廣連結:發至FB與各論壇宣傳:累積點數換GP商品 & 藍鑽
每五點閱率就可以兌換藍鑽積分或遊戲點卡 夢遊推廣文章換GP商品

你需要登入後才可以回覆 登入 | 加入會員

本版積分規則

Copyright (C) 2010-2020 夢遊電玩論壇

廣告合作:請直接聯繫我們,並附上您預刊登位置的預算。  

快速回覆 返回頂端 返回清單