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"