Mensajes: 1,072
Temas: 57
Registro en: Feb 2016
Reputación:
8
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)
Mensajes: 332
Temas: 21
Registro en: Nov 2016
Reputación:
0
06/12/2016, 05:35 PM
(Última modificación: 06/12/2016, 05:43 PM por MeNJorge.)
(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(Index, g_steam[Index], charsmax(g_steam[]))
public client_putinserver(Index) Vault(Index, 2)
public client_disconnect(Index) Vault(Index, 1)
public Vault(Index, Guardar_Cargar) { new Datos[45] if(Guardar_Cargar == 1) { formatex(Datos, charsmax(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], Datos, charsmax(Datos))) { new Variable[11], Variable2[11] parse(Datos, Variable, charsmax(Variable), Variable2, charsmax(Variable2))
g_variable[Index] = str_to_num(Variable) g_variable2[Index] = str_to_num(Variable2) } } }
Es para que te intruyas 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]
(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.
Mensajes: 1,072
Temas: 57
Registro en: Feb 2016
Reputación:
8
Si, pero yo de ahí lo cambio por HID
Mensajes: 2,454
Temas: 14
Registro en: Oct 2013
Reputación:
51
¿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.
Mensajes: 1,072
Temas: 57
Registro en: Feb 2016
Reputación:
8
Seria mejor que se guarde el "HID" de un usuario. Y que tenga lo que dije (osea que le restringa el acceso al servidor)
Mensajes: 2,454
Temas: 14
Registro en: Oct 2013
Reputación:
51
(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.
Mensajes: 1,072
Temas: 57
Registro en: Feb 2016
Reputación:
8
07/12/2016, 11:31 AM
(Última modificación: 07/12/2016, 01:08 PM por Niper.-..)
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 baneado. Razon: Cheats 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(0, print_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")
Mensajes: 2,454
Temas: 14
Registro en: Oct 2013
Reputación:
51
09/12/2016, 03:29 AM
(Última modificación: 09/12/2016, 03:31 AM por Manu.)
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_iConnected, g_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" ) != -1 ) server_cmd( "amx_pausecfg add ^"Ban^"" ); }
/* =============================================================================== * [ Client-related ] * =============================================================================== */
public ev_sXe( ) { static iId, szData[ 8 ]; read_argv( 1, szData, charsmax( szData ) ); if( str_to_num( szData ) == EV_HID ) { read_argv( 2, szData, charsmax( szData ) ); if( FindPlayer( iId, str_to_num( szData ) ) ) { read_argv( 5, g_szPlayerHID[ iId ], charsmax( g_szPlayerHID[ ] ) ); if( strlen( g_szPlayerHID[ iId ] ) < MIN_CHARS ) { server_cmd( "kick #%d ^"No pudimos validar tu HID^"", get_user_userid( iId ) ); server_exec( ); } else MySQL_Query( iId, Query_Check ); } } }
public CommandBan( iId ) { if( ~get_user_flags( iId ) & ADMIN_BAN ) { console_print( iId, "No tenes los accesos suficientes para utilizar este comando." ); return PLUGIN_HANDLED; } new iTarget, szTime[ 8 ], szArgs[ 32 ], szName[ 32 ]; g_eBanData[ Ban_HID ][0] = EOS; if( read_argc( ) == 4 ) { read_argv( 1, szArgs, charsmax( szArgs ) ); if( GetBanHID( iTarget, szArgs ) ) { read_argv( 2, g_eBanData[ Ban_Reason ], charsmax( g_eBanData[ Ban_Reason ] ) ); if( strlen( g_eBanData[ Ban_Reason ] ) > 0 ) { read_argv( 3, szTime, charsmax( szTime ) ); g_eBanData[ Ban_Time ] = str_to_num( szTime ); if( 100000000 >= g_eBanData[ Ban_Time ] >= 0 ) { if( g_eBanData[ Ban_Time ] > 0 ) g_eBanData[ Ban_Time ] = ( g_eBanData[ Ban_Time ] * 60 + get_systime( ) ); get_user_name( iId, g_eBanData[ Ban_Admin ], charsmax( g_eBanData[ Ban_Admin ] ) ); if( is_user_connected( iTarget ) && equal( g_szPlayerHID[iTarget], g_eBanData[ Ban_HID ] ) ) { if( get_user_flags( iTarget ) & ADMIN_IMMUNITY ) { console_print( iId, "El usuario tiene inmunidad." ); return PLUGIN_HANDLED; } get_user_name( iTarget, szName, charsmax( szName ) ); PrintUserInformation( iTarget ); client_print_color( 0, print_team_default, "^4[AMXMODX]^1 Admin^4 %s^1: ban^4 %s^1 por^4 %s^1.", g_eBanData[ Ban_Admin ], szName, g_eBanData[ Ban_Reason ] ); server_cmd( "kick #%d ^"Usted esta baneado (Info. en consola)^"", get_user_userid( iTarget ) ); } else client_print_color( 0, print_team_default, "^4[AMXMODX]^1 Admin^4 %s^1: ban (HID)^4 %s^1 por^4 %s^1.", g_eBanData[ Ban_Admin ], g_eBanData[ Ban_HID ], g_eBanData[ Ban_Reason ] ); MySQL_Query( 0, Query_Ban ); } else console_print( iId, "No has introducido un tiempo valido." ); } else console_print( iId, "Debes ingresar una razon valida." ); } else console_print( iId, "No se encontro al jugador/HID solicitado." ); } else console_print( iId, "Comando mal estructurado. Estructura: ^"amx_sxe_ban <#userid/nombre/hid> <razon> <minutos>^"" ); return PLUGIN_HANDLED; }
public CommandUnban( iId ) { if( ~get_user_flags( iId ) & ADMIN_BAN ) { console_print( iId, "No tenes los accesos suficientes para utilizar este comando." ); return PLUGIN_HANDLED; } if( read_argc( ) == 2 ) { read_argv( 1, g_eBanData[ Ban_HID ], charsmax( g_eBanData[ Ban_HID ] ) ); if( strlen( g_eBanData[ Ban_HID ] ) > 20 ) { MySQL_Query( 0, Query_Unban ); console_print( iId, "La consulta de unban fue ejecutada." ); } else console_print( iId, "El HID era muy corto." ); } else console_print( iId, "Comando mal estructurado. Estructura: ^"amx_sxe_unban <HID>^"" ); return PLUGIN_HANDLED; }
public client_putinserver( iId ) { SetPlayerBit( g_iConnected, iId ); }
public client_disconnect( iId ) { ClearPlayerBit( g_iConnected, iId ); g_szPlayerHID[ iId ][ 0 ] = EOS; }
/* =============================================================================== * [ Private functions ] * =============================================================================== */
PrintUserInformation( const iId ) { client_print( iId, print_console, "- Motivo del ban: %s", g_eBanData[ Ban_Reason ] ); client_print( iId, print_console, "- Tiempo restante estimado: %d minutos", g_eBanData[ Ban_Time ] > 0 ? ( ( g_eBanData[ Ban_Time ] - get_systime( ) ) / 60 ) : -1 ); client_print( iId, print_console, "- Admin que te baneo: %s", g_eBanData[ Ban_Admin ] ); client_print( iId, print_console, "- Tu HID: %s", g_eBanData[ Ban_HID ] ); }
FindPlayer( &iId, const iUserId ) { for( iId = 1; iId <= MAX_PLAYERS; iId++ ) { if( !is_user_connected( iId ) || ( get_user_userid( iId ) != iUserId ) ) continue; break; } return is_user_connected( iId ) ? true : false; }
GetBanHID( &iTarget, szArgs[32] ) { if( szArgs[0] == '#' && is_str_num( szArgs[1] ) ) { new iUserId = str_to_num( szArgs[1] ); for( iTarget = 1; iTarget <= MAX_PLAYERS; iTarget++ ) { if( is_user_connected( iTarget ) && iUserId == get_user_userid( iTarget ) ) { copy( g_eBanData[ Ban_HID ], charsmax( g_eBanData[ Ban_HID ] ), g_szPlayerHID[ iTarget ] ); break; } } } else if( szArgs[8] == '-' ) { for( iTarget = 1; iTarget <= MAX_PLAYERS; iTarget++ ) { if( is_user_connected( iTarget ) && equal( szArgs, g_szPlayerHID[ iTarget ] ) ) break; } } else { iTarget = find_player( "bhl", szArgs ); if( iTarget > 0 ) copy( g_eBanData[ Ban_HID ], charsmax( g_eBanData[ Ban_HID ] ), g_szPlayerHID[ iTarget ] ); } return (g_eBanData[ Ban_HID ][8] == '-'); }
/* =============================================================================== * [ SQL Section ] * =============================================================================== */
MySQL_Init( ) { new iErrnum, szData[ 128 ], szSQLData[ 5 ][ 32 ]; get_localinfo( "amxx_configsdir", szData, charsmax( szData ) ); add( szData, charsmax( szData ), "/mysql/bans.cfg" ); if( !file_exists( szData ) ) set_fail_state( "[MySQL] No se ha podido encontrar el archivo de configuraciones." ); new iFile = fopen( szData, "rt" ), iNum; while( !feof( iFile ) ) { fgets( iFile, szData, charsmax( szData ) ); trim( szData ); if( szData[ 0 ] == ';' || ( strlen( szData ) <= 4 ) ) continue; strtok( szData, szData, charsmax( szData ), szSQLData[ iNum++ ], charsmax( szSQLData[ ] ), '=', true ); } fclose( iFile ); g_hMySQLHost = mysql_makehost( szSQLData[ 0 ], szSQLData[ 1 ], szSQLData[ 2 ], szSQLData[ 3 ] ); mysql_connect( g_hMySQLHost, iErrnum, szData, charsmax( szData ) ); 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 szQuery[ 512 ], szData[ 4 ];
szData[ 0 ] = iId; szData[ 1 ] = iType; switch( iType ) { case Query_Check: formatex( szQuery, charsmax( szQuery ), "SELECT * FROM bans WHERE ban_hid=^"%s^" ORDER BY ban_time DESC LIMIT 1", g_szPlayerHID[ iId ] ); case Query_Ban: formatex( szQuery, charsmax( szQuery ), "INSERT INTO bans VALUES ( null, ^"%s^", ^"%s^", ^"%s^", '%d' )", g_eBanData[ Ban_HID ], g_eBanData[ Ban_Reason ], g_eBanData[ Ban_Admin ], g_eBanData[ Ban_Time ] ); case Query_Unban: formatex( szQuery, charsmax( szQuery ), "DELETE * FROM bans WHERE ban_hid=^"%s^"", g_eBanData[ Ban_HID ] ); } mysql_query( g_hMySQLHost, "MySQL_QueryHandler", szQuery, szData, charsmax( szData ) ); }
public MySQL_QueryHandler( iFailstate, szError[ ], iErrsize, szData[ ], iDatasize ) { static iId, iType; iId = szData[ 0 ]; iType = szData[ 1 ]; if( iFailstate >= TQUERY_SUCCESS ) { if( iType == Query_Check ) { if( mysql_num_results( ) > 0 ) { mysql_read_result( 2, g_eBanData[ Ban_Reason ], charsmax( g_eBanData[ Ban_Reason ] ) ); mysql_read_result( 3, g_eBanData[ Ban_Admin ], charsmax( g_eBanData[ Ban_Admin ] ) ); g_eBanData[ Ban_Time ] = mysql_read_result( 4 ); if( g_eBanData[ Ban_Time ] == 0 || g_eBanData[ Ban_Time ] > get_systime( ) ) { PrintUserInformation( iId ); server_cmd( "kick #%d ^"Usted esta baneado (Info. en consola)^"", get_user_userid( iId ) ); 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.
Mensajes: 1,072
Temas: 57
Registro en: Feb 2016
Reputación:
8
09/12/2016, 12:37 PM
(Última modificación: 09/12/2016, 12:48 PM por Niper.-..)
Gracias Treki!.
En el PrintUserInformation, puedo poner el Código PHP: client_print(0, print_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 ?
Mensajes: 2,454
Temas: 14
Registro en: Oct 2013
Reputación:
51
(09/12/2016, 12:37 PM)Niper.-. escribió: Gracias Treki!.
En el PrintUserInformation, puedo poner el Código PHP: client_print(0, print_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.
Mensajes: 1,072
Temas: 57
Registro en: Feb 2016
Reputación:
8
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 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 );
Mensajes: 2,454
Temas: 14
Registro en: Oct 2013
Reputación:
51
(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 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 );
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.
|