【以下是DeepSeek帮我写的插件代码,分享给大家】
【复制到——游戏项目\js\plugins里新建的——LastUsedItem.js——即可使用】
//=============================================================================
// LastItemToVariable.js
//=============================================================================
/*:
* @plugindesc 将队伍最后使用的道具ID记录到4号变量
*
@Author DeepSeek
*
*
@help 此插件会在不修改核心代码的情况下,将最后使用的道具ID存储到4号游戏变量
*
* 插件命令:
* 无需插件命令,自动生效
* 注意:
*
* 这个插件必须等物品【使用结束】后才能检测到物品ID,
* 换句话说,它不能用到使用物品时触发的公共事件上,
* 否则会出现错误。
*
* 处理方法也很简单:
*
* S1物品使用时触发1个公共事件,这个公共事件会开启1个开关。
* S2开启的开关会启动另1个公共事件,它的变量就能保存【最后使用的物品ID】。
* S3展示一个文本,内容为\ni[\v[4]]——————验证你有没有读到正确的物品名称。
*
*
@param Variable ID
*
@贴吧用户_0t83NWe960 用于存储最后使用道具ID的变量编号 (默认:4)
* @type number
* @min 1
* @default 4
*
*/
(() => {
// 读取插件参数
const parameters = PluginManager.parameters('LastItemToVariable');
const TARGET_VARIABLE_ID = Number(parameters['Variable ID'] || 4);
// 核心方法:更新变量
const updateVariable = item => {
if (item && DataManager.isItem(item)) {
$gameVariables.setValue(TARGET_VARIABLE_ID, item.id);
}
};
// 方法1: 通过别名重写setLastItem
const _Game_Party_setLastItem = Game_Party.prototype.setLastItem;
Game_Party.prototype.setLastItem = function(item) {
_Game_Party_setLastItem.call(this, item);
updateVariable(item);
};
// 方法2: 战斗中使用道具的监听
const _Game_Action_useItem = Game_Action.prototype.useItem;
Game_Action.prototype.useItem = function() {
const item = this.item();
updateVariable(item);
return _Game_Action_useItem.apply(this, arguments);
};
// 方法3: 菜单中使用道具的监听
const _Window_ItemList_callOkHandler = Window_ItemList.prototype.callOkHandler;
Window_ItemList.prototype.callOkHandler = function() {
const item = this.item();
updateVariable(item);
return _Window_ItemList_callOkHandler.call(this);
};
})();