第一次写MV插件,水平有限,请见谅。
数据库里的物品描述:
我的描述里有脚本。角色金钱为<js>$gameParty.gold()</js>,队伍第一人HP为<js>$gameParty.leader().hp</js>
我还想就地调用函数:<js>(function(){return 123;})();</js>
实际运行结果:
插件:
//============================================================================= // ScriptedItemDescription.js //============================================================================= /*: * @plugindesc 用于让物品描述代入js脚本的值 * @author Calendar99 * * @help * 物品描述中的<js>script</js>将被替换为script的执行结果 * * 例如: * '1 + 1是 <js>1 + 1</js>'在帮助窗口中将显示为'1 + 1是 2' * */ Window_Help.prototype.setItem = function(item) { let desc = item ? item.description : ''; try{ desc = desc.replace(/<JS>(.+?)<\/JS>/ig, (m,c) => eval(c)); } catch (e) { console.log('Window_Help.prototype.setItem failed.'); alert('Failed item description: \n' + desc); } this.setText(desc); };
//=============================================================================
// ScriptedItemDescription.js
//=============================================================================
/*:
* @plugindesc 用于让物品描述代入js脚本的值
* @author Calendar99
*
* @help
* 物品描述中的<js>script</js>将被替换为script的执行结果
*
* 例如:
* '1 + 1是 <js>1 + 1</js>'在帮助窗口中将显示为'1 + 1是 2'
*
*/
Window_Help.prototype.setItem = function(item) {
let desc = item ? item.description : '';
try{
desc = desc.replace(/<JS>(.+?)<\/JS>/ig, (m,c) => eval(c));
} catch (e) {
console.log('Window_Help.prototype.setItem failed.');
alert('Failed item description: \n' + desc);
}
this.setText(desc);
};
|