Project1

标题: 为什么我自己用脚本加到note里的属性,无法被meta读取? [打印本页]

作者: 新耀012478    时间: 2021-6-26 23:28
标题: 为什么我自己用脚本加到note里的属性,无法被meta读取?
$gameMap._events[1].event().note
"<Actor:1>"
$gameMap._events[2].event().meta.Actor
"1"
//这个是一开始在事件的备注里就写好的。
$gameMap._events[6].event().note+="<acd:27>"
"<acd:27>"
$gameMap._events[6].event().note
"<acd:27>"
$gameMap._events[6].event().meta.acd
undefined
//这段是我自己加的,明明格式好像也一模一样的,不知道为什么读不出来。
//当然,我知道可以用indexOf()跟slice()解决。或者干脆eval()?只是好奇是什么原因,能直接用meta的话自然不想多写几行。
作者: MH-Pride    时间: 2021-6-27 04:39
DataManager.extractMetadata 里面的data console.log(data) 就明白了
data一开场就加载一次所以把在数据库里面的note加载了所以meta就能读取
你$gameMap._events[6].event().note+="<acd:27>"都有已经读取完了你改了note 的变量并没有把变量加到DataManager.extractMetadata里面当然是undefined
以下就是把note提取出来然后给meta的
DataManager.extractMetadata = function(data) {
    const regExp = /<([^<>:]+)(:?)([^>]*)>/g;
    data.meta = {};
    for (;;) {
        const match = regExp.exec(data.note);
        if (match) {
            if (match[2] === ":") {
                data.meta[match[1]] = match[3];
            } else {
                data.meta[match[1]] = true;
            }
        } else {
            break;
        }
    }
};
作者: MH-Pride    时间: 2021-6-27 04:46
你根本不需要这么麻烦直接在meta改就可以了
$gameMap._events[6].event().meta.acd=27




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