Code:
#include <amxmodx>
#include <fakemeta>
#include <hamsandwich>
#include <amxmisc>
#include <nvault>
#include <fun>
#define fm_cs_set_user_nobuy(%1) set_pdata_int(%1, 235, get_pdata_int(%1, 235) & ~(1<<0) ) //no weapon buy
#define HIDE_HUD_FLASH (1<<1) // Flashlight
#define PRIMARY_WEAPONS_BIT_SUM ((1<<CSW_SCOUT)|(1<<CSW_XM1014)|(1<<CSW_MAC10)|(1<<CSW_AUG)|(1<<CSW_UMP45)|(1<<CSW_SG550)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_AWP)|(1<<CSW_MP5NAVY)|(1<<CSW_M249)|(1<<CSW_M3)|(1<<CSW_M4A1)|(1<<CSW_TMP)|(1<<CSW_G3SG1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90))
#define SECONDARY_WEAPONS_BIT_SUM ((2<<CSW_P228)|(2<<CSW_ELITE)|(2<<CSW_FIVESEVEN)|(CSW_USP)|(1<<CSW_GLOCK18)|(1<<CSW_DEAGLE))
#define SECONDARY_WEAPONS_BIT_USE (1<<CSW_USP|1<<CSW_DEAGLE|1<<CSW_P228|1<<CSW_DEAGLE|1<<CSW_GLOCK18|1<<CSW_ELITE)
#define UsingSecondaryWeapon(%1) ((1<<get_user_weapon(%1)) & SECONDARY_WEAPONS_BIT_USE)
// Ranks and skills
#define maxlevel_sg 3
#define maxlevel_vm 5
#define maxlevel_hp 8
#define maxlevel_gh 3
#define maxlevel_ab 5
#define maxlevel_ap 5
#define maxlevel_sb 6
#define sg_perlevel 1
#define vm_perlevel 20
#define hp_perlevel 7
#define gh_perlevel 6
#define ab_perlevel 10
#define ap_perlevel 40
#define sb_perlevel 15
new BulletLevel[33]
new ArmorLevel[33]
new AbsorbLevel[33]
new VampireLevel[33]
new GhostLevel[33]
new HealthLevel[33]
new SgLevel[33]
new bool:g_PlayerReseted[33]
new PlayerHumanKills[33]
new PlayerZombieKills[33]
new PlayerHumanDeaths[33]
new PlayerZombieDeaths[33]
new PlayerHeadshots[33]
new PlayerMedals[33]
new PlayerXP[33]
new PlayerLevel[33]
new PlayerPoints[33]
new xp_per_kill,xp_per_hs,points_per_level
new const RANK[20][] = {
"Eilinis", // 0 Level
"Grandinis", // 1 Level
"Kapralas", // 2 Level
"Jaunesnysis Serzantas", // 3 Level
"Burio Serzantas", // 4 Level
"Puskarininkis", // 5 Level
"Serzantas", // 6 Level
"Vyresnysis Serzantas", // 7 Level
"Vyresnysis Puskarinikis", // 8 Level
"Serzantas Majoras", // 9 Level
"Leitenantas", // 10 Level
"Vyresnysis Leitenantas", // 11 Level
"Kapitonas", // 12 Level
"Majoras", // 13 Level
"Pulkininkas Leitenantas", // 14 Level
"Pulkininkas", // 15 Level
"Brigados Generolas", // 16 Level
"Generolas Majoras", // 17 Level
"Generolas Leitenantas", // 18 Level
"Generolas" // 19 Level
}
new const LEVELS[20] = {
900, // 0 level // Needed on level 1
1900,
2900,
3900,
4900,
5900,
6900,
7900,
8900,
9900,
10900,
12900,
15000,
17900,
20000,
22900,
25000,
27600,
30000, // Level 19
35000
}
new const levelup[] = { "misc/levelup.wav" }
// Sounds on Death
new const music1[][] = {
"misc/brains1.wav",
"misc/brains2.wav",
"misc/brains3.wav",
"misc/brains4.wav"
}
new const music2[][] = {
"misc/brains5.wav",
"misc/brains6.wav",
"misc/brains7.wav",
"misc/brains8.wav",
"misc/brains9.wav",
"misc/brains10.wav",
"misc/brains11.wav",
"misc/brains12.wav"
}
// Flashlight
new light_enable,light_r,light_g,light_b,light_radius
new gmsg_hideweapon
// Screen Fade
new screen_fade_enable
new screen_r,screen_g,screen_b
// Glow on kill
new glowonkilling_enable
new glow_r,glow_g,glow_b,glow_time
// Other
new weapon_enable
new death_msg_enable
new blockbuyzone_enable
new save_xp_by
new g_maxplayers
new sg_enable
new vm_enable
new hp_enable
new gh_enable
new ab_enable
new ap_enable
new sb_enable
new iKills[33]
public plugin_init()
{
register_plugin( "Zombie-Mod-Misc-Stuff", "1.3", "xbatista")
weapon_enable = register_cvar("zmisc_weapons","1") // Enable weapons menu on spawn? 1 = Yes, 0 = No.
death_msg_enable = register_cvar("zmisc_dmsg","1") // Enable Death messages and sounds? 1 = Yes, 0 = No.
save_xp_by = register_cvar("zmisc_save_xp_by","1") // Save XP by? 1 = IP, 2 = SteamID.
blockbuyzone_enable = register_cvar("zmisc_blockbuyzone","1") // Enable Block buyzone? 1 = Yes, 0 = No.
light_enable = register_cvar("zmisc_light","1") // Enable light around player? 1 = Yes, 0 = No.
light_radius = register_cvar("zmisc_light_radius","28") // Around player light radius.
light_r = register_cvar("zmisc_light_red","255") // light color R
light_g = register_cvar("zmisc_light_green","250") // light color G
light_b = register_cvar("zmisc_light_blue","255") // light color B
screen_fade_enable = register_cvar("zmisc_screen_fade","1") // Enable screen fade? 1 = Yes, 0 = No.
screen_r = register_cvar("zmisc_screen_red","255") // Screen fade color R
screen_g = register_cvar("zmisc_screen_green","0") // Screen fade color G
screen_b = register_cvar("zmisc_screen_blue","0") // Screen fade color B
glowonkilling_enable = register_cvar("zmisc_glow_kill","1") // Enable glow on you when you killed someone? 1 = Yes, 0 = No.
glow_time = register_cvar("zmisc_glow_time","5.0") // How much time you will glow when you killed someone?
glow_r = register_cvar("zmisc_glow_red","255") // glow color R
glow_g = register_cvar("zmisc_glow_green","20") // glow color G
glow_b = register_cvar("zmisc_glow_blue","0") // glow color B
xp_per_kill = register_cvar("zmisc_xp","10") // How much xp gain per kill?
xp_per_hs = register_cvar("zmisc_xp_hs","5") // How much bonus xp gain per hs?
points_per_level = register_cvar("zmisc_pts_per_level","1") // How much points you gain when level up?
sg_enable = register_cvar("zmisc_sg","1") // Enable SmokeGrenade Level? 1 = Yes, 0 = No.
vm_enable = register_cvar("zmisc_vm","1") // Enable Vampire Level? 1 = Yes, 0 = No.
hp_enable = register_cvar("zmisc_hp","1") // Enable Health Level? 1 = Yes, 0 = No.
gh_enable = register_cvar("zmisc_gh","1") // Enable Ghost Level? 1 = Yes, 0 = No.
ab_enable = register_cvar("zmisc_ab","1") // Enable Absorbation Level? 1 = Yes, 0 = No.
ap_enable = register_cvar("zmisc_ap","1") // Enable Armor Level? 1 = Yes, 0 = No.
sb_enable = register_cvar("zmisc_sb","1") // Enable SilverBullet Level? 1 = Yes, 0 = No.
register_clcmd("say_team /zmrank", "showrank")
register_clcmd("say_team zmrank", "showrank")
register_clcmd("say /zmrank", "showrank")
register_clcmd("say zmrank", "showrank")
register_clcmd("say upct", "Upgrades")
register_clcmd("say /upct", "Upgrades")
register_clcmd("say_team upct", "Upgrades")
register_clcmd("say_team /upct", "Upgrades")
register_clcmd("say upt", "Upgrades2")
register_clcmd("say /upt", "Upgrades2")
register_clcmd("say_team upt", "Upgrades2")
register_clcmd("say_team /upt", "Upgrades2")
register_clcmd("say rp", "ResetPoints")
register_clcmd("say /rp", "ResetPoints")
//Events//
register_event("DeathMsg", "event_deathmsg", "a")
register_event("StatusValue", "StatusValue_on_alive", "be", "1=2")
register_event("CurWeapon", "ev_CurWeapon", "be","1=1")
register_event("HLTV", "ev_NewRound", "a", "1=0", "2=0");
register_message(get_user_msgid("StatusIcon"), "Message_StatusIcon")
RegisterHam(Ham_TakeDamage, "player", "TakeDamage", 1)
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn", 1)
//Forwards//
register_forward(FM_CmdStart,"fwCmdStart" )
register_forward(FM_PlayerPreThink, "preThink")
g_maxplayers = get_maxplayers()
gmsg_hideweapon = get_user_msgid("HideWeapon")
}
public client_authorized(id)
{
LoadRank(id)
}
public client_disconnect(id)
{
iKills[id] = 0
SaveRank(id)
}
public stopglow(id)
{
fm_set_rendering(id)
}
public ev_NewRound()
{
for(new i = 1 ; i <= g_maxplayers ; i++)
{
if(is_user_connected(i))
{
if (iKills[i] == random_num(4,7))
{
PlayerMedals[i] += 1
static name[32] ; get_user_name(i, name, charsmax(name));
client_printcolor(0, "/g[/yZombie Misc/g] /ySurvivor /ctr%s /ygot /g%d /ya medal for a honor.", name, iKills[i])
}
iKills[i] = 0
}
}
}
public event_deathmsg()
{
new g_attacker = read_data(1)
new g_victim = read_data(2)
new g_headshot = read_data(3)
new attacker_msg[32]
new victim_msg[32]
get_user_name(g_attacker, attacker_msg, 31)
get_user_name(g_victim, victim_msg, 31)
static iAtt ; iAtt = read_data(1)
if(PlayerXP[g_attacker] >= LEVELS[PlayerLevel[g_attacker]])
{
PlayerLevel[g_attacker] += 1
PlayerPoints[g_attacker] += get_pcvar_num(points_per_level)
client_cmd(g_attacker, "spk %s", levelup)
client_printcolor(g_attacker, "/g[/yZombie Misc/g] /yCongratulations! You gained level /g%i!", PlayerLevel[g_attacker])
SaveRank(g_attacker)
}
if(g_attacker != g_victim)
{
if (get_pcvar_num(glowonkilling_enable) == 1)
{
fm_set_rendering(g_attacker, kRenderFxGlowShell, get_pcvar_num(glow_r), get_pcvar_num(glow_g), get_pcvar_num(glow_b), kRenderNormal,25)
set_task(get_pcvar_float(glow_time), "stopglow", g_attacker)
if (get_pcvar_num(gh_enable) == 1)
{
set_task(get_pcvar_float(glow_time) + 1.0, "GhostLvL", g_attacker)
}
}
if(PlayerXP[g_attacker] <= 34980)
{
PlayerXP[g_attacker] += get_pcvar_num(xp_per_kill)
}
if (get_user_team(g_attacker) == 2) // ct killed t
{
if((1 <= iAtt <= g_maxplayers))
{
iKills[iAtt]++;
}
if(get_pcvar_num(death_msg_enable) == 1)
{
set_hudmessage(0, 5, 255, 0.01, 0.31, 1, 0.01, 3.0, 0.01, 0.01, 2)
show_hudmessage(0, "%s has been owned by %s!", victim_msg, attacker_msg)
client_cmd( 0, "spk %s", music2[random_num(0,sizeof music2 - 1)])
}
PlayerZombieDeaths[g_victim] += 1
PlayerZombieKills[g_attacker] += 1
}
if (get_user_team(g_attacker) == 1) // t killed ct
{
if(get_pcvar_num(death_msg_enable) == 1)
{
set_hudmessage(255, 0, 10, 0.01, 0.21, 1, 0.01, 3.0, 0.01, 0.01, 3)
show_hudmessage(0, "%s's brains has been eaten by %s!", victim_msg, attacker_msg)
client_cmd( 0, "spk %s", music1[random_num(0,sizeof music1 - 1)])
}
PlayerHumanDeaths[g_victim] += 1
PlayerHumanKills[g_attacker] += 1
}
if(g_headshot)
{
if(PlayerXP[g_attacker] <= 34980)
{
PlayerXP[g_attacker] += get_pcvar_num(xp_per_hs)
}
PlayerHeadshots[g_attacker] += 1
}
}
}
public skill(id)
{
if(PlayerLevel[id] == 1) // Checks level.
{
give_item(id,"weapon_glock18"); // Give yourself glock18 at level 1
client_cmd (id, "slot2; drop")
}
if(PlayerLevel[id] == 2) // Checks level.
{
give_item(id,"weapon_usp"); // Give yourself usp at level 2
client_cmd (id, "slot2; drop")
}
if(PlayerLevel[id] == 3) // Checks level.
{
give_item(id,"weapon_p228"); // Give yourself p228 at level 3
client_cmd (id, "slot2; drop")
}
if(PlayerLevel[id] == 4) // Checks level.
{
give_item(id,"weapon_fiveseven"); // Give yourself fiveseven at level 4
client_cmd (id, "slot2; drop")
}
if(PlayerLevel[id] == 5) // Checks level.
{
give_item(id,"weapon_tmp"); // Give yourself tmp at level 5
client_cmd (id, "slot1; drop")
}
if(PlayerLevel[id] == 6) // Checks level.
{
give_item(id,"weapon_mp5"); // Give yourself mp5 at level 6
client_cmd (id, "slot1; drop")
}
}
public Message_StatusIcon(iMsgId, MSG_DEST, id)
{
static szIcon[5]
get_msg_arg_string(2, szIcon, 4)
if( szIcon[0] == 'b' && szIcon[2] == 'y' && szIcon[3] == 'z' )
{
if( get_msg_arg_int(1) && get_pcvar_num(blockbuyzone_enable) == 1 )
{
fm_cs_set_user_nobuy(id)
return PLUGIN_HANDLED
}
}
return PLUGIN_CONTINUE
}
public Upgrades(id)
{
if (!is_user_alive(id))
return
new menu = menu_create("\yUpgrades for Survivors:", "upgrades_handle")
if (get_pcvar_num(sg_enable) == 1)
{
new sgmsg[60]
format(sgmsg, 59, "\wSmokeGrenade Level (%d/%d)", SgLevel[id], maxlevel_sg)
menu_additem(menu, sgmsg, "1", 0)
}
if (get_pcvar_num(hp_enable) == 1)
{
new hpmsg[60]
format(hpmsg, 59, "\wHealth Level (%d/%d)", HealthLevel[id], maxlevel_hp)
menu_additem(menu, hpmsg, "2", 0)
}
if (get_pcvar_num(sb_enable) == 1)
{
new sbmsg[60]
format(sbmsg, 59, "\wSilver Bullet Level (%d/%d)", BulletLevel[id], maxlevel_sb)
menu_additem(menu, sbmsg, "3", 0)
}
if(PlayerLevel[id] >= 7 && get_pcvar_num(ab_enable) == 1)
{
new abmsg[60]
format(abmsg, 59, "\wAbsorbation Level (%d/%d)", AbsorbLevel[id], maxlevel_ab)
menu_additem(menu, abmsg, "4", 0)
}
if(PlayerLevel[id] >= 4 && get_pcvar_num(ap_enable) == 1)
{
new apmsg[60]
format(apmsg, 59, "\wArmor Level (%d/%d)", ArmorLevel[id], maxlevel_ap)
menu_additem(menu, apmsg, "5", 0)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)
}
public upgrades_handle(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1:{
if(PlayerPoints[id] > 0)
{
if(SgLevel[id] >= maxlevel_sg)
{
return PLUGIN_HANDLED
}
SgLevel[id] += 1
client_printcolor(id, "/g+1 /yto SmokeGrenades Level")
PlayerPoints[id] -= 1
Upgrades(id)
}
}
case 2:{
if(PlayerPoints[id] > 0)
{
if(HealthLevel[id] >= maxlevel_hp)
{
return PLUGIN_HANDLED
}
HealthLevel[id] += 1
client_printcolor(id, "/g+1 /yto Health Level")
PlayerPoints[id] -= 1
Upgrades(id)
}
}
case 3:{
if(PlayerPoints[id] > 0)
{
if(BulletLevel[id] >= maxlevel_sb)
{
return PLUGIN_HANDLED
}
BulletLevel[id] += 1
client_printcolor(id, "/g+1 /yto Silver Bullet Level")
PlayerPoints[id] -= 1
Upgrades(id)
}
}
case 4:{
if(PlayerPoints[id] > 0)
{
if(AbsorbLevel[id] >= maxlevel_ab)
{
return PLUGIN_HANDLED
}
AbsorbLevel[id] += 1
client_printcolor(id, "/g+1 /yto Absorbation Level")
PlayerPoints[id] -= 1
Upgrades(id)
}
}
case 5:{
if(PlayerPoints[id] > 0)
{
if(ArmorLevel[id] >= maxlevel_ap)
{
return PLUGIN_HANDLED
}
ArmorLevel[id] += 1
client_printcolor(id, "/g+1 /yto Armor Level")
PlayerPoints[id] -= 1
Upgrades(id)
}
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public Upgrades2(id)
{
if (!is_user_alive(id))
return
new menu = menu_create("\yUpgrades for Monsters:", "upgrades_handle2")
if (get_pcvar_num(vm_enable) == 1)
{
new vmmsg[60]
format(vmmsg, 59, "\wVampire Level (%d/%d)", VampireLevel[id], maxlevel_vm)
menu_additem(menu, vmmsg, "1", 0)
}
if (get_pcvar_num(gh_enable) == 1)
{
new ghmsg[60]
format(ghmsg, 59, "\wGhost Level (%d/%d)", GhostLevel[id], maxlevel_gh)
menu_additem(menu, ghmsg, "2", 0)
}
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)
}
public upgrades_handle2(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[6], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,5, iName, 63, callback)
new key = str_to_num(data)
switch(key)
{
case 1:{
if(PlayerPoints[id] > 0)
{
if(VampireLevel[id] >= maxlevel_vm)
{
return PLUGIN_HANDLED
}
VampireLevel[id] += 1
client_printcolor(id, "/g+1 /yto Vampire Level")
PlayerPoints[id] -= 1
Upgrades2(id)
}
}
case 2:{
if(PlayerPoints[id] > 0)
{
if(GhostLevel[id] >= maxlevel_gh)
{
return PLUGIN_HANDLED
}
GhostLevel[id] += 1
client_printcolor(id, "/g+1 /yto Ghost Level")
PlayerPoints[id] -= 1
Upgrades2(id)
}
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public ResetPoints(id)
{
g_PlayerReseted[id] = true
client_printcolor(id, "/ctrYour points will be reseted next time when you spawn!")
}
public GhostLvL(id)
{
if (GhostLevel[id] > 0 && get_pcvar_num(gh_enable) == 1)
{
fm_set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 100 - GhostLevel[id] * gh_perlevel)
}
}
public fw_PlayerSpawn(id)
{
if (is_user_alive(id))
{
set_task(0.2, "show_level1", id, "", 0, "b")
set_task(0.2, "show_level2", id, "", 0, "b")
if(g_PlayerReseted[id])
{
new iPoints = SgLevel[id] + VampireLevel[id] + GhostLevel[id] + HealthLevel[id] + AbsorbLevel[id] + ArmorLevel[id] + BulletLevel[id]
PlayerPoints[id] += iPoints
SgLevel[id] = 0
VampireLevel[id] = 0
GhostLevel[id] = 0
HealthLevel[id] = 0
AbsorbLevel[id] = 0
ArmorLevel[id] = 0
BulletLevel[id] = 0
client_printcolor(id, "/ctrYour Points has been reseted!")
g_PlayerReseted[id] = false
}
if (user_has_weapon(id,CSW_USP))
{
ham_strip_weapon(id,"weapon_usp")
}
if (GhostLevel[id] == 0 && get_pcvar_num(gh_enable) == 1)
{
fm_set_rendering(id)
}
if (get_user_team(id) == 1)
{
if (GhostLevel[id] > 0 && get_pcvar_num(gh_enable) == 1)
{
fm_set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 100 - GhostLevel[id] * gh_perlevel)
}
}
if (get_user_team(id) == 2)
{
engclient_cmd(id, "weapon_knife")
if (ArmorLevel[id] > 0 && get_pcvar_num(ap_enable) == 1)
{
new iArmor = get_user_armor(id)
fm_set_user_armor(id, iArmor + ArmorLevel[id] * ap_perlevel)
}
if (HealthLevel[id] > 0 && get_pcvar_num(hp_enable) == 1)
{
new get_health = get_user_health(id)
fm_set_user_health(id, get_health + HealthLevel[id] * hp_perlevel)
}
if (get_pcvar_num(weapon_enable) == 1)
{
set_task(1.0, "Primary", id)
}
}
}
}
public ev_CurWeapon(id)
{
if (!is_user_alive(id))
return
if(get_pcvar_num(light_enable) == 1 && get_user_team(id) == 2)
{
message_begin(MSG_ONE, gmsg_hideweapon, _ , id)
write_byte(HIDE_HUD_FLASH)
message_end()
}
}
public fwCmdStart( id, uc_handle, seed ) {
if( get_uc( uc_handle, UC_Impulse ) == 100 ) {
if(get_pcvar_num(light_enable) == 1)
{
set_uc( uc_handle, UC_Impulse, 0 );
return FMRES_HANDLED
}
}
return FMRES_IGNORED
}
public preThink(id)
{
if(get_pcvar_num(light_enable) == 1)
{
if(is_user_alive(id) && get_user_team(id) == 2)
{
static Float:light_origin[3] // get origin
pev(id,pev_origin,light_origin)
message_begin(MSG_BROADCAST,SVC_TEMPENTITY)
write_byte(27) // TE_DLIGHT Dinamic light
engfunc(EngFunc_WriteCoord,light_origin[0]) // X
engfunc(EngFunc_WriteCoord,light_origin[1]) // Y
engfunc(EngFunc_WriteCoord,light_origin[2]) // Z
write_byte(get_pcvar_num(light_radius)) // radius
write_byte(get_pcvar_num(light_r)) // R
write_byte(get_pcvar_num(light_g)) // G
write_byte(get_pcvar_num(light_b)) // B
write_byte(1) // life
write_byte(0) // decay rate
message_end()
}
}
}
public Fadex(index,red,green,blue,alpha)
{
message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("ScreenFade"),{0,0,0},index);
write_short(6<<10)
write_short(5<<10)
write_short(1<<12)
write_byte(red)
write_byte(green)
write_byte(blue)
write_byte(alpha)
message_end()
}
public TakeDamage(i_Victim, i_Inflictor, i_Attacker, Float:damage)
{
new get_health_a = get_user_health(i_Attacker)
new get_health_v = get_user_health(i_Victim)
new ateam = get_user_team(i_Attacker)
if(VampireLevel[i_Attacker] > 0 && is_user_connected(i_Attacker) && get_user_team ( i_Victim ) != get_user_team ( i_Attacker ) && get_user_team(i_Attacker) == 1 && get_pcvar_num(vm_enable) == 1)
{
fm_set_user_health(i_Attacker, get_health_a + VampireLevel[i_Attacker] * vm_perlevel)
}
if(AbsorbLevel[i_Victim] > 0 && is_user_connected(i_Victim) && get_user_team ( i_Victim ) != get_user_team ( i_Attacker ) && get_user_team(i_Attacker) == 1 && get_pcvar_num(ab_enable) == 1 && PlayerLevel[i_Victim] >= 7)
{
fm_set_user_health(i_Victim, get_health_v + floatround(((damage / 100) * (AbsorbLevel[i_Victim] * ab_perlevel))))
}
if(BulletLevel[i_Attacker] > 0 && is_user_connected(i_Attacker) && get_user_team(i_Victim) != ateam || ateam == 2 && get_pcvar_num(sb_enable) == 1 && UsingSecondaryWeapon(i_Attacker))
{
if (get_health_v >= 750)
{
fm_set_user_health(i_Victim, get_health_v - floatround(((damage / 100) * (BulletLevel[i_Attacker] * sb_perlevel))))
}
}
if ( ( 1 <= i_Victim <= g_maxplayers) && get_user_team ( i_Victim ) != get_user_team ( i_Attacker ) && get_pcvar_num(screen_fade_enable) == 1 )
{
if(is_user_connected(i_Victim))
{
Fadex(i_Victim,get_pcvar_num(screen_r),get_pcvar_num(screen_g),get_pcvar_num(screen_b),170)
}
}
}
public showrank(id)
{
new szMotd[2048], szTitle[64], iPos = 0
format(szTitle, 63, "Zombie Mod Misc Stats")
iPos += format(szMotd[iPos], 2047-iPos, "<html><head><style type=^"text/css^">pre{color:#FFB000;}body{background:#000000;margin-left:8px;margin-top:0px;}</style></head><pre><body>")
iPos += format(szMotd[iPos], 2047-iPos, "^n^n<b>Your Stats:</b>^n^n")
iPos += format(szMotd[iPos], 2047-iPos, "Humans killed - <b>%i</b>^n", PlayerHumanKills[id])
iPos += format(szMotd[iPos], 2047-iPos, "Zombies killed - <b>%i</b>^n", PlayerZombieKills[id])
iPos += format(szMotd[iPos], 2047-iPos, "Total Kills - <b>%i</b>^n", PlayerHumanKills[id] + PlayerZombieKills[id])
iPos += format(szMotd[iPos], 2047-iPos, "Deaths being Human - <b>%i</b>^n", PlayerHumanDeaths[id])
iPos += format(szMotd[iPos], 2047-iPos, "Deaths being Zombie - <b>%i</b>^n", PlayerZombieDeaths[id])
iPos += format(szMotd[iPos], 2047-iPos, "Total deaths - <b>%i</b>^n", PlayerHumanDeaths[id] + PlayerZombieDeaths[id])
iPos += format(szMotd[iPos], 2047-iPos, "Headshots done - <b>%i</b>^n", PlayerHeadshots[id])
iPos += format(szMotd[iPos], 2047-iPos, "Medals for honor - <b>%i</b>", PlayerMedals[id])
show_motd(id, szMotd, szTitle)
return PLUGIN_HANDLED
}
public show_level1(id)
{
if (is_user_alive(id))
{
if (get_user_team(id) == 1)
{
set_hudmessage(0, 255, 0, 0.17, 0.05, 0, 0.01, 3.0, 0.01, 0.01, 10)
show_hudmessage(id, "[XP:%i/%i]^n[Points:%i]", PlayerXP[id], LEVELS[PlayerLevel[id]], PlayerPoints[id])
}
}
}
public show_level2(id)
{
if (is_user_alive(id))
{
if (get_user_team(id) == 2)
{
set_hudmessage(0, 255, 0, 0.17, 0.05, 0, 0.01, 3.0, 0.01, 0.01, 10)
show_hudmessage(id, "[Rank:%s]^n[XP:%i/%i]^n[Points:%i]", RANK[PlayerLevel[id]], PlayerXP[id], LEVELS[PlayerLevel[id]], PlayerPoints[id])
}
}
}
public StatusValue_on_alive(id)
{
new target, body;
get_user_aiming(id, target, body);
if( (1 <= target <= g_maxplayers)
&& get_pdata_int(id, 114) == get_pdata_int(target, 114) )
{
new sName[32]
new target = read_data(2)
get_user_name(target, sName, 31)
if (get_user_team(target) == 2)
{
set_hudmessage(0, 40, 255, -1.0, 0.60, 1, 0.01, 1.5, 0.01, 0.01, 11)
show_hudmessage(id, "%s is %s", sName, RANK[PlayerLevel[target]])
}
}
}
///Save ranks///
SaveRank(id)
{
if(get_pcvar_num(save_xp_by) == 1)
{
new authip[32]
get_user_ip(id,authip,31,1)
new vaultkey[64], vaultdata[64]
format(vaultkey, 63, "UserIP:%s-HumansKills", authip)
format(vaultdata, 63, "%d", PlayerHumanKills[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-ZombieKills", authip)
format(vaultdata, 63, "%d", PlayerZombieKills[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-HumanDeaths", authip)
format(vaultdata, 63, "%d", PlayerHumanDeaths[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-ZombieDeaths", authip)
format(vaultdata, 63, "%d", PlayerZombieDeaths[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-Headshots", authip)
format(vaultdata, 63, "%d", PlayerHeadshots[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-XP", authip)
format(vaultdata, 63, "%d", PlayerXP[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-Level", authip)
format(vaultdata, 63, "%d", PlayerLevel[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-Points", authip)
format(vaultdata, 63, "%d", PlayerPoints[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-SgLevel", authip)
format(vaultdata, 63, "%d", SgLevel[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-VampireLevel", authip)
format(vaultdata, 63, "%d", VampireLevel[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-HealthLevel", authip)
format(vaultdata, 63, "%d", HealthLevel[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-GhostLevel", authip)
format(vaultdata, 63, "%d", GhostLevel[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-MedalsLevel", authip)
format(vaultdata, 63, "%d", PlayerMedals[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-AbsorbationLevel", authip)
format(vaultdata, 63, "%d", AbsorbLevel[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-ArmorLevel", authip)
format(vaultdata, 63, "%d", ArmorLevel[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserIP:%s-BulletLevel", authip)
format(vaultdata, 63, "%d", BulletLevel[id])
set_vaultdata(vaultkey, vaultdata)
}
if(get_pcvar_num(save_xp_by) == 2)
{
new authid[32]
get_user_authid(id, authid, 31)
new vaultkey[64], vaultdata[64]
format(vaultkey, 63, "UserID:%s-HumansKills", authid)
format(vaultdata, 63, "%d", PlayerHumanKills[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-ZombieKills", authid)
format(vaultdata, 63, "%d", PlayerZombieKills[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-HumanDeaths", authid)
format(vaultdata, 63, "%d", PlayerHumanDeaths[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-ZombieDeaths", authid)
format(vaultdata, 63, "%d", PlayerZombieDeaths[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-Headshots", authid)
format(vaultdata, 63, "%d", PlayerHeadshots[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-XP", authid)
format(vaultdata, 63, "%d", PlayerXP[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-Level", authid)
format(vaultdata, 63, "%d", PlayerLevel[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-Points", authid)
format(vaultdata, 63, "%d", PlayerPoints[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-SgLevel", authid)
format(vaultdata, 63, "%d", SgLevel[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-VampireLevel", authid)
format(vaultdata, 63, "%d", VampireLevel[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-HealthLevel", authid)
format(vaultdata, 63, "%d", HealthLevel[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-GhostLevel", authid)
format(vaultdata, 63, "%d", GhostLevel[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-MedalsLevel", authid)
format(vaultdata, 63, "%d", PlayerMedals[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-AbsorbationLevel", authid)
format(vaultdata, 63, "%d", AbsorbLevel[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-ArmorLevel", authid)
format(vaultdata, 63, "%d", ArmorLevel[id])
set_vaultdata(vaultkey, vaultdata)
format(vaultkey, 63, "UserID:%s-BulletLevel", authid)
format(vaultdata, 63, "%d", BulletLevel[id])
set_vaultdata(vaultkey, vaultdata)
}
}
///Load Ranks///
LoadRank(id)
{
if(get_pcvar_num(save_xp_by) == 1)
{
new authip[32]
get_user_ip(id,authip,31,1)
new vaultkey[64], vaultdata[64]
format(vaultkey, 63, "UserIP:%s-HumansKills", authip)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerHumanKills[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-ZombieKills", authip)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerZombieKills[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-HumanDeaths", authip)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerHumanDeaths[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-ZombieDeaths", authip)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerZombieDeaths[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-Headshots", authip)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerHeadshots[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-XP", authip)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerXP[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-Level", authip)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerLevel[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-Points", authip)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerPoints[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-SgLevel", authip)
get_vaultdata(vaultkey, vaultdata, 63)
SgLevel[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-VampireLevel", authip)
get_vaultdata(vaultkey, vaultdata, 63)
VampireLevel[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-HealthLevel", authip)
get_vaultdata(vaultkey, vaultdata, 63)
HealthLevel[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-GhostLevel", authip)
get_vaultdata(vaultkey, vaultdata, 63)
GhostLevel[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-MedalsLevel", authip)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerMedals[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-AbsorbationLevel", authip)
get_vaultdata(vaultkey, vaultdata, 63)
AbsorbLevel[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-ArmorLevel", authip)
get_vaultdata(vaultkey, vaultdata, 63)
ArmorLevel[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserIP:%s-BulletLevel", authip)
get_vaultdata(vaultkey, vaultdata, 63)
BulletLevel[id] = str_to_num(vaultdata)
}
if(get_pcvar_num(save_xp_by) == 2)
{
new authid[32]
get_user_authid(id, authid, 31)
new vaultkey[64], vaultdata[64]
format(vaultkey, 63, "UserID:%s-HumansKills", authid)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerHumanKills[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-ZombieKills", authid)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerZombieKills[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-HumanDeaths", authid)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerHumanDeaths[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-ZombieDeaths", authid)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerZombieDeaths[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-Headshots", authid)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerHeadshots[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-XP", authid)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerXP[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-Level", authid)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerLevel[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-Points", authid)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerPoints[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-SgLevel", authid)
get_vaultdata(vaultkey, vaultdata, 63)
SgLevel[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-VampireLevel", authid)
get_vaultdata(vaultkey, vaultdata, 63)
VampireLevel[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-HealthLevel", authid)
get_vaultdata(vaultkey, vaultdata, 63)
HealthLevel[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-GhostLevel", authid)
get_vaultdata(vaultkey, vaultdata, 63)
GhostLevel[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-MedalsLevel", authid)
get_vaultdata(vaultkey, vaultdata, 63)
PlayerMedals[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-AbsorbationLevel", authid)
get_vaultdata(vaultkey, vaultdata, 63)
AbsorbLevel[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-ArmorLevel", authid)
get_vaultdata(vaultkey, vaultdata, 63)
ArmorLevel[id] = str_to_num(vaultdata)
format(vaultkey, 63, "UserID:%s-BulletLevel", authid)
get_vaultdata(vaultkey, vaultdata, 63)
BulletLevel[id] = str_to_num(vaultdata)
}
}
public plugin_precache()
{
precache_sound("misc/brains1.wav")
precache_sound("misc/brains2.wav")
precache_sound("misc/brains3.wav")
precache_sound("misc/brains4.wav")
precache_sound("misc/brains5.wav")
precache_sound("misc/brains6.wav")
precache_sound("misc/brains7.wav")
precache_sound("misc/brains8.wav")
precache_sound("misc/brains9.wav")
precache_sound("misc/brains10.wav")
precache_sound("misc/brains11.wav")
precache_sound("misc/brains12.wav")
precache_sound(levelup)
}
// ============================================================//
// [ Stocks ] //
// ============================================================//
stock client_printcolor(const id, const input[], any:...)
{
new msg[191], players[32], count = 1;
vformat(msg,190,input,3);
replace_all(msg,190,"/g","^4");// green clr
replace_all(msg,190,"/y","^1");// orange clr
replace_all(msg,190,"/ctr","^3");// team clr
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, 76, _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
stock fm_give_item(index, const item[])
{
if (!equal(item, "weapon_", 7) && !equal(item, "ammo_", 5) && !equal(item, "item_", 5) && !equal(item, "tf_weapon_", 10))
return 0
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, item))
if (!pev_valid(ent))
return 0
new Float:origin[3]
pev(index, pev_origin, origin)
set_pev(ent, pev_origin, origin)
set_pev(ent, pev_spawnflags, pev(ent, pev_spawnflags) | SF_NORESPAWN)
dllfunc(DLLFunc_Spawn, ent)
new save = pev(ent, pev_solid)
dllfunc(DLLFunc_Touch, ent, index)
if (pev(ent, pev_solid) != save)
return ent
engfunc(EngFunc_RemoveEntity, ent)
return -1
}
stock fm_set_user_bpammo(id, iWeapon, iAmount)
{
new iOffset;
switch(iWeapon)
{
case CSW_AWP: iOffset = 377;
case CSW_SCOUT, CSW_AK47, CSW_G3SG1: iOffset = 378;
case CSW_M249: iOffset = 379;
case CSW_FAMAS, CSW_M4A1, CSW_AUG, CSW_SG550, CSW_GALI, CSW_SG552: iOffset = 380;
case CSW_M3, CSW_XM1014: iOffset = 381;
case CSW_USP, CSW_UMP45, CSW_MAC10: iOffset = 382;
case CSW_FIVESEVEN, CSW_P90: iOffset = 383;
case CSW_DEAGLE: iOffset = 384;
case CSW_P228: iOffset = 385;
case CSW_GLOCK18, CSW_MP5NAVY, CSW_TMP, CSW_ELITE: iOffset = 386;
case CSW_FLASHBANG: iOffset = 387;
case CSW_HEGRENADE: iOffset = 388;
case CSW_SMOKEGRENADE: iOffset = 389;
case CSW_C4: iOffset = 390;
default:return;
}
set_pdata_int(id, iOffset, iAmount);
}
stock ham_strip_weapon(id,weapon[])
{
if(!equal(weapon,"weapon_",7)) return 0;
new wId = get_weaponid(weapon);
if(!wId) return 0;
new wEnt;
while((wEnt = engfunc(EngFunc_FindEntityByString,wEnt,"classname",weapon)) && pev(wEnt,pev_owner) != id) {}
if(!wEnt) return 0;
if(get_user_weapon(id) == wId) ExecuteHamB(Ham_Weapon_RetireWeapon,wEnt);
if(!ExecuteHamB(Ham_RemovePlayerItem,id,wEnt)) return 0;
ExecuteHamB(Ham_Item_Kill,wEnt);
set_pev(id,pev_weapons,pev(id,pev_weapons) & ~(1<<wId));
// this block should be used for Counter-Strike:
/*if(wId == CSW_C4)
{
cs_set_user_plant(id,0,0);
cs_set_user_bpammo(id,CSW_C4,0);
}
else if(wId == CSW_SMOKEGRENADE || wId == CSW_FLASHBANG || wId == CSW_HEGRENADE)
cs_set_user_bpammo(id,wId,0);*/
return 1;
}
stock drop_secondary(id)
{
new weapons[32], num
get_user_weapons(id, weapons, num)
for (new i = 0; i < num; i++)
{
if (SECONDARY_WEAPONS_BIT_SUM & (2<<weapons[i]))
{
static wname[32]
get_weaponname(weapons[i], wname, sizeof wname - 1)
engclient_cmd(id, "drop", wname)
}
}
}
stock drop_primary(id)
{
new weapons[32], num
get_user_weapons(id, weapons, num)
for (new i = 0; i < num; i++) {
if (PRIMARY_WEAPONS_BIT_SUM & (1<<weapons[i]))
{
static wname[32]
get_weaponname(weapons[i], wname, sizeof wname - 1)
engclient_cmd(id, "drop", wname)
}
}
}
stock fm_set_rendering(index, fx=kRenderFxNone, r=255, g=255, b=255, render=kRenderNormal, amount=16)
{
set_pev(index, pev_renderfx, fx);
new Float:RenderColor[3];
RenderColor[0] = float(r);
RenderColor[1] = float(g);
RenderColor[2] = float(b);
set_pev(index, pev_rendercolor, RenderColor);
set_pev(index, pev_rendermode, render);
set_pev(index, pev_renderamt, float(amount));
return 1;
}
stock fm_set_user_health(index, health) {
health > 0 ? set_pev(index, pev_health, float(health)) : dllfunc(DLLFunc_ClientKill, index);
return 1;
}
stock fm_set_user_armor(index, armor) {
set_pev(index, pev_armorvalue, float(armor));
return 1;
}
But I don't know if this will work. Didn't tested it.