怎麼用python寫簡單的遊戲指令碼?

mug發表於2021-09-11

想必大家都喜歡玩遊戲吧,現在遊戲市場是非常火爆和可觀的,不少程式設計師都紛紛湧入遊戲公司,我們學習python其實也可以作為寫遊戲指令碼的,不清楚的小夥伴可以來看下了哦~

以楚留香的電腦版為例,記錄指令碼的編寫之路吧。

怎麼用python寫簡單的遊戲指令碼?

因為主要遊戲都在windows跑,沒什麼好說的,第一步應該是獲取視窗控制程式碼。

在按鍵精靈幫助下,我們知道了遊戲視窗控制程式碼的類名和名字分別為"Messiah_Game",“楚留香”。

利用win32gui的函式,獲取到視窗控制程式碼,並稍微調整一下我們理想的大小。

import win32con
import win32gui
import win32api
 
hwnd=win32gui.FindWindowEx(0,0,"Messiah_Game","楚留香")
win32gui.SetForegroundWindow (hwnd)
 
if(win32gui.IsIconic(hwnd)):
 win32gui.ShowWindow(hwnd, win32con.SW_RESTORE)
win32gui.SetWindowPos(hwnd, win32con.HWND_TOPMOST, 300,200,1200,800,win32con.SWP_SHOWWINDOW)

這樣就完成對視窗的啟用和尺寸,位置設定了。

接下來我們先做一個模組的功能,比如自動擺攤購買,因為端遊模式和手遊模式擺攤位置不同,我們首先確定為端遊模式的座標。

自動購買第一步,首先是滑鼠能移動到‘’藏寶閣‘’圖示上

然後我們關注我們需要搶購的東西,再拿他與我們需求的價格做對比,如果小於我們理想的價格,則讓指令碼自動購買。

所以模擬鍵盤滑鼠的操作和價格識別就顯得尤為重要。以下為關注介面,每點選一次關注就會重新整理,似乎有點選事件間隔限制。

怎麼用python寫簡單的遊戲指令碼?

'''我們希望指令碼是在端遊模式跑起來的,方便測試,先預設一個Mode為端遊模式,後期可以設定一個檢查模式功能'''
 Mode='端遊模式'
 if(Mode=='端遊模式'):
 win32api.SetCursorPos([557, 584])
 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP | win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)


啟動指令碼後,發現滑鼠雖然移動成功,但是單擊命令似乎只能在遊戲之外的視窗才會執行?

為什麼呢?

這是由於遊戲遮蔽了系統API提供的模擬輸入,包括鍵盤滑鼠的模擬操作都不會生效。

看起來事情並不簡單。

那怎麼辦?如果你學習也迷茫。可以去小編的Python交流.裙 :一久武其而而流一思(數字的諧音)轉換下可以找到了,裡面有最新Python教程專案

別急,我們可以模擬鍵盤滑鼠驅動的硬體操作。

以下理一下我們思路

目的:我們希望模擬鍵盤和滑鼠的操作。

可以使用方式或庫:

pyinput

autopy

win32api

winio

vb類似於按鍵精靈的模式

前面三種已經證明不可行,因為都是api層面的操作,一定都會被遊戲系統遮蔽。關於第四種可以實現IO驅動的模擬介紹winio但是進入github檢視說明文件發現:也就是說,winio的python介面還不支援win10,其他語言倒是可以支援,但是我們的程式碼不就前功盡棄了嗎?因此聯想到可以使用vb的按鍵精靈模式來實現模擬輸入。在這裡我們並不是要推翻整個程式碼重寫,更不是把語言換成vbscript,我們可以透過呼叫按鍵精靈某些外掛實現模擬的鍵盤滑鼠輸入。今天就分析到這裡,下一篇我們來講講怎麼使用python呼叫vb指令碼實現鍵盤滑鼠的dx遊戲模擬輸入吧。

如果還想知道更多的python知識,可以到進行查詢。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/506/viewspace-2832369/,如需轉載,請註明出處,否則將追究法律責任。

相關文章