/**
*
* Title: Healthshot effect on kill
* Author: april#0001
* Description: Plugin that apparently every cheat needs!
*
*/
//region main
// Our rendering data
var alpha = 0;
var size = 0;
//endregion
//region menu
// Creates our time slider
const time = UI.AddSliderFloat("Effect duration", 0, 2);
//endregion
//region functions
/**
* Clamps a value between two other numbers
*
* @param v
* @param min
* @param max
* @returns {number}
*/
function clamp(v, min, max)
{
return Math.max(Math.min(v, max), min);
}
/**
* Returns the value of a script menu element
*
* @param element
* @returns {*}
*/
function get(element)
{
return UI.GetValue("Misc", "JAVASCRIPT", "Script items", element);
}
/**
* Renders the effect
*/
function render_effect()
{
if (alpha === 0)
return;
const inc_alpha = ((1 / get("Effect duration")) * Global.Frametime()) * 255
const inc_size = ((1 / get("Effect duration")) * Global.Frametime()) * 360
alpha = clamp(alpha - inc_alpha, 0, 255);
size = clamp(size - inc_size, 0, 360);
const x = Global.GetScreenSize()[0], y = Global.GetScreenSize()[1];
Render.GradientRect(0, 0, x, size, 0, [128, 195, 255, alpha], [128, 195, 255, 0]);
Render.GradientRect(0, y - size, x, size, 0, [128, 195, 255, 0], [128, 195, 255, alpha]);
Render.GradientRect(x - size, 0, size, y, 1, [128, 195, 255, 0], [128, 195, 255, alpha]);
Render.GradientRect(0, 0, size, y, 1, [128, 195, 255, alpha], [128, 195, 255, 0]);
}
/**
* Updates rendering data
*/
function on_death()
{
const attacker = Entity.GetEntityFromUserID(Event.GetInt("attacker"));
const userid = Entity.GetEntityFromUserID(Event.GetInt("userid"));
const player = Entity.GetLocalPlayer();
if (attacker === player && userid != player)
{
alpha = 255;
size = 360;
}
}
//endregion
//region callbacks
// Callbacks our functions
Global.RegisterCallback("player_death", "on_death");
Global.RegisterCallback("Draw", "render_effect");
//endregion