Admin Vencimiento MySQL v1.0
#1
Buenas en está ocasión vengo a aportar la beta de admins vencimiento por MySQL & una pequeña APP de gestión


DESCRIPCIÓN:
Es un admins Vencimientos POR NICK via MySQL y puedes agregar tus admins con facilidad desde una APP desarrollada en c#

REQUERIMIENTOS

MySQL CONNECTOR: https://dev.mysql.com/downloads/file/?id=475576
MODULO MySQLT: https://amxmodx-es.com/Thread-Modulo-MySQL-Threads-1-2
FRAMEWORK 4.5
VISUAL STUDIO 2012 ( PARA COMPILAR EL PROGRAMA )
AMXX STUDIO ( PARA COMPILAR EL PLUGIN )


IMAGENES:

[Imagen: gg.jpg]


[Imagen: gg2.jpg]

[Imagen: gg3.jpg]

[Imagen: gg4.jpg]

COMO AGREGA UN ADMIN!?

"NICK" "PW" "FLAGS" "TIPO" "02/11/2018"


PLUGIN SMA
Código PHP:
/* Script generated by Pawn Studio */

#include <amxmodx>
#include <amxmisc>
#include <mysqlt>
#include <fakemeta> 

#define PLUGIN    "Admins  MysQL"
#define AUTHOR    "Hypnotize"
#define VERSION    "1.0"

new const HOST[] = "";
new const 
USUARIO[] = "k1s";
new const 
PASSWORD[] = "";
new const 
DB[] = "test_pin";

new const 
szTableP[] = "mysql_admins";

new 
Handle:g_isTupleHandle:g_Connection;

new 
g_password33 ][ 32 ];
new 
iNombre33 ][ 32 ];

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
// Add your own code here
    
MySQL_Init( );
    
    
register_forward(FM_ClientUserInfoChanged"ClientUserInfoChanged"
    
    
remove_user_flags(0read_flags("z"))
    
register_concmd("amx_admins""adminSql");
    
server_cmd("amx_admins");
    
}
public 
client_putinserverid )
{
    
get_user_nameidiNombreid ], charsmaxiNombre ) );
    
    new 
Query300 ], iData];
    
iData] = id;
    
iData] = 1;
    
    
formatexQuery charsmaxQuery ) , "SELECT fecha FROM %s WHERE authid = ^"%s^""szTablePiNombreid ] );
    
mysql_query(g_Connection"fnCargar"QueryiData);
    
}
public 
ClientUserInfoChanged(id

    static const 
name[] = "name" 
    
static szOldName[32], szNewName[32
    
pev(idpev_netnameszOldNamecharsmax(szOldName)) 
    if( 
szOldName[0] ) 
    { 
        
get_user_info(idnameszNewNamecharsmax(szNewName)) 
        if( !
equal(szOldNameszNewName) ) 
        { 
            
set_user_info(idnameszOldName
            return 
FMRES_HANDLED 
        

    } 
    return 
FMRES_IGNORED 

public 
adminSql( )
{
    new 
Query300 ];
    
formatexQuery charsmaxQuery ) , "SELECT authid, password, access, flags FROM %s"szTableP );
    
mysql_query(g_Connection"fnAdmins"Query );
}
public 
MySQL_Init( )
{
    
g_isTuple mysql_makehost(HOSTUSUARIOPASSWORDDB);
    
    new 
error32 ], errnum;
    
g_Connection mysql_connect(g_isTupleerrnumerror31);
    
    if(
errnum)
    {
        
log_to_file("mysqlt.log""ERROR1: [%d]- [%s]"errnumerror)
        return 
pause"a" );
    }
    new 
szTable1000 ], len 0;
    
    
len += format(szTable[len], charsmax(szTable) - len"CREATE TABLE IF NOT EXISTS %s"szTableP);
    
len += format(szTable[len], charsmax(szTable) - len"( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,");
    
len += format(szTable[len], charsmax(szTable) - len"authid varchar(110) NOT NULL UNIQUE,");
    
len += format(szTable[len], charsmax(szTable) - len"password varchar(110) NOT NULL,");
    
len += format(szTable[len], charsmax(szTable) - len"access varchar(50) NOT NULL,");
    
len += format(szTable[len], charsmax(szTable) - len"flags varchar(10) NOT NULL,");
    
len += format(szTable[len], charsmax(szTable) - len"fecha varchar(50) )");
    
mysql_query(g_Connection"QueryCreateTable"szTable);
    
    return 
PLUGIN_CONTINUE;
}

public 
QueryCreateTable(failstateerror[], error2data[], sizeFloat:queuetime)
{
    switch ( 
failstate )
    {
        case 
TQUERY_CONNECT_FAILEDlog_to_file("SQL_LOG_TQ.txt""Failed to connect to database [%i]: %s"error2error)
        case 
TQUERY_QUERY_FAILEDlog_to_file("SQL_LOG_TQ.txt""Error on query for creating table [%i]: %s"error2error)
    }
    
    return 
PLUGIN_HANDLED;
}
public 
fnCargar(failstateerror[], error2data[], sizeFloat:queuetime)
{
    static 
idid data];
    
    if( !
is_user_connectedid ) ) return;
    
    switch( 
failstate ) {
        case 
TQUERY_CONNECT_FAILED: {
            
log_to_file"SQL_LOG_TQ.txt""Error en la conexion al MySQL [%i]: %s"error2error );
            return;
        }
        case 
TQUERY_QUERY_FAILED:
        
log_to_file"SQL_LOG_TQ.txt""Error en la consulta al MySQL [%i]: %s"error2error );
    }
    
    switch( 
data] ) 
    {
        case 
1:
        {
            if( 
mysql_num_results( ) )
            {
                new 
szDate[60];
                
mysql_read_result(0szDatesizeof(szDate));
                
replace_all(szDatecharsmax(szDate), "/"" ");
                new 
Dia[100]; get_time("%d/%m/%Y"Diacharsmax(Dia)) 
                
                new 
szDay[10], szMonth[10], szYear[10];
                
parse(szDateszDaycharsmax(szDay), szMonthcharsmax(szMonth), szYearcharsmax(szYear));
                
                new 
szDay2[10], szMonth2[10], szYear2[10];
                
replace_all(Diacharsmax(Dia), "/"" ");
                
parse(DiaszDay2charsmax(szDay2), szMonth2charsmax(szMonth2), szYear2charsmax(szYear2));
                
                if( 
str_to_num(szDay2) >= str_to_num(szDay) && str_to_num(szMonth2) >= str_to_num(szMonth)  && str_to_num(szYear2) >= str_to_num(szYear) )
                {
                    new 
Query300 ];
                    
formatexQuery charsmaxQuery ) , "DELETE FROM %s WHERE authid = ^"%s^""szTablePiNombreid ] );
                    
mysql_query(g_Connection"fnCargarAdmin"Query );
                }
                else
                {
                    
adminSql( );
                }
            }
        }
    }

public 
fnCargarAdmin(failstateerror[], errnumdata[], sizeFloat:queuetime)
{
    if(
failstate != TQUERY_SUCCESS)
    {
        
log_to_file("mysqlt.log""ERROR1: [%d]- [%s]"errnumerror)
        return 
PLUGIN_HANDLED;
    }
    
    
    if( 
mysql_affected_rows() )
    {
        
adminSql( );
    }
    return 
PLUGIN_CONTINUE;

public 
fnAdmins(failstateerror[], errnumdata[], sizeFloat:queuetime)
{
    if(
failstate != TQUERY_SUCCESS)
    {
        
log_to_file("mysqlt.log""ERROR2: [%d]- [%s]"errnumerror)
        return 
PLUGIN_HANDLED;
    }
    
    static 
id;
    
id data[0];
    
    if(!
mysql_num_results())
    {
        
remove_user_flags(id);
        return 
PLUGIN_HANDLED;
    }
    
    if( 
mysql_num_results( ) )
    {
        new 
Authid[33], Password[33], Access[33], Flags[33];
        
        while( 
mysql_more_results( ) )
        {
            
mysql_read_result(0Authidsizeof(Authid));
            
mysql_read_result(1Passwordsizeof(Password));
            
mysql_read_result(2Accesssizeof(Access));
            
mysql_read_result(3Flagssizeof(Flags));
            
            
admins_push(AuthidPasswordread_flags(Access), read_flags(Flags));
            
            
mysql_next_row();
        }
    }
    
    
users_access();
    return 
PLUGIN_CONTINUE;

stock users_access(){
    new 
players[32];
    new 
iNum;
    
get_players(playersiNum);
    for(--
iNumiNum >= 0iNum--){
        
SetFlags(players[iNum]);
    }
}

stock SetFlags(idname[] = ""){
    
remove_user_flags(id);
    
    new 
szName[32];
    
get_user_info(id"_pw"g_password[id], sizeof(g_password[]));
    if(
name[0])
        
copy(szNamesizeof(szName), name);
    else
    
get_user_name(idszName31);
    
    new 
result lookup_access(idszNameg_password[id])
    
    if(
result 1)
    {
        
server_cmd("kick #%d ^"Ingresa la setinfo de tu administrador^""get_user_userid(id));
        return 
PLUGIN_HANDLED;
    }
    if(
result 2){
        
server_cmd("kick #%d ^"Ingresa la setinfo de tu administrador^""get_user_userid(id));
        return 
PLUGIN_HANDLED;
    }
    if(
result 4)
        
client_cmd(id"echo ^"*Password validated!^"");
    if(
result 8)
        
client_cmd(id"echo ^"Privilegios establecidos!^"");
    
    return 
PLUGIN_CONTINUE;
}
stock lookup_access(idusername[], password[]) {
    new 
index = -1result 0;
    new 
iadminname[32], adminpassword[32], count admins_num()-1;
    
    for(
count>= 0i--) {
        
admins_lookup(iAdminProp_Authadminnamecharsmax(adminname));
        if(
equali(usernameadminname)) {
            
index i;
            break;
        }
    }
    
    if(
index != -1) {
        new 
access admins_lookup(indexAdminProp_Access), ip[32], steamid[32];
        
admins_lookup(indexAdminProp_Passwordadminpasswordcharsmax(adminpassword));
        
get_user_ip(idipcharsmax(ip), 1);
        
get_user_authid(idsteamidcharsmax(steamid));
        
        if(
equal(passwordadminpassword)) {
            
            
result |= 12;
            
set_user_flags(idaccess);
            
            new 
sflags[32];
            
get_flags(accesssflagscharsmax(sflags));
            
            
log_amx("[AMXX] Login: ^"%s<%d><%s><>^" became an admin (access ^"%s^") (address ^"%s^")"usernameget_user_userid(id), steamidsflagsip);
        }
        else {
            
result |= 1;
            
            if(
admins_lookup(indexAdminProp_Flags) & FLAG_KICK) {
                
result |= 2;
                
log_amx("[AMXX] Login: ^"%s<%d><%s><>^" kicked due to invalid password (address ^"%s^")"usernameget_user_userid(id), steamidip);
            }
        }
    }
    else {
        new 
access read_flags("z");
        
        if(
access) {
            
result |= 8;
            
set_user_flags(idaccess);
        }
    }
    
    return 
result;

/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang3082\\ f0\\ fs16 \n\\ par }
*/ 
v2
Código PHP:
/* Script generated by Pawn Studio */

#include <amxmodx>
#include <amxmisc>
#include <mysqlt>
#include <fakemeta> 

#define PLUGIN    "Admins MySQL"
#define AUTHOR    "Hypnotize"
#define VERSION    "1.0"

new const HOST[] = "127.0.0.1";
new const 
USUARIO[] = ""
new const 
PASSWORD[] = ""
new const 
DB[] = "scs_ch"

new const 
szTableP[] = "mysql_admins";

new 
Handle:g_isTupleHandle:g_Connection;

new 
iNombre33 ][ 32 ];
new 
boolg_CaseSensitiveName33 ];
new 
amx_default_accessamx_password_fieldamx_mode;

public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
// Add your own code here
    
MySQL_Init( );
    
    
register_forward(FM_ClientUserInfoChanged"ClientUserInfoChanged"
    
    
remove_user_flags(0read_flags("z"))
    
register_concmd("amx_admins""adminSql");
    
amx_mode=register_cvar("amx_mode""1"FCVAR_PROTECTED);
    
amx_default_access=register_cvar("amx_default_access"""FCVAR_PROTECTED);
    
amx_password_field=register_cvar("amx_password_field""_pw"FCVAR_PROTECTED);
    
server_cmd("amx_admins");
    
}

public 
client_authorized(id)
    return 
get_pcvar_num(amx_mode) ? accessUser(id) : PLUGIN_CONTINUE

public client_putinserverid )
{
    
get_user_nameidiNombreid ], charsmaxiNombre ) );
    
    new 
Query300 ], iData];
    
iData] = id;
    
iData] = 1;
    
    
formatexQuery charsmaxQuery ) , "SELECT fecha FROM %s WHERE authid = ^"%s^""szTablePiNombreid ] );
    
mysql_query(g_Connection"fnCargar"QueryiData);
    
    if (!
is_dedicated_server() && id == 1)
        return 
get_pcvar_num(amx_mode) ? accessUser(id) : PLUGIN_CONTINUE;
    
    return 
PLUGIN_CONTINUE;
}
public 
ClientUserInfoChanged(id

    static const 
name[] = "name" 
    
static szOldName[32], szNewName[32
    
pev(idpev_netnameszOldNamecharsmax(szOldName)) 
    if( 
szOldName[0] ) 
    { 
        
get_user_info(idnameszNewNamecharsmax(szNewName)) 
        if( !
equal(szOldNameszNewName) ) 
        { 
            
set_user_info(idnameszOldName
            return 
FMRES_HANDLED 
        

    } 
    return 
FMRES_IGNORED 

public 
adminSql( )
{
    new 
Query300 ];
    
formatexQuery charsmaxQuery ) , "SELECT authid, password, access, flags FROM %s"szTableP );
    
mysql_query(g_Connection"fnAdmins"Query );
}
public 
MySQL_Init( )
{
    
g_isTuple mysql_makehost(HOSTUSUARIOPASSWORDDB);
    
    new 
error32 ], errnum;
    
g_Connection mysql_connect(g_isTupleerrnumerror31);
    
    if(
errnum)
    {
        
log_to_file("mysqlt.log""ERROR1: [%d]- [%s]"errnumerror)
        return 
pause"a" );
    }
    new 
szTable1000 ], len 0;
    
    
len += format(szTable[len], charsmax(szTable) - len"CREATE TABLE IF NOT EXISTS %s"szTableP);
    
len += format(szTable[len], charsmax(szTable) - len"( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,");
    
len += format(szTable[len], charsmax(szTable) - len"authid varchar(110) NOT NULL UNIQUE,");
    
len += format(szTable[len], charsmax(szTable) - len"password varchar(110) NOT NULL,");
    
len += format(szTable[len], charsmax(szTable) - len"access varchar(50) NOT NULL,");
    
len += format(szTable[len], charsmax(szTable) - len"flags varchar(10) NOT NULL,");
    
len += format(szTable[len], charsmax(szTable) - len"fecha varchar(50) )");
    
mysql_query(g_Connection"QueryCreateTable"szTable);
    
    return 
PLUGIN_CONTINUE;
}

public 
QueryCreateTable(failstateerror[], error2data[], sizeFloat:queuetime)
{
    switch ( 
failstate )
    {
        case 
TQUERY_CONNECT_FAILEDlog_to_file("SQL_LOG_TQ.txt""Failed to connect to database [%i]: %s"error2error)
        case 
TQUERY_QUERY_FAILEDlog_to_file("SQL_LOG_TQ.txt""Error on query for creating table [%i]: %s"error2error)
    }
    
    return 
PLUGIN_HANDLED;
}
public 
fnCargar(failstateerror[], error2data[], sizeFloat:queuetime)
{
    static 
idid data];
    
    if( !
is_user_connectedid ) ) return;
    
    switch( 
failstate ) {
        case 
TQUERY_CONNECT_FAILED: {
            
log_to_file"SQL_LOG_TQ.txt""Error en la conexion al MySQL [%i]: %s"error2error );
            return;
        }
        case 
TQUERY_QUERY_FAILED:
        
log_to_file"SQL_LOG_TQ.txt""Error en la consulta al MySQL [%i]: %s"error2error );
    }
    
    switch( 
data] ) 
    {
        case 
1:
        {
            if( 
mysql_num_results( ) )
            {
                new 
szDate[60];
                
mysql_read_result(0szDatesizeof(szDate));
                
replace_all(szDatecharsmax(szDate), "/"" ");
                new 
Dia[100]; get_time("%d/%m/%Y"Diacharsmax(Dia)) 
                
                new 
szDay[10], szMonth[10], szYear[10];
                
parse(szDateszDaycharsmax(szDay), szMonthcharsmax(szMonth), szYearcharsmax(szYear));
                
                new 
szDay2[10], szMonth2[10], szYear2[10];
                
replace_all(Diacharsmax(Dia), "/"" ");
                
parse(DiaszDay2charsmax(szDay2), szMonth2charsmax(szMonth2), szYear2charsmax(szYear2));
                
                if( 
str_to_num(szDay2) >= str_to_num(szDay) && str_to_num(szMonth2) >= str_to_num(szMonth)  && str_to_num(szYear2) >= str_to_num(szYear) )
                {
                    new 
Query300 ];
                    
formatexQuery charsmaxQuery ) , "DELETE FROM %s WHERE authid = ^"%s^""szTablePiNombreid ] );
                    
mysql_query(g_Connection"fnCargarAdmin"Query );
                }
                else
                {
                    
adminSql( );
                }
            }
        }
    }

public 
fnCargarAdmin(failstateerror[], errnumdata[], sizeFloat:queuetime)
{
    if(
failstate != TQUERY_SUCCESS)
    {
        
log_to_file("mysqlt.log""ERROR1: [%d]- [%s]"errnumerror)
        return 
PLUGIN_HANDLED;
    }
    
    
    if( 
mysql_affected_rows() )
    {
        
adminSql( );
    }
    return 
PLUGIN_CONTINUE;

public 
fnAdmins(failstateerror[], errnumdata[], sizeFloat:queuetime)
{
    if(
failstate != TQUERY_SUCCESS)
    {
        
log_to_file("mysqlt.log""ERROR2: [%d]- [%s]"errnumerror)
        return 
PLUGIN_HANDLED;
    }
    
    static 
id;
    
id data[0];
    
    if(!
mysql_num_results())
    {
        
remove_user_flags(id);
        return 
PLUGIN_HANDLED;
    }
    
    if( 
mysql_num_results( ) )
    {
        new 
Authid[33], Password[33], Access[33], Flags[33];
        
        while( 
mysql_more_results( ) )
        {
            
mysql_read_result(0Authidsizeof(Authid));
            
mysql_read_result(1Passwordsizeof(Password));
            
mysql_read_result(2Accesssizeof(Access));
            
mysql_read_result(3Flagssizeof(Flags));
            
            
admins_push(AuthidPasswordread_flags(Access), read_flags(Flags));
            
            
mysql_next_row();
        }
    }
    
    
users_access();
    return 
PLUGIN_CONTINUE;

stock users_access(){
    new 
players[32];
    new 
iNum;
    
get_players(playersiNum);
    for(--
iNumiNum >= 0iNum--){
        
accessUser(players[iNum]);
    }
}
public 
client_connect(id)
{
    
g_CaseSensitiveName[id] = false;
}

getAccess(idname[], authid[], ip[], password[])
{
    new 
index = -1
    
new result 0
    
    
static Count;
    static 
Flags;
    static 
Access;
    static 
AuthData[44];
    static 
Password[32];
    
    
g_CaseSensitiveName[id] = false;
    
    
Count=admins_num();
    for (new 
0Count; ++i)
    {
        
Flags=admins_lookup(i,AdminProp_Flags);
        
admins_lookup(i,AdminProp_Auth,AuthData,charsmax(AuthData));
        
        if (
Flags FLAG_AUTHID)
        {
            if (
equal(authidAuthData))
            {
                
index i
                
break
            }
        }
        else if (
Flags FLAG_IP)
        {
            new 
strlen(AuthData)
            
            if (
AuthData[1] == '.')        /* check if this is not a xxx.xxx. format */
            
{
                if (
equal(AuthDataipc))
                {
                    
index i
                    
break
                }
            }                                    
/* in other case an IP must just match */
            
else if (equal(ipAuthData))
            {
                
index i
                
break
            }
        } 
        else 
        {
            if (
Flags FLAG_CASE_SENSITIVE)
            {
                if (
Flags FLAG_TAG)
                {
                    if (
contain(nameAuthData) != -1)
                    {
                        
index i
                        g_CaseSensitiveName
[id] = true
                        
break
                    }
                }
                else if (
equal(nameAuthData))
                {
                    
index i
                    g_CaseSensitiveName
[id] = true
                    
break
                }
            }
            else
            {
                if (
Flags FLAG_TAG)
                {
                    if (
containi(nameAuthData) != -1)
                    {
                        
index i
                        
break
                    }
                }
                else if (
equali(nameAuthData))
                {
                    
index i
                    
break
                }
            }
        }
    }
    
    if (
index != -1)
    {
        
Access=admins_lookup(index,AdminProp_Access);
        
        if (
Flags FLAG_NOPASS)
        {
            
result |= 8
            
new sflags[32]
            
            
get_flags(Accesssflagscharsmax(sflags))
            
set_user_flags(idAccess)
            
            
log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^")"nameget_user_userid(id), authidAuthDatasflagsip)
        }
        else 
        {
            
            
admins_lookup(index,AdminProp_Password,Password,charsmax(Password));
            
            if (
equal(passwordPassword))
            {
                
result |= 12
                set_user_flags
(idAccess)
                
                new 
sflags[32]
                
get_flags(Accesssflagscharsmax(sflags))
                
                
log_amx("Login: ^"%s<%d><%s><>^" became an admin (account ^"%s^") (access ^"%s^") (address ^"%s^")"nameget_user_userid(id), authidAuthDatasflagsip)
            } 
            else 
            {
                
result |= 1
                
                
if (Flags FLAG_KICK)
                {
                    
result |= 2
                    log_amx
("Login: ^"%s<%d><%s><>^" kicked due to invalid password (account ^"%s^") (address ^"%s^")"nameget_user_userid(id), authidAuthDataip)
                }
            }
        }
    }
    else if (
get_pcvar_float(amx_mode) == 2.0)
    {
        
result |= 2
    

    else 
    {
        new 
defaccess[32]
        
        
get_pcvar_string(amx_default_accessdefaccesscharsmax(defaccess))
        
        if (!
strlen(defaccess))
        {
            
copy(defaccesscharsmax(defaccess), "z")
        }
        
        new 
idefaccess read_flags(defaccess)
        
        if (
idefaccess)
        {
            
result |= 8
            set_user_flags
(ididefaccess)
        }
    }
    
    return 
result
}

accessUser(idname[] = "")
{
    
remove_user_flags(id)
    
    new 
userip[32], userauthid[32], password[32], passfield[32], username[MAX_NAME_LENGTH]
    
    
get_user_ip(iduseripcharsmax(userip), 1)
    
get_user_authid(iduserauthidcharsmax(userauthid))
    
    if (
name[0])
    {
        
copy(usernamecharsmax(username), name)
    }
    else
    {
        
get_user_name(idusernamecharsmax(username))
    }
    
    
get_pcvar_string(amx_password_fieldpassfieldcharsmax(passfield))
    
get_user_info(idpassfieldpasswordcharsmax(password))
    
    new 
result getAccess(idusernameuserauthiduserippassword)
    
    if (
result 1)
    {
        
engclient_print(idengprint_console"* %L"id"INV_PAS")
    }
    
    if (
result 2)
    {
        
server_cmd("kick #%d ^"%L^""get_user_userid(id), id"NO_ENTRY")
        return 
PLUGIN_HANDLED
    
}
    
    if (
result 4)
    {
        
engclient_print(idengprint_console"* %L"id"PAS_ACC")
    }
    
    if (
result 8)
    {
        
engclient_print(idengprint_console"* %L"id"PRIV_SET")
    }
    
    return 
PLUGIN_CONTINUE


APP SIN COMPILAR: https://mega.nz/#!B7xy3SqK!S8YuNcfWsOzPL...Gmxg9qOdNA


ES BETA RECIÉN LA HICE xd
puede tener fallos Whatever

PROYECTO COMPILADO LISTO PARA INSTALAR
lo encontraran como "Conex"
una ves instalado

EDIT;

CREDITOS

NIPER ( LE SAQUE UNOS STOCKS xd )
DESTRO ( MODULO MYSQLT )
Responder
#2
Irgaaa que weno estaa we
Cita: Kikizon2 Dijo :
Lo que deberian de aprender es a escribir, parece que escriben con el escroto en la mano.
Responder
#3
thnx

aunque no es necesario citar todo xd
Responder
#4
(02/11/2018, 05:40 PM)Hypnotize escribió: thnx

aunque no es necesario citar todo xd

e.e xd Como sea igual me gusta vere si lo Descargo y lo pruebo en el dedicado
Cita: Kikizon2 Dijo :
Lo que deberian de aprender es a escribir, parece que escriben con el escroto en la mano.
Responder
#5
Porque no lo haces via web? En vez de tener que descargar un complemento extra? Es mas practico...

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook

[Imagen: w8565u-4.png]
Responder
#6
No se php o js aun xd Whatdone ( no se nada de web aun )

voy por java ahora, luego me paso a esos man

pero gracias por la sugerencia xd
Responder
#7
(02/11/2018, 06:30 PM)Hypnotize escribió: No se php o js aun xd Whatdone ( no se nada de web aun )

voy por java ahora, luego me paso a esos man

pero gracias por la sugerencia xd

xd Tambien seria interesante Aprender sobre Webs xd Ami tambien gustaria aprender
Cita: Kikizon2 Dijo :
Lo que deberian de aprender es a escribir, parece que escriben con el escroto en la mano.
Responder
#8
mejor aprende a irte a la verga pacman

deja de comentar puras totadas en todos los temas Whatever

NO RESPONDAS Y DEJA DE DESVIRTUAR
Responder
#9
pensé que era un cron, me gusta Fap
[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
Cron?
Responder
#11
(02/11/2018, 06:28 PM)kikizon2 escribió: Porque no lo haces via web? En vez de tener que descargar un complemento extra? Es mas practico...
Vía web es incluso más complicado para el usuario, ya que tiene que instalar apache, php, extensiones, configurar todo y luego poner el código PHP, sumado al setup de red para los puertos. O contratar un hosting.
No contesto mensajes privados pidiendo soporte!

Donaciones en btc 1EcNJV2gTFDYr7BBAFpMQk7pVCFEZCaKX4
Responder
#12
Lo "complicado" esta para debatirse. En general los que tienen acceso a SQL tienen Apache, y si no, hay miles de host gratuitos para hostear un par de scripts php, sigo pensando que es mejor via web.

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook

[Imagen: w8565u-4.png]
Responder
#13
> : v kyc
Responder
#14
(03/11/2018, 05:35 AM)kikizon2 escribió: Lo "complicado" esta para debatirse. En general los que tienen acceso a SQL tienen Apache, y si no, hay miles de host gratuitos para hostear un par de scripts php, sigo pensando que es mejor via web.
Pero bueno en fin, el OP decidió hacerlo con .NETWhatever
No contesto mensajes privados pidiendo soporte!

Donaciones en btc 1EcNJV2gTFDYr7BBAFpMQk7pVCFEZCaKX4
Responder
#15
Código PHP:
if(!mysql_num_results())
    {
        
remove_user_flags(id);
        return 
PLUGIN_HANDLED;
    }
    
    if( 
mysql_num_results( ) )
    {
        ...
    } 
Creo que el segundo if no tiene sentido.
Teniendo hermosas funciones para el tiempo y la ventaja de poder hacer funciones pre-compiladas en mysql, siguen guardando el tiempo como string Insecure

Gran aporte, hay personas que buscaban esto desde hace varios años atrás ajajajja
(19/06/2014, 11:08 PM)01011001 escribió: No tiene niveles infinitos, llega hasta 2147483648 (Y despues hace un integer overflow)

(19/06/2014, 11:08 PM)[R]ak escribió: Mis conocimientos aumentaron un 500% con este post
Responder
#16
Me gusto.. le hice un par de cositas más para que quede más bonito.. sí hay algo mal, se lo dejo en mano de Hypnotize.
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <mysqlt>
#include <colorchat>


#define PLUGIN    "Admin Vencimiento (MySQL)"
#define AUTHOR    "Hypnotize"
#define VERSION    "v1.0"

new const HOST[] = "";
new const 
USUARIO[] = "";
new const 
PASSWORD[] = "";
new const 
DB[] = "";

new const 
szTableP[] = "admins_vencimiento";

new 
Handle:g_isTupleHandle:g_Connection;

new 
g_password33 ][ 32 ];
new 
iNombre33 ][ 32 ];

new 
g_vencimiento[64][32];


#define PREFIX        "^4[COMUNIDAD]^1"

public plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR);
    
    
    
register_concmd("amx_addadmin""cmdAddAdmin"ADMIN_RCON"<Nombre> <Password> <Access> <Flags> <Fecha [Ej: 20/12/2025]>");
    
register_clcmd("say /vencimiento""cmdVencimiento");
    
    
MySQL_Init( );
    
    
remove_user_flags(0read_flags("z"))
    
register_concmd("amx_reloadadmins""adminSql");
    
server_cmd("amx_reloadadmins");
    
}

public 
cmdAddAdmin(idlevelcid){
    if(!
cmd_access(idlevelcid3))
        return 
PLUGIN_HANDLED;
        
    
    new 
Nombre[32], Password[64], Access[35], Flags[5], Fecha[64];
    
    
read_argv(1Nombrecharsmax(Nombre));
    
read_argv(2Passwordcharsmax(Password));
    
read_argv(3Accesscharsmax(Access));
    
read_argv(4Flagscharsmax(Flags));
    
read_argv(5Fechacharsmax(Fecha));
    
    if(
strlen(Nombre) <= || strlen(Password) <= || strlen(Access) <= || strlen(Flags) <= || strlen(Fecha) <= 0){
        
console_print(id"[AMXX] Fallo los textos!");
        return 
PLUGIN_HANDLED;
    }
    
    
AddAdmin(NombrePasswordAccessFlagsFecha);
    
    
console_print(id"[AMXX] Se agrego el admin: <%s> <%s> <%s> <%s> <%s>"NombrePasswordAccessFlagsFecha);
    
    
adminSql();
        
    return 
PLUGIN_HANDLED;
}

public 
cmdVencimiento(id){
    if(
is_user_admin(id)){
        
ColorChat(idGREEN"%s Tu admin vence en la fecha: ^4%s"PREFIXg_vencimiento[id]);
    }else{
        
ColorChat(idGREEN"%s No eres admin"PREFIX);
    }
}

public 
client_putinserverid )
{
    
get_user_nameidiNombreid ], charsmaxiNombre ) );
    
    new 
Query300 ], iData];
    
iData] = id;
    
iData] = 1;
    
    
formatexQuery charsmaxQuery ) , "SELECT fecha FROM %s WHERE authid = ^"%s^""szTablePiNombreid ] );
    
mysql_query(g_Connection"fnCargar"QueryiData);
    
}
public 
adminSql( )
{
    new 
Query300 ];
    
formatexQuery charsmaxQuery ) , "SELECT authid, password, access, flags FROM %s"szTableP );
    
mysql_query(g_Connection"fnAdmins"Query );
}
public 
MySQL_Init( )
{
    
g_isTuple mysql_makehost(HOSTUSUARIOPASSWORDDB);
    
    new 
error32 ], errnum;
    
g_Connection mysql_connect(g_isTupleerrnumerror31);
    
    if(
errnum)
    {
        
log_to_file("mysqlt.log""ERROR1: [%d]- [%s]"errnumerror)
        return 
pause"a" );
    }
    new 
szTable1000 ];
    
    
formatex(szTablecharsmax(szTable),
    
"CREATE TABLE IF NOT EXISTS %s (authid VARCHAR(64) UNIQUE, password VARCHAR(64), access VARCHAR(64), flags VARCHAR(11), fecha VARCHAR(64))"szTableP);
    
    
mysql_query(g_Connection"QueryCreateTable"szTable);
    
    return 
PLUGIN_CONTINUE;
}

public 
QueryCreateTable(failstateerror[], error2data[], sizeFloat:queuetime)
{
    switch ( 
failstate )
    {
        case 
TQUERY_CONNECT_FAILEDlog_to_file("SQL_LOG_TQ.txt""Failed to connect to database [%i]: %s"error2error)
        case 
TQUERY_QUERY_FAILEDlog_to_file("SQL_LOG_TQ.txt""Error on query for creating table [%i]: %s"error2error)
    }
    
    return 
PLUGIN_HANDLED;
}
public 
fnCargar(failstateerror[], error2data[], sizeFloat:queuetime)
{
    static 
idid data];
    
    if( !
is_user_connectedid ) ) return;
    
    switch( 
failstate ) {
        case 
TQUERY_CONNECT_FAILED: {
            
log_to_file"SQL_LOG_TQ.txt""Error en la conexion al MySQL [%i]: %s"error2error );
            return;
        }
        case 
TQUERY_QUERY_FAILED:
            
log_to_file"SQL_LOG_TQ.txt""Error en la consulta al MySQL [%i]: %s"error2error );
    }
    
    switch( 
data] ) 
    {
        case 
1:
        {
            if( 
mysql_num_results( ) )
            {
                
mysql_read_result(0g_vencimiento[id], sizeof(g_vencimiento[]));
                
replace_all(g_vencimiento[id], charsmax(g_vencimiento[]), "/"" ");
                
replace_all(g_vencimiento[id], charsmax(g_vencimiento[]), "-"" ");
                new 
Dia[100]; get_time("%d/%m/%Y"Diacharsmax(Dia)) 
                
                new 
szDay[10], szMonth[10], szYear[10];
                
parse(g_vencimiento[id], szDaycharsmax(szDay), szMonthcharsmax(szMonth), szYearcharsmax(szYear));
                
                new 
szDay2[10], szMonth2[10], szYear2[10];
                
replace_all(Diacharsmax(Dia), "/"" ");
                
replace_all(Diacharsmax(Dia), "-"" ");
                
parse(DiaszDay2charsmax(szDay2), szMonth2charsmax(szMonth2), szYear2charsmax(szYear2));
                
                if( 
str_to_num(szDay2) >= str_to_num(szDay) && str_to_num(szMonth2) >= str_to_num(szMonth)  && str_to_num(szYear2) >= str_to_num(szYear) )
                {
                    new 
Query300 ];
                    
formatexQuery charsmaxQuery ) , "DELETE FROM %s WHERE authid = ^"%s^""szTablePiNombreid ] );
                    
mysql_query(g_Connection"fnCargarAdmin"Query );
                    
log_to_file("Admins_Vencimiento.log""Vencio el administrador [%s] - [%s]"g_vencimiento[id], iNombre[id]);
                }
                else
                {
                    
adminSql( );
                }
            }
        }
    }

public 
fnCargarAdmin(failstateerror[], errnumdata[], sizeFloat:queuetime)
{
    if(
failstate != TQUERY_SUCCESS)
    {
        
log_to_file("mysqlt.log""ERROR1: [%d]- [%s]"errnumerror)
        return 
PLUGIN_HANDLED;
    }
    
    
    if( 
mysql_affected_rows() )
    {
        
adminSql( );
    }
    return 
PLUGIN_CONTINUE;

public 
fnAdmins(failstateerror[], errnumdata[], sizeFloat:queuetime)
{
    if(
failstate != TQUERY_SUCCESS)
    {
        
log_to_file("mysqlt.log""ERROR2: [%d]- [%s]"errnumerror)
        return 
PLUGIN_HANDLED;
    }
    
    static 
id;
    
id data[0];
    

    
    if( 
mysql_num_results( ) )
    {
        new 
Authid[33], Password[33], Access[33], Flags[33];
        
        while( 
mysql_more_results( ) )
        {
            
mysql_read_result(0Authidsizeof(Authid));
            
mysql_read_result(1Passwordsizeof(Password));
            
mysql_read_result(2Accesssizeof(Access));
            
mysql_read_result(3Flagssizeof(Flags));
            
            
admins_push(AuthidPasswordread_flags(Access), read_flags(Flags));
            
            
mysql_next_row();
        }
    }else{
        
remove_user_flags(id);
        return 
PLUGIN_HANDLED;
    }
    
    
users_access();
    return 
PLUGIN_CONTINUE;


stock AddAdmin(authid[], password[], access[], flags[], vencimiento[]){
    
    new 
Query[512];
    
formatex(Querycharsmax(Query), "INSERT INTO %s (authid, password, access, flags, fecha) VALUES (^"%s^", ^"%s^", ^"%s^", ^"%s^", ^"%s^")",
    
szTablePauthidpasswordaccessflagsvencimiento);
    
    
mysql_query(g_Connection"fnAdmins"Query);
    
    
log_to_file("Admins_Vencimiento.log""Agregado de admin: <%s> <%s> <%s> <%s> <%s>"authidpasswordaccessflagsvencimiento);
}

stock users_access(){
    new 
players[32];
    new 
iNum;
    
get_players(playersiNum);
    for(--
iNumiNum >= 0iNum--){
        
SetFlags(players[iNum]);
    }
}

stock SetFlags(idname[] = ""){
    
remove_user_flags(id);
    
    new 
szName[32];
    
get_user_info(id"_pw"g_password[id], sizeof(g_password[]));
    if(
name[0])
        
copy(szNamesizeof(szName), name);
    else
        
get_user_name(idszName31);
    
    new 
result lookup_access(idszNameg_password[id])
    
    if(
result 1)
    {
        
server_cmd("kick #%d ^"Ingresa la setinfo de tu administrador^""get_user_userid(id));
        return 
PLUGIN_HANDLED;
    }
    if(
result 2){
        
server_cmd("kick #%d ^"Ingresa la setinfo de tu administrador^""get_user_userid(id));
        return 
PLUGIN_HANDLED;
    }
    if(
result 4)
        
client_cmd(id"echo ^"*Password validated!^"");
    if(
result 8)
        
client_cmd(id"echo ^"Privilegios establecidos!^"");
    
    return 
PLUGIN_CONTINUE;
}
stock lookup_access(idusername[], password[]) {
    new 
index = -1result 0;
    new 
iadminname[32], adminpassword[32], count admins_num()-1;
    
    for(
count>= 0i--) {
        
admins_lookup(iAdminProp_Authadminnamecharsmax(adminname));
        if(
equali(usernameadminname)) {
            
index i;
            break;
        }
    }
    
    if(
index != -1) {
        new 
access admins_lookup(indexAdminProp_Access), ip[32], steamid[32];
        
admins_lookup(indexAdminProp_Passwordadminpasswordcharsmax(adminpassword));
        
get_user_ip(idipcharsmax(ip), 1);
        
get_user_authid(idsteamidcharsmax(steamid));
        
        if(
equal(passwordadminpassword)) {
            
            
result |= 12;
            
set_user_flags(idaccess);
            
            new 
sflags[32];
            
get_flags(accesssflagscharsmax(sflags));
            
            
log_amx("[AMXX] Login: ^"%s<%d><%s><>^" became an admin (access ^"%s^") (address ^"%s^")"usernameget_user_userid(id), steamidsflagsip);
        }
        else {
            
result |= 1;
            
            if(
admins_lookup(indexAdminProp_Flags) & FLAG_KICK) {
                
result |= 2;
                
log_amx("[AMXX] Login: ^"%s<%d><%s><>^" kicked due to invalid password (address ^"%s^")"usernameget_user_userid(id), steamidip);
            }
        }
    }
    else {
        new 
access read_flags("z");
        
        if(
access) {
            
result |= 8;
            
set_user_flags(idaccess);
        }
    }
    
    return 
result;

Responder
#17
new const szTableP[] = "admins_vencimiento";

tienes que editar el del programa si no no sirve Whatever


ya vi un error mío gracias luego lo corrijo



pd; no daré soporte a el del wey de arriba
Responder
#18
Lindo aporte, muy lindoCorazón
Mis Aportes:

[ TTT ] Item: Target Gun

[ TTT ] Item: Skeleton Gun (New)
[ TTT ] Item: Pipe Bomb
[ TTT ] Item: Inverse Golden
[Imagen: 76561198074954930.png] [Imagen: venezuela.gif]
Pregúntate si lo que estás haciendo hoy te acerca a el lugar en el que quieres estar mañana. Corazón
Responder
#19
(05/11/2018, 04:02 PM)Kane escribió: Gran aporte, hay personas que buscaban esto desde hace varios años atrás ajajajja
gracias
(06/11/2018, 11:05 PM)SthoNy escribió: Lindo aporte, muy lindoCorazón

gracias

ya corregí un error de dedo xd


neel si tu calculas que esto aplica para plugin nuevo puedes moverlo para haya xd
Responder
#20
(14/11/2018, 11:01 PM)Hypnotize escribió:
(05/11/2018, 04:02 PM)Kane escribió: Gran aporte, hay personas que buscaban esto desde hace varios años atrás ajajajja
gracias
(06/11/2018, 11:05 PM)SthoNy escribió: Lindo aporte, muy lindoCorazón

gracias

ya corregí un error de dedo xd


neel si tu calculas que esto aplica para plugin nuevo puedes moverlo para haya xd

No se puede mover por el sistema de plugins, debes crear el thread en la seccion y mandarle mp para eliminar este.

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook

[Imagen: w8565u-4.png]
Responder
#21
(14/11/2018, 11:04 PM)kikizon2 escribió:
(14/11/2018, 11:01 PM)Hypnotize escribió:
(05/11/2018, 04:02 PM)Kane escribió: Gran aporte, hay personas que buscaban esto desde hace varios años atrás ajajajja
gracias
(06/11/2018, 11:05 PM)SthoNy escribió: Lindo aporte, muy lindoCorazón

gracias

ya corregí un error de dedo xd


neel si tu calculas que esto aplica para plugin nuevo puedes moverlo para haya xd

No se puede mover por el sistema de plugins, debes crear el thread en la seccion y mandarle mp para eliminar este.

a bueno, con el otro me conformo.


----


ACT
- no pueden cambiarse nick
Responder
#22
Muy bonita interfaz, sug: castigos. Whatever
[Imagen: b_350_20_323957_202743_f19a15_111111.png]

Estudia siempre; el tiempo es oro, lo material se puede recuperar pero el tiempo no se puede recuperar.
(02/10/2016, 05:05 PM)meTaLiCroSS escribió: Siempre me gusta ayudar cuando alguien esta interesado realmente en ver que esta programando.
(08/08/2019, 05:32 PM)meTaLiCroSS escribió: grax x el dato cr4ck


Mis aportes

PLUGINS
MAPAS
Menú LANG [SF] Sistema de Frags
Say System (Admin Prefix)
Responder
#23
Una vez más, buen aporteWhatever
"El día que seas capaz de llorar de impotencia ante una injusticia, ese día seremos compañeros"
Responder
#24
(23/11/2018, 01:37 AM)Fury. escribió: Una vez más, buen aporteWhatever

gracias!
Responder
#25
PROYECTO COMPILADO

no, no tiene virus.

http://prntscr.com/lmmnv0
https://www.virustotal.com/es/url/71216e.../analysis/
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)