diff --git a/docs/event.md b/docs/event.md index 5cfcebb8..6fd8e0ca 100644 --- a/docs/event.md +++ b/docs/event.md @@ -1693,12 +1693,12 @@ core.insertAction([ 从V2.5.3开始,针对每个事件都提供了独立开关。 -独立开关的写法是`flag:__A__`, `flag:__B__`直到`flag:__Z__`,共计26个。 +独立开关的写法是`switch:A`, `switch:A`直到`switch:Z`,共计26个;不过样板中的值块默认只提供前6个。 -独立开关算是特殊的flag,它在事件中使用时会和事件的楼层及坐标进行绑定;换句话说每个事件对应的`flag:__A__`都是不同的。 +独立开关算是特殊的flag,它在事件中使用时会和事件的楼层及坐标进行绑定;换句话说每个事件对应的`switch:A`都是不同的。 -事实上,在某个楼层某个点的事件的独立开关对应的系统flag为`floorId@x@y__X__`, -比如在`MT0`层的`[2,5]`点事件,对应的`flag:__B__`独立开关,实际会被映射到`flag:MT0@2@5__B__`。 +事实上,在某个楼层某个点的事件的独立开关A对应的系统flag为`floorId@x@y@A`, +比如在`MT0`层的`[2,5]`点事件,对应的`switch:B`独立开关,实际会被映射到`flag:MT0@2@5@B`。 如果在事件外想访问某个事件的独立开关也需要通过上面这个方式。 diff --git a/libs/events.js b/libs/events.js index 5065d511..219bb0e6 100644 --- a/libs/events.js +++ b/libs/events.js @@ -965,9 +965,11 @@ events.prototype.doAction = function() { } // flag if (data.name.indexOf("flag:")==0) { - var flag = data.name.substring(5); - if (/^__[A-Z]__$/.test(flag)) flag = (prefix||"")+flag; - core.setFlag(flag, value); + core.setFlag(data.name.substring(5), value); + } + // switch + if (data.name.indexOf("switch:")==0) { + core.setFlag((prefix||"global")+"@"+data.name.substring(7), value); } } catch (e) {console.log(e)} diff --git a/libs/utils.js b/libs/utils.js index 425037ec..1fa25724 100644 --- a/libs/utils.js +++ b/libs/utils.js @@ -62,10 +62,8 @@ utils.prototype.calValue = function (value, prefix, need, times) { } value=value.replace(/status:([\w\d_]+)/g, "core.getStatus('$1')"); value=value.replace(/item:([\w\d_]+)/g, "core.itemCount('$1')"); - value=value.replace(/flag:([\w\d_]+)/g, function (word, value) { - if (/^__[A-Z]__$/.test(value)) value = (prefix||"")+value; - return core.getFlag(value, 0); - }); + value=value.replace(/flag:([\w\d_]+)/g, "core.getFlag('$1', 0)"); + value=value.replace(/switch:([A-Z])/g, "core.getFlag('"+(prefix||"global")+"@$1', 0)"); return eval(value); }