Project1

标题: MOG_HPGauge显示能否超过6位数 [打印本页]

作者: j296196585    时间: 2017-10-9 22:21
标题: MOG_HPGauge显示能否超过6位数
MOG_HPGauge显示能否超过6位数



//==============================
// * create Number
//==============================
HPGaugeSprite.prototype.createNumber = function() {
        this._hp_number = [];
        this._numberData = [this.battler().hp - 1,this._numberImg.width / 11,this._numberImg.height]
        for (var i = 0; i < 6; i++) {
                 this._hp_number = new Sprite(this._numberImg);
                 this._hp_number.visible = false;
                 if (this.type === 0) {
                     this._hp_number.x = Moghunter.hpgauge_a_xa + Moghunter.hpgauge_c_xa;
                     this._hp_number.y = Moghunter.hpgauge_a_ya + Moghunter.hpgauge_c_ya;
                 } else {
                     this._hp_number.x = Moghunter.hpgauge_a_x + Moghunter.hpgauge_c_x;
                     this._hp_number.y = Moghunter.hpgauge_a_y + Moghunter.hpgauge_c_y;
                 };
                 this._hp_number.org = [this._hp_number.x,this._hp_number.y];
                 this.addChild(this._hp_number);                 
        };
};

不知道是不是这里调试 一动插件就错误

360截图20171009221802290.jpg (159.24 KB, 下载次数: 2)

360截图20171009221802290.jpg

作者: soulsaga    时间: 2017-10-10 11:29
for (var i = 0; i < 6; i++) {
6是指6位数..不排除还有其他位置要改..
作者: j296196585    时间: 2017-10-11 13:19


这是原插件  完全不知道从哪里下手。。



JAVASCRIPT 代码复制
  1. //=============================================================================
  2. // MOG_HPGauge.js
  3. //=============================================================================
  4.  
  5. /*:
  6.  * @plugindesc (v1.0) Apresenta um medidor de HP do alvo.
  7.  * @author Moghunter
  8.  *
  9.  * @param Gauge For Actors
  10.  * @desc Apresentar o HP nos aliados .
  11.  * @default true
  12.  *
  13.  * @param Gauge For Enemies
  14.  * @desc Apresentar o HP nos inimigos.
  15.  * @default true
  16.  *
  17.  * @param Show HP On Selection
  18.  * @desc Apresentar o HP na seleção do alvo.
  19.  * @default true
  20.  *
  21.  * @param Fade Duration
  22.  * @desc Definição do tempo para ativar o fade.
  23.  * @default 90
  24.  *
  25.  * @param Slide Animation
  26.  * @desc Ativar animação de deslize.
  27.  * @default true
  28.  *  
  29.  * @param Show HP Number Actor
  30.  * @desc Apresentar o número de HP para o ator.
  31.  * @default false
  32.  *
  33.  * @param Show HP Number Enemy
  34.  * @desc Apresentar o número de HP para o inimigo.
  35.  * @default true
  36.  *
  37.  * @param Required to Kill
  38.  * @desc Requer derrotar o inimigo para mostrar o HP.
  39.  * @default false
  40.  *
  41.  * @param Actor Layout X-Axis
  42.  * @desc Posição X-Axis do layout.
  43.  * @default 0
  44.  *
  45.  * @param Actor Layout Y-Axis
  46.  * @desc Posição Y-Axis do layout.
  47.  * @default 0
  48.  *
  49.  * @param Actor Meter X-Axis
  50.  * @desc Posição X-Axis do medidor.
  51.  * @default 0
  52.  *
  53.  * @param Actor Meter Y-Axis
  54.  * @desc Posição Y-Axis do medidor.
  55.  * @default 3
  56.  *
  57.  * @param Actor HP Number X-Axis
  58.  * @desc Posição X-Axis do numero de HP.
  59.  * @default -25
  60.  *
  61.  * @param Actor HP Number Y-Axis
  62.  * @desc Posição Y-Axis do numero de HP.
  63.  * @default -22
  64.  *
  65.  * @param Enemy Layout X-Axis
  66.  * @desc Posição X-Axis do layout.
  67.  * @default 0
  68.  *
  69.  * @param Enemy Layout Y-Axis
  70.  * @desc Posição Y-Axis do layout.
  71.  * @default 0
  72.  *
  73.  * @param Enemy Meter X-Axis
  74.  * @desc Posição X-Axis do medidor.
  75.  * @default 8
  76.  *
  77.  * @param Enemy Meter Y-Axis
  78.  * @desc Posição Y-Axis do medidor.
  79.  * @default 10
  80.  *
  81.  * @param Enemy HP Number X-Axis
  82.  * @desc Posição X-Axis do numero de HP.
  83.  * @default -25
  84.  *
  85.  * @param Enemy HP Number Y-Axis
  86.  * @desc Posição Y-Axis do numero de HP.
  87.  * @default -19
  88.  *  
  89.  * @help  
  90.  * =============================================================================
  91.  * +++ MOG - HP Gauge (v1.0) +++
  92.  * By Moghunter
  93.  * [url]https://atelierrgss.wordpress.com/[/url]
  94.  * =============================================================================
  95.  * Apresenta um medidor de HP do alvo.
  96.  * Serão necessários os arquivos. (img/system/)
  97.  *
  98.  * HPGaugeActor_A.png
  99.  * HPGaugeActor_B.png
  100.  * HPGaugeActor_C.png
  101.  * HPGaugeEnemy_A.png
  102.  * HPGaugeEnemy_B.png
  103.  * HPGaugeEnemy_C.png  
  104.  *
  105.  * =============================================================================
  106.  * NOTETAGS
  107.  * =============================================================================
  108.  * Para ocultar o HP do inimigo use a seguinte Tag na caixa de notas
  109.  *
  110.  * Hide HP
  111.  *
  112.  * -----------------------------------------------------------------------------
  113.  * Para ajustar a posição do medidor use a Tag abaixo.
  114.  *
  115.  * Hp Gauge Offset: X:Y
  116.  *
  117.  * Exemplo
  118.  *
  119.  * Hp Gauge Offset: 130:40
  120.  *
  121.  */
  122.  
  123. //=============================================================================
  124. // ** PLUGIN PARAMETERS
  125. //=============================================================================
  126.   var Imported = Imported || {};
  127.   Imported.MOG_HPGauge = true;
  128.   var Moghunter = Moghunter || {};
  129.  
  130.    Moghunter.parameters = PluginManager.parameters('MOG_HPGauge');
  131.     Moghunter.hpgauge_actors = String(Moghunter.parameters['Gauge For Actors'] || "true");
  132.         Moghunter.hpgauge_enemies = String(Moghunter.parameters['Gauge For Enemies'] || "true");
  133.         Moghunter.hpgauge_selection = String(Moghunter.parameters['Show HP On Selection'] || "true");
  134.         Moghunter.hpgauge_slide = String(Moghunter.parameters['Slide Animation'] || "true");
  135.         Moghunter.hpgauge_showNumberActor = String(Moghunter.parameters['Show HP Number Actor'] || "false");
  136.         Moghunter.hpgauge_showNumberEnemy = String(Moghunter.parameters['Show HP Number Enemy'] || "true");
  137.         Moghunter.hpgauge_NumberAfter = String(Moghunter.parameters['Required to Kill'] || "false");
  138.     Moghunter.hpgauge_a_x = Number(Moghunter.parameters['Enemy Layout X-Axis'] || 0);
  139.     Moghunter.hpgauge_a_y = Number(Moghunter.parameters['Enemy Layout Y-Axis'] || 0);
  140.     Moghunter.hpgauge_b_x = Number(Moghunter.parameters['Enemy Meter X-Axis'] || 8);
  141.     Moghunter.hpgauge_b_y = Number(Moghunter.parameters['Enemy Meter Y-Axis'] || 10);       
  142.     Moghunter.hpgauge_c_x = Number(Moghunter.parameters['Enemy HP Number X-Axis'] || -30);
  143.     Moghunter.hpgauge_c_y = Number(Moghunter.parameters['Enemy HP Number Y-Axis'] || -19);       
  144.     Moghunter.hpgauge_a_xa = Number(Moghunter.parameters['Actor Layout X-Axis'] || 0);
  145.     Moghunter.hpgauge_a_ya = Number(Moghunter.parameters['Actor Layout Y-Axis'] || 0);
  146.     Moghunter.hpgauge_b_xa = Number(Moghunter.parameters['Actor Meter X-Axis'] || 0);
  147.     Moghunter.hpgauge_b_ya = Number(Moghunter.parameters['Actor Meter Y-Axis'] || 3);       
  148.     Moghunter.hpgauge_c_xa = Number(Moghunter.parameters['Actor HP Number X-Axis'] || -25);
  149.     Moghunter.hpgauge_c_ya = Number(Moghunter.parameters['Actor HP Number Y-Axis'] || -19);               
  150.         Moghunter.hpgauge_duration = Number(Moghunter.parameters['Fade Duration'] || 90);
  151.  
  152. //=============================================================================
  153. // ** Game_Temp
  154. //=============================================================================
  155.  
  156. //==============================
  157. // * Initialize
  158. //==============================
  159. var _mog_hpgauge_temp_initialize = Game_Temp.prototype.initialize;
  160. Game_Temp.prototype.initialize = function() {
  161.         _mog_hpgauge_temp_initialize.call(this);
  162.     this._hpGauge = [true,false];
  163. };
  164.  
  165. //=============================================================================
  166. // ** Game_System
  167. //=============================================================================
  168.  
  169. //==============================
  170. // * Initialize
  171. //==============================
  172. var _mog_hpgauge_sys_initialize = Game_System.prototype.initialize;
  173. Game_System.prototype.initialize = function() {
  174.         _mog_hpgauge_sys_initialize.call(this);
  175.     this._hpGaugeEDef = [];
  176. };
  177.  
  178. //=============================================================================
  179. // ** BattleManager
  180. //=============================================================================
  181.  
  182. //==============================
  183. // * processVictory
  184. //==============================
  185. var _mog_hpGauge_processVictory = BattleManager.processVictory;
  186. BattleManager.processVictory = function() {
  187.          $gameTemp._hpGauge[0] = false;
  188.          _mog_hpGauge_processVictory.call(this);         
  189. };
  190.  
  191. //==============================
  192. // * processAbort
  193. //==============================
  194. var _mog_hpGauge_processAbort = BattleManager.processAbort;
  195. BattleManager.processAbort = function() {
  196.          $gameTemp._hpGauge[0] = false;
  197.          _mog_hpGauge_processAbort.call(this);         
  198. };
  199.  
  200. //==============================
  201. // * processDefeat
  202. //==============================
  203. var _mog_hpGauge_processDefeat = BattleManager.processDefeat;
  204. BattleManager.processDefeat = function() {
  205.          $gameTemp._hpGauge[0] = false;
  206.          _mog_hpGauge_processDefeat.call(this);         
  207. };
  208.  
  209. //=============================================================================
  210. // ** Game Battler
  211. //=============================================================================
  212.  
  213. //==============================
  214. // * init Members
  215. //==============================
  216. var _mog_hpgauge_gbat_initMembers = Game_Battler.prototype.initMembers;
  217. Game_Battler.prototype.initMembers = function() {
  218.     _mog_hpgauge_gbat_initMembers.call(this);
  219.     this._ehpgauge = [false,0,0,false,false];
  220. };
  221.  
  222. //==============================
  223. // * check HP Gauge Notes
  224. //==============================
  225. Game_Battler.prototype.checkHPGaugeNotes = function() {
  226.         this.notetags().forEach(function(note) {
  227.                 if (note == "Hide HP") {this._ehpgauge[0] = false};
  228.          var note_data = note.split(': ')
  229.                  if (note_data[0].toLowerCase() == "hp gauge offset"){
  230.                          var par = note_data[1].split(':');
  231.                      this._ehpgauge[1] = Number(par[0]);
  232.                          this._ehpgauge[2] = Number(par[1]);
  233.                  };               
  234.         },this);
  235. };
  236.  
  237. //==============================
  238. // * Notetags
  239. //==============================
  240. Game_Battler.prototype.notetags = function() {
  241.         if (this.isEnemy()) {return this.enemy().note.split(/[\r\n]+/)};
  242.         if (this.isActor()) {return this.actor().note.split(/[\r\n]+/)};
  243. };
  244.  
  245. //=============================================================================
  246. // ** Game_Actor
  247. //=============================================================================
  248.  
  249. //==============================
  250. // * Setup
  251. //==============================
  252. var _mog_hp_gauge_gactor_setup = Game_Actor.prototype.setup;
  253. Game_Actor.prototype.setup = function(actorId) {
  254.         _mog_hp_gauge_gactor_setup.call(this,actorId);
  255.         if (String(Moghunter.hpgauge_actors) === "true") {this._ehpgauge[0] = true};
  256.         this.checkHPGaugeNotes();
  257. };
  258.  
  259. //=============================================================================
  260. // ** Game_Enemy
  261. //=============================================================================
  262.  
  263. //==============================
  264. // * Setup
  265. //==============================
  266. var _mog_hpgauge_genemy_setup = Game_Enemy.prototype.setup;
  267. Game_Enemy.prototype.setup = function(enemyId, x, y) {
  268.         _mog_hpgauge_genemy_setup.call(this,enemyId, x, y);
  269.         if (String(Moghunter.hpgauge_enemies) === "true") {this._ehpgauge[0] = true};
  270.         this.checkHPGaugeNotes();
  271. };
  272.  
  273. //==============================
  274. // * Die
  275. //==============================
  276. var _mog_hpgauge_genemy_die = Game_Enemy.prototype.die;
  277. Game_Enemy.prototype.die = function() {
  278.         _mog_hpgauge_genemy_die.call(this);
  279.         $gameSystem._hpGaugeEDef[this._enemyId] = true;
  280. };
  281.  
  282. //=============================================================================
  283. // ** Game Action
  284. //=============================================================================
  285.  
  286. //==============================
  287. // * Apply
  288. //==============================
  289. var _mog_hpgauge_gaction_apply = Game_Action.prototype.apply;
  290. Game_Action.prototype.apply = function(target) {
  291.          _mog_hpgauge_gaction_apply.call(this,target);
  292.      if (target) {
  293.                  if (this.isHpRecover()) {
  294.                          target._ehpgauge[4] = true;
  295.                  } else if (this.item() && this.item().damage.type === 5) {
  296.                          target._ehpgauge[4] = true;
  297.                          var subj = this.subject();
  298.                          if (subj) {subj._ehpgauge[4] = true};
  299.                  };
  300.           };
  301. };
  302.  
  303. //=============================================================================
  304. // ** Spriteset_Battle
  305. //=============================================================================       
  306.  
  307. //==============================
  308. // * CreateLowerLayer
  309. //==============================
  310. var _mog_hpgauge_createUpperLayer = Spriteset_Battle.prototype.createUpperLayer
  311. Spriteset_Battle.prototype.createUpperLayer = function() {
  312.         this.create_HPGauge();
  313.         _mog_hpgauge_createUpperLayer.call(this);       
  314. };
  315.  
  316. //==============================
  317. // * Create HP Gauge
  318. //==============================
  319. Spriteset_Battle.prototype.create_HPGauge = function() {
  320.     this.createHPField();
  321.         this.createHPSprites()
  322. };
  323.  
  324. //==============================
  325. // * Create EHP Field
  326. //==============================
  327. Spriteset_Battle.prototype.createHPField = function() {
  328.     this._hpField = new Sprite();
  329.         this._hpField.z = 100;
  330.         this.addChild(this._hpField);
  331. };
  332.  
  333. //==============================
  334. // * Create HP Sprites
  335. //==============================
  336. Spriteset_Battle.prototype.createHPSprites = function() {
  337.         $gameTemp._hpGauge[0] = true;
  338.         this._HPSprites = [];
  339.         if (String(Moghunter.hpgauge_actors) === "true") {
  340.                 for (var i = 0; i < this._actorSprites.length; i++) {
  341.                          this._HPSprites[i] = new HPGaugeSprite(this._actorSprites[i],0);
  342.                          this._hpField.addChild(this._HPSprites[i]);       
  343.                 };
  344.         };
  345.         if (String(Moghunter.hpgauge_enemies) === "true") {
  346.                 for (var i = 0; i < this._enemySprites.length; i++) {
  347.                          this._HPSprites[i] = new HPGaugeSprite(this._enemySprites[i],1);
  348.                          this._hpField.addChild(this._HPSprites[i]);
  349.                 };
  350.         };
  351. };
  352.  
  353. //==============================
  354. // * Update
  355. //==============================
  356. var _mog_hpGauge_sprBat_update = Spriteset_Battle.prototype.update;
  357. Spriteset_Battle.prototype.update = function() {
  358.         _mog_hpGauge_sprBat_update.call(this);
  359.         if (Imported.MOG_BattleCamera && this._hpField) {this.updateHPField()};
  360. };
  361.  
  362. //==============================
  363. // * Update
  364. //==============================
  365. Spriteset_Battle.prototype.updateHPField = function() {
  366.     this._hpField.x = this._battleField.x
  367.         this._hpField.y = this._battleField.y
  368. };
  369.  
  370. //=============================================================================
  371. // ** HP Gauge Sprite
  372. //=============================================================================
  373. function HPGaugeSprite() {
  374.     this.initialize.apply(this, arguments);
  375. };
  376.  
  377. HPGaugeSprite.prototype = Object.create(Sprite.prototype);
  378. HPGaugeSprite.prototype.constructor = HPGaugeSprite;
  379.  
  380. //==============================
  381. // * Initialize
  382. //==============================
  383. HPGaugeSprite.prototype.initialize = function(sprite,type) {
  384.     Sprite.prototype.initialize.call(this);
  385.     this._sprite = sprite;
  386.         this._slideX = 0;
  387.         this._duration = 0;
  388.         this.opacity = 0;
  389.         this.type = type;
  390.         this.z = 100;
  391.         this._slideA = String(Moghunter.hpgauge_slide) === "true" ? true : false;
  392.         this._selectionHP = String(Moghunter.hpgauge_selection) === "true" ? true : false;
  393.         if (type === 0) {
  394.             this._showHPNumber = String(Moghunter.hpgauge_showNumberActor) === "true" ? true : false;
  395.         } else {
  396.             this._showHPNumber = String(Moghunter.hpgauge_showNumberEnemy) === "true" ? true : false;
  397.         };
  398.         this._IDA = type === 0 ? true : this.enemyIDA();
  399.         if (type === 1 && String(Moghunter.hpgauge_NumberAfter) != "true") {this._IDA = true};
  400.         this._data = [0,0,0,0,0];
  401.         this.loadBitmaps();
  402. };
  403.  
  404. //==============================
  405. // * Battler
  406. //==============================
  407. HPGaugeSprite.prototype.battler = function() {
  408.     return this._sprite._battler;
  409. };
  410.  
  411. //==============================
  412. // * Load Bitmaps
  413. //==============================
  414. HPGaugeSprite.prototype.loadBitmaps = function() {
  415.         if (this.type === 0) {
  416.         this._layImg = ImageManager.loadSystem("HPGaugeActor_A");
  417.             this._meterImg = ImageManager.loadSystem("HPGaugeActor_B");
  418.                 this._numberImg = ImageManager.loadSystem("HPGaugeActor_C");
  419.         } else {
  420.         this._layImg = ImageManager.loadSystem("HPGaugeEnemy_A");
  421.             this._meterImg = ImageManager.loadSystem("HPGaugeEnemy_B");       
  422.                 this._numberImg = ImageManager.loadSystem("HPGaugeEnemy_C");       
  423.         };
  424. };
  425.  
  426. //==============================
  427. // * createSprites
  428. //==============================
  429. HPGaugeSprite.prototype.createSprites = function() {
  430.         this.createLayout();
  431.         this.createMeter();
  432.         if (this._showHPNumber) {this.createNumber()};
  433. };
  434.  
  435. //==============================
  436. // * Create Layout
  437. //==============================
  438. HPGaugeSprite.prototype.createLayout = function() {
  439.     this._layout = new Sprite(this._layImg);
  440.         if (this.type === 0) {
  441.             this._layout.x = Moghunter.hpgauge_a_xa - this._layImg.width / 2;
  442.             this._layout.y = Moghunter.hpgauge_a_ya - this._layImg.height / 2;
  443.         } else {
  444.             this._layout.x = Moghunter.hpgauge_a_x - this._layImg.width / 2;
  445.             this._layout.y = Moghunter.hpgauge_a_y - this._layImg.height / 2;
  446.         };
  447.         this.addChild(this._layout);
  448. };
  449.  
  450. //==============================
  451. // * Create Gauge
  452. //==============================
  453. HPGaugeSprite.prototype.createMeter = function() {
  454.         this._meter = [];
  455.         for (var i = 0; i < 2; i++) {
  456.                 this._meter[i] = new Sprite(this._meterImg);
  457.                 this._meter[i].value1 = this.battler().hp;
  458.                 this._meter[i].value2 = this.battler().mhp;
  459.                 this._meter[i].ds = 0;
  460.                 this._meter[i].w = this._meterImg.width;
  461.                 this._meter[i].h = this._meterImg.height / 2;
  462.                 if (this.type === 0) {
  463.                     this._meter[i].x = Moghunter.hpgauge_a_xa + Moghunter.hpgauge_b_xa - this._meterImg.width / 2;
  464.                     this._meter[i].y = Moghunter.hpgauge_a_ya + Moghunter.hpgauge_b_ya - this._meterImg.height / 2;
  465.                 } else {
  466.                     this._meter[i].x = Moghunter.hpgauge_a_x + Moghunter.hpgauge_b_x - this._meterImg.width / 2;
  467.                     this._meter[i].y = Moghunter.hpgauge_a_y + Moghunter.hpgauge_b_y - this._meterImg.height / 2;
  468.             };
  469.                 this.addChild(this._meter[i]);
  470.         };
  471.     this.refreshMeter(this._meter[0],this._meter[0].value1,this.battler().mhp,1);
  472.         this.refreshMeter(this._meter[1],this.battler().hp,this.battler().mhp,0);       
  473.         this.updateMeter();
  474. };
  475.  
  476. //==============================
  477. // * Need Refresh Blue Meter
  478. //==============================
  479. HPGaugeSprite.prototype.needRefreshBlueMeter = function() {
  480.         if (this.battler()._ehpgauge[4]) {return true};
  481.     if (this._meter[1].value1 != this.battler().hp) {return true};
  482.         if (this._meter[1].value2 != this.battler().mhp) {return true};
  483.         return false
  484. };
  485.  
  486. //==============================
  487. // * refresh Blue Meter
  488. //==============================
  489. HPGaugeSprite.prototype.refreshBlueMeter = function() {
  490.          this.battler()._ehpgauge[4] = false;
  491.      this._meter[1].value1 = this.battler().hp;
  492.          this._meter[1].value2 = this.battler().mhp;
  493.          if (!$gameTemp._hpGauge[0]) {return};
  494.          this.refreshMeter(this._meter[0],this._meter[0].value1,this.battler().mhp,1);
  495.          this.refreshMeter(this._meter[1],this.battler().hp,this.battler().mhp,0);
  496.          this.prepareSlide();
  497. };
  498.  
  499. //==============================
  500. // * prepare Slide
  501. //==============================
  502. HPGaugeSprite.prototype.prepareSlide = function() {
  503.         if (this.opacity < 100 || this._slideX > 0) {
  504.             this._slideX = this._slideA ? -50 : -0.01;
  505.             this.opacity = 0;
  506.         };
  507.         this._duration = Math.min(Math.max(Moghunter.hpgauge_duration,1),999);
  508. };
  509.  
  510. //==============================
  511. // * Update Dif
  512. //==============================
  513. HPGaugeSprite.prototype.update_dif = function(value,real_value,speed,type) {
  514.         if (value == real_value) {return value};
  515.         var mr = type === 0 ? 1 : 0.1;
  516.     var dnspeed = mr + (Math.abs(value - real_value) / speed);
  517.         if (value > real_value) {value -= dnspeed;
  518.             if (value < real_value) {value = real_value};
  519.         } else if (value < real_value) {value  += dnspeed;
  520.             if (value  > real_value) {value  = real_value};               
  521.     };
  522.         if (type === 0) {
  523.             return Math.floor(value);
  524.         } else {
  525.                 return value;
  526.         };
  527. };
  528.  
  529. //==============================
  530. // * Need Refresh Red Meter
  531. //==============================
  532. HPGaugeSprite.prototype.needRefreshRedMeter = function() {
  533.      if (this._meter[0].value1 != this.battler().hp) {return true};
  534.          return false;
  535. };
  536.  
  537. //==============================
  538. // * refresh Red Meter
  539. //==============================
  540. HPGaugeSprite.prototype.refreshRedMeter = function() {
  541.            this._meter[0].value1 = this.update_dif(this._meter[0].value1,this.battler().hp, 60,1);
  542.          this.refreshMeter(this._meter[0],this._meter[0].value1,this.battler().mhp,1);
  543. };
  544.  
  545. //==============================
  546. // * Update Meter
  547. //==============================
  548. HPGaugeSprite.prototype.updateMeter = function() {
  549.          if (this.needRefreshRedMeter()) {this.refreshRedMeter()};
  550.          if (this.needRefreshBlueMeter()) {this.refreshBlueMeter()};
  551. };
  552.  
  553. //==============================
  554. // * Refresh Meter
  555. //==============================
  556. HPGaugeSprite.prototype.refreshMeter = function(sprite,value1,value2,h) {
  557.      var wd = value1 * sprite.w / value2
  558.          sprite.setFrame(0,sprite.h * h,wd,sprite.h);  
  559. };
  560.  
  561. //==============================
  562. // * create Number
  563. //==============================
  564. HPGaugeSprite.prototype.createNumber = function() {
  565.         this._hp_number = [];
  566.         this._numberData = [this.battler().hp - 1,this._numberImg.width / 11,this._numberImg.height]
  567.         for (var i = 0; i < 6; i++) {
  568.                  this._hp_number[i] = new Sprite(this._numberImg);
  569.                  this._hp_number[i].visible = false;
  570.                  if (this.type === 0) {
  571.                      this._hp_number[i].x = Moghunter.hpgauge_a_xa + Moghunter.hpgauge_c_xa;
  572.                      this._hp_number[i].y = Moghunter.hpgauge_a_ya + Moghunter.hpgauge_c_ya;
  573.                  } else {
  574.                      this._hp_number[i].x = Moghunter.hpgauge_a_x + Moghunter.hpgauge_c_x;
  575.                      this._hp_number[i].y = Moghunter.hpgauge_a_y + Moghunter.hpgauge_c_y;
  576.                  };
  577.                  this._hp_number[i].org = [this._hp_number[i].x,this._hp_number[i].y];
  578.                  this.addChild(this._hp_number[i]);                 
  579.         };
  580. };
  581.  
  582. //==============================
  583. // * update Number
  584. //==============================
  585. HPGaugeSprite.prototype.updateNumber = function() {
  586.         if (this._numberData[0] != this.battler().hp) {this.refreshNumber()};
  587. };
  588.  
  589. //==============================
  590. // * enemy IDA
  591. //==============================
  592. HPGaugeSprite.prototype.enemyIDA = function() {
  593.          if (this.battler().isActor()) {return true};
  594.      return $gameSystem._hpGaugeEDef[this.battler()._enemyId];
  595. };
  596.  
  597. //==============================
  598. // * ID available
  599. //==============================
  600. HPGaugeSprite.prototype.idIsAvailable = function() {
  601.         return this._IDA;
  602. };
  603.  
  604. //==============================
  605. // * refresh Number
  606. //==============================
  607. HPGaugeSprite.prototype.refreshNumber = function() {
  608.         this._numberData[0] = this.update_dif(this._numberData[0],this.battler().hp, 40,0);
  609.     var w = this._numberData[1];
  610.         var h = this._numberData[2];
  611.         var number = Math.abs(this._numberData[0]).toString().split("");
  612.     for (var i = 0; i < this._hp_number.length; i++) {
  613.            this._hp_number[i].visible = false;         
  614.            if (this.idIsAvailable()) {       
  615.                    if (i <  number.length) {
  616.                            var n = Number(number[i]);
  617.                            this._hp_number[i].setFrame(n * w, 0, w, h);
  618.                            this._hp_number[i].visible = true;          
  619.                            this._hp_number[i].x = this._hp_number[i].org[0] + (w * i);
  620.                    };
  621.            } else {
  622.                    if (i === 0) {
  623.                            this._hp_number[0].setFrame(10 * w, 0, w, h);
  624.                            this._hp_number[0].visible = true;          
  625.                            this._hp_number[0].x = this._hp_number[0].org[0] + (w * 2);                             
  626.                    };
  627.            };
  628.     };       
  629. };
  630.  
  631. //==============================
  632. // * Is Visible
  633. //==============================
  634. HPGaugeSprite.prototype.isVisible = function() {
  635.         if (!this.battler()) {return false};
  636.         if (this.battler().isHidden()) {return false};
  637.     if (!this.battler()._ehpgauge[0]) {return false};
  638.         return true;
  639. };
  640.  
  641. //==============================
  642. // * force Visible
  643. //==============================
  644. HPGaugeSprite.prototype.forceVisible = function() {
  645.      if (this.battler()._ehpgauge[3]) {return true};
  646.          if (this._selectionHP && this.battler().isSelected() && !this.battler().isDead()) {return true};
  647.          return false;
  648. };
  649.  
  650. //==============================
  651. // * pos X
  652. //==============================
  653. HPGaugeSprite.prototype.posX = function() {
  654.         var xs = this.forceVisible() ? 0 : this._slideX;
  655.     return this._sprite.x + xs + this.battler()._ehpgauge[1];
  656. };
  657.  
  658. //==============================
  659. // * pos Y
  660. //==============================
  661. HPGaugeSprite.prototype.posY = function() {
  662.     return this._sprite.y + this.battler()._ehpgauge[2];
  663. };
  664.  
  665. //==============================
  666. // * Update Slide
  667. //==============================
  668. HPGaugeSprite.prototype.updateSlide = function() {
  669.         this._slideX += 2;
  670.         this.opacity += 10;
  671.         if (this._slideX >= 0) {
  672.                 this._slideX = 0;
  673.                 this.opacity = 255;
  674.         };
  675. };
  676.  
  677. //==============================
  678. // * Update Fade
  679. //==============================
  680. HPGaugeSprite.prototype.updateFade = function() {
  681.         if (this._slideA) {this._slideX += 2};
  682.         this.opacity -= 10;
  683. };
  684.  
  685. //==============================
  686. // * Update Slide
  687. //==============================
  688. HPGaugeSprite.prototype.updateAnimation = function() {
  689.     if (this._slideX < 0) {this.updateSlide();return};
  690.         if (this._duration > 0) {this._duration--;return};
  691.         if (this.opacity > 0) {this.updateFade()};       
  692. };
  693.  
  694. //==============================
  695. // * Update Force Visible
  696. //==============================
  697. HPGaugeSprite.prototype.updateForceVisible = function() {
  698.     this.opacity = 255;
  699.     this._duration = 0;
  700.     this._slideX = 0;
  701. };
  702.  
  703. //==============================
  704. // * Update Position
  705. //==============================
  706. HPGaugeSprite.prototype.updatePosition = function() {
  707.    if (this.forceVisible()) {
  708.        this.updateForceVisible();
  709.    } else {
  710.            this.updateAnimation();
  711.    };
  712.    this.x = this.posX();
  713.    this.y = this.posY();
  714. };
  715.  
  716. //==============================
  717. // * Update
  718. //==============================
  719. HPGaugeSprite.prototype.update = function() {
  720.     Sprite.prototype.update.call(this);
  721.         this.visible = this.isVisible();
  722.         if (!this.battler()) {return};
  723.         if (!this._layout && this._meterImg.isReady()) {this.createSprites()};
  724.         if (this._meter) {this.updateMeter()};
  725.         if (this._hp_number) {this.updateNumber()};
  726.     this.updatePosition();
  727. };



作者: soulsaga    时间: 2017-10-11 13:41
JAVASCRIPT 代码复制
  1. //=============================================================================
  2. // MOG_BossHP.js
  3. //=============================================================================
  4.  
  5. /*:
  6.  * @plugindesc (v2.1) Apresenta um medidor de HP para os chefes.
  7.  * @author Moghunter
  8.  *
  9.  * @param Shake Effect
  10.  * @desc Ativar o efeito tremer.
  11.  * @default true
  12.  *
  13.  * @param HP Number Visible
  14.  * @desc Apresentar o HP em numeros.
  15.  * @default true
  16.  *
  17.  * @param Show Face
  18.  * @desc Apresentar a face do inimigo.
  19.  * @default true
  20.  *
  21.  * @param Slant Animation
  22.  * @desc Ativar a animação de Flow no medidor de HP.
  23.  * @default true
  24.  *
  25.  * @param Flow Speed
  26.  * @desc Definição da velocidade da animação.
  27.  * @default 4
  28.  *  
  29.  * @param Name Font Size
  30.  * @desc Definição do tamanho da fonte.
  31.  * @default 18
  32.  *
  33.  * @param Layout X-Axis
  34.  * @desc Posição X-Axis do layout.
  35.  * @default 150
  36.  *
  37.  * @param Layout Y-Axis
  38.  * @desc Posição Y-Axis do layout.
  39.  * @default 10
  40.  *
  41.  * @param BHP Name X-Axis
  42.  * @desc Posição X-Axis do numero.
  43.  * @default 36
  44.  *
  45.  * @param Name Y-Axis
  46.  * @desc Posição Y-Axis do numero.
  47.  * @default 23   
  48.  *
  49.  * @param Face X-Axis
  50.  * @desc Posição X-Axis da face.
  51.  * @default -50
  52.  *
  53.  * @param Face Y-Axis
  54.  * @desc Posição Y-Axis da face.
  55.  * @default 10   
  56.  *
  57.  * @param Meter X-Axis
  58.  * @desc Posição X-Axis do medidor.
  59.  * @default 22
  60.  *
  61.  * @param Meter Y-Axis
  62.  * @desc Posição Y-Axis do medidor.
  63.  * @default 28
  64.  *
  65.  * @param Number X-Axis
  66.  * @desc Posição X-Axis do numero.
  67.  * @default 460
  68.  *
  69.  * @param Number Y-Axis
  70.  * @desc Posição Y-Axis do numero.
  71.  * @default 32  
  72.  *
  73.  * @help  
  74.  * =============================================================================
  75.  * +++ MOG - Boss HP Meter (v2.1) +++
  76.  * By Moghunter
  77.  * [url]https://atelierrgss.wordpress.com/[/url]
  78.  * =============================================================================
  79.  * Apresenta um medidor de HP para os chefes.
  80.  *
  81.  * Serão necessários os arquivos. (img/bosshp/)
  82.  *
  83.  * Boss_HP_A.png
  84.  * Boss_HP_A.png
  85.  * Boss_HP_C.png
  86.  *
  87.  * =============================================================================
  88.  * Use a Tag abaixo na caixa de notas para definir quais os inimigos terão o
  89.  * medidor de chefe.
  90.  *
  91.  * Boss HP
  92.  *
  93.  * =============================================================================
  94.  * FACE NAME
  95.  * =============================================================================
  96.  * Nomeie as faces dos inimigos da seguinte maneira.
  97.  *
  98.  * Face_ + ID.png
  99.  *
  100.  * EG
  101.  *
  102.  * Face_1.png
  103.  * Face_2.png
  104.  * Face_3.png
  105.  * ....
  106.  *
  107.  * -----------------------------------------------------------------------------
  108.  * Para definir a posição do medidor de HP use o seguinte comentário através do
  109.  * comando PLUGIN COMMAND.
  110.  *
  111.  * boss_hp_position : X : Y
  112.  *
  113.  * X - Posição X-axis.
  114.  * Y - Posição X-axis.
  115.  *
  116.  * -----------------------------------------------------------------------------
  117.  * Para ocultar ou mostrar os numeros de HP use o seguinte comentário através do
  118.  * comando PLUGIN COMMAND.
  119.  *
  120.  * boss_hp_number_hide
  121.  * boss_hp_number_show
  122.  *
  123.  * -----------------------------------------------------------------------------
  124.  * HISTÓRICO
  125.  * -----------------------------------------------------------------------------
  126.  * v2.1 - Compatibilidade com o Chrono Engine.
  127.  * v2.0 - Opção de apresentar a Face do inimigo.
  128.  *      - Adição da animação de flow.
  129.  *
  130.  */
  131.  
  132. //=============================================================================
  133. // ** PLUGIN PARAMETERS
  134. //=============================================================================
  135.   var Imported = Imported || {};
  136.   Imported.MOG_BossHP = true;
  137.   var Moghunter = Moghunter || {};
  138.  
  139.    Moghunter.parameters = PluginManager.parameters('MOG_BossHP');
  140.         Moghunter.bosshp_flowAnimation = String(Moghunter.parameters['Slant Animation'] || "true");
  141.         Moghunter.bosshp_flowAnimationSpeed = Number(Moghunter.parameters['Flow Speed'] || 4);
  142.         Moghunter.bosshp_face = String(Moghunter.parameters['Show Face'] || "true");
  143.     Moghunter.bosshp_faceX = Number(Moghunter.parameters['Face X-Axis'] || -50);
  144.         Moghunter.bosshp_faceY = Number(Moghunter.parameters['Face Y-Axis'] || 10);
  145.     Moghunter.bosshp_layout_x = Number(Moghunter.parameters['Layout X-Axis'] || 150);
  146.     Moghunter.bosshp_layout_y = Number(Moghunter.parameters['Layout Y-Axis'] || 10)
  147.     Moghunter.bosshp_meter_x = Number(Moghunter.parameters['Meter X-Axis'] || 22);
  148.     Moghunter.bosshp_meter_y = Number(Moghunter.parameters['Meter Y-Axis'] || 28);       
  149.     Moghunter.bosshp_number_x = Number(Moghunter.parameters['Number X-Axis'] || 460);
  150.     Moghunter.bosshp_number_y = Number(Moghunter.parameters['Number Y-Axis'] || 32);
  151.     Moghunter.bosshp_name_x = Number(Moghunter.parameters['Name X-Axis'] || 36);
  152.     Moghunter.bosshp_name_y = Number(Moghunter.parameters['Name Y-Axis'] || 23);
  153.         Moghunter.bosshp_font_size = Number(Moghunter.parameters['Name Font Size'] || 18);
  154.         Moghunter.bosshp_shake_effect = String(Moghunter.parameters['Shake Effect'] || true);       
  155.         Moghunter.bosshp_hp_number_visible = String(Moghunter.parameters['HP Number Visible'] || true);
  156.  
  157.  
  158. //=============================================================================
  159. // ** ImageManager
  160. //=============================================================================
  161.  
  162. //==============================
  163. // * Boss Hp
  164. //==============================
  165. ImageManager.loadBossHp = function(filename) {
  166.     return this.loadBitmap('img/bosshp/', filename, 0, true);
  167. };
  168.  
  169.  
  170. //=============================================================================
  171. // ** Game_Temp
  172. //=============================================================================
  173.  
  174. //==============================
  175. // * Initialize
  176. //==============================
  177. var _alias_mog_bosshp_temp_initialize = Game_Temp.prototype.initialize
  178. Game_Temp.prototype.initialize = function() {
  179.         _alias_mog_bosshp_temp_initialize.call(this);
  180.         this._battler_bhp_temp = [null,0,false,0];
  181.         this._battler_bhp_refresh = false;
  182.         this._battler_bhp_remove = false;
  183. };
  184.  
  185. //=============================================================================
  186. // ** Game_System
  187. //=============================================================================
  188.  
  189. //==============================
  190. // * Initialize
  191. //==============================
  192. var _alias_mog_bosshp_sys_initialize = Game_System.prototype.initialize
  193. Game_System.prototype.initialize = function() {
  194.         _alias_mog_bosshp_sys_initialize.call(this);
  195.         this._bosshp_data = [Moghunter.bosshp_layout_x,Moghunter.bosshp_layout_y,Moghunter.bosshp_hp_number_visible];
  196.         this._battler_bhp_oldNumber = [0,0];
  197.         this._chronoBossEnemy = null;
  198.         this._chronoBossMapID = 0;
  199. }
  200.  
  201. //=============================================================================
  202. // ** Game_Interpreter
  203. //=============================================================================       
  204.  
  205. //==============================
  206. // * PluginCommand
  207. //==============================
  208. var _alias_mog_bosshp_ex_pluginCommand = Game_Interpreter.prototype.pluginCommand
  209. Game_Interpreter.prototype.pluginCommand = function(command, args) {
  210.         _alias_mog_bosshp_ex_pluginCommand.call(this,command, args)
  211.     this.setPluginCommandBossHP(command, args);
  212.         return true;
  213. };
  214.  
  215. //==============================
  216. // * set Plugin Command Boss HP
  217. //==============================
  218. Game_Interpreter.prototype.setPluginCommandBossHP = function(command, args) {
  219.         if (command === "boss_hp_position")  { $gameSystem._bosshp_data[0] = args[1];
  220.              $gameSystem._bosshp_data[1] = args[3];};
  221.         if (command === "boss_hp_number_hide")  {$gameSystem._bosshp_data[2] = "false";};
  222.         if (command === "boss_hp_number_show")  {$gameSystem._bosshp_data[2] = "true";};
  223.         if (command === "boss_hp_erase")  {$gameTemp._battler_bhp_remove = "true";};
  224.         if (Imported.MOG_ChronoEngine) {
  225.                 if (command === "boss_set_event_battler_id")  {
  226.                         for (var i = 0; i < $gameMap.allEnemiesOnMap().length; i++) {
  227.                                 var ev = $gameMap.allEnemiesOnMap()[i];
  228.                                 var battler = ev.battler();;
  229.                                 if (battler._bosshp_meter) {
  230.                                     $gameSystem._chronoBossEnemy = battler;
  231.                                         $gameTemp._battler_bhp_refresh = true;
  232.                                         break
  233.                                 };
  234.                         };               
  235.                 };
  236.         };
  237. };
  238.  
  239. //=============================================================================
  240. // ** BattleManager
  241. //=============================================================================
  242.  
  243. //==============================
  244. // * processVictory
  245. //==============================
  246. var _alias_mog_bosshp_processVictory = BattleManager.processVictory;
  247. BattleManager.processVictory = function() {
  248.          $gameTemp._battler_bhp_temp[2] = true
  249.          _alias_mog_bosshp_processVictory.call(this);         
  250. };
  251.  
  252. //==============================
  253. // * processAbort
  254. //==============================
  255. var _alias_mog_bosshp_processAbort = BattleManager.processAbort;
  256. BattleManager.processAbort = function() {
  257.          $gameTemp._battler_bhp_temp[2] = true
  258.          _alias_mog_bosshp_processAbort.call(this);         
  259. };
  260.  
  261. //==============================
  262. // * processDefeat
  263. //==============================
  264. var _alias_mog_bosshp_processDefeat = BattleManager.processDefeat;
  265. BattleManager.processDefeat = function() {
  266.          $gameTemp._battler_bhp_temp[2] = true
  267.          _alias_mog_bosshp_processDefeat.call(this);         
  268. };
  269.  
  270. //=============================================================================
  271. // ** Game Battler
  272. //=============================================================================
  273.  
  274. //==============================
  275. // * Notetags
  276. //==============================
  277. Game_Battler.prototype.notetags = function() {
  278.         if (this.isEnemy()) {return this.enemy().note.split(/[\r\n]+/)};
  279.         if (this.isActor()) {return this.actor().note.split(/[\r\n]+/)};
  280. };
  281.  
  282. //==============================
  283. // * Appear
  284. //==============================
  285. var _mog_bhp_gbat_appear = Game_BattlerBase.prototype.appear;
  286. Game_BattlerBase.prototype.appear = function() {
  287.     _mog_bhp_gbat_appear.call(this);
  288.         $gameTemp._battler_bhp_refresh = true;
  289. };
  290.  
  291. //=============================================================================
  292. // ** Game_Enemy
  293. //=============================================================================
  294.  
  295. //==============================
  296. // * initMembers
  297. //==============================
  298. var _alias_mog_bosshp_initMembers = Game_Enemy.prototype.initMembers;
  299. Game_Enemy.prototype.initMembers = function() {
  300.         _alias_mog_bosshp_initMembers.call(this);
  301.         this._bosshp_meter = false;
  302. };
  303.  
  304. //==============================
  305. // * Setup
  306. //==============================
  307. var _alias_mog_bosshp_setup = Game_Enemy.prototype.setup;
  308. Game_Enemy.prototype.setup = function(enemyId, x, y) {
  309.         _alias_mog_bosshp_setup.call(this,enemyId, x, y);
  310.     this.checkBossHPnoteTag();       
  311. };
  312.  
  313. //==============================
  314. // * Setup
  315. //==============================
  316. Game_Enemy.prototype.checkBossHPnoteTag = function() {
  317.         for (var i = 0; i < this.notetags().length; i++) {
  318.                 if (this.notetags()[i] == "Boss HP") {this._bosshp_meter = true};
  319.         };       
  320. };
  321.  
  322. //==============================
  323. // * transform
  324. //==============================
  325. var _mog_bosshp_enemy_transform = Game_Enemy.prototype.transform;
  326. Game_Enemy.prototype.transform = function(enemyId) {
  327.         _mog_bosshp_enemy_transform.call(this,enemyId)
  328.     $gameTemp._battler_bhp_refresh = true;
  329.         this.checkBossHPnoteTag();       
  330. };
  331.  
  332. //=============================================================================
  333. // ** Game Action
  334. //=============================================================================
  335.  
  336. //==============================
  337. // * Apply
  338. //==============================
  339. var _alias_mog_bosshp_apply = Game_Action.prototype.apply;
  340. Game_Action.prototype.apply = function(target) {
  341.          if (target.isEnemy() && target._bosshp_meter) {
  342.                  $gameTemp._battler_bhp_temp[1] = target.hp;
  343.              var old_hp = target.hp; $gameTemp._battler_bhp_temp[3] = 0
  344.          };
  345.          _alias_mog_bosshp_apply.call(this,target);
  346.          if (target.isEnemy() && target._bosshp_meter) {
  347.                  $gameTemp._battler_bhp_temp[0] = target;
  348.              if (old_hp > target.hp) {$gameTemp._battler_bhp_temp[3] = 60};
  349.          };
  350. };
  351.  
  352.  
  353. //=============================================================================
  354. // ** Scene Map
  355. //=============================================================================       
  356.  
  357. //==============================
  358. // * Terminate
  359. //==============================
  360. var _mog_bossHP_smap_terminate = Scene_Map.prototype.terminate;
  361. Scene_Map.prototype.terminate = function() {
  362.         $gameSystem._chronoBossEnemy = null;
  363.         $gameSystem._chronoBossMapID = $gameMap._mapId;
  364.         if (this._spriteset && this._spriteset._bosshp_sprites) {
  365.                 var battler = this._spriteset._bosshp_sprites._battler;
  366.                 if (!battler.isDead()) {       
  367.                 $gameSystem._chronoBossEnemy = battler;
  368.                         $gameSystem._battler_bhp_oldNumber[0] = this._spriteset._bosshp_sprites._hp_data[2];
  369.                         $gameSystem._battler_bhp_oldNumber[1] = this._spriteset._bosshp_sprites._hp_data[6];
  370.                 };
  371.         };         
  372.     _mog_bossHP_smap_terminate.call(this);
  373. };
  374.  
  375. //=============================================================================
  376. // ** Spriteset_Base
  377. //=============================================================================       
  378.  
  379. //==============================
  380. // * Initialize
  381. //==============================
  382. var _mog_bossHPCN_sprBase_initialize = Sprite_Base.prototype.initialize;
  383. Sprite_Base.prototype.initialize = function() {
  384.    _mog_bossHPCN_sprBase_initialize.call(this);
  385.    if ($gameSystem._chronoBossMapID != $gameMap._mapId) {;
  386.        $gameSystem._chronoBossEnemy = null;
  387.            $gameSystem._chronoBossMapID = $gameMap._mapId;
  388.    };   
  389. };
  390.  
  391. //==============================
  392. // * Create Boss HP Sprites
  393. //==============================
  394. Spriteset_Base.prototype.createBossHPGauge = function() {       
  395.         $gameTemp._battler_bhp_refresh = false;
  396.         var init_battler = this.checkBossHpEnemies();
  397.         this.removeBossHPGauge();
  398.         if (init_battler) {
  399.                 if (!this._bosshp_sprites) {
  400.           if (Imported.MOG_ChronoEngine) {
  401.                            this.removeBossHPGauge();
  402.                            this._bosshp_sprites = new Sprite_BossHP(init_battler);
  403.                            this._hudField.addChild(this._bosshp_sprites);                          
  404.                    } else {
  405.                            this._bosshp_sprites = new Sprite_BossHP(init_battler);
  406.                            this.addChild(this._bosshp_sprites);
  407.                    };
  408.                 };
  409.         };
  410. };
  411.  
  412. //==============================
  413. // * Create Boss HP Sprites
  414. //==============================
  415. Spriteset_Base.prototype.checkBossHpEnemies = function() {
  416.         var boss = null;
  417.         if (Imported.MOG_ChronoEngine) {
  418.                 if ($gameSystem.isChronoMode()) {
  419.                         $gameMap.enemiesF().forEach(function(enemy) {
  420.                                  battler = enemy.battler()
  421.                                  if (battler._bosshp_meter) {boss = battler};
  422.                         },this);                       
  423.                 } else if ($gameSystem._chronoBossEnemy) {
  424.                      boss = $gameSystem._chronoBossEnemy;
  425.             };
  426.         } else {
  427.                 $gameTroop.members().forEach(function(enemy) {
  428.                                 if (enemy._bosshp_meter && !enemy.isHidden()) {boss = enemy};
  429.                 },this);
  430.         };
  431.         return boss;
  432. };
  433.  
  434. //==============================
  435. // ** remove Boss HP Gauge
  436. //==============================
  437. Spriteset_Base.prototype.removeBossHPGauge = function() {
  438.         $gameTemp._battler_bhp_remove = false;
  439.         $gameSystem._chronoBossEnemy = null;
  440.         if (!this._bosshp_sprites) {return};
  441.         if (this._hudField) {
  442.                 this._hudField.removeChild(this._bosshp_sprites);
  443.         } else {
  444.             this.removeChild(this._bosshp_sprites);
  445.         };
  446.     this._bosshp_sprites = null;
  447. };
  448.  
  449. //==============================
  450. // * Update
  451. //==============================
  452. var _mog_bosshp_SprtBase_update = Spriteset_Base.prototype.update;
  453. Spriteset_Base.prototype.update = function() {
  454.         _mog_bosshp_SprtBase_update.call(this);
  455.         if ($gameTemp._battler_bhp_refresh) {this.createBossHPGauge()};
  456.         if (!this._bosshp_sprites && $gameSystem._chronoBossEnemy) {
  457.              this.createBossHPGauge();
  458.         };
  459.         if ($gameTemp._battler_bhp_remove) {this.removeBossHPGauge()};
  460. };
  461.  
  462. //=============================================================================
  463. // ** Spriteset_Battle
  464. //=============================================================================       
  465.  
  466. //==============================
  467. // * CreateLowerLayer
  468. //==============================
  469. var _alias_mog_bosshp_createLowerLayer = Spriteset_Battle.prototype.createLowerLayer
  470. Spriteset_Battle.prototype.createLowerLayer = function() {
  471.         _alias_mog_bosshp_createLowerLayer.call(this);
  472.         this.createBossHPGauge();
  473. };
  474.  
  475.  
  476. //=============================================================================
  477. // ** Sprite_BossHP
  478. //=============================================================================       
  479. function Sprite_BossHP() {
  480.     this.initialize.apply(this, arguments);
  481. }
  482.  
  483. Sprite_BossHP.prototype = Object.create(Sprite.prototype);
  484. Sprite_BossHP.prototype.constructor = Sprite_BossHP;
  485.  
  486. //==============================
  487. // * Initialize
  488. //==============================
  489. Sprite_BossHP.prototype.initialize = function(init_battler) {
  490.     Sprite.prototype.initialize.call(this);       
  491.         this._init = true;
  492.         $gameTemp._battler_bhp_temp = [init_battler,init_battler.hp,false,0];
  493.         this._flowAnimation = String(Moghunter.bosshp_flowAnimation) === "true" ? true : false;
  494.         this._battler = init_battler;
  495.         this._hp_data = [-1,-1,0,0,0,0,0,0,0,Number($gameSystem._bosshp_data[0]),Number($gameSystem._bosshp_data[1]),false,true];
  496.     this.createSprites();
  497.         if (String(Moghunter.bosshp_shake_effect) === "true") {this._hp_data[11] = true};
  498.         if (String($gameSystem._bosshp_data[2]) != "true") {this._hp_data[12] = false};
  499. };
  500.  
  501. //==============================
  502. // * create Sprites
  503. //==============================
  504. Sprite_BossHP.prototype.createSprites = function() {
  505.     this.createLayout();
  506.     this.createHPMeter();
  507.         if (String(Moghunter.bosshp_face) === "true") {this.createFace()};
  508.         this.createHPNumber();
  509.     this.createName();
  510. };
  511.  
  512. //==============================
  513. // * createLayout
  514. //==============================
  515. Sprite_BossHP.prototype.createLayout = function() {
  516.         this._layout = new Sprite(ImageManager.loadBossHp("Boss_HP_A"));
  517.         this._layout.x = this._hp_data[9];
  518.         this._layout.y = this._hp_data[10];
  519.         this._layout.opacity = 0;
  520.         this.addChild(this._layout);       
  521. };
  522.  
  523. //==============================
  524. // * create Face
  525. //==============================
  526. Sprite_BossHP.prototype.createFace = function() {
  527.      this._face = new Sprite();
  528.          this.addChild(this._face);
  529.          this.refreshFace();
  530.          this.updateFace();
  531. };
  532.  
  533. //==============================
  534. // * update Face
  535. //==============================
  536. Sprite_BossHP.prototype.updateFace = function() {
  537.          this._face.x = this._layout.x + Moghunter.bosshp_faceX;
  538.          this._face.y = this._layout.y + Moghunter.bosshp_faceY;
  539.          this._face.visible = this._layout.visible;
  540.          this._face.opacity = this._layout.opacity;
  541. };
  542.  
  543. //==============================
  544. // * refresh Face
  545. //==============================
  546. Sprite_BossHP.prototype.refreshFace = function() {
  547.     this._face.bitmap = ImageManager.loadBossHp("Face_" + String(this._battler._enemyId));
  548. };
  549.  
  550. //==============================
  551. // * create HP Meter
  552. //==============================
  553. Sprite_BossHP.prototype.createHPMeter = function() {
  554.         this._hp_meter_red = new Sprite(ImageManager.loadBossHp("Boss_HP_B"));
  555.         this._hp_meter_red.x = this._layout.x + Moghunter.bosshp_meter_x;
  556.         this._hp_meter_red.y = this._layout.y + Moghunter.bosshp_meter_y;
  557.         this._hp_meter_red.opacity = 0;
  558.         this._hp_meter_redFlow = [-1,0,0,0];
  559.         this._hp_meter_red.setFrame(0,0,1,1);       
  560.         this.addChild(this._hp_meter_red);
  561.         this._hp_meter_blue = new Sprite(ImageManager.loadBossHp("Boss_HP_B"));
  562.         this._hp_meter_blue.x = this._hp_meter_red.x;
  563.         this._hp_meter_blue.y = this._hp_meter_red.y;       
  564.         this._hp_meter_blue.opacity = 0;
  565.         this._hp_meter_blueFlow = [-1,0,0,0];
  566.         this._hp_meter_blue.setFrame(0,0,1,1);       
  567.         this.addChild(this._hp_meter_blue);
  568. };       
  569.  
  570. //==============================
  571. // * create HP Number
  572. //==============================
  573. Sprite_BossHP.prototype.createHPNumber = function() {
  574.         this._hp_number = [];
  575.         this._hp_number_data = []
  576.         this._hp_number_img = ImageManager.loadBossHp("Boss_HP_C");
  577.         for (var i = 0; i < 9; i++) {
  578.                  this._hp_number[i] = new Sprite(this._hp_number_img);
  579.                  this._hp_number[i].visible = false;
  580.                  this._hp_number[i].opacity = 0;
  581.                  this._hp_number[i].x = this._layout.x + Moghunter.bosshp_number_x;
  582.                  this._hp_number[i].y = this._layout.y + Moghunter.bosshp_number_y;
  583.                  this._hp_number_data[i] = 0;
  584.                  this.addChild(this._hp_number[i]);                 
  585.         };
  586. };
  587.  
  588. //==============================
  589. // * create Name
  590. //==============================
  591. Sprite_BossHP.prototype.createName = function() {
  592.         this._name = new Sprite(new Bitmap(300,48));
  593.         this.addChild(this._name);
  594.         this._name.bitmap.fontSize = Moghunter.bosshp_font_size;
  595.         this.refresh_name();
  596.         this._name.x = this._layout.x + Moghunter.bosshp_name_x;
  597.         this._name.y = this._layout.y + Moghunter.bosshp_name_y;
  598.         this._name.opacity = 0;
  599. };
  600.  
  601. //==============================
  602. // * get Sprite Data
  603. //==============================
  604. Sprite_BossHP.prototype.getSpriteData = function() {
  605.             this._hp_meter_blueFlow[0] = this._flowAnimation ? (this._hp_meter_blue.bitmap.width / 3) : this._hp_meter_blue.bitmap.width;
  606.                 this._hp_meter_blueFlow[1] = this._hp_meter_blue.bitmap.height;
  607.                 this._hp_meter_blueFlow[2] = this._hp_meter_blueFlow[0] * 2;
  608.                 this._hp_meter_blueFlow[3] = 0;
  609.             this._hp_meter_redFlow[0] = this._flowAnimation ? (this._hp_meter_red.bitmap.width / 3) : this._hp_meter_red.bitmap.width;
  610.                 this._hp_meter_redFlow[1] = this._hp_meter_red.bitmap.height;
  611.                 this._hp_meter_redFlow[2] = this._hp_meter_redFlow[0] * 2;
  612.                 this._hp_meter_redFlow[3] = 0;               
  613. };
  614.  
  615. //==============================
  616. // * Update
  617. //==============================
  618. Sprite_BossHP.prototype.update = function() {
  619.     Sprite.prototype.update.call(this);       
  620.         if (this._hp_meter_blueFlow[0] === -1) {
  621.             if (this._layout.bitmap.isReady()) {
  622.                         this.getSpriteData();
  623.                 } else {
  624.                         return
  625.                 };
  626.     };
  627.         if (this._flowAnimation) {this.updateFlowAnimation()};
  628.         if ($gameTemp._battler_bhp_temp[3] != 0) {this.refreshShake()};
  629.         if (this.need_onSkillCancelites()) {this.onSkillCancelites(5)} else {this.onSkillCancelites(-5)};
  630.         if ($gameTemp._battler_bhp_temp[0] != this._battler) {this.refresh_all();        };
  631.         if (this._flowAnimation) {
  632.             this.refresh_blue_meter();
  633.         } else if (this._hp_data[0] != this._battler.hp || this._hp_data[1] != this._battler.mhp) {
  634.                 this.refresh_blue_meter();
  635.         };
  636.         if (this._hp_data[2] != this._battler.hp) {this.refresh_red_meter();};
  637.         if (this._hp_data[6] != this._battler.hp) {this.update_hp_number();};
  638.         if (this._hp_data[11]) {this.update_shake_effect();};
  639.         if (this._face) {this.updateFace()};
  640.         this._init = false;
  641. };
  642.  
  643. //==============================
  644. // * refresh Shake
  645. //==============================
  646. Sprite_BossHP.prototype.refreshShake = function() {
  647.         this._hp_data[7] = $gameTemp._battler_bhp_temp[3];
  648.         $gameTemp._battler_bhp_temp[3] = 0;
  649. };
  650.  
  651. //==============================
  652. // * Update Flow Animation
  653. //==============================
  654. Sprite_BossHP.prototype.updateFlowAnimation = function() {
  655.     this._hp_meter_blueFlow[3] += Moghunter.bosshp_flowAnimationSpeed;
  656.         if (this._hp_meter_blueFlow[3] > this._hp_meter_blueFlow[2]) {
  657.                 this._hp_meter_blueFlow[3] = 0;
  658.         };
  659.     this._hp_meter_redFlow[3] += Moghunter.bosshp_flowAnimationSpeed;
  660.         if (this._hp_meter_redFlow[3] > this._hp_meter_redFlow[2]) {
  661.                 this._hp_meter_redFlow[3] = 0;
  662.         };       
  663. };
  664.  
  665. //==============================
  666. // * Update Shake Effect
  667. //==============================
  668. Sprite_BossHP.prototype.update_shake_effect = function() {
  669.     if (this._hp_data[7] <= 0) {return;};
  670.         this._hp_data[7] -= 1;
  671.         this._layout.y = -3 + this._hp_data[10] + Math.floor(Math.random() * 6);
  672.         if (this._hp_data[7] <= 0) {this._layout.y = this._hp_data[10]};
  673. };
  674.  
  675. //==============================
  676. // * Update HP Number
  677. //==============================
  678. Sprite_BossHP.prototype.update_hp_number = function() {
  679.           if (!this._hp_data[12]) {return};
  680.           if (this._init && $gameSystem._battler_bhp_oldNumber[1] != 0) {
  681.                   this._hp_data[6] = $gameSystem._battler_bhp_oldNumber[1];
  682.                   $gameSystem._battler_bhp_oldNumber[1] = 0;
  683.           };          
  684.       var nspd = 1 + Math.floor((Math.abs(this._hp_data[6] - this._battler.hp) / 30))
  685.       if (this._hp_data[6] < this._battler.hp) {
  686.                   this._hp_data[6] += nspd;
  687.                   if (this._hp_data[6] > this._battler.hp) {this._hp_data[6] = this._battler.hp};
  688.           }
  689.           else if (this._hp_data[6] > this._battler.hp) {
  690.                   this._hp_data[6] -= nspd;
  691.                   if (this._hp_data[6] < this._battler.hp) {this._hp_data[6] = this._battler.hp};
  692.           };
  693.           this.refresh_hp_number();
  694. };
  695.  
  696. //==============================
  697. // * Refresh HP Number
  698. //==============================
  699. Sprite_BossHP.prototype.refresh_hp_number = function() {
  700.    var w = this._hp_number_img.width / 10;
  701.    var h = this._hp_number_img.height;       
  702.    //$gameMessage.add(this._hp_number.length)
  703.    this._hp_data[4] = Math.abs(this._hp_data[6]).toString().split("");  
  704.    if (this._hp_data[4].length > this._hp_number.length) {return};
  705.    if (this._hp_data[4].length != this._hp_data[5]) {
  706.            for (var i = 0; i < 9) {this._hp_number[i].visible = false};this._hp_data[5] = this._hp_data[4].length};
  707.    for (var i = 0; i < this._hp_data[4].length; i++) {
  708.            var n = Number(this._hp_data[4][i]);
  709.            this._hp_number[i].setFrame(n * w, 0, w, h);
  710.            this._hp_number[i].visible = true;          
  711.            var nx = -(w * i) + (w * this._hp_data[4].length)
  712.            this._hp_number[i].x = (this._layout.x + Moghunter.bosshp_number_x) - nx;
  713.    };
  714. };
  715.  
  716. //==============================
  717. // * Refresh Name
  718. //==============================
  719. Sprite_BossHP.prototype.refresh_name = function() {
  720.         this._name.bitmap.clear();
  721.         this._name.bitmap.drawText(this._battler.enemy().name, 0, 0, this._name.bitmap.width, this._name.bitmap.height,0);       
  722. };
  723.  
  724. //==============================
  725. // * Need Fade Sprites
  726. //==============================
  727. Sprite_BossHP.prototype.need_onSkillCancelites = function() {
  728.         if ($gameMessage.isBusy()) {return true} ;       
  729.         if ($gameTemp._battler_bhp_temp[2]) {return true} ;
  730.         if (!this._battler) {return true} ;
  731.         if (this._battler.isDead()) {return true};
  732.         return false;
  733. };
  734.  
  735. //==============================
  736. // * Fade Sprites
  737. //==============================
  738. Sprite_BossHP.prototype.onSkillCancelites = function(value) {
  739.         if (this._init) {
  740.            this._layout.opacity = 255;
  741.            this._hp_meter_blue.opacity = this._layout.opacity;
  742.            this._hp_meter_red.opacity = this._layout.opacity;
  743.            this._name.opacity = this._layout.opacity;
  744.            for (var i = 0; i < 9; i++) {this._hp_number[i].opacity = this._layout.opacity};       
  745.            return       
  746.         };
  747.         this._layout.opacity -= value;
  748.         this._hp_meter_blue.opacity = this._layout.opacity;
  749.         this._hp_meter_red.opacity = this._layout.opacity;
  750.         this._name.opacity = this._layout.opacity;
  751.         for (var i = 0; i < 9; i++) {this._hp_number[i].opacity -= value};
  752. };
  753.  
  754. //==============================
  755. // * Refresh All
  756. //==============================
  757. Sprite_BossHP.prototype.refresh_all = function() {
  758.          this._battler = $gameTemp._battler_bhp_temp[0];
  759.          this._hp_data[2] = $gameTemp._battler_bhp_temp[1];
  760.          this._hp_data[6] = $gameTemp._battler_bhp_temp[1];  
  761.          this.refresh_hp_number();  
  762.          this.refresh_blue_meter();
  763.          this.refresh_red_meter();
  764.          this.refresh_name();
  765.          if (this._face) {this.refreshFace()};
  766. };
  767.  
  768. //==============================
  769. // * Refresh Blue Meter
  770. //==============================
  771. Sprite_BossHP.prototype.refresh_blue_meter = function() {
  772.          this._hp_data[0] = this._battler.hp;
  773.          this._hp_data[1] = this._battler.mhp;
  774.      this._layout.y = this._hp_data[10]         
  775.          var meter_rate = this._hp_meter_blueFlow[0] * this._battler.hp / this._battler.mhp;
  776.          this._hp_meter_blue.setFrame(this._hp_meter_blueFlow[3], 0, meter_rate, this._hp_meter_blue.bitmap.height / 2);
  777. };
  778.  
  779. //==============================
  780. // * Refresh Red Meter
  781. //==============================
  782. Sprite_BossHP.prototype.refresh_red_meter = function() {
  783.           if (this._init) {
  784.                   if ($gameSystem._battler_bhp_oldNumber[0] != 0) {
  785.                       this._hp_data[2] = $gameSystem._battler_bhp_oldNumber[0];
  786.                       $gameSystem._battler_bhp_oldNumber[0] = 0;
  787.                   } else {
  788.                         this._hp_data[2] = this._battler.mhp;                       
  789.                   };
  790.          };               
  791.           var dnspeed = 1 + (Math.abs(this._hp_data[2] - this._battler.hp) / 160);
  792.           if (this._hp_data[2] > this._battler.hp) {this._hp_data[2] -= dnspeed;
  793.                   if (this._hp_data[2] < this._battler.hp) {this._hp_data[2] = this._battler.hp};}
  794.           else if (this._hp_data[2] < this._battler.hp) {this._hp_data[2]  += dnspeed;
  795.                   if (this._hp_data[2]  > this._battler.hp) {this._hp_data[2]  = this._battler.hp};                       
  796.           };
  797.          var meter_rate = this._hp_meter_redFlow[0] * this._hp_data[2] / this._battler.mhp;
  798.          this._hp_meter_red.setFrame(this._hp_meter_redFlow[3], this._hp_meter_red.bitmap.height / 2, meter_rate, this._hp_meter_red.bitmap.height / 2);       
  799. };


作者: soulsaga    时间: 2017-10-12 10:01
本帖最后由 soulsaga 于 2017-10-12 10:12 编辑
soulsaga 发表于 2017-10-11 13:41
//=============================================================================
// MOG_BossHP.js
//= ...

不是说了for (var i = 0; i < 6; i++) {里面的6么..亲测有效啊..


MVHP.png (111.65 KB, 下载次数: 17)

MVHP.png

作者: 龙三少    时间: 2017-10-14 15:48
你这个是横版战斗嘛?人物攻击是动态的,还是原地不动的那种?




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