-
Alexandr_7
-
-
Вне сайта
-
Архитектор Миров
-
- Сообщений: 1196
- Спасибо получено: 543
-
-
|
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 очередь для себя и даже не знал выкладывать мне этот скрипт публично или нет. Но решил выложить.
Часть сообщения скрыта для гостей. Пожалуйста, авторизуйтесь или зарегистрируйтесь, чтобы увидеть его.
|