Dos全种类介绍


什么是Dos?

Dos萌芽引擎所特有的机制,它是专门为服主所开发的功能,您可以通过对Dos的多种组合,实现原本可能需要附属插件才能实现的功能!萌芽GUI精华所在!!!!

这些Dos更多的是用来写配置界面时使用,如果您是开发者这些几乎用不到


Dos可以在哪里触发?

Dos需要写在对应组件的有效位置才能触发,目前有效的触发位置有以下几处

    %下面是GUI的options内的Dos填写位置
    #打开该GUI时执行Dos
    openDos:
      - "openChild<->default3"
    #关闭该GUI时执行Dos
    closeDos:
      - "message<->thisGui界面被关闭了"
    #当玩家在此GUI内按下按键时触发
    keyDos:
      keyDown_22:
        - "message<->按下了 U 键"
      keyUp_22:
        - "message<->松开了 U 键"
      keyDown@U:
        - "message<->按下了 U 键"
      keyUp@U:
        - "message<->松开了 U 键"
    %下面是任意组件的Dos填写位置
    #当界面打开的时候 该组件第一次加载时触发该Dos
    initDos:
      - "message<->我是界面 thisGui 的组件 thisPart"
    %下面是按钮组件的Dos填写位置
    #鼠标左键按钮时执行Dos
    clickDos: 
      - "open<->default2"
    #鼠标右键按钮时执行Dos
    rightDos: 
      - "open<->null"
    #鼠标悬浮按钮时执行Dos
    hoverDos:
      - "open<->null"
    #鼠标悬浮离开按钮后执行Dos
    leaveDos: 
      - "open<->null"
    %下面是输入框组件的Dos填写位置
    #在输入槽内按下回车后执行Dos
    enterDos:
      - "opcmd<->say &a亲爱的 &e%player_name% &a想说 %input%"

Dos分类

  # 在dos 中 thisGui 会被替换为发出该Dos的界面名字 thisPart 会被替换为发出该Dos的部件名字 如 update<->thisGui@thisPart 就会更新执行该dos的部件
  # 在dos 中 parentPart 会被替换为发出该Dos的父组件的名字
  # 在dos 中 preChild 会被替换为发出该Dos的界面的上一层子界面的名字 nextChild 会被替换为发出该Dos的界面的下一层子界面的名字
  # 在dos 中 firstChild 会被替换为发出该Dos的界面的第一层子界面的名字 lastChild 会被替换为发出该Dos的界面的最后一层子界面的名字
  # 如果要更新滚动框中的部件(slider,scrollableParts)时部件索引名要设置为 部件索引名$滚动框内部件的索引名

基础型

      # 在Dos 中 thisGui 会被替换为发出该Dos的界面名字 thisPart 会被替换为发出该Dos的部件名字 
      # 如 update<->thisGui@thisPart 就会更新执行该dos的部件
      #关闭当前界面 同时打开另一个界面
      - "open<->default2"
      #关闭当前界面
      - "open<->null" 
      #跳转到此处的第六行dos
      - "goto<->6" 
      #跳转到此处第一行的dos
      - "goto<->1" 
      #运行到第十行dos就结束运行(包括第十行)
      - "limit<->10"
      #标记该行dos为mark1 可以标记为任何字符 例如 mark<->萌芽引擎
      - "mark<->mark1"
      #运行到mark1就结束
      - "limit<->mark1"
      #跳转至mark1继续运行
      - "goto<->mark1" 
      #延迟3000毫秒后才会往下面运行dos
      - "delay<->3000"
      #播放声音
      - "playSound<->opengui"

子界面型

      #以子界面(二级界面)模式打开一个gui
      - "openChild<->default3"
      #关闭最后一个子界面
      - "openChild<->null"
      #关闭名为default3的子界面
      - "closeChild<->default3"
      #关闭所有子界面
      - "closeChild<->all"

指令型

      #################################################################
      % 出于对安全的考虑,在Config.yml中注册过的的指令,
      % 才允许被萌芽GUI的指令型Dos中的servercmd、opcmd运行。       
      % 禁止运行敏感指令 例如 op、gamemode等,如需使用 强烈建议使用其他插件处理
      #################################################################
      #点击的人以玩家的身份执行命令(支持PAPI变量)
      - "cmd<->say %player_name%打开了"
      #点击的人以OP的身份执行命令(支持PAPI变量)(不推荐使用)
      - "opcmd<->gamemode %player_name% 1"
      #点击的人让后台执行一条命令(支持PAPI变量)(不推荐使用)
      - "servercmd<->say %player_name%"

信息型

      #将消息输出到玩家聊天框 \n 换行
      - "message<->&a萌芽引擎\n&b棒棒棒!"
      #让玩家说出这句话,其他玩家也会收到 \n 换行
      - "chat<->&a萌芽引擎\n&b棒棒棒!"
      #在不询问玩家是否同意的情况下 直接打开指定网页
      - "openWeb<->http://wiki.germengine.com/"
      #代表一个置顶的HUD提示消息,会永远显示在屏幕最顶端,目前支持 left1,center1
      - "hudMessage<->left1@我是提示内容\n会换行"

组件交互型

      #禁止所有可互动操作(例如按钮的点击 悬浮改图片 播放声音)
      - "invalid<->all"
      #禁止default界面里所有可互动操作(例如按钮的点击 悬浮图片 播放声音)
      - "invalid<->default@all"
      #禁止button(这里填的是yml的索引名)的可互动操作(例如点击 悬浮图片 播放声音)
      - "invalid<->button" 
      #禁止default界面里button(button是索引名)的可互动操作(例如点击 悬浮图片 播放声音)
      - "invalid<->default@button"
      #开启所有已打开界面的部件中可互动操作(例如点击 悬浮图片 播放声音)
      - "valid<->all"
      #开启已打开界面default所有的可互动操作(例如点击 悬浮图片 播放声音)
      - "valid<->default@all"
      #开启已打开界面中所有索引名为button的可互动操作(例如点击 悬浮图片 播放声音)
      - "valid<->button"
      #开启已打开界面default中索引名为button的可互动操作(例如点击 悬浮图片 播放声音)
      - "valid<->default@button"

执行动画型

      #########################################
      %注意:使用执行动画型Dos的前提是目标组件支持动画
      #########################################
      #使得已开启界面default中索引名为button的部件播放动画default_rotate与default_fade(更新列表时用$或者\n隔开)
      - "playAnimation<->default@button@default_rotate$default_fade" 
      #使得已开启界面default中所有部件播放动画default_rotate与default_fade(更新列表时用$或者\n隔开)
      - "playAnimation<->default@all@default_rotate$default_fade"

变量化槽位型

      ############################################
      %注意:使用变量化槽位型Dos的前提是目标槽位加载了物品
      ############################################
      # 将槽位id为germplugin_test的物品转化为变量
      # 变量 %identity_slot_germplugin_test_tip0% 代表名字 
      # 变量 %identity_slot_germplugin_test_tip1-100% 分别代表物品描述的1-100行
      - "placeholderItem<->identity@germplugin_test"

操作文本组件型

      #在label组件 %某变量%的行后面插入 萌芽萌芽
      - "insertLabel<->thisGui@某个label部件索引位置@%某变量%@萌芽萌芽"
      #在label组件的最后面插入 萌芽萌芽
      - "addLabel<->thisGui@canvasChannel1$MessageList@萌芽萌芽"
      #删除label的第一百行
      - "removeLabel<->thisGui@canvasChannel1$MessageList@100" 
      #删除label的第一行
      - "removeLabel<->thisGui@canvasChannel1$MessageList@first" 
      #删除label的最后一行
      - "removeLabel<->thisGui@canvasChannel1$MessageList@last"

操作拓展槽位组件型

      # 模拟左键点击一个指定identity的槽位 最后的true代表强制性的 无视slot的invalid和interact是否开启
      - "interactSlot<->ClickSlot@identity@true"
      # 模拟Shift+左键点击一个指定identity的槽位 最后的true代表强制性的 无视slot的invalid和interact是否开启
      - "interactSlot<->ShiftClickSlot@identity@true"
      # 模拟右键点击一个指定identity的槽位 最后的true代表强制性的 无视slot的invalid和interact是否开启
      - "interactSlot<->RightSlot@identity@true"
      # 模拟Shift+右键点击一个指定identity的槽位 最后的true代表强制性的 无视slot的invalid和interact是否开启
      - "interactSlot<->ShiftRightSlot@identity@true"

操作实体组件型

      #指定一个entity组件播放模型动作 在各子界面无重复组件indexName时 界面名可省略
      - "playModelAnimation<->界面名@组件名@动画名" 
      #指定一个entity组件停止播放模型动作 在各子界面无重复组件indexName时 界面名可省略
      - "stopModelAnimation<->界面名@组件名@动画名"

多重Dos型

      #运行新的名为dosName的Dos 用;隔开将要执行的多个Dos
      - "run<->dosName@mesaage<->萌芽引擎1;message<->萌芽引擎2"
      #停止名为dosName的dos的运行
      - "stop<->dosName"

自定义变量型

      #例如 aaaa@10  这样变量库就会新添加一个变量 %aaaa%=10
      - "putPlaceholder<->变量名@值"
      #例如 aaaa@random[10,20]  这样变量库就会新添加一个变量 %aaaa%将会取值为在10~20之间的某个数(包含10和20)
      - "putPlaceholder<->变量名@random[10,20]"
      #注意!如果第二个@后面跟了一个true 那么代表这个变量不会过期,否则在这里放入的变量将会在60秒内未使用的情况下过期
      - "putPlaceholder<->变量名@值@true" 
      # 使用putPlaceholder时 例如 "putPlaceholder<->aa@20+7" 那么%aa%的得到的结果还是 20+7
      # 使用 "calPlaceholder<->aa@20+7" 那么%aa%的得到的结果还是 27
      # 例如 "calPlaceholder<->aaa@100*99" 这样后变量库会存在一个变量为 %aaa%=9900
      - "calPlaceholder<->变量名@100 * %变量%" 
      #注意!如果第二个@后面跟了一个true 那么代表这个变量不会过期,否则在这里放入的变量将会在60秒内未使用的情况下过期
      - "calPlaceholder<->变量名@100 * %变量%@true"

更新属性型

      #########################################################
      % 如果要更新滚动框中的部件(slider,scrollableParts)时        
      % 部件索引名要设置为 部件索引名$滚动框内部件的索引名      
      #########################################################
      #刷新该变量的值 不写为1秒自动刷新一次 如需更快刷新可以使用此dos 注意 请省略原papi变量的百分号%
      - "refreshPlaceholder<->vault_eco_balance"
      #删除此变量 写all时会删除全部变量(当变量库不存在某个变量时会向服务器重新获取) 注意 请省略原papi变量的百分号%
      - "removePlaceholder<->vault_eco_balance"
      #重新载入所有组件 动画、坐标、大小之类的组件属性都将被重新计算再载入
      - "update<->all"
      # 重新载入所有已打开界面中索引名为button的组件 动画、坐标、大小之类的组件属性都将被重新计算再载入
      - "update<->button"
      #重新载入已打开的界面中default里的所有组件
      - "update<->default@all"
      #重新载入已打开的界面中default里的索引名为button的组件
      - "update<->default@button"
      #更新所有已打开界面中索引名为 button 组件中 width 属性 为 w*10
      - "update<->button@width@w*10"
      #更新所有已打开界面中所有部件 width 属性 为 w*10
      - "update<->all@width@w*10"
      #重新载入已打开的界面中default里的索引名为button的组件 更新部件中 width 属性 为 w*10
      - "update<->default@button@width@w*10"
      #重新载入已打开的界面中default的所有部件中 width 属性 为 w*10
      - "update<->default@all@width@w*10"
      #更新已打开的界面中索引名为 button 部件中 animations 属性 为 default_fade 和 default_rotate (更新列表时用$或者\n隔开)
      - "update<->texture@animations@default_fade$default_rotate"
      # 可修改界面的options选项
      - "updateOption<->界面名@字段名@值"

组件删除型

      #删除已打开的界面中所有索引名为 button 的部件
      - "remove<->button"
      #删除已打开的default界面中索引名为 button 的部件
      - "remove<->default@button"

逻辑判断型

      #判断玩家权限等于true时 才会继续向下面运行
      - "placeholder<->%player_has_permission_germ_gui%@true"
      #玩家的金钱变量等于1000时 才会继续向下面运行
      - "placeholder<->[%vault_eco_balance%]@[1000]"
      #客户端内有此变量才会接着往下运行 注意 请省略原papi变量的百分号%
      - "havePlaceholder<->vault_eco_balance"
      #玩家的金钱变量等于1000时运行 第5~10行的dos 否则运行 第10~15行的dos
      - "placeholder<->[%vault_eco_balance%]@[1000]@[5,10]@[10,15]"
      #玩家的金钱变量等于1000时运行 第5行~最后一行的dos 否则运行 第10行~最后一行的dos
      - "placeholder<->[%vault_eco_balance%]@[1000]@[5]@[10]"
      #这里的 mark 只为示范,为了说明这里的跳转位置也可以使用 mark标记的位置
      - "placeholder<->[%vault_eco_balance%]@[1000]@[mark1,mark2]@[mark3,mark4]"
      #玩家的金钱变量大于或等于1000时 才会继续向下面运行
      - "placeholder<->%vault_eco_balance%@1000"
      #玩家的金钱变量小于或等于1000时 才会继续向下面运行
      - "placeholder<->1000@%vault_eco_balance%"
      # 此Dos的格式 条件@达成条件@条件未达,条件由各种运算符组成,达成条件、条件未达与placeholder的用法一致不过多解释
      # 所有运算的量都可以用变量表示 例如 %player_health% >= 100  (PS:所有比较运算符如果比较成功返回1)
      # 写法一: 玩家的金币数量大于100 才会向下执行
      - "condition<->%vault_eco_balance%>100"
      # 写法二: 条件@[gotoDos]@[gotoDos] 此处代表玩家的金币大于100时 跳转到mark1标记处(也可以使用行号代表) 未达时跳转到mark2
      - "condition<->%vault_eco_balance%>100@[mark1]@[mark2]"
      # 写法三: 条件并条件@[gotoDos,limitDos]@[gotoDos,limitDos]
      - "condition<->%vault_eco_balance%>100 && %vault_eco_balance%<500@[mark1,mark2]@[mark3,mark4]"
      # 写法四: 条件@{条件成立运行的dos}@{条件失败运行的dos} 意为:当玩家的金币大于100时夸两句(其实是执行了多条dos,每条用;隔开,看起来像这样 条件@{dos1;dos2;dos...}@{dos1,dos2,dos...})
      - "condition<->%vault_eco_balance%>100@{message<->你的金币真多;message<->可以分我一些么}@{message<->你真穷;message<->我可以送你些金币}"

客户端操作型

      #更新玩家客户端Bend开关
      - "updateClient<->bends@enable@true/false"
      #更新玩家客户端的标题为 标题名可以修改标题
      - "updateClient<->title@Minecraft [1.12.2] Powered by GermEngine"
      # 第一人称时关闭或者显示绑定在自己身上的effect特效
      - "updateClient<->effect@skin@showSelf@true/false"
      # 开启或者关闭渲染HUD
      - "updateClient<->gui@showHUD@true/false"
      # 开启或者关闭渲染时装
      - "updateClient<->skin@showHUD@true/false"
      # 开启或者关闭真实第一人称
      - "updateClient<->rfp2@enable@true/false"
      # 第一人称时关闭或者显示绑定在自己身上的effect特效
      - "updateClient<->effect@showFirstView@true/false" 
      # 第一人称开关显示自己的时装(包括基岩盔甲)
      - "updateClient<->skin@showFirstView@true/false" 
      # 动态开关所有客户端germmod.cfg的配置节点
      - "updateClient<->engineConfig@配置节点@true/false"

results matching ""

    No results matching ""