agregar no cambio de nick
#1
hola que tal necesito que porfavor me pudieran ayudar a agregarle a este sistema de cuenta que no se pudieran cambiar el nick los jugadores eso nomas gracias de antemano

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

#define PLUGIN "Sistema de cuentas"
#define VERSION "1.0"
#define AUTHOR "r0ma"

//#define MYSQL

#if defined MYSQL

#define MYSQL_HOST "131.221.32.191"
#define MYSQL_USER "dreamsg1_zkg-hl"
#define MYSQL_PASS "N;$FNqhDCHEi"
#define MYSQL_DATEBASE "N;$FNqhDCHEi"

#else

#define SQLITE_DATEBASE "cuentas"

#endif

new const szTable[ ] = "cuentas"
new Handle:g_hTuple;
new 
g_maxplayers;
new 
g_estado;
new 
g_id33 ];
new 
g_password33 ][ 34 ];
new 
g_playername33 ][ 33 ];
new 
Estado[33]
#define level_up(%1) (%1 * %1 * 10)

new g_level[33]
new 
g_exp[33]
new 
g_rangos[33]

enum _:Info_Rangos 

    
RangosName[33], 
    
RangosNivel
}
new const 
Rangos[][Info_Rangos] =
{
    { 
"Silver I"},
    { 
"Silver II"},
    { 
"Silver III"},
    { 
"Silver IV"},
    { 
"Silver Elite"},
    { 
"Silver Elite Master"10 },
    { 
"Gold Nova I"12 },
    { 
"Gold Nova II"14 },
    { 
"Gold Nova III"16 },
    { 
"Gold Nova Master"18 },
    { 
"Master Guardian I"20 },
    { 
"Master Guardian II"22 },
    { 
"Master Guardian Elite"24 },
    { 
"Distinguished Master Guardian"26 },
    { 
"Legendary Eagle"28 },
    { 
"Legendary Eagle Master"30 },
    { 
"Supreme Master First Class"32 },
    { 
"The Global Elite"37 }
}
enum
{
    
REGISTRAR_CUENTA,
    
LOGUEAR_CUENTA,
    
CARGAR_DATOS,
    
GUARDAR_DATOS,
    
ChequearC
};
enum _:DataID
{
    
DESCONECTADO 0,
    
REGISTRADO
}
enum _:DATOS
{
    
Tipo[20]
}
new const 
ESTADOS[DataID][DATOS] = 
{
    { 
"No Registrado" },
    { 
"Registrado" }
}
public 
plugin_init()
{
    
register_plugin(PLUGINVERSIONAUTHOR)
    
register_clcmd("CREAR_PASSWORD""reg_password");
    
register_clcmd("LOGUEAR_PASSWORD""log_password");
    
register_clcmd("chooseteam""clcmd_changeteam");
    
register_clcmd("jointeam""clcmd_changeteam");
    
register_message(get_user_msgid("ShowMenu"), "message_ShowMenu");
    
register_message(get_user_msgid("VGUIMenu"), "message_VGUIMenu");
    
RegisterHam(Ham_Killed"player""fw_playerkilled_post"); 
    
    
register_event"HLTV""event_round_start""a""1=0""2=0" );
    
g_maxplayers get_maxplayers( );
    
    
MySQLx_Init( );
}

public 
message_VGUIMenuiMsgidiDestid ) {
    if( 
g_estado & (1<<id) ||  get_msg_arg_int) != 
        return 
PLUGIN_CONTINUE;
    
    
ChequearCuentaid );
    return 
PLUGIN_HANDLED;
}

public 
message_ShowMenuiMsgidiDestid ) {
    if( 
g_estado & (1<<id) )
        return 
PLUGIN_CONTINUE;
    
    static 
sMenuCode33 ];
    
get_msg_arg_string4sMenuCodecharsmaxsMenuCode ) );
    
    if( 
containisMenuCode"Team_Select" ) != -) {
        
ChequearCuentaid );
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
clcmd_changeteamid ) {
    if( ~
g_estado & (1<<id) ) {
        
ChequearCuentaid );
        
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}
public 
show_login_menu_registradoid 
{
    new 
len[999], menu 
    
    formatex
(lencharsmax(len), "\wBienvenido, Usuario \y%s \r[Escondidas Mod] ^n\wTu Estas: \y%s , \wTu ID es \r#%d"g_playername[id],ESTADOS[Estado[id]][Tipo],g_id[id])
    
menu menu_create(len"login_menu_registrado")
    
    
formatex(lencharsmax(len), "\wIngresar Al Servidor^n")
    
menu_additem(menulen"1")
    
    
menu_setpropmenuMPROP_EXITMEXIT_NEVER );
    
    
menu_displayidmenu );
    
    return 
PLUGIN_HANDLED;
}

public 
login_menu_registradoidmenuitem ) {
    
    switch( 
item ) {
        case 
0client_cmdid"messagemode LOGUEAR_PASSWORD" );
    }
    
    return 
PLUGIN_HANDLED;
}
public 
show_login_menu_nuevoid ) {
    new 
len[999], menu 
    
    formatex
(lencharsmax(len), "\wBienvenido de vuelta, Usuario \y%s \r[Escondidas Mod] ^n\wTu Estas: \y%s"g_playername[id],ESTADOS[Estado[id]][Tipo])
    
menu menu_create(len"login_menu_nuevo")
    
    
formatex(lencharsmax(len), "\wRegistrarse^n")
    
menu_additem(menulen"1")
    
    
menu_setpropmenuMPROP_EXITMEXIT_NEVER );
    
    
menu_displayidmenu );
    
    return 
PLUGIN_HANDLED;
}

public 
login_menu_nuevoidmenuitem ) {
    
    switch( 
item ) {
        case 
0client_cmdid"messagemode CREAR_PASSWORD" );
    }
    
    return 
PLUGIN_HANDLED;
}

public 
reg_passwordid ) {
    
read_argsg_passwordid ], charsmaxg_password[ ] ) );
    
remove_quotesg_passwordid ] );
    
trimg_passwordid ] );
    
    new 
szQuery256 ], iData];
    
    
iData] = id;
    
iData] = REGISTRAR_CUENTA;
    
    
get_user_nameidg_playernameid ], charsmaxg_playername[ ] ) );
    
    
formatexszQuerycharsmaxszQuery ), "INSERT INTO %s (Pj, Password) VALUES (^"%s^", ^"%s^")"szTableg_playernameid ], g_passwordid ]);
    
SQL_ThreadQuery(g_hTuple"DataHandler"szQueryiData2);
    
    return 
PLUGIN_HANDLED;
}


public 
log_passwordid ) {
    
read_argsg_passwordid ], charsmaxg_password[ ] ) );
    
remove_quotesg_passwordid ] );
    
trimg_passwordid ] );

    new 
szQuery128 ], iData];
    
    
iData] = id;
    
iData] = LOGUEAR_CUENTA;
    
    
get_user_nameidg_playernameid ], charsmaxg_playername[ ] ) );
    
    
formatexszQuerycharsmaxszQuery ), "SELECT * FROM %s WHERE Pj=^"%s^" AND Password=^"%s^""szTableg_playernameid ], g_passwordid ] );
    
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData);
    
    return 
PLUGIN_HANDLED;
}

public 
guardar_datosid ) {
    new 
szQuery128 ], iData];
    
    
iData] = id;
    
iData] = GUARDAR_DATOS;
    
    
formatexszQuerycharsmaxszQuery ), "UPDATE %s SET Exp='%d', Nivel='%d' WHERE id='%d'"szTableg_exp[id], g_level[id], g_idid ] );
    
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData);
}
public 
ChequearCuenta(id){
    new 
Query[400],Data[2]
    
Data[0] = id;Data[1] = ChequearC
    
    formatex
(Query,charsmax(Query),"SELECT Pj FROM %s WHERE Pj = ^"%s^"",szTable,g_playername[id])
    
SQL_ThreadQuery(g_hTuple,"DataHandler",Query,Data,2)
    
    return 
PLUGIN_HANDLED
}

public 
DataHandlerfailstateHandle:Queryerror[ ], error2data[ ], datasizeFloat:time ) {
    static 
id;
    
id 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 
REGISTRAR_CUENTA: {
            if( 
failstate TQUERY_SUCCESS ) {
                if( 
containierror"Pj" ) != -)
                    
client_printidprint_chat"[Sistema de Cuentas] El usuario ya existe." );

                else if( 
containierror"Pj" ) != -)
                    
client_printidprint_chat"[Sistema de Cuentas] El nombre de personaje esta en uso." );
                else
                    
client_printidprint_chat"[Sistema de Cuentas] Error al crear la cuenta. Intente nuevamente." );
                
                
client_cmdid"spk buttons/button10.wav" );
                
                
ChequearCuentaid );
            }
            else {
                
client_printidprint_chat"[Sistema de Cuentas] Tu cuenta ha sido creada correctamente." );
                
                new 
szQuery128 ], iData];
                
                
iData] = id;
                
iData] = CARGAR_DATOS;
                
                
formatexszQuerycharsmaxszQuery ), "SELECT id FROM %s WHERE Pj=^"%s^""szTableg_playernameid ] );
                
SQL_ThreadQueryg_hTuple"DataHandler"szQueryiData);
                
Estado[id] = REGISTRADO
            
}
            
        }
        case 
LOGUEAR_CUENTA: {
            if( 
SQL_NumResultsQuery ) ) {
                
g_idid ] = SQL_ReadResultQuery);
                
SQL_ReadResultQuery2g_playernameid ], charsmaxg_playername[ ] ) );                    
                
                
// Cargamos datos
                
g_expid ] = SQL_ReadResult(Query3)
                
g_level[id] = SQL_ReadResult(Query4)
                
                
func_login_successid );
            }
            else {
                
client_printidprint_chat"[Sistema de Cuentas] Contraseñ incorrecta." );
                
client_cmdid"spk buttons/button10.wav" );
                
                
ChequearCuentaid );
            }
        }
        case 
CARGAR_DATOS: {
            if( 
SQL_NumResultsQuery ) ) {
                
g_idid ] = SQL_ReadResultQuery);
                
                
// Ponemos la exp en 0 para el nuevo usuario.
                
g_exp[id] = 0;
                
g_level[id] = 1;
                
                
func_login_successid );
            }
            else {
                
client_printidprint_chat"[Sistema de Cuentas] Error al cargar los datos, intente nuevamente." );
                
ChequearCuentaid );
            }
        }
        case 
GUARDAR_DATOS: {
            if( 
failstate TQUERY_SUCCESS )
                
console_printid"[Sistema de Cuentas] Error en el guardado de datos." );
            
            else
                
console_printid"[Sistema de Cuentas] Datos guardados." );
        }
        case 
ChequearC:
        {
            if(
SQL_NumResults(Query))
            {
                
Estado[id] = REGISTRADO
                show_login_menu_registrado
(id)
            }
            else
            {
                
Estado[id] = DESCONECTADO
                show_login_menu_nuevo
(id)
            }
        }
    }
}
public 
client_putinserver(id)

    
get_user_name(id,g_playername[id],charsmax(g_playername[]))
    static 
QueryX[128], DataX[2]
    
DataX[0] = id
    DataX
[1] = ChequearC
    set_task
(2.0,"hud",id,_,_,"b")

    
formatex(QueryXcharsmax(QueryX), "SELECT id FROM %s WHERE Pj = ^"%s^"",szTableg_playername[id])
    
SQL_ThreadQuery(g_hTuple"DataHandler"QueryXDataX2)
}


public 
func_login_successid ) {
    
engclient_cmdid"jointeam""5" );
    
engclient_cmdid"joinclass""5" );
    
    
g_estado |= (1<<id);
    
Estado[id] = REGISTRADO
    set_user_info
id"name"g_playernameid ] );
}

public 
event_round_start( ) {
    for( new 
1<= g_maxplayersi++ ) {
        if( 
g_estado & (1<<i) && is_user_connected) )
            
guardar_datos);
    }
}        

public 
client_infochangedid ) {
    if( ~
g_estado & (1<<id) )
        return 
PLUGIN_CONTINUE;
    
    static 
name32 ];
    
get_user_infoid"name"namecharsmaxname ) );
    
    if( !
equalg_playernameid ], name ) ) {
        
set_user_infoid"name"g_playernameid ] );
        
        return 
PLUGIN_HANDLED;
    }
    
    return 
PLUGIN_CONTINUE;
}

public 
client_disconnect(  id ) {
    
    if( 
g_estado & (1<<id) ) {
        
guardar_datosid );
        
        
g_estado &= ~(1<<id);
    }
    
g_playernameid ][ ] = '^0';
    
g_passwordid ][ ] = '^0';
}

#if defined MYSQL
public MySQLx_Init( )
{
    
g_hTuple SQL_MakeDbTupleMYSQL_HOSTMYSQL_USERMYSQL_PASSMYSQL_DATEBASE );
    
    if( !
g_hTuple 
    {
        
log_to_file"SQL_ERROR.txt""No se pudo conectar con la base de datos." );
        return 
pause"a" );
    }
    
    return 
PLUGIN_CONTINUE;
}
#else

// Gracias ILUSION por fixear la conexión
public MySQLx_Init( )
{
    new 
get_type12 ];
    
    
SQL_SetAffinity"sqlite" );
    
    
SQL_GetAffinityget_typesizeof get_type );

    if( !
equaliget_type"sqlite" ) )
    {
        
log_to_file"SQLITE_ERROR.txt""Error de conexion" );
        return 
pause"a" );
    }
    
    
g_hTuple SQL_MakeDbTuple""""""SQLITE_DATEBASE );
    
    return 
PLUGIN_CONTINUE
}
#endif
public plugin_end()
{
    
SQL_FreeHandleg_hTuple );
}
public 
hud(id)
{
    if(
is_user_alive(id))
    {
        
set_hudmessage(025500.930.006.012.0
        
show_hudmessage(id"Nivel : %d^nRango : %s^nExperiencia : %d"g_level[id], Rangos[g_rangos[id]][RangosName], g_exp[id])
    }
}
public 
fw_playerkilled_post(victimattacker)
{
    if(!
is_user_connected(attacker)) return HAM_IGNORED;
    
    if(
victim == attacker) return HAM_IGNORED;
    
    
g_exp[attacker] += 10
    ChatColor
(attacker"!g[AMX]!y has ganado 10 de exp por matar.")
    
level(attacker)
    return 
HAM_IGNORED;
}
public 
level(id)
{
    while(
g_exp[id] >= level_up(g_level[id]) && g_level[id] < 100)
    {
        
g_level[id]++
        
ChatColor(id"!g[AMX] !ySubiste al nivel %d"g_level[id])
        
rangos(id)
    }
}
public 
rangos(id)
{
    if (
g_level[id] >= Rangos[g_rangos[id] + 1][RangosNivel] && g_rangos[id] < 9)
    {
        
g_rangos[id]++
        
ChatColor(id"!g[AMX] !ySubiste al rango !g%s"Rangos[g_rangos[id]][RangosName])
    }
}
stock ChatColor(const id, const input[], any:...)
{
    new 
count 1players[32]
    static 
msg[191]
    
vformat(msg190input3)
    
    
replace_all(msg190"!g""^4"// Green Color
    
replace_all(msg190"!y""^1"// Default Color
    
replace_all(msg190"!team""^3"// Team Color
    
replace_all(msg190"!team2""^0"// Team2 Color
    
    
if (idplayers[0] = id; else get_players(playerscount"ch")
    {
        for (new 
0counti++)
        {
            if (
is_user_connected(players[i]))
            {
                
message_begin(MSG_ONE_UNRELIABLEget_user_msgid("SayText"), _players[i])
                
write_byte(players[i]);
                
write_string(msg);
                
message_end();
            }
        }
    }


PD: ya que a veces se bugea
Responder
#2
guías especiales para gex
Responder
#3
Fíjate si te funciona, adapta a tu código o agrégalo como otro plugin.
Steam
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)