找回密码
 注册
搜索
查看: 3515|回复: 7

MUSH python3脚本安装使用 修正版(请大家帮忙测试)

[复制链接]
门派:古墓派
发表于 2018-8-9 21:23:47 | 显示全部楼层 |阅读模式
本帖最后由 kkndbdra@tj 于 2018-8-10 07:20 编辑

mushclient 是如何与脚本交流的?这里是官网的原话:
How do scripts communicate with MUSHclient?

Scripts use the COM (Component Object Model) technology to send requests to MUSHclient or ask for information (except for Lua, see below). For example, you can use "Note" to tell MUSHclient to put a note in the output window, or "GetInfo" to find out information about the current world (like when it was connected).

Scripts use the "world" COM object to do this - this is available in all script languages. For example:

world.Note "Hello, there"
mush使用的是一个名为“world”的COM组件和脚本语言沟通的,懂COM组件技术的大神帮忙想想办法简化一下脚本语言的安装。



MUSH调用python脚本需要3个条件 :
首先 需要 一个32位python编译器可以将python脚本翻译为可执行代码,
解决方案:去python官网下载一个python 32位 版本,我暂时用的3.6.5 其他老一点的版本应该也可以,大家多试试。
在安装的时候请务必勾选 add python 3.6 to path (表示贮存python的环境变量)  (附件中有安装文件)


                                     ****非常重要****
mushclient 是一个32位的程序。。。32位的程序。。。32位的程序。。。重要的事说三遍!
所以mushclient只能和python编译器的32位版相互通讯。请务必使用32位的python的编译器。


其次 mush要能够能找到调用python解释器的路径。(这里设置了Python的环境变量也没用,还要重新设置一些其他的环境变量,至于为什么会这样我也不是很明白,各位大神可以研究一下简便方法。)
(错误信息为:未注册的类 )
解决方案:去pywin32官网下载一个***32位***的 221版本的exe安装文件 在windows下安装一下,这样在windows的某处就会建立一些指向python所在位置的环境变量。mush就可以找到python的路径了,但是这些变量在哪里我也不知道。(附件中有安装文件)

最后 mush是通过CLSID调用python解释器的。
(错误信息为:。。。。。finding CLSID。。。。。python 这么一串话)
解决方案:在安装完pywin32以后 在你安装python的文件夹里有一个\Lib\site-packages\win32comext\axscript\client\pyscript.py文件
这个文件注册以后 python的CLSID就注册进入注册表了。具体怎么实现的我也不清楚。
大家使用python编辑器,或者命令行运行一下pys 文件夹中的pyscript.py这个文件,将python clsid注册到注册表中。
另外:python3.X的默认存档编码为UTF-8. MSUH好像借调是 windows CMD控制台 所以只能读取GBK格式文本,请大家使用文本编辑器存档的时候之一定要注意存档GBK格式。(不然中文部分会乱码)
  ***************************************************************************************
安装好以后,就可以在mush脚本选项里把LUA换成python使用了。
python 语言的语法和LUA差不多。稍加修改就可以重新编辑。
但是LUA不支持面向对象,python的面向对象的类功能非常强大,而且有很多功能强大的第三方库,(包括C/C++.java的)
可以实现许多大家心中“梦想”的功能。

时间有限,我只写了一句最简单的输出语句:
def output():
    world.note("人生苦短")
    world.note("我用python")

world.note 就是lua中的note  mush把函数全部封装到了python的world模块中。
调用的时候通过world.note() 调用
详细用法请查看mush官网的函数讲解链接。
http://www.gammon.com.au/scripts/doc.php?general=function_list




然后下载 mushcilent 最新版 4.94 -- 该版本可以较好支持python3.x (附件中有安装文件)
4.风神版本的mush也可以尝试一下,原理都是一样的。应该也可以,问题不大 但我没试过。  4.84 和4.94的那个汉化文件包可以通用。
      

          *******关于免安装绿色版脚本环境的搭建******
(本来想把VENV的虚拟环境直接放进MUSHCLIENT的文件夹里,方便不懂编程的玩家使用,但是还是在MUSH调用上卡住了,这些些问题有待大神解决,勉强凑合能用)
我已经打包好了一个名为pys的虚拟环境文件打包放在mushclient494文件夹里。
这个文件夹中包含了python程序运行所需要的最低要求的python.exe(32位,3.6.5版),pywin32等几个基本库。照理说有了这个环境包就不需要安装其他文件,可以直接运行了。
但是还是有2个问题:
第一:若果不安装pywin32的话mush找不到python解释器的位置(估计还是和环境变量有关)
第二:若果不注册pyscript.py的话mush在注册表中找不到python.exe CLSID的问题












本帖子中包含更多资源

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

×

评分

1

查看全部评分

门派:峨嵋派
发表于 2018-8-10 15:30:32 | 显示全部楼层
说了半天,看不懂,问题是这个有什么用?跟现在用的mush有什么多的功能吗?
门派:古墓派
 楼主| 发表于 2018-8-10 15:38:43 | 显示全部楼层
还是有点用的,有些lua的模块不方便实现的功能,python当胶水可以黏合其他语言的模块可以实现。
门派:天龙寺
发表于 2018-8-10 23:22:25 | 显示全部楼层
看的眼镜疼。头大,不明所以
门派:姑苏慕容
发表于 2018-8-11 19:10:55 | 显示全部楼层
号称是现在最热门的语言啊
门派:铁掌帮
发表于 2018-8-11 23:41:26 | 显示全部楼层
做这个的实际效果彩色log有没有啊,一头雾水啊      
门派:古墓派
 楼主| 发表于 2018-8-14 20:19:32 | 显示全部楼层
我编写了图文版教程哈
链接如下:http://www.sjever.net/bbs/forum. ... d=205771&extra=
门派:大轮寺
发表于 2019-9-19 22:05:16 | 显示全部楼层
最新版 也是这样么 ?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-8 06:41 , Processed in 0.037166 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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