搜尋

英雄聯盟

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

《英雄聯盟》:使用AutoHotkey建立滑鼠自動對準敵方英雄的腳本教學

[複製連結]
1
BASA無雙 ( Lv.70 熾天使 ) 發表於 2023-10-10 11:12:13 | 只看該作者 回覆獎勵 |降序瀏覽 |閱讀模式
英雄聯盟》:使用AutoHotkey建立滑鼠自動對準敵方英雄的指令碼教學

你展示如何建立一個簡單的AutoHotkey指令碼,可以自動將滑鼠游標對準最近的敵方英雄。我在1.1.36.02版本的AHK中製作了這個指令碼。你可以在這個連結中下載這個版本:https://sourceforge.net/projects/aut...es/v1.1.36.02/

在下載和安裝AHK後,你需要在你的AHK指令碼中包含類(class) memory。下載連結在這裡:https://github.com/Kalamity/classMemory

下載後,將classMemory.ahk和你的script.ahk放在同一個資料夾中,然後進行如下包含操作:
```
  1. #Include classMemory.ahk
複製代碼
```
現在我們已經準備好了!

ClassMemory對我們非常重要,因為我們要從遊戲記憶體中讀取值。首先,我們要建立一個記憶體對象:
```
  1. LOLprocess := new _ClassMemory("ahk_exe League of Legends.exe", "", hProcessCopy)
複製代碼
```
現在讓我們定義一些對我們重要的偏移(offsets):
```
  1. oViewProjMatrix := 0x3133818
  2. oHeroList := 0x186E1F4
  3. oLocalPlayer := 0x310DEF0
  4. oHudInstance := 0x186E15C
複製代碼
```
我還可以向你展示一些示例,演示在遊戲已經執行階段如何使用ClassMemory從記憶體中讀取值:
```

  1. local_player_summoner_name := lolprocess.readString(lolprocess.BaseAddress + oLocalPlayer, 30, "utf-8", 0x54)
  2. local_player_champion_name := lolprocess.readString(lolprocess.BaseAddress + oLocalPlayer, 20, "utf-8", 0x2B04,0x0)
  3. summoner_name_from_hero_list := lolprocess.readString(lolprocess.BaseAddress + oHeroList, 30, "utf-8", 0x4,0x0, 0x54)
  4. champion_name_from_hero_list := lolprocess.readString(lolprocess.BaseAddress + oHeroList, 20, "utf-8", 0x4,0x0, 0x2B04,0x0)
  5. obj_pos_x_from_hero_list := lolprocess.read(lolprocess.BaseAddress + oHeroList, "UFloat", 0x4,0x0,0x1DC)
  6. obj_pos_y_from_hero_list := lolprocess.read(lolprocess.BaseAddress + oHeroList, "UFloat", 0x4,0x0,0x1E0)
  7. obj_pos_z_from_hero_list := lolprocess.read(lolprocess.BaseAddress + oHeroList, "UFloat", 0x4,0x0,0x1E4)
  8. view_matrix_pos_1 := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x0, "UFloat")
  9. proj_matrix_pos_1 := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x40, "UFloat")
複製代碼
```
現在讓我們定義一些重要的Vector類:
```
  1. Class Vector2
  2. {
  3. __New(x,y)
  4.         {
  5.                 this.x := x
  6.                 this.y := y
  7.         }
  8. }

  9. Class Vector3
  10. {
  11. __New(x,y,z)
  12.         {
  13.                 this.x := x
  14.                 this.y := y
  15.                 this.z := z
  16.         }
  17. }

  18. Class Vector4
  19. {
  20. __New(x,y,z,w)
  21.         {
  22.                 this.x := x
  23.                 this.y := y
  24.                 this.z := z
  25.                 this.w := w
  26.         }
  27. }
複製代碼
```
要建立Vector對象,只需使用以下示例:
```
  1. vector3_obj := new Vector3(1,2,8)
  2. msgbox % vector3_obj.z
複製代碼
```
現在讓我們定義WorldToScreen變數:
```
  1. ;將你自己的遊戲窗口解析度填入這裡,你可以在遊戲設定中找到它。
  2. resolution_width := 1920
  3. resolution_height := 1080
  4. viewProjMatrix := []
  5. viewMatrix := []
  6. projMatrix := []
複製代碼
```
並建立WorldToScreen函數:
```

  1. loadViewMatrixFromMemory()
  2. {
  3. global oViewProjMatrix
  4. global viewMatrix
  5. global lolprocess
  6. viewMatrix[0] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x0, "UFloat")
  7. viewMatrix[1] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x4, "UFloat")
  8. viewMatrix[2] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x8, "UFloat")
  9. viewMatrix[3] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0xC, "UFloat")
  10. viewMatrix[4] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x10, "UFloat")
  11. viewMatrix[5] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x14, "UFloat")
  12. viewMatrix[6] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x18, "UFloat")
  13. viewMatrix[7] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x1C, "UFloat")
  14. viewMatrix[8] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x20, "UFloat")
  15. viewMatrix[9] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x24, "UFloat")
  16. viewMatrix[10] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x28, "UFloat")
  17. viewMatrix[11] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x2C, "UFloat")
  18. viewMatrix[12] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x30, "UFloat")
  19. viewMatrix[13] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x34, "UFloat")
  20. viewMatrix[14] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x38, "UFloat")
  21. viewMatrix[15] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x3C, "UFloat")
  22. }

  23. loadProjMatrixFromMemory()
  24. {
  25. global oViewProjMatrix
  26. global projMatrix
  27. global lolprocess
  28. projMatrix[0] := lolprocess.read((lolprocess.BaseAddress + oViewProjMatrix)+0x40, "UFloat")
  29. projMatrix[1] := lolprocess.read((lolprocess.BaseAddress + o
複製代碼


所有站內附件皆會附上安全掃描報告
請會員查看純淨度百分比後判斷使用



相關檔案須知:
取得檔案前,請先詳細閱讀文章內容
避免不必要錯誤與誤會發生。
也可多參考文章討論樓層內容
了解附件檔案相關討論資訊。









大家正在看啥


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

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

本版積分規則

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

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

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