為什麼這篇遊戲外掛製作教學鄉民發文收入到精華區:因為在遊戲外掛製作教學這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者yoco315 (眠月)看板Python標題[閒聊] 用 Python 寫外掛..時間Sun J...
講一下我當初為什麼會接觸 Python 的原因 XD
之前我在玩一個線上遊戲,那個遊戲外掛抓很緊,都沒有外掛,
我想說我來寫一個當作練功順便自己用 XD 然後我就真的動手開始寫了。
用 Win32 API 的 ReadMemory 跟 SendMessage 等方法去取得遊戲的資料跟送出訊息。
(期間我也試過抓封包等方法想要做好一點,不過實在解密解不開 XD)
但是日子久了就發現要改外掛的行為好麻煩,每次都要重新編譯,
但是腳本這種東西測試跟修改其實很吃重,真正核心的功能都是不動了,
這個時候明白那些支援腳本能力的外掛為什麼會紅了,因為就是修改很方便,
所以我就想說自己設計一個 script language 來用,也真的動手下去作了。
但是實做到一半就發現這是個很吃重的工作,
單純跑腳本其實還好,如果我想要顧到執行效能跟語法彈性的話,實在很困難。
過沒多久我就放棄這個蠢主意。
後來突然明白我應該是去找一個現成的 script language 來用,
然後自己擴充這個 script language 的底層功能,
我第一個選的是語言是 Forth,因為這是我唯一會的 script 語言,
而且 Forth 的特色之一就是實做容易,所以我就真的去實做了。
(這個人講到跟打電動有關的東西,執行力真是特強悍 -_-)
很認真的看了 Forth 的實做經典文章,然後動手,發現其實事情也不是這麼簡單,
果然該文章的第一段很中肯:
「大家都聽說過 Forth 的實做很簡單,但是細節上到底怎麼作?
卻不是這麼清楚,這篇文章就是講清楚這些東西。」
當然這個我是實做的出來,但是還是想要找個更簡單的方法,
我去 survey 了一下 script language 的相關資訊,
Perl,Lua,Python 都看過了,最後選了 Python,
因為:
1. Perl 我看不懂 XD
2. Lua 好像 C
3. Python 看起來簡單明瞭,主要是那個中文的 tutorial 實在很好上手
然後就選了 Python,也開始實做了。
一邊看 Extension/Embeded 的文件,一邊實做,簡單也不太簡單,
但是一想到一旦完成以後,我可以用 Python 簡單的語法來寫腳本就覺得很爽,
結果等我 Extension 摸的差不多以後,我遊戲也沒玩了 -_-
之後 Python 就放了一年 XD
日前因為非本科系的同學在程式需要幫助,我又突然想到 Python 超簡單,
應該是非常適合不是資訊背景的人來學習,我就推薦他來學(效果是非常好),
然後自己也重新開始學習真的用 Python 來寫東西,唉呀真好用,
然後突然想到 Boost.Python 這個 C++ - Python cross language lib,
先前摸的時候沒有摸懂,那現在再來一次好了。
既然要寫,那我就拿當初要對付的遊戲來試看看 XD
那個遊戲現在也有私服了,我找了一個私服開了帳號,一邊玩一邊寫一邊測一邊改,
這次果真是非常快速的,
不到一個禮拜我就利用 Boost.Python 把一個外掛的核心功能包好,
然後把大部分的程式碼都用 Python 架好,
用 C++ 的部份都是 OS dependent 或是對效率非常要求的地方,
剩下的幾乎都是 Python 來完成。
到現在總共三個禮拜多了,
除了第一個禮拜有用到 C++,之後都是 Python,完全沒有碰到 C++ 的部份,
腳本的進度也非常快速,一下就做到我以前作不到的複雜度,
再經過一個禮拜的校調,穩定度已經非常不錯,連續 24 小時都很 OK,
吸哩呼嚕的也掛了一堆虛擬貨幣,現在已經是大財主了 -____-
這個私服外掛抓的跟官服一樣緊,
不過因為是自己寫的外掛,然後用 Python 也能輕鬆做到自由度很高,
就可以寫的很像是真人在玩,到現在都沒有被封帳號。
我在想我拿去官服應該也可以打一些虛擬貨幣來賣錢吧 XD
不過志不在此,算了,單純享受寫程式的樂趣 ^O^
--
To iterate is human, to recurse is divine.
遞迴只應天上有, 凡人該當用迴圈. L. Peter Deutsch
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.114.78.40