找回密码
 注册
搜索
查看: 2492|回复: 22

用python 全面翻写MUSH LUA 公版机器人(1)基本简介

[复制链接]
门派:古墓派
发表于 2019-6-3 08:53:44 | 显示全部楼层 |阅读模式
本帖最后由 kkndbdra@tj 于 2019-6-3 10:24 编辑

经过楼主反复实测mush使用python脚本只需要三个条件:
1 p安装有python解释器(楼主测试用的python3.7 64位最新版)
2 安装pywin32 模块包                (要安装与python解释器对应的模块包)
3 把win32模块在系统里注册一下,不然python没有办法和mush通讯, 一般python脚本加载出错就是这个原因。
以我自己的路径为例子 C:\MUSHclient494\pysjwin64\venv\Lib\site-packages\win32comext\axscript\client 里面有一个pyscript.py文件
在cmd控制台中用python运行一下这个脚本,或者用文本编辑器run一下都可以。


然后用文本编辑器新建一个python项目即可,楼主在mushclient 中新建了一个pysjwin64文件夹项目:
用文本编辑器pycharm在其中新建一个名称main的主程序文件。mush选脚本文件的时候直接选这个文件即可。
如图所示:

放入一段测试代码:
# coding:GBK
import win32api

import win32con

win32api.MessageBox(win32con.NULL, '我的第一个pywin32窗口!', 'Hello', win32con.MB_OK)
如果python加载成功的话会弹出一个窗口:



证明mush 的python以及com组件可以正常运作,接下来就可以正式编写相关代码了。
先在顶部代码里写入:
# coding:GBK
因为书剑用的是GBK编码,python默认的是utf-8文字编码,如果不在开头声明这一句,python脚本传递给mush的汉字会变成乱码。

先测试一下如何在python中调用MUSH端口常见的几个内置函数,如果使用lua的话可以直接调用note()函数在mush中显示提示信息。
使用python脚本的时候mush将所有mush端的函数都放进world模块的组件中。
所以使用格式变成了   模块名称.函数名称() 的格式,例如:lua中的note() 变成了world.note()

在文本编辑器中(推荐pycharm)写一段测试代码;
# coding:GBK

def pynote(str1):
    world.note(str1)


然后进入游戏--配置界面

将右下角的脚本标识符设置为 / .
然后在mush输入窗口中写入/world.note("大家好,欢迎进入书剑游戏!")
然后再尝试一下/pynote("大家好,欢迎进入书剑游戏!")
你会发现mush中出现了2次同样的文字:"大家好,欢迎进入书剑游戏!"
因为pynote其实就是改写了mush内置note()函数,我们以后经常会用到这些方法去设置我们需要的方法。


那么下一步测试一下如何利用python向mush传入入一个向上走的“N”指令
原理同上 mush 自带一个world.execute()函数,其官方说明如下:
Execute
类型 方法
简介 执行一个命令,就像你在命令窗口中输入它一样

我们登录一个角色 然后在命令窗口中直接调用这个函数让脚本去处理它:
/world.execute("north")
类似的函数还有/world.send() 当然还是有一些区别的大家QQ群文件中下载mush说明文档去查看具体区别。


你会发现人物朝北走了一步,和你直接输入north的效果是一样的。
你还可以尝试输入:/world.execute("say 大家好!")
和你在输入框中直接输入say 大家好! 的效果是一样的。

这样大家初步明白怎么制作一个python 的mush 机器人了吧。
其实就是把你平时用手输入的执行,让mush触发器脚本代替你去判断并且执行即可,和原来的zmud的触发器是一样的。
只不过原来的ZMUD简单指令变成了脚本函数,但是相应的mush python 脚本函数的功能要强大许多。可以做像原来ZMUD做不了的事情。
下一步我们从公版的登录功能开始改写成python的语法。
未完待续


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
门派:古墓派
发表于 2023-6-27 09:59:38 | 显示全部楼层
ssssss@ts 发表于 2023-6-26 19:42
真是好帖啊,可惜后面没有了

mush写的太复杂了,改的人也多,逻辑太复杂
重写是太难了
门派:昆仑派
发表于 2019-6-3 12:35:12 | 显示全部楼层
这个可是个大工程啊  强烈关注
门派:明教
发表于 2019-6-3 12:45:46 | 显示全部楼层
楼主先给我们普及一下用pyhton写的好处是什么?
门派:大轮寺
发表于 2019-6-3 13:22:01 | 显示全部楼层
对大侠的模板如滔滔江水连绵不绝,有如黄河泛滥一发不可收拾
门派:大轮寺
发表于 2019-6-3 13:22:42 | 显示全部楼层
aoxue@tj 发表于 2019-6-3 12:45
楼主先给我们普及一下用pyhton写的好处是什么?

就是懂python的大侠不用学习lua了啊
门派:古墓派
 楼主| 发表于 2019-6-3 16:11:15 | 显示全部楼层
本帖最后由 kkndbdra@tj 于 2019-6-3 16:40 编辑

用Python的优点:
第一:lua的机器人已经比较完善了,但是非常凌乱,我的想法是用python重新整理一下,大家可能都感觉想自己修改一下却无从下手。
主要是把每个功能都按照模块化分开,把函数接口都做好。这样方便于以后修改优化。让不会编程的普通玩家也能自己修改机器人。
第二:然后Lua的模块库比较少,python有很多有一些关于网络的,数据库的,尤其是深度学习识别图片的第三方模块都可以通过import直接使用无缝对接。
方便以后扩展其他更复杂的功能。
门派:明教
发表于 2019-6-3 16:36:48 | 显示全部楼层
kkndbdra@tj 发表于 2019-6-3 16:11
用Python的优点:
第一:lua的机器人已经比较完善了,但是非常凌乱,我的想法是用python重新整理一下,大 ...

图片识别这个很期待,希望能搞出来!
门派:铁掌帮
发表于 2019-6-3 18:07:32 | 显示全部楼层
aoxue@tj 发表于 2019-6-3 12:45
楼主先给我们普及一下用pyhton写的好处是什么?

对呀,我也想知道这个关键问题
门派:铁掌帮
发表于 2019-6-3 19:33:35 | 显示全部楼层
kkfromch@tj 发表于 2019-6-3 16:36
图片识别这个很期待,希望能搞出来!

这个搞了,难道说就可以自动LL了?
门派:昆仑派
发表于 2019-6-3 19:46:49 | 显示全部楼层
自动LL 啊  这可是超牛的事情了      
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|书剑永恒MUD ( 闽ICP备14012032号|闽公网安备 35050202000162号 )

GMT+8, 2025-5-1 09:11 , Processed in 0.030074 second(s), 29 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表