I wont the Soldier uqz have no immortal in swarm nemesis and plague rounds. I try something but its not work :-(
PHP Code:
// Includes
#include <amxmodx>
#include <amxmisc>
#include <engine>
#include <fun>
#include <fakemeta>
#include <hamsandwich>
#include <xs>
#include <zombieplague>
#include <zmvip>
// Defines
#define ITEM_NAME "Soldier UqZ"
#define ITEM_COST 45
#define TASK_AURA 27000
// Weapons Offsets
#define OFFSET_CLIPAMMO 51
#define OFFSET_LINUX_WEAPONS 4
#define fm_cs_set_weapon_ammo(%1,%2) set_pdata_int(%1, OFFSET_CLIPAMMO, %2, OFFSET_LINUX_WEAPONS)
#define NO_RECOIL_WEAPONS_BITSUM ( 1 << CSW_KNIFE | 1 << CSW_HEGRENADE | 1 << CSW_FLASHBANG | 1 << CSW_SMOKEGRENADE | 1 << CSW_C4 )
// Players Offsets
#define g_uqz_weapon 373
// Max Clips
const WPN_BS = ((1<<CSW_HEGRENADE)|(1<<CSW_SMOKEGRENADE)|(1<<CSW_FLASHBANG)|(1<<CSW_KNIFE)|(1<<CSW_C4))
new const g_MaxClips[] = { 0, 13, 0, 10, 0, 7, 0, 30, 30, 0, 15, 20, 25, 30, 35,
25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 0, 7, 30, 30, 0, 50 }
new const g_i_armor = 350
// Global Variables
new g_maxplayers
new g_uqz
new cvar_uqz_on, cvar_uqz_hp, cvar_uqz_ap, cvar_uqz_grav, cvar_uqz_unclip_on, cvar_uqz_dmg
new cvar_uqz_norecoil_on, cvar_uqz_invis_on, cvar_invis, cvar_jumps_extras
new cvar_uqz_glow_on, cvar_uqz_aura_on, cvar_uqz_aura_size
new cvar_uqz_glow_colors, cvar_uqz_aura_colors
new saltos_extras[33] = 0
new bool:g_un_clip[33]
new bool:g_damage[33]
new bool:g_norecoil[33]
new bool:invis[33]
new bool:glow[33]
new bool:jumps[33]
new bool:tres_saltos[33] = false
// Init Plugin
public plugin_init()
{
// Register Plugin
register_plugin("[ZP] Extra Item: Soldier UqZ", "1.5", "Kiske =D")
g_uqz = zv_register_extra_item("Terminator", "+HP +ARMOR +JUMP", 200, ZV_TEAM_HUMAN)
// Language File
register_dictionary("zp_soldier_uqz.txt")
// Events
register_event("HLTV", "event_round_start", "a", "1=0", "2=0")
register_event("CurWeapon", "Event_CurWeapon", "be", "1=1")
// Forwards
RegisterHam(Ham_TakeDamage, "player", "fw_TakeDamage")
register_forward(FM_PlayerPreThink, "fm_PlayerPreThink")
// Thanks MasI
new weapon_name[24]
for (new i = 1; i <= 30; i++)
{
if (!(NO_RECOIL_WEAPONS_BITSUM & 1 << i) && get_weaponname(i, weapon_name, 23))
{
RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "fw_primary_attack")
RegisterHam(Ham_Weapon_PrimaryAttack, weapon_name, "fw_primary_attack_post", 1)
}
}
// End Thanks MasI
// Cvars
/** CVARS - Stats **/
cvar_uqz_on = register_cvar("zp_soldier_uqz_enable", "1") // Extra Item Enable
cvar_uqz_hp = register_cvar("zp_uqz_health", "350") // Health
cvar_uqz_ap = register_cvar("zp_uqz_armor", "125") // Armor
cvar_uqz_grav = register_cvar("zp_uqz_gravity", "0.70") // Gravity -- 0.70 = 560
cvar_uqz_unclip_on = register_cvar("zp_uqz_unclip_enable", "1") // Unlimited Clip Enable
cvar_uqz_dmg = register_cvar("zp_uqz_dmg_multiplier", "3.0") // Damage Multiplier x3 -- 1.0 = Damage Disable
cvar_uqz_norecoil_on = register_cvar("zp_uqz_norecoil_enable", "1") // NoRecoil Enable
cvar_uqz_invis_on = register_cvar("zp_uqz_invis_on", "0") // Invis Soldier UqZ Enable
cvar_invis = register_cvar("zp_uqz_invis", "0.0") // Invis Soldier UqZ -- 0.0 = Invis Full
cvar_jumps_extras = register_cvar("zp_uqz_jumps_extras", "3") // 3 Jumps Extras -- 3 + 1(Default) = 4 Jumps
/** CVARS - Effects **/
cvar_uqz_glow_on = register_cvar("zp_uqz_glow_enable", "1") // Glow Enable
cvar_uqz_aura_on = register_cvar("zp_uqz_aura_enable", "1") // Aura Enable
cvar_uqz_aura_size = register_cvar("zp_uqz_aura_size", "50") // Aura Size
cvar_uqz_glow_colors = register_cvar("zp_uqz_glow_rgb", "0 255 255") // Color Glow RGB
cvar_uqz_aura_colors = register_cvar("zp_uqz_aura_rgb", "0 255 255") // Color Aura RGB
// Glow and Aura = LTBlue
}
// Cfg Plugin
public plugin_cfg()
{
// Config
new cfgdirecction[32]
get_configsdir(cfgdirecction, sizeof cfgdirecction - 1);
// Cargar Config (soldier_uqz.cfg)
server_cmd("exec %s/soldier_uqz.cfg", cfgdirecction)
}
// Register Extra Item
public zv_extra_item_selected(player, itemid)
{
if(get_pcvar_num(cvar_uqz_on))
{
if(itemid == g_uqz)
{
// Stats
set_user_health(player, get_pcvar_num(cvar_uqz_hp)) // Health
set_user_armor(player, get_pcvar_num(cvar_uqz_ap)) // Armor
set_user_gravity(player, get_pcvar_float(cvar_uqz_grav)) // Gravity
// Unlimited Clip
if(get_pcvar_num(cvar_uqz_unclip_on))
{
g_un_clip[player] = true
}
// Damage Multiplier
g_damage[player] = true
// No Recoil
if(get_pcvar_num(cvar_uqz_norecoil_on))
{
g_norecoil[player] = true
}
// Invis
if(get_pcvar_num(cvar_uqz_invis_on))
{
invis[player] = true
}
else // Glow
{
if(get_pcvar_num(cvar_uqz_glow_on))
{
glow[player] = true
}
}
// Jumps Extras
if(get_pcvar_num(cvar_jumps_extras))
{
jumps[player] = true
}
// Aura
if(get_pcvar_num(cvar_uqz_aura_on))
{
set_task(0.1, "uqz_aura", player + TASK_AURA, _, _, "b")
}
// Message
new name[32]
get_user_name(player, name, 31)
set_hudmessage(0, 255, 255, 0.05, 0.45, 1, 0.0, 5.0, 1.0, 1.0, -1)
show_hudmessage(0, "%L", player, "IS", name)
}
}
else
{
client_print(player, print_chat, "[ZP] %L", player, "DISABLED")
}
}
// The User is Infecting
public zp_user_infected_post(id)
{
remove_task(id + TASK_AURA)
g_un_clip[id] = false
g_damage[id] = false
g_norecoil[id] = false
invis[id] = false
glow[id] = false
saltos_extras[id] = 0
tres_saltos[id] = false
jumps[id] = false
}
// User Connect
public client_connect(id)
{
remove_task(id + TASK_AURA)
g_un_clip[id] = false
g_damage[id] = false
g_norecoil[id] = false
invis[id] = false
glow[id] = false
saltos_extras[id] = 0
tres_saltos[id] = false
jumps[id] = false
}
// Event Round Start
public event_round_start()
{
for (new id; id <= g_maxplayers; id++)
{
g_un_clip[id] = true
g_damage[id] = true
g_norecoil[id] = true
invis[id] = true
glow[id] = true
tres_saltos[id] = true
jumps[id] = true
}
}
// Event Round Start
public event_zombie_round_start()
{
for (new id; id <= g_maxplayers; id++)
{
g_un_clip[id] = true
g_damage[id] = true
g_norecoil[id] = true
invis[id] = true
glow[id] = true
tres_saltos[id] = true
jumps[id] = true
}
}
// Current Weapon info
public Event_CurWeapon(id)
{
if (g_un_clip[id])
{
g_un_clip[id] = true
new uqzWeapon = read_data(2)
if(!(WPN_BS & (1<<uqzWeapon)))
fm_cs_set_weapon_ammo(get_pdata_cbase(id, g_uqz_weapon), g_MaxClips[uqzWeapon])
}
}
// Ham Take Damage Forward
public fw_TakeDamage(attacker, Float:damage)
{
if(g_damage[attacker])
{
g_damage[attacker] = true
new weapon = get_user_weapon(attacker, _, _)
if(weapon == CSW_XM1014 || CSW_DEAGLE)
{
SetHamParamFloat(4, damage *= get_pcvar_num(cvar_uqz_dmg))
}
}
}
// Thanks MasI
public fw_primary_attack(ent)
{
new id = pev(ent,pev_owner)
if(g_norecoil[id])
{
g_norecoil[id] = true
pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0})
return HAM_IGNORED
}
return HAM_IGNORED
}
public fw_primary_attack_post(ent)
{
new id = pev(ent,pev_owner)
if(g_norecoil[id])
{
g_norecoil[id] = true
set_pev(id, pev_punchangle, Float:{0.0, 0.0, 0.0})
return HAM_IGNORED
}
return HAM_IGNORED
}
// End Thanks MasI
// Forward Player PreThink
public fm_PlayerPreThink(id)
{
if (!is_user_alive(id) || zp_get_user_zombie(id))
return PLUGIN_CONTINUE
// Glow and Invis
if(get_pcvar_num(cvar_uqz_invis_on))
{
if(invis[id])
{
invis[id] = true
set_pev(id, pev_renderfx, kRenderFxGlowShell)
set_pev(id, pev_rendermode, kRenderTransAlpha)
set_pev(id, pev_renderamt, get_pcvar_float(cvar_invis))
}
}
else
{
if(glow[id])
{
glow[id] = true
new szColors[16]
get_pcvar_string(cvar_uqz_glow_colors, szColors, 15)
new gRed[4], gGreen[4], gBlue[4], iRed, iGreen, iBlue
parse(szColors, gRed, 3, gGreen, 3, gBlue, 3)
iRed = clamp(str_to_num(gRed), 0, 255)
iGreen = clamp(str_to_num(gGreen), 0, 255)
iBlue = clamp(str_to_num(gBlue), 0, 255)
if(get_pcvar_num(cvar_uqz_glow_on))
{
set_user_rendering(id, kRenderFxGlowShell, iRed, iGreen, iBlue, kRenderNormal, 20)
}
}
}
if(get_pcvar_num(cvar_jumps_extras))
{
if(jumps[id])
{
jumps[id] = true
new usebut = get_user_button(id)
new oldbut = get_user_oldbutton(id)
if((usebut & IN_JUMP) && !(get_entity_flags(id) & FL_ONGROUND) && !(oldbut & IN_JUMP))
{
if (saltos_extras[id] < get_pcvar_num(cvar_jumps_extras))
{
tres_saltos[id] = true
saltos_extras[id]++
return PLUGIN_CONTINUE
}
}
if((usebut & IN_JUMP) && (get_entity_flags(id) & FL_ONGROUND))
{
saltos_extras[id] = 0
return PLUGIN_CONTINUE
}
}
}
return PLUGIN_CONTINUE
}
// Forward PostThink
public client_PostThink(id)
{
if (!is_user_alive(id) || zp_get_user_zombie(id))
return PLUGIN_CONTINUE
if(jumps[id])
{
jumps[id] = true
if(tres_saltos[id] == true)
{
new Float:vezlocity[3]
entity_get_vector(id, EV_VEC_velocity, vezlocity)
vezlocity[2] = random_float(265.0, 285.0)
entity_set_vector(id, EV_VEC_velocity, vezlocity)
tres_saltos[id] = false
return PLUGIN_CONTINUE
}
}
return PLUGIN_CONTINUE
}
// Aura
public uqz_aura(id)
{
id -= TASK_AURA
// Player is Life ?
if (!is_user_alive(id))
return
new szColors[16]
get_pcvar_string(cvar_uqz_aura_colors, szColors, 15)
new gRed[4], gGreen[4], gBlue[4], iRed, iGreen, iBlue
parse(szColors, gRed, 3, gGreen, 3, gBlue, 3)
iRed = clamp(str_to_num(gRed), 0, 255)
iGreen = clamp(str_to_num(gGreen), 0, 255)
iBlue = clamp(str_to_num(gBlue), 0, 255)
// Register Pev_
static Float:FOrigin[3]
pev(id, pev_origin, FOrigin)
engfunc(EngFunc_MessageBegin, MSG_PVS, SVC_TEMPENTITY, FOrigin, 0) // Open the Function
write_byte(TE_DLIGHT) // TE Id
engfunc(EngFunc_WriteCoord, FOrigin[0]) // Player Position
engfunc(EngFunc_WriteCoord, FOrigin[1]) // Position 'Y'
engfunc(EngFunc_WriteCoord, FOrigin[2]) // Position 'X'
write_byte(get_pcvar_num(cvar_uqz_aura_size)) // Radius
write_byte(iRed) // Red
write_byte(iGreen) // Green
write_byte(iBlue) // Blue
write_byte(2) // Life
write_byte(0) // Delay Rate
message_end() // Close the Function
}