僕は自分の作品に組み込みたいシステムをchatGDPで作成したのですが、
どうしても動きません、
プラグインの内容は
全てのアクターに戦闘開始時にチェックが入り、指定したパラメーター(atkなど)が
指定した値になったら特定のスキルを覚えるというものです。
みなさんの力をお借りしたいです!よろしくお願いします!
コード: 全て選択
//=============================================================================
// ActorSkillsLearnPlugin.js
//=============================================================================
/*:
* @plugindesc 戦闘開始時にアクターが特定のパラメーター条件を満たすと複数のスキルを習得するプラグインです。
* @version 1.0.1
* @author OpenAI (日本語ヘルプ追加 by ChatGPT)
*
* @param SkillList
* @text スキルリスト
* @desc アクターが習得するスキルのリストを指定します。各スキルは「スキルID:(アクターのパラメーター),(そのパラメーターの数値)」の形式で指定します。複数指定する場合はカンマで区切ってください。
* @default 1:mhp,100, 2:mmp,50
*
* @param LearnMessage
* @text 習得メッセージ
* @desc スキルを習得したときに表示するメッセージのテンプレートです。 %1: アクター名, %2: 習得したスキル名
* @default %1は%2を覚えた!
*
* @help
* ===========================================================================
* ■ 使用方法
* ===========================================================================
* このプラグインは、戦闘開始時にアクターが特定のパラメーター条件を満たすと、
* 指定したスキルを同時に習得します。
*
* ===========================================================================
* ■ パラメーターの詳細
* ===========================================================================
* SkillListの書式: スキルID:(アクターのパラメーター),(そのパラメーターの数値)
* 例: 1:mhp,100, 2:mmp,50
* これはアクターがスキルIDが1のスキルを習得するために、
* アクターのmhpが100以上である必要があることを示します。
* 複数のスキルを指定する場合は、カンマで区切ってください。
*
* LearnMessageのテンプレート内で使用可能なプレースホルダ:
* %1: アクター名
* %2: 習得したスキル名
*
* ===========================================================================
* ■ 更新履歴
* ===========================================================================
* 1.0.1 (YYYY-MM-DD): 戦闘開始時にスキルを習得するタイミングを変更。
*/
(function() {
var parameters = PluginManager.parameters('ActorSkillsLearnPlugin');
var skillList = String(parameters['SkillList'] || '');
var learnMessageTemplate = String(parameters['LearnMessage'] || '%1は%2を覚えた!');
var skillsArray = parseSkillList(skillList);
var _Scene_Battle_start = Scene_Battle.prototype.start;
Scene_Battle.prototype.start = function() {
_Scene_Battle_start.call(this);
$gameParty.members().forEach(function(actor) {
actor.checkSkillsLearnConditions();
});
};
Game_Actor.prototype.checkSkillsLearnConditions = function() {
skillsArray.forEach(function(skillData) {
var skillId = skillData.skillId;
var paramType = skillData.paramType;
var requiredValue = skillData.requiredValue;
if (this.checkLearnCondition(paramType, requiredValue) && !this.isLearnedSkill(skillId)) {
this.learnSkill(skillId);
this.displayLearnMessage(skillId);
}
}, this);
};
Game_Actor.prototype.checkLearnCondition = function(paramType, requiredValue) {
if (typeof this[paramType] === 'function') {
return this[paramType]() >= parseInt(requiredValue);
}
return false;
};
Game_Actor.prototype.displayLearnMessage = function(skillId) {
var skill = $dataSkills[skillId];
if (skill) {
var message = learnMessageTemplate.replace('%1', this.name()).replace('%2', skill.name);
$gameMessage.add(message);
}
};
function parseSkillList(skillList) {
return skillList.split(',').map(function(skillData) {
var parts = skillData.trim().split(':');
var skillId = parseInt(parts[0]);
var paramParts = parts[1].split(',');
var paramType = paramParts[0].trim();
var requiredValue = paramParts[1].trim();
return {
skillId: skillId,
paramType: paramType,
requiredValue: requiredValue
};
});
}
})();