Премахване на съобщенията от Announcer Killstreak

В този раздел можете да подавате всякакви заявки за намиране, изработка или преработка на плъгини/модове.
Аватар
thoughtz
Извън линия
Модератор
Модератор
Мнения: 585
Регистриран на: 13 Окт 2016, 00:32
Местоположение: гр. София
Се отблагодари: 112 пъти
Получена благодарност: 79 пъти
Обратна връзка:

Премахване на съобщенията от Announcer Killstreak

Мнение от thoughtz » 20 Сеп 2018, 02:30

Ще може ли да се преработи плъгина, като се премахнат съобщенията изцяло, да останат само звуците, също така да се премахне командата /ak, и съобщенията (чат) към нея. Благодаря!

Код за потвърждение: Избери целия код

#pragma semicolon 1

// В plugins.ini плагин желательно располагать НИЖЕ плагина, выполняющего функции чат-антифлуда (antiflood.amxx)

///////////////////////////////////////////// Настройки ///////////////////////////////////////////////

// Имя пака с голосом диктора
// Default - мужской голос (стандартный набор)
// Khepri - мужской голос с автотюном
// Nox - женский голос
new const SOUND_PACK_FOLDER[] = "Default";

// Состояние анонсера по умолчанию
// 1 - Игроки получают все анонсы
// 2 - Игроки получают только собственные анонсы
// 3 - Выключен у всех
#define DEFAULT_STATE 1

// Установите 1, если хотите отображать диктора в HLTV
#define HLTV_SUPPORT 0

// Интервал для серии убийств (в секундах)
const Float: MULTIKILL_TIME = 3.0;

// Режим HUD'а
#define COLOR_MODE 1 // 1 - Одноцветный; 2 - Многоцветный; 3 - Случайный

// Цвет HUD при COLOR_MODE 1
stock const HUD_R = 250;
stock const HUD_G = 250;
stock const HUD_B = 250;

// Цвета HUD при COLOR_MODE 2
stock const g_iColor[][] = {

	{ 255, 0, 0 },		// DOUBLE_KILL
	{ 255, 0, 0 },		// TRIPLE_KILL
	{ 255, 0, 0 }, 		// QUADRA_KILL
	{ 255, 0, 0 }, 		// PENTA_KILL

	{ 255, 0, 0 }, 		// KILLING_SPREE
	{ 255, 0, 0 }, 		// RAMPAGE
	{ 255, 0, 0 }, 		// UNSTOPPABLE
	{ 255, 0, 0 }, 		// DIVINE
	{ 255, 0, 0 }, 		// IMMORTAL
	{ 255, 0, 0 }, 		// GODLIKE

	{ 255, 0, 0 }, 		// FIRST_BLOOD
	{ 255, 0, 0 }, 		// SHUTDOWN
	{ 255, 0, 0 } 		// DEICIDE
};

// Грани рандомизации цвета HUD при COLOR_MODE 3
stock const MIN_VALUE = 50;
stock const MAX_VALUE = 255;

// Позиция HUD
const Float: HUD_X = -1.0;
const Float: HUD_Y = 0.2;

// Длительность отображения HUD
const Float: HUD_TIME = 5.0;

// Метод сохранения состояния анонсера
#define SAVE_TYPE 0 // 0 - nVault; 1 - Trie

// Через сколько дней удалять настройку из nVault, если игрок не заходил
stock const VAULT_PRUNE_DAYS = 7;

// Файл для сохранения настроек (SAVE_TYPE 0)
stock const VAULT_FILE[] = "announcer_data";

///////////////////////////////////////////////////////////////////////////////////////////////////////

#define SAVE_TYPE_VAULT 0
#define SAVE_TYPE_TRIE 1

#include <amxmodx>
#include <reapi>
#include <time>
#if SAVE_TYPE == SAVE_TYPE_VAULT
	#include <nvault>
#endif

enum { R, G, B };

enum {
	AS__ALL = 1,
	AS__PERSONAL,
	AS__DISABLED
};

enum _:SOME_ENUM {

	DOUBLE_KILL,
	TRIPLE_KILL,
	QUADRA_KILL,
	PENTA_KILL,

	KILLING_SPREE,
	RAMPAGE,
	UNSTOPPABLE,
	DIVINE,
	IMMORTAL,
	GODLIKE,

	FIRST_BLOOD,
	SHUTDOWN,
	DEICIDE
};

new const g_szLangMsg[SOME_ENUM][] = {

	// Multikills
	"AK_DOUBLE_KILL", 	 // -2
	"AK_TRIPLE_KILL", 	 // -3
	"AK_QUADRA_KILL", 	 // -4
	"AK_PENTA_KILL", 	 // -5

	// Killstreaks
	"AK_KILLING_SPREE",  // -3
	"AK_RAMPAGE", 		 // -5
	"AK_UNSTOPPABLE", 	 // -7
	"AK_DIVINE", 		 // -9
	"AK_IMMORTAL", 	 	 // -11
	"AK_GODLIKE",		 // -13

	// Other
	"AK_FIRST_BLOOD",
	"AK_SHUTDOWN",
	"AK_DEICIDE"
};

new g_szSoundName[SOME_ENUM][] = {

	"doublekill",
	"triplekill",
	"quadrakill",
	"pentakill",

	"killingspree",
	"rampage",
	"unstoppable",
	"divine",
	"immortal",
	"godlike",

	"firstblood",
	"shutdown",
	"deicide"
};

const FILE_PATH_LEN = 96;
const AUTHID_LEN = 25;

new g_iKillStreak[MAX_PLAYERS +1], g_iMultiKill[MAX_PLAYERS +1], g_szBuffer[MAX_NAME_LENGTH], g_iMsgHudSync,
	g_iPlayers[MAX_PLAYERS], g_iPlayerCount, bool: g_bFirstBlood, g_iKiller, g_szSound[SOME_ENUM][FILE_PATH_LEN];

new  g_iAnnouncer[MAX_PLAYERS +1] = { DEFAULT_STATE, ... }, g_szAuthID[AUTHID_LEN];

stock g_hVault = INVALID_HANDLE, Trie:g_tTrie, g_iMsgId, g_hMsg, g_iFFA;

public plugin_init(){

	register_plugin("Announcer Killstreak", "2.0", "Jumper & mx?!");

	register_dictionary("Announcer_Killstreak.txt");

	new pCvar = get_cvar_pointer("mp_freeforall");

	g_iFFA = get_pcvar_num(pCvar);

	hook_cvar_change(pCvar, "hook_Cvar");

	register_clcmd("say /ak", "Command_Announce");
	register_clcmd("say_team /ak", "Command_Announce");

	RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Pre", 0);
	RegisterHookChain(RG_CSGameRules_OnRoundFreezeEnd, "CSGameRules_OnRoundFreezeEnd_Pre", 0);

	g_iMsgHudSync = CreateHudSyncObj();

	g_iMsgId = get_user_msgid("SendAudio");

#if SAVE_TYPE == SAVE_TYPE_TRIE
	g_tTrie = TrieCreate();
#endif
}

public hook_Cvar(pCvar, szOldVal[], szNewVal[]){

	g_iFFA = str_to_num(szNewVal);
}

public plugin_end()
{
#if SAVE_TYPE == SAVE_TYPE_VAULT
	if(g_hVault != INVALID_HANDLE){
	
		nvault_close(g_hVault);
	}
#else
	TrieDestroy(g_tTrie)
#endif
}

#if SAVE_TYPE == SAVE_TYPE_VAULT
public plugin_cfg(){
	
	if((g_hVault = nvault_open(VAULT_FILE)) == INVALID_HANDLE){
		
		set_fail_state("ERROR: Opening nVault failed!");
	}
	nvault_prune(g_hVault, 0, get_systime() - (SECONDS_IN_DAY * VAULT_PRUNE_DAYS));
}
#endif

public plugin_precache(){

	for(new i; i < SOME_ENUM; i++){

		formatex( g_szSound[i], charsmax(g_szSound[]), "Announcer_Killstreak/%s/%s.wav",
			SOUND_PACK_FOLDER, g_szSoundName[i]	);

		precache_sound(g_szSound[i]);
	}
}

public client_authorized(iPlayer, const szAuthID[]){

#if HLTV_SUPPORT == 1
	if(is_user_hltv(iPlayer)){
	
		g_iAnnouncer[iPlayer] = AS__ALL;
		return;
	}
#endif

#if SAVE_TYPE == SAVE_TYPE_VAULT
	if(!(g_iAnnouncer[iPlayer] = nvault_get(g_hVault, szAuthID))){
#else
	if(!TrieGetCell(g_tTrie, szAuthID, g_iAnnouncer[iPlayer])){
#endif
		g_iAnnouncer[iPlayer] = DEFAULT_STATE;
	}
}

public client_disconnected(iPlayer){

	g_iKillStreak[iPlayer] = g_iMultiKill[iPlayer] = 0;
}

public Command_Announce(iPlayer){

	if(++g_iAnnouncer[iPlayer] > AS__DISABLED){
	
		g_iAnnouncer[iPlayer] = AS__ALL;
	}

	get_user_authid(iPlayer, g_szAuthID, charsmax(g_szAuthID));
#if SAVE_TYPE == SAVE_TYPE_VAULT
	formatex(g_szBuffer, charsmax(g_szBuffer), "%d", g_iAnnouncer[iPlayer]);
	nvault_set(g_hVault, g_szAuthID, g_szBuffer);
#else
	TrieSetCell(g_tTrie, g_szAuthID, g_iAnnouncer[iPlayer]);
#endif

	formatex(g_szBuffer, charsmax(g_szBuffer), "AK_STATUS_%d", g_iAnnouncer[iPlayer]);

	client_print_color( iPlayer, print_team_red, "^1[^4AK^1] %L %L", iPlayer, "AK_COMMAND",
		iPlayer, g_szBuffer );

	return PLUGIN_HANDLED_MAIN;
}

public msg_SendAudio()
{
	get_msg_arg_string(2, g_szBuffer, charsmax(g_szBuffer));

	if(contain(g_szBuffer[7], "terwin") != -1 || contain(g_szBuffer[7], "ctwin") != -1){ // %!MRAD_
	
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}

public CSGameRules_OnRoundFreezeEnd_Pre(){

	if(g_hMsg){
	
		unregister_message(g_iMsgId, g_hMsg);
		g_hMsg = 0;
	}
	arrayset(g_iKillStreak, 0, sizeof(g_iKillStreak));
	arrayset(g_iMultiKill, 0, sizeof(g_iMultiKill));
	g_bFirstBlood = false;
}

public CBasePlayer_Killed_Pre(iVictim, iKiller){

	if(iVictim == iKiller || !is_user_connected(iKiller) || 
	(!g_iFFA && rg_get_user_team(iVictim) == rg_get_user_team(iKiller))){
	
		g_iKillStreak[iVictim] = g_iMultiKill[iVictim] = 0;
		return;
	}

	g_iMultiKill[iVictim] = 0;

	g_iKiller = iKiller;
	g_iKillStreak[iKiller]++;
	g_iMultiKill[iKiller]++;

	static Float:fCurrKillTime[MAX_PLAYERS +1];

	new Float:fLastKillTime = fCurrKillTime[iKiller];
	fCurrKillTime[iKiller] = get_gametime();

	/* --- */

	if(g_iKillStreak[iVictim] > 4){

		g_iKiller = iVictim;
		g_iKillStreak[iVictim] = 0;
		Announcer(SHUTDOWN);
		return;
	}

	g_iKillStreak[iVictim] = 0;

	if(!g_bFirstBlood){

		g_bFirstBlood = true;
		Announcer(FIRST_BLOOD);
		return;
	}

	new TeamName: iVictimTeam = rg_get_user_team(iVictim);

	if(TEAM_SPECTATOR > iVictimTeam > TEAM_UNASSIGNED){

		get_players(g_iPlayers, g_iPlayerCount, "ae", iVictimTeam == TEAM_TERRORIST ? "TERRORIST" : "CT");

		if(!g_iPlayerCount){

			if(!g_hMsg){
			
				g_hMsg = register_message(g_iMsgId, "msg_SendAudio");
			}
			Announcer(DEICIDE);
			return;
		}
	}

	/* --- */

	if(g_iKillStreak[iKiller] == 1){
	
		return;
	}

	if(fCurrKillTime[iKiller] - fLastKillTime < MULTIKILL_TIME && g_iMultiKill[iKiller] < 6){

		Announcer(g_iMultiKill[iKiller] - 2);
		return;
	}

	g_iMultiKill[iKiller] = 1;

	if(g_iKillStreak[iKiller] % 2 == 0){
	
		return;
	}

	if(g_iKillStreak[iKiller] > 11){
	
		Announcer(GODLIKE);
		return;
	}

	switch(g_iKillStreak[iKiller]){
	
		case 3: Announcer(KILLING_SPREE);
		case 5: Announcer(RAMPAGE);
		case 7: Announcer(UNSTOPPABLE);
		case 9: Announcer(DIVINE);
		case 11: Announcer(IMMORTAL);
	}
}

stock Announcer(iPos){

	get_user_name(g_iKiller, g_szBuffer, charsmax(g_szBuffer));

	get_players(g_iPlayers, g_iPlayerCount, "c");

#if COLOR_MODE == 1
	set_hudmessage(HUD_R, HUD_G, HUD_B, HUD_X, HUD_Y, 0, 0.0, HUD_TIME);
#elseif COLOR_MODE == 2
	set_hudmessage(g_iColor[iPos][R], g_iColor[iPos][G], g_iColor[iPos][B], HUD_X, HUD_Y, 0, 0.0, HUD_TIME);
#else
	set_hudmessage(	random_num(MIN_VALUE, MAX_VALUE), random_num(MIN_VALUE, MAX_VALUE),
		random_num(MIN_VALUE, MAX_VALUE), HUD_X, HUD_Y, 0, 0.0, HUD_TIME );
#endif

	for(new i, iPlayer; i < g_iPlayerCount; i++){

		iPlayer = g_iPlayers[i];

		if(g_iAnnouncer[iPlayer] == AS__ALL || (g_iAnnouncer[iPlayer] == AS__PERSONAL && iPlayer == g_iKiller)){

			rg_send_audio(iPlayer, g_szSound[iPos]);
			ShowSyncHudMsg(iPlayer, g_iMsgHudSync, "%L", iPlayer, g_szLangMsg[iPos], g_szBuffer);
		}
	}
}

stock TeamName:rg_get_user_team(id){

	return get_member(id, m_iTeam);
}

Аватар
TryAgain
Извън линия
Потребител
Потребител
Мнения: 182
Регистриран на: 25 Яну 2017, 16:59
Се отблагодари: 1 път
Получена благодарност: 26 пъти

Премахване на съобщенията от Announcer Killstreak

Мнение от TryAgain » 20 Сеп 2018, 04:53

Готово.

Код за потвърждение: Избери целия код

#pragma semicolon 1

// В plugins.ini плагин желательно располагать НИЖЕ плагина, выполняющего функции чат-антифлуда (antiflood.amxx)

///////////////////////////////////////////// Настройки ///////////////////////////////////////////////

// Имя пака с голосом диктора
// Default - мужской голос (стандартный набор)
// Khepri - мужской голос с автотюном
// Nox - женский голос
new const SOUND_PACK_FOLDER[] = "Default";

// Состояние анонсера по умолчанию
// 1 - Игроки получают все анонсы
// 2 - Игроки получают только собственные анонсы
// 3 - Выключен у всех
#define DEFAULT_STATE 1

// Установите 1, если хотите отображать диктора в HLTV
#define HLTV_SUPPORT 0

// Интервал для серии убийств (в секундах)
const Float: MULTIKILL_TIME = 3.0;

// Метод сохранения состояния анонсера
#define SAVE_TYPE 0 // 0 - nVault; 1 - Trie

// Через сколько дней удалять настройку из nVault, если игрок не заходил
stock const VAULT_PRUNE_DAYS = 7;

// Файл для сохранения настроек (SAVE_TYPE 0)
stock const VAULT_FILE[] = "announcer_data";

///////////////////////////////////////////////////////////////////////////////////////////////////////

#define SAVE_TYPE_VAULT 0
#define SAVE_TYPE_TRIE 1

#include <amxmodx>
#include <reapi>
#include <time>
#if SAVE_TYPE == SAVE_TYPE_VAULT
	#include <nvault>
#endif

enum { R, G, B };

enum {
	AS__ALL = 1,
	AS__PERSONAL,
	AS__DISABLED
};

enum _:SOME_ENUM {

	DOUBLE_KILL,
	TRIPLE_KILL,
	QUADRA_KILL,
	PENTA_KILL,

	KILLING_SPREE,
	RAMPAGE,
	UNSTOPPABLE,
	DIVINE,
	IMMORTAL,
	GODLIKE,

	FIRST_BLOOD,
	SHUTDOWN,
	DEICIDE
};

new g_szSoundName[SOME_ENUM][] = {

	"doublekill",
	"triplekill",
	"quadrakill",
	"pentakill",

	"killingspree",
	"rampage",
	"unstoppable",
	"divine",
	"immortal",
	"godlike",

	"firstblood",
	"shutdown",
	"deicide"
};

const FILE_PATH_LEN = 96;
const AUTHID_LEN = 25;

new g_iKillStreak[MAX_PLAYERS +1], g_iMultiKill[MAX_PLAYERS +1], g_szBuffer[MAX_NAME_LENGTH],
	g_iPlayers[MAX_PLAYERS], g_iPlayerCount, bool: g_bFirstBlood, g_iKiller, g_szSound[SOME_ENUM][FILE_PATH_LEN],pCvar;

new  g_iAnnouncer[MAX_PLAYERS +1] = { DEFAULT_STATE, ... }, g_szAuthID[AUTHID_LEN];

stock g_hVault = INVALID_HANDLE, Trie:g_tTrie, g_iMsgId, g_hMsg, g_iFFA;

public plugin_init(){

	register_plugin("Announcer Killstreak", "2.0", "Jumper & mx?!");

	register_dictionary("Announcer_Killstreak.txt");

	pCvar = get_cvar_pointer("mp_freeforall");
	g_iFFA = get_pcvar_num(pCvar);

	hook_cvar_change(pCvar, "hook_Cvar");
	RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Pre", 0);
	RegisterHookChain(RG_CSGameRules_OnRoundFreezeEnd, "CSGameRules_OnRoundFreezeEnd_Pre", 0);
	
	g_iMsgId = get_user_msgid("SendAudio");

#if SAVE_TYPE == SAVE_TYPE_TRIE
	g_tTrie = TrieCreate();
#endif
}

public hook_Cvar(pCvar, szOldVal[], szNewVal[]){

	g_iFFA = str_to_num(szNewVal);
}

public plugin_end()
{
#if SAVE_TYPE == SAVE_TYPE_VAULT
	if(g_hVault != INVALID_HANDLE){
	
		nvault_close(g_hVault);
	}
#else
	TrieDestroy(g_tTrie)
#endif
}

#if SAVE_TYPE == SAVE_TYPE_VAULT
public plugin_cfg(){
	
	if((g_hVault = nvault_open(VAULT_FILE)) == INVALID_HANDLE){
		
		set_fail_state("ERROR: Opening nVault failed!");
	}
	nvault_prune(g_hVault, 0, get_systime() - (SECONDS_IN_DAY * VAULT_PRUNE_DAYS));
}
#endif

public plugin_precache(){

	for(new i; i < SOME_ENUM; i++){

		formatex( g_szSound[i], charsmax(g_szSound[]), "Announcer_Killstreak/%s/%s.wav",
			SOUND_PACK_FOLDER, g_szSoundName[i]	);

		precache_sound(g_szSound[i]);
	}
}

public client_authorized(iPlayer, const szAuthID[]){

#if HLTV_SUPPORT == 1
	if(is_user_hltv(iPlayer)){
	
		g_iAnnouncer[iPlayer] = AS__ALL;
		return;
	}
#endif

#if SAVE_TYPE == SAVE_TYPE_VAULT
	if(!(g_iAnnouncer[iPlayer] = nvault_get(g_hVault, szAuthID))){
#else
	if(!TrieGetCell(g_tTrie, szAuthID, g_iAnnouncer[iPlayer])){
#endif
		g_iAnnouncer[iPlayer] = DEFAULT_STATE;
	}
}

public client_disconnected(iPlayer){

	g_iKillStreak[iPlayer] = g_iMultiKill[iPlayer] = 0;
}

public Command_Announce(iPlayer){

	if(++g_iAnnouncer[iPlayer] > AS__DISABLED){
	
		g_iAnnouncer[iPlayer] = AS__ALL;
	}

	get_user_authid(iPlayer, g_szAuthID, charsmax(g_szAuthID));
#if SAVE_TYPE == SAVE_TYPE_VAULT
	formatex(g_szBuffer, charsmax(g_szBuffer), "%d", g_iAnnouncer[iPlayer]);
	nvault_set(g_hVault, g_szAuthID, g_szBuffer);
#else
	TrieSetCell(g_tTrie, g_szAuthID, g_iAnnouncer[iPlayer]);
#endif

	formatex(g_szBuffer, charsmax(g_szBuffer), "AK_STATUS_%d", g_iAnnouncer[iPlayer]);

	client_print_color( iPlayer, print_team_red, "^1[^4AK^1] %L %L", iPlayer, "AK_COMMAND",
		iPlayer, g_szBuffer );

	return PLUGIN_HANDLED_MAIN;
}

public msg_SendAudio()
{
	get_msg_arg_string(2, g_szBuffer, charsmax(g_szBuffer));

	if(contain(g_szBuffer[7], "terwin") != -1 || contain(g_szBuffer[7], "ctwin") != -1){ // %!MRAD_
	
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}

public CSGameRules_OnRoundFreezeEnd_Pre(){

	if(g_hMsg){
	
		unregister_message(g_iMsgId, g_hMsg);
		g_hMsg = 0;
	}
	arrayset(g_iKillStreak, 0, sizeof(g_iKillStreak));
	arrayset(g_iMultiKill, 0, sizeof(g_iMultiKill));
	g_bFirstBlood = false;
}

public CBasePlayer_Killed_Pre(iVictim, iKiller){

	if(iVictim == iKiller || !is_user_connected(iKiller) || 
	(!g_iFFA && rg_get_user_team(iVictim) == rg_get_user_team(iKiller))){
	
		g_iKillStreak[iVictim] = g_iMultiKill[iVictim] = 0;
		return;
	}

	g_iMultiKill[iVictim] = 0;

	g_iKiller = iKiller;
	g_iKillStreak[iKiller]++;
	g_iMultiKill[iKiller]++;

	static Float:fCurrKillTime[MAX_PLAYERS +1];

	new Float:fLastKillTime = fCurrKillTime[iKiller];
	fCurrKillTime[iKiller] = get_gametime();

	/* --- */

	if(g_iKillStreak[iVictim] > 4){

		g_iKiller = iVictim;
		g_iKillStreak[iVictim] = 0;
		Announcer(SHUTDOWN);
		return;
	}

	g_iKillStreak[iVictim] = 0;

	if(!g_bFirstBlood){

		g_bFirstBlood = true;
		Announcer(FIRST_BLOOD);
		return;
	}

	new TeamName: iVictimTeam = rg_get_user_team(iVictim);

	if(TEAM_SPECTATOR > iVictimTeam > TEAM_UNASSIGNED){

		get_players(g_iPlayers, g_iPlayerCount, "ae", iVictimTeam == TEAM_TERRORIST ? "TERRORIST" : "CT");

		if(!g_iPlayerCount){

			if(!g_hMsg){
			
				g_hMsg = register_message(g_iMsgId, "msg_SendAudio");
			}
			Announcer(DEICIDE);
			return;
		}
	}

	/* --- */

	if(g_iKillStreak[iKiller] == 1){
	
		return;
	}

	if(fCurrKillTime[iKiller] - fLastKillTime < MULTIKILL_TIME && g_iMultiKill[iKiller] < 6){

		Announcer(g_iMultiKill[iKiller] - 2);
		return;
	}

	g_iMultiKill[iKiller] = 1;

	if(g_iKillStreak[iKiller] % 2 == 0){
	
		return;
	}

	if(g_iKillStreak[iKiller] > 11){
	
		Announcer(GODLIKE);
		return;
	}

	switch(g_iKillStreak[iKiller]){
	
		case 3: Announcer(KILLING_SPREE);
		case 5: Announcer(RAMPAGE);
		case 7: Announcer(UNSTOPPABLE);
		case 9: Announcer(DIVINE);
		case 11: Announcer(IMMORTAL);
	}
}

stock Announcer(iPos){
	get_players(g_iPlayers, g_iPlayerCount, "c");
	for(new i, iPlayer; i < g_iPlayerCount; i++)
	{
		iPlayer = g_iPlayers[i];

		if(g_iAnnouncer[iPlayer] == AS__ALL || (g_iAnnouncer[iPlayer] == AS__PERSONAL && iPlayer == g_iKiller))
		rg_send_audio(iPlayer, g_szSound[iPos]);
	}
}

stock TeamName:rg_get_user_team(id){

	return get_member(id, m_iTeam);
}
Последно промяна от TryAgain на 20 Сеп 2018, 15:46, променено общо 1 път.

Аватар
thoughtz
Извън линия
Модератор
Модератор
Мнения: 585
Регистриран на: 13 Окт 2016, 00:32
Местоположение: гр. София
Се отблагодари: 112 пъти
Получена благодарност: 79 пъти
Обратна връзка:

Премахване на съобщенията от Announcer Killstreak

Мнение от thoughtz » 20 Сеп 2018, 14:45

Сега в момента, няма никакъв звук.

Аватар
TryAgain
Извън линия
Потребител
Потребител
Мнения: 182
Регистриран на: 25 Яну 2017, 16:59
Се отблагодари: 1 път
Получена благодарност: 26 пъти

Премахване на съобщенията от Announcer Killstreak

Мнение от TryAgain » 20 Сеп 2018, 15:47

Оправих го един ред в повече съм изтрил. Извинявам се.

Аватар
thoughtz
Извън линия
Модератор
Модератор
Мнения: 585
Регистриран на: 13 Окт 2016, 00:32
Местоположение: гр. София
Се отблагодари: 112 пъти
Получена благодарност: 79 пъти
Обратна връзка:

Премахване на съобщенията от Announcer Killstreak

Мнение от thoughtz » 20 Сеп 2018, 15:52

Пак няма звук.

Аватар
JackEyedJones
Извън линия
Потребител
Потребител
Мнения: 399
Регистриран на: 10 Сеп 2018, 17:26
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
Се отблагодари: 4 пъти
Получена благодарност: 69 пъти
Обратна връзка:

Премахване на съобщенията от Announcer Killstreak

Мнение от JackEyedJones » 20 Сеп 2018, 16:06

:gamer1:
Пробвай дали се компилира и по начина по-долу.

Код за потвърждение: Избери целия код

#pragma semicolon 1

// В plugins.ini плагин желательно располагать НИЖЕ плагина, выполняющего функции чат-антифлуда (antiflood.amxx)

///////////////////////////////////////////// Настройки ///////////////////////////////////////////////

// Имя пака с голосом диктора
// Default - мужской голос (стандартный набор)
// Khepri - мужской голос с автотюном
// Nox - женский голос
new const SOUND_PACK_FOLDER[] = "Default";

// Состояние анонсера по умолчанию
// 1 - Игроки получают все анонсы
// 2 - Игроки получают только собственные анонсы
// 3 - Выключен у всех
#define DEFAULT_STATE 1

// Установите 1, если хотите отображать диктора в HLTV
#define HLTV_SUPPORT 0

// Интервал для серии убийств (в секундах)
const Float: MULTIKILL_TIME = 3.0;

// Метод сохранения состояния анонсера
#define SAVE_TYPE 0 // 0 - nVault; 1 - Trie

// Через сколько дней удалять настройку из nVault, если игрок не заходил
stock const VAULT_PRUNE_DAYS = 7;

// Файл для сохранения настроек (SAVE_TYPE 0)
stock const VAULT_FILE[] = "announcer_data";

///////////////////////////////////////////////////////////////////////////////////////////////////////

#define SAVE_TYPE_VAULT 0
#define SAVE_TYPE_TRIE 1

#include <amxmodx>
#include <reapi>
#include <time>
#if SAVE_TYPE == SAVE_TYPE_VAULT
	#include <nvault>
#endif

enum { R, G, B };

enum {
	AS__ALL = 1,
	AS__PERSONAL,
	AS__DISABLED
};

enum _:SOME_ENUM {

	DOUBLE_KILL,
	TRIPLE_KILL,
	QUADRA_KILL,
	PENTA_KILL,

	KILLING_SPREE,
	RAMPAGE,
	UNSTOPPABLE,
	DIVINE,
	IMMORTAL,
	GODLIKE,

	FIRST_BLOOD,
	SHUTDOWN,
	DEICIDE
};

new g_szSoundName[SOME_ENUM][] = {

	"doublekill",
	"triplekill",
	"quadrakill",
	"pentakill",

	"killingspree",
	"rampage",
	"unstoppable",
	"divine",
	"immortal",
	"godlike",

	"firstblood",
	"shutdown",
	"deicide"
};

const FILE_PATH_LEN = 96;
const AUTHID_LEN = 25;

new g_iKillStreak[MAX_PLAYERS +1], g_iMultiKill[MAX_PLAYERS +1], g_szBuffer[MAX_NAME_LENGTH],
	g_iPlayers[MAX_PLAYERS], g_iPlayerCount, bool: g_bFirstBlood, g_iKiller, g_szSound[SOME_ENUM][FILE_PATH_LEN],pCvar;

new  g_iAnnouncer[MAX_PLAYERS +1] = { DEFAULT_STATE, ... }, g_szAuthID[AUTHID_LEN];

stock g_hVault = INVALID_HANDLE, Trie:g_tTrie, g_iMsgId, g_hMsg, g_iFFA;

public plugin_init(){

	register_plugin("Announcer Killstreak", "2.0", "Jumper & mx?!");

	register_dictionary("Announcer_Killstreak.txt");

	pCvar = get_cvar_pointer("mp_freeforall");
	g_iFFA = get_pcvar_num(pCvar);

	hook_cvar_change(pCvar, "hook_Cvar");
	RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Pre", 0);
	RegisterHookChain(RG_CSGameRules_OnRoundFreezeEnd, "CSGameRules_OnRoundFreezeEnd_Pre", 0);
	
	g_iMsgId = get_user_msgid("SendAudio");

#if SAVE_TYPE == SAVE_TYPE_TRIE
	g_tTrie = TrieCreate();
#endif
}

public hook_Cvar(pCvar, szOldVal[], szNewVal[]){

	g_iFFA = str_to_num(szNewVal);
}

public plugin_end()
{
#if SAVE_TYPE == SAVE_TYPE_VAULT
	if(g_hVault != INVALID_HANDLE){
	
		nvault_close(g_hVault);
	}
#else
	TrieDestroy(g_tTrie)
#endif
}

#if SAVE_TYPE == SAVE_TYPE_VAULT
public plugin_cfg(){
	
	if((g_hVault = nvault_open(VAULT_FILE)) == INVALID_HANDLE){
		
		set_fail_state("ERROR: Opening nVault failed!");
	}
	nvault_prune(g_hVault, 0, get_systime() - (SECONDS_IN_DAY * VAULT_PRUNE_DAYS));
}
#endif

public plugin_precache(){

	for(new i; i < SOME_ENUM; i++){

		formatex( g_szSound[i], charsmax(g_szSound[]), "Announcer_Killstreak/%s/%s.wav",
			SOUND_PACK_FOLDER, g_szSoundName[i]	);

		precache_sound(g_szSound[i]);
	}
}

public client_authorized(iPlayer, const szAuthID[]){

#if HLTV_SUPPORT == 1
	if(is_user_hltv(iPlayer)){
	
		g_iAnnouncer[iPlayer] = AS__ALL;
		return;
	}
#endif

#if SAVE_TYPE == SAVE_TYPE_VAULT
	if(!(g_iAnnouncer[iPlayer] = nvault_get(g_hVault, szAuthID))){
#else
	if(!TrieGetCell(g_tTrie, szAuthID, g_iAnnouncer[iPlayer])){
#endif
		g_iAnnouncer[iPlayer] = DEFAULT_STATE;
	}
}

public client_disconnected(iPlayer){

	g_iKillStreak[iPlayer] = g_iMultiKill[iPlayer] = 0;
}

public Command_Announce(iPlayer){

	if(++g_iAnnouncer[iPlayer] > AS__DISABLED){
	
		g_iAnnouncer[iPlayer] = AS__ALL;
	}

	get_user_authid(iPlayer, g_szAuthID, charsmax(g_szAuthID));
#if SAVE_TYPE == SAVE_TYPE_VAULT
	formatex(g_szBuffer, charsmax(g_szBuffer), "%d", g_iAnnouncer[iPlayer]);
	nvault_set(g_hVault, g_szAuthID, g_szBuffer);
#else
	TrieSetCell(g_tTrie, g_szAuthID, g_iAnnouncer[iPlayer]);
#endif

	formatex(g_szBuffer, charsmax(g_szBuffer), "AK_STATUS_%d", g_iAnnouncer[iPlayer]);

	client_print_color( iPlayer, print_team_red, "^1[^4AK^1] %L %L", iPlayer, "AK_COMMAND",
		iPlayer, g_szBuffer );

	return PLUGIN_HANDLED_MAIN;
}

public msg_SendAudio()
{
	get_msg_arg_string(2, g_szBuffer, charsmax(g_szBuffer));

	if(contain(g_szBuffer[7], "terwin") != -1 || contain(g_szBuffer[7], "ctwin") != -1){ // %!MRAD_
	
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}

public CSGameRules_OnRoundFreezeEnd_Pre(){

	if(g_hMsg){
	
		unregister_message(g_iMsgId, g_hMsg);
		g_hMsg = 0;
	}
	arrayset(g_iKillStreak, 0, sizeof(g_iKillStreak));
	arrayset(g_iMultiKill, 0, sizeof(g_iMultiKill));
	g_bFirstBlood = false;
}

public CBasePlayer_Killed_Pre(iVictim, iKiller){

	if(iVictim == iKiller || !is_user_connected(iKiller) || 
	(!g_iFFA && rg_get_user_team(iVictim) == rg_get_user_team(iKiller))){
	
		g_iKillStreak[iVictim] = g_iMultiKill[iVictim] = 0;
		return;
	}

	g_iMultiKill[iVictim] = 0;

	g_iKiller = iKiller;
	g_iKillStreak[iKiller]++;
	g_iMultiKill[iKiller]++;

	static Float:fCurrKillTime[MAX_PLAYERS +1];

	new Float:fLastKillTime = fCurrKillTime[iKiller];
	fCurrKillTime[iKiller] = get_gametime();

	/* --- */

	if(g_iKillStreak[iVictim] > 4){

		g_iKiller = iVictim;
		g_iKillStreak[iVictim] = 0;
		Announcer(SHUTDOWN);
		return;
	}

	g_iKillStreak[iVictim] = 0;

	if(!g_bFirstBlood){

		g_bFirstBlood = true;
		Announcer(FIRST_BLOOD);
		return;
	}

	new TeamName: iVictimTeam = rg_get_user_team(iVictim);

	if(TEAM_SPECTATOR > iVictimTeam > TEAM_UNASSIGNED){

		get_players(g_iPlayers, g_iPlayerCount, "ae", iVictimTeam == TEAM_TERRORIST ? "TERRORIST" : "CT");

		if(!g_iPlayerCount){

			if(!g_hMsg){
			
				g_hMsg = register_message(g_iMsgId, "msg_SendAudio");
			}
			Announcer(DEICIDE);
			return;
		}
	}

	/* --- */

	if(g_iKillStreak[iKiller] == 1){
	
		return;
	}

	if(fCurrKillTime[iKiller] - fLastKillTime < MULTIKILL_TIME && g_iMultiKill[iKiller] < 6){

		Announcer(g_iMultiKill[iKiller] - 2);
		return;
	}

	g_iMultiKill[iKiller] = 1;

	if(g_iKillStreak[iKiller] % 2 == 0){
	
		return;
	}

	if(g_iKillStreak[iKiller] > 11){
	
		Announcer(GODLIKE);
		return;
	}

	switch(g_iKillStreak[iKiller]){
	
		case 3: Announcer(KILLING_SPREE);
		case 5: Announcer(RAMPAGE);
		case 7: Announcer(UNSTOPPABLE);
		case 9: Announcer(DIVINE);
		case 11: Announcer(IMMORTAL);
	}
}

stock Announcer(iPos)
{
	get_players(g_iPlayers, g_iPlayerCount, "c");
	for(new i, iPlayer; i < g_iPlayerCount; i++)
	{
		iPlayer = g_iPlayers[i];

		if(g_iAnnouncer[iPlayer] == AS__ALL || (g_iAnnouncer[iPlayer] == AS__PERSONAL && iPlayer == g_iKiller))
		
		client_cmd(iPlayer, "spk %s", g_szSound[iPos]);
		//rg_send_audio(iPlayer, g_szSound[iPos]);
	}
}

stock TeamName:rg_get_user_team(id){

	return get_member(id, m_iTeam);
}
Променено:
От rg_send_audio(iPlayer, g_szSound[iPos])
към client_cmd(iPlayer, "spk %s", g_szSound[iPos])
Прикачени файлове
szSounds.txt
(7.33 KiB) Свалено 139 пъти
szSounds.txt
(7.33 KiB) Свалено 139 пъти

Аватар
thoughtz
Извън линия
Модератор
Модератор
Мнения: 585
Регистриран на: 13 Окт 2016, 00:32
Местоположение: гр. София
Се отблагодари: 112 пъти
Получена благодарност: 79 пъти
Обратна връзка:

Премахване на съобщенията от Announcer Killstreak

Мнение от thoughtz » 20 Сеп 2018, 16:14

И първото се компилира и работи и второто, кое да позлвам?

Аватар
JackEyedJones
Извън линия
Потребител
Потребител
Мнения: 399
Регистриран на: 10 Сеп 2018, 17:26
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
Се отблагодари: 4 пъти
Получена благодарност: 69 пъти
Обратна връзка:

Премахване на съобщенията от Announcer Killstreak

Мнение от JackEyedJones » 20 Сеп 2018, 16:17

Mariela написа: 20 Сеп 2018, 16:14 И първото се компилира и работи и второто, кое да позлвам?
Второ - с прехода към client_cmd(iPlayer, реда.
И най-вече има ли звук.
И първото се компилира и работи
- Двусмислица. :huh:

Аватар
thoughtz
Извън линия
Модератор
Модератор
Мнения: 585
Регистриран на: 13 Окт 2016, 00:32
Местоположение: гр. София
Се отблагодари: 112 пъти
Получена благодарност: 79 пъти
Обратна връзка:

Премахване на съобщенията от Announcer Killstreak

Мнение от thoughtz » 20 Сеп 2018, 16:30

Нали ми написа да пробвам дали се компилира по втория начин. Да, компилира се и по двата начина които си предоставил. Последно оставям това.

Код за потвърждение: Избери целия код

#pragma semicolon 1

// В plugins.ini плагин желательно располагать НИЖЕ плагина, выполняющего функции чат-антифлуда (antiflood.amxx)

///////////////////////////////////////////// Настройки ///////////////////////////////////////////////

// Имя пака с голосом диктора
// Default - мужской голос (стандартный набор)
// Khepri - мужской голос с автотюном
// Nox - женский голос
new const SOUND_PACK_FOLDER[] = "second";

// Состояние анонсера по умолчанию
// 1 - Игроки получают все анонсы
// 2 - Игроки получают только собственные анонсы
// 3 - Выключен у всех
#define DEFAULT_STATE 1

// Установите 1, если хотите отображать диктора в HLTV
#define HLTV_SUPPORT 0

// Интервал для серии убийств (в секундах)
const Float: MULTIKILL_TIME = 3.0;

// Метод сохранения состояния анонсера
#define SAVE_TYPE 0 // 0 - nVault; 1 - Trie

// Через сколько дней удалять настройку из nVault, если игрок не заходил
stock const VAULT_PRUNE_DAYS = 7;

// Файл для сохранения настроек (SAVE_TYPE 0)
stock const VAULT_FILE[] = "announcer_data";

///////////////////////////////////////////////////////////////////////////////////////////////////////

#define SAVE_TYPE_VAULT 0
#define SAVE_TYPE_TRIE 1

#include <amxmodx>
#include <reapi>
#include <time>
#if SAVE_TYPE == SAVE_TYPE_VAULT
	#include <nvault>
#endif

enum { R, G, B };

enum {
	AS__ALL = 1,
	AS__PERSONAL,
	AS__DISABLED
};

enum _:SOME_ENUM {

	DOUBLE_KILL,
	TRIPLE_KILL,
	QUADRA_KILL,
	PENTA_KILL,

	KILLING_SPREE,
	RAMPAGE,
	UNSTOPPABLE,
	DIVINE,
	IMMORTAL,
	GODLIKE,

	FIRST_BLOOD,
	SHUTDOWN,
	DEICIDE
};

new g_szSoundName[SOME_ENUM][] = {

	"doublekill",
	"triplekill",
	"quadrakill",
	"pentakill",

	"killingspree",
	"rampage",
	"unstoppable",
	"divine",
	"immortal",
	"godlike",

	"firstblood",
	"shutdown",
	"deicide"
};

const FILE_PATH_LEN = 96;
const AUTHID_LEN = 25;

new g_iKillStreak[MAX_PLAYERS +1], g_iMultiKill[MAX_PLAYERS +1], g_szBuffer[MAX_NAME_LENGTH],
	g_iPlayers[MAX_PLAYERS], g_iPlayerCount, bool: g_bFirstBlood, g_iKiller, g_szSound[SOME_ENUM][FILE_PATH_LEN],pCvar;

new  g_iAnnouncer[MAX_PLAYERS +1] = { DEFAULT_STATE, ... }, g_szAuthID[AUTHID_LEN];

stock g_hVault = INVALID_HANDLE, Trie:g_tTrie, g_iMsgId, g_hMsg, g_iFFA;

public plugin_init(){

	register_plugin("Announcer Killstreak", "2.0", "Jumper & mx?!");

	register_dictionary("Announcer_Killstreak.txt");

	pCvar = get_cvar_pointer("mp_freeforall");
	g_iFFA = get_pcvar_num(pCvar);

	hook_cvar_change(pCvar, "hook_Cvar");
	RegisterHookChain(RG_CBasePlayer_Killed, "CBasePlayer_Killed_Pre", 0);
	RegisterHookChain(RG_CSGameRules_OnRoundFreezeEnd, "CSGameRules_OnRoundFreezeEnd_Pre", 0);
	
	g_iMsgId = get_user_msgid("SendAudio");

#if SAVE_TYPE == SAVE_TYPE_TRIE
	g_tTrie = TrieCreate();
#endif
}

public hook_Cvar(pCvar, szOldVal[], szNewVal[]){

	g_iFFA = str_to_num(szNewVal);
}

public plugin_end()
{
#if SAVE_TYPE == SAVE_TYPE_VAULT
	if(g_hVault != INVALID_HANDLE){
	
		nvault_close(g_hVault);
	}
#else
	TrieDestroy(g_tTrie)
#endif
}

#if SAVE_TYPE == SAVE_TYPE_VAULT
public plugin_cfg(){
	
	if((g_hVault = nvault_open(VAULT_FILE)) == INVALID_HANDLE){
		
		set_fail_state("ERROR: Opening nVault failed!");
	}
	nvault_prune(g_hVault, 0, get_systime() - (SECONDS_IN_DAY * VAULT_PRUNE_DAYS));
}
#endif

public plugin_precache(){

	for(new i; i < SOME_ENUM; i++){

		formatex( g_szSound[i], charsmax(g_szSound[]), "sounds/%s/%s.wav",
			SOUND_PACK_FOLDER, g_szSoundName[i]	);

		precache_sound(g_szSound[i]);
	}
}

public client_authorized(iPlayer, const szAuthID[]){

#if HLTV_SUPPORT == 1
	if(is_user_hltv(iPlayer)){
	
		g_iAnnouncer[iPlayer] = AS__ALL;
		return;
	}
#endif

#if SAVE_TYPE == SAVE_TYPE_VAULT
	if(!(g_iAnnouncer[iPlayer] = nvault_get(g_hVault, szAuthID))){
#else
	if(!TrieGetCell(g_tTrie, szAuthID, g_iAnnouncer[iPlayer])){
#endif
		g_iAnnouncer[iPlayer] = DEFAULT_STATE;
	}
}

public client_disconnected(iPlayer){

	g_iKillStreak[iPlayer] = g_iMultiKill[iPlayer] = 0;
}

public Command_Announce(iPlayer){

	if(++g_iAnnouncer[iPlayer] > AS__DISABLED){
	
		g_iAnnouncer[iPlayer] = AS__ALL;
	}

	get_user_authid(iPlayer, g_szAuthID, charsmax(g_szAuthID));
#if SAVE_TYPE == SAVE_TYPE_VAULT
	formatex(g_szBuffer, charsmax(g_szBuffer), "%d", g_iAnnouncer[iPlayer]);
	nvault_set(g_hVault, g_szAuthID, g_szBuffer);
#else
	TrieSetCell(g_tTrie, g_szAuthID, g_iAnnouncer[iPlayer]);
#endif

	formatex(g_szBuffer, charsmax(g_szBuffer), "AK_STATUS_%d", g_iAnnouncer[iPlayer]);

	client_print_color( iPlayer, print_team_red, "^1[^4AK^1] %L %L", iPlayer, "AK_COMMAND",
		iPlayer, g_szBuffer );

	return PLUGIN_HANDLED_MAIN;
}

public msg_SendAudio()
{
	get_msg_arg_string(2, g_szBuffer, charsmax(g_szBuffer));

	if(contain(g_szBuffer[7], "terwin") != -1 || contain(g_szBuffer[7], "ctwin") != -1){ // %!MRAD_
	
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}

public CSGameRules_OnRoundFreezeEnd_Pre(){

	if(g_hMsg){
	
		unregister_message(g_iMsgId, g_hMsg);
		g_hMsg = 0;
	}
	arrayset(g_iKillStreak, 0, sizeof(g_iKillStreak));
	arrayset(g_iMultiKill, 0, sizeof(g_iMultiKill));
	g_bFirstBlood = false;
}

public CBasePlayer_Killed_Pre(iVictim, iKiller){

	if(iVictim == iKiller || !is_user_connected(iKiller) || 
	(!g_iFFA && rg_get_user_team(iVictim) == rg_get_user_team(iKiller))){
	
		g_iKillStreak[iVictim] = g_iMultiKill[iVictim] = 0;
		return;
	}

	g_iMultiKill[iVictim] = 0;

	g_iKiller = iKiller;
	g_iKillStreak[iKiller]++;
	g_iMultiKill[iKiller]++;

	static Float:fCurrKillTime[MAX_PLAYERS +1];

	new Float:fLastKillTime = fCurrKillTime[iKiller];
	fCurrKillTime[iKiller] = get_gametime();

	/* --- */

	if(g_iKillStreak[iVictim] > 4){

		g_iKiller = iVictim;
		g_iKillStreak[iVictim] = 0;
		Announcer(SHUTDOWN);
		return;
	}

	g_iKillStreak[iVictim] = 0;

	if(!g_bFirstBlood){

		g_bFirstBlood = true;
		Announcer(FIRST_BLOOD);
		return;
	}

	new TeamName: iVictimTeam = rg_get_user_team(iVictim);

	if(TEAM_SPECTATOR > iVictimTeam > TEAM_UNASSIGNED){

		get_players(g_iPlayers, g_iPlayerCount, "ae", iVictimTeam == TEAM_TERRORIST ? "TERRORIST" : "CT");

		if(!g_iPlayerCount){

			if(!g_hMsg){
			
				g_hMsg = register_message(g_iMsgId, "msg_SendAudio");
			}
			Announcer(DEICIDE);
			return;
		}
	}

	/* --- */

	if(g_iKillStreak[iKiller] == 1){
	
		return;
	}

	if(fCurrKillTime[iKiller] - fLastKillTime < MULTIKILL_TIME && g_iMultiKill[iKiller] < 6){

		Announcer(g_iMultiKill[iKiller] - 2);
		return;
	}

	g_iMultiKill[iKiller] = 1;

	if(g_iKillStreak[iKiller] % 2 == 0){
	
		return;
	}

	if(g_iKillStreak[iKiller] > 11){
	
		Announcer(GODLIKE);
		return;
	}

	switch(g_iKillStreak[iKiller]){
	
		case 3: Announcer(KILLING_SPREE);
		case 5: Announcer(RAMPAGE);
		case 7: Announcer(UNSTOPPABLE);
		case 9: Announcer(DIVINE);
		case 11: Announcer(IMMORTAL);
	}
}

stock Announcer(iPos)
{
	get_players(g_iPlayers, g_iPlayerCount, "c");
	for(new i, iPlayer; i < g_iPlayerCount; i++)
	{
		iPlayer = g_iPlayers[i];

		if(g_iAnnouncer[iPlayer] == AS__ALL || (g_iAnnouncer[iPlayer] == AS__PERSONAL && iPlayer == g_iKiller))
		
		client_cmd(iPlayer, "spk %s", g_szSound[iPos]);
		//rg_send_audio(iPlayer, g_szSound[iPos]);
	}
}

stock TeamName:rg_get_user_team(id){

	return get_member(id, m_iTeam);
}

Аватар
JackEyedJones
Извън линия
Потребител
Потребител
Мнения: 399
Регистриран на: 10 Сеп 2018, 17:26
Местоположение: Plovdiv, Bulgaria, Europe, Entire World
Се отблагодари: 4 пъти
Получена благодарност: 69 пъти
Обратна връзка:

Премахване на съобщенията от Announcer Killstreak

Мнение от JackEyedJones » 20 Сеп 2018, 16:47

Да си го свалят хората.
:gamer2: :gamer1:
AnnouncerKillstreak.sma
(7.31 KiB) Свалено 138 пъти
AnnouncerKillstreak.sma
(7.31 KiB) Свалено 138 пъти

Публикувай отговор
  • Подобни теми
    Отговори
    Преглеждания
     Последно мнение

Обратно към “Заявки за плъгини”

Кой е на линия

Потребители разглеждащи този форум: Bing [Bot], bringmefans1 и 14 госта