Calificación:
  • 1 voto(s) - 2 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Aporte SISTEMA BLACKLIST (MYSQL)
#1
Bueno chicas acá les traigo un plugin que arme hace poquito porque los chiteritos me estaban cansando un poco que se sacaban el "LOCAL" por HWID, si algunos no saben HWID es lo que utiliza el "sXe-I" para dar "BAN GLOBAL/LOCAL", lo que hago en este plugin es chequear su "Nombre, AuthID, Ip, *HID, HWID" y si algunos de esos datos coincide con el que esta en la DB, no deja matar a nadie (se podría hacer para que directamente no lo deje entrar) pero yo lo dejo así, porque es una forma de molestar a los chiteros...

* ¿Como se los agrega a la BlackList?
- Simple, en consola tipea amx_blacklist teniendo administrador y se te abrirá un menú, en ese menu
seleccionas al jugador y se lo activas, automáticamente se guardan los datos del jugador en la DB
por si tiene futuras sesiones en el servidor.

* Si no estoy en el servidor, ¿puedo agregar a un jugador a la blacklist?
- Se puede mediante PhpMyAdmin o se podría hacer un CRUD para cargar datos de chiteros

* ¿Como veo los jugadores de la blacklist?
- Esto no lo hice todavía, iba a hacer un menú con los usuarios de la blacklist, y lo único que hice fue
mostrar la tabla de la DB en una web de los jugadores que están en la blacklist mediante PHP.

Cita:HWID = Hardware ID
*HID = Short ID
AuthID = SteamID o ValveID
DB = Base de Datos
CRUD = Create, Read, Update and Delete ( Crear, Leer, Actualizar y Borrar )


Código fuente:
Código PHP:
#include < amxmodx >
#include < fakemeta >
#include < hamsandwich >
#include < mysqlt >

#define ID_SHOWHUD ( iTaskid - TASK_SHOWHUD )

enum ( += 1111 )
{
    
TASK_SHOWHUD
};

enum _:DATA_PLUGIN
{
    
P_NOMBRE16 ],
    
P_VERSION],
    
P_AUTOR],
    
P_PREFIJO14 ]
};

enum _:DATA_MYSQL
{
    
MYSQL_HOST20 ],
    
MYSQL_USER20 ],
    
MYSQL_PASS20 ],
    
MYSQL_BASE20 ],
    
MYSQL_TABLA20 ]
};

new const 
g_szPluginDATA_PLUGIN ] =
{
    
"BlackList VENDETTA(?)",
    
"1.0",
    
"Chema",
    
"[Drunk-Gaming]"
};

new const 
g_szMySqlDATA_MYSQL ] =
{
    
"Drunk-Gaming.com",
    
"usuario",
    
"password",
    
"basededatos",
    
"tabla"
};

new 
Handle:g_Host,
    
Handle:g_Connect;

new 
g_Maxplayers,
    
g_msgSayText;

new 
g_Hwid33 ][ ][ 192 ];
new 
g_Nombre33 ][ 32 ];
new 
g_Ip33 ][ 64 ];
new 
g_AuthId33 ][ 64 ];
new 
g_Hid33 ][ 64 ];
new 
bool:g_BlackList33 ];

public 
plugin_init( )
{
    
register_pluging_szPluginP_NOMBRE ], g_szPluginP_VERSION ], g_szPluginP_AUTOR ] );

    
register_clcmd"amx_blacklist""m_BlackList" );
    
    
register_srvcmd"sxe_event""sxe_events" );
    
    
RegisterHamHam_TakeDamage"player""Ham_PlayerTakeDamage" );
    
    
g_Maxplayers get_maxplayers( );
    
g_msgSayText get_user_msgid"SayText" );
    
MySQLt( );
}

public 
client_putinserveriId )
{
    
g_BlackListiId ] = false;
}

public 
m_BlackListiId )
{
    if( !( 
get_user_flagsiId ) & ADMIN_BAN ) )
        return 
PLUGIN_HANDLED;
        
    new 
iText128 ], iData33 ], iMenu;
    
    
iMenu menu_create"\r[DG]\d -\w Menú\y BLACKLIST^n\r[DG]\d -\w www.Drunk-Gaming.com""h_BlackList" );
    
    if( 
get_playersnum( ) > )
    {
        for( new 
0<= g_Maxplayersi++ )
        {
            if( 
is_user_connected) )
            {
                static 
n32 ];
                
get_user_nameincharsmax) );
                
                
formatexiTextcharsmaxiText ), "%s %s %s"nget_user_flags) & ADMIN_KICK "\y(ADMIN)" ""g_BlackList] ? "\y[ACTIVADO]" "" );
                
formatexiDatacharsmaxiData ), "%d");
                
menu_additemiMenuiTextiData );
            }
        }
    }
    else 
        
printfiId"!g%s!y No puedes abrir este menú estando solo en el servidor."g_szPluginP_PREFIJO ] );
        
    
menu_setpropiMenuMPROP_EXITNAME"Atrás" );
    
menu_setpropiMenuMPROP_EXITNAME"Siguiente" );
    
menu_setpropiMenuMPROP_EXITNAME"Salir" );
    
    
menu_displayiIdiMenu );
    return 
PLUGIN_HANDLED;
}

public 
h_BlackListiIdiMenuiItem )
{
    if( 
iItem == MENU_EXIT )
    {
        
menu_destroyiMenu );
        return 
PLUGIN_HANDLED;
    }
    
    new 
szId], iId2;
    
menu_item_getinfoiMenuiItemiId2szIdcharsmaxszId ), ""_iId2 );
    
    
iId2 str_to_numszId );
    
    if( 
is_user_connectediId2 ) )
    {
        if( !
g_BlackListiId2 ] )
        {
            
printf0"!g%s!y El administrador!g %s!y agrego al jugador!g %s!y a la!t BLACKLIST!!y."g_szPluginP_PREFIJO ], g_NombreiId ], g_NombreiId2 ] );
            
            
d_BlackListiId2 );
        }
        else 
            
printf0"!g%s!y El jugador!g %s!y ya esta en la!t BLACKLIST!!y."g_szPluginP_PREFIJO ], g_NombreiId2 ] );
    }
    
    
m_BlackListiId );
    return 
PLUGIN_HANDLED;
}

public 
d_BlackListiId )
{
    
g_BlackListiId ] = true;
    
    
set_task1.0"task_Msj"iId TASK_SHOWHUD__"b" );
    
    new 
iData45 ], iQuery512 ];
        
    
iData] = iId;
        
    
formatexiQuerycharsmaxiQuery ), "INSERT INTO `%s` (NOMBRE, HWID, HID, IP, STEAMID) VALUES (^"%s^", ^"%s^", ^"%s^", ^"%s^", ^"%s^")"
    
g_szMySqlMYSQL_TABLA ], g_NombreiId ], g_HwidiId ][ ], g_HidiId ], g_IpiId ], g_AuthIdiId ] );
            
    
mysql_queryg_Connect"g_DeathNote"iQueryiData);
}

public 
g_DeathNoteiFailstateiError[], iErrornumiData[], iSizeFloat:iQueuetime 
{
    if( 
iFailstate != TQUERY_SUCCESS 
    {
        
log_to_file"g_DeathNote.log" "Error: [num: %d] [err: %s]"iErrornumiError );
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_HANDLED;
}

public 
fw_recv_hidiId, const iHid[ ] )
{
    if( !
is_user_connectediId ) || equaliHid"no-hid" ) || equaliHid"" ) ) 
        return 
PLUGIN_HANDLED;
    
    
formatexg_HwidiId ][ ], charsmaxg_Hwid[ ][ ] ), "%s"iHid );
    
get_user_nameiIdg_NombreiId ], charsmaxg_Nombre[ ] ) );
    
get_user_ipiIdg_IpiId ], charsmaxg_Ip[ ] ), true );
    
get_user_authidiIdg_AuthIdiId ], charsmaxg_AuthId[ ] ) );
    
get_user_infoiId"*HID"g_HidiId ], charsmaxg_Hid[ ] ) );
    
    
replace_allg_NombreiId ], charsmaxg_Nombre[ ] ), "'""" );
    
replace_allg_NombreiId ], charsmaxg_Nombre[ ] ), "^"", "" );
    
    c_BlackList( iId );
    return PLUGIN_HANDLED;
}

public c_BlackList( iId )
{
    if( is_user_connected( iId ) )
    {
        new iData[ 45 ], iQuery[ 512 ];
        
        iData[ 0 ] = iId;
        
        formatex( iQuery, charsmax( iQuery ), "
SELECT FROM `%sWHERE HWID=^"%s^" OR HID=^"%s^" OR NOMBRE=^"%s^" OR IP=^"%s^" OR STEAMID=^"%s^"", 
        g_szMySql[ MYSQL_TABLA ], g_Hwid[ iId ][ 1 ], g_Hid[ iId ], g_Nombre[ iId ], g_Ip[ iId ], g_AuthId[ iId ] );
        mysql_query( g_Connect, "
c_DeathNote", iQuery, iData, 1 );
    }
}

public c_DeathNote( iFailstate, iError[], iErrornum, iData[], iSize, Float:iQueuetime )
{
    new iId = iData[ 0 ];
    
    if( iFailstate != TQUERY_SUCCESS ) 
    {
        log_to_file( "
c_DeathNote.log",  "Error: [num: %d] [err: %s]", iErrornum, iError );
        return PLUGIN_HANDLED;
    }
    
    if( mysql_num_results( ) )
    {
        set_task( 1.0, "
task_Msj", iId + TASK_SHOWHUD, _, _, "b" );
        printf( iId, "
!g%s!y ¿Crees que fuiste añadido incorrectamente a la!g BLACKLIST!y?", g_szPlugin[ P_PREFIJO ] );
        printf( iId, "
!g%s!y Hace tu queja en nuestro foro:!g www.Drunk-Gaming.com!y.", g_szPlugin[ P_PREFIJO ] );
        g_BlackList[ iId ] = true;
    }
    
    return PLUGIN_HANDLED;
}

public task_Msj( iTaskid )
{
    static iId;
    iId = ID_SHOWHUD;
    
    engfunc( EngFunc_ClientPrintf, iId, 1, "
www.Drunk-Gaming.com!^n^nESTAS EN LA BLACKLIST -^n^nBy Chema <3" );
}

public Ham_PlayerTakeDamage( iVictim, iInflictor, iAttacker, Float:iDamage, iDamagebits )
{
    if( g_BlackList[ iAttacker ] )
    {
        SetHamParamFloat( 4, 0.0 );
        return HAM_HANDLED;
    }
    
    return HAM_IGNORED;
}

/* CODE DESTRO */
public sxe_events( )
{
    static iEvent, iId, iArg[ 6 ];

    read_argv( 1, iArg, charsmax( iArg ) );
    iEvent = str_to_num( iArg );

    read_argv( 2, iArg, charsmax( iArg ) );
    iId = str_to_num( iArg );

    for( new i = 1; i <= g_Maxplayers; i++ )
    {
        if( is_user_connected( i ) && get_user_userid( i ) == iId )
        {
            iId = i;
            break;
        }
    }
    
    if( !iId ) return;

    if( iEvent == 4 )
    {
        new iHid[ 64 ];
        read_argv( 5, iHid, charsmax( iHid ) );
        fw_recv_hid( iId, iHid );
    }
}

public MySQLt( )
{
    g_Host = mysql_makehost( g_szMySql[ MYSQL_HOST ], g_szMySql[ MYSQL_USER ], g_szMySql[ MYSQL_PASS ], g_szMySql[ MYSQL_BASE ] );
    
    new iError[ 64 ], iErrorNum;
    g_Connect = mysql_connect( g_Host, iErrorNum, iError, charsmax( iError ) );
    
    if( iErrorNum ) 
    {
        log_to_file( "
MySQLt_init.log", "Error: [%d]- [%s]", iErrorNum, iError );
        return pause( "
a" );
    }
    
    mysql_performance( 75, 75, 5 );
    return PLUGIN_HANDLED;
}

stock printf( iId, const input[], any:... ) 
{
    static iMessage[ 288 ], iLen;
    iLen = formatex( iMessage, 287, "" );
    
    vformat( iMessage[ iLen ], 287, input, 3 ); 
    iMessage[ 287 ] = '^0';
    
    replace_all( iMessage, 286, "
!g", "^4" );
    replace_all( iMessage, 286, "
!y", "^1" );
    replace_all( iMessage, 286, "
!t", "^3" ); 
    
    if( iId )
    {
        if( !is_user_connected( iId ) )
            return;
            
        message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, _, iId );
        write_byte( iId );
        write_string( iMessage );
        message_end( );
            
        return;
    }
    
    for( iId = 1; iId <= g_Maxplayers; iId++ )
    {
        if( !is_user_connected( iId ) )
            continue;
                    
        message_begin( MSG_ONE_UNRELIABLE, g_msgSayText, _, iId );
        write_byte( iId );
        write_string( iMessage );
        message_end( );
    }



Creo que explique bien el funcionamiento de dicho plugin, si tiene alguna duda o necesitan algún plugin
hablenme por MP. Wink  DESCARGA EL PLUGIN ACÁ
[Imagen: RLvJI4o.jpg]
[-] Los siguientes 1 user Likes Chema's post:
  • Scollex
Responder
#2
Hello, where i can get mysqlt.inc for compile? (// D:\AMXX\scripting WINDOWS\blacklist.sma(4) : fatal error 100: cannot read from file: "mysqlt")
Responder
#3
ya dijieron q el sxe no igual ahi chiteros con el sxe y los de sxe les pasan las contraseñas de admins a los chiteros
[Imagen: giphy-tumblr.gif]

Responder
#4
I dont understand what did u said Big Grin Im just need to ban VPN player with changing hes SID :p HWID will be the beast Big Grin

@Edit. Okay now im just need mysqlt modul
Responder
  


Salto de foro:


Usuarios navegando en este tema:
1 invitado(s)