🧨 事件
可以使用/qa actions命令创建原始事件。这些事件都会保存在plugins/notquests/categoryname/actions.yml。事件也可以作为任务奖励或者目标奖励。事件(Action),顾名思义,就是会“发生”的一些事情。
你可以通过/qa actions edit actionname execute <玩家ID(可选)>命令“测试”你通过/qa actions命令创建的条件。如果你想无视这个事件下的条件限制,你可以使用一个可选Flag:--ignoreConditions
所有事件通用命令参数:
(flags)- 可选Flag--category <类别名称>- 如果是一个原始事件,储存于actions.yml里的事件,你可以在这里为其设定类别。
--delay <delay>- 如果是一个原始事件,储存于actions.yml里的事件,你可以在这里为其设定执行延迟。比如:如果输入1s,那么事件将会在1秒后执行,而不是立即执行。
默认变量事件
这些事件将会充当变量的“容器”,这是啥意思呢?
好吧……举个例子,Number事件就是这样的变量事件。在游戏中,它会将Number变量像很多事件的那样,转化为相应的事件,所以事件的数量实际上比你所认为的要多得多。然而,有些变量适用于条件,而不适用于事件。例如,DayOfWeek变量就只适用于条件,而不适用于事件。
有道理吧?在现实生活中,你不能单纯靠一个Minecraft的插件就做到穿越时空。不过,“Money”这个变量既适用于条件,也适用于事件。因为你可以查看玩家的金钱,也可以改变他们的金钱。当然,我说的只是游戏中的金钱🥲
更多请参阅变量部分。
❓ 布尔|Boolean
[!NOTE|label:描述] 发生事件:Boolean的取值只有2种:True和False。换言之就是表达Yes和No。
命令参数:<变量类型>- 用于指定Boolean变量的类型。<变量参数>- 有些变量类型可能存在附加参数,也可能不存在。<运算符>- 可用运算符:equals(等于)<表达式>- 用于指定变量的输出结果。常见值为true和false,但你也可以在这里设定一个不同的Boolean变量。
示例:
/qa actions add 事件名称 Flying set true(设定某事件为开启飞行) - 此条件中Flying为变量类型。/qa actions add 事件名称 Money add ((TagInteger(TagName:points)>=4)*(10+30))+(!(TagInteger(TagName:points)>=4)*5)(设定某事件为给予玩家金钱,如果玩家的整数标签“points”数值大于等于4,那么该事件将给予玩家40的金钱。否则,就给予5)
📙 列表|List
[!NOTE|label:描述] 发生事件:The value of this List variable is changed。 命令参数:
<变量类型>- 用于指定List变量的类型。<变量参数>- 有些变量类型可能存在附加参数,也可能不存在。<运算符>- 可选操作符:add(增加)、clear(清空)、remove(删除)和set(设置)。<表达式>- 用于指定变量的输出结果。这取决于变量类型。
示例:/qa actions add 事件名称 ActiveQuests add 任务名称(设定某事件为强制给予玩家名叫“任务名称”的任务) - 该条件中ActiveQuests为List变量。
📖 ItemStackList
[!NOTE|label:描述] 发生事件:The value of this ItemStackList variable is changed。 命令参数:
<变量类型>- 用于指定ItemStackList变量的类型。<变量参数>- 有些变量类型可能存在附加参数,也可能不存在。<运算符>- 可选操作符:add(增加)、clear(清空)、remove(删除)和set(设置)。<表达式>- 用于指定变量的输出结果。这取决于变量类型,但必须是物品。
示例:/qa actions add 事件名称 Inventory remove hand 3- 该条件中Inventory为ItemStackList变量。
💯 数字|Number
[!NOTE|label:描述] 发生事件:The value of this Number variable is changed。 命令参数:
<变量类型>- 用于指定Number变量的类型。<变量参数>- 有些变量类型可能存在附加参数,也可能不存在。<运算符>- 可选操作符:add(增加)、deduct(减去)、divide(除以)、multiply(乘以)和set(设置)。<表达式>- 用于指定变量的输出结果。此处的表达式很强大,因为你可以在这里输入任何类型的数学表达式,甚至可以包括其它Number变量。
示例:/qa actions add 事件名称 Money multiply 2(设定某事件为玩家金钱乘以2) - 该事件中Money为Number变量。再举个包含了数学表达式和其他变量的例子:/qa actions add 事件名称 Money set QuestPoints*Money+500-30/2(设定某事件为设置玩家金钱=任务点数×金钱+500-30÷2这个表达式的运算结果) - 该条件中Money为Number变量。再举个带有非常高级的表达式的例子:/qa actions add 条件名称 Money set 10+TagInteger(TagName:reputation)*TagInteger(TagName:level)(设定某事件为设置玩家的金钱为10+整数标签“好感度”数值×整数标签“等级”数值) - 该条件中Money为Number变量。
🆎 字符串|String
[!NOTE|label:描述] 发生事件:The value of this String variable is changed。 命令参数:
<变量类型>- 用于指定String变量的类型。<变量参数>- 有些变量类型可能存在附加参数,也可能不存在。<运算符>- 可选操作符:set(设置)和append(句未加字符串)。<表达式>- 用于指定变量的输出结果。这取决于变量类型,但必须是字符串(即文本)。
示例:/qa actions add 事件名称 CurrentWorld set world(设定某事件为将玩家传送到世界world) - 该条件中CurrentWorld为String变量。
默认事件
这部分讲述的是默认事件,这些事件是“独立”存在的,不依附于变量。
🤓事件|Action
[!NOTE|label:描述] 发生事件:执行其它一个或多个事件。没错,这个事件会执行其下属在actions.yml里的其它事件。
命令参数:
<其它事件名称>- 用于指定其它会一同执行的事件。<数量>- (可选)用于指定该事件的执行次数。(flags)- 可选Flag
--ignoreConditions- 若设置了此Flag,那么被附加到其下属的其它事件执行时所需的条件都会被无视,无论其下属的事件需要什么样的条件,都会强制执行事件。
--minRandom <数量>- 若设置了此Flag,那么被附加到其下属的其它事件将会被随机执行,此Flag用于指定随机执行的最少数量。
--maxRandom <数量>- 若设置了此Flag,那么被附加到其下属的其它事件将会被随机执行,此Flag用于指定随机执行的最多数量。
--onlyCountForRandomIfConditionsFulfilled- 若设置了此Flag,那么只有满足条件的事件会被随机执行所选中。
--executedActionDelay- 若设置了此Flag,那么其下属的事件均会出现执行延迟。这可能会覆盖现有的延迟。
示例:/qa actions add 事件名称 Action a1 2 --ignoreConditions(设定某事件为执行名叫“a1”的事件2次,无视事件a1的条件)/qa actions add 事件名称 Action a1,a2,money10 1(设定某事件为执行名叫“a1”、“a2”、“money10”的事件1次) 带随机事件Flag的示例:我事先创建了事件sm1、sm2、sm3、……、sm10,他们都是不同的SendMessage事件。/qa actions add sendAllMessages Action sm1,sm2,sm3,sm4,sm5,sm6,sm7,sm8,sm9,sm10 1(设定sendAllMessages事件为依照顺序依次执行事件sm1、sm2、……sm10)/qa actions add sendAllMessagesInRandomOrder Action sm1,sm2,sm3,sm4,sm5,sm6,sm7,sm8,sm9,sm10 1 --minRandom 10 --maxRandom 10(设定sendAllMessagesInRandomOrder事件为从10个事件中随机抽选最少10个、最多10个事件执行)/qa actions add sendRandomMessage Action sm1,sm2,sm3,sm4,sm5,sm6,sm7,sm8,sm9,sm10 1 --minRandom 1 --maxRandom 1(设定sendRandomMessage事件为从10个事件中随机抽选最少1个、最多1个事件执行)/qa actions add sendGuaranteedRandomMessage Action sm1,sm2,sm3,sm4,sm5,sm6,sm7,sm8,sm9,sm10 1 --minRandom 1 --maxRandom 1 --onlyCountForRandomIfConditionsFulfilled(设定sendGuaranteedRandomMessage事件为从10个事件中随机抽选最少1个、最多1个事件执行,只有满足条件的事件会被抽选,若玩家并不满足某个事件的条件,那么该事件就不会被纳入抽选范围内)/qa actions add sendOneOrTwoRandomMessage Action sm1,sm2,sm3,sm4,sm5,sm6,sm7,sm8,sm9,sm10 1 --minRandom 1 --maxRandom 2(设定sendOneOrTwoRandomMessage事件为从10个事件中随机抽选最少1个、最多2个事件执行)