北大侠客行MUD论坛

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

Pymud基础教程 - 5、简简单单触发

[复制链接]
发表于 5 天前 | 显示全部楼层 |阅读模式
触发器,你去看作者的官方文档,花里胡哨的,感觉很复杂,其实很简单,关键的是他的demo代码跑不起来,哈哈哈!他太忙了,没空更新,所以这活我再干1遍吧。

Python的语法太灵活了,这就导致一个简简单单的触发至少有3种写法,太灵活的咱不讲,讲了也不一定能理解,咱就用最简单的方法来搞,等以后熟悉了,都不用别人讲,自己就能悟出来。

触发器,有4种:
  • 普通触发 Trigger
  • 简易触发 SimpleTrigger
  • 异步触发 XXXXXXXX
  • GMCP触发 GMCPTrigger


触发类型,分3种:
  • 普通触发
  • 颜色触发
  • 多行触发


Trigger和SimpleTrigger都能做3种触发类型,GMCPTrigger是固定格式,作者写好的,咱不用管安心拿数据就行。

第3种咱不讲,用的场景也不多。关键是这玩意不是一两句话能说明白的,它要和pymud自身的command功能联合使用,再加上pymud自身的command本身就是个巨难的玩意,这俩货放一块,完全不是一般人理解的。等你啥时候能用这个功能的时候,还是自己进群问群主吧,554672580。

Trigger和SimpleTrigger是父子继承关系。
区别:
  • Trigger匹配成功后执行一个回调函数,
  • SimpleTrigger它是Trigger的子类可以用Trigger所有功能,只是触发成功后直接发送命令,传参方式可以简化



GMCPTrigger就不啰嗦了,直接看官方文档就行,demo能跑。

修改 脚本一.py,试一下Trigger、SimpleTrigger。直接上代码:
  1. from pymud import SimpleTrigger, Trigger

    class Configuration:

        # __init__构造函数,self上下文对象,就像js里的this

        def __init__(self, session, *args, **kwargs):

            session.info("脚本一,加载成功!")

            self.session = session

            # 定义触发器对象

            self._objs = [

                Trigger(

                    self.session,

                    # 用来开关触发器,不能和其他触发器重复

                    id="tri_sc_pot",

                    # 分类,用来开关触发器

                    group="sys",

                    # 匹配规则,正则表达式

                    patterns=r"^.*│\s*【潜能】\s*(\d+)\s+│$",

                    # 回调函数

                    onSuccess=self.tri_sc_pot,

                ),

    # 简易触发器,执行命令,传参不需要键值对,直接写值,传参的顺序不能变

                SimpleTrigger(

    self.session,

                    "^.*│\s*【经验】\s*(\d+)\s+│$",

                    "#info Trigger和SimpleTrigger都触发了。;say 饿死了;"

    ),

       ]

        # /**

        #  * 触发回调函数

        #  * @param name 触发器名称

        #  * @param line String 返回 字符串类型 的匹配内容

        #  * @param wildcards Tuple 返回 元组类型 的匹配内容

        #  */

        def tri_sc_pot(self, name, line, wildcards):

            # self.session.info(line)

            # self.session.info(name)

            self.session.info(wildcards)

            self.session.info("wildcards是个元组类型,取第0个元素:")

            self.session.info(wildcards[0])

        def __unload__(self):

            self.session.delObjects(self._objs)

复制代码
代码完成,我们来测试,直接在pymud命令行打hp,效果如图:



测试触发?有的。
先复制内容。
  1. #test %copy
复制代码

开、关组:
命令:#t+ sys
命令:#t- sys
代码用法:
  1. self.session.enableGroup("sys", False)
复制代码

开、关单个触发:
命令:#tri id on
命令:#tri id off
代码用法:
  1. self.session.tris[‘id’].enabled = False
复制代码




教程目录:
Pymud基础教程 - 1、入坑退坑介绍
Pymud基础教程 - 2、随随便便安装
Pymud基础教程 - 3、简单加载脚本
Pymud基础教程 - 4、自动加载脚本
Pymud基础教程 - 6、多行颜色触发
Pymud基础教程 - 7、哎呦插件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
北大侠客行Mud(pkuxkx.net),最好的中文Mud游戏!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-4-23 05:10 AM , Processed in 0.011715 second(s), 15 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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