at scripting i made hunter on zombie swarm when he leaps make sounds he leaps with ctrl + mouse1 has die pain hit miss sounds. But i Need Some Help How Can I Make Smoker Boomer And A Tank (Tank 1 At A The Time). And How To Make A Picture When Zombie's Win And Humans Win (Like L4D Picture And Writed On It Humans/Zombies Win ) ? And Can Some One Help To Script This Perk Mod To Zombie Swarm That Zombies Cant Get MedKits And The Ranks Iam Trying to do one mod
Code:
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
#include <fun>
#include <nvault>
#include <cstrike>
#define MAXPERKS 5
#define MAXRANKS 4
#define HEAL_TIME 7
#define MEDIC_HEAL_COOLDOWN 10.0
#define HEALING_DISTANCE 70.0
#define BAR_REMOVE 0 // Don't change!!!
#define PLUGIN "Perk Mod"
#define AUTHOR "xbatista"
#define VERSION "1.0"
const m_pClientActiveItem = 374;
new const g_medic_pack_model[] = "models/Left4Dead/p_medic.mdl";
new const g_medkit_heal[] = "Left4Dead/medic_healing.wav"
new const Promotion[] = "Left4Dead/promoted.wav";
new const PERKS[MAXPERKS][] =
{
"Field Medic",
"Support Specialist",
"Sharpshooter",
"Commando",
"Berserker"
}
enum // Player perks
{
MEDIC = 0,
SUPPORT,
SHARPSHOOTER,
COMMANDO,
BERSERKER
};
#define COMMANDO_WEAPONS ((1<<CSW_AUG)|(1<<CSW_GALIL)|(1<<CSW_FAMAS)|(1<<CSW_M4A1)|(1<<CSW_SG552)|(1<<CSW_AK47)|(1<<CSW_P90))
#define SHARPSHOOTER_WEAPONS ((1<<CSW_DEAGLE)|(1<<CSW_ELITE)|(1<<CSW_FIVESEVEN)|(1<<CSW_GLOCK18)|(1<<CSW_USP)|(1<<CSW_P228)|(1<<CSW_SCOUT)|(1<<CSW_AWP)|(1<<CSW_G3SG1)|(1<<CSW_SG550))
#define SUPPORT_WEAPONS ((1<<CSW_XM1014)|(1<<CSW_M3)|(1<<CSW_M249))
#define DMG_HEGRENADE (1<<24)
new const BERSERKER_RANKS[MAXRANKS] = { 30, 100, 500, 0 /* don't change '0'! */ } // How much kills needed with knife,grenade to gain berserker level
new const COMMANDO_RANKS[MAXRANKS] = { 50, 600, 2000, 0 /* don't change '0'! */ } // How much kills needed with assault,smgs to gain commando level
new const SHARPSHOOTER_RANKS[MAXRANKS] = { 50, 200, 800, 0 /* don't change '0'! */ } // How much kills needed with handguns,snipers to gain sharpshooter level
new const SUPPORT_RANKS[MAXRANKS] = { 30, 150, 700, 0 /* don't change '0'! */ } // How much kills needed with pump,auto-pump,machine gun to gain support specialist level
new const MEDIC_RANKS[MAXRANKS] = { 300, 2000, 10000, 0 /* don't change '0'! */ } // How much need points to heal to gain medic level
new const SHARPSHOOTER_HEADSHOT_RANKS[MAXRANKS] = { 10, 100, 350, 0 /* don't change '0'! */ } // How much HEADSHOT kills needed with handguns,snipers to gain sharpshooter level
new const MEDIC_HEAL_HP[MAXRANKS] = { 100, 125, 150, 180 } // How much hp heal each medic level (medic perk)
new const COMMANDO_EXTRA_SPAWN_HP[MAXRANKS] = { 0, 15, 30, 60 } // Extra hp on spawn each commando level (commando perk)
new const Float: SUPPORT_DAMAGE_PERCENT[MAXRANKS] = { 0.0, 15.0, 35.0, 80.0 } // extra damage for pump,auto-pump,machine gun each support level (support perk)
new const Float: SHARPSHOOTER_DAMAGE_PERCENT[MAXRANKS] = { 0.0, 20.0, 50.0, 100.0 } // extra damage for pistols,snipers each sharpshooter level (sharpshooter perk)
new const Float: COMMANDO_DAMAGE_PERCENT[MAXRANKS] = { 0.0, 20.0, 40.0, 90.0 } // extra damage for assault,smgs each commando level (commando perk)
new const Float: BERSERKER_KNIFE_DAMAGE[MAXRANKS] = { 0.0, 400.0, 800.0, 1400.0 } // extra damage for knife each berserker level (berserker perk)
new const Float: BERSERKER_GRENADE_DAMAGE[MAXRANKS] = { 0.0, 6.0, 10.0, 17.0 } // extra damage for grenade each berserker level (berserker perk)
new const SHARPSHOOTER_AVOID[MAXRANKS] = { 5, 15, 30, 40 } // How much chance in % to avoid enemy attack each sharpshooter level (sharpshooter perk)
new const SHARPSHOOTER_SCOUT_PERCENT[MAXRANKS] = { 10, 15, 40, 90 } // How much chance in % to get free scout each sharpshooter level (sharpshooter perk)
new const Float: BERSERKER_SPEED[MAXRANKS] = { 0.0, 20.0, 40.0, 60.0 } // How much extra speed give with knife each berserker level (berserker perk)
new const BERSERKER_FLASHBANG_PERCENT[MAXRANKS] = { 5, 15, 40, 100 } // How much chance in % to get free flashbang each berserker level (berserker perk)
// Medic Stuff
new g_ent[33];
new bool:g_healing[33];
new bool:g_being_healed[33];
new bool:g_healing_teammate[33];
new g_target[33];
new Float: g_LastHeal[33];
// Other Stuff
new g_assault_global_kills[33];
new g_support_global_kills[33];
new g_snipers_global_kills[33];
new g_snipers_headshot_global_kills[33];
new g_medic_points[33];
new g_hegrenade_global_kills[33];
new g_assault_rank[33];
new g_support_rank[33];
new g_snipers_rank[33];
new g_hegrenade_rank[33];
new g_medic_rank[33];
new g_PlayerPerk[33];
new g_PerkKey[33];
new bool: g_PerkChoosen[33];
new cvar_help_url;
new configfile[200];
new g_iCurWeapon[33];
new g_iMaxPlayers;
new g_freezetime2, saverank;
new g_Vault;
new g_msgid_BarTime;
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_cvar("pk_version", VERSION, FCVAR_SPONLY|FCVAR_SERVER)
set_cvar_string("pk_version", VERSION)
register_clcmd("say /dmi","player_info");
register_clcmd("say dmi","player_info");
register_clcmd("say /dmi2","player_info2");
register_clcmd("say dmi2","player_info2");
register_clcmd("say /info","show_mod_info");
register_clcmd("say info","show_mod_info");
register_clcmd("say /dmenu","main_player_menu");
register_clcmd("say dmenu","main_player_menu");
register_clcmd("say /perk","main_perk_menu");
register_clcmd("say perk","main_perk_menu");
saverank = register_cvar("pm_saverank","0"); // Save Rank by : 1 = SteamID, 0 = IP.
cvar_help_url = register_cvar("pm_help_url", "http://92.61.36.146/cstrike/webshit2/information_desert.html");
// <-- URL for information about MOD!
register_event("DeathMsg", "Ev_DeathMsg", "a");
register_logevent("Logevent_Round_Start", 2, "1=Round_Start");
register_logevent("EventRoundEnd", 2, "1=Round_End");
register_event("HLTV", "Event_New_Round", "a", "1=0", "2=0");
register_event("CurWeapon", "Ev_CurWeapon", "be", "1=1");
register_forward(FM_CmdStart, "FwdCmdStart");
RegisterHam(Ham_TakeDamage, "player", "Fwd_PlayerDamaged")
RegisterHam(Ham_Spawn, "player", "fwd_PlayerSpawned", 1);
g_msgid_BarTime = get_user_msgid("BarTime");
g_iMaxPlayers = get_maxplayers();
}
public plugin_cfg()
{
//Open our vault and have g_Vault store the handle.
g_Vault = nvault_open( "new_mod" );
//Make the plugin error if vault did not successfully open
if ( g_Vault == INVALID_HANDLE )
set_fail_state( "Error opening Mod nVault, file does not exist!" );
}
public plugin_end()
{
//Close the vault when the plugin ends (map change\server shutdown\restart)
nvault_close( g_Vault );
}
public plugin_precache()
{
precache_model(g_medic_pack_model);
precache_sound(Promotion);
precache_sound(g_medkit_heal);
}
public client_authorized(id)
{
g_PlayerPerk[id] = 0
LoadRank(id)
}
public client_disconnect(id)
{
SaveRank(id)
}
public show_mod_info(id)
{
new url[100];
get_pcvar_string(cvar_help_url,url,charsmax(url));
if ( !equal(url,"") )
{
formatex(configfile,charsmax(configfile),"%s",url);
show_motd(id, configfile);
}
}
public main_player_menu(id)
{
new menu = menu_create("Main Desert Mod Menu :" , "player_menu");
menu_additem(menu ,"Choose your Perk", "1" , 0);
menu_additem(menu ,"Perk Effects/Info", "2" , 0);
menu_additem(menu ,"Perk Stats/Info", "3" , 0);
menu_additem(menu ,"Mod Information", "4" , 0);
menu_setprop(menu , MPROP_EXIT , MEXIT_ALL);
menu_display(id , menu , 0);
}
public player_menu(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: main_perk_menu(id)
case 2: player_info(id)
case 3: player_info2(id)
case 4: show_mod_info(id)
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public main_perk_menu(id)
{
new szMsg[60]
formatex(szMsg, 59, "Current Perk : \r%s", PERKS[g_PlayerPerk[id]])
new menu = menu_create(szMsg , "perk_menu");
menu_additem(menu ,"Field Medic", "1" , 0);
menu_additem(menu ,"Support Specialist", "2" , 0);
menu_additem(menu ,"Sharpshooter", "3" , 0);
menu_additem(menu ,"Commando", "4" , 0);
menu_additem(menu ,"Berserker", "5" , 0);
menu_setprop(menu , MPROP_EXIT , MEXIT_ALL);
menu_display(id , menu , 0);
}
public perk_menu(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);
key--
if(g_PlayerPerk[id] != key)
{
g_PerkChoosen[id] = true;
g_PerkKey[id] = key
client_printcolor(id, "/ctrPerk choosen : /g%s", PERKS[key])
}
else
{
main_perk_menu(id)
client_printcolor(id, "/ctrPerk already choosen : /g%s", PERKS[key])
}
menu_destroy(menu);
return PLUGIN_HANDLED;
}
public player_info(id)
{
new szMotd[1536], szTitle[64], iPos = 0
format(szTitle, 63, "Player Perk Effects")
iPos += format(szMotd[iPos], 2047-iPos, "<html><body bgcolor=^"#474642^"><font size=^"2^" face=^"verdana^" color=^"FFFFFF^">")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<b><font color=^"#FF0000^">Perk Effects :</font></b><br>")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Field Medic*</font><br>")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "Heals %d amount of health<br>", MEDIC_HEAL_HP[g_medic_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Support Specialist*</font><br>")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "+%d%% extra damage with Pump, Machine Gun, Auto-Pump<br>", floatround(SUPPORT_DAMAGE_PERCENT[g_support_rank[id]]))
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Sharpshooter*</font><br>")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "+%d%% extra damage with Handguns, Snipers<br>", floatround(SHARPSHOOTER_DAMAGE_PERCENT[g_snipers_rank[id]]))
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "+%d%% to avoid enemies attack<br>", SHARPSHOOTER_AVOID[g_snipers_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "%d%% to get a free Scout<br>", SHARPSHOOTER_SCOUT_PERCENT[g_snipers_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Commando*</font><br>")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "+%d%% extra damage with Assault,Smgs rifles<br>", floatround(COMMANDO_DAMAGE_PERCENT[g_assault_rank[id]]))
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "+%d extra health on spawn<br>", COMMANDO_EXTRA_SPAWN_HP[g_assault_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Berserker*</font><br>")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "+%d%% extra damage with knife,grenade<br>", floatround(BERSERKER_KNIFE_DAMAGE[g_hegrenade_rank[id]]))
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "%dx damage with grenade<br>", floatround(BERSERKER_GRENADE_DAMAGE[g_hegrenade_rank[id]]))
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "+%d extra speed with knife<br>", floatround(BERSERKER_SPEED[g_hegrenade_rank[id]]))
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "%d%% to get a free Flash Nade<br>", BERSERKER_FLASHBANG_PERCENT[g_hegrenade_rank[id]])
show_motd(id, szMotd, szTitle)
return PLUGIN_HANDLED;
}
public player_info2(id)
{
new szMotd[1536], szTitle[64], iPos = 0
format(szTitle, 63, "Player Stats/Info")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<html><body bgcolor=^"#474642^"><font size=^"2^" face=^"verdana^" color=^"FFFFFF^">")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<b><font color=^"#FF0000^">Next Level Requirements :</font></b><br>")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Field Medic*</font><br>")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#00FF00^">|Heal %d health on your teammates|</font><br>", MEDIC_RANKS[g_medic_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "[%d / %d]<br>", g_medic_points[id], MEDIC_RANKS[g_medic_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Support Specialist*</font><br>")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#00FF00^">|Get %d kills with Pump, Machine Gun, Auto-Pump|</font><br>", SUPPORT_RANKS[g_support_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "[%d / %d]<br>", g_support_global_kills[id], SUPPORT_RANKS[g_support_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Sharpshooter*</font><br>")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#00FF00^">|Get %d kills with Handguns, Snipers|</font><br>", SHARPSHOOTER_RANKS[g_snipers_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#00FF00^">|Get %d headshot kills with Handguns, Snipers|</font><br>", SHARPSHOOTER_HEADSHOT_RANKS[g_snipers_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "[%d / %d]<br>", g_snipers_global_kills[id], SHARPSHOOTER_RANKS[g_snipers_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "[%d / %d]<br>", g_snipers_headshot_global_kills[id], SHARPSHOOTER_HEADSHOT_RANKS[g_snipers_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Commando*</font><br>")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#00FF00^">|Get %d kills with Assauult,Smgs rifles|</font><br>", COMMANDO_RANKS[g_assault_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "[%d / %d]<br>", g_assault_global_kills[id], COMMANDO_RANKS[g_assault_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#FFFF00^">*Berserker*</font><br>")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<font color=^"#00FF00^">|Get %d kills with knife,grenade|</font><br>", BERSERKER_RANKS[g_hegrenade_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "[%d / %d]<br><br>", g_hegrenade_global_kills[id], BERSERKER_RANKS[g_hegrenade_rank[id]])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "<b><font color=^"#FF0000^">Ranking :</font></b><br>")
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "Field Medic Lv %d<br>", g_medic_rank[id])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "Support Specialist Lv %d<br>", g_support_rank[id])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "Sharpshooter Lv %d<br>", g_snipers_rank[id])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "Commando Lv %d<br>", g_assault_rank[id])
iPos += format(szMotd[iPos], charsmax(szMotd) - iPos, "Berserker Lv %d<br>", g_hegrenade_rank[id])
show_motd(id, szMotd, szTitle)
return PLUGIN_HANDLED;
}
public Ev_CurWeapon(id)
{
if(!is_user_alive(id))
return PLUGIN_HANDLED;
new weapon = read_data(2)
if( g_iCurWeapon[id] == weapon )
{
// player hasn't changed his weapon
// he has just fired or reloaded or zoomed
// don't add speed to him
return PLUGIN_HANDLED;
}
g_iCurWeapon[id] = weapon
if ( !g_freezetime2 && get_user_weapon(id) == CSW_KNIFE && g_PlayerPerk[id] == BERSERKER )
{
set_user_maxspeed(id, get_user_maxspeed(id) + BERSERKER_SPEED[g_hegrenade_rank[id]] );
}
return PLUGIN_CONTINUE;
}
public Event_New_Round()
{
g_freezetime2 = true;
}
public Logevent_Round_Start()
{
g_freezetime2 = false;
for(new id = 1; id <= g_iMaxPlayers; id++)
{
if( is_user_alive(id) )
{
g_iCurWeapon[id] = 0
// This should trigger a CurWeapon event
set_pdata_cbase(id, m_pClientActiveItem, -1, 5)
}
}
}
public EventRoundEnd()
{
for(new id = 1; id <= g_iMaxPlayers; id++)
{
if( pev_valid(g_ent[id]) )
{
engfunc(EngFunc_RemoveEntity, g_ent[id]);
g_ent[id] = 0;
}
}
}
public FwdCmdStart(client, uc_handle, seed)
{
if( !(1 <= client <= g_iMaxPlayers) || !is_user_alive(client) || g_being_healed[client] || g_PlayerPerk[client] != MEDIC ) return FMRES_IGNORED;
new button = get_uc(uc_handle, UC_Buttons);
new oldbuttons = pev(client, pev_oldbuttons);
static target, body;
new Float:dist = get_user_aiming(client, target, body);
static Float: Time;
Time = get_gametime();
// new iplayersID[32];
// static enemy;
// new xPlayers;
// get_players(iplayersID, xPlayers, "a");
// new origin[3];
// get_user_origin( client, origin );
if( (button & IN_USE) && !(oldbuttons & IN_USE) && dist < HEALING_DISTANCE )
{
if( (1 <= target <= g_iMaxPlayers) && is_user_alive(target) && !g_being_healed[target] && !g_healing[target] && Time - MEDIC_HEAL_COOLDOWN > g_LastHeal[client] && get_user_team(client) == get_user_team(target) )
{
static name[32] ; get_user_name(target, name, charsmax(name));
static name2[32] ; get_user_name(client, name2, charsmax(name2));
client_print(client, print_center, "Your target: %s", name);
client_print(target, print_center, "You healer: %s", name2);
emit_sound(target, CHAN_ITEM, g_medkit_heal, 1.0, ATTN_NORM, 0, PITCH_NORM);
g_healing_teammate[client] = true
g_healing[client] = true;
g_target[client] = target;
g_being_healed[target] = true;
ManageBar(client, HEAL_TIME);
ManageBar(target, HEAL_TIME);
set_task(float(HEAL_TIME), "TaskFinishHeal", client);
g_LastHeal[client] = Time
}
}
else if( g_healing[client] && !(button & IN_USE) )
{
new targeti = g_target[client];
g_healing[client] = false;
g_being_healed[targeti] = false;
ManageBar(client, BAR_REMOVE);
ManageBar(targeti, BAR_REMOVE);
remove_task(client);
}
if( (button & IN_USE) && !(oldbuttons & IN_USE) )
{
// new targetorigin[3], iNum, distancebetween
// for ( iNum = 0; iNum < xPlayers; iNum++ )
// {
// enemy = iplayersID[iNum]
// get_user_origin( enemy, targetorigin )
// distancebetween = get_distance( origin, targetorigin )
if(!g_being_healed[client] && !g_healing[client] && Time - MEDIC_HEAL_COOLDOWN > g_LastHeal[client] )
{
emit_sound(client, CHAN_ITEM, g_medkit_heal, 1.0, ATTN_NORM, 0, PITCH_NORM);
g_healing_teammate[client] = false;
g_healing[client] = true;
if ( !(button & IN_JUMP) && !(button & IN_DUCK) && !(button & IN_FORWARD) && !(button & IN_BACK) &&
!(button & IN_MOVELEFT) && !(button & IN_MOVERIGHT) && !(button & IN_ATTACK) && !(button & IN_ATTACK2))
{
client_print(client, print_center, "Healing Self");
}
ManageBar(client, HEAL_TIME);
set_task(float(HEAL_TIME), "TaskFinishHeal2", client);
g_LastHeal[client] = Time
}
// }
}
else if ( g_healing[client] && !(button & IN_USE) )
{
g_healing[client] = false;
ManageBar(client, BAR_REMOVE);
remove_task(client);
}
if ( g_healing[client] )
{
if ( g_healing_teammate[client] && dist > HEALING_DISTANCE )
{
new targeti = g_target[client];
g_healing[client] = false;
g_being_healed[targeti] = false;
ManageBar(client, BAR_REMOVE);
ManageBar(targeti, BAR_REMOVE);
remove_task(client);
}
if ( !g_healing_teammate[client] )
{
if ( (button & IN_JUMP) || (button & IN_DUCK) || (button & IN_FORWARD) || (button & IN_BACK) ||
(button & IN_MOVELEFT) || (button & IN_MOVERIGHT) || (button & IN_ATTACK) || (button & IN_ATTACK2))
{
g_healing[client] = false;
ManageBar(client, BAR_REMOVE);
remove_task(client);
}
}
}
return FMRES_IGNORED;
}
public fwd_PlayerSpawned(id)
{
if ( !is_user_alive(id) )
return;
if ( g_PerkChoosen[id] )
{
g_PlayerPerk[id] = g_PerkKey[id]
client_printcolor(id, "/ctrNow you are : /g%s", PERKS[g_PlayerPerk[id]])
g_PerkChoosen[id] = false;
}
new hp = get_user_health(id)
ResetItems(id);
if ( g_PlayerPerk[id] == MEDIC )
{
new ent = engfunc(EngFunc_CreateNamedEntity, engfunc(EngFunc_AllocString, "info_target"));
if ( pev_valid(ent) )
{
engfunc(EngFunc_SetModel, ent, g_medic_pack_model);
set_pev(ent, pev_movetype, MOVETYPE_FOLLOW);
set_pev(ent, pev_aiment, id);
g_ent[id] = ent;
}
}
else if ( g_PlayerPerk[id] == COMMANDO)
{
set_user_health(id, hp + COMMANDO_EXTRA_SPAWN_HP[g_assault_rank[id]]);
}
else if ( g_PlayerPerk[id] == SHARPSHOOTER && !user_has_weapon(id, CSW_SCOUT)
&& random_num(0, 100) < SHARPSHOOTER_SCOUT_PERCENT[g_snipers_rank[id]])
{
set_task(10.0, "Delayed_Scout", id)
}
else if ( g_PlayerPerk[id] == BERSERKER && !user_has_weapon(id, CSW_FLASHBANG)
&& random_num(0, 100) < BERSERKER_FLASHBANG_PERCENT[g_hegrenade_rank[id]])
{
set_task(10.0, "Delayed_Frost", id)
}
/* if ( g_shotguns_rank[id] == 1 )
{
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, 130);
}
else if ( g_shotguns_rank[id] == 2 )
{
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, 100);
}
else if ( g_shotguns_rank[id] == 3 )
{
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransTexture, 55);
}*/
}
public Delayed_Scout(id)
{
if ( is_user_alive(id) && g_PlayerPerk[id] == SHARPSHOOTER && !user_has_weapon(id, CSW_SCOUT) )
{
give_item(id, "weapon_scout")
cs_set_user_bpammo(id, CSW_SCOUT, 90)
}
}
public Delayed_Frost(id)
{
if ( is_user_alive(id) && g_PlayerPerk[id] == BERSERKER && !user_has_weapon(id, CSW_FLASHBANG) )
{
give_item(id, "weapon_flashbang")
give_item(id, "weapon_flashbang")
}
}
public Fwd_PlayerDamaged(id, inflictor, attacker, Float:damage, damagebits)
{
if ( !(1 <= attacker <= g_iMaxPlayers) )
return HAM_IGNORED;
new clip, ammo, weapon = get_user_weapon(attacker,clip,ammo);
if ( random_num(0, 100) < SHARPSHOOTER_AVOID[g_snipers_rank[id]] && g_PlayerPerk[id] == SHARPSHOOTER )
{
SetHamParamFloat(4, 0.0)
return HAM_HANDLED;
}
if ( weapon == SHARPSHOOTER_WEAPONS && g_PlayerPerk[attacker] == SHARPSHOOTER )
{
SetHamParamFloat(4, damage + damage / 100.0 * SHARPSHOOTER_DAMAGE_PERCENT[g_snipers_rank[attacker]])
return HAM_HANDLED;
}
if ( weapon == COMMANDO_WEAPONS && g_PlayerPerk[attacker] == COMMANDO )
{
SetHamParamFloat(4, damage + damage / 100.0 * COMMANDO_DAMAGE_PERCENT[g_assault_rank[attacker]])
return HAM_HANDLED;
}
if ( weapon == SUPPORT_WEAPONS && g_PlayerPerk[attacker] == SUPPORT)
{
SetHamParamFloat(4, damage + damage / 100.0 * SUPPORT_DAMAGE_PERCENT[g_support_rank[attacker]])
return HAM_HANDLED;
}
if( damagebits & DMG_HEGRENADE && id != attacker && g_PlayerPerk[attacker] == BERSERKER)
{
SetHamParamFloat(4, damage * BERSERKER_GRENADE_DAMAGE[g_hegrenade_rank[attacker]]);
return HAM_HANDLED;
}
if ( weapon == CSW_KNIFE && g_PlayerPerk[attacker] == BERSERKER)
{
SetHamParamFloat(4, damage + damage / 100.0 * BERSERKER_KNIFE_DAMAGE[g_hegrenade_rank[attacker]])
return HAM_HANDLED;
}
return HAM_IGNORED;
}
public Ev_DeathMsg()
{
new i_attacker = read_data(1);
new i_victim = read_data(2);
new i_headshot = read_data(3);
new szWeapon[20]
read_data(4, szWeapon, 19)
static name[32] ; get_user_name(i_attacker, name, charsmax(name));
ResetItems(i_victim);
if ( !(1 <= i_attacker <= g_iMaxPlayers) || i_victim == i_attacker )
return;
if ( i_headshot )
{
if ( equali(szWeapon, "scout") || equali(szWeapon, "awp") || equali(szWeapon, "sg550") || equali(szWeapon, "g3sg1")
|| equali(szWeapon, "glock18") || equali(szWeapon, "deagle") || equal(szWeapon, "p228") || equal(szWeapon, "elite") || equal(szWeapon, "usp") || equal(szWeapon, "fiveseven") )
{
g_snipers_global_kills[i_attacker]--
g_snipers_headshot_global_kills[i_attacker]++
}
}
if ( equali(szWeapon, "ak47") || equali(szWeapon, "m4a1") || equal(szWeapon, "sg552") || equal(szWeapon, "aug") || equal(szWeapon, "galil") || equal(szWeapon, "famas") || equal(szWeapon, "p90") || equal(szWeapon, "mp5navy")
|| equal(szWeapon, "ump45") || equal(szWeapon, "tmp") || equal(szWeapon, "mac10"))
{
g_assault_global_kills[i_attacker]++
if ( g_assault_rank[i_attacker] < MAXRANKS-1 && g_assault_global_kills[i_attacker] >= COMMANDO_RANKS[g_assault_rank[i_attacker]] )
{
g_assault_rank[i_attacker]++
client_cmd(i_attacker, "spk %s", Promotion)
client_printcolor(0, "/y%s has been promoted to /g%d /ctrCommando /yRank!", name, g_assault_rank[i_attacker])
}
}
else if ( equali(szWeapon, "m249") || equali(szWeapon, "m3") || equali(szWeapon, "xm1014") )
{
g_support_global_kills[i_attacker]++
if ( g_support_rank[i_attacker] < MAXRANKS-1 && g_support_global_kills[i_attacker] >= SUPPORT_RANKS[g_support_rank[i_attacker]] )
{
g_support_rank[i_attacker]++
client_cmd(i_attacker, "spk %s", Promotion)
client_printcolor(0, "/y%s has been promoted to /g%d /ctrSupport Specialist /yRank!", name, g_support_rank[i_attacker])
}
}
else if ( equali(szWeapon, "scout") || equali(szWeapon, "awp") || equali(szWeapon, "sg550") || equali(szWeapon, "g3sg1")
|| equali(szWeapon, "glock18") || equali(szWeapon, "deagle") || equal(szWeapon, "p228") || equal(szWeapon, "elite") || equal(szWeapon, "usp") || equal(szWeapon, "fiveseven"))
{
g_snipers_global_kills[i_attacker]++
if ( g_snipers_rank[i_attacker] < MAXRANKS-1 && g_snipers_global_kills[i_attacker] >= SHARPSHOOTER_HEADSHOT_RANKS[g_snipers_rank[i_attacker]] && g_snipers_headshot_global_kills[i_attacker] >= SHARPSHOOTER_HEADSHOT_RANKS[g_snipers_rank[i_attacker]] )
{
g_snipers_rank[i_attacker]++
client_cmd(i_attacker, "spk %s", Promotion)
client_printcolor(0, "/y%s has been promoted to /g%d /ctrSharpshooter /yRank!", name, g_snipers_rank[i_attacker])
}
}
else if ( equali(szWeapon, "grenade") || equali(szWeapon, "knife") )
{
g_hegrenade_global_kills[i_attacker]++
if ( g_hegrenade_rank[i_attacker] < MAXRANKS-1 && g_hegrenade_global_kills[i_attacker] >= BERSERKER_RANKS[g_hegrenade_rank[i_attacker]] )
{
g_hegrenade_rank[i_attacker]++
client_cmd(i_attacker, "spk %s", Promotion)
client_printcolor(0, "/y%s has been promoted to /g%d /ctrBerserker /yRank!", name, g_hegrenade_rank[i_attacker])
}
}
}
// Medic Stuff
public TaskFinishHeal(client)
{
if( pev_valid(g_ent[client]) )
{
engfunc(EngFunc_RemoveEntity, g_ent[client]);
g_ent[client] = 0;
}
new target = g_target[client];
new health;
health = get_user_health(target)
static name[32] ; get_user_name(client, name, charsmax(name));
if ( health < MEDIC_HEAL_HP[g_medic_rank[client]])
{
g_medic_points[client] += 100
set_user_health(target, MEDIC_HEAL_HP[g_medic_rank[client]]);
if ( g_medic_rank[client] < MAXRANKS-1 && g_medic_points[client] >= MEDIC_RANKS[g_medic_rank[client]] )
{
g_medic_rank[client]++
client_cmd(client, "spk %s", Promotion)
client_printcolor(0, "/y%s has been promoted to /g%d /ctrMedic Rank /yRank!", name, g_medic_rank[client])
}
}
ManageBar(client, BAR_REMOVE);
ManageBar(target, BAR_REMOVE);
g_healing[client] = false;
g_being_healed[target] = false;
}
public TaskFinishHeal2(client)
{
if( !(1 <= client <= g_iMaxPlayers) ) return PLUGIN_CONTINUE;
if( pev_valid(g_ent[client]) )
{
engfunc(EngFunc_RemoveEntity, g_ent[client]);
g_ent[client] = 0;
}
new health;
health = get_user_health(client)
if ( health < MEDIC_HEAL_HP[g_medic_rank[client]])
{
set_user_health(client, MEDIC_HEAL_HP[g_medic_rank[client]]);
}
ManageBar(client, BAR_REMOVE);
g_healing[client] = false;
return PLUGIN_CONTINUE;
}
ResetItems(client)
{
if( !(1 <= client <= g_iMaxPlayers) ) return;
if( pev_valid(g_ent[client]) )
{
engfunc(EngFunc_RemoveEntity, g_ent[client]);
g_ent[client] = 0;
}
if( g_being_healed[client] )
{
new target = g_target[client];
g_being_healed[target] = false;
g_healing[client] = false;
ManageBar(client, BAR_REMOVE);
ManageBar(target, BAR_REMOVE);
}
if( g_healing[client] )
{
new target = g_target[client];
g_healing[client] = false;
g_being_healed[target] = false;
ManageBar(client, BAR_REMOVE);
ManageBar(target, BAR_REMOVE);
}
remove_task(client);
}
ManageBar(const client, bartime)
{
new count = 1
new players[32];
if (client) players[0] = client; else get_players(players,count,"ch");
for (new i=0;i<count;i++)
if (is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE, g_msgid_BarTime, _, players[i]);
write_short(bartime);
message_end();
}
}
// Save Player Info
SaveRank(id)
{
if ( get_pcvar_num(saverank) )
{
new authid[32]
get_user_authid(id, authid, 31)
new szData[256];
new szKey[64];
formatex( szKey , 63 , "%s-ID" , authid);
formatex( szData , 255 , "%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#" , g_assault_global_kills[id], g_support_global_kills[id], g_snipers_global_kills[id], g_snipers_headshot_global_kills[id],
g_hegrenade_global_kills[id], g_assault_rank[id], g_support_rank[id], g_snipers_rank[id], g_hegrenade_rank[id], g_medic_points[id], g_medic_rank[id] );
nvault_set( g_Vault , szKey , szData );
}
else
{
new authip[32]
get_user_ip(id,authip,31,1)
new szData[256];
new szKey[64];
formatex( szKey , 63 , "%s-IP" , authip);
formatex( szData , 255 , "%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#" , g_assault_global_kills[id], g_support_global_kills[id], g_snipers_global_kills[id], g_snipers_headshot_global_kills[id],
g_hegrenade_global_kills[id], g_assault_rank[id], g_support_rank[id], g_snipers_rank[id], g_hegrenade_rank[id], g_medic_points[id], g_medic_rank[id] );
nvault_set( g_Vault , szKey , szData );
}
}
// Load Player Info
LoadRank(id)
{
if ( get_pcvar_num(saverank) )
{
new authid[32]
get_user_authid(id, authid, 31)
new szData[256];
new szKey[40];
formatex( szKey , 39 , "%s-ID" , authid );
formatex(szData , 255, "%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#", g_assault_global_kills[id], g_support_global_kills[id], g_snipers_global_kills[id], g_snipers_headshot_global_kills[id],
g_hegrenade_global_kills[id], g_assault_rank[id], g_support_rank[id], g_snipers_rank[id], g_hegrenade_rank[id], g_medic_points[id], g_medic_rank[id] )
nvault_get(g_Vault, szKey, szData, 255)
replace_all(szData , 255, "#", " ")
new assault_global[32], support_global[32], snipers_global[32], snipers_headshot_global[32],
hegrenade_global[32], assault_rank[32], support_rank[32],
snipers_rank[32], hegrenade_rank[32], medic_global[32], medic_rank[32];
parse(szData, assault_global, 31, support_global, 31, snipers_global, 31, snipers_headshot_global, 31, hegrenade_global, 31,
assault_rank, 31, support_rank, 31, snipers_rank, 31, hegrenade_rank, 31, medic_global, 31, medic_rank, 31 )
g_assault_global_kills[id] = str_to_num(assault_global)
g_support_global_kills[id] = str_to_num(support_global)
g_snipers_global_kills[id] = str_to_num(snipers_global)
g_snipers_headshot_global_kills[id] = str_to_num(snipers_headshot_global)
g_hegrenade_global_kills[id] = str_to_num(hegrenade_global)
g_medic_points[id] = str_to_num(medic_global)
g_assault_rank[id] = str_to_num(assault_rank)
g_support_rank[id] = str_to_num(support_rank)
g_snipers_rank[id] = str_to_num(snipers_rank)
g_hegrenade_rank[id] = str_to_num(hegrenade_rank)
g_medic_rank[id] = str_to_num(medic_rank)
}
else
{
new authip[32]
get_user_ip(id,authip,31,1)
new szData[256];
new szKey[40];
formatex( szKey , 39 , "%s-IP" , authip );
formatex(szData , 255, "%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#", g_assault_global_kills[id], g_support_global_kills[id], g_snipers_global_kills[id], g_snipers_headshot_global_kills[id],
g_hegrenade_global_kills[id], g_assault_rank[id], g_support_rank[id], g_snipers_rank[id], g_hegrenade_rank[id], g_medic_points[id], g_medic_rank[id] )
nvault_get(g_Vault, szKey, szData, 255)
replace_all(szData , 255, "#", " ")
new assault_global[32], support_global[32], snipers_global[32], snipers_headshot_global[32],
hegrenade_global[32], assault_rank[32], support_rank[32],
snipers_rank[32], hegrenade_rank[32], medic_global[32], medic_rank[32];
parse(szData, assault_global, 31, support_global, 31, snipers_global, 31, snipers_headshot_global, 31, hegrenade_global, 31,
assault_rank, 31, support_rank, 31, snipers_rank, 31, hegrenade_rank, 31, medic_global, 31, medic_rank, 31 )
g_assault_global_kills[id] = str_to_num(assault_global)
g_support_global_kills[id] = str_to_num(support_global)
g_snipers_global_kills[id] = str_to_num(snipers_global)
g_snipers_headshot_global_kills[id] = str_to_num(snipers_headshot_global)
g_hegrenade_global_kills[id] = str_to_num(hegrenade_global)
g_medic_points[id] = str_to_num(medic_global)
g_assault_rank[id] = str_to_num(assault_rank)
g_support_rank[id] = str_to_num(support_rank)
g_snipers_rank[id] = str_to_num(snipers_rank)
g_hegrenade_rank[id] = str_to_num(hegrenade_rank)
g_medic_rank[id] = str_to_num(medic_rank)
}
}
stock client_printcolor(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 txt
replace_all(msg,190,"/y","^1");// orange txt
replace_all(msg,190,"/ctr","^3");// team txt
replace_all(msg,190,"/w","^2");// team txt
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();
}
}