PYMUD 帮助文档¶
有关链接¶
QQ交流群: 554672580
GitHub地址: https://github.com/crapex/pymud
PyPi地址: https://pypi.org/project/pymud
北侠wiki地址: https://www.pkuxkx.net/wiki/tools/pymud
北侠地址: https://www.pkuxkx.net/
写在最前面的话¶
最早想要自己写MUD客户端的念头,还是在几年前。但前几年事情太多,人太忙,我记得自20年疫情之后,到今年年初就没有再登陆过北侠了。 23年春节之后空闲一些,于2023年2月19日重启MUD客户端的计划,2023年5月29日形成第一个发布版(0.05b),2023年12月5日发布首个支持 pip安装的package版本(0.15),目前发布pip安装的最新版为0.19.1。
在自己写客户端之前,我主要用过zmud和mushclient两个客户端,北大侠客行一直是用mushclient(玩的那会儿还没有mudlet)。 我认为mushclient是一个功能非常强大的客户端,唯一缺点是不支持跨平台。由于工作原因,上班的地方不能上网,手机玩的话, 确实没有特别适合的跨平台客户端(tintint–倒是支持,但一直不想重学然后重写我在mushclient里的所有python脚本), 加上我是一个程序爱好者,所以决定自己干起,正好在游戏之中学习了。
因为我要综合平衡工作、生活、写代码、当然还有自己玩,所以整个更新节奏不会很快,但我认为我会一直更新下去的。 感谢北大侠客行巫师团队的努力,北侠吸引我玩的动力,也是我不断更新完善客户端的动力!
特点¶
原生纯Python开发,除 prompt-toolkit 及其依赖库(wcwidth, pygments, pyperclip)外,不需要其他第三方库支持
使用原生asyncio库进行网络和事务处理,支持async/await语法的原生异步操作(PYMUD最大特色)。原生异步意味着可以支持很多其他异步库,例如可以使用aiohttp来进行网络页面访问而不产生阻塞等等:)
基于控制台的全屏UI界面设计(无需图形环境,如linux下的X环境)。同时支持鼠标操作(可触摸设备上支持触摸屏操作)
支持分屏显示,在数据快速滚动的时候,上半屏保持不动,以确保不错过信息
解决了99%情况下,北大侠客行中文对不齐,也就是看不清字符画的问题(因为我没有走遍所有地方,不敢保证100%)
真正的支持多session会话,支持命令和鼠标切换会话
原生支持多种服务器端编码方式,不论是GBK、BIG5、还是UTF-8
支持NWAS、MTTS协商,支持GMCP、MSDP、MSSP协议。暂不支持MXP
一次脚本开发,多平台运行。Windows, Linux, MacOS, Android(基于termux), iOS(基于iSH)。可部署在docker和云端,只要能在该平台上运行Python,就可以运行PYMUD客户端
脚本所有语法均采用Python原生语法,因此你只要会用Python,就可以自己写脚本,免去了再去学习lua、熟悉各类APP的使用的难处
全开源代码,因此脚本也可以很方便的使用visual studio code等工具进行调试,可以设置断点、查看变量等
Python拥有极为强大的文字处理能力,用于处理文本的MUD最为合适
Python拥有极为丰富的第三方库,能支持的第三方库,就能在PYMUD中支持
我自己还在玩,所以本客户端会持续进行更新:)
美化对齐的字符画
滚动时自动分屏
- 1 需求、安装与运行
- 2 界面和操作
- 3 应用配置及本地化
- 4 系统命令
#action
#ali
#alias
#all
#clear
#cls
#close
#command
#con
#connect
#cmd
#error
#exit
#gag
#global
#gmcp
#help
#ig
#ignore
#load
#mess
#message
#mods
#modules
#num
#plugins
#py
#reload
#replace
#reset
#save
#session
#t+
#t-
#task
#test
#ti
#timer
#tri
#trigger
#unload
#var
#variable
#wa
#wait
#warning
#info
- 5 快捷键
- 6 脚本
- 7 插件
- 8 类参考 class references
PyMudApp
PyMudApp.act_about()
PyMudApp.act_autoreconnect()
PyMudApp.act_clearsession()
PyMudApp.act_close_session()
PyMudApp.act_connect()
PyMudApp.act_copy()
PyMudApp.act_copyraw()
PyMudApp.act_discon()
PyMudApp.act_echoinput()
PyMudApp.act_exit()
PyMudApp.act_new()
PyMudApp.act_nosplit()
PyMudApp.act_reload()
PyMudApp.activate_session()
PyMudApp.btn_title_clicked()
PyMudApp.change_session()
PyMudApp.close_session()
PyMudApp.complete_autosuggest()
PyMudApp.copy()
PyMudApp.copy_selection()
PyMudApp.create_session()
PyMudApp.create_world_menus()
PyMudApp.custom_key_press()
PyMudApp.del_globals()
PyMudApp.enter_pressed()
PyMudApp.get_frame_title()
PyMudApp.get_globals()
PyMudApp.get_height()
PyMudApp.get_input_prompt()
PyMudApp.get_statusbar_right_text()
PyMudApp.get_statusbar_text()
PyMudApp.get_statuswindow_text()
PyMudApp.get_width()
PyMudApp.globals
PyMudApp.handle_session()
PyMudApp.hide_history()
PyMudApp.initUI()
PyMudApp.load_plugins()
PyMudApp.page_down()
PyMudApp.page_up()
PyMudApp.plugins
PyMudApp.reload_plugin()
PyMudApp.run()
PyMudApp.run_async()
PyMudApp.scroll()
PyMudApp.set_globals()
PyMudApp.set_status()
PyMudApp.show_dialog()
PyMudApp.show_dialog_as_float()
PyMudApp.show_message()
PyMudApp.toggle_mousesupport()
Session
Session.addAlias()
Session.addAliases()
Session.addCommand()
Session.addCommands()
Session.addGMCP()
Session.addGMCPs()
Session.addTimer()
Session.addTimers()
Session.addTrigger()
Session.addTriggers()
Session.alis
Session.clean()
Session.clear_half()
Session.cmds
Session.connect()
Session.connected
Session.create_task()
Session.delAlias()
Session.delAliases()
Session.delCommand()
Session.delCommands()
Session.delGMCP()
Session.delGMCPs()
Session.delGlobal()
Session.delTimer()
Session.delTimers()
Session.delTrigger()
Session.delTriggers()
Session.delVariable()
Session.disconnect()
Session.duration
Session.enableGroup()
Session.error()
Session.event_connected
Session.event_disconnected
Session.exec()
Session.exec_async()
Session.exec_code()
Session.exec_code_async()
Session.exec_command()
Session.exec_command_after()
Session.exec_command_async()
Session.exec_text()
Session.exec_text_async()
Session.feed_data()
Session.feed_eof()
Session.feed_gmcp()
Session.feed_msdp()
Session.feed_mssp()
Session.getGlobal()
Session.getPlainText()
Session.getUniqueID()
Session.getUniqueNumber()
Session.getVariable()
Session.getVariables()
Session.get_status()
Session.globals
Session.gmcp
Session.go_ahead()
Session.handle_alias()
Session.handle_all()
Session.handle_clear()
Session.handle_close()
Session.handle_command()
Session.handle_connect()
Session.handle_error()
Session.handle_exit()
Session.handle_gag()
Session.handle_global()
Session.handle_gmcp()
Session.handle_help()
Session.handle_ignore()
Session.handle_info()
Session.handle_load()
Session.handle_message()
Session.handle_modules()
Session.handle_num()
Session.handle_plugins()
Session.handle_py()
Session.handle_reload()
Session.handle_repeat()
Session.handle_replace()
Session.handle_reset()
Session.handle_save()
Session.handle_task()
Session.handle_test()
Session.handle_timer()
Session.handle_trigger()
Session.handle_unload()
Session.handle_variable()
Session.handle_wait()
Session.handle_warning()
Session.info()
Session.initialize()
Session.load_module()
Session.modules
Session.onConnected()
Session.onDisconnected()
Session.open()
Session.plugins
Session.reconnect()
Session.reload_module()
Session.remove_task()
Session.replace()
Session.reset()
Session.setGlobal()
Session.setVariable()
Session.setVariables()
Session.set_exception()
Session.status_maker
Session.timers
Session.tris
Session.unload_module()
Session.updateVariables()
Session.vars
Session.warning()
Session.write()
Session.write_eof()
Session.writeline()
Session.writetobuffer()
CodeBlock
BaseObject
MatchObject
Alias
SimpleAlias
Trigger
SimpleTrigger
GMCPTrigger
Timer
SimpleTimer
Command
SimpleCommand
DotDict
Plugin
- 附录: 更新历史
- 0.15.8 (2023-12-05)
- 0.16.1 (2023-12-11)
- 0.16.1.post1 (2023-12-12)
- 0.16.1.post2 (2023-12-12)
- 0.16.2a1 (2023-12-18)
- 0.16.2 (2023-12-19)
- 0.17.0a1 (2023-12-20)
- 0.17.0b1 (2023-12-23)
- 0.17.0 (2023-12-24)
- 0.17.1 (2023-12-27)
- 0.17.1post1 (2023-12-27)
- 0.17.2 (2023-12-28)
- 0.17.2post1 (2023-12-28)
- 0.17.2post2 (2023-12-28)
- 0.17.2post4 (2023-12-29)
- 0.17.3 (2024-01-02)
- 0.17.4 (2024-01-08)
- 0.18.0b1 (2024-01-21)
- 0.18.0 (2024-01-24)
- 0.18.1 (2024-02-05)
- 0.18.2 (2024-02-06)
- 0.18.3 (2024-02-07)
- 0.18.4 (2024-02-19)
- 0.18.4post1 (2024-02-19)
- 0.18.4post2 (2024-02-20)
- 0.18.4post4 (2024-02-23)
- 0.19.0 (2024-03-01)
- 0.19.1 (2024-03-06)