查看: 9434|回复: 21

[有事请教] 求行走图换装插件

[复制链接]
梦石
0
星屑
962
在线时间
135 小时
注册时间
2017-10-18
回帖
41
发表于 2019-10-21 18:59:17 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
我之前用的是ACE的换装脚本↓
https://rpg.blue/thread-349277-1-1.html

我找了很久MV都没有此类插件,请问有谁知道哪里有吗?
梦石
0
星屑
16261
在线时间
4014 小时
注册时间
2015-9-14
回帖
1322

开拓者

发表于 2019-10-21 20:14:33 | 显示全部楼层
按鈕換裝(事件頁)https://rpg.blue/thread-479015-1-2.html三樓

紙娃娃換裝插件有,
   本地 汪汪    紙娃娃插件.
   日本 木星    紙娃娃插件.                  

換裝插件.作者:tomoaky

TMPlugin - 衣装アイテム/=============================================================================
// TMPlugin - 衣装アイテム
// バージョン: 1.0.1
// 最終更新日: 2017/01/11
// 配布元    : http://hikimoki.sakura.ne.jp/
//-----------------------------------------------------------------------------
// Copyright (c) 2017 tomoaky
// Released under the MIT license.
// http://opensource.org/licenses/mit-license.php
//=============================================================================

/*:
* @plugindesc アイテムによるグラフィック変更機能を追加します。
*
* @author tomoaky (http://hikimoki.sakura.ne.jp/)
*
* @help
* TMPlugin - 衣装アイテム ver1.0.1
*
* 使い方:
*
*   アイテムのメモ欄に characterCostume / faceCostume / battlerCostume
*   タグでグラフィックを設定します。
*   このアイテムを使用すればアクターのグラフィックを変更することができます。
*
*   すでにその衣装に着替えている場合は、アクターの初期衣装に戻ります。
*
*   このプラグインは RPGツクールMV Version 1.3.4 で動作確認をしています。
*
*
* メモ欄タグ(アイテム):
*
*   <characterCostume:People1 0>   # 歩行グラフィックの衣装効果を設定
*   <faceCostume:People1 0>        # 顔グラフィックの衣装効果を設定
*   <battlerCostume:Actor3_6>      # サイドビューバトラーの衣装効果を設定
*
*
* プラグインコマンド:
*
*   useCostume 51 1
*     アイテム番号 51 番の衣装を 1 番のアクターに適用します。
*     アクター番号を省略した場合はパーティの先頭にいるアクターが
*     対象になります。
*
*     数値の代わりに /V[n] などの制御文字も使えます。
*     useCostume /V[1] 1
*     このコマンドを実行した場合、ゲーム変数 1 番の値を衣装の
*     アイテム番号として、その衣装を 1 番のアクターに適用します。
*
*   resetCostume 1
*     1 番のアクターのすべてのグラフィックを初期状態に戻します。
*
*   saveCostume 1
*     1 番のアクターの現在のグラフィックを初期状態として記憶します。
*
*   isCostume 1 51 3
*     1 番のアクターが 51 番の衣装アイテムを使用した状態ならば
*     ゲームスイッチ 3 番をオンに、そうでなければオフにします。
*
*
* スクリプトコマンド:
*
*   this.isCostume(1, 51)
*     1 番のアクターが 51 番の衣装アイテムを使用した状態ならば
*     true、そうでなければ false を返します。
*     イベントコマンド『条件分岐』『スクリプト』などで使用できます。
*/

var Imported = Imported || {};
Imported.TMCostume = true;

if (!TMPlugin.InterpreterBase) {
  TMPlugin.InterpreterBase = true;
  (function() {

    Game_Interpreter.prototype.convertEscapeCharactersTM = function(text) {
      text = text.replace(/\\/g, '\x1b');
      text = text.replace(/\x1b\x1b/g, '\\');
      text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
        return $gameVariables.value(parseInt(arguments[1]));
      }.bind(this));
      text = text.replace(/\x1bV\[(\d+)\]/gi, function() {
        return $gameVariables.value(parseInt(arguments[1]));
      }.bind(this));
      text = text.replace(/\x1bN\[(\d+)\]/gi, function() {
        return this.actorNameTM(parseInt(arguments[1]));
      }.bind(this));
      text = text.replace(/\x1bP\[(\d+)\]/gi, function() {
        return this.partyMemberNameTM(parseInt(arguments[1]));
      }.bind(this));
      text = text.replace(/\x1bG/gi, TextManager.currencyUnit);
      return text;
    };
  
    Game_Interpreter.prototype.actorNameTM = function(n) {
      var actor = n >= 1 ? $gameActors.actor(n) : null;
      return actor ? actor.name() : '';
    };

    Game_Interpreter.prototype.partyMemberNameTM = function(n) {
      var actor = n >= 1 ? $gameParty.members()[n - 1] : null;
      return actor ? actor.name() : '';
    };

  })();
} // TMPlugin.InterpreterBase

(function() {

  //-----------------------------------------------------------------------------
  // Game_Actor
  //

  var _Game_Actor_initImages = Game_Actor.prototype.initImages;
  Game_Actor.prototype.initImages = function() {
    _Game_Actor_initImages.call(this);
    this.setOriginImages();
  };

  Game_Actor.prototype.setOriginImages = function() {
    this._characterNameOrigin = this._characterName;
    this._characterIndexOrigin = this._characterIndex;
    this._faceNameOrigin = this._faceName;
    this._faceIndexOrigin = this._faceIndex;
    this._battlerNameOrigin = this._battlerName;
  };

  Game_Actor.prototype.characterNameOrigin = function() {
    if (this._characterNameOrigin == null) this._characterNameOrigin = this.actor().characterName;
    return this._characterNameOrigin;
  };

  Game_Actor.prototype.characterIndexOrigin = function() {
    if (this._characterIndexOrigin == null) this._characterIndexOrigin = this.actor().characterIndex;
    return this._characterIndexOrigin;
  };

  Game_Actor.prototype.faceNameOrigin = function() {
    if (this._faceNameOrigin == null) this._faceNameOrigin = this.actor().faceName;
    return this._faceNameOrigin;
  };

  Game_Actor.prototype.faceIndexOrigin = function() {
    if (this._faceIndexOrigin == null) this._faceIndexOrigin = this.actor().faceIndex;
    return this._faceIndexOrigin;
  };

  Game_Actor.prototype.battlerNameOrigin = function() {
    if (this._battlerNameOrigin == null) this._battlerNameOrigin = this.actor().battlerName;
    return this._battlerNameOrigin;
  };

  Game_Actor.prototype.useCostume = function(item) {
    var characterCostume = item.meta.characterCostume;
    var faceCostume = item.meta.faceCostume;
    var battlerCostume = item.meta.battlerCostume;
    if (characterCostume) {
      var a = characterCostume.split(' ');
      this.changeCharacterCostume(a[0], +a[1]);
    }
    if (faceCostume) {
      var a = faceCostume.split(' ');
      this.changeFaceCostume(a[0], +a[1]);
    }
    if (battlerCostume) {
      this.changeBattlerCostume(battlerCostume);
    }
  };
  
  Game_Actor.prototype.changeCharacterCostume = function(characterName, characterIndex) {
    if (this._characterName === characterName && this._characterIndex === characterIndex) {
      this.loadOriginCharacterImage();
    } else {
      this.setCharacterImage(characterName, characterIndex);
    }
  };
  
  Game_Actor.prototype.loadOriginCharacterImage = function() {
    this.setCharacterImage(this.characterNameOrigin(), this.characterIndexOrigin());
  };
  
  Game_Actor.prototype.changeFaceCostume = function(faceName, faceIndex) {
    if (this._faceName === faceName && this._faceIndex === faceIndex) {
      this.loadOriginFaceImage();
    } else {
      this.setFaceImage(faceName, faceIndex);
    }
  };
  
  Game_Actor.prototype.loadOriginFaceImage = function() {
    this.setFaceImage(this.faceNameOrigin(), this.faceIndexOrigin());
  };

  Game_Actor.prototype.changeBattlerCostume = function(battlerName) {
    if (this._battlerName === battlerName) {
      this.loadOriginBattlerImage();
    } else {
      this.setBattlerImage(battlerName);
    }
  };
  
  Game_Actor.prototype.loadOriginBattlerImage = function() {
    this.setBattlerImage(this.battlerNameOrigin());
  };

  Game_Actor.prototype.resetCostume = function() {
    this.loadOriginCharacterImage();
    this.loadOriginFaceImage();
    this.loadOriginBattlerImage();
  };

  Game_Actor.prototype.isCostume = function(itemId) {
    var item = $dataItems[itemId];
    if (!item) return fakse;
    var characterCostume = item.meta.characterCostume;
    var faceCostume = item.meta.faceCostume;
    var battlerCostume = item.meta.battlerCostume;
    if (characterCostume) {
      var a = characterCostume.split(' ');
      if (this._characterName !== a[0] || this._characterIndex !== +a[1]) return false;
    }
    if (faceCostume) {
      var a = faceCostume.split(' ');
      if (this._faceName !== a[0] || this._faceIndex !== +a[1]) return false;
    }
    if (battlerCostume && this._battlerName !== battlerCostume) return false;
    return true;
  };

  //-----------------------------------------------------------------------------
  // Game_Interpreter
  //

  var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
  Game_Interpreter.prototype.pluginCommand = function(command, args) {
    _Game_Interpreter_pluginCommand.call(this, command, args);
    if (command === 'useCostume') {
      var arr = args.map(this.convertEscapeCharactersTM, this);
      var item = $dataItems[+arr[0]];
      if (item) {
        var actor = arr[1] ? $gameActors.actor(+arr[1]) : $gameParty.leader();
        if (actor) actor.useCostume(item);
        $gamePlayer.refresh();
      }
    } else if (command === 'resetCostume') {
      var arr = args.map(this.convertEscapeCharactersTM, this);
      var actor = arr[0] ? $gameActors.actor(+arr[0]) : $gameParty.leader();
      if (actor) {
        actor.resetCostume();
        $gamePlayer.refresh();
      }
    } else if (command === 'saveCostume') {
      var arr = args.map(this.convertEscapeCharactersTM, this);
      var actor = arr[0] ? $gameActors.actor(+arr[0]) : $gameParty.leader();
      if (actor) actor.setOriginImages();
    } else if (command === 'isCostume') {
      var arr = args.map(this.convertEscapeCharactersTM, this);
      $gameSwitches.setValue(+arr[2], this.isCostume(+arr[0], +arr[1]));
    }
  };

  Game_Interpreter.prototype.isCostume = function(actorId, itemId) {
    var actor = actorId ? $gameActors.actor(actorId) : $gameParty.leader();
    return actor ? actor.isCostume(itemId) : false;
  };

  //-----------------------------------------------------------------------------
  // Scene_Item
  //

  var _Scene_Item_useItem = Scene_Item.prototype.useItem;
  Scene_Item.prototype.useItem = function() {
    this.checkCostume();
    _Scene_Item_useItem.call(this);
  };

  Scene_Item.prototype.checkCostume = function() {
    var item = this.item();
    var characterCostume = item.meta.characterCostume;
    var faceCostume = item.meta.faceCostume;
    var battlerCostume = item.meta.battlerCostume;
    if (characterCostume || faceCostume || battlerCostume) {
      this.itemTargetActors().forEach(function(target) {
        target.useCostume(item);
      }, this);
      this._costumeChanged = true;
      $gamePlayer.refresh();
    }
  };

  var _Scene_Item_isItemEffectsValid = Scene_Item.prototype.isItemEffectsValid;
  Scene_Item.prototype.isItemEffectsValid = function() {
    _Scene_Item_isItemEffectsValid.call(this);
    var item = this.item();
    var characterCostume = item.meta.characterCostume;
    var faceCostume = item.meta.faceCostume;
    var battlerCostume = item.meta.battlerCostume;
    return _Scene_Item_isItemEffectsValid.call(this) || characterCostume || faceCostume || battlerCostume;
  };

  var _Scene_Item_update = Scene_Item.prototype.update;
  Scene_Item.prototype.update = function() {
    _Scene_Item_update.call(this);
    if (this._costumeChanged && ImageManager.isReady()) {
      this._actorWindow.refresh();
      this._costumeChanged = false;
    }
  };

})();

点评

木星的可以用指令換裝 @help プラグインコマンド: * SetCharGeneBaseKind n kind # アクター n 番の基礎タイプを変更 * SetCharGeneDamage bool n1 n2... * # アクター n 番   发表于 2019-10-25 10:25
https://rpg.blue/data/attachment/album/202003/28/021323lltgrsvfytfwuya5.gif
回复

使用道具 举报

梦石
0
星屑
3922
在线时间
1198 小时
注册时间
2016-8-9
回帖
2355

开拓者

发表于 2019-10-22 00:32:24 | 显示全部楼层
酸酸甜甜就④哇噢
回复

使用道具 举报

梦石
0
星屑
962
在线时间
135 小时
注册时间
2017-10-18
回帖
41
 楼主| 发表于 2019-10-23 16:16:38 | 显示全部楼层
wabcmcc 发表于 2019-10-21 20:14
按鈕換裝(事件頁)https://rpg.blue/thread-479015-1-2.html三樓

紙娃娃換裝插件有,

TMPlugin - 衣装アイテム
这插件的内容很接近行走图换装,但作者发布的是源代码而不是JS文件,我根本不懂JS,用不了啊
回复

使用道具 举报

梦石
0
星屑
962
在线时间
135 小时
注册时间
2017-10-18
回帖
41
 楼主| 发表于 2019-10-23 16:22:28 | 显示全部楼层
白嫩白嫩的 发表于 2019-10-22 00:32
奶牛搬运的srd系列,角色创建有一大堆相关插件

我试了下SRD的这个插件,初衷好像是自定义角色,行走图是插件内的子功能,而且是"替换"而不是"换装",用不了啊,不过还是谢谢你的回复
回复

使用道具 举报

梦石
0
星屑
9064
在线时间
1933 小时
注册时间
2016-6-19
回帖
329
发表于 2019-10-23 16:47:43 | 显示全部楼层
b1db1db1 发表于 2019-10-23 16:22
我试了下SRD的这个插件,初衷好像是自定义角色,行走图是插件内的子功能,而且是"替换"而不是"换装",用 ...

SRD_CharacterCreator 和 SRD_DynamicActors 连用,给装备添加标签就能换装了
回复

使用道具 举报

梦石
0
星屑
16261
在线时间
4014 小时
注册时间
2015-9-14
回帖
1322

开拓者

发表于 2019-10-23 17:42:40 | 显示全部楼层
这插件的内容很接近行走图换装,但作者发布的是源代码而不是JS文件


這是 js 插件(腳本).
按照說明給道具,裝備,在備註欄加上標籤.
用插件指令或腳本指令也可以換裝.

實在不行用事件換裝.
https://rpg.blue/data/attachment/album/202003/28/021323lltgrsvfytfwuya5.gif
回复

使用道具 举报

梦石
0
星屑
962
在线时间
135 小时
注册时间
2017-10-18
回帖
41
 楼主| 发表于 2019-10-23 18:40:24 | 显示全部楼层
康姆图帕帕 发表于 2019-10-23 16:47
SRD_CharacterCreator 和 SRD_DynamicActors 连用,给装备添加标签就能换装了

啃着谷歌翻译看,还是不太懂。
这两插件提示需要Game Upgrade和Super Tools Engine这两个前置。
而且换装用的png图片是放在哪个文件夹?
/img/SumRndmDde/character-creator-ex/?还是 /img/SumRndmDde/character-creator-ex/walk/?
我还试着放在/character-creator-ex/文件夹里但测试游戏还是没有效果。
回复

使用道具 举报

梦石
0
星屑
962
在线时间
135 小时
注册时间
2017-10-18
回帖
41
 楼主| 发表于 2019-10-23 18:46:38 | 显示全部楼层
wabcmcc 发表于 2019-10-23 17:42
這是 js 插件(腳本).
按照說明給道具,裝備,在備註欄加上標籤.
用插件指令或腳本指令也可以換裝.

我试着用记事本把代码放了进去,以及用IntelliJ IDEA将代码写入别的JS文件并重命名。
但TMPlugin插件的说明我还是看不太懂,PNG文件应该放在哪个文件夹,/img/characters/?

事件更换行走图我知道,但我的换装素材非常多,用事件更换行走图会占用游戏大小以及几何级的素材修改工作,所以我才想找找有没ACE上简单的换装脚本插件。
回复

使用道具 举报

梦石
0
星屑
1046
在线时间
56 小时
注册时间
2016-8-11
回帖
21
发表于 2019-10-23 18:48:10 | 显示全部楼层
建议楼主先了解MV插件安装方法
回复 1 0

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部