Project1

标题: 请教一下关于插件冲突的问题。【已解决】 [打印本页]

作者: alucardzhou    时间: 2020-9-25 11:48
标题: 请教一下关于插件冲突的问题。【已解决】
本帖最后由 alucardzhou 于 2020-9-26 07:53 编辑


请教一个避免插件冲突的情况。

具体情况:
想引用FTKR_SkillTreeSystem
https://github.com/futokoro/RPGMaker/blob/master/sampleProject/SkillTreeSample.zip
结果发现FTKR_SkillTreeSystem和Yep_CoreEngine 有一个冲突:都定义了learnSkill  = function(skillId)
Yep_CoreEngine
Game_Actor.prototype.learnSkill = function(skillId) {
    if (!this._skills.contains(skillId)) {
        this._skills.push(skillId);
        this._skills.sort(function(a, b) {
            return a - b;
        });
    }
};

FTKR_SkillTreeSystem
    var _STS_Game_Actor_learnSkill = Game_Actor.prototype.learnSkill;
    Game_Actor.prototype.learnSkill = function(skillId) {
        if (!this.isStsLearnedSkill(skillId)) {
            this.setStsSkillCount(skillId, 0);
        }
        _STS_Game_Actor_learnSkill.call(this, skillId);
        this.checkInitSts();
        if (this.isLearnedSkill(skillId) && !this.stsCount(skillId)) {
            if (FTKR.STS.learnedActorVarID) $gameVariables.setValue(FTKR.STS.learnedActorVarID, this.actorId());
            if (FTKR.STS.learnedSkillVarID) $gameVariables.setValue(FTKR.STS.learnedSkillVarID, skillId);
            this.stsCountUp(skillId);
            this._stsLearnSkills[skillId] = true;
            this.checkStsForgetSkills(skillId);
        }
        if (this._initStsFlag) {
            this.stsUsedCost(skillId);
        }
    };

虽然在插件管理中把FTKR_SkillTreeSystem 放到 Yep_CoreEngine 后面就可以了。

但是感觉Yep_CoreEngine 的逻辑是有用,怕以后有冲突
* Version 1.19:
* - Updated for RPG Maker MV version 1.3.2.
* - Fixed 'LearnSkill' function for actors to not be bypassed if a piece of
* equipment has temporarily added a skill.


参看了一下 https://www.wikimoe.com/?post=48
简单加上了 (function(_global) {    })(this);

请教大神这样处理可以么?(以后Yep_CoreEngine 不会报错)如果不对请怎么改?
(function(_global) {
    var _STS_Game_Actor_learnSkill = Game_Actor.prototype.learnSkill;
    Game_Actor.prototype.learnSkill = function(skillId) {
                if (!this.isStsLearnedSkill(skillId)) {
            this.setStsSkillCount(skillId, 0);
        }
        _STS_Game_Actor_learnSkill.call(this, skillId);
        this.checkInitSts();
        if (this.isLearnedSkill(skillId) && !this.stsCount(skillId)) {
            if (FTKR.STS.learnedActorVarID) $gameVariables.setValue(FTKR.STS.learnedActorVarID, this.actorId());
            if (FTKR.STS.learnedSkillVarID) $gameVariables.setValue(FTKR.STS.learnedSkillVarID, skillId);
            this.stsCountUp(skillId);
            this._stsLearnSkills[skillId] = true;
            this.checkStsForgetSkills(skillId);
        }
        if (this._initStsFlag) {
            this.stsUsedCost(skillId);
        }
    };
})(this);

作者: soulsaga    时间: 2020-9-25 15:03
YEP是重定义
FTKR是改别名..
所以FTKR在YEP下面应该没问题了吧?
作者: alucardzhou    时间: 2020-9-26 07:43
soulsaga 发表于 2020-9-25 15:03
YEP是重定义
FTKR是改别名..
所以FTKR在YEP下面应该没问题了吧?

十分感谢。




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