Re: Change saved by name to SteamID
Try this
PHP Code:
/*<!------ [ Enumeradores ] ------!>*/ enum _:DATA { HeadShots, Frags, Deaths, Damages, Hits, BP, BD, Knifes };
enum _:ADV_DATA { Cargar = 0, Guardar }; /*<!------ [ Defines ] ------!>*/ #define is_player_valid(%1) ( (1<=get_user_team(%1)<=2) && is_user_connected(%1) && !is_user_hltv(%1) && !is_user_bot(%1) ) #define MAX_AVATAR_LENGHT 200 /*<!------ [ Librerias ] ------!>*/ #include <amxmodx> #include <amxmisc> #include <adv_vault> #include <csx> #include <steamdata> /*<!------ [ Variables ] ------!>*/ new g_Plugin[ ][ ]= { "AMXX-CsTop5", "1.0", "Alejandro-." }
new g_DataBase[ ] = "AMXX-Top5"; new g_Tag[ ] = "^4[AMXX]^1";
new gz_DefaultAvatar[ ] = "https://i.ibb.co/HB7q1P9/profile.png"; new gz_bgCsStats[ ] = "https://imgfz.com/i/zh69Gtp.jpeg"; new gz_bgCsTop[ ] = "https://fotos.subefotos.com/711db44d9b7cbeaf0bc417b8b15dc688o.jpg";
new g_PlayerData[ MAX_PLAYERS + 1 ][ _:DATA ], g_authid[ MAX_PLAYERS + 1 ][ 35], g_PlayerName[ MAX_PLAYERS + 1 ][ MAX_NAME_LENGTH ] , g_PlayerAvatar[ MAX_PLAYERS + 1 ][ MAX_AVATAR_LENGHT ], g_PlayerOldConexion[ MAX_PLAYERS + 1 ][ 30 ];
new iMaxPlayers;
new g_vault, g_sort;
new g_Campos[ _:DATA ];
new g_CampoName , g_CampoAvatar, g_CampoOldConexion; /*<!------ [ Plugin init ] ------!>*/ public plugin_init( ) { register_plugin(g_Plugin[ 0 ], g_Plugin[ 1 ], g_Plugin[ 2 ] ); /* COMANDOS */ register_clcmd("say /top5", "DisplayTop"); register_clcmd("say top5", "DisplayTop"); register_clcmd("say_team /top5", "DisplayTop"); register_clcmd("say_team top5", "DisplayTop"); register_concmd("amx_avatar", "cmd_avatar", _, "[URL AVATAR 640x640]"); register_concmd("say", "hooksay"); register_concmd("say_team", "hooksay"); /* EVENTOS */ register_event("DeathMsg", "Event_Death", "a"); register_event("Damage", "Event_Dmg", "b");
g_vault = adv_vault_open( g_DataBase, false); iMaxPlayers = get_maxplayers(); /* ADV_VAULT */ static i; for( i = 0; i <sizeof( g_PlayerData[ ] ); i++ ) { g_Campos[ i ] = adv_vault_register_field(g_vault, fmt( "PLAYERDATA-#%d", i ) ); } g_CampoName = adv_vault_register_field(g_vault, "PLAYERDATA-NAME", DATATYPE_STRING, charsmax( g_PlayerName[ ] ) ); g_CampoAvatar = adv_vault_register_field(g_vault, "PLAYERDATA-AVATAR", DATATYPE_STRING, charsmax( g_PlayerAvatar[ ] ) ); g_CampoOldConexion = adv_vault_register_field(g_vault, "PLAYERDATA-OLD", DATATYPE_STRING, charsmax( g_PlayerOldConexion[ ] ) );
adv_vault_init(g_vault); g_sort = adv_vault_sort_create(g_vault, ORDER_DESC, 0, 2000, g_Campos[ Damages ], g_Campos[ Frags ], g_Campos[ HeadShots ]); } /*<!------ [ Hook Say ] ------!>*/ public hooksay( index ) { new szMensaje[ 74 ]; read_args( szMensaje, charsmax( szMensaje ) ); remove_quotes( szMensaje );
new Cmd[ 15 ], Player[ MAX_NAME_LENGTH ]; parse( szMensaje, Cmd, charsmax( Cmd ), Player, charsmax( Player ) );
if( equal( Cmd, "stats" ) || equal( Cmd, "/stats" ) || equal( Cmd, "/estadisticas" ) || equal( Cmd, "estadisticas" ) ) { new PlayerName[ MAX_NAME_LENGTH ]; new IndexName[ MAX_NAME_LENGTH ];
if( !Player[ 0 ] ) get_user_name( index, PlayerName, charsmax( PlayerName ) ); else format( PlayerName, charsmax( PlayerName ), Player );
new iData[ sizeof( g_PlayerData[ ] ) ], szAvatar[ 150 ], szOldConexion[ 30 ], szName[ MAX_NAME_LENGTH ];
new szMotd[ 1536 ];
static iLen; iLen = 0;
if( !adv_vault_get_prepare( g_vault, _, PlayerName ) ) { client_print_color( index , print_chat, "%s El jugador al cual quieres ver las estadisticas no existe", g_Tag ); return PLUGIN_HANDLED; }
static i; for( i = 0; i <sizeof( g_PlayerData[ ] ); i++ ) { iData[ i ] = adv_vault_get_field( g_vault, g_Campos[ i ] ); }
adv_vault_get_field( g_vault, g_CampoName, szName, 33 ); adv_vault_get_field( g_vault, g_CampoAvatar, szAvatar, 199 ); adv_vault_get_field( g_vault, g_CampoOldConexion, szOldConexion, 29 );
iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "<body><style>\ body{color:#121212;background:url(^"%s^");\ display: flex;\ min-height: 100vh;\ background-position: center center;\ background-repeat: no-repeat;\ background-attachment: fixed;\ background-size: cover;\ font-family:arial,sans-serif}\ img{border-radius:110;width:40%%;}\ h1{font-size:15px;background:#F4DA06}\ h4{color:white}\ .left,.right {width:38%%;text-align:center;margin-top:4%%;padding:3%%}\ .left{float:left;margin-left:4.5%%}\ .right{float:right;margin-right:4.5%%}\ table{border:1px solid #F4DA06;font-size:10px}\ th{background: #F4DA06}\ td{border:1px solid #F4DA06;color:white}</style>", gz_bgCsStats ); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "<div class=left><h1>PERFIL</h1></br><img src=%s></br><h4>%s</h4>", szAvatar, PlayerName ); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "</div><div class=right>\ <h1>ESTADISTICAS</h1>\ </br>\ <table width=100%%>\ <tr align=center>\ <th width=25%%>Frags\ <th width=25%%>HeadShots\ <th width=20%%>BP\ <th width=30%%>Damage"); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "\ <tr align=center>\ <td>%s\ <td>%s\ <td>%s\ <td>%s", add_point( iData[ Frags ] ), add_point( iData[ HeadShots ] ), add_point( iData[ BP ] ), add_point( iData[ Damages ] ) ); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "</table><table width=100%%>\ <tr align=center>\ <th width=25%%>Muertes\ <th width=25%%>Cuchillo\ <th width=20%%>BD\ <th width=30%%>Hits"); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "\ <tr align=center>\ <td>%s\ <td>%s\ <td>%s\ <td>%s", add_point( iData[ Deaths ] ), add_point( iData[ Knifes ] ), add_point( iData[ BD ] ), add_point( iData[ Hits ] ) ); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "</table><table width=100%%>\ <tr align=center>\ <th width=25%%>Ultima vez jugando:" ); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "\ <tr align=center>\ <td>%s</table>", szOldConexion ); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "</br>" ); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "</body>" );
if( !equal( Player, IndexName ) ) client_print_color( 0, print_team_default, "%s El jugador: ^4%s^1 esta viendo las estadisticas de: ^3%s", g_Tag, IndexName, PlayerName ) show_motd( index, szMotd, fmt( "AMXX-STATS | %s", PlayerName ) ); return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; } /*<!------ [ Csx Bomb Planted ] ------!>*/ public bomb_planted( index ) { if( !is_user_connected( index ) ) return;
g_PlayerData[ index ][BP]++; adv_data( index, Guardar ); } /*<!------ [ Csx Bomb Defused ] ------!>*/ public bomb_defused( index ) { if( !is_user_connected( index ) ) return;
g_PlayerData[ index ][ BD ]++; adv_data( index, Guardar ); } /*<!------ [ Comand avatar ] ------!>*/ public cmd_avatar( index, level, cid ) { if( !cmd_access( index, level, cid, 2) ) return PLUGIN_HANDLED;
new arg[ 150 ]; read_argv( 1, arg, charsmax( arg ) ); if( !contain( arg, "https://" ) && !contain( arg, "http://" ) && !contain( arg, "www." ) ) { client_print( index, print_console, "[ AMXX ] Debe ser un archivo subido a la web.") return PLUGIN_HANDLED; }
if( strlen( arg ) > 100 ) { client_print( index, print_console, "[ AMXX ] No puede ser un url mayor a 50 caracteres"); return PLUGIN_HANDLED; }
format( g_PlayerAvatar[ index ], charsmax( g_PlayerAvatar[ ] ), arg ); client_print( index, print_console, "[ AMXX ] Tu avatar fue insertado correctamente!!"); adv_data( index, Guardar ); return PLUGIN_HANDLED; } /*<!------ [ Display Top 5 ] ------!>*/ public DisplayTop( index ) { new szMotd[ 1520 ]; static iLen; iLen = 0;
new keyindex, /*pj[ MAX_NAME_LENGTH ], */ count = 0;
new iData[ sizeof( g_PlayerData[ ] ) ], szAvatar[ 199 ], szName[ MAX_NAME_LENGTH ];
new toploop = min( adv_vault_sort_numresult(g_vault, g_sort), 5 );
iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "<body><style>body{color:white;background:url(^"%s^");\ font-family:Arial,sans-serif;\ background-position: center center}\ table{border:10px;width:87%%;margin-top:10%%;background:#121212}\ td{font-size:13px;background:#272727}\ th{color:black;font-size:14px;background:#F4DA06;padding:1%%}\ </style>\ <table align=center>\ <tr align=center>\ <th width=10%%>#\ <th width=3%% height=5%%>Logo\ <th width=30%%>Nombre\ <th width=25%%>Frags\ <th width=15%%>Muertes", gz_bgCsTop );
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;
static i; for( i = 0; i <sizeof( g_PlayerData[ ] ); i++ ) { iData[ i ] = adv_vault_get_field( g_vault, g_Campos[ i ] ); }
adv_vault_get_field( g_vault, g_CampoName, szName, charsmax( szName ) ); adv_vault_get_field( g_vault, g_CampoAvatar, szAvatar, 199 ); //adv_vault_get_keyname( g_vault, keyindex, pj, 31 ); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "<tr align=center>" ); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "<td>%d", position ); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "<td><img width=40px src=%s>", szAvatar ); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "<td>%s", szName); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "<td>%d (HS: %d)", iData[ Frags ], iData[ HeadShots ] ); iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "<td>%d", iData[ Deaths ] ); count++; } iLen += formatex( szMotd[ iLen ], sizeof szMotd - iLen, "</table></body>" );
if( count ) show_motd( index, szMotd, "AMXX | TOP 5" ); else client_print_color( index, print_team_default, "%s No se encontraron jugadores posicionados en este top.", g_Tag ); } /*<!------ [ Client Putinserver ] ------!>*/ public client_authorized( index ) { get_user_authid( index, g_authid[ index ], charsmax( g_authid[ ] ) ); static i; for( i = 0; i <sizeof( g_PlayerData[ ] ); i++ ) { g_PlayerData[ index ][ i ] = EOS; }
g_PlayerOldConexion[ index ][ 0 ] = EOS;
copy( g_PlayerAvatar[ index ], charsmax( g_PlayerAvatar[ ] ), gz_DefaultAvatar ); get_user_name( index , g_PlayerName[ index ] , charsmax(g_PlayerName[ ] ) );
set_task( 1.0, "SteamLoadData", index ); }
public SteamLoadData( index ) { adv_data( index, Cargar ); get_steamdata( index, g_PlayerAvatar[ index ], charsmax( g_PlayerAvatar[ ] ), STD_AVATAR_FULL ); }
/*<!------ [ Client Disconected ] ------!>*/ public client_disconnected( index ) { get_time( "%d/%m/%Y - %H:%M:%S", g_PlayerOldConexion[ index ], charsmax( g_PlayerOldConexion[ ] ) ); get_user_name( index , g_PlayerName[ index ] , charsmax(g_PlayerName[ ] ) ); adv_data( index, Guardar ); }
/*<!------ [ Evento Damage ] ------!>*/ public Event_Dmg( index ) { new a = get_user_attacker( index ) new damage = read_data(2)
if(!is_user_alive(a) || !(1 <= a <= iMaxPlayers) || a == index || damage <= 0) { return }
g_PlayerData[ a ][ Damages ] += damage g_PlayerData[ a ][ Hits ] += 1 adv_data( a, Guardar ); } /*<!------ [ Evento Death Msg ] ------!>*/ public Event_Death() { new Atack = read_data(1); new Victm = read_data(2); new hs = read_data(3); new Weapon = get_user_weapon(Atack);
if( !is_player_valid( Atack ) || !is_player_valid( Victm ) ) return;
if(Atack == Victm) { g_PlayerData[ Atack ][ Frags ] -= 1; g_PlayerData[ Atack ][ Deaths ]++; adv_data( Atack, Guardar ); return; }
if(Weapon == CSW_KNIFE) g_PlayerData[ Atack ][ Knifes ]++;
if(hs) g_PlayerData[ Atack ][ HeadShots ]++;
g_PlayerData[ Atack ][ Frags ]++; g_PlayerData[ Victm ][ Deaths ]++; adv_data( Victm, Guardar ); adv_data( Atack, Guardar ); } /*<!------ [ Adv Vault Save/Load ] ------!>*/ public adv_data( index, type_adv_use ) { if( !is_user_connected( index ) ) return;
switch( type_adv_use ) { case Cargar:{
if( !adv_vault_get_prepare( g_vault, _, g_authid[ index ] ) ) return;
static i; for( i = 0; i <sizeof( g_PlayerData[ ] ); i++ ) { g_PlayerData[ index ][ i ] = adv_vault_get_field( g_vault, g_Campos[ i ] ); }
adv_vault_get_field( g_vault, g_CampoAvatar, g_PlayerAvatar[ index ], charsmax( g_PlayerAvatar[ ] ) ); adv_vault_get_field( g_vault, g_CampoOldConexion, g_PlayerOldConexion[ index ], charsmax( g_PlayerOldConexion[ ] ) ); return; } case Guardar:{
adv_vault_set_start( g_vault );
static i; for( i = 0; i <sizeof( g_PlayerData[ ] ); i++ ) { adv_vault_set_field( g_vault, g_Campos[ i ], g_PlayerData[ index ][ i ] ); } adv_vault_set_field(g_vault, g_CampoName, g_PlayerName[ index ] ); adv_vault_set_field(g_vault, g_CampoAvatar, g_PlayerAvatar[ index ] ); adv_vault_set_field(g_vault, g_CampoOldConexion, g_PlayerOldConexion[ index ] ); adv_vault_set_end( g_vault, 0, g_authid[ index ] ); adv_vault_sort_update( g_vault, g_sort ); } } return; } /*<!------ [ Stock Add_Points ] ------!>*/ stock add_point(number) { new count, i, str[29], str2[35], len num_to_str(number, str, charsmax(str)) len = strlen(str)
for (i = 0; i < len; i++) { if (i != 0 && ((len - i) %3 == 0)) { add(str2, charsmax(str2), ".", 1) count++ add(str2[i+count], 1, str[i], 1) } else add(str2[i+count], 1, str[i], 1) }
return str2; }
|