CastaNa1337
18-03-2018, 06:25 PM
Plugin: puncte123
Descriere: atunci cand fac 1 kill sa imi apara mie in chat (sau jucatorului care omoara alt jucator) Ai primit 1 punct ca l-ai omorat pe X-ulescu spre exemplu
Versiune: nu conteaza
Autor:
Flaguri:
Tiger
18-03-2018, 09:36 PM
Ti l-am modificat dupa: <b>You have to register to ba able to see this link</b>
Este Steam-only.
#include < amxmodx >
#include < fvault >
enum _:RankData
{
Rank_Kills,
Rank_Name[ 32 ],
Rank_SteamID[ 35 ]
};
new const g_szVaultName[ ] = "amxx_stats";
new pCvar_Top;
new pCvar_KillPoints;
public plugin_init( )
{
register_plugin( "AMXX Stats", "0.0.1", "Exolent" );
register_srvcmd( "amxstats_reset", "CmdReset" );
register_clcmd( "say /rank", "CmdRank" );
register_clcmd( "say /top", "CmdTop" );
register_clcmd( "say /top10", "CmdTop" );
register_clcmd( "say /top15", "CmdTop" );
register_event( "DeathMsg", "EventDeathMsg", "a" );
pCvar_Top = register_cvar( "amxstats_top", "10" );
pCvar_KillPoints = register_cvar( "amxstats_per_kill_points", "1" );
}
public CmdReset( )
{
fvault_clear( g_szVaultName );
server_print( " Stats have been reset." );
log_amx( " Stats have been reset." );
return PLUGIN_HANDLED;
}
public CmdRank( iPlayer )
{
new Array:aRankData;
new iTotal = GetPlayerRanks( aRankData );
new iRank;
new eRankData[ RankData ];
if( iTotal )
{
new szPlayerSteamID[ 35 ];
get_user_authid( iPlayer, szPlayerSteamID, charsmax( szPlayerSteamID ) );
for( new i = 0; i < iTotal; i++ )
{
ArrayGetArray( aRankData, i, eRankData );
if( equal( szPlayerSteamID, eRankData[ Rank_SteamID ] ) )
{
iRank = i + 1;
break;
}
}
}
if( iRank )
{
client_print( iPlayer, print_chat, "* Esti pe %i din %i cu %i punct%s!", iRank, iTotal, eRankData[ Rank_Kills ], ( eRankData[ Rank_Kills ] == 1 ) ? "" : "e" );
}
else
{
client_print( iPlayer, print_chat, "* Nu ai inca rank pentru ca nu ai omorat pe nimeni!" );
}
ArrayDestroy( aRankData );
}
public CmdTop( iPlayer )
{
new Array:aRankData;
new iTotal = max( 0, min( GetPlayerRanks( aRankData ), get_pcvar_num( pCvar_Top ) ) );
if( iTotal )
{
static szMOTD[ 2500 ], iDefaultLen;
if( !iDefaultLen )
{
iDefaultLen = copy( szMOTD, charsmax( szMOTD ), "<body><table align=center border=1><thead><tr><th>#.</th><th>Nume</th><th>Points</th></tr></thead><tbody>" );
}
new iLen = iDefaultLen;
new eRankData[ RankData ];
new szFixedName[ 128 ];
for( new i = 0; i < iTotal; i++ )
{
ArrayGetArray( aRankData, i, eRankData );
copy( szFixedName, charsmax( szFixedName ), eRankData[ Rank_Name ] );
MakeNameMOTDSafe( szFixedName, 31 );
iLen += formatex( szMOTD[ iLen ], charsmax( szMOTD ) - iLen, "<tr><td>%i</td><td>%s</td><td>%i</td></tr>", ( i + 1 ), szFixedName, eRankData[ Rank_Kills ] );
}
copy( szMOTD[ iLen ], charsmax( szMOTD ) - iLen, "</tbody></table></body>" );
show_motd( iPlayer, szMOTD, "Top Players" );
}
else
{
client_print( iPlayer, print_chat, "* Nu exista jucatori in top!" );
}
ArrayDestroy( aRankData );
}
public EventDeathMsg( )
{
new iVictim = read_data( 2 );
if( is_user_connected( iVictim ) )
{
new iKiller = read_data( 1 );
if( iVictim != iKiller
&& is_user_connected( iKiller ) )
{
// killed by another player
new szName[ 32 ], szSteamID[ 35 ];
get_user_authid( iKiller, szSteamID, charsmax( szSteamID ) );
new szKills[ 48 ], iKills;
if( fvault_get_data( g_szVaultName, szSteamID, szKills, charsmax( szKills ) ) )
{
strbreak( szKills, szKills, charsmax( szKills ), szName, charsmax( szName ) );
iKills = str_to_num( szKills );
}
new points = get_pcvar_num(pCvar_KillPoints);
if( get_user_team( iVictim ) == get_user_team( iKiller ) )
{
// killed by a teammate
iKills -= points;
}
else
{
// killed by an enemy
iKills += points;
}
get_user_name( iKiller, szName ,charsmax( szName ) );
formatex( szKills, charsmax( szKills ), "%i %s", iKills, szName );
fvault_set_data( g_szVaultName, szSteamID, szKills );
get_user_name(iVictim, szName, charsmax(szName));
client_print(iKiller, print_chat, "* L-ai omorat pe %s si ai primit %i punct%s!", szName, points, ( points == 1 ) ? "" : "e" );
}
else
{
// killed self somehow
}
}
}
GetPlayerRanks( &Array:aRankData )
{
aRankData = ArrayCreate( RankData );
new iTotal;
new eRankData[ RankData ];
new szFileName[ 128 ];
_FormatVaultName( g_szVaultName, szFileName, charsmax( szFileName ) );
new iFile = fopen( szFileName, "rt" );
if( !iFile )
{
return iTotal;
}
new szFileData[ 128 ];
new szKills[ 48 ];
while( !feof( iFile ) )
{
fgets( iFile, szFileData, charsmax( szFileData ) );
trim( szFileData );
if( !szFileData[ 0 ] )
{
continue;
}
parse( szFileData, eRankData[ Rank_SteamID ], charsmax( eRankData[ Rank_SteamID ] ), szKills, charsmax( szKills ) );
strbreak( szKills, szKills, charsmax( szKills ), eRankData[ Rank_Name ], charsmax( eRankData[ Rank_Name ] ) );
eRankData[ Rank_Kills ] = str_to_num( szKills );
ArrayPushArray( aRankData, eRankData );
iTotal++;
}
fclose( iFile );
ArraySort( aRankData, "SortData" );
return iTotal;
}
public SortData( Array:aData, iIndex1, iIndex2, const iSortData[ ], iSortDataSize )
{
new eData1[ RankData ], eData2[ RankData ];
ArrayGetArray( aData, iIndex1, eData1 );
ArrayGetArray( aData, iIndex2, eData2 );
return clamp( ( eData2[ Rank_Kills ] - eData1[ Rank_Kills ] ), -1, 1 );
}
stock MakeNameMOTDSafe( szName[ 128 ], iMaxChars )
{
szName[ 32 ] = 0;
replace_all( szName, 127, "&", "&" );
replace_all( szName, 127, "<", "<" );
replace_all( szName, 127, ">", ">" );
replace_all( szName, 127, "^"", """ );
if( iMaxChars > 128 ) return;
new iLast;
for( new i = 0; i < 128 && szName[ i ]; )
{
if( szName[ i ] == '&' )
{
if( equal( szName[ i ], "&", 5 ) )
{
i += 4;
}
else if( equal( szName[ i ], """, 6 ) )
{
i += 5;
}
else if( equal( szName[ i ], "<", 4 ) || equal( szName[ i ], ">", 4 ) )
{
i += 3;
}
}
if( ++i > iMaxChars )
{
break;
}
iLast = i;
}
szName[ iLast ] = 0;
}
CastaNa1337
24-03-2018, 12:01 PM
Mersi f f mult ai putea sa l faci te rog frumos steam/non steam?
+ EDIT: nu functioneaza plugin-ul cand omor pe cineva nu ma anunta in chat : L ai omorat pe x ulescu ai primit 1 punct..
Powered by WarGods Community™ 2006-2014 ©. All rights reserved.