Raised This Month: $ Target: $400
 0% 

Need Some Help For Scripting


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
DoviuX
Senior Member
Join Date: Jun 2009
Location: Lithuania
Old 08-05-2009 , 05:52   Need Some Help For Scripting
Reply With Quote #1

Hi Iam 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();
		}
}
DoviuX is offline
Send a message via Skype™ to DoviuX
Reply


Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 18:23.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode