设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 5950|回复: 5
打印 上一主题 下一主题

[有事请教] 求一个懂插件的大佬帮助

[复制链接]

Lv4.逐梦者

梦石
0
星屑
5286
在线时间
1054 小时
注册时间
2021-3-14
帖子
563
跳转到指定楼层
1
发表于 2021-6-19 08:39:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
150星屑
有没有懂插件的大佬给我看看这个插件为什么给装备备注判断开关那里在游戏中无效的问题
JAVASCRIPT 代码复制下载
  1. //=============================================================================
  2. // EquipConditionExtend.js
  3. // ----------------------------------------------------------------------------
  4. // (C)2017 Triacontane
  5. // This software is released under the MIT License.
  6. // [url]http://opensource.org/licenses/mit-license.php[/url]
  7. // ----------------------------------------------------------------------------
  8. // Version
  9. // 1.1.0 2020/05/05 計算式で制御文字が使えるよう修正
  10. // 1.0.1 2017/02/07 端末依存の記述を削除
  11. // 1.0.0 2017/01/25 初版
  12. // ----------------------------------------------------------------------------
  13. // [Blog]   : [url]https://triacontane.blogspot.jp/[/url]
  14. // [Twitter]: [url]https://twitter.com/triacontane/[/url]
  15. // [GitHub] : [url]https://github.com/triacontane/[/url]
  16. //=============================================================================
  17.  
  18. /*:
  19.  * @plugindesc 装备条件扩展插件
  20.  * @author triacontane
  21.  *
  22.  * @help 扩大装备条件。
  23.  * 请在武器或盔甲的备注栏中写下如下内容。
  24.  *
  25.  * <ECE_スキル:5>     # 获得了ID[5]的技能。
  26.  * <ECE_Skill:5>      # 同上
  27.  * <EDE_ステート:7>   # ID[7]的状态为启用。
  28.  * <EDE_State:7>      # 同上
  29.  * <EDE_アクター:4>   # 是ID[4]的角色。
  30.  * <EDE_Actor:4>      # 同上
  31.  * <EDE_スイッチ:1,3> # ID [1] 或 ID [3] 开关打开。
  32.  * <EDE_Switch:1,3>   # 同上
  33.  * <EDE_計算式:f>     # JS 公式 [f] 返回 true
  34.  * <EDE_Formula:f>    # 同上
  35.  *
  36.  * 如果用逗号分隔填写多个数值,则只要指定的数值中有一个符合,
  37.  * 您就可以装备它们。
  38.  *
  39.  * 对于技能和状态,如果设置为负值,
  40.  * 则只有指定ID的技能、状态无效时才能装备。
  41.  *
  42.  * 此插件没有插件命令。
  43.  */
  44. /*:ja
  45.  * @plugindesc 装備条件拡張プラグイン
  46.  * @author トリアコンタン
  47.  *
  48.  * @help 装備条件を拡張します。
  49.  * 武器または防具のメモ欄に以下の通り記述してください。
  50.  *
  51.  * <ECE_スキル:5>     # ID[5]のスキルを習得している。
  52.  * <ECE_Skill:5>      # 同上
  53.  * <ECE_ステート:7>   # ID[7]のステートが有効になっている。
  54.  * <ECE_State:7>      # 同上
  55.  * <ECE_アクター:4>   # ID[4]のアクターである。
  56.  * <ECE_Actor:4>      # 同上
  57.  * <ECE_スイッチ:1,3> # ID[1]もしくはID[3]のスイッチがONになっている。
  58.  * <ECE_Switch:1,3>   # 同上
  59.  * <ECE_計算式:f>     # JS計算式[f]がtrueを返す
  60.  * <ECE_Formula:f>    # 同上
  61.  * 計算式では記号「>」は使用できません。「<」を使った比較式を使ってください。
  62.  *
  63.  * 数値をカンマ区切りで複数記入すると、指定した数値のいずれかが該当すれば
  64.  * 装備可能になります。
  65.  *
  66.  * スキルとステートについては、負の値を設定すると指定したIDのスキル、ステートが
  67.  * 無効な場合のみ装備できるようになります。
  68.  * <ECE_ステート:-7>   # ID[7]のステートが無効になっている。
  69.  *
  70.  * このプラグインにはプラグインコマンドはありません。
  71.  *
  72.  * 使用条款:
  73.  *  未经作者许可可修改和重新分发,使用方式(商业,18禁止使用等)
  74.  *  没有限制。
  75.  *  这个插件已经是你的了。
  76.  */
  77.  
  78. (function() {
  79.     'use strict';
  80.     var metaTagPrefix = 'ECE_';
  81.  
  82.     //=============================================================================
  83.     // ローカル関数
  84.     //  プラグインパラメータやプラグインコマンドパラメータの整形やチェックをします
  85.     //=============================================================================
  86.     var getArgArrayString = function(args, upperFlg) {
  87.         var values = getArgString(args, upperFlg).split(',');
  88.         for (var i = 0; i < values.length; i++) values[i] = values[i].trim();
  89.         return values;
  90.     };
  91.  
  92.     var getArgArrayNumber = function(args, min, max) {
  93.         var values = getArgArrayString(args, false);
  94.         if (arguments.length < 2) min = -Infinity;
  95.         if (arguments.length < 3) max = Infinity;
  96.         for (var i = 0; i < values.length; i++) values[i] = (parseInt(values[i], 10) || 0).clamp(min, max);
  97.         return values;
  98.     };
  99.  
  100.     var getArgString = function(arg, upperFlg) {
  101.         arg = convertEscapeCharacters(arg);
  102.         return upperFlg ? arg.toUpperCase() : arg;
  103.     };
  104.  
  105.     var getMetaValue = function(object, name) {
  106.         var metaTagName = metaTagPrefix + (name ? name : '');
  107.         return object.meta.hasOwnProperty(metaTagName) ? object.meta[metaTagName] : undefined;
  108.     };
  109.  
  110.     var getMetaValues = function(object, names) {
  111.         if (!Array.isArray(names)) return getMetaValue(object, names);
  112.         for (var i = 0, n = names.length; i < n; i++) {
  113.             var value = getMetaValue(object, names[i]);
  114.             if (value !== undefined) return value;
  115.         }
  116.         return undefined;
  117.     };
  118.  
  119.     var convertEscapeCharacters = function(text) {
  120.         if (text == null || text === true) text = '';
  121.         text = text.replace(/>?/gi, '>');
  122.         text = text.replace(/<?/gi, '<');
  123.         text = text.replace(/\\/g, '\x1b');
  124.         text = text.replace(/\x1b\x1b/g, '\\');
  125.         text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
  126.             return $gameVariables.value(parseInt(arguments[1]));
  127.         }.bind(this));
  128.         text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
  129.             return $gameVariables.value(parseInt(arguments[1]));
  130.         }.bind(this));
  131.         text = text.replace(/\x1bN\[(\d+)\]/gi, function() {
  132.             var actor = parseInt(arguments[1]) >= 1 ? $gameActors.actor(parseInt(arguments[1])) : null;
  133.             return actor ? actor.name() : '';
  134.         }.bind(this));
  135.         text = text.replace(/\x1bP\[(\d+)\]/gi, function() {
  136.             var actor = parseInt(arguments[1]) >= 1 ? $gameParty.members()[parseInt(arguments[1]) - 1] : null;
  137.             return actor ? actor.name() : '';
  138.         }.bind(this));
  139.         text = text.replace(/\x1bG/gi, TextManager.currencyUnit);
  140.         return text;
  141.     };
  142.  
  143.     var _Game_BattlerBase_canEquipWeapon = Game_BattlerBase.prototype.canEquipWeapon;
  144.     Game_BattlerBase.prototype.canEquipWeapon = function(item) {
  145.         return _Game_BattlerBase_canEquipWeapon.apply(this, arguments) && this.canEquipExtend(item);
  146.     };
  147.  
  148.     var _Game_BattlerBase_canEquipArmor = Game_BattlerBase.prototype.canEquipArmor;
  149.     Game_BattlerBase.prototype.canEquipArmor = function(item) {
  150.         return _Game_BattlerBase_canEquipArmor.apply(this, arguments) && this.canEquipExtend(item);
  151.     };
  152.  
  153.     Game_BattlerBase.prototype.canEquipExtend = function(item) {
  154.         if (!item) {
  155.             return false;
  156.         }
  157.         if (!this.canEquipExtendSkill(item)) {
  158.             return false;
  159.         }
  160.         if (!this.canEquipExtendState(item)) {
  161.             return false;
  162.         }
  163.         if (!this.canEquipExtendActor(item)) {
  164.             return false;
  165.         }
  166.         if (!this.canEquipExtendSwitch(item)) {
  167.             return false;
  168.         }
  169.         if (!this.canEquipExtendFormula(item)) {
  170.             return false;
  171.         }
  172.         return true;
  173.     };
  174.  
  175.     Game_BattlerBase.prototype.canEquipExtendSkill = function(item) {
  176.         var metaValue = getMetaValues(item, ['スキル', 'Skill']);
  177.         if (!metaValue) return true;
  178.         var skills = getArgArrayNumber(metaValue);
  179.         return skills.some(function(skillId) {
  180.             var hasSkill = this.skills().contains($dataSkills[Math.abs(skillId)]);
  181.             return skillId < 0 ? !hasSkill : hasSkill;
  182.         }.bind(this));
  183.     };
  184.  
  185.     Game_BattlerBase.prototype.canEquipExtendState = function(item) {
  186.         var metaValue = getMetaValues(item, ['ステート', 'State']);
  187.         if (!metaValue) return true;
  188.         var states = getArgArrayNumber(metaValue);
  189.         return states.some(function(stateId) {
  190.             var isState = this.isStateAffected(stateId);
  191.             return stateId < 0 ? !isState : isState;
  192.         }.bind(this));
  193.     };
  194.  
  195.     Game_BattlerBase.prototype.canEquipExtendActor = function(item) {
  196.         var metaValue = getMetaValues(item, ['アクター', 'Actor']);
  197.         if (!metaValue) return true;
  198.         var actors = getArgArrayNumber(metaValue);
  199.         return this.isActor() ? actors.contains(this.actorId()) : false;
  200.     };
  201.  
  202.     Game_BattlerBase.prototype.canEquipExtendSwitch = function(item) {
  203.         var metaValue = getMetaValues(item, ['スイッチ', 'Switch']);
  204.         if (!metaValue) return true;
  205.         var switches = getArgArrayNumber(metaValue);
  206.         return switches.some(function(switchId) {
  207.             return $gameSwitches.value(switchId);
  208.         }.bind(this));
  209.     };
  210.  
  211.     Game_BattlerBase.prototype.canEquipExtendFormula = function(item) {
  212.         var metaValue = getMetaValues(item, ['計算式', 'Formula']);
  213.         if (!metaValue) return true;
  214.         try {
  215.             return eval(convertEscapeCharacters(metaValue));
  216.         } catch (e) {
  217.             console.error(e.stack);
  218.             return false;
  219.         }
  220.     };
  221. })();

随缘翻译。

Lv5.捕梦者

梦石
0
星屑
24484
在线时间
5077 小时
注册时间
2016-3-8
帖子
1623
2
发表于 2021-6-19 12:44:28 | 只看该作者
所以,,,你都备注了些什么
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9329
在线时间
1842 小时
注册时间
2020-1-2
帖子
1082
3
发表于 2021-6-19 13:14:00 | 只看该作者
@plugindesc 装备条件扩展插件   你在哪里找到的或许这是扩张插件有的备注需要前置插件
B站没人气的夏目漠漠,直播间:5378938实用插件教程点击红字传送
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
24484
在线时间
5077 小时
注册时间
2016-3-8
帖子
1623
4
发表于 2021-6-19 13:28:18 | 只看该作者
本帖最后由 alexncf125 于 2021-6-19 13:29 编辑

楼上到底在说什么
看一眼插件代码內容就能知道是没前置的吧
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
5286
在线时间
1054 小时
注册时间
2021-3-14
帖子
563
5
 楼主| 发表于 2021-6-19 13:33:09 | 只看该作者
alexncf125 发表于 2021-6-19 12:44
所以,,,你都备注了些什么

下面有日语原文,我那个备注你还是别看了,可能会误导
随缘翻译。
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9329
在线时间
1842 小时
注册时间
2020-1-2
帖子
1082
6
发表于 2021-6-19 14:00:47 | 只看该作者
alexncf125 发表于 2021-6-19 13:28
楼上到底在说什么
看一眼插件代码內容就能知道是没前置的吧 ...

因为我不会看代码
B站没人气的夏目漠漠,直播间:5378938实用插件教程点击红字传送
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-16 03:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表