Плохо! Плохо!:  0
Показано с 1 по 2 из 2

Тема: Hud здоровья и MP для битвы с боссом на ивентах

  1. #1
    Бывалый Аватар для Alexandr_7
    Информация о пользователе
    Регистрация
    09.08.2015
    Адрес
    пос Октяборьский
    Сообщений
    967
    Репутация: 13 Добавить или отнять репутацию

    По умолчанию Hud здоровья и MP для битвы с боссом на ивентах

    Hud здоровья и MP для битвы с боссом на ивентах (AL7_LevelsOfBoss)

    Название скрипта: AL7_LevelsOfBoss
    Автор: Alexandr_7
    Версия: 0.1.1 (Beta)
    Описание: Отображает 3 окна:
    • Окно со здоровьем игрока (берется из здоровья игрока).
    • Окно с энергией игрока (берется из MP).
    • Окно со здоровьем врага (настраивается в переменных).


    • Enable_Switch_Id_Player_Live - Показать/Скрыть окно жизней игрока (номер переключателя)
    • Enable_Switch_Id_Player_MP - Показать/Скрыть окно энергии игрока (номер переключателя)
    • Enable_Switch_Id_Boss_Live - Показать/Скрыть окно босса (номер переключателя)
    • Var_ID_Index_Player - Индекс игрока (номер переменной)
    • Var_ID_Face_Index_Boss - Индекс Фейса босса (начинается от 0) (номер переменной)
    • Var_ID_Face_Name_Index_Boss - Индекс к имени Фейса босса (номер переменной)
    • Var_ID_Boss_HP - Здоровье босса (номер переменной)
    • Var_ID_Boss_Max_HP - Максимальное здоровье босcа (номер переменной)
    • File_Name_Face_Boss - Имя файла босса без расширения (К имени будет добавлен индекс босса из переменной) (Фейс должен лежать в стандартном пути и иметь стандартные размеры (80 x 80 px))

    Поддерживаемая версия: RPG Maker MV v1.5.0+
    Поддерживаемые языки: Только русский!
    Авторство:

    Вы можете:
    • Бесплатно использовать данный плагин в некоммерческих и коммерческих проектах
    • Переводить на другие языки или полностью поменять текст плагина (сообщите мне, если Вы это сделали)
    • Изменять код плагина, но Вы обязаны указать ссылку на оригинальный плагин


    Вы не можете:
    • Убирать или изменять любую информацию о плагине (Название, авторство, контактная информация, версия и дата релиза)

    Код:
    Код:
    //=============================================================================
    // AL7_LevelsOfBoss.js
    //=============================================================================
     
    /*:ru
     * @plugindesc AL7_LevelsOfBoss v0.1.1 (Beta) Скрипт для босов - если своя боевая система
     * @author Alexandr_7
     * 
     * @param ---Переключатели---
     * @default
     * 
     * @param Enable_Switch_Id_Player_Live
     * @parent ---Переключатели---
     * @type switch
     * @desc Показать/Скрыть окно жизней игрока (номер переключателя)
     * @default 21
     * 
     * @param Enable_Switch_Id_Player_MP
     * @parent ---Переключатели---
     * @type switch
     * @desc Показать/Скрыть окно энергии игрока (номер переключателя)
     * @default 22
     * 
     * @param Enable_Switch_Id_Boss_Live
     * @desc Показать/Скрыть  окно босса (номер переключателя)
     * @parent ---Переключатели---
     * @type switch
     * @default 23
     * 
     * @param ---Переменные---
     * @default
     * 
     * @param Var_ID_Index_Player
     * @parent ---Переменные---
     * @type variable
     * @desc Индекс игрока (номер переменной)
     * @default 21
     * 
     * @param Var_ID_Face_Index_Boss
     * @parent ---Переменные---
     * @type variable
     * @desc Индекс Фейса босса (начинается от 0) (номер переменной)
     * @default 22
     * 
     * @param Var_ID_Face_Name_Index_Boss
     * @parent ---Переменные---
     * @type variable
     * @desc Индекс к имени Фейса босса (номер переменной)
     * @default 23
     * 
     * @param Var_ID_Boss_HP
     * @parent ---Переменные---
     * @type variable
     * @desc Здоровье босса (номер переменной)
     * @default 24
     * 
     * @param Var_ID_Boss_Max_HP
     * @parent ---Переменные---
     * @type variable
     * @desc Максимальное здоровье босcа (номер переменной)
     * @default 25
     *
     * @param ---Имена файлов---
     * @default
     *
     * @param File_Name_Face_Boss
     * @parent ---Имена файлов---
     * @desc Имя файла босса без расширения (К имени будет добавлен индекс босса из переменной)
     * @default Boss_
     */
     
    (function() 
    {
    	var parameters = PluginManager.parameters('AL7_LevelsOfBoss');
     
    	var enableSwitchIdPlayerLive = Number(parameters['Enable_Switch_Id_Player_Live']);
    	var enableSwitchIdPlayerMP   = Number(parameters['Enable_Switch_Id_Player_MP']);
    	var enableSwitchIdBossLive   = Number(parameters['Enable_Switch_Id_Boss_Live']);
     
    	var VarIDIndexPlayer = Number(parameters['Var_ID_Index_Player']);
    	var VarIDFaceIndexBoss = Number(parameters['Var_ID_Face_Index_Boss']);
    	var VarIDFaceNameIndexBoss = Number(parameters['Var_ID_Face_Name_Index_Boss']);
    	var VarIDBossHP = Number(parameters['Var_ID_Boss_HP']);
    	var VarIDBossMHP = Number(parameters['Var_ID_Boss_Max_HP']);
     
     
     
    	var FNFaceBoss = String(parameters['File_Name_Face_Boss']);
     
    	//var Frame_Animation = 10;
     
    	var Distance_Between = 10;
     
    	var Size_Bar = 30;
     
    	var Face_Player_Width = 80;
    	var Face_Player_Height = 80;
     
    	var Window_Player_Width = 292;
    	var Window_Player_Height = Face_Player_Height + (Distance_Between * 2);
     
    	var Window_Player_Width_M = Window_Player_Width - Face_Player_Width + 60;
     
    	var Face_Enemy_Width = 80;
    	var Face_Enemy_Height = 80;
     
    	var Window_Enemy_Width = 292;
    	var Window_Enemy_Height = Face_Enemy_Height + (Distance_Between * 2);
     
     
     
    	var _Scene_Map_createAllWindows = Scene_Map.prototype.createAllWindows;
    	Scene_Map.prototype.createAllWindows = function()
    	{
    		_Scene_Map_createAllWindows.call(this);
     
    		this._levelsOfBoss_Player_L = new LevelsOfBossPlayerL(Distance_Between, Distance_Between, Window_Player_Width, Window_Player_Height);
    		this._levelsOfBoss_Player_M = new LevelsOfBossPlayerM((Graphics.boxWidth / 2) - (Window_Player_Width_M / 2), Graphics.boxHeight - 96 - Distance_Between, Window_Player_Width_M, 96);
    		this._levelsOfBoss_EnemyBoss = new LevelsOfBossEnemyBoss(Graphics.boxWidth - Window_Player_Width - Distance_Between,Distance_Between, Window_Enemy_Width, Window_Enemy_Height);
    		this.addWindow(this._levelsOfBoss_Player_L);
    		this.addWindow(this._levelsOfBoss_Player_M);
    		this.addWindow(this._levelsOfBoss_EnemyBoss);
    	};
     
    	/********************
    	Окно для игрока (Жизни)
    	********************/
     
    	function LevelsOfBossPlayerL() {
    		this.initialize.apply(this, arguments);
    	};
     
    	LevelsOfBossPlayerL.prototype = Object.create(Window_Base.prototype);
    	LevelsOfBossPlayerL.prototype.constructor = LevelsOfBossPlayerL;
     
    	LevelsOfBossPlayerL.prototype.standardPadding = function() {
    		return 0;
    	};
     
    	LevelsOfBossPlayerL.prototype.initialize = function(x, y, width, height) {
    		Window_Base.prototype.initialize.call(this, x, y, width, height);
    		this._id = 1;
    		this.update();
    	};
     
    	LevelsOfBossPlayerL.prototype.update = function() {
    		this.contents.clear();
    		if ($gameSwitches.value(enableSwitchIdPlayerLive) == true) {
    			this.show();
    			var aIndexPlayer = $gameVariables.value(VarIDIndexPlayer);
    			var actor = $gameParty.members()[aIndexPlayer];
    			drawFace(this, actor.faceName(), actor.faceIndex(), Distance_Between, Distance_Between, Face_Player_Width, Face_Player_Height);
    			this.resetTextColor();
    			drawNameCharacter(this, actor.name(), this.hpColor(actor), (Distance_Between * 2) + Face_Player_Width, Distance_Between);
    			var color1 = this.hpGaugeColor1();
    			var color2 = this.hpGaugeColor2();
    			var W1 = Window_Player_Width - Face_Player_Width - (Distance_Between * 3);
    			var gaugeY = (Window_Player_Height - 45) + this.lineHeight() - Size_Bar;
    			drawProgressBar(this, Face_Player_Width + (Distance_Between * 2), gaugeY, W1, actor.hp, actor.mhp, this.hpColor(actor), this.gaugeBackColor(), color1, color2);
    		} else {
    			this.hide();
    		}
    	};
     
    	/********************
    	Окно для игрока (Энергия)
    	********************/
     
    	function LevelsOfBossPlayerM() {
    		this.initialize.apply(this, arguments);
    	};
     
    	LevelsOfBossPlayerM.prototype = Object.create(Window_Base.prototype);
    	LevelsOfBossPlayerM.prototype.constructor = LevelsOfBossPlayerL;
     
    	LevelsOfBossPlayerM.prototype.standardPadding = function() {
    		return 0;
    	};
     
    	LevelsOfBossPlayerM.prototype.initialize = function(x, y, width, height) {
    		Window_Base.prototype.initialize.call(this, x, y, width, height);
    		this._id = 1;
    		this.update();
    	};
     
    	LevelsOfBossPlayerM.prototype.update = function() {
    		this.contents.clear();
    		if ($gameSwitches.value(enableSwitchIdPlayerMP) == true) {
    			this.show();
    			var aIndexPlayer = $gameVariables.value(VarIDIndexPlayer);
    			var actor = $gameParty.members()[aIndexPlayer];
    			this.resetTextColor();
    			drawNameCharacter(this, actor.name() + " (Энергия)", this.mpColor(actor), Distance_Between, Distance_Between);
    			var color1 = this.mpGaugeColor1();
    			var color2 = this.mpGaugeColor2();
    			var W1 = Window_Player_Width_M - (Distance_Between * 2);
    			var gaugeY = Distance_Between + this.lineHeight();
    			drawProgressBar(this, Distance_Between, gaugeY, W1, actor.mp, actor.mmp, this.mpColor(actor), this.gaugeBackColor(), color1, color2);
    		} else {
    			this.hide();
    		}
    	};
     
    	/********************
    	Окно для босса
    	********************/
     
    	function LevelsOfBossEnemyBoss() {
    		this.initialize.apply(this, arguments);
    	};
     
    	LevelsOfBossEnemyBoss.prototype = Object.create(Window_Base.prototype);
    	LevelsOfBossEnemyBoss.prototype.constructor = LevelsOfBossEnemyBoss;
     
    	LevelsOfBossEnemyBoss.prototype.standardPadding = function() {
    		return 0;
    	};
     
    	LevelsOfBossEnemyBoss.prototype.initialize = function(x, y, width, height) {
    		Window_Base.prototype.initialize.call(this, x, y, width, height);
    		this._id = 2;
    		this.update();
    	};
     
    	LevelsOfBossEnemyBoss.prototype.update = function() {
    		this.contents.clear();
    		if ($gameSwitches.value(enableSwitchIdBossLive) == true) {
    			this.show();
    			var FaceName = FNFaceBoss + $gameVariables.value(VarIDFaceNameIndexBoss);
    			var FaceIndex = $gameVariables.value(VarIDFaceIndexBoss);
    			drawFace(this, FaceName, FaceIndex, Distance_Between, Distance_Between, Face_Enemy_Width, Face_Enemy_Height);
    			var aBossHP = $gameVariables.value(VarIDBossHP);
    			var aBossMHP = $gameVariables.value(VarIDBossMHP);
    			this.resetTextColor();
    			var aHPColor = this.normalColor();
    			if (aBossHP <= aBossMHP / 2) {
    				aHPColor = this.crisisColor();
    			} else {
    				aHPColor = this.normalColor();
    			}
    			drawNameCharacter(this, "Босс", aHPColor, (Distance_Between * 2) + Face_Enemy_Width, Distance_Between);
    			var color1 = this.hpGaugeColor1();
    			var color2 = this.hpGaugeColor2();
    			var W1 = Window_Enemy_Width - Face_Enemy_Width - (Distance_Between * 3);
    			var gaugeY = (Window_Enemy_Height - 45) + this.lineHeight() - Size_Bar;
    			drawProgressBar(this, Face_Enemy_Width + (Distance_Between * 2), gaugeY, W1, aBossHP, aBossMHP, aHPColor, this.gaugeBackColor(), color1, color2);
     
    		} else {
    			this.hide();
    		}
    	};
     
     
     
     
     
    	function drawFace (aWindow_Base, faceName, faceIndex, x, y, width, height) {
    		var bitmap = ImageManager.loadFace(faceName);
    		var pw = Window_Base._faceWidth;
    		var ph = Window_Base._faceHeight;
     
    		var sx = faceIndex % 4 * pw;
    		var sy = Math.floor(faceIndex / 4) * pw;
    		aWindow_Base.contents.blt(bitmap, sx, sy, pw, ph, x, y, width, height);
    	}
     
    	function drawNameCharacter (aWindow_Base, aTextName, aTextColor, x, y, width) {
    		width = width || aWindow_Base.textWidth(aTextName);
    		aWindow_Base.changeTextColor(aTextColor);
    		aWindow_Base.drawText(aTextName, x, y, width);
    	}
     
    	function drawProgressBar (aWindow_Base, x, y, width, aHP, aMHP, TextColor, ColorForBackProgress, ColorForStatusProgress1, ColorForStatusPgress2) {
    		aWindow_Base.contents.fillRect(x, y, width, Size_Bar, ColorForBackProgress);
    		var fillW = Math.floor( width * MyHPRate(aHP, aMHP));
    		aWindow_Base.contents.gradientFillRect(x, y, fillW, Size_Bar, ColorForStatusProgress1, ColorForStatusPgress2);
    		aWindow_Base.changeTextColor(TextColor);
    		var ProcHP = parseInt((aHP * 100 / aMHP)) + " %";
    		aWindow_Base.drawText(ProcHP, ((width / 2) - (aWindow_Base.textWidth(ProcHP) / 2) + x), y - 2, aWindow_Base.textWidth(ProcHP));
    	}
     
    	function MyHPRate (aHP, aMHP) {
    		return aHP / aMHP;
    	}
     
    })();
    Спойлер Скриншоты::


    Спойлер Пару слов от автора:
    Скрипт писал для себя. Все размеры и тексты фиксированные и более детальной настройки нет. Выход следующей версии то не знаю выйдет или нет. Если захочу переработать систему то возможно выйдет.
    Скрипт ничего кроме отображения не делает. Тоесть перезарядку и прочее нужно делать в игре самому. Если захотите то сделаю демку битвы с босом на ивентах. Все зависит от ваших оценок.
    И повторю что делал в 1 очередь для себя и даже не знал выкладывать мне этот скрипт публично или нет. Но решил выложить.



    Ссылка: Яндекс Диск
    Тема на Светлой: Перейти
    Мой канал на Yotube: Канал Alexandr_5
    Если не говорю движок то это RPG Maker MZ Steam версия!

  2. #2
    Бывалый Аватар для Alexandr_7
    Информация о пользователе
    Регистрация
    09.08.2015
    Адрес
    пос Октяборьский
    Сообщений
    967
    Репутация: 13 Добавить или отнять репутацию

    По умолчанию

    И так. Давно выкладывал на светлой. Теперь руки дошли и сюда сделать тему. За задержку прошу прощения.
    Мой канал на Yotube: Канал Alexandr_5
    Если не говорю движок то это RPG Maker MZ Steam версия!

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Метки этой темы

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •  
Hud здоровья и MP для битвы с боссом на ивентах