#include <amxmodx>
#include <amxmisc>
#include <fakemeta>
#include <zombieplague>
#define PLUGIN "[ZP] Extra : Speed Boost"
#define VERSION "1.1.2"
#define AUTHOR "The_Thing"
#define BUY_SBOOST ADMIN_LEVEL_B
new g_item_name[] = { "SebessĂ©g gyorsĂtĂł" }
new g_itemid_speed, g_sb_toggle, g_sb_all_player_buy, g_sb_cost, g_sb_maxspeed, g_sb_oneround
new g_sb_red, g_sb_green, g_sb_blue
new bool:g_hasSpeedBoost[33]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
g_sb_toggle = register_cvar("zp_speed_boost", "1")
g_sb_all_player_buy = register_cvar("zp_sb_all_player_buy", "1")
g_sb_cost = register_cvar("zp_sb_cost", "8")
g_sb_maxspeed = register_cvar("zp_sb_maxspeed", "350.0")
g_sb_oneround = register_cvar("zp_sb_time", "1")
g_sb_red = register_cvar("zp_sb_red_color", "255")
g_sb_green = register_cvar("zp_sb_green_color", "204")
g_sb_blue = register_cvar("zp_sb_blue_color", "0")
g_itemid_speed = zp_register_extra_item(g_item_name, get_pcvar_num(g_sb_cost), 0)
register_clcmd("say /sboost", "buy_sboost", ADMIN_ALL)
register_clcmd("say_team /sboost", "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 (!get_pcvar_num(g_sb_all_player_buy) && (!access(player, ADMIN_LEVEL_B)))
return PLUGIN_HANDLED
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_oneround), "boost_over", player)
print_color(player, "!g[T.B.D.]!t Megvetted a Sebesség Gyorsítót!")
}
return PLUGIN_CONTINUE
}
public buy_sboost(id)
{
if (!get_pcvar_num(g_sb_toggle))
return PLUGIN_HANDLED
if (!get_pcvar_num(g_sb_all_player_buy) && (!access(id, ADMIN_LEVEL_B)))
return PLUGIN_HANDLED
new money = zp_get_user_ammo_packs(id)
new cost = get_pcvar_num(g_sb_cost)
if (!is_user_alive(id))
{
print_color(id, "!g[T.B.D.]!t Halott emberek nem vásárolhatják meg a Sebesség Gyorsítót!")
return PLUGIN_HANDLED
}
if (g_hasSpeedBoost[id])
{
print_color(id, "!g[T.B.D.]!t Te már megvásároltad a Sebesség Gyorsítót!")
return PLUGIN_HANDLED
}
if (money < cost)
{
print_color(id, "!g[T.B.D.]!t Nincs elég lőszercsomagod, hogy megvedd a Sebesség Gyorsitót!", 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)
print_color(id, "!g[T.B.D.]!t Megvetted a Sebesség Gyorsítót!")
return 1
}
public boost_over(id)
{
g_hasSpeedBoost[id] = false
fm_set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0)
print_color(id, "!g[T.B.D.]!t Sebesség gyorsítás lejárt!")
}
public fw_PlayerPreThink(id)
{
if (!is_user_alive(id))
return FMRES_IGNORED
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;
}
stock print_color(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4")
replace_all(msg, 190, "!y", "^1")
replace_all(msg, 190, "!t", "^3")
replace_all(msg, 190, "á", "á")
replace_all(msg, 190, "é", "Ă©")
replace_all(msg, 190, "í", "Ă")
replace_all(msg, 190, "ó", "Ăł")
replace_all(msg, 190, "ö", "ö")
replace_all(msg, 190, "ő", "Ĺ‘")
replace_all(msg, 190, "ú", "Ăş")
replace_all(msg, 190, "ü", "ĂĽ")
replace_all(msg, 190, "ű", "ű")
replace_all(msg, 190, "Á", "Ă")
replace_all(msg, 190, "É", "É")
replace_all(msg, 190, "Í", "ĂŤ")
replace_all(msg, 190, "Ó", "Ă“")
replace_all(msg, 190, "Ö", "Ă–")
replace_all(msg, 190, "Ő", "Ĺ")
replace_all(msg, 190, "Ú", "Ăš")
replace_all(msg, 190, "Ü", "Ăś")
replace_all(msg, 190, "Ű", "Ű")
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
return PLUGIN_HANDLED
}