Advanced Ban System
#1
Hola, estaria buscando este plugin de la imagen
[Imagen: 45a7aa8ace8bd4656f603a9fa434c8de.png]
Responder
#2
Rainbow Lo quieroExcitedeyesWhatdone
Responder
#3
Pues cogieron el adv bans que estaba en amxx y lo modificaron así que no creo que encuentres uno así público
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.

(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Responder
#4
osea es poco común encontrar una persona que aporte algo asi, ya que nadie va hacer algo gratis. (los buenos somos Pocos).
La mente es como un paracaidas, hay que abrirla para que Funcione pacman Proud
Responder
#5
https://amxmodx-es.com/Thread-Advanced-s...4#pid87234

Es el más parecido que encontré, eso si, vas a tener que sacarle el HWid porque funciona solo con sXe

Responder
#6
@Skylar

Tengo una pregunta para ti.. soy nuevo en eso. que se le debe cambiar? he cambiado pero no me compila. puedes ayudarme un poco? Cutecry
Responder
#7
Es un tema de 2016 chicos...
PD: Estaría lindo, después quizás, aporte uno con el plugin que hizo @Destro... o con MySQL, veo jajaja.
Responder
#8
(14/09/2018, 06:51 PM)Niper.-. escribió: Es un tema de 2016 chicos...
PD: Estaría lindo, después quizás, aporte uno con el plugin que hizo @Destro... o con MySQL, veo jajaja.

Código PHP:
#include <amxmodx>
#include <sqlx>

#if AMXX_VERSION_NUM < 183
    #define client_disconnected client_disconnect
#endif

/* ===============================================================================
 *                 [ Plugin initiation & Global stuff ]
 * =============================================================================== */

#define SetPlayerBit(%1,%2)     ( %1 |= ( 1 << ( %2 & 31 ) ) )
#define ClearPlayerBit(%1,%2)     ( %1 &= ~( 1 << ( %2 & 31 ) ) )
#define GetPlayerBit(%1,%2)     ( %1 & ( 1 << ( %2 & 31 ) ) )

#define GetBanDuration(%0)         ( g_iPlayerOption[ %0 ][ Option_Ban ] ? ( get_systime( ) + g_eBanTime[ g_iPlayerOption[ %0 ][ Option_Ban ] ][ Time_Time ] ):g_eBanTime[ 0 ][ Time_Time ] )
#define HasPermission(%0,%1)     ( get_user_flags( %0 ) & %1 )

const EV_HID    4;
const 
MAX_TRIES    9;
const 
MIN_CHARS    24;

enum _:Query_Type
{
    
Query_Load,
    
Query_Create,
    
Query_Update,
    
Query_Ban,
    
Query_Unban,
    
Query_Banned
}

enum _:Option_Type 
{
    
Option_Ban,
    
Option_Reason
}

enum _:Ban_Data
{
    
Ban_Time,
    
Ban_Reason,
    
Ban_Banned
}

enum _:Time_Data
{
    
Time_Type16 ],
    
Time_Time
}

enum _:Player_Data
{
    
Player_Userid,
    
Player_HID32 ],
    
Player_Nick32 ],
    
Player_Time,
    
Player_Demo,
    
Player_Bans,
    
Player_Played,
    
Player_Reason,
    
Player_Banned
}

enum _:Last_Data
{
    
Last_Index,
    
Last_Name16 ],
    
Last_Time16 ]
}

new const 
g_szReasons[ ][ ] =
{
    
"Incumplir reglas",
    
"Cheat / Hack",
    
"Spam / Flood",
    
"FreeKill / Shoot",
    
"Falta de respeto",
    
"Demo + Octinium"
}

new const 
g_eBanTime[ ][ Time_Data ] =
{
    { 
"Permanente", -},
    { 
"Cinco minutos"300 },
    { 
"Quince minutos"900 },
    { 
"Media hora"1800 },
    { 
"Una hora"3600 },
    { 
"Medio dia"7200 },
    { 
"Un dia"86400 }
}

new 
g_iSayText;
new 
g_iConnected;
new 
g_iMaxPlayers;

new 
g_szLogFile64 ];

new 
g_iBanDataBan_Data ];
new 
g_eLastPlayers][ Last_Data ];
new 
g_ePlayerData33 ][ Player_Data ];
new 
g_iPlayerOption33 ][ Option_Type ];

new 
Handle:g_hTuple;

public 
plugin_init( )
{
    
register_plugin"Advanced Ban System""1.0""Manu" );
    
    
register_clcmd"say /id""CommandId" );
    
register_clcmd"say /ban""ShowMenuBan" );
    
    
register_clcmd"abs_ban""CommandBan" );
    
register_clcmd"abs_info""CommandInfo" );
    
register_clcmd"abs_last""CommandLast" );
    
register_clcmd"abs_unban""CommandUnban" );
    
register_clcmd"abs_banned""CommandBanned" );
    
    
register_srvcmd"sxe_event""ev_sXe" );
    
    
g_iSayText         get_user_msgid"SayText" );
    
g_iMaxPlayers     get_maxplayers( );
    
    
SQL_Init( );
}

/* ===============================================================================
 *                 [ Client-related ]
 * =============================================================================== */

public ev_sXe( )
{
    new 
iId;
    new 
szData];
    
    
read_argv1szDatacharsmaxszData ) );
    
    if( 
str_to_numszData ) == EV_HID )
    {
        
read_argv2szDatacharsmaxszData ) );
        
        if( 
FindPlayeriIdstr_to_numszData ) ) )
        {
            
read_argv5g_ePlayerDataiId ][ Player_HID ], charsmaxg_ePlayerData[ ][ Player_HID ] ) );
            
            if( 
strleng_ePlayerDataiId ][ Player_HID ] ) < MIN_CHARS )
            {
                
client_printiIdprint_console"Tu hardware id no se pudo verificar." );
                
client_printiIdprint_console"Cualquier duda entra a www.skaviados.net" );
                
                
server_cmd"kick #%d ^"No pudimos validar tu HID (Mirar consola)^""get_user_useridiId ) );
                
server_exec( );
            }
            else
            {
                
SQL_QueryiIdQuery_Load );
            }
        }
    }
}

public 
KickPlayeriId )
{
    
server_cmd"kick #%d ^"Ingreso restringido (Mirar consola)^""get_user_useridiId ) );
    
server_exec( );
}

public 
CommandLogsiId )
{
    if( !
HasPermissioniIdADMIN_BAN ) )
    {
        
console_printiId"[ABS] No tienes permisos suficientes para utilizar este comando." );
        
        return 
PLUGIN_HANDLED;
    }
    
    new 
szBuffer192 ];
    new 
szLogs15 ][ 192 ];
    
    new 
iFile fopeng_szLogFile"rt" );
    
    while( !
feofiFile ) )
    {
        
fgetsiFileszBuffercharsmaxszBuffer ) );
        
        
trimszBuffer );
        
remove_quotesszBuffer );
        
        if( 
strlenszBuffer ) < 10 )
        {
            continue;
        }
        
        for( new 
14i-- )
        {
            
szLogs] = szLogs];
        }
            
        
copyszLogs], charsmaxszLogs[ ] ), szBuffer );
    }
    
    for( new 
14>= 0i-- )
    {
        
console_printiId"[%d] %s", ( ), szLogs] );
    }
    
    
fcloseiFile );
    
    return 
PLUGIN_HANDLED;
}

public 
CommandInfoiId )
{
    if( !
HasPermissioniIdADMIN_BAN ) )
    {
        
console_printiId"[ABS] No tienes permisos suficientes para utilizar este comando." );
        
        return 
PLUGIN_HANDLED;
    }
    
    new 
iPlayers32 ];
    new 
szName32 ];
    
    new 
iNum;
    
    
get_playersiPlayersiNum );
    
    
console_printiId"^n**** Informacion sobre jugadores conectados ****" );
    
    for( new 
0iNumi++ )
    {
        
get_user_nameiPlayers], szNamecharsmaxszName ) );
        
        
console_printiId"Identificador: %05d | Bans: %02d | Nombre: %s."g_ePlayerDataiPlayers] ][ Player_Userid ], g_ePlayerDataiPlayers] ][ Player_Bans ], szName );
    }
    
    return 
PLUGIN_HANDLED;
}

public 
CommandLastiId )
{
    if( !
HasPermissioniIdADMIN_BAN ) )
    {
        
console_printiId"[ABS] No tienes permisos suficientes para utilizar este comando." );
        
        return 
PLUGIN_HANDLED;
    }
    
    new 
iPlayers32 ];
    new 
iNum;
    
    
get_playersiPlayersiNum );
    
    
console_printiId"**** Ultimas cinco desconexiones de jugadores ****" );
    
    for( new 
0sizeofg_eLastPlayers ); i++ )
    {
        if( 
g_eLastPlayers][ Last_Index ] == )
        {
            break;
        }
        
        
console_printiId"[%s] Identificador: %05d | Nombre: %s."g_eLastPlayers][ Last_Time ], g_eLastPlayers][ Last_Index ], g_eLastPlayers][ Last_Name ] );
    }
    
    return 
PLUGIN_HANDLED;
}

public 
CommandBannediId )
{
    if( !
HasPermissioniIdADMIN_BAN ) )
    {
        
console_printiId"[ABS] No tienes permisos suficientes para utilizar este comando." );
        
        return 
PLUGIN_HANDLED;
    }
    
    
console_printiId"[ Identificador | Ultimo nombre | Fecha | Tiempo restante | Razon ]" );
    
    
SQL_QueryiIdQuery_Banned );
    
    return 
PLUGIN_HANDLED;
}

public 
CommandBaniId )
{
    if( !
HasPermissioniIdADMIN_BAN ) )
    {
        
console_printiId"[ABS] No tienes permisos suficientes para utilizar este comando." );
        
        return 
PLUGIN_HANDLED;
    }
    
    new 
iTarget;
    new 
iTime;
    new 
iFile;
    new 
iReason;
    
    new 
szIndex];
    new 
szTime];
    new 
szReason];
    new 
szDate32 ];
    new 
szName32 ];
    
    if( 
read_argc( ) != )
    {
        
console_printiId"[ABS] Comando mal estructurado. Utilizacion: ^"abs_ban <id> <tiempo> <numero de razon> - Permanente: -1 min^"" );
        
console_printiId"[ABS] Las razones pueden ser:^n^n1. %s^n2. %s"g_szReasons], g_szReasons] );
        
console_printiId"3. %s^n4. %s^n5. %s^n6. %s"g_szReasons], g_szReasons], g_szReasons], g_szReasons] );
        
        return 
PLUGIN_HANDLED;
    }
    
    
read_argv1szIndexcharsmaxszIndex ) );
    
    if( ( 
iTarget str_to_numszIndex ) ) > )
    {
        
read_argv2szTimecharsmaxszTime ) );
        
        if( ( 
iTime str_to_numszTime ) ) != && ( 100000 >= iTime >= -) )
        {
            
read_argv3szReasoncharsmaxszReason ) );
            
            if( ( 
<= ( iReason str_to_numszReason ) - ) < sizeofg_szReasons ) ) )
            {
                if( !
SearchTargetiTarget ) )
                {
                    
g_iBanDataBan_Banned ] = get_systime( );
                    
g_iBanDataBan_Reason ] = iReason;
                    
g_iBanDataBan_Time ] = iTime ? ( get_systime( ) + ( iTime 60 ) ) : -1;
                    
                    
get_time"%d/%m %H:%M:%S"szDatecharsmaxszDate ) ); get_user_nameiIdszNamecharsmaxszName ) );
                    
                    
iFile fopeng_szLogFile"a" );
                    
fprintfiFile"[BAN] Admin: %s | Identificador: %d | Tiempo: %d min | Razon: %s | Fecha: %s.^n"szNameiTargetiTimeg_szReasonsiReason ], szDate ); fcloseiFile );
                    
                    
SQL_QueryiTargetQuery_Ban );
                }
                else
                {
                    
g_ePlayerDataiTarget ][ Player_Time ] = iTime ? ( get_systime( ) + ( iTime 60 ) ):-1;
                    
g_ePlayerDataiTarget ][ Player_Bans ]++;
                    
g_ePlayerDataiTarget ][ Player_Reason ] = iReason;
                    
g_ePlayerDataiTarget ][ Player_Banned ] = get_systime( );
                    
                    
BanPlayeriIdiTarget );
                }
                
                
console_printiId"[ABS] Identificador baneado correctamente." );
            }
            else
            {
                
console_printiId"[ABS] Has introducido una razon que no existe ( solo entre 1 y 6 )." );
            }
        }
        else
        {
            
console_printiId"[ABS] No has introducido un tiempo valido ( -1 para permanente )." );
        }
    }
    else
    {
        
console_printiId"[ABS] El identificador tiene que ser un numero positivo." );
    }
    
    return 
PLUGIN_HANDLED;
}

public 
CommandUnbaniId )
{
    if( !
HasPermissioniIdADMIN_BAN ) )
    {
        
console_printiId"[ABS] No tienes permisos suficientes para utilizar este comando." );
        
        return 
PLUGIN_HANDLED;
    }
    else if( 
read_argc( ) != )
    {
        
console_printiId"[ABS] Comando mal estructurado. Utilizacion: ^"abs_unban <identificador>^"" );
        
        return 
PLUGIN_HANDLED;
    }
    
    new 
iUserid;
    new 
szUserid];
    
    
read_argv1szUseridcharsmaxszUserid ) );
    
    if( 
< ( iUserid str_to_numszUserid ) ) )
    {
        
RegisterUnbaniIdiUserid );
        
        
SQL_QueryiUseridQuery_Unban );
        
        
console_printiId"[ABS] Se competo la operacion." );
        
console_printiId"[ABS] Si el identificador era correcto entonces ha sido desbaneado." );
    }
    else
    {
        
console_printiId"[ABS] El identificador tiene que ser un numero positivo." );
    }
    
    return 
PLUGIN_HANDLED;
}

public 
CommandIdiId )
{
    if( 
g_ePlayerDataiId ][ Player_Userid ] > )
    {
        
PrintColoriId"^x04[ABS]^x01 Tu identificador unico es^x04 %d^x01."g_ePlayerDataiId ][ Player_Userid ] );
    }
    
    return 
PLUGIN_HANDLED;
}

public 
client_putinserveriId )
{
    
SetPlayerBitg_iConnectediId );
    
    
get_user_nameiIdg_ePlayerDataiId ][ Player_Nick ], charsmaxg_ePlayerData[ ][ Player_Nick ] ) );
}

public 
client_disconnectediId )
{
    
ClearPlayerBitg_iConnectediId );
    
    
RegisterDisconnectiId );
    
    
g_ePlayerDataiId ][ Player_Played ] += get_user_timeiId );
    
    
SQL_QueryiIdQuery_Update );
    
    
g_ePlayerDataiId ][ Player_Userid ] = 0;
    
g_ePlayerDataiId ][ Player_HID ][ ] = EOS;
}

/* ===============================================================================
 *                 [ Menu's ]
 * =============================================================================== */

public ShowMenuBaniId )
{
    if( !
HasPermissioniIdADMIN_BAN ) )
    {
        
PrintColoriId"^x04[ABS]^x01 No tienes permisos suficientes para acceder a este menu." );
        
        return 
PLUGIN_HANDLED;
    }
    
    new 
szNum];
    new 
szData64 ];
    
    new 
iMenu menu_create"===========================^n    \wSistema de ban^n\y===========================""BanHandler" );
    
    
formatexszDatacharsmaxszData ), "Cambiar tiempo \y[\r%s\y]"g_eBanTimeg_iPlayerOptioniId ][ Option_Ban ] ][ Time_Type ] );
    
menu_additemiMenuszData"b" );
    
    
formatexszDatacharsmaxszData ), "Cambiar motivo \y[\r%s\y]^n"g_szReasonsg_iPlayerOptioniId ][ Option_Reason ] ] );
    
menu_additemiMenuszData"r" );
    
    for( new 
iPlayer 1iPlayer <= g_iMaxPlayersiPlayer++ )
    {
        if( !
GetPlayerBitg_iConnectediPlayer ) || HasPermissioniPlayerADMIN_IMMUNITY ) || ( g_ePlayerDataiPlayer ][ Player_Userid ] == ) )
        {
            continue;
        }
        
        
get_user_nameiPlayerszDatacharsmaxszData ) - 48 );
        
        
formatexszNumcharsmaxszNum ), "%d %d"iPlayerget_user_useridiPlayer ) );
        
formatexszDatastrlenszData ) ], charsmaxszData ) - 16" \d- \y[\wBans: \r%d\y]"g_ePlayerDataiPlayer ][ Player_Bans ] );
        
        
menu_additemiMenuszDataszNum );
    }
    
    
menu_setpropiMenuMPROP_NEXTNAME"Siguiente" );
    
menu_setpropiMenuMPROP_BACKNAME"Anterior" );
    
menu_setpropiMenuMPROP_EXITNAME"Cancelar" );
    
    
menu_displayiIdiMenu );
    
    return 
PLUGIN_HANDLED;
}

public 
BanHandleriIdiMenuiItem )
{
    if( 
iItem == MENU_EXIT )
    {
        
menu_destroyiMenu );
        
        return 
PLUGIN_HANDLED;
    }
    
    new 
szPlayer];
    new 
szData];
    
    new 
iPlayer;
    new 
iNum;
    
    
menu_item_getinfoiMenuiItemiNumszDatacharsmaxszData ), __iNum );
    
menu_destroyiMenu );
    
    switch( 
szData] )
    {
        case 
'b':
        {
            ( 
g_iPlayerOptioniId ][ Option_Ban ] < sizeofg_eBanTime ) - ) ?
                ( 
g_iPlayerOptioniId ][ Option_Ban ]++ ) :
                ( 
g_iPlayerOptioniId ][ Option_Ban ] = );
            
            
ShowMenuBaniId );
        }
        case 
'r':
        {
            ( 
g_iPlayerOptioniId ][ Option_Reason ] < sizeofg_szReasons ) - ) ?
                ( 
g_iPlayerOptioniId ][ Option_Reason ]++ ) : 
                ( 
g_iPlayerOptioniId ][ Option_Reason ] = );
            
            
ShowMenuBaniId );
        }
        default:
        {
            
strtokszDataszPlayercharsmaxszPlayer ), szDatacharsmaxszData ),' 'true );
            
            
iPlayer str_to_numszPlayer );
            
iNum str_to_numszData );
            
            if( 
GetPlayerBitg_iConnectediPlayer ) && ( get_user_useridiPlayer ) == iNum ) )
            {
                
g_ePlayerDataiPlayer ][ Player_Time ] = GetBanDurationiId );
                
g_ePlayerDataiPlayer ][ Player_Bans ]++;
                
g_ePlayerDataiPlayer ][ Player_Reason ] = g_iPlayerOptioniId ][ Option_Reason ];
                
g_ePlayerDataiPlayer ][ Player_Banned ] = get_systime( );
                
                
BanPlayeriIdiPlayer );
                
                
client_cmdiId"spk buttons/button3" );
                
                
PrintColoriId"^x04[ABS]^x01 Jugador baneado correctamente." );
                
PrintColoriId"^x04[ABS]^x01 Verifica el foro periodicamente para evitar inconvenientes." );
            }
            else
            {
                
PrintColoriId"^x04[ABS]^x01 No existe el jugador especificado." );
            }
        }
    }
    
    return 
PLUGIN_HANDLED;
}

/* ===============================================================================
 *                 [ Modules ]
 * =============================================================================== */

BanPlayer( const iBanner, const iBanned )
{
    new 
szDate32 ];
    
    
get_time"%d/%m %H:%M:%S"szDatecharsmaxszDate ) );
    
    new 
iFile fopeng_szLogFile"a" );
    
    
fprintfiFile"[Ban] Admin: %s | Jugador: %s | Identificador: %d | Duracion: %d | Razon: %s | Fecha: %s.^n"g_ePlayerDataiBanner ][ Player_Nick ], g_ePlayerDataiBanned ][ Player_Nick ], g_ePlayerDataiBanned ][ Player_Userid ], ( g_ePlayerDataiBanned ][ Player_Time ] - get_systime( ) ) / 60g_szReasonsg_ePlayerDataiBanned ][ Player_Reason ] ], szDate );
    
fcloseiFile );
    
    
PrintColoriBanner,"^x04[ABS]^x01 Jugador baneado correctamente. [ Identificador: %d ]"g_ePlayerDataiBanned ][ Player_Userid ] );
    
    
PrintUserInformationiBanned );
    
    
set_task0.25"KickPlayer"iBanned );
    
    return 
true;
}

SearchTarget( &iTarget )
{
    for( new 
iPlayer 1iPlayer <= g_iMaxPlayersiPlayer++ )
    {
        if( !
is_user_connectediPlayer ) || ( g_ePlayerDataiPlayer ][ Player_Userid ] != iTarget ) )
        {
            continue;
        }
        
        
iTarget iPlayer;
        
        return 
true;
    }
    
    return 
false;
}

RegisterUnban( const iId, const iUserid )
{
    new 
szDate32 ];
    
    
get_time"%d/%m %H:%M:%S"szDatecharsmaxszDate ) );
    
    new 
iFile fopeng_szLogFile"a" );
    
    
fprintfiFile,"[ Unban ] Administrador: %s | Identificador: %d | Fecha: %s.^n"g_ePlayerDataiId ][ Player_Nick ], iUseridszDate );
    
fcloseiFile );
}

RegisterDisconnect( const iId )
{
    if( 
g_ePlayerDataiId ][ Player_Userid ] == )
    {
        return;
    }
    
    for( new 
4i-- )
    {
        
g_eLastPlayers] = g_eLastPlayers];
    }
    
    
g_eLastPlayers][ Last_Index ] = g_ePlayerDataiId ][ Player_Userid ];
    
    
get_user_nameiIdg_eLastPlayers][ Last_Name ], charsmaxg_eLastPlayers[ ][ Last_Name ] ) );
    
get_time"%H:%M:%S"g_eLastPlayers][ Last_Time ], charsmaxg_eLastPlayers[ ][ Last_Time ] ) );
}

PrintUserInformation( const iId )
{
    
client_printiIdprint_console"Usted se encuentra baneado de Skaviados" );
    
client_printiIdprint_console"- Motivo del ban: %s"g_szReasonsg_ePlayerDataiId ][ Player_Reason ] ] );
    
client_printiIdprint_console"- Tiempo restante estimado: %d minutos", ( g_ePlayerDataiId ][ Player_Time ] - get_systime( ) ) / 60 );
    
client_printiIdprint_console"- Identificador: %d ( necesario para quejas/unban )"g_ePlayerDataiId ][ Player_Userid ] );
    
client_printiIdprint_console"Cualquier duda entre a www.skaviados.net" );
}

FindPlayer( &iId, const iUserId )
{
    for( 
iId 1iId <= g_iMaxPlayersiId++ )
    {
        if( 
is_user_connectediId ) && ( get_user_useridiId ) == iUserId ) )
        {
            return 
true;
        }
    }
    
    return 
false;
}

PrintColor( const iIdszText[ ], any:... )
{
    static 
szBuffer192 ];
    
    
vformatszBuffer,charsmaxszBuffer ),szText,);
    
    if( !
iId 
    {
        
message_beginMSG_BROADCASTg_iSayText_iId );
        
write_byte);
        
write_stringszBuffer );
        
message_end( );
    }
    else 
    {
        
message_beginMSG_ONE_UNRELIABLEg_iSayText_iId );
        
write_byteiId );
        
write_stringszBuffer );
        
message_end( );
    }
}

/* ===============================================================================
 *                 [ SQL Section ]
 * =============================================================================== */
 
SQL_Init( )
{
    new 
szDriver];
    
    
SQL_SetAffinity"sqlite" );
    
SQL_GetAffinityszDrivercharsmaxszDriver ) );
    
    if( !
equaliszDriver"sqlite" ) )
    {
        
set_fail_state"[ABS] No se ha podido establecer la afinidad a SQLite." );
    }
    
    
g_hTuple SQL_MakeDbTuple"""""""bans" );
    
    
get_localinfo"amxx_datadir"g_szLogFilecharsmaxg_szLogFile ) );
    
addg_szLogFilecharsmaxg_szLogFile ), "/abs/logs.ini" );
}

SQL_Query( const iId,const iType )
{
    static 
szData],szQuery256 ];
    
    
szData] = iId;
    
szData] = iType;
    
    switch( 
iType )
    {
        case 
Query_Load:
            
formatexszQuerycharsmaxszQuery ), "SELECT * FROM users WHERE user_hid=^"%s^""g_ePlayerDataiId ][ Player_HID ] );
        case 
Query_Create:
            
formatexszQuerycharsmaxszQuery ), "INSERT INTO users ( user_hid ) VALUES ( ^"%s^" )"g_ePlayerDataiId ][ Player_HID ] );
        case 
Query_Update:
            
formatexszQuerycharsmaxszQuery ), "UPDATE users SET user_nick=^"%s^",user_time='%d',user_demo='%d',user_bans='%d',user_played='%d',user_reason='%d',user_banned='%d' WHERE user_id='%d'",
                    
g_ePlayerDataiId ][ Player_Nick ],
                    
g_ePlayerDataiId ][ Player_Time ],
                    
g_ePlayerDataiId ][ Player_Demo ],
                    
g_ePlayerDataiId ][ Player_Bans ],
                    
g_ePlayerDataiId ][ Player_Played ],
                    
g_ePlayerDataiId ][ Player_Reason ],
                    
g_ePlayerDataiId ][ Player_Banned ],
                    
g_ePlayerDataiId ][ Player_Userid ] );
        case 
Query_Ban:
            
formatexszQuerycharsmaxszQuery ), "UPDATE users SET user_time='%d',user_reason='%d',user_banned='%d' WHERE user_id=%d"g_iBanDataBan_Time ], g_iBanDataBan_Reason ], g_iBanDataBan_Banned ], iId );
        case 
Query_Unban:
            
formatexszQuerycharsmaxszQuery ), "UPDATE users SET user_time='0' WHERE user_id=%d"iId );
        case 
Query_Banned:
            
formatexszQuerycharsmaxszQuery ), "SELECT * FROM users WHERE ( user_time > '%d' OR user_time = '-1' ) ORDER BY user_banned DESC LIMIT 30"get_systime( ) );
    }
    
    
SQL_ThreadQueryg_hTuple"SQL_Handler"szQueryszDatacharsmaxszData ) );
    
    return 
1;
}

public 
SQL_HandleriFailstateHandle:hQueryszError[ ], iErrsizeszData[ ], iDatasize )
{
    new 
iId szData];
    new 
iType szData];
    
    if( 
iFailstate TQUERY_SUCCESS )
    {
        
log_amx"[ABS] Hubo un error en el handler. %s"szError );
        
        return;
    }
    
    switch( 
iType )
    {
        case 
Query_Load:
        {
            if( 
SQL_NumResultshQuery ) == )
            {
                
SQL_QueryiIdQuery_Create );
                
                return;
            }
            
            
g_ePlayerDataiId ][ Player_Userid ]    = SQL_ReadResulthQuery);
            
g_ePlayerDataiId ][ Player_Time ]        = SQL_ReadResulthQuery);
            
g_ePlayerDataiId ][ Player_Demo ]        = SQL_ReadResulthQuery);
            
g_ePlayerDataiId ][ Player_Bans ]        = SQL_ReadResulthQuery);
            
g_ePlayerDataiId ][ Player_Reason ]    = SQL_ReadResulthQuery);
            
g_ePlayerDataiId ][ Player_Banned ]    = SQL_ReadResulthQuery);
            
g_ePlayerDataiId ][ Player_Played ]    = SQL_ReadResulthQuery);
            
            if( ( 
g_ePlayerDataiId ][ Player_Time ] == -) || ( g_ePlayerDataiId ][ Player_Time ] > get_systime( ) ) )
            {
                
PrintUserInformationiId );
                
                
set_task0.25"KickPlayer"iId );
            }
        }
        case 
Query_Create:
        {
            
g_ePlayerDataiId ][ Player_Userid ] = SQL_GetInsertIdhQuery );
            
            
console_printiId"[ABS] Este servidor cuenta con *Advanced Ban System v1.0b* ." );
            
console_printiId"[ABS] Le informamos que usted ha sido registrado en la base de datos ." );
        }
        case 
Query_Banned:
        {
            new 
szDate32 ];
            new 
szName32 ];
            
            new 
iUser;
            new 
iTime;
            new 
iDate;
            new 
iReason;
            
            while( 
SQL_MoreResultshQuery ) )
            {
                
iUser SQL_ReadResulthQuery);
                
iTime SQL_ReadResulthQuery);
                
iReason SQL_ReadResulthQuery);
                
iDate SQL_ReadResulthQuery);
                
                
format_timeszDatecharsmaxszDate ), "%c"iDate );
                
                
SQL_ReadResulthQuery8szNamecharsmaxszName ) );
                
                
console_printiId"[ %d ] %s | %s | %d minutos | %s"iUserszNameszDate, ( iTime > -) ? ( ( iTime get_systime( ) ) / 60 ) : -1g_szReasonsiReason ] );
                
                
SQL_NextRowhQuery );
            }
        }
    }


Te lo hizo Treki.
Responder
#9
ni vi la fecha que crearon este post pero siempre que digo "no creo que sea público" resulta ser que es público pacman
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

(18/11/2014, 05:47 PM)Neeeeeeeeeel.- escribió: Por qué necesitan una guía para todo? Meté mano y que salga lo que salga... es la mejor forma de aprender.

(16/05/2016, 11:08 PM)kikizon2 escribió: No cabe duda que tienen mierda en vez de cerebro, par de pendejos v:
Responder
#10
(14/09/2018, 09:33 PM)OsweRRR escribió: ni vi la fecha que crearon este post pero siempre que digo "no creo que sea público" resulta ser que es público pacman

No era público hasta ahora. Whatever
Responder
#11
(14/09/2018, 09:33 PM)OsweRRR escribió: ni vi la fecha que crearon este post pero siempre que digo "no creo que sea público" resulta ser que es público pacman

Tampoco vi la fecha solo leí el título y comenté xd

Responder
#12
(14/09/2018, 09:11 PM)metita escribió:
Código PHP:
#include <amxmodx>
#include <sqlx>

#if AMXX_VERSION_NUM < 183
 #define client_disconnected client_disconnect
#endif

/* ===============================================================================
 * [ Plugin initiation & Global stuff ]
 * =============================================================================== */

#define SetPlayerBit(%1,%2) ( %1 |= ( 1 << ( %2 & 31 ) ) )
#define ClearPlayerBit(%1,%2) ( %1 &= ~( 1 << ( %2 & 31 ) ) )
#define GetPlayerBit(%1,%2) ( %1 & ( 1 << ( %2 & 31 ) ) )

#define GetBanDuration(%0) ( g_iPlayerOption[ %0 ][ Option_Ban ] ? ( get_systime( ) + g_eBanTime[ g_iPlayerOption[ %0 ][ Option_Ban ] ][ Time_Time ] ):g_eBanTime[ 0 ][ Time_Time ] )
#define HasPermission(%0,%1) ( get_user_flags( %0 ) & %1 )

const EV_HID 4;
const 
MAX_TRIES 9;
const 
MIN_CHARS 24;

enum _:Query_Type
{
 
Query_Load,
 
Query_Create,
 
Query_Update,
 
Query_Ban,
 
Query_Unban,
 
Query_Banned
}

enum _:Option_Type 
{
 
Option_Ban,
 
Option_Reason
}

enum _:Ban_Data
{
 
Ban_Time,
 
Ban_Reason,
 
Ban_Banned
}

enum _:Time_Data
{
 
Time_Type16 ],
 
Time_Time
}

enum _:Player_Data
{
 
Player_Userid,
 
Player_HID32 ],
 
Player_Nick32 ],
 
Player_Time,
 
Player_Demo,
 
Player_Bans,
 
Player_Played,
 
Player_Reason,
 
Player_Banned
}

enum _:Last_Data
{
 
Last_Index,
 
Last_Name16 ],
 
Last_Time16 ]
}

new const 
g_szReasons[ ][ ] =
{
 
"Incumplir reglas",
 
"Cheat / Hack",
 
"Spam / Flood",
 
"FreeKill / Shoot",
 
"Falta de respeto",
 
"Demo + Octinium"
}

new const 
g_eBanTime[ ][ Time_Data ] =
{
 { 
"Permanente", -},
 { 
"Cinco minutos"300 },
 { 
"Quince minutos"900 },
 { 
"Media hora"1800 },
 { 
"Una hora"3600 },
 { 
"Medio dia"7200 },
 { 
"Un dia"86400 }
}

new 
g_iSayText;
new 
g_iConnected;
new 
g_iMaxPlayers;

new 
g_szLogFile64 ];

new 
g_iBanDataBan_Data ];
new 
g_eLastPlayers][ Last_Data ];
new 
g_ePlayerData33 ][ Player_Data ];
new 
g_iPlayerOption33 ][ Option_Type ];

new 
Handle:g_hTuple;

public 
plugin_init( )
{
 
register_plugin"Advanced Ban System""1.0""Manu" );
 
 
register_clcmd"say /id""CommandId" );
 
register_clcmd"say /ban""ShowMenuBan" );
 
 
register_clcmd"abs_ban""CommandBan" );
 
register_clcmd"abs_info""CommandInfo" );
 
register_clcmd"abs_last""CommandLast" );
 
register_clcmd"abs_unban""CommandUnban" );
 
register_clcmd"abs_banned""CommandBanned" );
 
 
register_srvcmd"sxe_event""ev_sXe" );
 
 
g_iSayText get_user_msgid"SayText" );
 
g_iMaxPlayers get_maxplayers( );
 
 
SQL_Init( );
}

/* ===============================================================================
 * [ Client-related ]
 * =============================================================================== */

public ev_sXe( )
{
 new 
iId;
 new 
szData];
 
 
read_argv1szDatacharsmaxszData ) );
 
 if( 
str_to_numszData ) == EV_HID )
 {
 
read_argv2szDatacharsmaxszData ) );
 
 if( 
FindPlayeriIdstr_to_numszData ) ) )
 {
 
read_argv5g_ePlayerDataiId ][ Player_HID ], charsmaxg_ePlayerData[ ][ Player_HID ] ) );
 
 if( 
strleng_ePlayerDataiId ][ Player_HID ] ) < MIN_CHARS )
 {
 
client_printiIdprint_console"Tu hardware id no se pudo verificar." );
 
client_printiIdprint_console"Cualquier duda entra a www.skaviados.net" );
 
 
server_cmd"kick #%d ^"No pudimos validar tu HID (Mirar consola)^""get_user_useridiId ) );
 
server_exec( );
 }
 else
 {
 
SQL_QueryiIdQuery_Load );
 }
 }
 }
}

public 
KickPlayeriId )
{
 
server_cmd"kick #%d ^"Ingreso restringido (Mirar consola)^""get_user_useridiId ) );
 
server_exec( );
}

public 
CommandLogsiId )
{
 if( !
HasPermissioniIdADMIN_BAN ) )
 {
 
console_printiId"[ABS] No tienes permisos suficientes para utilizar este comando." );
 
 return 
PLUGIN_HANDLED;
 }
 
 new 
szBuffer192 ];
 new 
szLogs15 ][ 192 ];
 
 new 
iFile fopeng_szLogFile"rt" );
 
 while( !
feofiFile ) )
 {
 
fgetsiFileszBuffercharsmaxszBuffer ) );
 
 
trimszBuffer );
 
remove_quotesszBuffer );
 
 if( 
strlenszBuffer ) < 10 )
 {
 continue;
 }
 
 for( new 
14i-- )
 {
 
szLogs] = szLogs];
 }
 
 
copyszLogs], charsmaxszLogs[ ] ), szBuffer );
 }
 
 for( new 
14>= 0i-- )
 {
 
console_printiId"[%d] %s", ( ), szLogs] );
 }
 
 
fcloseiFile );
 
 return 
PLUGIN_HANDLED;
}

public 
CommandInfoiId )
{
 if( !
HasPermissioniIdADMIN_BAN ) )
 {
 
console_printiId"[ABS] No tienes permisos suficientes para utilizar este comando." );
 
 return 
PLUGIN_HANDLED;
 }
 
 new 
iPlayers32 ];
 new 
szName32 ];
 
 new 
iNum;
 
 
get_playersiPlayersiNum );
 
 
console_printiId"^n**** Informacion sobre jugadores conectados ****" );
 
 for( new 
0iNumi++ )
 {
 
get_user_nameiPlayers], szNamecharsmaxszName ) );
 
 
console_printiId"Identificador: %05d | Bans: %02d | Nombre: %s."g_ePlayerDataiPlayers] ][ Player_Userid ], g_ePlayerDataiPlayers] ][ Player_Bans ], szName );
 }
 
 return 
PLUGIN_HANDLED;
}

public 
CommandLastiId )
{
 if( !
HasPermissioniIdADMIN_BAN ) )
 {
 
console_printiId"[ABS] No tienes permisos suficientes para utilizar este comando." );
 
 return 
PLUGIN_HANDLED;
 }
 
 new 
iPlayers32 ];
 new 
iNum;
 
 
get_playersiPlayersiNum );
 
 
console_printiId"**** Ultimas cinco desconexiones de jugadores ****" );
 
 for( new 
0sizeofg_eLastPlayers ); i++ )
 {
 if( 
g_eLastPlayers][ Last_Index ] == )
 {
 break;
 }
 
 
console_printiId"[%s] Identificador: %05d | Nombre: %s."g_eLastPlayers][ Last_Time ], g_eLastPlayers][ Last_Index ], g_eLastPlayers][ Last_Name ] );
 }
 
 return 
PLUGIN_HANDLED;
}

public 
CommandBannediId )
{
 if( !
HasPermissioniIdADMIN_BAN ) )
 {
 
console_printiId"[ABS] No tienes permisos suficientes para utilizar este comando." );
 
 return 
PLUGIN_HANDLED;
 }
 
 
console_printiId"[ Identificador | Ultimo nombre | Fecha | Tiempo restante | Razon ]" );
 
 
SQL_QueryiIdQuery_Banned );
 
 return 
PLUGIN_HANDLED;
}

public 
CommandBaniId )
{
 if( !
HasPermissioniIdADMIN_BAN ) )
 {
 
console_printiId"[ABS] No tienes permisos suficientes para utilizar este comando." );
 
 return 
PLUGIN_HANDLED;
 }
 
 new 
iTarget;
 new 
iTime;
 new 
iFile;
 new 
iReason;
 
 new 
szIndex];
 new 
szTime];
 new 
szReason];
 new 
szDate32 ];
 new 
szName32 ];
 
 if( 
read_argc( ) != )
 {
 
console_printiId"[ABS] Comando mal estructurado. Utilizacion: ^"abs_ban <id> <tiempo> <numero de razon> - Permanente: -1 min^"" );
 
console_printiId"[ABS] Las razones pueden ser:^n^n1. %s^n2. %s"g_szReasons], g_szReasons] );
 
console_printiId"3. %s^n4. %s^n5. %s^n6. %s"g_szReasons], g_szReasons], g_szReasons], g_szReasons] );
 
 return 
PLUGIN_HANDLED;
 }
 
 
read_argv1szIndexcharsmaxszIndex ) );
 
 if( ( 
iTarget str_to_numszIndex ) ) > )
 {
 
read_argv2szTimecharsmaxszTime ) );
 
 if( ( 
iTime str_to_numszTime ) ) != && ( 100000 >= iTime >= -) )
 {
 
read_argv3szReasoncharsmaxszReason ) );
 
 if( ( 
<= ( iReason str_to_numszReason ) - ) < sizeofg_szReasons ) ) )
 {
 if( !
SearchTargetiTarget ) )
 {
 
g_iBanDataBan_Banned ] = get_systime( );
 
g_iBanDataBan_Reason ] = iReason;
 
g_iBanDataBan_Time ] = iTime ? ( get_systime( ) + ( iTime 60 ) ) : -1;
 
 
get_time"%d/%m %H:%M:%S"szDatecharsmaxszDate ) ); get_user_nameiIdszNamecharsmaxszName ) );
 
 
iFile fopeng_szLogFile"a" );
 
fprintfiFile"[BAN] Admin: %s | Identificador: %d | Tiempo: %d min | Razon: %s | Fecha: %s.^n"szNameiTargetiTimeg_szReasonsiReason ], szDate ); fcloseiFile );
 
 
SQL_QueryiTargetQuery_Ban );
 }
 else
 {
 
g_ePlayerDataiTarget ][ Player_Time ] = iTime ? ( get_systime( ) + ( iTime 60 ) ):-1;
 
g_ePlayerDataiTarget ][ Player_Bans ]++;
 
g_ePlayerDataiTarget ][ Player_Reason ] = iReason;
 
g_ePlayerDataiTarget ][ Player_Banned ] = get_systime( );
 
 
BanPlayeriIdiTarget );
 }
 
 
console_printiId"[ABS] Identificador baneado correctamente." );
 }
 else
 {
 
console_printiId"[ABS] Has introducido una razon que no existe ( solo entre 1 y 6 )." );
 }
 }
 else
 {
 
console_printiId"[ABS] No has introducido un tiempo valido ( -1 para permanente )." );
 }
 }
 else
 {
 
console_printiId"[ABS] El identificador tiene que ser un numero positivo." );
 }
 
 return 
PLUGIN_HANDLED;
}

public 
CommandUnbaniId )
{
 if( !
HasPermissioniIdADMIN_BAN ) )
 {
 
console_printiId"[ABS] No tienes permisos suficientes para utilizar este comando." );
 
 return 
PLUGIN_HANDLED;
 }
 else if( 
read_argc( ) != )
 {
 
console_printiId"[ABS] Comando mal estructurado. Utilizacion: ^"abs_unban <identificador>^"" );
 
 return 
PLUGIN_HANDLED;
 }
 
 new 
iUserid;
 new 
szUserid];
 
 
read_argv1szUseridcharsmaxszUserid ) );
 
 if( 
< ( iUserid str_to_numszUserid ) ) )
 {
 
RegisterUnbaniIdiUserid );
 
 
SQL_QueryiUseridQuery_Unban );
 
 
console_printiId"[ABS] Se competo la operacion." );
 
console_printiId"[ABS] Si el identificador era correcto entonces ha sido desbaneado." );
 }
 else
 {
 
console_printiId"[ABS] El identificador tiene que ser un numero positivo." );
 }
 
 return 
PLUGIN_HANDLED;
}

public 
CommandIdiId )
{
 if( 
g_ePlayerDataiId ][ Player_Userid ] > )
 {
 
PrintColoriId"^x04[ABS]^x01 Tu identificador unico es^x04 %d^x01."g_ePlayerDataiId ][ Player_Userid ] );
 }
 
 return 
PLUGIN_HANDLED;
}

public 
client_putinserveriId )
{
 
SetPlayerBitg_iConnectediId );
 
 
get_user_nameiIdg_ePlayerDataiId ][ Player_Nick ], charsmaxg_ePlayerData[ ][ Player_Nick ] ) );
}

public 
client_disconnectediId )
{
 
ClearPlayerBitg_iConnectediId );
 
 
RegisterDisconnectiId );
 
 
g_ePlayerDataiId ][ Player_Played ] += get_user_timeiId );
 
 
SQL_QueryiIdQuery_Update );
 
 
g_ePlayerDataiId ][ Player_Userid ] = 0;
 
g_ePlayerDataiId ][ Player_HID ][ ] = EOS;
}

/* ===============================================================================
 * [ Menu's ]
 * =============================================================================== */

public ShowMenuBaniId )
{
 if( !
HasPermissioniIdADMIN_BAN ) )
 {
 
PrintColoriId"^x04[ABS]^x01 No tienes permisos suficientes para acceder a este menu." );
 
 return 
PLUGIN_HANDLED;
 }
 
 new 
szNum];
 new 
szData64 ];
 
 new 
iMenu menu_create"===========================^n    \wSistema de ban^n\y===========================""BanHandler" );
 
 
formatexszDatacharsmaxszData ), "Cambiar tiempo \y[\r%s\y]"g_eBanTimeg_iPlayerOptioniId ][ Option_Ban ] ][ Time_Type ] );
 
menu_additemiMenuszData"b" );
 
 
formatexszDatacharsmaxszData ), "Cambiar motivo \y[\r%s\y]^n"g_szReasonsg_iPlayerOptioniId ][ Option_Reason ] ] );
 
menu_additemiMenuszData"r" );
 
 for( new 
iPlayer 1iPlayer <= g_iMaxPlayersiPlayer++ )
 {
 if( !
GetPlayerBitg_iConnectediPlayer ) || HasPermissioniPlayerADMIN_IMMUNITY ) || ( g_ePlayerDataiPlayer ][ Player_Userid ] == ) )
 {
 continue;
 }
 
 
get_user_nameiPlayerszDatacharsmaxszData ) - 48 );
 
 
formatexszNumcharsmaxszNum ), "%d %d"iPlayerget_user_useridiPlayer ) );
 
formatexszDatastrlenszData ) ], charsmaxszData ) - 16" \d- \y[\wBans: \r%d\y]"g_ePlayerDataiPlayer ][ Player_Bans ] );
 
 
menu_additemiMenuszDataszNum );
 }
 
 
menu_setpropiMenuMPROP_NEXTNAME"Siguiente" );
 
menu_setpropiMenuMPROP_BACKNAME"Anterior" );
 
menu_setpropiMenuMPROP_EXITNAME"Cancelar" );
 
 
menu_displayiIdiMenu );
 
 return 
PLUGIN_HANDLED;
}

public 
BanHandleriIdiMenuiItem )
{
 if( 
iItem == MENU_EXIT )
 {
 
menu_destroyiMenu );
 
 return 
PLUGIN_HANDLED;
 }
 
 new 
szPlayer];
 new 
szData];
 
 new 
iPlayer;
 new 
iNum;
 
 
menu_item_getinfoiMenuiItemiNumszDatacharsmaxszData ), __iNum );
 
menu_destroyiMenu );
 
 switch( 
szData] )
 {
 case 
'b':
 {
 ( 
g_iPlayerOptioniId ][ Option_Ban ] < sizeofg_eBanTime ) - ) ?
 ( 
g_iPlayerOptioniId ][ Option_Ban ]++ ) :
 ( 
g_iPlayerOptioniId ][ Option_Ban ] = );
 
 
ShowMenuBaniId );
 }
 case 
'r':
 {
 ( 
g_iPlayerOptioniId ][ Option_Reason ] < sizeofg_szReasons ) - ) ?
 ( 
g_iPlayerOptioniId ][ Option_Reason ]++ ) : 
 ( 
g_iPlayerOptioniId ][ Option_Reason ] = );
 
 
ShowMenuBaniId );
 }
 default:
 {
 
strtokszDataszPlayercharsmaxszPlayer ), szDatacharsmaxszData ),' 'true );
 
 
iPlayer str_to_numszPlayer );
 
iNum str_to_numszData );
 
 if( 
GetPlayerBitg_iConnectediPlayer ) && ( get_user_useridiPlayer ) == iNum ) )
 {
 
g_ePlayerDataiPlayer ][ Player_Time ] = GetBanDurationiId );
 
g_ePlayerDataiPlayer ][ Player_Bans ]++;
 
g_ePlayerDataiPlayer ][ Player_Reason ] = g_iPlayerOptioniId ][ Option_Reason ];
 
g_ePlayerDataiPlayer ][ Player_Banned ] = get_systime( );
 
 
BanPlayeriIdiPlayer );
 
 
client_cmdiId"spk buttons/button3" );
 
 
PrintColoriId"^x04[ABS]^x01 Jugador baneado correctamente." );
 
PrintColoriId"^x04[ABS]^x01 Verifica el foro periodicamente para evitar inconvenientes." );
 }
 else
 {
 
PrintColoriId"^x04[ABS]^x01 No existe el jugador especificado." );
 }
 }
 }
 
 return 
PLUGIN_HANDLED;
}

/* ===============================================================================
 * [ Modules ]
 * =============================================================================== */

BanPlayer( const iBanner, const iBanned )
{
 new 
szDate32 ];
 
 
get_time"%d/%m %H:%M:%S"szDatecharsmaxszDate ) );
 
 new 
iFile fopeng_szLogFile"a" );
 
 
fprintfiFile"[Ban] Admin: %s | Jugador: %s | Identificador: %d | Duracion: %d | Razon: %s | Fecha: %s.^n"g_ePlayerDataiBanner ][ Player_Nick ], g_ePlayerDataiBanned ][ Player_Nick ], g_ePlayerDataiBanned ][ Player_Userid ], ( g_ePlayerDataiBanned ][ Player_Time ] - get_systime( ) ) / 60g_szReasonsg_ePlayerDataiBanned ][ Player_Reason ] ], szDate );
 
fcloseiFile );
 
 
PrintColoriBanner,"^x04[ABS]^x01 Jugador baneado correctamente. [ Identificador: %d ]"g_ePlayerDataiBanned ][ Player_Userid ] );
 
 
PrintUserInformationiBanned );
 
 
set_task0.25"KickPlayer"iBanned );
 
 return 
true;
}

SearchTarget( &iTarget )
{
 for( new 
iPlayer 1iPlayer <= g_iMaxPlayersiPlayer++ )
 {
 if( !
is_user_connectediPlayer ) || ( g_ePlayerDataiPlayer ][ Player_Userid ] != iTarget ) )
 {
 continue;
 }
 
 
iTarget iPlayer;
 
 return 
true;
 }
 
 return 
false;
}

RegisterUnban( const iId, const iUserid )
{
 new 
szDate32 ];
 
 
get_time"%d/%m %H:%M:%S"szDatecharsmaxszDate ) );
 
 new 
iFile fopeng_szLogFile"a" );
 
 
fprintfiFile,"[ Unban ] Administrador: %s | Identificador: %d | Fecha: %s.^n"g_ePlayerDataiId ][ Player_Nick ], iUseridszDate );
 
fcloseiFile );
}

RegisterDisconnect( const iId )
{
 if( 
g_ePlayerDataiId ][ Player_Userid ] == )
 {
 return;
 }
 
 for( new 
4i-- )
 {
 
g_eLastPlayers] = g_eLastPlayers];
 }
 
 
g_eLastPlayers][ Last_Index ] = g_ePlayerDataiId ][ Player_Userid ];
 
 
get_user_nameiIdg_eLastPlayers][ Last_Name ], charsmaxg_eLastPlayers[ ][ Last_Name ] ) );
 
get_time"%H:%M:%S"g_eLastPlayers][ Last_Time ], charsmaxg_eLastPlayers[ ][ Last_Time ] ) );
}

PrintUserInformation( const iId )
{
 
client_printiIdprint_console"Usted se encuentra baneado de Skaviados" );
 
client_printiIdprint_console"- Motivo del ban: %s"g_szReasonsg_ePlayerDataiId ][ Player_Reason ] ] );
 
client_printiIdprint_console"- Tiempo restante estimado: %d minutos", ( g_ePlayerDataiId ][ Player_Time ] - get_systime( ) ) / 60 );
 
client_printiIdprint_console"- Identificador: %d ( necesario para quejas/unban )"g_ePlayerDataiId ][ Player_Userid ] );
 
client_printiIdprint_console"Cualquier duda entre a www.skaviados.net" );
}

FindPlayer( &iId, const iUserId )
{
 for( 
iId 1iId <= g_iMaxPlayersiId++ )
 {
 if( 
is_user_connectediId ) && ( get_user_useridiId ) == iUserId ) )
 {
 return 
true;
 }
 }
 
 return 
false;
}

PrintColor( const iIdszText[ ], any:... )
{
 static 
szBuffer192 ];
 
 
vformatszBuffer,charsmaxszBuffer ),szText,);
 
 if( !
iId 
 {
 
message_beginMSG_BROADCASTg_iSayText_iId );
 
write_byte);
 
write_stringszBuffer );
 
message_end( );
 }
 else 
 {
 
message_beginMSG_ONE_UNRELIABLEg_iSayText_iId );
 
write_byteiId );
 
write_stringszBuffer );
 
message_end( );
 }
}

/* ===============================================================================
 * [ SQL Section ]
 * =============================================================================== */
 
SQL_Init( )
{
 new 
szDriver];
 
 
SQL_SetAffinity"sqlite" );
 
SQL_GetAffinityszDrivercharsmaxszDriver ) );
 
 if( !
equaliszDriver"sqlite" ) )
 {
 
set_fail_state"[ABS] No se ha podido establecer la afinidad a SQLite." );
 }
 
 
g_hTuple SQL_MakeDbTuple"""""""bans" );
 
 
get_localinfo"amxx_datadir"g_szLogFilecharsmaxg_szLogFile ) );
 
addg_szLogFilecharsmaxg_szLogFile ), "/abs/logs.ini" );
}

SQL_Query( const iId,const iType )
{
 static 
szData],szQuery256 ];
 
 
szData] = iId;
 
szData] = iType;
 
 switch( 
iType )
 {
 case 
Query_Load:
 
formatexszQuerycharsmaxszQuery ), "SELECT * FROM users WHERE user_hid=^"%s^""g_ePlayerDataiId ][ Player_HID ] );
 case 
Query_Create:
 
formatexszQuerycharsmaxszQuery ), "INSERT INTO users ( user_hid ) VALUES ( ^"%s^" )"g_ePlayerDataiId ][ Player_HID ] );
 case 
Query_Update:
 
formatexszQuerycharsmaxszQuery ), "UPDATE users SET user_nick=^"%s^",user_time='%d',user_demo='%d',user_bans='%d',user_played='%d',user_reason='%d',user_banned='%d' WHERE user_id='%d'",
 
g_ePlayerDataiId ][ Player_Nick ],
 
g_ePlayerDataiId ][ Player_Time ],
 
g_ePlayerDataiId ][ Player_Demo ],
 
g_ePlayerDataiId ][ Player_Bans ],
 
g_ePlayerDataiId ][ Player_Played ],
 
g_ePlayerDataiId ][ Player_Reason ],
 
g_ePlayerDataiId ][ Player_Banned ],
 
g_ePlayerDataiId ][ Player_Userid ] );
 case 
Query_Ban:
 
formatexszQuerycharsmaxszQuery ), "UPDATE users SET user_time='%d',user_reason='%d',user_banned='%d' WHERE user_id=%d"g_iBanDataBan_Time ], g_iBanDataBan_Reason ], g_iBanDataBan_Banned ], iId );
 case 
Query_Unban:
 
formatexszQuerycharsmaxszQuery ), "UPDATE users SET user_time='0' WHERE user_id=%d"iId );
 case 
Query_Banned:
 
formatexszQuerycharsmaxszQuery ), "SELECT * FROM users WHERE ( user_time > '%d' OR user_time = '-1' ) ORDER BY user_banned DESC LIMIT 30"get_systime( ) );
 }
 
 
SQL_ThreadQueryg_hTuple"SQL_Handler"szQueryszDatacharsmaxszData ) );
 
 return 
1;
}

public 
SQL_HandleriFailstateHandle:hQueryszError[ ], iErrsizeszData[ ], iDatasize )
{
 new 
iId szData];
 new 
iType szData];
 
 if( 
iFailstate TQUERY_SUCCESS )
 {
 
log_amx"[ABS] Hubo un error en el handler. %s"szError );
 
 return;
 }
 
 switch( 
iType )
 {
 case 
Query_Load:
 {
 if( 
SQL_NumResultshQuery ) == )
 {
 
SQL_QueryiIdQuery_Create );
 
 return;
 }
 
 
g_ePlayerDataiId ][ Player_Userid ] = SQL_ReadResulthQuery);
 
g_ePlayerDataiId ][ Player_Time ] = SQL_ReadResulthQuery);
 
g_ePlayerDataiId ][ Player_Demo ] = SQL_ReadResulthQuery);
 
g_ePlayerDataiId ][ Player_Bans ] = SQL_ReadResulthQuery);
 
g_ePlayerDataiId ][ Player_Reason ] = SQL_ReadResulthQuery);
 
g_ePlayerDataiId ][ Player_Banned ] = SQL_ReadResulthQuery);
 
g_ePlayerDataiId ][ Player_Played ] = SQL_ReadResulthQuery);
 
 if( ( 
g_ePlayerDataiId ][ Player_Time ] == -) || ( g_ePlayerDataiId ][ Player_Time ] > get_systime( ) ) )
 {
 
PrintUserInformationiId );
 
 
set_task0.25"KickPlayer"iId );
 }
 }
 case 
Query_Create:
 {
 
g_ePlayerDataiId ][ Player_Userid ] = SQL_GetInsertIdhQuery );
 
 
console_printiId"[ABS] Este servidor cuenta con *Advanced Ban System v1.0b* ." );
 
console_printiId"[ABS] Le informamos que usted ha sido registrado en la base de datos ." );
 }
 case 
Query_Banned:
 {
 new 
szDate32 ];
 new 
szName32 ];
 
 new 
iUser;
 new 
iTime;
 new 
iDate;
 new 
iReason;
 
 while( 
SQL_MoreResultshQuery ) )
 {
 
iUser SQL_ReadResulthQuery);
 
iTime SQL_ReadResulthQuery);
 
iReason SQL_ReadResulthQuery);
 
iDate SQL_ReadResulthQuery);
 
 
format_timeszDatecharsmaxszDate ), "%c"iDate );
 
 
SQL_ReadResulthQuery8szNamecharsmaxszName ) );
 
 
console_printiId"[ %d ] %s | %s | %d minutos | %s"iUserszNameszDate, ( iTime > -) ? ( ( iTime get_systime( ) ) / 60 ) : -1g_szReasonsiReason ] );
 
 
SQL_NextRowhQuery );
 }
 }
 }


Te lo hizo Treki.

Adjunto base de datos que realicé para que puedan utilizar el plugin. saludos.


Archivos adjuntos
.sq3   bans.sq3 (Tamaño: 16 KB / Descargas: 27)
Ingeniero agrónomo y desarrollador de Software.

tutoriales-allied
buscas un zp?

"La imitación es la forma más sincera de admiración con la que puede pagar la mediocridad a la grandeza"

Merci Alliedmodders pour m'introduire dans la programmation.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)