Взимане на убийства от nvault

Ако имате затруднения при изработката/преработката на даден плъгин - пишете тук, ще се опитаме да ви помогнем!
Аватар
Radeon
Извън линия
Потребител
Потребител
Мнения: 78
Регистриран на: 04 Апр 2021, 11:30
Се отблагодари: 2 пъти
Получена благодарност: 11 пъти
Обратна връзка:

Взимане на убийства от nvault

Мнение от Radeon » 16 Май 2022, 16:23

Какво бъркам, кода не дава грешки, но и не работи. Винаги в префикса показва 0 убийства. Тествал съм го само с ботове.

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

#include <amxmodx>
#include <amxmisc>
#include <nvault>  
#include <fun>   
#include <cstrike>  
#define PLUGIN "Kills_in_Prefix"
#define VERSION "1.0"
#define AUTHOR "3"

new g_iVault

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_message(get_user_msgid("SayText"), "Message_SayText")
	g_iVault = nvault_open("PrefixKills");
	if ( g_iVault == INVALID_HANDLE )
    set_fail_state( "Error opening nVault" ); 
}

UseVault(id, iType)
{        
    new szName[32], szData[16]
    get_user_name(id, szName, charsmax(szName));
    
    switch(iType)
    {
        case 0:
        {
            formatex(szData, charsmax(szData), "%i %i", get_user_frags(id), cs_get_user_deaths(id))
            nvault_set(g_iVault, szName, szData)
        }
        case 1:
        {
            nvault_get(g_iVault, szName, szData, charsmax(szData))
            
            new szArg[2][8]
            parse(szData, szArg[0], charsmax(szArg[]), szArg[1], charsmax(szArg[]))
            set_user_frags(id, str_to_num(szArg[0]))
            cs_set_user_deaths(id, str_to_num(szArg[1]))
            
        }
    }
}

public client_disconnected(id)
   if (!is_user_bot(id)) 
   UseVault(id, 0)
    
public client_putinserver(id)
if (!is_user_bot(id))
    UseVault(id, 1)
    
public Message_SayText(id)
{
new szChannel[40]
get_msg_arg_string(2, szChannel, charsmax(szChannel))

if(equal(szChannel, "#Cstrike_Chat", 13))
{
if(equal(szChannel, "#Cstrike_Chat_All"))
{
format(szChannel, charsmax(szChannel), "^4[%i] ^3%%s1 ^1: %%s2",get_user_frags(id))
}
else
{
format(szChannel, charsmax(szChannel), "^4[%i] ^3%s", get_user_frags(id), szChannel)
}
set_msg_arg_string(2, szChannel)
}
}  
    
public plugin_end()
{
    nvault_close(g_iVault)
    
}

Аватар
OciXCrom
Извън линия
Администратор
Администратор
Мнения: 7205
Регистриран на: 06 Окт 2016, 19:20
Местоположение: /resetscore
Се отблагодари: 117 пъти
Получена благодарност: 1278 пъти
Обратна връзка:

Взимане на убийства от nvault

Мнение от OciXCrom » 16 Май 2022, 20:42

А да тестваш с хора?...

Аватар
SmirnoffBG
Извън линия
Потребител
Потребител
Мнения: 246
Регистриран на: 27 Ное 2016, 19:43
Местоположение: Англия
Се отблагодари: 61 пъти
Получена благодарност: 32 пъти
Обратна връзка:

Взимане на убийства от nvault

Мнение от SmirnoffBG » 16 Май 2022, 23:12

OciXCrom написа:
16 Май 2022, 20:42
А да тестваш с хора?...
Не би трябвало да има проблем, че килва ботове.
Иначе може да си сложиш дебъг съобщения на няколко места за да видиш дали се сетват фраговете и дали се взимат правилно.
Но според мен проблема е, че ги сетваш много рано.
Изображение
Why So Serious? Servers [ ПОКАЖИ ]

Аватар
Radeon
Извън линия
Потребител
Потребител
Мнения: 78
Регистриран на: 04 Апр 2021, 11:30
Се отблагодари: 2 пъти
Получена благодарност: 11 пъти
Обратна връзка:

Взимане на убийства от nvault

Мнение от Radeon » 17 Май 2022, 09:47

OciXCrom написа:
16 Май 2022, 20:42
А да тестваш с хора?...
Тествах го и и с хора и пак не работи. Мислех че трябва да работи и с ботове, защото тествах този плъгин на Exolent и работи с ботовете. Но при него не разбирам как той взима убиствата, мисля че в public client_death.

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

#include < amxmodx >
#include < amxmisc >
#include < csx >
#include < nvault >
#include < cstrike >

new const g_iLevelMinKills[ ] =
{
	0,
	3,
	6,
	9
};

const LEVELS = sizeof( g_iLevelMinKills );

new const g_szLevelName[ LEVELS ][ ] =
{
	"Newbie",
	"Semi-Pro",
	"Pro",
	"Veteran"
};

#define MAX_PLAYERS 32

new g_iKills[ MAX_PLAYERS + 1 ];
new g_iLevel[ MAX_PLAYERS + 1 ];

new g_hVault;

new g_iMsgID_SayText;

new g_iAdminChatFlag = ADMIN_ALL; // Do not edit this!

public plugin_init( )
{
	register_plugin( "Kills Counter", "0.0.1", "Exolent" );
	
	register_clcmd( "say", "CmdSay" );
	register_clcmd( "say_team", "CmdSayTeam" );
	
	g_hVault = nvault_open( "KillsCounter" );
	
	g_iMsgID_SayText = get_user_msgid( "SayText" );
	
	new szCommand[ 32 ], iFlags;
	for( new i = 0; get_concmd( i, szCommand, charsmax( szCommand ), iFlags, "", 0, 0, -1 ); i++ )
	{
		if( equal( szCommand, "amx_chat" ) )
		{
			g_iAdminChatFlag = iFlags;
			break;
		}
	}
}

public plugin_end( )
{
	nvault_close( g_hVault );
}

public client_authorized( iPlayer )
{
	new szSteamID[ 35 ];
	get_user_authid( iPlayer, szSteamID, charsmax( szSteamID ) );
	
	new iKills;
	if( ( iKills = nvault_get( g_hVault, szSteamID ) ) )
	{
		g_iKills[ iPlayer ] = iKills;
		g_iLevel[ iPlayer ] = GetLevel( iKills );
	}
}

public client_disconnected( iPlayer )
{
	new szSteamID[ 35 ];
	get_user_authid( iPlayer, szSteamID, charsmax( szSteamID ) );
	
	new szKills[ 16 ];
	num_to_str( g_iKills[ iPlayer ], szKills, charsmax( szKills ) );
	
	nvault_set( g_hVault, szSteamID, szKills );
	
	g_iKills[ iPlayer ] = g_iLevel[ iPlayer ] = 0;
}

public client_death( iKiller, iVictim, iWeapon, iHitPlace, bTK )
{
	if( !bTK && iKiller != iVictim && iWeapon != CSW_C4 )
	{
		g_iLevel[ iKiller ] = GetLevel( ++g_iKills[ iKiller ] );
	}
}

public CmdSay( iPlayer )
{
	if( !is_user_connected( iPlayer ) )
	{
		return PLUGIN_HANDLED_MAIN;
	}
	
	new szArgs[ 194 ];
	
	if( !IsValidMessage( iPlayer, false, szArgs, charsmax( szArgs ) ) )
	{
		return PLUGIN_HANDLED_MAIN;
	}
	
	new iAlive = is_user_alive( iPlayer );
	new CsTeams:iTeam = cs_get_user_team( iPlayer );
	
	new iPlayers[ 32 ], iNum;
	get_players( iPlayers, iNum );
	
	new szName[ 32 ];
	get_user_name( iPlayer, szName, charsmax( szName ) );
	
	new const szPrefixes[ 2 ][ CsTeams ][ ] =
	{
		{
			"^1*DEAD*",
			"^1*DEAD*",
			"^1*DEAD*",
			"^1*SPEC*"
		},
		{
			"",
			"",
			"",
			""
		}
	};
	
	new szMessage[ 192 ];
	formatex( szMessage, charsmax( szMessage ), "%s^4 [%s]^3 %s^1 :  %s", szPrefixes[ iAlive ][ iTeam ], g_szLevelName[ g_iLevel[ iPlayer ] ], szName, szArgs );
	
	new iTarget;
	for( new i = 0; i < iNum; i++ )
	{
		iTarget = iPlayers[ i ];
		
		if( iTarget == iPlayer || ( iAlive || is_user_connected( iTarget ) ) && is_user_alive( iTarget ) == iAlive )
		{
			message_begin( MSG_ONE_UNRELIABLE, g_iMsgID_SayText, _, iTarget );
			write_byte( iPlayer );
			write_string( szMessage );
			message_end( );
		}
	}
	
	return PLUGIN_HANDLED_MAIN;
}

public CmdSayTeam( iPlayer )
{
	if( !is_user_connected( iPlayer ) )
	{
		return PLUGIN_HANDLED_MAIN;
	}
	
	new szArgs[ 194 ];
	
	if( !IsValidMessage( iPlayer, true, szArgs, charsmax( szArgs ) ) )
	{
		return PLUGIN_HANDLED_MAIN;
	}
	
	new iAlive = is_user_alive( iPlayer );
	new CsTeams:iTeam = cs_get_user_team( iPlayer );
	
	new iPlayers[ 32 ], iNum;
	get_players( iPlayers, iNum );
	
	new szName[ 32 ];
	get_user_name( iPlayer, szName, charsmax( szName ) );
	
	new const szPrefixes[ 2 ][ CsTeams ][ ] =
	{
		{
			"(Spectator)",
			"*DEAD*(Terrorist)",
			"*DEAD*(Counter-Terrorist)",
			"(Spectator)"
		},
		{
			"(Spectator)",
			"(Terrorist)",
			"(Counter-Terrorist)",
			"(Spectator)"
		}
	};
	
	new szMessage[ 192 ];
	formatex( szMessage, charsmax( szMessage ), "^1%s^4 [%s]^3 %s^1 :  %s", szPrefixes[ iAlive ][ iTeam ], g_szLevelName[ g_iLevel[ iPlayer ] ], szName, szArgs );
	
	for( new i = 0, iTeammate; i < iNum; i++ )
	{
		iTeammate = iPlayers[ i ];
		
		if( iTeammate == iPlayer || ( iAlive || is_user_connected( iTeammate ) ) && is_user_alive( iTeammate ) == iAlive && cs_get_user_team( iTeammate ) == iTeam )
		{
			message_begin( MSG_ONE_UNRELIABLE, g_iMsgID_SayText, _, iTeammate );
			write_byte( iPlayer );
			write_string( szMessage );
			message_end( );
		}
	}
	
	return PLUGIN_HANDLED_MAIN;
}

bool:IsValidMessage( iPlayer, bool:bTeamSay, szMessage[ ], iLen )
{
	read_args( szMessage, iLen );
	remove_quotes( szMessage );
	
	new iPos, cChar, i;
	while( ( cChar = szMessage[ iPos++ ] ) == '@' )
	{
		i++;
	}
	
	if( ( bTeamSay ? ( i == 1 ) : ( 1 <= i <= 3 ) ) && !access( iPlayer, g_iAdminChatFlag ) )
	{
		return false;
	}
	
	while( 0 <= ( cChar = szMessage[ iPos++ ] ) <= 255 )
	{
		if( cChar != ' ' && cChar != '%' )
		{
			return true;
		}
	}
	
	return false;
}

GetLevel( iKills )
{
	for( new i = LEVELS - 1; i >= 0; i-- )
	{
		if( iKills >= g_iLevelMinKills[ i ] )
		{
			return i;
		}
	}
	
	return 0;
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/

Аватар
Radeon
Извън линия
Потребител
Потребител
Мнения: 78
Регистриран на: 04 Апр 2021, 11:30
Се отблагодари: 2 пъти
Получена благодарност: 11 пъти
Обратна връзка:

Взимане на убийства от nvault

Мнение от Radeon » 18 Май 2022, 14:05

Вече запазва убийствата завинаги и ги показва в префикса. Има само един недостатък, че когато влезнеш докато не направиш убийство пак показва 0 в префикса. След като направиш убийство показва реалния брой.

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

#include <amxmodx>
#include <amxmisc>
#include <nvault>  
#include <fun>   
#include <cstrike>  
#define PLUGIN "Kills_in_Prefix"
#define VERSION "1.0"
#define AUTHOR "3"
#define MAX_PLAYERS 32

new g_iKills[ MAX_PLAYERS + 1 ];
new g_iLevel[ MAX_PLAYERS + 1 ];

new g_iVault
new g_iMsgID_SayText;

new g_iAdminChatFlag = ADMIN_ALL; // Do not edit this!

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd( "say", "CmdSay" );
	register_clcmd( "say_team", "CmdSayTeam" );
	g_iVault = nvault_open("PrefixKills");
	if ( g_iVault == INVALID_HANDLE )
	set_fail_state( "Error opening nVault" ); 
	g_iMsgID_SayText = get_user_msgid( "SayText" );
	new szCommand[ 32 ], iFlags;
	for( new i = 0; get_concmd( i, szCommand, charsmax( szCommand ), iFlags, "", 0, 0, -1 ); i++ )
	{
		if( equal( szCommand, "amx_chat" ) )
		{
			g_iAdminChatFlag = iFlags;
			break;
		}
	}
}

public plugin_end()
{
    nvault_close(g_iVault)
    
}

public client_putinserver(iPlayer)
{
    new szName[32];
    get_user_name(iPlayer, szName, charsmax(szName));
    new iKills;
    if(   (iKills = nvault_get(g_iVault, szName) ) )
	 {
	 g_iKills[ iPlayer ] = iKills;
}
}

public client_disconnected(iPlayer)
{ 
    new szName[32];
    get_user_name(iPlayer, szName, charsmax(szName));
    new szKills[ 16 ];
    num_to_str( g_iKills[ iPlayer ], szKills, charsmax( szKills ) );
    nvault_set(g_iVault, szName, szKills);
    g_iKills[ iPlayer ] = g_iLevel[ iPlayer ] = 0;
}

public client_death( iKiller, iVictim, iWeapon, iHitPlace, bTK )
{
	if( !bTK && iKiller != iVictim && iWeapon != CSW_C4 )
	{
		g_iLevel[ iKiller ] = ( ++g_iKills[ iKiller ] );
	}
}
    
public CmdSay( iPlayer )
{
	if( !is_user_connected( iPlayer ) )
	{
		return PLUGIN_HANDLED_MAIN;
	}
	
	new szArgs[ 194 ];
	
	if( !IsValidMessage( iPlayer, false, szArgs, charsmax( szArgs ) ) )
	{
		return PLUGIN_HANDLED_MAIN;
	}
	
	new iAlive = is_user_alive( iPlayer );
	new CsTeams:iTeam = cs_get_user_team( iPlayer );
	
	new iPlayers[ 32 ], iNum;
	get_players( iPlayers, iNum );
	
	new szName[ 32 ];
	get_user_name( iPlayer, szName, charsmax( szName ) );
	
	new const szPrefixes[ 2 ][ CsTeams ][ ] =
	{
		{
			"^1*DEAD*",
			"^1*DEAD*",
			"^1*DEAD*",
			"^1*SPEC*"
		},
		{
			"",
			"",
			"",
			""
		}
	};
	
	new szMessage[ 192 ];
	formatex( szMessage, charsmax( szMessage ), "%s^4 [Kills:%i]^3 %s^1 :  %s", szPrefixes[ iAlive ][ iTeam ],  g_iLevel[ iPlayer ] , szName, szArgs );
	
	new iTarget;
	for( new i = 0; i < iNum; i++ )
	{
		iTarget = iPlayers[ i ];
		
		if( iTarget == iPlayer || ( iAlive || is_user_connected( iTarget ) ) && is_user_alive( iTarget ) == iAlive )
		{
			message_begin( MSG_ONE_UNRELIABLE, g_iMsgID_SayText, _, iTarget );
			write_byte( iPlayer );
			write_string( szMessage );
			message_end( );
		}
	}
	
	return PLUGIN_HANDLED_MAIN;
}

public CmdSayTeam( iPlayer )
{
	if( !is_user_connected( iPlayer ) )
	{
		return PLUGIN_HANDLED_MAIN;
	}
	
	new szArgs[ 194 ];
	
	if( !IsValidMessage( iPlayer, true, szArgs, charsmax( szArgs ) ) )
	{
		return PLUGIN_HANDLED_MAIN;
	}
	
	new iAlive = is_user_alive( iPlayer );
	new CsTeams:iTeam = cs_get_user_team( iPlayer );
	
	new iPlayers[ 32 ], iNum;
	get_players( iPlayers, iNum );
	
	new szName[ 32 ];
	get_user_name( iPlayer, szName, charsmax( szName ) );
	
	new const szPrefixes[ 2 ][ CsTeams ][ ] =
	{
		{
			"(Spectator)",
			"*DEAD*(Terrorist)",
			"*DEAD*(Counter-Terrorist)",
			"(Spectator)"
		},
		{
			"(Spectator)",
			"(Terrorist)",
			"(Counter-Terrorist)",
			"(Spectator)"
		}
	};
	
	new szMessage[ 192 ];
	formatex( szMessage, charsmax( szMessage ), "^1%s^4 [Kills:%i]^3 %s^1 :  %s", szPrefixes[ iAlive ][ iTeam ], g_iLevel[ iPlayer ], szName, szArgs );
	
	for( new i = 0, iTeammate; i < iNum; i++ )
	{
		iTeammate = iPlayers[ i ];
		
		if( iTeammate == iPlayer || ( iAlive || is_user_connected( iTeammate ) ) && is_user_alive( iTeammate ) == iAlive && cs_get_user_team( iTeammate ) == iTeam )
		{
			message_begin( MSG_ONE_UNRELIABLE, g_iMsgID_SayText, _, iTeammate );
			write_byte( iPlayer );
			write_string( szMessage );
			message_end( );
		}
	}
	
	return PLUGIN_HANDLED_MAIN;
}

bool:IsValidMessage( iPlayer, bool:bTeamSay, szMessage[ ], iLen )
{
	read_args( szMessage, iLen );
	remove_quotes( szMessage );
	
	new iPos, cChar, i;
	while( ( cChar = szMessage[ iPos++ ] ) == '@' )
	{
		i++;
	}
	
	if( ( bTeamSay ? ( i == 1 ) : ( 1 <= i <= 3 ) ) && !access( iPlayer, g_iAdminChatFlag ) )
	{
		return false;
	}
	
	while( 0 <= ( cChar = szMessage[ iPos++ ] ) <= 255 )
	{
		if( cChar != ' ' && cChar != '%' )
		{
			return true;
		}
	}
	
	return false;
}


    

Аватар
SmirnoffBG
Извън линия
Потребител
Потребител
Мнения: 246
Регистриран на: 27 Ное 2016, 19:43
Местоположение: Англия
Се отблагодари: 61 пъти
Получена благодарност: 32 пъти
Обратна връзка:

Взимане на убийства от nvault

Мнение от SmirnoffBG » 18 Май 2022, 16:04

SmirnoffBG написа:
16 Май 2022, 23:12
Но според мен проблема е, че ги сетваш много рано.
Изображение
Why So Serious? Servers [ ПОКАЖИ ]

Аватар
Radeon
Извън линия
Потребител
Потребител
Мнения: 78
Регистриран на: 04 Апр 2021, 11:30
Се отблагодари: 2 пъти
Получена благодарност: 11 пъти
Обратна връзка:

Взимане на убийства от nvault

Мнение от Radeon » 18 Май 2022, 16:49

SmirnoffBG написа:
18 Май 2022, 16:04
SmirnoffBG написа:
16 Май 2022, 23:12
Но според мен проблема е, че ги сетваш много рано.
Е как ще ги сетвам много рано. Единствено се сетват когато играча излиза от сървъра, само тогава ги запазва в nvault.

Аватар
SmirnoffBG
Извън линия
Потребител
Потребител
Мнения: 246
Регистриран на: 27 Ное 2016, 19:43
Местоположение: Англия
Се отблагодари: 61 пъти
Получена благодарност: 32 пъти
Обратна връзка:

Взимане на убийства от nvault

Мнение от SmirnoffBG » 19 Май 2022, 03:46

сетването е когато ги вадиш от nvault и ги прилагаш към човека, може тогава още да не е "влязал" достатъчно за да му сетваш фрагове
изнамери някви други евенти дето са по късно и ползвай тях
Изображение
Why So Serious? Servers [ ПОКАЖИ ]

Аватар
Radeon
Извън линия
Потребител
Потребител
Мнения: 78
Регистриран на: 04 Апр 2021, 11:30
Се отблагодари: 2 пъти
Получена благодарност: 11 пъти
Обратна връзка:

Взимане на убийства от nvault

Мнение от Radeon » 19 Май 2022, 10:22

SmirnoffBG написа:
19 Май 2022, 03:46
сетването е когато ги вадиш от nvault и ги прилагаш към човека, може тогава още да не е "влязал" достатъчно за да му сетваш фрагове
изнамери някви други евенти дето са по късно и ползвай тях
Благодаря за съветите. Направих го плъгина да работи точно както искам. Оставям и кода ако на някой му потрябва някога plugin Kills in prefix (Показва броя на убийствата в префикс пред името, като запазва убийствата завинаги.)

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

#include <amxmodx>
#include <amxmisc>
#include <nvault>  
#include <cstrike>  
#define PLUGIN "Kills_in_Prefix"
#define VERSION "1.0"
#define AUTHOR "Exolent_redakciq_Radeon"
#define MAX_PLAYERS 32

new g_iKills[ MAX_PLAYERS + 1 ];
new g_iLevel[ MAX_PLAYERS + 1 ];

new g_iVault
new g_iMsgID_SayText;

new g_iAdminChatFlag = ADMIN_ALL; // Do not edit this!

public plugin_init() {
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd( "say", "CmdSay" );
	register_clcmd( "say_team", "CmdSayTeam" );
	g_iVault = nvault_open("PrefixKills");
	if ( g_iVault == INVALID_HANDLE )
	set_fail_state( "Error opening nVault" ); 
	g_iMsgID_SayText = get_user_msgid( "SayText" );
	new szCommand[ 32 ], iFlags;
	for( new i = 0; get_concmd( i, szCommand, charsmax( szCommand ), iFlags, "", 0, 0, -1 ); i++ )
	{
		if( equal( szCommand, "amx_chat" ) )
		{
			g_iAdminChatFlag = iFlags;
			break;
		}
	}
}

public plugin_end()
{
    nvault_close(g_iVault)
    
}

public client_putinserver(iPlayer)
{
    new szName[32];
    get_user_name(iPlayer, szName, charsmax(szName));
    new iKills;
    if(   (iKills = nvault_get(g_iVault, szName) ) )
	 {
	 g_iKills[ iPlayer ] = iKills;
}
}

public client_disconnected(iPlayer)
{ 
    new szName[32];
    get_user_name(iPlayer, szName, charsmax(szName));
    new szKills[ 16 ];
    num_to_str( g_iKills[ iPlayer ], szKills, charsmax( szKills ) );
    nvault_set(g_iVault, szName, szKills);
    g_iKills[ iPlayer ] = g_iLevel[ iPlayer ] ;
}

public client_death( iKiller, iVictim, iWeapon, iHitPlace, bTK )
{
	if( !bTK && iKiller != iVictim && iWeapon != CSW_C4 )
	{
		g_iLevel[ iKiller ] = ( ++g_iKills[ iKiller ] );
	}
}
    
public CmdSay( iPlayer )
{
	if( !is_user_connected( iPlayer ) )
	{
		return PLUGIN_HANDLED_MAIN;
	}
	
	new szArgs[ 194 ];
	
	if( !IsValidMessage( iPlayer, false, szArgs, charsmax( szArgs ) ) )
	{
		return PLUGIN_HANDLED_MAIN;
	}
	
	new iAlive = is_user_alive( iPlayer );
	new CsTeams:iTeam = cs_get_user_team( iPlayer );
	
	new iPlayers[ 32 ], iNum;
	get_players( iPlayers, iNum );
	
	new szName[ 32 ];
	get_user_name( iPlayer, szName, charsmax( szName ) );
	
	new const szPrefixes[ 2 ][ CsTeams ][ ] =
	{
		{
			"^1*DEAD*",
			"^1*DEAD*",
			"^1*DEAD*",
			"^1*SPEC*"
		},
		{
			"",
			"",
			"",
			""
		}
	};
	
	new szMessage[ 192 ];
	formatex( szMessage, charsmax( szMessage ), "%s^4 [Kills:%i]^3 %s^1 :  %s", szPrefixes[ iAlive ][ iTeam ],  g_iLevel[ iPlayer ] , szName, szArgs );
	
	new iTarget;
	for( new i = 0; i < iNum; i++ )
	{
		iTarget = iPlayers[ i ];
		
		if( iTarget == iPlayer || ( iAlive || is_user_connected( iTarget ) ) && is_user_alive( iTarget ) == iAlive )
		{
			message_begin( MSG_ONE_UNRELIABLE, g_iMsgID_SayText, _, iTarget );
			write_byte( iPlayer );
			write_string( szMessage );
			message_end( );
		}
	}
	
	return PLUGIN_HANDLED_MAIN;
}

public CmdSayTeam( iPlayer )
{
	if( !is_user_connected( iPlayer ) )
	{
		return PLUGIN_HANDLED_MAIN;
	}
	
	new szArgs[ 194 ];
	
	if( !IsValidMessage( iPlayer, true, szArgs, charsmax( szArgs ) ) )
	{
		return PLUGIN_HANDLED_MAIN;
	}
	
	new iAlive = is_user_alive( iPlayer );
	new CsTeams:iTeam = cs_get_user_team( iPlayer );
	
	new iPlayers[ 32 ], iNum;
	get_players( iPlayers, iNum );
	
	new szName[ 32 ];
	get_user_name( iPlayer, szName, charsmax( szName ) );
	
	new const szPrefixes[ 2 ][ CsTeams ][ ] =
	{
		{
			"(Spectator)",
			"*DEAD*(Terrorist)",
			"*DEAD*(Counter-Terrorist)",
			"(Spectator)"
		},
		{
			"(Spectator)",
			"(Terrorist)",
			"(Counter-Terrorist)",
			"(Spectator)"
		}
	};
	
	new szMessage[ 192 ];
	formatex( szMessage, charsmax( szMessage ), "^1%s^4 [Kills:%i]^3 %s^1 :  %s", szPrefixes[ iAlive ][ iTeam ], g_iLevel[ iPlayer ], szName, szArgs );
	
	for( new i = 0, iTeammate; i < iNum; i++ )
	{
		iTeammate = iPlayers[ i ];
		
		if( iTeammate == iPlayer || ( iAlive || is_user_connected( iTeammate ) ) && is_user_alive( iTeammate ) == iAlive && cs_get_user_team( iTeammate ) == iTeam )
		{
			message_begin( MSG_ONE_UNRELIABLE, g_iMsgID_SayText, _, iTeammate );
			write_byte( iPlayer );
			write_string( szMessage );
			message_end( );
		}
	}
	
	return PLUGIN_HANDLED_MAIN;
}

bool:IsValidMessage( iPlayer, bool:bTeamSay, szMessage[ ], iLen )
{
	read_args( szMessage, iLen );
	remove_quotes( szMessage );
	
	new iPos, cChar, i;
	while( ( cChar = szMessage[ iPos++ ] ) == '@' )
	{
		i++;
	}
	
	if( ( bTeamSay ? ( i == 1 ) : ( 1 <= i <= 3 ) ) && !access( iPlayer, g_iAdminChatFlag ) )
	{
		return false;
	}
	
	while( 0 <= ( cChar = szMessage[ iPos++ ] ) <= 255 )
	{
		if( cChar != ' ' && cChar != '%' )
		{
			return true;
		}
	}
	
	return false;
}


    

Аватар
SmirnoffBG
Извън линия
Потребител
Потребител
Мнения: 246
Регистриран на: 27 Ное 2016, 19:43
Местоположение: Англия
Се отблагодари: 61 пъти
Получена благодарност: 32 пъти
Обратна връзка:

Взимане на убийства от nvault

Мнение от SmirnoffBG » 19 Май 2022, 15:06

Съветвам те да го пуснеш в собствена тема.
Да я напишеш като хората и да стане като официален едит от теб :Д та хората да могат да го намерят в сектора плъгини.
Дори и неодобрени ако трябва, няма значение.
Изображение
Why So Serious? Servers [ ПОКАЖИ ]

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

Обратно към “Помощ в скриптирането”

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 гост