Actually Add file BRUH
This commit is contained in:
parent
440b977023
commit
2209707f70
67
src/hacks/MCHealthbar.cpp
Normal file
67
src/hacks/MCHealthbar.cpp
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
/*
|
||||||
|
* mchealthbar.cpp
|
||||||
|
*
|
||||||
|
* Created on: Apr 08, 2019
|
||||||
|
* Author: UNKN0WN
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "common.hpp"
|
||||||
|
|
||||||
|
namespace mchealthbar
|
||||||
|
{
|
||||||
|
settings::Bool minecraftHP("mc_health.enable", "false");
|
||||||
|
static settings::Float size("mc_health.size", "64");
|
||||||
|
static std::vector<textures::sprite> absorption;
|
||||||
|
static std::vector<textures::sprite> hearts;
|
||||||
|
|
||||||
|
static InitRoutine init_textures([]() {
|
||||||
|
for (int i = 0; i < 2; i++)
|
||||||
|
absorption.push_back(textures::atlas().create_sprite(320 + 64 * i, 64, 64, 64));
|
||||||
|
for (int i = 0; i < 3; i++)
|
||||||
|
hearts.push_back(textures::atlas().create_sprite(256 + 64 * i, 192, 64, 64));
|
||||||
|
});
|
||||||
|
|
||||||
|
void draw_func()
|
||||||
|
{
|
||||||
|
if (!minecraftHP || CE_BAD(LOCAL_E) || CE_BAD(LOCAL_W))
|
||||||
|
return;
|
||||||
|
float iconSize = *size;
|
||||||
|
float startPosX = draw::width / 2 - iconSize * 5.0f;
|
||||||
|
float startPosY = draw::height - iconSize;
|
||||||
|
|
||||||
|
float halfHeart = LOCAL_E->m_iMaxHealth() / 20; // HP per half heart
|
||||||
|
float halfHearts = LOCAL_E->m_iHealth() / halfHeart; // health in half hearts
|
||||||
|
int fullHearts = (halfHearts / 20) * 10; // HP in full hearts
|
||||||
|
|
||||||
|
float maxBuffHealth = g_pPlayerResource->GetMaxHealth(LOCAL_E) * 1.5f; // max buffed Health
|
||||||
|
float maxAdditionalHealth = maxBuffHealth - LOCAL_E->m_iMaxHealth(); // How much additional health can one have at max
|
||||||
|
float absorption_health = LOCAL_E->m_iHealth() - LOCAL_E->m_iMaxHealth(); // Extra health
|
||||||
|
int absorb_halfh = ((float) absorption_health / (float) maxAdditionalHealth) * 20.0f;
|
||||||
|
int absorb_fullh = (absorb_halfh - 1) / 2;
|
||||||
|
float iconPixel = (iconSize / 8);
|
||||||
|
for (int i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
// (iconSize / 8) = 1 pixel in the icon
|
||||||
|
|
||||||
|
if (i + 1 <= fullHearts)
|
||||||
|
hearts[2].draw(startPosX + (iconSize - iconPixel) * i, startPosY, iconSize, iconSize,
|
||||||
|
colors::white); // full heart
|
||||||
|
else if (fullHearts + 1 == i + 1 && !((int) halfHearts % 2 == 0))
|
||||||
|
hearts[1].draw(startPosX + (iconSize - iconPixel) * i, startPosY, iconSize, iconSize,
|
||||||
|
colors::white); // last half heart
|
||||||
|
else
|
||||||
|
hearts[0].draw(startPosX + (iconSize - iconPixel) * i, startPosY, iconSize, iconSize,
|
||||||
|
colors::white); // empty
|
||||||
|
}
|
||||||
|
if (absorb_halfh >= 1.0f)
|
||||||
|
for (int i = 0; i < 10; i++)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (absorb_fullh >= i + 1)
|
||||||
|
absorption[1].draw(startPosX + (iconSize - iconPixel) * i, startPosY, iconSize, iconSize, colors::white);
|
||||||
|
else if ((float) absorb_halfh / 2.0f >= i + 1)
|
||||||
|
absorption[0].draw(startPosX + (iconSize - iconPixel) * i, startPosY, iconSize, iconSize, colors::white);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
static InitRoutine routint([]() { EC::Register(EC::Draw, draw_func, "MINECRAFT-HEALTHBAR"); });
|
||||||
|
} // namespace mchealthbar
|
Reference in New Issue
Block a user