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