Guardar players
#1
Hola, estaria sabiendo como seria que guarde los "Datos de un player" en un Bloc de Notas. Osea por ejemplo.
Cita:amx_guardar "Nick del jugador"
Y guarde ya sea la IP, Nombre, etc.
Y que esto le restringa el acceso al servidor(Osea como un ban)
Responder
#2
(06/12/2016, 05:06 PM)Niper.-. escribió: Hola, estaria sabiendo como seria que guarde los "Datos de un player" en un Bloc de Notas. Osea por ejemplo.
Cita:amx_guardar "Nick del jugador"
Y guarde ya sea la IP, Nombre, etc.
Y que esto le restringa el acceso al servidor(Osea como un ban)

Para el Guardado En block de nota en fvault
para que te instruyas aunque sea Para zp: Clikeame

o Algo Así?

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

new g_steam[33][32], g_variable[33], g_variable2[33]

public 
plugin_init() 
    
register_plugin("Guardado FVault""1.0"";LuKks.-'")

public 
client_authorized(Index)
    
get_user_authid(Indexg_steam[Index], charsmax(g_steam[]))

public 
client_putinserver(Index)
    
Vault(Index2)

public 
client_disconnect(Index)
    
Vault(Index1)

public 
Vault(IndexGuardar_Cargar)
{
    new 
Datos[45]
    if(
Guardar_Cargar == 1)
    {
        
formatex(Datoscharsmax(Datos), "%d %d"g_variable[Index], g_variable2[Index]) 
        
fvault_set_data("Datos_zoolk"g_steam[Index], Datos)
    }
    else if(
Guardar_Cargar == 2)
    {
        if(
fvault_get_data("Datos_zoolk"g_steam[Index], Datoscharsmax(Datos)))
        {
            new 
Variable[11], Variable2[11]
            
parse(DatosVariablecharsmax(Variable), Variable2charsmax(Variable2))

            
g_variable[Index] = str_to_num(Variable)
            
g_variable2[Index] = str_to_num(Variable2)
        }
    }


Es para que te intruyas pacman soy un poco noobs Así queee Ojala te allá servido. o si no lo modifica a tu gusto Aunque si no lo quieres por Fvault Es recomendable adv_Vault Ejemplo:

Código PHP:
new g_pj[33][32// que Guarda Nombre ips entre muchas cosas más. 

te dejo el tuto si quiers por adv_vault: Busca Google no muerde!!

[/quote]
[Imagen: 738.gif]
(11/05/2017, 02:13 PM)FreDDy escribió:
(11/05/2017, 02:08 PM)Dieguito escribió: Tienes que estar bromeando, todos los zp traen para que pongas tus sonidos (así sea BB, una extensión más del ZP), y si no los trae pues fuiste timado, no te queda otra cosa que revisar el BaseBuilder.ini y buscar donde estén los sonidos, o crearlos tú mismo dentro del BB.

BaseBuilder.ini? Vos estás drogado? El bb 6.5 no trae nada de eso. Te fumaste del bueno.


(08/11/2016, 10:14 PM)FreDDy escribió: Cómo mierda querés aprender si estás a cada 2 segundos pidiendo mierda tras mierda.
Responder
#3
Si, pero yo de ahí lo cambio por HID
Responder
#4
¿Qué es lo que querés guardar específicamente?
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#5
Seria mejor que se guarde el "HID" de un usuario. Y que tenga lo que dije (osea que le restringa el acceso al servidor)
Responder
#6
(06/12/2016, 11:31 PM)Niper.-. escribió: Seria mejor que se guarde el "HID" de un usuario. Y que tenga lo que dije (osea que le restringa el acceso al servidor)

Ahora una pregunta antes de ponerme a pensar si lo hago... Eso es lo que hace el sXe por default (sXe ban) y no podés obtener el HID del jugador si no es por un programa como el sXe... ¿Para qué querrías algo que les restrinja el acceso al servidor si el sXe ya hace eso al banearlos?
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#7
El sXe los banea pero no pueden ver el servidor en si. Por ejemplo: Yo le doy ban a uno, y como que al el servidor se le aparece "Caido". Yo quiero que le siga apareciendo el servidor y cada vez que quiera entrar salga en el say o en la consola
Código PHP:
El jugador "Pepe" intento entrar al servidor pero esta baneadoRazonCheats
O también que salga en la consola con la información del ban osea
:
"Razon del ban: Cheats"
"Fuiste banneado por: Pepe"
"Tu ban expira: 11/12/2017"
// ejemplos
//el say seria:
client_print(0print_chat"El jugador pepe intento entrar al servidor pero esta baneado. Razon: Cheats")
//La consola seria
console_print(id"Baneado del servidor")
console_print(id"Fuiste baneado por: Pepe")
console_print(id"Tu ban expira: 11/12/2017"
Responder
#8
Si contás con una base de datos MySQL y podés instalar el MySQL Threads... :

Código:
CREATE TABLE bans (
    ban_id INT PRIMARY KEY AUTO_INCREMENT,
    ban_hid VARCHAR( 32 ) UNIQUE NOT NULL default '',
    ban_reason VARCHAR( 64 ) NOT NULL default '',
    ban_admin VARCHAR( 32 ) NOT NULL default '',
    ban_time INT NOT NULL DEFAULT 0 );

Configuración de la conexión MySQL:

- Creás un .cfg en addons/amxmodx/configs/mysql/ que se llame bans.cfg y ahí ponés los siguientes datos de esta manera:

Código:
HOST=iphost
USER=user
PASSWORD=password
DATABASE=database

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

/* ===============================================================================
 *              [ 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 ) ) )

const EV_HID    4;
const 
MIN_CHARS 24;

enum
{
    
Query_Check,
    
Query_Ban,
    
Query_Unban
}

enum _:Ban_Data
{
    
Ban_Admin[32],
    
Ban_HID[32],
    
Ban_Reason[64],
    
Ban_Time
}

new 
g_iConnectedg_szPlayerHID[33][32], g_eBanData[Ban_Data], Handle:g_hMySQLHost;

public 
plugin_init( )
{
    
register_plugin"Ban""1.0""Manu" );
    
    
register_clcmd"amx_sxe_ban""CommandBan" );
    
register_clcmd"amx_sxe_unban""CommandUnban" );
    
    
register_srvcmd"sxe_event""ev_sXe" );
    
    
MySQL_Init( );
}

public 
plugin_cfg( )
{
    if( 
is_plugin_loaded"Ban" ) != -)
        
server_cmd"amx_pausecfg add ^"Ban^"" );
}

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

public ev_sXe( )
{
    static 
iIdszData]; read_argv1szDatacharsmaxszData ) );
    
    if( 
str_to_numszData ) == EV_HID )
    {
        
read_argv2szDatacharsmaxszData ) );
        
        if( 
FindPlayeriIdstr_to_numszData ) ) )
        {
            
read_argv5g_szPlayerHIDiId ], charsmaxg_szPlayerHID[ ] ) );
            
            if( 
strleng_szPlayerHIDiId ] ) < MIN_CHARS )
            {
                
server_cmd"kick #%d ^"No pudimos validar tu HID^""get_user_useridiId ) );
                
server_exec( );
            }
            else
                
MySQL_QueryiIdQuery_Check );
        }
    }
}

public 
CommandBaniId )
{
    if( ~
get_user_flagsiId ) & ADMIN_BAN )
    {
        
console_printiId"No tenes los accesos suficientes para utilizar este comando." );
        
        return 
PLUGIN_HANDLED;
    }
    
    new 
iTargetszTime], szArgs32 ], szName32 ];
    
    
g_eBanDataBan_HID ][0] = EOS;
    
    if( 
read_argc( ) == )
    {
        
read_argv1szArgscharsmaxszArgs ) );
        
        if( 
GetBanHIDiTargetszArgs ) )
        {
            
read_argv2g_eBanDataBan_Reason ], charsmaxg_eBanDataBan_Reason ] ) );
            
            if( 
strleng_eBanDataBan_Reason ] ) > )
            {
                
read_argv3szTimecharsmaxszTime ) );
                
g_eBanDataBan_Time ] = str_to_numszTime );
                
                if( 
100000000 >= g_eBanDataBan_Time ] >= )
                {
                    if( 
g_eBanDataBan_Time ] > )
                        
g_eBanDataBan_Time ] = ( g_eBanDataBan_Time ] * 60 get_systime( ) );
                    
                    
get_user_nameiIdg_eBanDataBan_Admin ], charsmaxg_eBanDataBan_Admin ] ) );
                    
                    if( 
is_user_connectediTarget ) && equalg_szPlayerHID[iTarget], g_eBanDataBan_HID ] ) )
                    {
                        if( 
get_user_flagsiTarget ) & ADMIN_IMMUNITY )
                        {
                            
console_printiId"El usuario tiene inmunidad." );
                            return 
PLUGIN_HANDLED;
                        }
                        
                        
get_user_nameiTargetszNamecharsmaxszName ) );
                        
                        
PrintUserInformationiTarget );
                        
                        
client_print_color0print_team_default"^4[AMXMODX]^1 Admin^4 %s^1: ban^4 %s^1 por^4 %s^1."g_eBanDataBan_Admin ], szNameg_eBanDataBan_Reason ] );
                        
server_cmd"kick #%d ^"Usted esta baneado (Infoen consola)^""get_user_useridiTarget ) );
                    }
                    else
                        
client_print_color0print_team_default"^4[AMXMODX]^1 Admin^4 %s^1: ban (HID)^4 %s^1 por^4 %s^1."g_eBanDataBan_Admin ], g_eBanDataBan_HID ], g_eBanDataBan_Reason ] );
                    
                    
MySQL_Query0Query_Ban );
                }
                else
                    
console_printiId"No has introducido un tiempo valido." );
            }
            else
                
console_printiId"Debes ingresar una razon valida." );
        }
        else
            
console_printiId"No se encontro al jugador/HID solicitado." );
    }
    else
        
console_printiId"Comando mal estructurado. Estructura: ^"amx_sxe_ban <#userid/nombre/hid> <razon> <minutos>^"" );
    
    
return PLUGIN_HANDLED;
}

public 
CommandUnbaniId )
{
    if( ~
get_user_flagsiId ) & ADMIN_BAN )
    {
        
console_printiId"No tenes los accesos suficientes para utilizar este comando." );
        
        return 
PLUGIN_HANDLED;
    }
    
    if( 
read_argc( ) == )
    {
        
read_argv1g_eBanDataBan_HID ], charsmaxg_eBanDataBan_HID ] ) );
        
        if( 
strleng_eBanDataBan_HID ] ) > 20 )
        {
            
MySQL_Query0Query_Unban );
            
console_printiId"La consulta de unban fue ejecutada." );
        }
        else
            
console_printiId"El HID era muy corto." );
    }
    else
        
console_printiId"Comando mal estructurado. Estructura: ^"amx_sxe_unban <HID>^"" );
    
    return 
PLUGIN_HANDLED;
}

public 
client_putinserveriId )
{
    
SetPlayerBitg_iConnectediId );
}

public 
client_disconnectiId )
{
    
ClearPlayerBitg_iConnectediId );
    
    
g_szPlayerHIDiId ][ ] = EOS;
}

/* ===============================================================================
 *              [ Private functions ]
 * =============================================================================== */

PrintUserInformation( const iId )
{
    
client_printiIdprint_console"- Motivo del ban: %s"g_eBanDataBan_Reason ] );
    
client_printiIdprint_console"- Tiempo restante estimado: %d minutos"g_eBanDataBan_Time ] > ? ( ( g_eBanDataBan_Time ] - get_systime( ) ) / 60 ) : -);
    
client_printiIdprint_console"- Admin que te baneo: %s"g_eBanDataBan_Admin ] );
    
client_printiIdprint_console"- Tu HID: %s"g_eBanDataBan_HID ] );
}

FindPlayer( &iId, const iUserId )
{
    for( 
iId 1iId <= MAX_PLAYERSiId++ )
    {
        if( !
is_user_connectediId ) || ( get_user_useridiId ) != iUserId ) )
            continue;
        
        break;
    }
    
    return 
is_user_connectediId ) ? true false;
}

GetBanHID( &iTargetszArgs[32] )
{
    if( 
szArgs[0] == '#' && is_str_numszArgs[1] ) )
    {
        new 
iUserId str_to_numszArgs[1] );
        
        for( 
iTarget 1iTarget <= MAX_PLAYERSiTarget++ )
        {
            if( 
is_user_connectediTarget ) && iUserId == get_user_useridiTarget ) )
            {
                
copyg_eBanDataBan_HID ], charsmaxg_eBanDataBan_HID ] ), g_szPlayerHIDiTarget ] );
                break;
            }
        }
    }
    else if( 
szArgs[8] == '-' )
    {
        for( 
iTarget 1iTarget <= MAX_PLAYERSiTarget++ )
        {
            if( 
is_user_connectediTarget ) && equalszArgsg_szPlayerHIDiTarget ] ) )
                break;
        }
    }
    else
    {
        
iTarget find_player"bhl"szArgs );
        
        if( 
iTarget )
            
copyg_eBanDataBan_HID ], charsmaxg_eBanDataBan_HID ] ), g_szPlayerHIDiTarget ] );
    }
    
    return (
g_eBanDataBan_HID ][8] == '-');
}

/* ===============================================================================
 *              [ SQL Section ]
 * =============================================================================== */

MySQL_Init( )
{
    new 
iErrnumszData128 ], szSQLData][ 32 ];
    
    
get_localinfo"amxx_configsdir"szDatacharsmaxszData ) );
    
addszDatacharsmaxszData ), "/mysql/bans.cfg" );
    
    if( !
file_existsszData ) )
        
set_fail_state"[MySQL] No se ha podido encontrar el archivo de configuraciones." );
    
    new 
iFile fopenszData"rt" ), iNum;
    
    while( !
feofiFile ) )
    {
        
fgetsiFileszDatacharsmaxszData ) );
        
trimszData );
        
        if( 
szData] == ';' || ( strlenszData ) <= ) )
            continue;
        
        
strtokszDataszDatacharsmaxszData ), szSQLDataiNum++ ], charsmaxszSQLData[ ] ), '='true );
    }
    
    
fcloseiFile );
    
    
g_hMySQLHost mysql_makehostszSQLData], szSQLData], szSQLData], szSQLData] );
    
    
mysql_connectg_hMySQLHostiErrnumszDatacharsmaxszData ) );
    
    if( 
iErrnum )
    {
        
log_to_file"mysql.log""[MySQL] Error: %s."szData );
        
set_fail_state"Error al conectar con la base de datos." );
    }
}

public 
MySQL_Query( const iId, const iType )
{
    static 
szQuery512 ], szData];

    
szData] = iId;
    
szData] = iType;
    
    switch( 
iType )
    {
        case 
Query_Check:
            
formatexszQuerycharsmaxszQuery ), "SELECT * FROM bans WHERE ban_hid=^"%s^" ORDER BY ban_time DESC LIMIT 1"g_szPlayerHIDiId ] );
        case 
Query_Ban:
            
formatexszQuerycharsmaxszQuery ), "INSERT INTO bans VALUES ( null, ^"%s^", ^"%s^", ^"%s^", '%d' )",
                
g_eBanDataBan_HID ], g_eBanDataBan_Reason ], g_eBanDataBan_Admin ], g_eBanDataBan_Time ] );
        case 
Query_Unban:
            
formatexszQuerycharsmaxszQuery ), "DELETE * FROM bans WHERE ban_hid=^"%s^""g_eBanDataBan_HID ] );
    }
    
    
mysql_queryg_hMySQLHost"MySQL_QueryHandler"szQueryszDatacharsmaxszData ) );
}

public 
MySQL_QueryHandleriFailstateszError[ ], iErrsizeszData[ ], iDatasize )
{
    static 
iIdiType;
    
    
iId szData]; iType szData];
    
    if( 
iFailstate >= TQUERY_SUCCESS )
    {
        if( 
iType == Query_Check )
        {
            if( 
mysql_num_results( ) > )
            {
                
mysql_read_result2g_eBanDataBan_Reason ], charsmaxg_eBanDataBan_Reason ] ) );
                
mysql_read_result3g_eBanDataBan_Admin ], charsmaxg_eBanDataBan_Admin ] ) );
                
                
g_eBanDataBan_Time ] = mysql_read_result);
                
                if( 
g_eBanDataBan_Time ] == || g_eBanDataBan_Time ] > get_systime( ) )
                {
                    
PrintUserInformationiId );
                    
                    
server_cmd"kick #%d ^"Usted esta baneado (Infoen consola)^""get_user_useridiId ) );
                    
server_exec( );
                }
            }
        }
    }
    else
        
log_to_file"mysql.log""[BAN] Hubo un error en el handler: %s"szError );


PD: Es una adaptación medio rara de otro que yo tengo, el mio es completamente funcional pero funciona completamente distinto, capaz entre que lo adapté se me escapó algo, cuestión de testear.
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#9
Gracias Treki!.
En el PrintUserInformation, puedo poner el
Código PHP:
client_print(0print_chat"El jugador pepe intento entrar al servidor pero esta baneado. Razon: Cheats"
PD: donde pongo el archivo de "MySQL" y el
Cita:HOST=iphost
USER=user
PASSWORD=password
DATABASE=database
lo pongo en ese formato así como esta o lo modifico ?
Responder
#10
(09/12/2016, 12:37 PM)Niper.-. escribió: Gracias Treki!.
En el PrintUserInformation, puedo poner el
Código PHP:
client_print(0print_chat"El jugador pepe intento entrar al servidor pero esta baneado. Razon: Cheats"
PD: donde pongo el archivo de "MySQL" y el
Cita:HOST=iphost
USER=user
PASSWORD=password
DATABASE=database
lo pongo en ese formato así como esta o lo modifico ?

Si, editalo a tu gusto lo de los prints.

Para lo del MySQL: creás un archivo que se llame bans.cfg y lo metés en addons/amxmodx/configs/mysql/. Adentro de ese .cfg pones esas lineas rellenas con tu información, por ejemplo un bans.cfg sería:

Código:
HOST=123.123.123.123
USER=usuario78
PASSWORD=g66aKd3S
DATABASE=counterstrike
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder
#11
y la tabla va en sqlite?
Código PHP:
// esto iria en un .sq3 y lo coloco en sqlite?
CREATE TABLE bans (
    
ban_id INT PRIMARY KEY AUTO_INCREMENT,
    
ban_hid VARCHAR32 UNIQUE NOT NULL default '',
    
ban_reason VARCHAR64 NOT NULL default '',
    
ban_admin VARCHAR32 NOT NULL default '',
    
ban_time INT NOT NULL DEFAULT ); 
Responder
#12
(09/12/2016, 02:35 PM)Niper.-. escribió: y la tabla va en sqlite?
Código PHP:
// esto iria en un .sq3 y lo coloco en sqlite?
CREATE TABLE bans (
    
ban_id INT PRIMARY KEY AUTO_INCREMENT,
    
ban_hid VARCHAR32 UNIQUE NOT NULL default '',
    
ban_reason VARCHAR64 NOT NULL default '',
    
ban_admin VARCHAR32 NOT NULL default '',
    
ban_time INT NOT NULL DEFAULT ); 

Yo te di una idea en caso de que tuvieras una base de datos MySQL, actualmente no es apto para usarse en SQLite tal y como está, hay que cambiarle el guardado.
No hago trabajos privados. Si necesitás ayuda, abrí un nuevo tema.
¿Buscás un ejemplo o algún modo de juego? Podés echarle un vistazo a mis aportes
.
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)