55808888 发表于 2024-5-6 22:32 搞定,谢谢 |
小秋橙 发表于 2024-5-6 10:54 不好了大神,刚发现这么写技能也被这个开关禁用了 |
本来我也想做一个效果,把敌人变猪,或者变成物品,只要设置一个物品敌人战斗图,然后敌人变身就可以,我想它变成物品后不能使用技能加血,这样似乎很好解决,但是换成我方就有点麻烦,敌人也可以把我方变成物品,战斗图又要新做,然后封印技能加血也行,就是不能使用物品加血犯难了,这下似乎有可能了。 |
小秋橙 发表于 2024-5-6 10:54 判断ID什么的我看了上面这个示例应该会写了,到时候我自己尝试下。 开关控制道具使用已经完美运行,感谢大佬! |
Game_BattlerBase.prototype.canUse = function(item) { if ($gameSwitches.value(1355) === false) return false; // 本行为新增内容,但是你确定不再判断一下item.id什么的? if (!item) { return false; } else if (DataManager.isSkill(item)) { return this.meetsSkillConditions(item); } else if (DataManager.isItem(item)) { return this.meetsItemConditions(item); } else { return false; } }; |
小秋橙 发表于 2024-5-5 20:59 本来看了您的代码之前,我打算用蠢办法造一些相同的无法使用的假道具,在无法使用的场合替换成假道具,能够使用的时候再换回来。 现在我打算试试这个正规操作 |
小秋橙 发表于 2024-5-5 20:59 大佬我是代码小白,我判断开关1355如果关闭,就无法使用道具,应该不是这样瞎写吧 Game_BattlerBase.prototype.canUse = function(item) { if (!item) {if ($gameSwitches.value(1355)=false); return false; } else if (DataManager.isSkill(item)) { return this.meetsSkillConditions(item); } else if (DataManager.isItem(item)) { return this.meetsItemConditions(item); } else { return false; } }; |
rpg_objects.js 第 2774 行: Game_BattlerBase.prototype.isOccasionOk = function(item) { if ($gameParty.inBattle()) { return item.occasion === 0 || item.occasion === 1; } else { return item.occasion === 0 || item.occasion === 2; } }; Game_BattlerBase.prototype.meetsUsableItemConditions = function(item) { return this.canMove() && this.isOccasionOk(item); }; Game_BattlerBase.prototype.meetsSkillConditions = function(skill) { return (this.meetsUsableItemConditions(skill) && this.isSkillWtypeOk(skill) && this.canPaySkillCost(skill) && !this.isSkillSealed(skill.id) && !this.isSkillTypeSealed(skill.stypeId)); }; Game_BattlerBase.prototype.meetsItemConditions = function(item) { return this.meetsUsableItemConditions(item) && $gameParty.hasItem(item); }; Game_BattlerBase.prototype.canUse = function(item) { if (!item) { return false; } else if (DataManager.isSkill(item)) { return this.meetsSkillConditions(item); } else if (DataManager.isItem(item)) { return this.meetsItemConditions(item); } else { return false; } }; 你总是可以通过判断 item.id 或 skill.id 的取值范围以及各种条件(变量、开关、地图ID、队员等级、主角坐标……)来改变这个函数的执行结果,occasion为0、1、2默认表示【随时、战斗、战斗外】三种场合可用。 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2025-4-28 22:56
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.