例としてメモ欄に変数変更: 34, 5と書いた場合変数34番に5の値を代入することを想定しています
下はChatGPTで作成したものですが動作不全です
よろしくお願いいたします
コード: 全て選択
/*:
* @target MZ
* @plugindesc 購入時にアイテムのメモ欄に記載された変数を変更するプラグイン
* @help
* このプラグインは、アイテム購入時にそのアイテムのメモ欄を参照し、
* メモ欄に「変数変更X,Y」と記載されていた場合、指定した変数番号Xに値Yを代入します。
*
* 例: 武器Aのメモ欄:
* <変数変更1,10> // 変数1に10を代入
*
* @param VariableChangeText
* @text 変数変更メッセージ
* @desc メモ欄に「変数変更X,Y」と記載されている場合、指定された変数にYの値を代入します。
* @default 変数変更
*/
(() => {
const parameters = PluginManager.parameters('VariableChangeOnBuy');
const variableChangeText = parameters['VariableChangeText'] || '変数変更';
// アイテム購入時に変数を変更する処理
const _Scene_Shop_onBuyItem = Scene_Shop.prototype.onBuyItem;
Scene_Shop.prototype.onBuyItem = function() {
// 購入するアイテム
const item = this._buyWindow.item();
// アイテムのメモ欄に「変数変更X,Y」が記載されているかを確認
if (item && item.meta[variableChangeText]) {
this.applyVariableChange(item);
}
// 通常の購入処理を実行
_Scene_Shop_onBuyItem.call(this);
};
// メモ欄の「変数変更X,Y」を解析して変数に代入する処理
Scene_Shop.prototype.applyVariableChange = function(item) {
const changeData = item.meta[variableChangeText];
// 「変数変更X,Y」の形式を正規表現で抽出
const regex = /変数変更(\d+),(\d+)/;
const match = changeData.match(regex);
if (match) {
const variableId = parseInt(match[1]); // X: 変数番号
const value = parseInt(match[2]); // Y: 代入する値
// 変数にYの値を代入
$gameVariables.setValue(variableId, value);
}
};
})();