Hello! I have this speed boost by MeRcyLeZZ and I was trying add a glowing effect to the player who has bought the speed boost and it was successful except for the humans.
Whenever zombies buy the speed boost, they get the glowing effect, but when humans buy it, they do not have the glowing effect...
Any idea what causes this?
Code; (SMA INCLUDED)
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <zp50_core>
#include <zp50_items>
#include <zp50_class_nemesis>
#include <zp50_class_survivor>
const TASK_SPEED_BOOST = 100
#define ID_SPEED_BOOST (taskid - TASK_SPEED_BOOST)
// Hack to be able to use Ham_Player_ResetMaxSpeed (by joaquimandrade)
new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame
new g_itemid_boost
new cvar_boost_amount
new cvar_boost_duration
new g_has_speed_boost[33]
new g_sb_red, g_sb_green, g_sb_blue
public plugin_init()
{
register_plugin("[ZP] Extra Item Speed Boost", "1.2", "MeRcyLeZZ")
g_itemid_boost = zp_items_register("Speed Boost", 5)
cvar_boost_amount = register_cvar("zp_boost_amount", "100.0")
cvar_boost_duration = register_cvar("zp_boost_duration", "5.0")
g_sb_red = register_cvar("zp_sb_red_color", "150")
g_sb_green = register_cvar("zp_sb_green_color", "0")
g_sb_blue = register_cvar("zp_sb_blue_color", "100")
RegisterHam(Ham_Player_ResetMaxSpeed, "player", "fw_ResetMaxSpeed_Post", 1)
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
}
public zp_fw_items_select_pre(id, itemid, ignorecost)
{
if (itemid == g_itemid_boost)
{
// Don't show to nemesis and survivor
if(zp_class_nemesis_get(id) || zp_class_survivor_get(id))
{
return ZP_ITEM_DONT_SHOW;
}
// Player frozen (or CS freezetime)
if (pev(id, pev_maxspeed) <= 1)
{
client_print(id, print_chat, "[ZP] You can't use this item when frozen.");
return ZP_ITEM_NOT_AVAILABLE;
}
// Already using speed boost
if (g_has_speed_boost[id])
{
client_print(id, print_chat, "[ZP] You already have the speed boost.");
return ZP_ITEM_NOT_AVAILABLE;
}
}
return ZP_ITEM_AVAILABLE;
}
public zp_fw_items_select_post(id, itemid, ignorecost)
{
if (itemid == g_itemid_boost)
{
if(is_user_alive(id))
{
// Enable speed boost
fm_set_rendering(id, kRenderFxGlowShell, get_pcvar_num(g_sb_red), get_pcvar_num(g_sb_green), get_pcvar_num(g_sb_blue), kRenderNormal, 255);
g_has_speed_boost[id] = true;
client_print(id, print_chat, "[ZP] Speed boost enabled!");
// Set the restore speed task
set_task(get_pcvar_float(cvar_boost_duration) , "restore_maxspeed", id+TASK_SPEED_BOOST);
// Update player's maxspeed
ExecuteHamB(Ham_Player_ResetMaxSpeed, id);
}
}
}
public restore_maxspeed(taskid)
{
// Disable speed boost
g_has_speed_boost[ID_SPEED_BOOST] = false;
fm_set_rendering(ID_SPEED_BOOST, kRenderFxNone, 0, 0 ,0, kRenderNormal, 255);
client_print(ID_SPEED_BOOST, print_chat, "[ZP] Speed boost is over.");
// Update player's maxspeed
ExecuteHamB(Ham_Player_ResetMaxSpeed, ID_SPEED_BOOST);
}
// Remove speed boost task when infected, humanized, killed, or disconnected
public zp_fw_core_infect(id, attacker)
{
g_has_speed_boost[id] = false;
remove_task(id+TASK_SPEED_BOOST);
}
public zp_fw_core_cure(id, attacker)
{
g_has_speed_boost[id] = false;
remove_task(id+TASK_SPEED_BOOST);
}
public fw_PlayerKilled(victim)
{
g_has_speed_boost[victim] = false;
remove_task(victim+TASK_SPEED_BOOST);
}
public client_disconnect(id)
{
g_has_speed_boost[id] = false;
remove_task(id+TASK_SPEED_BOOST);
}
// Remove speed boost at round start
public event_round_start()
{
new id;
for (id = 1; id <= get_maxplayers(); id++)
{
g_has_speed_boost[id] = false;
remove_task(id+TASK_SPEED_BOOST);
}
}
public fw_ResetMaxSpeed_Post(id)
{
if (!is_user_alive(id) || !g_has_speed_boost[id])
return;
// Apply speed boost
new Float:current_maxspeed;
pev(id, pev_maxspeed, current_maxspeed);
set_pev(id, pev_maxspeed, current_maxspeed + get_pcvar_float(cvar_boost_amount));
}
stock fm_set_rendering(entity, fx = kRenderFxNone, r = 255, g = 255, b = 255, render = kRenderNormal, amount = 16)
{
new Float:RenderColor[3];
RenderColor[0] = float(r);
RenderColor[1] = float(g);
RenderColor[2] = float(b);
set_pev(entity, pev_renderfx, fx);
set_pev(entity, pev_rendercolor, RenderColor);
set_pev(entity, pev_rendermode, render);
set_pev(entity, pev_renderamt, float(amount));
return 1;
}
__________________
I know God doesn't hear dead men. But I expect he answers them.
Last edited by kaiii; 05-04-2024 at 03:17.
|