PHP Code:
#include <amxmodx>
#include <adv_vault>
#include <cromchat>
#define PLUGIN "Top Knife Stats"
#define VERSION "1.0"
#define AUTHOR "Jacare de Sunga"
#if defined client_disconnected
#define client_disconnect client_disconnected
#endif
new g_knife[ 33 ]
new g_vault
new g_sort
new g_playername[ 33 ][ 32 ]
new motd[ 8000 ]
new g_maxplayers
enum {
KNIFE,
MAX_FIELDS
}
new g_campos[MAX_FIELDS]
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_event( "DeathMsg", "Hook_Deathmessage", "a" );
register_event("HLTV", "round_start", "a", "1=0", "2=0")
register_clcmd("say /kniferank", "ranking")
register_clcmd("say /knifetop", "top10_knife")
g_vault = adv_vault_open("topknife", false)
g_campos[KNIFE] = adv_vault_register_field(g_vault, "Knife")
adv_vault_init(g_vault)
g_sort = adv_vault_sort_create( g_vault, ORDER_DESC, 0, 2000, g_campos[ KNIFE ] )
g_maxplayers = get_maxplayers()
CC_SetPrefix("&x04[&x03Knife Stats&x04]")
}
public Hook_Deathmessage()
{
new killer = read_data( 1 );
new victim = read_data( 2 );
new weapon = get_user_weapon( killer )
if( killer == victim )
{
return PLUGIN_HANDLED;
}
if ( weapon == CSW_KNIFE )
g_knife[ killer ]++
return PLUGIN_CONTINUE
}
public client_putinserver( id )
{
get_user_name(id, g_playername[id], 31 );
g_knife[ id ] = 0
set_task( 15.0, "advert", id)
LoadData( id )
}
public client_disconnect( id )
{
SaveData( id )
}
public advert( id )
{
CC_SendMessage( id, "^x01Type ^x04/kniferank ^x01to see your ^x03Knife Rank!n." )
CC_SendMessage( id, "^x01Type ^x04/knifetop ^x01to see your ^x03Knife TOP10!n." )
}
public ranking( id )
{
new rank = adv_vault_sort_key(g_vault, g_sort, 0, g_playername[ id ] )
if( !rank )
{
CC_SendMessage(id, "^x01You are not in the rank yet.")
}
else CC_SendMessage(id, "^x01Your knife rank is ^x04%d", rank)
}
public round_start()
{
for(new id=1; id <= g_maxplayers; id++)
{
if( is_user_connected( id ) )
SaveData( id )
}
adv_vault_sort_update(g_vault, g_sort)
}
public top10_knife( id )
{
new knife11, keyindex, pj[ 32 ], g_sort
static len
len = 0
new toploop = min( adv_vault_sort_numresult( g_vault, g_sort ), 10 )
len += formatex(motd[len], sizeof motd-len,
"<body bgcolor=#A4BED6>\
<table width=100%% cellpadding=2 cellspacing=0 border=0>\
<tr align=center bgcolor=#52697B>\
<th width=20%%>Position\
<th width=20%% align=left>Name\
<th width=20%%>Kills");
for( new position=1; position <= toploop; position++ )
{
keyindex = adv_vault_sort_position( g_vault, g_sort, position )
if( !adv_vault_get_prepare( g_vault, keyindex ) ) continue
knife11 = adv_vault_get_field( g_vault, g_campos[ KNIFE ] )
adv_vault_get_keyname( g_vault, keyindex, pj, 31 )
len += formatex(motd[len], sizeof motd-len, "<tr align=center>");
len += formatex(motd[len], sizeof motd-len, "<td>%d", position);
len += formatex(motd[len], sizeof motd-len, "<td align=left>%s", pj);
len += formatex(motd[len], sizeof motd-len, "<td>%d", knife11);
}
len += formatex(motd[len], sizeof motd-len, "</table></body>");
show_motd( id, motd, "TOP KNIFE STATS");
}
public client_infochanged( id )
{
if( !is_user_connected( id ) ) return
static newname[ 32 ]
get_user_info( id, "name", newname, charsmax( newname ) )
if( !equal(newname, g_playername[ id ] ) )
{
set_task( 0.1, "LoadData", id )
}
}
public SaveData( id )
{
if(!is_user_connected( id ) ) return;
adv_vault_set_start( g_vault )
adv_vault_set_field( g_vault, g_campos[ KNIFE ], g_knife[ id ] )
adv_vault_set_end( g_vault, 0, g_playername[ id ] )
}
public LoadData( id )
{
if(!adv_vault_get_prepare(g_vault, _, g_playername[ id ] ) )
return;
g_knife[ id ] = adv_vault_get_field( g_vault, g_campos[ KNIFE ] )
}