kulic 发表于 2024-2-29 17:15:40

MUSH轉PYMUD分享

本帖最后由 kulic 于 2024-3-1 11:50 AM 编辑

大家好,我是古利斯,因為種種原因想把bot轉到手機上跑,
幾年前上網搜過基於python的mud client,都是斷更多年的老代碼,
最近本想找來改一改,看能不能跑起來,但卻驚喜的找到了PYMUD!也找到了這裡。

由於我本來是MUSHclient的老用戶,所以希望把bot轉過來直接用。
而PYMUD本身沒有trigger的GUI管理介面,
於是我把MUSH的數據從MCL檔提取,轉入SQLite3,
再寫一些嫁接MUSH功能到PYMUD的function,
這樣就能有GUI管理介面了,又能盡可能最少改動下跑起來XD

簡單列一下適配改動:

[*]創建MCL到SQLite3的數據提取導入
[*]讀取數據庫轉譯寫入PYMUD的alias,trigger等
[*]用數據庫取代var的存取
[*]改寫match類,把code和script混合在onSuccess執行,alias,trigger,timer不再有simple之分
[*]加入原碼執行的send2script選項
[*]timer加入atTime時鐘觸發
[*]改進#開頭的alias也能觸發
[*]改進alias後綴字串自動成為%1等
[*]加入enableID,用id啟用禁用trigger等
[*]加入class world,嫁接world.常用功能

已知問題:
1 為了精確enableID啟用,把id設成alias,trigger,timer內不可重複,
所以在建立數據庫時可能會遇到sqlite3.IntegrityError: ID already exists in xxx
修改MCL內重複的id後,刪db3,再次執行mychar.py
2 class world嫁接功能並不全面,有需要的自行添加
3 可能會遇到python2轉到3的代碼問題,需小改寫,或用2to3自動轉
4 無法多開,因用global打通舊代碼,多開會數據錯亂
暫時只好多開PYMUD

使用指南:
1 打開mychar.py修改mcl檔名和文字編碼,想建立的數據庫檔名
2 單獨執行python3 mychar.py,會自動創建db3數據庫
3 打開pymud.py(在python site-packages裡)修改from .session import Session為from mychar import mySession as Session
4 跟pymud教學修改settings或創建pymud.cfg加入新會話,default_script指定為mychar
5 打開mychar.py在最下面加入自己的bot script
6 在mychar.py目録下執行python3 -m pymud
7 載入會話即可自動從數據庫載入bot

注意事項:
1 只對MUSH python的用家兼容
2 自己以前寫的bot script不要放在class Configuration內
3 bot的所有觸發參數均需在數據庫修改
PYMUD中對bot修改只是臨時性的
變量除外,變量為實時修改數據庫

以上是基於PYMUD 0.18.3的改動
測試環境:
deepin 20.9 + python 3.12.1
GUI數據庫軟件DB browser for SQLite
android 11 + termux 0.118.0 + python 3.11.2

下附代碼抛磚引玉,期待PYMUD變得越來越好,越來越多人用,
感謝newstart的貢獻!
页: [1]
查看完整版本: MUSH轉PYMUD分享