Cerere Modificare plugin quake sounds culori diferite

Modificari necesare ale pluginurilor

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Locked
User avatar
RaFy1995
Membru, skill +1
Membru, skill +1
Posts: 418
Joined: 13 Feb 2016, 22:13
Detinator Steam: Da
CS Status: Respecta si vei fi Respectat !
SteamID: RaFy1995
Fond eXtream: 0
Has thanked: 195 times
Been thanked: 8 times

14 Sep 2017, 19:39

Salutare tuturor, am nevoie de ajutorul vostru sa imi modifice cineva pluginul quake sounds, vreau ca mesajele din hud sa apara prin diferite culori, momentan apare doar intro singura culoare albastru si nu stiu de ce :upside_down_face:

https://imgur.com/a/2YTea

Code: Select all

/*************************************************************************************
******* PRAGMA ***********************************************************************
*************************************************************************************/

// WHETHER OR NOT TO FORCE ';' AFTER EACH LINE
//
// #pragma semicolon 1

// WHETHER OR NOT TO INCREASE MEMORY FOR THIS SCRIPT
//
// #pragma dynamic 2097152

// WHETHER OR NOT TO USE '\' AS A CONTROL CHARACTER
// INSTEAD OF THE DEFAULT ONE, WHICH IS '^'
//
// #pragma ctrlchar '\'

// SETS TAB SIZE '\t', ' ' TO 0
// GLOBALLY
//
#pragma tabsize 0


/*************************************************************************************
******* HEADERS **********************************************************************
*************************************************************************************/

// AMX MOD X HEADER FILES
//
#include <amxmodx>
#include <amxmisc>

// FAKE META
//
#include <fakemeta>

// REQUIRES XSTATS MODULE IF AVAILABLE
//
#pragma reqclass xstats

// AUTO LOAD
//
#if !defined AMXMODX_NOAUTOLOAD
	#pragma defclasslib xstats csx
	#pragma defclasslib xstats dodx
	#pragma defclasslib xstats tfcx
	#pragma defclasslib xstats tsx
#endif


/*************************************************************************************
******* DEFINITIONS ******************************************************************
*************************************************************************************/

// CENTER HUD MESSAGE POSITION
//
#define QS_CENTERPOS (-1.0)

// VERSION
//
#define QS_VERSION "5.0"

// INVALID PLAYER
//
#define QS_INVALIDPLR (0xFF)

// MAXIMUM PLAYERS
//
#define QS_MAXPLRS (32)

// MAXIMUM BYTE (8 BIT)
//
#define QS_MAXBYTE (0xFF)

// INVALID TEAM
//
#define QS_INVALIDTEAM (0xFF)

// HUD MESSAGE PURPOSES
//
enum /* HUD MESSAGE PURPOSE */
{
	HUDMSG_EVENT = 0,
	HUDMSG_STREAK,
	HUDMSG_ROUND,

	HUDMSG_MAX
};


/*************************************************************************************
******* GLOBAL VARIABLES *************************************************************
*************************************************************************************/

// PLUG-IN ON/ OFF
//
new bool:g_bON = false;

/**
* HEAD SHOT
*/

// HEAD SHOT ON/ OFF
//
new bool:g_bHShot = false;

// HEAD SHOT MESSAGE ON/ OFF
new bool:g_bHShotMsg = false;

// HEAD SHOT MESSAGE
//
new g_HShotMsg[256];

// HEAD SHOT SOUNDS COUNT
//
new g_HShotSize = 0;

// HEAD SHOT ONLY FOR KILLER
//
new bool:g_bHShotOnlyKiller = false;

// HEAD SHOT SOUNDS CONTAINER
//
new Array:g_pHShot = Invalid_Array;

/**
* REVENGE
*/

// REVENGE ON/ OFF
//
new bool:g_bRevenge = false;

// REVENGE MESSAGE FOR KILLER ON/ OFF
//
new bool:g_bRevengeMsgKiller = false;

// REVENGE MESSAGE FOR VICTIM ON/ OFF
//
new bool:g_bRevengeMsgVictim = false;

// REVENGE MESSAGE FOR KILLER (IF ENABLED)
//
new g_RevengeMsgKiller[256];

// REVENGE MESSAGE FOR VICTIM (IF ENABLED)
//
new g_RevengeMsgVictim[256];

// REVENGE SOUNDS COUNT
//
new g_RevengeSize = 0;

// REVENGE ONLY FOR KILER
//
new bool:g_bRevengeOnlyKiller = false;

// REVENGE SOUNDS CONTAINER
//
new Array:g_pRevenge = Invalid_Array;

/**
* HATTRICK
* THE LEADER OF CURRENT ROUND
*/

// HATTRICK ON/ OFF
//
new bool:g_bHattrick = false;

// HATTRICK MESSAGE ON/ OFF
//
new bool:g_bHattrickMsg = false;

// HATTRICK MESSAGE
//
new g_HattrickMsg[256];

// HATTRICK SOUNDS COUNT
//
new g_HattrickSize = 0;

// MINIMUM KILLS REQUIRED FOR HATTRICK
//
new g_MinimumKillsForHattrick = 0;

// HATTRICK SOUNDS CONTAINER
//
new Array:g_pHattrick = Invalid_Array;

/**
* SUICIDE
*/

// SUICIDE ON/ OFF
//
new bool:g_bSuicide = false;

// SUICIDE MESSAGE ON/ OFF
//
new bool:g_bSuicideMsg = false;

// SUICIDE MESSAGE
//
new g_SuicideMsg[256];

// SUICIDE SOUNDS COUNT
//
new g_SuicideSize = 0;

// SUICIDE SOUNDS CONTAINER
//
new Array:g_pSuicide = Invalid_Array;

/**
* GRENADE
*/

// GRENADE ON/ OFF
//
new bool:g_bGrenade = false;

// GRENADE MESSAGE ON/ OFF
//
new bool:g_bGrenadeMsg = false;

// GRENADE KILL MESSAGE
//
new g_GrenadeMsg[256];

// GRENADE SOUNDS COUNT
//
new g_GrenadeSize = 0;

// GRENADE SOUNDS CONTAINER
//
new Array:g_pGrenade = Invalid_Array;

/**
* TEAM KILL
*/

// TEAM KILL ON/ OFF
//
new bool:g_bTKill = false;

// TEAM KILL MESSAGE ON/ OFF
//
new bool:g_bTKillMsg = false;

// TEAM KILL MESSAGE
//
new g_TKillMsg[256];

// TEAM KILL SOUNDS COUNT
//
new g_TKillSize = 0;

// TEAM KILL SOUNDS CONTAINER
//
new Array:g_pTKill = Invalid_Array;

/**
* KNIFE
*/

// KNIFE ON/ OFF
//
new bool:g_bKnife = false;

// KNIFE MESSAGE ON/ OFF
//
new bool:g_bKnifeMsg = false;

// KNIFE KILL MESSAGE
//
new g_KnifeMsg[256];

// KNIFE KILL SOUNDS COUNT
//
new g_KnifeSize = 0;

// KNIFE SOUNDS CONTAINER
//
new Array:g_pKnife = Invalid_Array;

/**
* FIRST BLOOD
*/

// FIRST BLOOD ON/ OFF
//
new bool:g_bFBlood = false;

// FIRST BLOOD MESSAGE ON/ OFF
//
new bool:g_bFBloodMsg = false;

// FIRST BLOOD MESSAGE
//
new g_FBloodMsg[256];

// FIRST BLOOD SOUNDS COUNT
//
new g_FBloodSize = 0;

// FIRST BLOOD VARIABLE
//
new g_FBlood = 0;

// FIRST BLOOD SOUNDS CONTAINER
//
new Array:g_pFBlood = Invalid_Array;

/**
* KILLS STREAK
*/

// KILLS STREAK ON/ OFF
//
new bool:g_bKStreak = false;

// KILL STREAK SOUNDS COUNT
//
new g_KStreakSoundsSize = 0;

// KILLS STREAK SOUNDS CONTAINER
//
new Array:g_pKStreakSounds = Invalid_Array;

// KILLS STREAK MESSAGES CONTAINER
//
new Array:g_pKStreakMessages = Invalid_Array;

// KILLS STREAK REQUIRED KILLS CONTAINER
//
new Array:g_pKStreakRequiredKills = Invalid_Array;

/**
* ROUND START
*/

// ROUND START ON/ OFF
//
new bool:g_bRStart = false;

// ROUND START MESSAGE ON/ OFF
//
new bool:g_bRStartMsg = false;

// ROUND START MESSAGE
//
new g_RStartMsg[256];

// ROUND START SOUNDS COUNT
//
new g_RStartSize = 0;

// ROUND START SOUNDS CONTAINER
//
new Array:g_pRStart = Invalid_Array;

/**
* DOUBLE KILL
*/

// DOUBLE KILL ON/ OFF
//
new bool:g_bDKill = false;

// DOUBLE KILL MESSAGE ON/ OFF
//
new bool:g_bDKillMsg = false;

// DOUBLE KILL MESSAGE
//
new g_DKillMsg[256];

// DOUBLE KILL SOUNDS COUNT
//
new g_DKillSize = 0;

// DOUBLE KILL SOUNDS CONTAINER
//
new Array:g_pDKill = Invalid_Array;

/**
* FLAWLESS
* IF A TEAM KILLS THE OTHER ONE W/ O GETTING ANY CASUALTIES
*/

// FLAWLESS ON/ OFF
//
new bool:g_bFlawless = false;

// FLAWLESS MESSAGE ON/ OFF
//
new bool:g_bFlawlessMsg = false;

// FLAWLESS MESSAGE
//
new g_FlawlessMsg[256];

// FLAWLESS TEAM NAME FOR TEAM [1]
//
new g_FlawlessTeamName_1[256];

// FLAWLESS TEAM NAME FOR TEAM [2]
//
new g_FlawlessTeamName_2[256];

// FLAWLESS SOUNDS COUNT
//
new g_FlawlessSize = 0;

// FLAWLESS SOUNDS CONTAINER
//
new Array:g_pFlawless = Invalid_Array;


/**
* HUD MESSAGE [TE_TEXTMESSAGE]
*/

// CHANNEL HANDLES
//
new g_pHudMsg[HUDMSG_MAX];

// RED
//
new g_Red = 0;

// RANDOM RED
//
new bool:g_bRandomRed = false;

// GREEN
//
new g_Green = 0;

// RANDOM GREEN
//
new bool:g_bRandomGreen = false;

// BLUE
//
new g_Blue = 0;

// RANDOM BLUE
//
new bool:g_bRandomBlue = false;


/**
* GAME RELATED
*/

// MOD NAME
//
new g_ModName[8];

// ON DEATHMSG
//
new bool:g_bOnDeathMsg = false;

// DEATHMSG BYTE STATUS
//
new g_DeathMsgByteStatus = 0;

// DEATHMSG ONLY AVAILABLE
//
new bool:g_bDeathMsgOnly = false;

// CACHED KILLER ID
//
new g_Killer = 0;

// CACHED VICTIM ID
//
new g_Victim = 0;

// CACHED WEAPON ID
//
new g_wpnID = 0;

// CACHED HIT PLACE
//
new g_Place = 0;

// CACHED TEAM KILL BOOLEAN
//
new g_TK = 0;


/**
* PLAYERS RELATED
*/

// MAXIMUM PLAYERS
//
new g_maxPlayers = 0;

// TOTAL KILLS PER PLAYER PER LIFE
// RESETS ON PLAYER DEATH
//
new g_Kills[QS_MAXPLRS + 1];

// TOTAL KILLS PER PLAYER PER ROUND
// RESETS NEXT ROUND
//
new g_RKills[QS_MAXPLRS + 1];

// HLTV
//
new bool:g_bHLTV[QS_MAXPLRS + 1];

// BOT
//
new bool:g_bBOT[QS_MAXPLRS + 1];

// CONNECTED
//
new bool:g_bConnected[QS_MAXPLRS + 1];

// NAME
//
new g_Name[QS_MAXPLRS + 1][32];

// REVENGE KILL NAME STAMP
//
new g_RevengeStamp[QS_MAXPLRS + 1][32];

// SOUNDS DISABLED PER PLAYER
//
new bool:g_bDisabled[QS_MAXPLRS + 1];

// LAST KILL TIME STAMP (GAME TIME)
//
new Float:g_fLastKillTimeStamp[QS_MAXPLRS + 1];


/*************************************************************************************
******* FORWARDS *********************************************************************
*************************************************************************************/

// PLUG-IN NATIVES
//
public plugin_natives()
{
	// SETS MODULE FILTER
	//
	set_module_filter("Module_Filter");

	// SETS NATIVE FILTER
	//
	set_native_filter("Native_Filter");
}

// FILTERS MODULE
//
public Module_Filter(const Module[])
{
	// XSTATS
	//
	if (equali(Module, "xstats"))
	{
		// AVAILABLE FOR GAMES BELOW
		//
		if (equali(g_ModName, "CS", 2) || equali(g_ModName, "CZ", 2) || equali(g_ModName, "DOD", 3) || \
			equali(g_ModName, "TFC", 3) || equali(g_ModName, "TS", 2))
			return PLUGIN_CONTINUE;

		// UNAVAILABLE
		//
		return PLUGIN_HANDLED;
	}

	// OK
	//
	return PLUGIN_CONTINUE;
}

// FILTERS NATIVE
//
public Native_Filter(const Name[], Id, bTrap)
{
	// TRAP
	//
	return !bTrap ? PLUGIN_HANDLED : PLUGIN_CONTINUE;
}

// pfnSpawn()
// CALLED BEFORE "plugin_init"
// THE RIGHT MOMENT FOR INI FILES
// AND PRECACHING DATA
//
public plugin_precache()
{
	// CREATES ARRAYS FIRST
	//
	g_pHShot = ArrayCreate(128);
	g_pSuicide = ArrayCreate(128);
	g_pGrenade = ArrayCreate(128);
	g_pTKill = ArrayCreate(128);
	g_pKnife = ArrayCreate(128);
	g_pFBlood = ArrayCreate(128);
	g_pRStart = ArrayCreate(128);
	g_pDKill = ArrayCreate(128);
	g_pHattrick = ArrayCreate(128);
	g_pFlawless = ArrayCreate(128);
	g_pRevenge = ArrayCreate(128);
	g_pKStreakSounds = ArrayCreate(128);
	g_pKStreakMessages = ArrayCreate(256);
	g_pKStreakRequiredKills = ArrayCreate(8);

	// READS FILE
	//
	__Load();

	// PRECACHES NOTHING
	// IF PLUG-IN IS OFF
	//
	if (!g_bON)
		return;

	// RETRIEVES SOUNDS COUNT
	//
	g_HShotSize = ArraySize(g_pHShot);
	g_SuicideSize = ArraySize(g_pSuicide);
	g_GrenadeSize = ArraySize(g_pGrenade);
	g_TKillSize = ArraySize(g_pTKill);
	g_KnifeSize = ArraySize(g_pKnife);
	g_FBloodSize = ArraySize(g_pFBlood);
	g_RStartSize = ArraySize(g_pRStart);
	g_DKillSize = ArraySize(g_pDKill);
	g_HattrickSize = ArraySize(g_pHattrick);
	g_FlawlessSize = ArraySize(g_pFlawless);
	g_RevengeSize = ArraySize(g_pRevenge);
	g_KStreakSoundsSize = ArraySize(g_pKStreakSounds);

	// DEFINES ITERATOR FOR FURTHER USE
	//
	new Iterator = 0;

	// DEFINES SOUND FOR FURTHER USE
	//
	new Sound[128];

	if (g_bHShot)
	{
		for (Iterator = 0; Iterator < g_HShotSize; Iterator++)
			ArrayGetString(g_pHShot, Iterator, Sound, charsmax(Sound)), precache_sound(Sound);
	}

	if (g_bSuicide)
	{
		for (Iterator = 0; Iterator < g_SuicideSize; Iterator++)
			ArrayGetString(g_pSuicide, Iterator, Sound, charsmax(Sound)), precache_sound(Sound);
	}

	if (g_bGrenade)
	{
		for (Iterator = 0; Iterator < g_GrenadeSize; Iterator++)
			ArrayGetString(g_pGrenade, Iterator, Sound, charsmax(Sound)), precache_sound(Sound);
	}

	if (g_bTKill)
	{
		for (Iterator = 0; Iterator < g_TKillSize; Iterator++)
			ArrayGetString(g_pTKill, Iterator, Sound, charsmax(Sound)), precache_sound(Sound);
	}

	if (g_bKnife)
	{
		for (Iterator = 0; Iterator < g_KnifeSize; Iterator++)
			ArrayGetString(g_pKnife, Iterator, Sound, charsmax(Sound)), precache_sound(Sound);
	}

	if (g_bFBlood)
	{
		for (Iterator = 0; Iterator < g_FBloodSize; Iterator++)
			ArrayGetString(g_pFBlood, Iterator, Sound, charsmax(Sound)), precache_sound(Sound);
	}

	if (g_bRStart)
	{
		for (Iterator = 0; Iterator < g_RStartSize; Iterator++)
			ArrayGetString(g_pRStart, Iterator, Sound, charsmax(Sound)), precache_sound(Sound);
	}

	if (g_bDKill)
	{
		for (Iterator = 0; Iterator < g_DKillSize; Iterator++)
			ArrayGetString(g_pDKill, Iterator, Sound, charsmax(Sound)), precache_sound(Sound);
	}

	if (g_bHattrick)
	{
		for (Iterator = 0; Iterator < g_HattrickSize; Iterator++)
			ArrayGetString(g_pHattrick, Iterator, Sound, charsmax(Sound)), precache_sound(Sound);
	}

	if (g_bFlawless)
	{
		for (Iterator = 0; Iterator < g_FlawlessSize; Iterator++)
			ArrayGetString(g_pFlawless, Iterator, Sound, charsmax(Sound)), precache_sound(Sound);
	}

	if (g_bRevenge)
	{
		for (Iterator = 0; Iterator < g_RevengeSize; Iterator++)
			ArrayGetString(g_pRevenge, Iterator, Sound, charsmax(Sound)), precache_sound(Sound);
	}

	if (g_bKStreak)
	{
		for (Iterator = 0; Iterator < g_KStreakSoundsSize; Iterator++)
			ArrayGetString(g_pKStreakSounds, Iterator, Sound, charsmax(Sound)), precache_sound(Sound);
	}
}

// pfnServerDeactivate_Post()
// MAP ENDS
//
public plugin_end()
{
	// DESTROYS ARRAYS
	//
	ArrayDestroy(g_pHShot);
	ArrayDestroy(g_pSuicide);
	ArrayDestroy(g_pGrenade);
	ArrayDestroy(g_pTKill);
	ArrayDestroy(g_pKnife);
	ArrayDestroy(g_pFBlood);
	ArrayDestroy(g_pRStart);
	ArrayDestroy(g_pDKill);
	ArrayDestroy(g_pHattrick);
	ArrayDestroy(g_pFlawless);
	ArrayDestroy(g_pRevenge);
	ArrayDestroy(g_pKStreakSounds);
	ArrayDestroy(g_pKStreakMessages);
	ArrayDestroy(g_pKStreakRequiredKills);
}

// pfnServerActivate_Post()
// CALLED AFTER "plugin_precache"
// THE RIGHT MOMENT TO REGISTER STUFF
//
public plugin_init()
{
	// REGISTERS PLUG-IN
	//
	register_plugin("ADV. QUAKE SOUNDS", QS_VERSION, "HATTRICK (HTTRCKCLDHKS)");

	// REGISTERS CONSOLE VARIABLE
	//
	new pCVar = register_cvar("advanced_quake_sounds", QS_VERSION, FCVAR_SERVER | FCVAR_EXTDLL | FCVAR_UNLOGGED | FCVAR_SPONLY);

	// SETS CONSOLE VARIABLE STRING
	//
	if (pCVar)
		set_pcvar_string(pCVar, QS_VERSION);

	// STOPS HERE IF THE PLUG-IN IS DISABLED
	//
	if (!g_bON)
		return;

	// REGISTERS FAKE META FORWARDS
	//
	register_forward(FM_MessageBegin, "OnMessageBegin", 1);
	register_forward(FM_WriteByte, "OnWriteByte", 1);
	register_forward(FM_MessageEnd, "OnMessageEnd", 1);

	// GETS MAXIMUM PLAYERS
	//
	g_maxPlayers = get_maxplayers();

	// GETS MOD NAME
	//
	get_modname(g_ModName, charsmax(g_ModName));

	// DEATHMSG IS THE ONLY AVAILABLE FOR ESF, NS AND VALVE
	// THESE MODS HAVE NO XSTATS MODULE
	//
	if (equali(g_ModName, "ESF", 3) || equali(g_ModName, "NS", 2) || equali(g_ModName, "VALVE"))
	{
		g_bDeathMsgOnly = true;
	}

	// COUNTER-STRIKE
	//
	if (equali(g_ModName, "CS", 2) || equali(g_ModName, "CZ", 2))
	{
		// ROUND RESTART
		//
		register_event("TextMsg", "OnRRestart", "a", "2&#Game_C", "2&#Game_w");

		// ROUND START
		//
		register_logevent("OnRStart", 2, "1=Round_Start");

		// ROUND END
		//
		register_logevent("OnREnd", 2, "1=Round_End");
	}

	// DAY OF DEFEAT
	//
	else if (equali(g_ModName, "DOD", 3))
	{
		// ROUND START
		//
		register_event("RoundState", "OnRStart", "a", "1=1");

		// ROUND END
		//
		register_event("RoundState", "OnREnd", "a", "1=3", "1=4");

		// DISABLES HATTRICK
		//
		g_bHattrick = false;

		// DISABLES FLAWLESS
		//
		g_bFlawless = false;
	}

	// NO CS/ CZ OR DOD
	//
	else
	{
		// DISABLES TEAM KILL
		//
		g_bTKill = false;

		// DISABLES HATTRICK
		//
		g_bHattrick = false;

		// DISABLES FLAWLESS
		//
		g_bFlawless = false;

		// DISABLES ROUND START
		//
		g_bRStart = false;
	}

	// HUD MESSAGE [TE_TEXTMESSAGE] CHANNEL HANDLES
	//
	g_pHudMsg[HUDMSG_STREAK] = CreateHudSyncObj();
	g_pHudMsg[HUDMSG_EVENT] = CreateHudSyncObj();
	g_pHudMsg[HUDMSG_ROUND] = CreateHudSyncObj();
}

// pfnServerActivate_Post()
// CALLED AFTER "plugin_init"
// THE RIGHT MOMENT FOR ACTUALIZING CONFIGURATIONS
//
public plugin_cfg()
{
	/**
	* MESSAGES ON/ OFF
	*/

	g_bHShotMsg = g_HShotMsg[0] ? true : false;
	g_bSuicideMsg = g_SuicideMsg[0] ? true : false;
	g_bGrenadeMsg = g_GrenadeMsg[0] ? true : false;
	g_bTKillMsg = g_TKillMsg[0] ? true : false;
	g_bKnifeMsg = g_KnifeMsg[0] ? true : false;
	g_bFBloodMsg = g_FBloodMsg[0] ? true : false;
	g_bRStartMsg = g_RStartMsg[0] ? true : false;
	g_bDKillMsg = g_DKillMsg[0] ? true : false;
	g_bHattrickMsg = g_HattrickMsg[0] ? true : false;
	g_bFlawlessMsg = g_FlawlessMsg[0] ? true : false;
	g_bRevengeMsgVictim = g_RevengeMsgVictim[0] ? true : false;
	g_bRevengeMsgKiller = g_RevengeMsgKiller[0] ? true : false;
}

// pfnClientUserInfoChanged()
// EXECUTES WHEN CLIENT CHANGES INFORMATION
//
public client_infochanged(Player)
{
	static NewName[32];

	// PLAYER IS CONNECTED AND IT'S NOT A HLTV
	//
	if (g_bConnected[Player] && !g_bHLTV[Player])
	{
		// RETRIEVES NEW NAME (IF ANY)
		//
		get_user_info(Player, "name", NewName, charsmax(NewName));

		// UPDATES IF NEEDED
		//
		if (!equali(NewName, g_Name[Player]))
			g_Name[Player] = NewName;
	}
}

// pfnClientDisconnect()
// EXECUTES WHEN CLIENT DISCONNECTS
//
public client_disconnect(Player)
{
	// NO MORE KILLS
	//
	g_Kills[Player] = 0;
	g_RKills[Player] = 0;

	// NO MORE TRUE DATA
	//
	g_bHLTV[Player] = false;
	g_bBOT[Player] = false;
	g_bDisabled[Player] = false;
	g_bConnected[Player] = false;

	// NO MORE VALID STRINGS
	//
	g_Name[Player][0] = EOS;
	g_RevengeStamp[Player][0] = EOS;
}

// pfnClientCommand()
// EXECUTES WHEN CLIENT TYPES
//
public client_command(Player)
{
	static Argument[16];

	// CONNECTED, NOT BOT AND NOT HLTV
	//
	if (g_bConnected[Player] && !g_bBOT[Player] && !g_bHLTV[Player])
	{
		// RETRIEVES THE ARGUMENT
		//
		read_argv(1, Argument, charsmax(Argument));

		// CHECKS ARGUMENT
		//
		if (equali(Argument, "/Sounds", 7) || equali(Argument, "Sounds", 6))
		{
			// ENABLES/ DISABLES SOUNDS PER CLIENT
			//
			client_print(Player, print_chat, ">> QUAKE SOUNDS HAVE BEEN %s.", g_bDisabled[Player] ? "ENABLED" : "DISABLED");
			g_bDisabled[Player] = !g_bDisabled[Player];
		}
	}
}

// pfnClientPutInServer()
// EXECUTES WHEN CLIENT JOINS
//
public client_putinserver(Player)
{
	// RETRIEVES PLAYER NAME
	//
	get_user_name(Player, g_Name[Player], charsmax(g_Name[]));

	// HLTV
	//
	g_bHLTV[Player] = bool:is_user_hltv(Player);

	// BOT
	//
	g_bBOT[Player ] = bool:is_user_bot(Player);

	// NO KILLS
	//
	g_Kills[Player] = 0;
	g_RKills[Player] = 0;

	// CONNECTED
	//
	g_bConnected[Player] = true;

	// SETTINGS ON
	//
	g_bDisabled[Player] = false;

	// NO REVENGE STAMP YET
	//
	g_RevengeStamp[Player][0] = EOS;

	// PRINTS INFORMATION FOR VALID PLAYERS ONLY
	//
	if (!g_bBOT[Player] && !g_bHLTV[Player])
		set_task(6.0, "QuakeSoundsPrint", Player);
}

// PRINTS INFORMATION TO PLAYER
//
public QuakeSoundsPrint(Player)
{
	// ONLY IF CONNECTED
	//
	if (g_bConnected[Player])
		client_print(Player, print_chat, ">> TYPE 'sounds' TO TURN QUAKE SOUNDS ON OR OFF.");
}

// EXECUTED ON PLAYER DEATH
// THIS IS ONLY REQUIRED FOR CS/ CZ, DOD, TS AND TFC
// THIS IS EXECUTED BEFORE DEATHMSG EVENT
//
public client_death(Killer, Victim, wpnID, Place, TK)
{
	// CACHES WEAPON ID
	//
	g_wpnID = wpnID;

	// CACHES HIT PLACE
	//
	g_Place = Place;

	// CACHES TEAM KILL BOOLEAN
	//
	g_TK = TK;
}

// WHEN ROUND RESTARTS
//
public OnRRestart()
{
	static Player;
	for (Player = 1; Player <= g_maxPlayers; Player++)
	{
		// CLEARS DATA
		//
		g_Kills[Player] = 0;
		g_RKills[Player] = 0;

		g_RevengeStamp[Player][0] = EOS;
	}
}

// WHEN ROUND STARTS
//
public OnRStart()
{
	static Player;

	// RESETS FIRST BLOOD
	//
	if (g_bFBlood)
		g_FBlood = 0;

	// PREPARES ROUND START EVENT
	//
	if (g_bRStart)
	{
		if (g_bRStartMsg)
		{
			if (g_bRandomRed) g_Red = random_num(0, QS_MAXBYTE);
			if (g_bRandomGreen) g_Green = random_num(0, QS_MAXBYTE);
			if (g_bRandomBlue) g_Blue = random_num(0, QS_MAXBYTE);

			set_hudmessage(g_Red, g_Green, g_Blue, QS_CENTERPOS, 0.2615, _, _, 5.0);
			qs_ShowSyncHudMsg(0, g_pHudMsg[HUDMSG_ROUND], g_RStartMsg);
		}

		qs_client_cmd(0, "SPK ^"%a^"", ArrayGetStringHandle(g_pRStart, random_num(0, g_RStartSize - 1)));
	}

	// RESETS HATTRICK DATA
	//
	if (g_bHattrick)
	{
		for (Player = 1; Player <= g_maxPlayers; Player++)
			g_RKills[Player] = 0;
	}
}

// WHEN ROUND ENDS
//
public OnREnd()
{
	// GETS HATTRICK READY
	//
	if (g_bHattrick) set_task(2.8, "__Hattrick");

	// GETS FLAWLESS READY
	//
	if (g_bFlawless) set_task(1.2, "__Flawless");
}

// PREPARES HATTRICK
//
public __Hattrick()
{
	// RETRIEVES LEADER ID
	//
	static Leader;
	Leader = __Leader();

	// IF ANY
	//
	if (Leader != QS_INVALIDPLR)
	{
		if (g_bRandomRed) g_Red = random_num(0, QS_MAXBYTE);
		if (g_bRandomGreen) g_Green = random_num(0, QS_MAXBYTE);
		if (g_bRandomBlue) g_Blue = random_num(0, QS_MAXBYTE);

		if (g_RKills[Leader] >= g_MinimumKillsForHattrick)
		{
			if (g_bHattrickMsg)
			{
				set_hudmessage(g_Red, g_Green, g_Blue, QS_CENTERPOS, 0.2015, _, _, 5.0);
				qs_ShowSyncHudMsg(0, g_pHudMsg[HUDMSG_EVENT], g_HattrickMsg, g_Name[Leader]);
			}

			qs_client_cmd(0, "SPK ^"%a^"", ArrayGetStringHandle(g_pHattrick, random_num(0, g_HattrickSize - 1)));
		}
	}
}

// PREPARES FLAWLESS
//
public __Flawless()
{
	if (g_bRandomRed) g_Red = random_num(0, QS_MAXBYTE);
	if (g_bRandomGreen) g_Green = random_num(0, QS_MAXBYTE);
	if (g_bRandomBlue) g_Blue = random_num(0, QS_MAXBYTE);

	new aliveTeam_1 = __Players(true, 1);
	new aliveTeam_2 = __Players(true, 2);

	new allTeam_1 = aliveTeam_1 + __Players(false, 1);
	new allTeam_2 = aliveTeam_2 + __Players(false, 2);

	set_hudmessage(g_Red, g_Green, g_Blue, QS_CENTERPOS, 0.2815, _, _, 5.0);

	if (allTeam_1 == aliveTeam_1)
	{
		if (g_bFlawlessMsg)
			qs_ShowSyncHudMsg(0, g_pHudMsg[HUDMSG_ROUND], g_FlawlessMsg, g_FlawlessTeamName_1);

		qs_client_cmd(0, "SPK ^"%a^"", ArrayGetStringHandle(g_pFlawless, random_num(0, g_FlawlessSize - 1)));
	}

	else if (allTeam_2 == aliveTeam_2)
	{
		if (g_bFlawlessMsg)
			qs_ShowSyncHudMsg(0, g_pHudMsg[HUDMSG_ROUND], g_FlawlessMsg, g_FlawlessTeamName_2);

		qs_client_cmd(0, "SPK ^"%a^"", ArrayGetStringHandle(g_pFlawless, random_num(0, g_FlawlessSize - 1)));
	}
}

// pfnMessageBegin()
// FIRED WHEN A MESSAGE BEGINS
//
public OnMessageBegin(Destination, Type)
{
	static deathMsg = 0;

	// GETS DEATHMSG ID
	//
	if (deathMsg == 0)
		deathMsg = get_user_msgid("DeathMsg");

	// IF GLOBALLY SENT
	//
	if (deathMsg > 0 && Type == deathMsg && (Destination == MSG_ALL || Destination == MSG_BROADCAST))
	{
		g_bOnDeathMsg = true;
		g_DeathMsgByteStatus = 0;
	}
}

// pfnWriteByte()
// FIRED WHEN A BYTE IS BEING WRITTEN
//
public OnWriteByte(Byte)
{
	// OUR DEATHMSG
	//
	if (g_bOnDeathMsg)
	{
		// GETS DATA
		//
		switch (++g_DeathMsgByteStatus)
		{
			case 1: g_Killer = Byte;
			case 2: g_Victim = Byte;
		}
	}
}

// pfnMessageEnd()
// FIRED WHEN A MESSAGE ENDS
//
public OnMessageEnd()
{
	// OUR DEATHMSG
	//
	if (g_bOnDeathMsg)
	{
		g_bOnDeathMsg = false;
		g_DeathMsgByteStatus = 0;

		// FIRES
		//
		set_task(0.0, "__DeathMsg");
	}
}

// WHEN A PLAYER DIES
// THIS IS EXECUTED AFTER XSTATS MODULE "client_death" FORWARD
//
public __DeathMsg()
{
	// HIT PLACE
	//
	new Place = 0;

	// PREPARES WEAPON ID AND PLACE
	//
	if (g_wpnID < 1)
	{
		new wpnID = 0;
		get_user_attacker(g_Victim, wpnID, Place);

		// POSSIBLE FIX
		//
		if (wpnID < 1 && g_bConnected[g_Killer])
			wpnID = get_user_weapon(g_Killer);

		g_wpnID = wpnID;
	}

	// POSSIBLE HIT PLACE FIX
	//
	if (g_Place < 1 && Place > 0)
		g_Place = Place;

	// PREPARES TEAM KILL BOOLEAN
	//
	if (g_bDeathMsgOnly && g_bConnected[g_Killer])
		g_TK = get_user_team(g_Killer) == get_user_team(g_Victim) ? 1 : 0;

	// PROCESSES DEATH
	//
	__Death(g_Killer, g_Victim, g_wpnID, g_Place, g_TK);
}


/*************************************************************************************
******* FUNCTIONS ********************************************************************
*************************************************************************************/

// PROCESSES CLIENT DEATH FOR ALL MODS
//
__Death(Killer, Victim, wpnID, Place, TK)
{
	// VARIABLES
	//
	static Iterator, Float:gameTime, Weapon[32], Sound[128], Message[256];

	// RESETS KILLS FOR VICTIM
	//
	if (g_bKStreak)
		g_Kills[Victim] = 0;

	// INVALID KILLER (WORLD)
	//
	if (!g_bConnected[Killer])
		return;

	// PREPARES HUD MESSAGE COLOR
	//
	if (g_bRandomRed) g_Red = random_num(0, QS_MAXBYTE);
	if (g_bRandomGreen) g_Green = random_num(0, QS_MAXBYTE);
	if (g_bRandomBlue) g_Blue = random_num(0, QS_MAXBYTE);

	// PREPARES HUD MESSAGE
	//
	set_hudmessage(random_num(0,255), random_num(0,255), random_num(0,255), 0.05, 0.65, 2, 0.02, 6.0, 0.01, 0.1, 2);

	// REVENGE KILLER STAMP
	//
	if (g_bRevenge)
		g_RevengeStamp[Victim] = g_Name[Killer];

	// SUICIDE
	//
	if (Victim == Killer)
	{
		if (g_bSuicide)
		{
			if (g_bSuicideMsg)
				qs_ShowSyncHudMsg(0, g_pHudMsg[HUDMSG_EVENT], g_SuicideMsg, g_Name[Victim]);

			qs_client_cmd(0, "SPK ^"%a^"", ArrayGetStringHandle(g_pSuicide, random_num(0, g_SuicideSize - 1)));
		}

		if (g_bHattrick)
			g_RKills[Victim]--;
	}

	// NORMAL DEATH
	//
	else
	{
		if (g_bKStreak)
			g_Kills[Killer]++;

		if (g_bHattrick)
			g_RKills[Killer]++;

		// WEAPON NAME
		//
		if (wpnID > 0)
			get_weaponname(wpnID, Weapon, charsmax(Weapon));

		// NO WEAPON
		//
		else
			Weapon[0] = EOS;

		if (g_bRevenge && equali(g_Name[Victim], g_RevengeStamp[Killer]))
		{
			g_RevengeStamp[Killer][0] = EOS;

			if (g_bRevengeMsgKiller)
				qs_ShowSyncHudMsg(Killer, g_pHudMsg[HUDMSG_EVENT], g_RevengeMsgKiller, g_Name[Victim]);

			if (g_bRevengeMsgVictim && !g_bRevengeOnlyKiller)
				qs_ShowSyncHudMsg(Victim, g_pHudMsg[HUDMSG_EVENT], g_RevengeMsgVictim, g_Name[Killer]);

			qs_client_cmd(Killer, "SPK ^"%a^"", ArrayGetStringHandle(g_pRevenge, random_num(0, g_RevengeSize - 1)));

			if (!g_bRevengeOnlyKiller)
				qs_client_cmd(Victim, "SPK ^"%a^"", ArrayGetStringHandle(g_pRevenge, random_num(0, g_RevengeSize - 1)));
		}

		if (g_bHShot && Place == HIT_HEAD)
		{
			if (g_bHShotMsg)
				qs_ShowSyncHudMsg(0, g_pHudMsg[HUDMSG_EVENT], g_HShotMsg, g_Name[Killer], g_Name[Victim]);

			qs_client_cmd(g_bHShotOnlyKiller ? Killer : 0, "SPK ^"%a^"", ArrayGetStringHandle(g_pHShot, random_num(0, g_HShotSize - 1)));
		}

		if (g_bFBlood && ++g_FBlood == 1)
		{
			if (g_bFBloodMsg)
				qs_ShowSyncHudMsg(0, g_pHudMsg[HUDMSG_EVENT], g_FBloodMsg, g_Name[Killer]);

			qs_client_cmd(0, "SPK ^"%a^"", ArrayGetStringHandle(g_pFBlood, random_num(0, g_FBloodSize - 1)));
		}

		if (g_bTKill && TK > 0)
		{
			if (g_bTKillMsg)
				qs_ShowSyncHudMsg(0, g_pHudMsg[HUDMSG_EVENT], g_TKillMsg, g_Name[Killer]);

			qs_client_cmd(0, "SPK ^"%a^"", ArrayGetStringHandle(g_pTKill, random_num(0, g_TKillSize - 1)));
		}

		if (g_bGrenade && (containi(Weapon, "RECK") != -1 || containi(Weapon, "ROCK") != -1 || containi(Weapon, "MK") != -1 || \
			containi(Weapon, "GRANATE") != -1 || containi(Weapon, "BOMB") != -1 || containi(Weapon, "GREN") != -1 || \
			containi(Weapon, "PIAT") != -1 || containi(Weapon, "BAZOOKA") != -1 || containi(Weapon, "PANZER") != -1))
		{
			if (g_bGrenadeMsg)
				qs_ShowSyncHudMsg(0, g_pHudMsg[HUDMSG_EVENT], g_GrenadeMsg, g_Name[Killer], g_Name[Victim]);

			qs_client_cmd(0, "SPK ^"%a^"", ArrayGetStringHandle(g_pGrenade, random_num(0, g_GrenadeSize - 1)));
		}

		if (g_bKnife && (containi(Weapon, "KNIFE") != -1 || containi(Weapon, "SPADE") != -1 || containi(Weapon, "SATCHEL") != -1))
		{
			if (g_bKnifeMsg)
				qs_ShowSyncHudMsg(0, g_pHudMsg[HUDMSG_EVENT], g_KnifeMsg, g_Name[Killer], g_Name[Victim]);

			qs_client_cmd(0, "SPK ^"%a^"", ArrayGetStringHandle(g_pKnife, random_num(0, g_KnifeSize - 1)));
		}

		if (g_bDKill)
		{
			// GAME TIME
			//
			gameTime = get_gametime();

			if (g_fLastKillTimeStamp[Killer] > gameTime)
			{
				if (g_bDKillMsg)
					qs_ShowSyncHudMsg(0, g_pHudMsg[HUDMSG_EVENT], g_DKillMsg, g_Name[Killer], g_Name[Victim]);

				qs_client_cmd(0, "SPK ^"%a^"", ArrayGetStringHandle(g_pDKill, random_num(0, g_DKillSize - 1)));
			}

			g_fLastKillTimeStamp[Killer] = gameTime + 0.1;
		}

		if (g_bKStreak)
		{
			for (Iterator = 0; Iterator < g_KStreakSoundsSize; Iterator++)
			{
				if (g_Kills[Killer] == ArrayGetCell(g_pKStreakRequiredKills, Iterator))
				{
					ArrayGetString(g_pKStreakMessages, Iterator, Message, charsmax(Message));
					ArrayGetString(g_pKStreakSounds, Iterator, Sound, charsmax(Sound));

					__Display(Killer, Message, Sound);

					break;
				}
			}
		}
	}
}

// LOADS FILE
//
__Load()
{
	// PREPARES CONFIGURATIONS FILE DIRECTORY
	//
	new File[256];
	get_configsdir(File, charsmax(File));

	// APPENDS CONFIGURATIONS FILE NAME
	//
	add(File, charsmax(File), "/quakesounds.ini");

	// OPENS FILE
	//
	new pFile = fopen(File, "r");
	if (!pFile)
		return;

	// PREPARES FILE LINE
	//
	new Line[512], Key[64], Value[256], Type[32], Sound[128], RequiredKills[8], Dummy[4], Message[256];

	// READS FILE
	//
	while (!feof(pFile))
	{
		// GETS LINE
		//
		fgets(pFile, Line, charsmax(Line));

		// TRIMS LINE OFF
		//
		trim(Line);

		// CHECK FOR VALIDITY
		//
		if (Line[0] == EOS || Line[0] == ';' || Line[0] == '#' || (Line[0] == '/' && Line[1] == '/'))
			continue;

		// SPLITS STRING IN TOKENS
		//
		strtok(Line, Key, charsmax(Key), Value, charsmax(Value), '=');

		// TRIMS KEY
		trim(Key);

		// TRIMS VALUE
		trim(Value);

		//
		// SETTINGS
		//

		if (equali(Key, "ENABLE/DISABLE PLUGIN")) g_bON = bool:str_to_num(Value);
		else if (equali(Key, "HEADSHOT ONLY KILLER")) g_bHShotOnlyKiller = bool:str_to_num(Value);
		else if (equali(Key, "MIN FRAGS FOR HATTRICK")) g_MinimumKillsForHattrick = str_to_num(Value);
		else if (equali(Key, "REVENGE ONLY FOR KILLER")) g_bRevengeOnlyKiller = bool:str_to_num(Value);

		//
		// HUD MESSAGES
		//

		else if (equali(Key, "HUDMSG RED"))
		{
			if (equal(Value, "_")) g_bRandomRed = true;
			else g_Red = str_to_num(Value);
		}

		else if (equali(Key, "HUDMSG GREEN"))
		{
			if (equal(Value, "_")) g_bRandomGreen = true;
			else g_Green = str_to_num(Value);
		}

		else if (equali(Key, "HUDMSG BLUE"))
		{
			if (equal(Value, "_")) g_bRandomBlue = true;
			else g_Blue = str_to_num(Value);
		}

		// KILLS STREAK SOUNDS
		//
		else if (equali(Key, "SOUND"))
		{
			parse(Value, Dummy, charsmax(Dummy), Type, charsmax(Type));

			if (equali(Type, "REQUIREDKILLS"))
			{
				parse(Value, Dummy, charsmax(Dummy), Type, charsmax(Type), RequiredKills, charsmax(RequiredKills), \
					Dummy, charsmax(Dummy), Sound, charsmax(Sound));

				ArrayPushString(g_pKStreakSounds, Sound);
				ArrayPushCell(g_pKStreakRequiredKills, str_to_num(RequiredKills));
			}

			else if (equali(Type, "MESSAGE"))
			{
				strtok(Value, Type, charsmax(Type), Message, charsmax(Message), '@');
				trim(Message);

				ArrayPushString(g_pKStreakMessages, Message);
			}
		}

		//
		// EVENTS ON/ OFF
		//

		else if (equali(Key, "KILLSTREAK EVENT")) g_bKStreak = bool:str_to_num(Value);
		else if (equali(Key, "REVENGE EVENT")) g_bRevenge = bool:str_to_num(Value);
		else if (equali(Key, "HEADSHOT EVENT")) g_bHShot = bool:str_to_num(Value);
		else if (equali(Key, "SUICIDE EVENT")) g_bSuicide = bool:str_to_num(Value);
		else if (equali(Key, "NADE EVENT")) g_bGrenade = bool:str_to_num(Value);
		else if (equali(Key, "TEAMKILL EVENT")) g_bTKill = bool:str_to_num(Value);
		else if (equali(Key, "KNIFE EVENT")) g_bKnife = bool:str_to_num(Value);
		else if (equali(Key, "FIRSTBLOOD EVENT")) g_bFBlood = bool:str_to_num(Value);
		else if (equali(Key, "ROUNDSTART EVENT")) g_bRStart = bool:str_to_num(Value);
		else if (equali(Key, "DOUBLEKILL EVENT")) g_bDKill = bool:str_to_num(Value);
		else if (equali(Key, "HATTRICK EVENT")) g_bHattrick = bool:str_to_num(Value);
		else if (equali(Key, "FLAWLESS VICTORY")) g_bFlawless = bool:str_to_num(Value);

		//
		// EVENT SOUNDS
		//

		else if (equali(Key, "HEADSHOT SOUNDS"))
		{
			while (Value[0] != EOS && strtok(Value, Key, charsmax(Key), Value, charsmax(Value), ','))
			{
				trim(Key), trim(Value);
				ArrayPushString(g_pHShot, Key);
			}
		}

		else if (equali(Key, "REVENGE SOUNDS"))
		{
			while (Value[0] != EOS && strtok(Value, Key, charsmax(Key), Value, charsmax(Value), ','))
			{
				trim(Key), trim(Value);
				ArrayPushString(g_pRevenge, Key);
			}
		}

		else if (equali(Key, "SUICIDE SOUNDS"))
		{
			while (Value[0] != EOS && strtok(Value, Key, charsmax(Key), Value, charsmax(Value), ','))
			{
				trim(Key), trim(Value);
				ArrayPushString(g_pSuicide, Key);
			}
		}

		else if (equali(Key, "NADE SOUNDS"))
		{
			while (Value[0] != EOS && strtok(Value, Key, charsmax(Key), Value, charsmax(Value), ','))
			{
				trim(Key), trim(Value);
				ArrayPushString(g_pGrenade, Key);
			}
		}

		else if (equali(Key, "TEAMKILL SOUNDS"))
		{
			while (Value[0] != EOS && strtok(Value, Key, charsmax(Key), Value, charsmax(Value), ','))
			{
				trim(Key), trim(Value);
				ArrayPushString(g_pTKill, Key);
			}
		}

		else if (equali(Key, "KNIFE SOUNDS"))
		{
			while (Value[0] != EOS && strtok(Value, Key, charsmax(Key), Value, charsmax(Value), ','))
			{
				trim(Key), trim(Value);
				ArrayPushString(g_pKnife, Key);
			}
		}

		else if (equali(Key, "FIRSTBLOOD SOUNDS"))
		{
			while (Value[0] != EOS && strtok(Value, Key, charsmax(Key), Value, charsmax(Value), ','))
			{
				trim(Key), trim(Value);
				ArrayPushString(g_pFBlood, Key);
			}
		}

		else if (equali(Key, "ROUNDSTART SOUNDS"))
		{
			while (Value[0] != EOS && strtok(Value, Key, charsmax(Key), Value, charsmax(Value), ','))
			{
				trim(Key), trim(Value);
				ArrayPushString(g_pRStart, Key);
			}
		}

		else if (equali(Key, "DOUBLEKILL SOUNDS"))
		{
			while (Value[0] != EOS && strtok(Value, Key, charsmax(Key), Value, charsmax(Value), ','))
			{
				trim(Key), trim(Value);
				ArrayPushString(g_pDKill, Key);
			}
		}

		else if (equali(Key, "HATTRICK SOUNDS"))
		{
			while (Value[0] != EOS && strtok(Value, Key, charsmax(Key), Value, charsmax(Value), ','))
			{
				trim(Key), trim(Value);
				ArrayPushString(g_pHattrick, Key);
			}
		}

		else if (equali(Key, "FLAWLESS SOUNDS"))
		{
			while (Value[0] != EOS && strtok(Value, Key, charsmax(Key), Value, charsmax(Value), ','))
			{
				trim(Key), trim(Value);
				ArrayPushString(g_pFlawless, Key);
			}
		}

		//
		// MESSAGE STRINGS
		//

		else if (equali(Key, "HEADSHOT HUDMSG")) g_HShotMsg = Value;
		else if (equali(Key, "SUICIDE HUDMSG")) g_SuicideMsg = Value;
		else if (equali(Key, "NADE HUDMSG")) g_GrenadeMsg = Value;
		else if (equali(Key, "TEAMKILL HUDMSG")) g_TKillMsg = Value;
		else if (equali(Key, "KNIFE HUDMSG")) g_KnifeMsg = Value;
		else if (equali(Key, "FIRSTBLOOD HUDMSG")) g_FBloodMsg = Value;
		else if (equali(Key, "ROUNDSTART HUDMSG")) g_RStartMsg = Value;
		else if (equali(Key, "DOUBLEKILL HUDMSG")) g_DKillMsg = Value;
		else if (equali(Key, "HATTRICK HUDMSG")) g_HattrickMsg = Value;
		else if (equali(Key, "FLAWLESS VICTORY HUDMSG")) g_FlawlessMsg = Value;
		else if (equali(Key, "REVENGE KILLER MESSAGE")) g_RevengeMsgKiller = Value;
		else if (equali(Key, "REVENGE VICTIM MESSAGE")) g_RevengeMsgVictim = Value;
		else if (equali(Key, "TERRO TEAM NAME")) g_FlawlessTeamName_1 = Value;
		else if (equali(Key, "CT TEAM NAME")) g_FlawlessTeamName_2 = Value;
	}

	// CLOSES
	//
	fclose(pFile);
}

// DISPLAYS KILLS STREAK GLOBALLY
//
__Display(Killer, Message[], Sound[])
{
	if (g_bRandomRed) g_Red = random_num(0, QS_MAXBYTE);
	if (g_bRandomGreen) g_Green = random_num(0, QS_MAXBYTE);
	if (g_bRandomBlue) g_Blue = random_num(0, QS_MAXBYTE);

	set_hudmessage(g_Red, g_Green, g_Blue, QS_CENTERPOS, 0.2215, _, _, 5.0);
	qs_ShowSyncHudMsg(0, g_pHudMsg[HUDMSG_STREAK], Message, g_Name[Killer]);

	qs_client_cmd(0, "SPK ^"%s^"", Sound);
}

// RETRIEVES PLAYERS COUNT
// bAlive [TRUE/ FALSE]
// Team [QS_INVALIDTEAM/ 1/ 2/ 3]
//
__Players(bool:bAlive, Team = QS_INVALIDTEAM)
{
	// PLAYERS COUNT
	//
	new Total = 0;

	// ITERATES BETWEEN PLAYERS
	//
	for (new Player = 1; Player <= g_maxPlayers; Player++)
	{
		// CONNECTED, NOT HLTV, IN SPECIFIED TEAM AND ALIVE/ DEAD
		//
		if (g_bConnected[Player] && !g_bHLTV[Player] && (Team != QS_INVALIDTEAM && \
			get_user_team(Player) == Team) && bAlive == bool:is_user_alive(Player))
		{
			// TOTAL = TOTAL + 1
			//
			Total++;
		}
	}

	// GETS TOTAL
	//
	return Total;
}

// RETRIEVES THE LEADER OF THIS ROUND
// RETURNS "QS_INVALIDPLR" IF THERE IS NO LEADER
//
__Leader()
{
	// GETS LEADER ID READY
	//
	new Leader = QS_INVALIDPLR;

	// MOST KILLS
	//
	new Kills = 0;

	// ITERATES BETWEEN CLIENTS
	//
	for (new Client = 1; Client <= g_maxPlayers; Client++)
	{
		// CONNECTED AND NOT HLTV
		//
		if (g_bConnected[Client] && !g_bHLTV[Client])
		{
			// HAS MANY KILLS THAN THE ONE PREVIOUSLY CHECKED
			//
			if (g_RKills[Client] > Kills)
			{
				// THIS IS THE NEW LEADER
				//
				Kills = g_RKills[Client];
				Leader = Client;
			}
		}
	}

	// GETS LEADER ID
	//
	return Leader;
}

// PROCESSES HUD MESSAGE
//
qs_ShowSyncHudMsg(Target, pObject, Rules[], any:...)
{
	// ARGUMENT FORMAT
	//
	static Buffer[256], Player;
	vformat(Buffer, charsmax(Buffer), Rules, 4);

	// SPECIFIED CLIENT
	//
	if (Target > 0 && g_bConnected[Target] && !g_bBOT[Target] && !g_bHLTV[Target] && !g_bDisabled[Target])
		ShowSyncHudMsg(Target, pObject, Buffer);

	// NO TARGET
	//
	else if (Target < 1)
	{
		for (Player = 1; Player <= g_maxPlayers; Player++)
		{
			if (g_bConnected[Player] && !g_bBOT[Player] && !g_bHLTV[Player] && !g_bDisabled[Player])
				ShowSyncHudMsg(Player, pObject, Buffer);
		}
	}
}

// PROCESSES CLIENT COMMAND
//
qs_client_cmd(Target, Rules[], any:...)
{
	// ARGUMENT FORMAT
	//
	static Buffer[256], Player;
	vformat(Buffer, charsmax(Buffer), Rules, 3);

	// SPECIFIED CLIENT
	//
	if (Target > 0 && g_bConnected[Target] && !g_bBOT[Target] && !g_bHLTV[Target] && !g_bDisabled[Target])
		client_cmd(Target, Buffer);

	// NO TARGET
	//
	else if (Target < 1)
	{
		for (Player = 1; Player <= g_maxPlayers; Player++)
		{
			if (g_bConnected[Player] && !g_bBOT[Player] && !g_bHLTV[Player] && !g_bDisabled[Player])
				client_cmd(Player, Buffer);
		}
	}
}
http://www10.zippyshare.com/v/F53llbOs/file.html
Image
Locked

Return to “Modificari pluginuri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 4 guests