PHP Code:
/*================================================================================
-------------------------------------------
-*- [ZP] Extra Item: Zombie Force v. 1.2 | by Re.Act!ve -*-
-------------------------------------------
~~~~~~~~~~~~~~~
- Description -
~~~~~~~~~~~~~~~
At the choose of it Zombie Force you will become have advantages:
* Good speed
* Hight Attack
* Model
* Health
* Long Jump
~~~~~~~~~~~~~~~
- Changelog -
~~~~~~~~~~~~~~~
v. 1.0 - First Plugin Released
v. 1.1 - Small Bugs fixed (Aura remained post mortem and other small bugs)
v. 1.2 - Fixed Bug to Speed (No gives on speed)
================================================================================*/
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <fun>
#include <fakemeta_util>
#include <zombieplague>
#define PLUGIN "[ZP] Extra Item: Zombie Force"
#define VERSION "1.2"
#define AUTHOR "Re.Act!ve"
#pragma tabsize 0
new SayText
new g_new_health
new g_new_speed , g_force_gravity
new g_itemid_zforce
new g_extra_glow
new g_extra_damage
new g_has_force[33]
new const g_item_name[] = { "Zombie Force" }; // Item name
new const g_item_cost = 15 ; // Item cost
new const sound_force[] = { "zombie_plague/buy_force.wav" } // Sound
// Zombie Classes MUST be registered on plugin_precache
public plugin_precache()
{
engfunc(EngFunc_PrecacheSound, sound_force)
precache_sound(sound_force)
}
public plugin_init()
{
g_new_speed = register_cvar("zp_force_speed", "300.0") // Speed on Zombie Force
g_extra_damage = register_cvar("zp_force_damage", "1.0") // Multiple Damage for Zombies
g_force_gravity = register_cvar("zp_force_gravity", "0.6") // Gravity Zombie Force
g_new_health = register_cvar("zp_force_health", "2000") // Extra health to Force for Zombies
g_extra_glow = register_cvar("zp_glow_on", "1")
register_cvar("zp_aura_red", "255")
register_cvar("zp_aura_green", "100")
register_cvar("zp_aura_blue", "0")
register_plugin(PLUGIN, VERSION, AUTHOR)
g_itemid_zforce = zp_register_extra_item(g_item_name, g_item_cost, ZP_TEAM_ZOMBIE)
register_dictionary("zp_extra_zombie_force.txt")
register_forward(FM_PlayerPreThink, "fm_PlayerPreThink") // Replace speed?
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamaged")
SayText = get_user_msgid("SayText")
}
public zp_extra_item_selected(player, itemid)
{
if (itemid == g_itemid_zforce && zp_get_user_zombie(player) && !zp_get_user_nemesis( player ))
{
print_col_chat( player, "^4[ZP] ^1%L: ^3%L" , LANG_PLAYER, "AD_EF", LANG_PLAYER, "ABILITY")
engfunc(EngFunc_EmitSound, player, CHAN_BODY, sound_force, 1.0, ATTN_NORM, 0, PITCH_NORM)
// Health
set_user_health(player, get_user_health(player) + get_pcvar_num(g_new_health))
set_user_gravity(player, g_force_gravity)
new name[32]
// Hud Message Buy Zombie Force
get_user_name(player, name, 31)
set_hudmessage(255, 0, 0, 0.05, 0.45, 1, 0.0, 5.0, 1.0, 1.0, -1)
show_hudmessage(0, "%s Probed Zombie Force!!", name)
set_task(0.2, "ForceAura", player, _, _, "b")
g_has_force[player] = true
// engfunc(EngFunc_SetClientMaxspeed, player, g_new_speed)
set_pev(player, pev_maxspeed, get_pcvar_float(g_new_speed))
// Additional Item LongJump, open her to give longjump
// give_item(player, "item_longjump")
}
else
{
g_has_force[player] = false
}
return 1
}
public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)
{
if ( get_user_weapon(attacker) == CSW_KNIFE ) {
if (g_has_force[attacker])
{
SetHamParamFloat(4, damage * g_extra_damage)
}
}
}
public ForceAura(player)
{
if (!is_user_alive(player) || !zp_get_user_zombie(player)) {
g_has_force[player] = false
}
if (g_has_force[player])
{
if ( (zp_get_user_zombie(player)) && (get_pcvar_num(g_extra_glow)) )
{
fm_set_rendering(player, kRenderFxGlowShell, (get_cvar_num("zp_aura_red")), (get_cvar_num("zp_aura_green")), (get_cvar_num("zp_aura_blue")), kRenderNormal, 12);
}
}
}
public fm_PlayerPreThink(player)
{
if (g_has_force[player])
set_pev(player, pev_maxspeed, get_pcvar_float(g_new_speed))
return FMRES_IGNORED
}
stock print_col_chat(const id, const input[], any:...)
{
new count = 1, players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^4"); // Green Color
replace_all(msg, 190, "!y", "^1"); // Default Color (у©° ж№«ој©)
replace_all(msg, 190, "!t", "^3"); // Team Color
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, SayText, _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}