Project1

标题: 请问如下代码究竟是什么意思呢? [打印本页]

作者: 脚本盲    时间: 2020-4-27 02:09
标题: 请问如下代码究竟是什么意思呢?
本帖最后由 脚本盲 于 2020-4-27 02:19 编辑

var ary = ['1','3','4'];
for (var key in $gameSelfSwitches._data) {
    console.log(key)
    if (key.match(/(\d+),\d+,[ABCD]/)) {
        if (ary.contains(RegExp.$1)){
            $gameSelfSwitches._data[key] = false;
        }
    }

作者: 脚本盲    时间: 2020-4-27 02:09
这个是在Yanna的范例包里看到的。
作者: MCCF    时间: 2020-4-27 08:52
建议参见正则表达式相关的内容,来更好的理解。
$gameSelfSwitches._data[id]表示游戏的第id号开关。
这个意思也很好理解,因为一般对开关的存储键值是 mapid, eventid, switchid 这样的形式,所以遍历所有键值,找到匹配(\d+),\d+,[ABCD]这个形式的键值(为了把无关属性区分开来)。
然后检查第一个括号中的内容(mapid),如果包含在ary数组内,则将该开关设为关闭(false)。也就是说,这段代码把1,3,4这三个ID的地图上所有独立开关关闭。
  1. 数组ary = [字符串'1',字符串'3',字符串'4']
  2. for(遍历$gameSelfSwitches._data的属性key){
  3.   控制台.打印(key);
  4.   if(key.匹配(/(\d+),\d+,[ABCD]/)){  //详情请参见正则表达式
  5.     if(ary.包含(匹配组1的内容)){
  6.       $gameSelfSwitches._data[key] = false;
  7.     }
  8.   }
  9. }
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1