跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组
皮肤
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Cerulean)
  • 不使用皮肤
折叠
品牌标识

PyMUD官方论坛

  1. 主页
  2. 版块
  3. 公告与通知
  4. PyMUD 0.22.2 正式版发布

PyMUD 0.22.2 正式版发布

已定时 已固定 已锁定 已移动 公告与通知
5 帖子 2 发布者 257 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • N 离线
    N 离线
    newstart
    写于 最后由 newstart 编辑
    #1

    更新方式

    • 请使用 pip install --upgrade pymud 安装更新
    • 由于刚发布,国内镜像站点不一定完成镜像,可以通过 -i https://pypi.org/simple 指定使用pypi官方源

    更新内容

    0.22.2 (2026-01-11)

    • 功能新增: 可以通过.cfg文件指定 "auto_chars" 来定义启动pymud时自动打开的会话。
    • 问题修复: 修复GMCPTrigger类型enabled属性不生效问题。
    • 问题修复: 原本enabled的定时器,修复了在会话断开重连后不会生效的问题。
    • 问题修复: 修复添加/删除系统时钟回调时,可能会导致的异常问题。
    • 问题修复: 修复在增加系统时钟回调时,如果回调函数代码错误产生异常,会导致系统时钟停顿的问题。
    • 功能优化: 优化了SessionBuffer的实现方式,改为环形缓冲+缓存缓冲双缓冲形式,减少运行中内存分配和清除的次数。
    • 功能新增: #var增加了对嵌套变量的显示支持,可以支持list、dict等嵌套类型的变量,详细请查看论坛信息。
    • 功能新增: 增加了#mem/#memory命令以支持内存监控,增加了启动时的-m参数在启动时直接打开内存监控,详细请#help memory或者查看论坛信息。
    • 其他变更: F1快捷键指向的帮助网站修改为官方网站的文档页面 https://www.pymud.cn/doc/

    pymud.cfg文件中配置auto_chars参考用法

    auto_chars是用来控制pymud在运行时自动加载某些角色的。一种使用的场景是,远程挂机的服务器重启后,自动运行pymud,然后自动登录某几个角色。其中,自动运行pymud需要使用操作系统实现,比如使用 .bashrc 指定。

    下面一个pymud.cfg文件示例可以自动登录char1, char3两个角色,需要注意两点:

    • 一是自动登录角色需要 pymud.cfg 中配置菜单中包含这些角色。如下例子在chars中定义了char1,char2,char3三个角色,才可以自动加载char1, char3。

    • 二是自动登录autologin必须要配置好,确保可以自动输入用户名密码。 比如北侠应该配置为 "{0};{1}"。

      {
        "sessions": {
          "pkuxkx": {
            "host": "mud.pkuxkx.net",
            "port": "8081",
            "encoding": "utf8",
            "autologin": "{0};{1}",
            "default_script": ["my_entry"],
            "chars": {
              "char1", ["myid1", "mypass1"],
              "char2", ["myid2", "mypass2"],
              "char3", ["myid3", "mypass3"]
            }
          }
        },
        "auto_chars": ["pkuxkx.char1", "pkuxkx.char3"]
      }
      

    内存监控参考用法

    要使用内存监控必须先启用监控。可以通过在运行pymud时指定-m参数,即 "pymud -m" (使用uv时可以用 "uv run pymud -m") 在启动时刻即启用内存监控。也可以在会话中使用 #mem on 命令启动监控。只有在启用后的内存变化才会被系统所捕获。在运行时通过 -m 启动可以捕获更为完整的内存初始情况,但由于内存监控具有一定的性能开销,因此要平衡好监控需求和实际运行。
    当内存监控启用后,可以通过 #mem 命令查看监控到的当前内存的使用情况,可以使用 #mem diff 命令查看此时与上一次的内存使用的变化情况(仅显示top5)。
    内存监控的总数可以按照文件统计,也可以按照代码行位置统计,当未配置时,默认按照文件统计。可以通过 #mem lineno / #mem filename 切换两种统计方式。
    当不需要使用内存监控的时候,可以使用 #mem off 来关闭内存监控。

    以下是几种不同方式下, #mem 和 #mem diff的显示示例:

    #mem命令按filename的显示,从左到右分别为,内存分配块数,占用的内存,文件是属于库(lib)还是自己的脚本(app),文件名的相对路径。
    〔MEMORY〕内存占用最大的5处为:
    〔MEMORY〕   207  0.2 MiB [lib] layout/mouse_handlers.py
    〔MEMORY〕  3453  0.2 MiB [lib] layout/controls.py
    〔MEMORY〕   496  0.2 MiB [lib] layout/screen.py
    〔MEMORY〕  1558  0.1 MiB [lib] layout/containers.py
    〔MEMORY〕  1553  0.1 MiB [lib] pymud/extras.py
    
    #mem diff命令按filename的显示,从左到右的定义与#mem一致,括号中的内容是表示与上一次相比的变化量。
    〔MEMORY〕与上次内存占用对比,变化最大的5处为:
    〔MEMORY〕  3233( +1632)  1.4MiB(  +0.6MiB) [lib] layout/screen.py
    〔MEMORY〕  8361( +3497)  0.7MiB(  +0.3MiB) [lib] pymud/extras.py
    〔MEMORY〕  4735( +1560)  0.6MiB(  +0.2MiB) [lib] layout/containers.py
    〔MEMORY〕  1130(  +753)  0.1MiB(  +0.0MiB) [lib] widgets/menus.py
    〔MEMORY〕   667(  +535)  0.1MiB(  +0.0MiB) [app] script/map/map.py
    
    执行#mem lineno之后,#mem按lineno显示内容,从左到右的定义与前面一致,最末尾增加了行号
    〔MEMORY〕内存占用最大的5处为: 
    〔MEMORY〕   361  1.6 MiB [lib] layout/screen.py, Line 305
    〔MEMORY〕     2  1.3 MiB [lib] prompt_toolkit/cache.py, Line 101
    〔MEMORY〕    67  0.3 MiB [lib] layout/containers.py, Line 2045
    〔MEMORY〕  1501  0.2 MiB [lib] pymud/extras.py, Line 827
    〔MEMORY〕  3865  0.2 MiB [lib] pymud/extras.py, Line 209
    
    #mem diff命令按lineno显示
    〔MEMORY〕与上次内存占用对比,变化最大的5处为:
    〔MEMORY〕   872(  +597)  3.8MiB(  +2.6MiB) [lib] layout/screen.py, Line 305
    〔MEMORY〕     2(    +1)  1.3MiB(  +1.3MiB) [lib] prompt_toolkit/cache.py, Line 101
    〔MEMORY〕 15167(+11210)  1.0MiB(  +0.8MiB) [lib] layout/containers.py, Line 2075
    〔MEMORY〕   140(   +96)  0.6MiB(  +0.4MiB) [lib] layout/containers.py, Line 2045
    〔MEMORY〕  3410( +1890)  0.3MiB(  +0.2MiB) [lib] layout/screen.py, Line 167
    

    #var对嵌套变量的用法

    假设我有一个名为skills的变量,用于保存自己的各项武功,结构是一个dict,内部的每一个key为武功的id,其value为一个tuple,分别表示了当前技能等级、最大技能等级、技能中文名,那么可以使用#var的不同方式及其返回值如下:

    # 假设skills值为如下的复合对象,#var skills会直接会显示该值
    
    'skills' = {
                divination      : (19.0, 1093.0, '占卜之术'),
                evocation       : (14.0, 1093.0, '招魂术'),
                dodge           : (1087.0, 1093.0, '基本轻功'),
                finger          : (1087.0, 1093.0, '基本指法'),
                force           : (981.01, 1093.0, '基本内功'),
                parry           : (1087.0, 1093.0, '基本招架'),
                sword           : (1061.0, 1077.0, '基本剑法'),
                unarmed         : (1087.0, 1093.0, '基本拳脚'),
                beiming-shengong: (980.74, 1093.0, '北冥神功'),
                kurong-changong : (980.0, 1093.0, '枯荣禅功'),
                longxiang-hubu  : (1087.0, 1093.0, '龙骧虎步'),
               }
    
    # 如果使用 #var skills[force],或者 #var skills["force"] (有无引号不影响),则显示为
    
           skills[force] = (981.01, 1093.0, '基本内功')
    
    # 还可以继续嵌套到下一级,比如仅取force的当前等级,可以 #var skills[force][0],则显示为
    
          'skills[force][0]' = 981.01              
    
    1 条回复 最后回复
    0
    • N newstart 在 中固定了该主题
    • N 离线
      N 离线
      newstart
      写于 最后由 编辑
      #2

      0.22.2版已知一个小bug:
      使用Python 3.12以下的版本运行时,会报 import Buffer 错误,该错误是由于代码编辑器AI自动添加了一行不需要的引用,而该引用的对象在3.12版才被添加到Python官方库文件中,该引入我没发现,导致出现问题。
      临时解决措施为:
      手动将pymud库中的extras.py的第3行内容删除,该行为:
      from collections.abc import Buffer
      下一版本更新将解决该问题。

      1 条回复 最后回复
      0
      • N newstart 取消固定该主题于
      • T 离线
        T 离线
        terry
        写于 最后由 编辑
        #3

        我按照示例设置自动登录,不成功呢~~

        N 1 条回复 最后回复
        0
        • T terry

          我按照示例设置自动登录,不成功呢~~

          N 离线
          N 离线
          newstart
          写于 最后由 编辑
          #4

          @terry 贴出来你的pymud.cfg中的session配置和auto_chars配置内容看看,注意隐去你的具体id和pass。

          1 条回复 最后回复
          0
          • T 离线
            T 离线
            terry
            写于 最后由 编辑
            #5

            不知道为什么现在又可以了
            这个功能挺好~~~~

            1 条回复 最后回复
            0
            回复
            • 在新帖中回复
            登录后回复
            • 从旧到新
            • 从新到旧
            • 最多赞同


            • 登录

            • 没有帐号? 注册

            • 登录或注册以进行搜索。
            Powered by NodeBB Contributors
            • 第一个帖子
              最后一个帖子
            0
            • 版块
            • 最新
            • 标签
            • 热门
            • 世界
            • 用户
            • 群组