1066 lines
28 KiB
Plaintext
1066 lines
28 KiB
Plaintext
[
|
||
{
|
||
"name": "AlwaysFailure",
|
||
"type": "Decorator",
|
||
"children": 1,
|
||
"status": [
|
||
"failure",
|
||
"|running"
|
||
],
|
||
"desc": "始终返回失败",
|
||
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 当子节点返回 `running` 时,返回 `running`\n+ 其它情况,不管子节点是否成功都返回 `failure`\n"
|
||
},
|
||
{
|
||
"name": "AlwaysRunning",
|
||
"type": "Decorator",
|
||
"children": 1,
|
||
"status": [
|
||
"running"
|
||
],
|
||
"desc": "始终返回运行中状态",
|
||
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 始终返回 `running`\n"
|
||
},
|
||
{
|
||
"name": "AlwaysSuccess",
|
||
"type": "Decorator",
|
||
"children": 1,
|
||
"status": [
|
||
"success",
|
||
"|running"
|
||
],
|
||
"desc": "始终返回成功",
|
||
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 当子节点返回 `running` 时,返回 `running`\n+ 其它情况,不管子节点是否成功都返回 `success`\n"
|
||
},
|
||
{
|
||
"name": "Assert",
|
||
"type": "Decorator",
|
||
"children": 1,
|
||
"status": [
|
||
"success"
|
||
],
|
||
"desc": "断言",
|
||
"args": [
|
||
{
|
||
"name": "message",
|
||
"type": "string",
|
||
"desc": "消息"
|
||
}
|
||
],
|
||
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 当子节点返回 `failure` 时,抛出异常\n+ 其余情况返回子节点的执行状态\n"
|
||
},
|
||
{
|
||
"name": "Calculate",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success"
|
||
],
|
||
"desc": "简单的数值公式计算",
|
||
"args": [
|
||
{
|
||
"name": "value",
|
||
"type": "expr",
|
||
"desc": "计算公式"
|
||
}
|
||
],
|
||
"output": [
|
||
"计算结果"
|
||
],
|
||
"doc": "+ 做简单的数值公式计算,返回结果到输出\n"
|
||
},
|
||
{
|
||
"name": "Case",
|
||
"type": "Composite",
|
||
"children": 2,
|
||
"status": [
|
||
"&success",
|
||
"|failure",
|
||
"|running"
|
||
],
|
||
"desc": "分支选择",
|
||
"doc": "+ 必须有两个子节点\n+ 第一个子节点为判断条件\n+ 第二个子节点为判断为 `success` 时执行的节点\n+ 此节点不会真正意义的执行,而是交由 `Switch` 节点来执行\n"
|
||
},
|
||
{
|
||
"name": "Check",
|
||
"type": "Condition",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"failure"
|
||
],
|
||
"desc": "检查True或False",
|
||
"args": [
|
||
{
|
||
"name": "value",
|
||
"type": "expr",
|
||
"desc": "值"
|
||
}
|
||
],
|
||
"doc": "+ 做简单数值公式判定,返回 `success` 或 `failure`\n"
|
||
},
|
||
{
|
||
"name": "Concat",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"failure"
|
||
],
|
||
"desc": "将两个输入合并为一个数组,并返回新数组",
|
||
"input": [
|
||
"数组1",
|
||
"数组2"
|
||
],
|
||
"output": [
|
||
"新数组"
|
||
],
|
||
"doc": "+ 如果输入不是数组,则返回 `failure`\n"
|
||
},
|
||
{
|
||
"name": "Delay",
|
||
"type": "Decorator",
|
||
"children": 1,
|
||
"status": [
|
||
"success"
|
||
],
|
||
"desc": "延时执行子节点",
|
||
"input": [
|
||
"延时时间?"
|
||
],
|
||
"args": [
|
||
{
|
||
"name": "delay",
|
||
"type": "float?",
|
||
"desc": "延时时间",
|
||
"oneof": "延时时间"
|
||
},
|
||
{
|
||
"name": "cacheVars",
|
||
"type": "string[]?",
|
||
"desc": "暂存环境变量"
|
||
}
|
||
],
|
||
"doc": "+ 当延时触发时,执行第一个子节点,多个仅执行第一个\n+ 如果子节点返回 `running`,会中断执行并清理执行栈"
|
||
},
|
||
{
|
||
"name": "Filter",
|
||
"type": "Decorator",
|
||
"children": 1,
|
||
"status": [
|
||
"success",
|
||
"failure",
|
||
"|running"
|
||
],
|
||
"desc": "返回满足条件的元素",
|
||
"input": [
|
||
"输入数组"
|
||
],
|
||
"output": [
|
||
"变量",
|
||
"新数组"
|
||
],
|
||
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 遍历输入数组,将当前元素写入`变量`,满足条件的元素放入新数组\n+ 只有当新数组不为空时,才返回 `success`\n"
|
||
},
|
||
{
|
||
"name": "ForEach",
|
||
"type": "Decorator",
|
||
"children": 1,
|
||
"status": [
|
||
"success",
|
||
"|running",
|
||
"|failure"
|
||
],
|
||
"desc": "遍历数组",
|
||
"input": [
|
||
"数组"
|
||
],
|
||
"output": [
|
||
"变量",
|
||
"索引?"
|
||
],
|
||
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 遍历输入数组,将当前元素写入`变量`\n+ 当子节点返回 `failure` 时,退出遍历并返回 `failure` 状态\n+ 执行完所有子节点后,返回 `success`"
|
||
},
|
||
{
|
||
"name": "GetField",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"failure"
|
||
],
|
||
"desc": "获取对象的字段值",
|
||
"args": [
|
||
{
|
||
"name": "field",
|
||
"type": "string?",
|
||
"desc": "字段(field)",
|
||
"oneof": "字段(field)"
|
||
}
|
||
],
|
||
"input": [
|
||
"对象",
|
||
"字段(field)?"
|
||
],
|
||
"output": [
|
||
"字段值(value)"
|
||
],
|
||
"doc": "+ 合法元素不包括 `undefined` 和 `null`\n+ 只有获取到合法元素时候才会返回 `success`,否则返回 `failure`\n"
|
||
},
|
||
{
|
||
"name": "IfElse",
|
||
"type": "Composite",
|
||
"children": 3,
|
||
"status": [
|
||
"|success",
|
||
"|failure",
|
||
"|running"
|
||
],
|
||
"desc": "条件执行",
|
||
"doc": "+ 必须有三个子节点\n+ 第一个子节点为条件节点\n+ 第二个子节点为条件为 `success` 时执行的节点\n+ 第三个子节点为条件为 `failure` 时执行的节点,\n"
|
||
},
|
||
{
|
||
"name": "Includes",
|
||
"type": "Condition",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"failure"
|
||
],
|
||
"desc": "判断元素是否在数组中",
|
||
"input": [
|
||
"数组",
|
||
"元素"
|
||
],
|
||
"doc": "+ 若输入的元素不合法,返回 `failure`\n+ 只有数组包含元素时返回 `success`,否则返回 `failure`\n"
|
||
},
|
||
{
|
||
"name": "Index",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"failure"
|
||
],
|
||
"desc": "索引输入的数组",
|
||
"args": [
|
||
{
|
||
"name": "index",
|
||
"type": "int?",
|
||
"desc": "索引",
|
||
"oneof": "索引"
|
||
}
|
||
],
|
||
"input": [
|
||
"数组",
|
||
"索引?"
|
||
],
|
||
"output": [
|
||
"值"
|
||
],
|
||
"doc": "+ 合法元素不包括 `undefined` 和 `null`\n+ 索引数组的时候,第一个元素的索引为 0\n+ 只有索引到有合法元素时候才会返回 `success`,否则返回 `failure`\n"
|
||
},
|
||
{
|
||
"name": "Invert",
|
||
"type": "Decorator",
|
||
"children": 1,
|
||
"status": [
|
||
"!success",
|
||
"!failure",
|
||
"|running"
|
||
],
|
||
"desc": "反转子节点运行结果",
|
||
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 当子节点返回 `success` 时返回 `failure`\n+ 当子节点返回 `failure` 时返回 `success`\n+ 当子节点返回 `error` 时返回 `error`\n"
|
||
},
|
||
{
|
||
"name": "IsNull",
|
||
"type": "Condition",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"failure"
|
||
],
|
||
"desc": "判断变量是否不存在",
|
||
"input": [
|
||
"判断的变量"
|
||
]
|
||
},
|
||
{
|
||
"name": "JustFailure",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"failure"
|
||
],
|
||
"desc": "什么都不干,只返回失败"
|
||
},
|
||
{
|
||
"name": "JustSuccess",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success"
|
||
],
|
||
"desc": "什么都不干,只返回成功"
|
||
},
|
||
{
|
||
"name": "Let",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success"
|
||
],
|
||
"desc": "定义新的变量名",
|
||
"input": [
|
||
"已存在变量名?"
|
||
],
|
||
"args": [
|
||
{
|
||
"name": "value",
|
||
"type": "json?",
|
||
"desc": "值(value)",
|
||
"oneof": "已存在变量名"
|
||
}
|
||
],
|
||
"output": [
|
||
"新变量名"
|
||
],
|
||
"doc": "+ 如果有输入变量,则给已有变量重新定义一个名字\n+ 如果`值(value)`为 `null`,则清除变量\n"
|
||
},
|
||
{
|
||
"name": "Listen",
|
||
"type": "Decorator",
|
||
"children": 1,
|
||
"status": [
|
||
"success"
|
||
],
|
||
"desc": "侦听事件",
|
||
"input": [
|
||
"目标对象?"
|
||
],
|
||
"output": [
|
||
"事件目标?",
|
||
"事件参数..."
|
||
],
|
||
"args": [
|
||
{
|
||
"name": "event",
|
||
"type": "string",
|
||
"desc": "事件",
|
||
"options": [
|
||
{
|
||
"source": [
|
||
{ "name": "左键单击", "value": "EVT_KEY_LEFT_CLICK" },
|
||
{ "name": "左键双击", "value": "EVT_KEY_LEFT_DOUBLE_CLICK" },
|
||
{ "name": "左键长按", "value": "EVT_KEY_LEFT_LONG_PRESS" },
|
||
{ "name": "右键单击", "value": "EVT_KEY_RIGHT_CLICK" },
|
||
{ "name": "右键双击", "value": "EVT_KEY_RIGHT_DOUBLE_CLICK" },
|
||
{ "name": "右键长按", "value": "EVT_KEY_RIGHT_LONG_PRESS" },
|
||
{ "name": "右键三击", "value": "EVT_KEY_RIGHT_TRIPLE_CLICK" },
|
||
{ "name": "左右键同时长按", "value": "EVT_KEY_BOTH_LONG_PRESS" },
|
||
{ "name": "触摸单击", "value": "EVT_TOUCH_TAP" },
|
||
{ "name": "触摸三击", "value": "EVT_TOUCH_TRIPLE_TAP" },
|
||
{ "name": "摇晃", "value": "EVT_GYRO_SHAKE" },
|
||
{ "name": "人靠近", "value": "EVT_RADAR_PERSON_APPROACH" },
|
||
{ "name": "人离开", "value": "EVT_RADAR_PERSON_LEAVE" },
|
||
{ "name": "电量危险", "value": "EVT_BATTERY_CRITICAL" },
|
||
{ "name": "Wi-Fi 已连接", "value": "EVT_WIFI_CONNECTED" },
|
||
{ "name": "Wi-Fi 已断开", "value": "EVT_WIFI_DISCONNECTED" },
|
||
{ "name": "剧本播放完成", "value": "EVT_SCRIPT_DONE" },
|
||
{ "name": "饱食度变化", "value": "EVT_PHYSIOLOGY_FULLNESS_CHANGED" },
|
||
{ "name": "清洁度变化", "value": "EVT_PHYSIOLOGY_CLEANLINESS_CHANGED" },
|
||
{ "name": "精力值变化", "value": "EVT_PHYSIOLOGY_ENERGY_CHANGED" },
|
||
{ "name": "开心值变化", "value": "EVT_PHYSIOLOGY_HAPPINESS_CHANGED" }
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"doc": "+ 当事件触发时,执行第一个子节点,多个仅执行第一个\n+ 如果子节点返回 `running`,会中断执行并清理执行栈"
|
||
},
|
||
{
|
||
"name": "Log",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success"
|
||
],
|
||
"desc": "打印日志",
|
||
"input": [
|
||
"日志?"
|
||
],
|
||
"args": [
|
||
{
|
||
"name": "message",
|
||
"type": "string",
|
||
"desc": "日志"
|
||
},
|
||
{
|
||
"name": "level",
|
||
"type": "string",
|
||
"desc": "日志级别",
|
||
"default": "log",
|
||
"options": [
|
||
{
|
||
"source": [
|
||
{
|
||
"name": "LOG",
|
||
"value": "log"
|
||
},
|
||
{
|
||
"name": "INFO",
|
||
"value": "info"
|
||
},
|
||
{
|
||
"name": "DEBUG",
|
||
"value": "debug"
|
||
},
|
||
{
|
||
"name": "WARN",
|
||
"value": "warn"
|
||
},
|
||
{
|
||
"name": "ERROR",
|
||
"value": "error"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "Math",
|
||
"type": "Action",
|
||
"desc": "执行数学运算",
|
||
"input": [
|
||
"参数..."
|
||
],
|
||
"output": [
|
||
"结果"
|
||
],
|
||
"status": [
|
||
"success",
|
||
"failure"
|
||
],
|
||
"args": [
|
||
{
|
||
"name": "op",
|
||
"type": "string",
|
||
"desc": "数学运算类型",
|
||
"options": [
|
||
{
|
||
"source": [
|
||
{
|
||
"name": "绝对值",
|
||
"value": "abs"
|
||
},
|
||
{
|
||
"name": "向上取整",
|
||
"value": "ceil"
|
||
},
|
||
{
|
||
"name": "向下取整",
|
||
"value": "floor"
|
||
},
|
||
{
|
||
"name": "四舍五入",
|
||
"value": "round"
|
||
},
|
||
{
|
||
"name": "符号",
|
||
"value": "sign"
|
||
},
|
||
{
|
||
"name": "正弦",
|
||
"value": "sin"
|
||
},
|
||
{
|
||
"name": "余弦",
|
||
"value": "cos"
|
||
},
|
||
{
|
||
"name": "正切",
|
||
"value": "tan"
|
||
},
|
||
{
|
||
"name": "反正切2",
|
||
"value": "atan2"
|
||
},
|
||
{
|
||
"name": "幂运算",
|
||
"value": "pow"
|
||
},
|
||
{
|
||
"name": "平方根",
|
||
"value": "sqrt"
|
||
},
|
||
{
|
||
"name": "自然对数",
|
||
"value": "log"
|
||
},
|
||
{
|
||
"name": "最小值",
|
||
"value": "min"
|
||
},
|
||
{
|
||
"name": "最大值",
|
||
"value": "max"
|
||
},
|
||
{
|
||
"name": "随机数",
|
||
"value": "random"
|
||
},
|
||
{
|
||
"name": "随机整数",
|
||
"value": "randInt"
|
||
},
|
||
{
|
||
"name": "随机浮点数",
|
||
"value": "randFloat"
|
||
},
|
||
{
|
||
"name": "求和",
|
||
"value": "sum"
|
||
},
|
||
{
|
||
"name": "平均值",
|
||
"value": "average"
|
||
},
|
||
{
|
||
"name": "乘积",
|
||
"value": "product"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "value1",
|
||
"type": "float?",
|
||
"desc": "参数1(优先使用)"
|
||
},
|
||
{
|
||
"name": "value2",
|
||
"type": "float?",
|
||
"desc": "参数2(优先使用)"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "NotNull",
|
||
"type": "Condition",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"failure"
|
||
],
|
||
"desc": "判断变量是否存在",
|
||
"input": [
|
||
"判断的变量"
|
||
]
|
||
},
|
||
{
|
||
"name": "Now",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success"
|
||
],
|
||
"desc": "获取当前时间",
|
||
"output": [
|
||
"当前时间"
|
||
]
|
||
},
|
||
{
|
||
"name": "Once",
|
||
"type": "Decorator",
|
||
"children": 1,
|
||
"status": [
|
||
"success",
|
||
"failure",
|
||
"|running"
|
||
],
|
||
"desc": "只执行一次",
|
||
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 第一次执行完全部子节点时返回 `success`,之后永远返回 `failure`"
|
||
},
|
||
{
|
||
"name": "Parallel",
|
||
"type": "Composite",
|
||
"status": [
|
||
"success",
|
||
"|running"
|
||
],
|
||
"children": -1,
|
||
"desc": "并行执行",
|
||
"doc": "+ 并行执行所有子节点\n+ 当有子节点返回 `running` 时,返回 `running` 状态\n+ 执行完所有子节点后,返回 `success`"
|
||
},
|
||
{
|
||
"name": "Push",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"failure"
|
||
],
|
||
"desc": "向数组中添加元素",
|
||
"input": [
|
||
"数组",
|
||
"元素"
|
||
],
|
||
"doc": "+ 当变量`数组`不是数组类型时返回 `failure`\n+ 其余返回 `success`\n"
|
||
},
|
||
{
|
||
"name": "Race",
|
||
"type": "Composite",
|
||
"status": [
|
||
"|success",
|
||
"&failure",
|
||
"|running"
|
||
],
|
||
"children": -1,
|
||
"desc": "竞争执行",
|
||
"doc": "+ 并行执行所有子节点\n+ 当有子节点返回 `success` 时,立即返回 `success` 状态,并中断其他子节点\n+ 如果所有子节点返回 `failure`或 `error` 则返回 `failure`"
|
||
},
|
||
{
|
||
"name": "RandomIndex",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"failure"
|
||
],
|
||
"desc": "随机返回输入的其中一个!",
|
||
"input": [
|
||
"输入目标"
|
||
],
|
||
"output": [
|
||
"随机目标",
|
||
"索引?"
|
||
],
|
||
"doc": "+ 合法元素不包括 `undefined` 和 `null`\n+ 在输入数组中,随机返回其中一个\n+ 当输入数组为空时,或者没有合法元素,返回 `failure`\n"
|
||
},
|
||
{
|
||
"name": "Repeat",
|
||
"type": "Decorator",
|
||
"children": 1,
|
||
"status": [
|
||
"success",
|
||
"|running",
|
||
"|failure"
|
||
],
|
||
"desc": "循环执行",
|
||
"input": [
|
||
"循环次数?"
|
||
],
|
||
"args": [
|
||
{
|
||
"name": "count",
|
||
"type": "int?",
|
||
"desc": "循环次数",
|
||
"oneof": "循环次数"
|
||
}
|
||
],
|
||
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 当子节点返回 `failure` 时,退出遍历并返回 `failure` 状态\n+ 执行完所有子节点后,返回 `success`\n"
|
||
},
|
||
{
|
||
"name": "RetryUntilFailure",
|
||
"type": "Decorator",
|
||
"children": 1,
|
||
"status": [
|
||
"!success",
|
||
"failure",
|
||
"running"
|
||
],
|
||
"desc": "一直尝试直到子节点返回失败",
|
||
"input": [
|
||
"最大尝试次数?"
|
||
],
|
||
"args": [
|
||
{
|
||
"name": "count",
|
||
"type": "int?",
|
||
"desc": "最大尝试次数"
|
||
}
|
||
],
|
||
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 只有当子节点返回 `failure` 时,才返回 `success`,其它情况返回 `running` 状态\n+ 如果设定了尝试次数,超过指定次数则返回 `failure`"
|
||
},
|
||
{
|
||
"name": "RetryUntilSuccess",
|
||
"type": "Decorator",
|
||
"children": 1,
|
||
"status": [
|
||
"|success",
|
||
"failure",
|
||
"running"
|
||
],
|
||
"desc": "一直尝试直到子节点返回成功",
|
||
"input": [
|
||
"最大尝试次数?"
|
||
],
|
||
"args": [
|
||
{
|
||
"name": "count",
|
||
"type": "int?",
|
||
"desc": "最大尝试次数"
|
||
}
|
||
],
|
||
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 只有当子节点返回 `success` 时,才返回 `success`,其它情况返回 `running` 状态\n+ 如果设定了尝试次数,超过指定次数则返回 `failure`"
|
||
},
|
||
{
|
||
"name": "Selector",
|
||
"type": "Composite",
|
||
"children": -1,
|
||
"desc": "选择执行",
|
||
"status": [
|
||
"|success",
|
||
"&failure",
|
||
"|running"
|
||
],
|
||
"doc": "+ 一直往下执行,直到有子节点返回 `success` 则返回 `success`\n+ 若全部节点返回 `failure`或 `error` 则返回 `failure`"
|
||
},
|
||
{
|
||
"name": "Sequence",
|
||
"type": "Composite",
|
||
"children": -1,
|
||
"status": [
|
||
"&success",
|
||
"|failure",
|
||
"|running"
|
||
],
|
||
"desc": "顺序执行",
|
||
"doc": "+ 一直往下执行,只有当所有子节点都返回 `success`, 才返回 `success`\n+ 若子节点返回 `failure`,则直接返回 `failure` 状态\n+ 其余情况返回 `running` 状态\n"
|
||
},
|
||
{
|
||
"name": "SetField",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"failure"
|
||
],
|
||
"desc": "设置对象字段值",
|
||
"input": [
|
||
"输入对象",
|
||
"字段(field)?",
|
||
"值(value)?"
|
||
],
|
||
"args": [
|
||
{
|
||
"name": "field",
|
||
"type": "string?",
|
||
"desc": "字段(field)",
|
||
"oneof": "字段(field)"
|
||
},
|
||
{
|
||
"name": "value",
|
||
"type": "json?",
|
||
"desc": "值(value)",
|
||
"oneof": "值(value)"
|
||
}
|
||
],
|
||
"doc": "+ 对输入对象设置 `field` 和 `value`\n+ 输入参数1必须为对象,否则返回 `failure`\n+ 如果 `field` 不为 `string`, 也返回 `failure`\n+ 如果 `value` 为 `undefined` 或 `null`, 则删除 `field` 的值\n"
|
||
},
|
||
{
|
||
"name": "Switch",
|
||
"type": "Composite",
|
||
"children": -1,
|
||
"status": [
|
||
"|success",
|
||
"|failure",
|
||
"|running"
|
||
],
|
||
"desc": "分支执行",
|
||
"doc": "+ 按顺序测试 `Case` 节点的判断条件(第一个子节点)\n+ 若测试返回 `success` 则执行 `Case` 第二个子节点,并返回子节点的执行状态\n+ 若没有判断为 `success` 的 `Case` 节点,则返回 `failure`\n"
|
||
},
|
||
{
|
||
"name": "Timeout",
|
||
"type": "Decorator",
|
||
"children": 1,
|
||
"status": [
|
||
"|success",
|
||
"|running",
|
||
"failure"
|
||
],
|
||
"desc": "超时",
|
||
"input": [
|
||
"超时时间?"
|
||
],
|
||
"args": [
|
||
{
|
||
"name": "time",
|
||
"type": "float?",
|
||
"desc": "超时时间",
|
||
"oneof": "超时时间"
|
||
}
|
||
],
|
||
"doc": "+ 只能有一个子节点,多个仅执行第一个\n+ 当子节点执行超时或返回 `failure` 时,返回 `failure`\n+ 其余情况返回子节点的执行状态\n"
|
||
},
|
||
{
|
||
"name": "PlayScript",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"running",
|
||
"failure"
|
||
],
|
||
"desc": "播放脚本(GIF/音频/LED)",
|
||
"args": [
|
||
{
|
||
"name": "script",
|
||
"type": "string",
|
||
"desc": "脚本路径,如 baby/interaction/curious"
|
||
}
|
||
],
|
||
"doc": "+ 根据脚本路径驱动 display / audio / led 执行\n+ 运行期间返回 `running`,完成后返回 `success`"
|
||
},
|
||
{
|
||
"name": "Wait",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"running"
|
||
],
|
||
"desc": "等待",
|
||
"input": [
|
||
"等待时间?"
|
||
],
|
||
"args": [
|
||
{
|
||
"name": "time",
|
||
"type": "float?",
|
||
"desc": "等待时间",
|
||
"oneof": "等待时间"
|
||
},
|
||
{
|
||
"name": "random",
|
||
"type": "float?",
|
||
"desc": "随机范围"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "WaitForEvent",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"running"
|
||
],
|
||
"desc": "等待事件触发",
|
||
"args": [
|
||
{
|
||
"name": "event",
|
||
"type": "string",
|
||
"desc": "事件名称"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "CheckPhysio",
|
||
"type": "Condition",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"failure"
|
||
],
|
||
"desc": "检查宠物生理数值",
|
||
"args": [
|
||
{
|
||
"name": "attr",
|
||
"type": "string",
|
||
"desc": "数值类型",
|
||
"options": [
|
||
{
|
||
"source": [
|
||
{ "name": "饱食度(fullness)", "value": "fullness" },
|
||
{ "name": "清洁度(cleanliness)", "value": "cleanliness" },
|
||
{ "name": "精力值(energy)", "value": "energy" },
|
||
{ "name": "开心值(happiness)", "value": "happiness" }
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "op",
|
||
"type": "string",
|
||
"desc": "比较操作",
|
||
"default": "<=",
|
||
"options": [
|
||
{
|
||
"source": [
|
||
{ "name": "<=", "value": "<=" },
|
||
{ "name": "<", "value": "<" },
|
||
{ "name": ">=", "value": ">=" },
|
||
{ "name": ">", "value": ">" },
|
||
{ "name": "==", "value": "==" },
|
||
{ "name": "!=", "value": "!=" }
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "value",
|
||
"type": "int",
|
||
"desc": "比较阈值(0-100)"
|
||
}
|
||
],
|
||
"doc": "+ 从 demo7 DataCenter 读取指定数值并比较\n+ 例如 fullness <= 30 表示饱食度过低,需要播放饿了的剧本\n"
|
||
},
|
||
{
|
||
"name": "AddPhysio",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success"
|
||
],
|
||
"desc": "增加或减少宠物生理数值",
|
||
"args": [
|
||
{
|
||
"name": "attr",
|
||
"type": "string",
|
||
"desc": "数值类型",
|
||
"options": [
|
||
{
|
||
"source": [
|
||
{ "name": "饱食度(fullness)", "value": "fullness" },
|
||
{ "name": "清洁度(cleanliness)", "value": "cleanliness" },
|
||
{ "name": "精力值(energy)", "value": "energy" },
|
||
{ "name": "开心值(happiness)", "value": "happiness" }
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "amount",
|
||
"type": "int",
|
||
"desc": "变化量,可为负数"
|
||
}
|
||
],
|
||
"doc": "+ 调用 demo7 IPetContext 修改 DataCenter 中的数值\n+ 例如 happiness = -3 表示心情下降 3 点\n"
|
||
},
|
||
{
|
||
"name": "SetPhysio",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success"
|
||
],
|
||
"desc": "直接设定宠物生理数值为指定绝对值",
|
||
"args": [
|
||
{
|
||
"name": "attr",
|
||
"type": "string",
|
||
"desc": "数值类型",
|
||
"options": [
|
||
{
|
||
"source": [
|
||
{ "name": "饱食度(fullness)", "value": "fullness" },
|
||
{ "name": "清洁度(cleanliness)", "value": "cleanliness" },
|
||
{ "name": "精力值(energy)", "value": "energy" },
|
||
{ "name": "开心值(happiness)", "value": "happiness" }
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "value",
|
||
"type": "int",
|
||
"desc": "目标数值(0-100)"
|
||
}
|
||
],
|
||
"doc": "+ 直接将 DataCenter 中的指定数值设置为 value(绝对值,非增量)\n+ 例如喂食后 SetPhysio { fullness: 80 } 将饱食度重置为 80\n"
|
||
},
|
||
{
|
||
"name": "CheckUtility",
|
||
"type": "Condition",
|
||
"children": 0,
|
||
"status": [
|
||
"success",
|
||
"failure"
|
||
],
|
||
"desc": "检查宠物行为效用值(由 PetBrain 计算的 0.0–1.0 驱动强度)",
|
||
"args": [
|
||
{
|
||
"name": "attr",
|
||
"type": "string",
|
||
"desc": "效用属性",
|
||
"options": [
|
||
{
|
||
"source": [
|
||
{ "name": "饥饿(hungry)", "value": "hungry" },
|
||
{ "name": "困倦(sleepy)", "value": "sleepy" },
|
||
{ "name": "脏了(dirty)", "value": "dirty" },
|
||
{ "name": "开心(laugh)", "value": "laugh" },
|
||
{ "name": "好奇(curious)", "value": "curious" },
|
||
{ "name": "悲伤(sad)", "value": "sad" }
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "op",
|
||
"type": "string",
|
||
"desc": "比较操作",
|
||
"default": ">=",
|
||
"options": [
|
||
{
|
||
"source": [
|
||
{ "name": ">=", "value": ">=" },
|
||
{ "name": ">", "value": ">" },
|
||
{ "name": "<=", "value": "<=" },
|
||
{ "name": "<", "value": "<" },
|
||
{ "name": "==", "value": "==" },
|
||
{ "name": "!=", "value": "!=" }
|
||
]
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"name": "value",
|
||
"type": "float",
|
||
"desc": "比较阈值(0.0 – 1.0)"
|
||
}
|
||
],
|
||
"doc": "+ 从 PetBrain::GetBehaviorUtilities() 读取效用分数,与阈值比较\n+ attr 可选值:hungry / sleepy / dirty / laugh / curious / sad\n+ 例如:{ attr: \"hungry\", op: \">=\", value: 0.6 } 表示饥饿驱动力 ≥ 60%,应播放饿了剧本\n+ 与 CheckPhysio 的区别:CheckPhysio 读取的是原始整数值(0-100),CheckUtility 读取的是经过曲线映射后的标准化驱动强度\n"
|
||
},
|
||
{
|
||
"name": "RequestModeSwitch",
|
||
"type": "Action",
|
||
"children": 0,
|
||
"status": [
|
||
"success"
|
||
],
|
||
"desc": "请求切换宠物模式",
|
||
"args": [
|
||
{
|
||
"name": "mode",
|
||
"type": "string",
|
||
"desc": "目标模式",
|
||
"options": [
|
||
{
|
||
"source": [
|
||
{ "name": "待机模式", "value": "MODE_IDLE" },
|
||
{ "name": "菜单模式", "value": "MODE_MENU" },
|
||
{ "name": "睡眠模式", "value": "MODE_SLEEPING" }
|
||
]
|
||
}
|
||
]
|
||
}
|
||
],
|
||
"doc": "+ 请求切换到指定的宠物模式\n+ MODE_MENU: 打开菜单(等同于 Log 中的 OPEN_MENU)\n+ MODE_IDLE: 返回待机\n+ MODE_SLEEPING: 进入睡眠\n"
|
||
},
|
||
{
|
||
"name": "Watchdog",
|
||
"type": "Composite",
|
||
"children": 3,
|
||
"status": [
|
||
"|success",
|
||
"|failure",
|
||
"|running"
|
||
],
|
||
"desc": "测试执行",
|
||
"doc": "+ 必须有3个子节点\n+ 第一个子节点为条件节点,返回 `success` 或 `failure` 状态\n+ 第二个子节点为条件为 `success` 时执行的节点\n+ 第三个子节点为条件为 `failure` 时执行的节点,不管子节点返回什么状态,都直接返回 `failure`\n+ 当第二个子节点返回 `running` 时,由本节点维护其运行状态\n+ 每一次 tick 都会先执行测试节点,只有当测试节点返回 `success`,才执行第二个子节点\n"
|
||
}
|
||
] |