Project1

标题: 横版战斗中按纵向格子依次排序敌群。 [打印本页]

作者: 夏末渐离    时间: 2016-1-11 16:19
标题: 横版战斗中按纵向格子依次排序敌群。
本帖最后由 夏末渐离 于 2016-1-11 16:37 编辑

JAVASCRIPT 代码复制下载
  1. /*:
  2.  * 原理:
  3.  * 把敌人当成格子,根据纵向绘制横向。
  4.  * 缺点:
  5.  * 1.每个敌人都需要添加注释,否则这个敌人会失踪……
  6.  * 例如:<EnemyGrid:1>
  7.  * 2.在敌群添加敌人时必须恰好填满每列最大格子数。
  8.  * 例如:一列规定为4个格子时,依次放一个占1个格子的敌人+一个占2个格子的敌人+一个占1个格子的敌人则视为填满这一列。
  9.  *       若依次放三个占1个格子的敌人+一个占2个格子的敌人则超出这列的最大格子数,会发生诡异的排列。
  10.  * @author XMJL
  11.  * @plugindesc  sort troop as grid.
  12.  *
  13.  * @param EnemyColGrid
  14.  * @default 4
  15.  *
  16.  * @param EnemyGridWidth
  17.  * @default 200
  18.  *
  19.  * @param EnemyGridHeight
  20.  * @default 150
  21.  *
  22.  * @param ScreenLeft
  23.  * @default 100
  24.  *
  25.  * @param ScreenTop
  26.  * @default 100
  27.  */
  28. (function()
  29. {
  30.     var param = PluginManager.parameters('XMJL_SortEnemyGrid');
  31.     var EnemyColGrid=Number(param['EnemyColGrid']);
  32.     var EnemyGridWidth=Number(param['EnemyGridWidth']);
  33.     var EnemyGridHeight=Number(param['EnemyGridHeight']);
  34.     var ScreenLeft=Number(param['ScreenLeft']);
  35.     var ScreenTop=Number(param['ScreenTop']);
  36.     var EnemyType;
  37.     var FillFull;
  38.     var _Game_Enemy_initMembers=Game_Enemy.prototype.initMembers;
  39.     Game_Enemy.prototype.initMembers=function()
  40.     {
  41.         _Game_Enemy_initMembers.call(this);
  42.         EnemyType=new Array();
  43.         FillFull=0;
  44.     }
  45.     Game_Enemy.prototype.screenX = function()
  46.     {
  47.         if($gameSystem.isSideView())
  48.         return ScreenLeft+FillFull*EnemyGridWidth;
  49.         else
  50.         return this._screenX;
  51.     };
  52.  
  53.    Game_Enemy.prototype.screenY = function() {
  54.           if($gameSystem.isSideView())
  55.           {
  56.               var index=this.index();
  57.               var enemy=this.enemy();
  58.               var type= Number(enemy.meta.EnemyGrid);
  59.               var lockAnchor=type*EnemyGridHeight/2;
  60.               var lastgrid=XMJL_caluEnemyGrid(index,type);
  61.               if(lastgrid==0)
  62.                   return ScreenTop+lockAnchor;
  63.               else
  64.                   return ScreenTop+lastgrid*EnemyGridHeight+lockAnchor;
  65.           }
  66.           else
  67.           return this._screenY;
  68.     };
  69.     var XMJL_caluEnemyGrid=function(index,type)
  70.     {
  71.         var sum;
  72.          if(index==0)
  73.          {
  74.              sum=0;
  75.              EnemyType[index]=type;
  76.              return 0;
  77.          }
  78.          else
  79.          {
  80.              sum=EnemyType[index-1]+type;
  81.              if(sum>=EnemyColGrid)
  82.              {
  83.                  FillFull++;
  84.                  EnemyType[index]=sum%EnemyColGrid;
  85.              }
  86.              else
  87.              EnemyType[index]=sum;
  88.              return EnemyType[index-1];
  89.          }
  90.     }
  91. })();

说明
诡异的排列

绘制效果:

作者: Denis    时间: 2016-1-11 16:24
支持大大,多谢
作者: 梦幻学习机器    时间: 2016-1-11 16:46
//==============================================================================
// MrTS_BattleCharacterLimit.js
//==============================================================================

/*:
* @plugindesc Changes character placement for battles.
* @author Mr. Trivel
*
* @param Max Characters
* @desc 设置人物数量
* @default 4
*
* @param Characters Per Row
* @desc 设置人物数量
* @default 4
*
* @param Offset
* @desc Y坐标
* @default 120
*
* @param Vertical Offset
* @desc X坐标
* @default 360
*
* @param Lower Index
* @desc How further each character below is
* @default 48
*
* @param Forward Offset
* @desc Move the rows by an offset for each row in battle
* @default 100
*
* @param Row Spacing
* @desc Space between rows
* @default 100
*
* @param Vertical Chara Spacing
* @desc Space between rows
* @default 54
*
* @help Version 1.1
*/

(function() {
        var parameters = PluginManager.parameters('人物战斗队伍');

        var maxCharacters = Number(parameters['Max Characters'] || 5);
        var charasPerRow = Number(parameters['Characters Per Row'] || 3);
        var rightOffset = Number(parameters['Offset'] || 120);
        var topOffset = Number(parameters['Vertical Offset'] || 360);
        var lowerCharaIndex = Number(parameters['Lower Index'] || 48);
        var forwardIndex = Number(parameters['Forward Offset'] || 100);
        var rowSpacing = Number(parameters['Row Spacing'] || 100);
        var charaVerticalSpacing = Number(parameters['Vertical Chara Spacing'] || 54);

        Game_Party.prototype.maxBattleMembers = function() {
            return maxCharacters;
        };

        Sprite_Actor.prototype.setActorHome = function(index) {
                var c = Math.floor(index/charasPerRow);
                var x = (Graphics.boxWidth - rightOffset) - forwardIndex * Math.floor($gameParty.battleMembers().length/charasPerRow) + lowerCharaIndex * (index % charasPerRow) + rowSpacing * c;
                var y = topOffset + (index%charasPerRow) * charaVerticalSpacing;
            this.setHome(x, y);
        };

})();


太好了,一直就想要排列多排敌人的!谢谢楼主!

上面是排列我方参战人员和最大数的,楼主插件可以集成提高敌群敌人最大数量吗?
作者: trentswd    时间: 2016-1-11 21:13
应该加一点透视吧,你看主角方都有透视!
作者: dujian15    时间: 2016-1-11 21:49
大大啊!求你把地图的插件移植到菜单先项里,就是地图不在游戏界面上,而是按下Esc,显示在菜单的某个窗口里。




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