Python | OpenCV 專案:天堂私服遊戲輔助(二)自動補藥
⚠️ 免責聲明
本文章內容僅供學術研究與電腦視覺技術學習之用途,所有程式碼與技術說明均以教育目的為出發點。
- 本文作者不提供任何形式的輔助程式販售、散佈或商業服務。
- 本文所有範例程式僅限在自行架設的私有伺服器環境中測試,不得用於任何正式營運的線上遊戲伺服器。
- 使用遊戲輔助程式可能違反個別遊戲的使用者條款,並導致帳號封鎖、法律責任等後果,讀者須自行承擔一切相關風險與責任。
- 本文技術內容若被用於任何違法或損害他人利益之行為,作者概不負責。
- 私有伺服器的架設與使用涉及遊戲著作權相關法律問題,讀者應自行評估所在地區的法規,並確認於合法範圍內使用。
📚 前言
在上一篇 (一)主程式 GUI 框架與 HP/MP 血量監控 中,我們建立了 tkinter 骨架,可以即時顯示 HP/MP 比例。
本篇加入 自動補藥 功能:當 HP 或 MP 低於設定閾值時,自動模擬按下補藥熱鍵,並新增設定面板讓使用者在 UI 上調整參數。
系列總覽:
| 篇次 | 主題 |
|---|---|
| 一 | 主程式 GUI 框架與 HP/MP 血量監控 |
| 本篇(二) | 自動補藥 |
| 三 | YOLOv8 怪物偵測整合 |
| 四(最終篇) | 目標優先序選擇 |
🎯 本篇目標
- 建立
auto_potion.py,封裝補藥邏輯與冷卻時間 - 用
PostMessage把WM_KEYDOWN/WM_KEYUP直接送到目標視窗的 hwnd,背景也能按鍵(不搶焦點) - 在 UI 新增:啟用開關、HP/MP 閾值滑桿、F5~F12 熱鍵下拉選單
- Worker Thread 1 整合補藥邏輯,
main.py整體更新
🗂️ 本篇新增檔案
1 | lineage_assistant/ |
本篇沿用第一篇已安裝的
pywin32,不需要額外套件。
💻 自動補藥模組:auto_potion.py
設計重點:
check(hp, mp)由 Worker Thread 1 呼叫,不能操作 tkinter 元件- 使用
PostMessage把WM_KEYDOWN/WM_KEYUP送到目標 hwnd,視窗可在背景;不像pyautogui.press()只會送到有焦點的視窗 - 使用
log_fncallback 把訊息傳回主執行緒的log_q cooldown防止連按,避免瞬間消耗大量藥水
1 | # auto_potion.py |
💻 主程式:main.py(第二篇版本)

圖:整合自動補藥模組的完整主程式,UI 新增閾值滑桿與 F5~F12 熱鍵下拉選單,啟動時連同目標 hwnd 一起傳入 Worker Thread
⚠️ 注意事項
- 按鍵直接 PostMessage 到目標 hwnd:不搶焦點,你可以在別的視窗工作;按鍵只會進指定遊戲視窗。
- DirectInput 遊戲可能不吃 PostMessage:本篇鎖定以
WM_KEYDOWN/WM_KEYUP接收熱鍵的傳統 Win32 遊戲視窗(如天堂 L1J 系列私服);若遊戲採 DirectInput/Raw Input,要改用SendInput並把視窗帶到前景才能生效。 - 冷卻時間
cooldown=1.5秒:防止連按,依藥水生效速度調整。 - 面板設定皆為即時生效:checkbox、HP/MP 閾值滑桿、F5~F12 下拉選單都由
_poll每 200ms 推進AutoPotion,調了就馬上套用。 hwnd例外,是啟動時一次讀取:切換目標視窗要先停止、重新 🎯 選取、再啟動。- 執行緒不會再靜默死掉:
monitor_loop外層try/except/finally把 pywin32 例外吞進 log;_poll偵測到執行緒掛掉會自動把 ▶ / ■ 按鈕切回「啟動」並提示看日誌。
🎯 結語
本篇的自動補藥功能是遊戲輔助的基礎,整個邏輯都在 Worker Thread 1 裡執行,與 UI 完全解耦。
下一篇將加入 (三)YOLOv8 怪物偵測整合,新增 Worker Thread 2 專門負責 YOLO 推論,並在 UI 中嵌入即時偵測預覽視窗。
📖 如在學習過程中遇到疑問,或是想了解更多相關主題,建議回顧一下 Python | OpenCV 系列導讀,掌握完整的章節目錄,方便快速找到你需要的內容。
註:以上參考了
pywin32 GitHub
PostMessage - Win32 API
WM_KEYDOWN - Win32 API
tkinter ttk.Scale