北大侠客行MUD论坛

 找回密码
 注册
搜索
热搜: 新手 wiki 升级
查看: 3002|回复: 3

mush脚本使用python3.x的总结

[复制链接]
发表于 2021-1-20 23:31:51 | 显示全部楼层 |阅读模式
因为最近在学习python就想着一边玩一边学习python,但是mush上使用python总是各种报错,我也是翻了很多论坛终于有一个比较系统的解决各个问题的答案,分享过来给大家看下,感兴趣的可以自己试一下。
以下为引用原文:
本帖最后由 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 (附件中有安装文件)
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2021-1-21 09:48:41 | 显示全部楼层
加油
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2021-1-21 09:48:54 | 显示全部楼层
python坑挺多的
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
发表于 2022-9-30 12:55:05 | 显示全部楼层

请教大侠,脚本自动变no active是怎么回事啊?
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|北大侠客行MUD ( 京ICP备16065414号-1 )

GMT+8, 2024-3-29 01:06 PM , Processed in 0.013968 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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