/* ======================================================================================
/
/
/ [ZP] Extra Item : Speed Boost
/ ( ability for Humans and Zombies )
/
/ by The_Thing
/
/
/
/ Description :
/
/ This is Speed Boost ability for both teams, that if you want to run away from enemy.
/ Ability is only for 1 round, so in new round you must buy it again.
/
/
/ Note :
/
/ Want to use it for admins only? Then uncommnet this.
/
/ //#define FOR_ADMINS_A_FLAG
/
/
/
/ Cvars :
/
/ zp_speed_boost <1|0> - To turn on or turn off this plugin, default is 1
/ zp_sb_cost "8" - How much Speed Boost will cost
/ zp_sb_maxspeed "325.0" - This will be maxspeed, but you can change it what ever number you want.
/ zp_sb_time "25.0" - How long you can run before boost are over.
/ zp_sb_red_color "150" - Amount of red color.
/ zp_sb_green_color "0" - Amount of green color.
/ zp_sb_blue_color "100" - Amount of blue color.
/
/
/
/ Commands :
/
/ You can buy it through chat commands too.
/
/ say /sboost or say_team /sboost - to buy Speed Boost
/
/
/
/ Changelog :
/
/ 14/11/2008 - v1.0 - First release
/ 15/11/2008 - v1.1 - fixed some mistakes, added cvar how long you can use maxspeed.
/ 18/11/2008 - v1.1.2 - added glow effect when you buy speed booster with cvars, added reset after infection or kill.
/ 04/01/2009 - v1.1.5 - fixed speed boost if you already had due to you could waste ammo packs, removed wrong admin function, added new possibility to change for admins only
/
/
*/
#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <zombieplague>
#define PLUGIN "[ZP] Extra Item : Speed Boost"
#define VERSION "1.1.5"
#define AUTHOR "The_Thing aka Fry"
//#define FOR_ADMINS_A_FLAG
#if defined FOR_ADMINS_A_FLAG
#define ADMINACCESS ADMIN_LEVEL_A
#endif
new g_item_name[] = { "Sebesseg gyorsitas" }
new g_itemid_speed, g_sb_toggle, g_sb_cost, g_sb_maxspeed, g_sb_time
new g_sb_red, g_sb_green, g_sb_blue
new bool:g_hasSpeedBoost[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("zp_extra_speed_boost",VERSION,FCVAR_SERVER|FCVAR_EXTDLL|FCVAR_UNLOGGED|FCVAR_SPONLY)
g_sb_toggle = register_cvar("zp_speed_boost", "1")
g_sb_cost = register_cvar("zp_sb_cost", "30")
g_sb_maxspeed = register_cvar("zp_sb_maxspeed", "350.0")
g_sb_time = register_cvar("zp_sb_time", "240.0")
g_sb_red = register_cvar("zp_sb_red_color", "0")
g_sb_green = register_cvar("zp_sb_green_color", "255")
g_sb_blue = register_cvar("zp_sb_blue_color", "255")
g_itemid_speed = zp_register_extra_item(g_item_name, get_pcvar_num(g_sb_cost), 0)
register_clcmd("say /ssboost", "buy_sboost", ADMIN_ALL)
register_clcmd("say_team /ssboost", "buy_sboost", ADMIN_ALL)
register_forward(FM_PlayerPreThink, "fw_PlayerPreThink")
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_event("DeathMsg", "death", "a")
}
public client_connect(id)
{
g_hasSpeedBoost[id] = false
}
public client_disconnect(id)
{
g_hasSpeedBoost[id] = false
}
public death()
{
g_hasSpeedBoost[read_data(2)] = false // will be reset after infection or kill
}
public event_round_start()
{
for (new i = 1; i <= 32; i++)
g_hasSpeedBoost[i] = false
}
public zp_extra_item_selected(player, itemid)
{
if ( itemid == g_itemid_speed )
{
#if defined FOR_ADMINS_A_FLAG
if ( !( get_user_flags(id) & ADMINACCESS) )
return PLUGIN_CONTINUE
#endif
g_hasSpeedBoost[player] = true
fm_set_rendering(player, kRenderFxGlowShell, get_pcvar_num(g_sb_red), get_pcvar_num(g_sb_green), get_pcvar_num(g_sb_blue), kRenderNormal, 255)
set_pev(player, pev_maxspeed, get_pcvar_float(g_sb_maxspeed))
set_task(get_pcvar_float(g_sb_time), "boost_over", player)
client_print(player, print_chat, "[ZP] Felgyorsitottad a sebessegedet.")
}
return PLUGIN_CONTINUE
}
public buy_sboost(id)
{
if (!get_pcvar_num(g_sb_toggle))
return PLUGIN_HANDLED
#if defined FOR_ADMINS_A_FLAG
if ( !( get_user_flags(id) & ADMINACCESS) )
return PLUGIN_CONTINUE
#endif
new money = zp_get_user_ammo_packs(id)
new cost = get_pcvar_num(g_sb_cost)
if (!is_user_alive(id))
{
client_print(id, print_chat, "[ZP] Halott emberek nem vasarolhatnak sebesseg gyorsitast!")
return PLUGIN_HANDLED
}
if (g_hasSpeedBoost[id])
{
client_print(id, print_chat, "[ZP] Te mar vasaroltal sebesseggyorsitot !", get_pcvar_num(g_sb_cost))
return PLUGIN_HANDLED
}
if (money < cost)
{
client_print(id, print_chat, "[ZP] Nincs eleg loszercsomagod,hogy felgyorsitsd sebesseged!", get_pcvar_num(g_sb_cost))
return PLUGIN_HANDLED
}
zp_set_user_ammo_packs(id, money - cost)
g_hasSpeedBoost[id] = true
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)
set_pev(id, pev_maxspeed, get_pcvar_float(g_sb_maxspeed))
set_task(get_pcvar_float(g_sb_time), "boost_over", id)
client_print(id, print_chat, "[ZP] Mar vasaroltal sebessegyorsitot!")
return 1
}
public boost_over(id)
{
g_hasSpeedBoost[id] = false
fm_set_rendering(id, kRenderFxNone, 0, 0 ,0, kRenderNormal, 255)
client_print(id, print_chat, "[ZP] Tobbe mar nem vagy gyors,sebesseged ujra normalis!")
}
public fw_PlayerPreThink(id)
{
if (!is_user_alive(id))
return FMRES_IGNORED
#if defined FOR_ADMINS_A_FLAG
if ( !( get_user_flags(id) & ADMINACCESS) )
return PLUGIN_CONTINUE
#endif
if (g_hasSpeedBoost[id])
{
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)
set_pev(id, pev_maxspeed, get_pcvar_float(g_sb_maxspeed))
}
return PLUGIN_CONTINUE
}
stock fm_set_user_maxspeed(index, Float:speed = -1.0)
{
engfunc(EngFunc_SetClientMaxspeed, index, speed);
set_pev(index, pev_maxspeed, speed);
return 1;
}
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;
}