Independent switchs

This commit is contained in:
oc 2018-12-25 23:20:56 +08:00
parent d929f14ff2
commit 90110cf854
3 changed files with 11 additions and 11 deletions

View File

@ -1693,12 +1693,12 @@ core.insertAction([
从V2.5.3开始,针对每个事件都提供了独立开关。 从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__` 事实上,在某个楼层某个点的事件的独立开关A对应的系统flag为`floorId@x@y@A`
比如在`MT0`层的`[2,5]`点事件,对应的`flag:__B__`独立开关,实际会被映射到`flag:MT0@2@5__B__`。 比如在`MT0`层的`[2,5]`点事件,对应的`switch:B`独立开关,实际会被映射到`flag:MT0@2@5@B`。
如果在事件外想访问某个事件的独立开关也需要通过上面这个方式。 如果在事件外想访问某个事件的独立开关也需要通过上面这个方式。

View File

@ -965,9 +965,11 @@ events.prototype.doAction = function() {
} }
// flag // flag
if (data.name.indexOf("flag:")==0) { if (data.name.indexOf("flag:")==0) {
var flag = data.name.substring(5); core.setFlag(data.name.substring(5), value);
if (/^__[A-Z]__$/.test(flag)) flag = (prefix||"")+flag; }
core.setFlag(flag, value); // switch
if (data.name.indexOf("switch:")==0) {
core.setFlag((prefix||"global")+"@"+data.name.substring(7), value);
} }
} }
catch (e) {console.log(e)} catch (e) {console.log(e)}

View File

@ -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(/status:([\w\d_]+)/g, "core.getStatus('$1')");
value=value.replace(/item:([\w\d_]+)/g, "core.itemCount('$1')"); value=value.replace(/item:([\w\d_]+)/g, "core.itemCount('$1')");
value=value.replace(/flag:([\w\d_]+)/g, function (word, value) { value=value.replace(/flag:([\w\d_]+)/g, "core.getFlag('$1', 0)");
if (/^__[A-Z]__$/.test(value)) value = (prefix||"")+value; value=value.replace(/switch:([A-Z])/g, "core.getFlag('"+(prefix||"global")+"@$1', 0)");
return core.getFlag(value, 0);
});
return eval(value); return eval(value);
} }