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

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

PyMUD官方论坛

  1. 主页
  2. 版块
  3. PyMUD讨论区
  4. 如何加载不同模块(.py)?

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

已定时 已固定 已锁定 已移动 PyMUD讨论区
12 帖子 3 发布者 695 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 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
                      • 版块
                      • 最新
                      • 标签
                      • 热门
                      • 世界
                      • 用户
                      • 群组