跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
  • 世界
  • 用户
  • 群组
皮肤
  • 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. PyMUD讨论区
  4. 如何加载不同模块(.py)?

如何加载不同模块(.py)?

已定时 已固定 已锁定 已移动 PyMUD讨论区
12 帖子 3 发布者 69 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • T 离线
    T 离线
    terry
    编写于 最后由 编辑
    #3

    太好了,今天就实践这些代码

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

      可否这样优化结构?
      根目录下只放pymud.cfg。子目录放不同的mud游戏的文件夹,比如xkx和thu_xyj,然后其对应目录中放一个入口的py文件,比如xkx_entry.py。
      但我不明白main.py还可以放什么代码

      |-----pymud.cfg # 配置文件,不同的游戏设置对应的default_script
      |-----xkx # 存放所有xkx所有相关的脚本
              |----- __init__.py # 指示 xkx 这个目录是一个 package。
              |----- xkx_entry.py # xkx脚本入口
              |----- main.py # 不知道需要放哪些通用的配置?
              |----- triggers/
                      |----- __init__.py # 空文件,指示为package
                      |----- common_triggers.py # 通用trigger
              |----- commands/
                      |----- __init__.py # 空文件,指示为package
                      |----- fight.py # fight 模块
      |-----thu_xyj # 存放所有xkx所有相关的脚本, 与xkx类似
              |----- __init__.py # 指示这个目录是一个 package。
              |----- thu_entry.py # thu_xyj脚本入口, 其他文件略
      |-----utils # 存放通用的方法,比如中文数字转换为阿拉伯数字的方法
              |----- __init__.py # 指示 这个目录是一个 package。
              |----- utils.py # thu_xyj脚本入口, 其他文件略

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

        你可以试试看,我不太确定行不行,main.py不知道放什么的话,不用也没关系

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

          初步试验了下,是可以的

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

            最终的xkx_entry.py文件

            import sys
            import os
            from pymud import IConfig, Session
            
            class EntryConfig(IConfig):
                def __init__(self, session: Session, *args, **kwargs):
                    reload = kwargs.get("reload", False)    # 处理参数里的reload, 用于支持 #reload
                    self.session = session
            
                    modules = list()
                    root_dir = os.path.dirname(__file__)        # 获取当前文件所在的目录    
                    root_folder_name = os.path.basename(root_dir) # 获取当前文件所在的目录名
            
                    if os.path.exists(root_dir):                   
                        for item in os.listdir(root_dir):   #优先加载根目录.py文件,并排除 __init__.py
                            if (not os.path.isdir(os.path.join(root_dir,item))) and item.endswith(".py") and (not item.startswith("__")) and (not item.endswith("entry.py")):
                                modules.append(f"{root_folder_name}.{item[:-3]}")
                        for item in os.listdir(root_dir):     #二次循环,加载子文件夹下的.py文件,并排除 __init__.py
                            if os.path.isdir(os.path.join(root_dir,item)) and (not item.startswith("__")):
                                for file in os.listdir(os.path.join(root_dir,item)):   
                                    if (not os.path.isdir(os.path.join(root_dir,item,file))) and file.endswith(".py") and (not file.startswith("__")):
                                        modules.append(f"{root_folder_name}.{item}.{file[:-3]}")
            
                    session.load_module(modules)
                    if reload:                     # 处理 reload
                        session.reload_module(modules)
                    self.modules = modules     # 保存mods供unload使用
                def __unload__(self):
                    # 卸载时按照加载的反向顺序逐个卸载
                    for mod in reversed(self.modules):
                        self.session.unload_module(mod)
            
            1 条回复 最后回复
            0
            • N 离线
              N 离线
              newstart
              编写于 最后由 编辑
              #8

              很好,就是需要有探索精神😂🤣

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

                很好,就是需要有探索精神😂🤣

                T 离线
                T 离线
                terry
                编写于 最后由 编辑
                #9

                @newstart 还得群主指导啊,我照猫画虎,优化了点儿

                1 条回复 最后回复
                0
                • S 离线
                  S 离线
                  shanghua
                  编写于 最后由 shanghua 编辑
                  #10

                  https://www.pkuxkx.net/forum/thread-50002-1-1.html

                  跟这帖子不一样吗?

                  N 1 条回复 最后回复
                  0
                  • S shanghua

                    https://www.pkuxkx.net/forum/thread-50002-1-1.html

                    跟这帖子不一样吗?

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

                    @shanghua 在 如何加载不同模块(.py)? 中说:

                    https://www.pkuxkx.net/forum/thread-50002-1-1.html

                    跟这帖子不一样吗?

                    一样的,就是这个🤣

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

                      哦,我不上xkx的论坛的~~~
                      不过这个帖子好像之前搜索pyMud的时候看过,
                      但现在又忘记了
                      这记性真不行了

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


                      • 登录

                      • 没有帐号? 注册

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