Mensajes: 117
Temas: 37
Registro en: Nov 2018
Reputación:
0
09/12/2018, 08:51 PM
(Última modificación: 09/12/2018, 09:00 PM por wavee. Edited 1 time in total.)
Código PHP: Error: Undefined symbol "id" on line 2331 Error: Too many error messages on one line on line 2334
Aiuda
Código PHP: public client_putinserver( Index ) { Registrado[ Index ] = 0 BadPassword[ Index ] = 1 set_task( 0.1, "clcmd_changeteam", Index ) // Plugin disabled? if (!g_pluginenabled) return; // Player joined //2331 g_isconnected[id] = true // Cache player's name //2334 get_user_name(id, g_playername[id], charsmax(g_playername[])) // Initialize player vars reset_vars(id, 1) Load( Index ) // Load player stats? if (get_pcvar_num(cvar_statssave)) load_stats(id) Load( Index ) // Set some tasks for humans only if (!is_user_bot(id)) { // Set the custom HUD display task set_task(1.0, "ShowHUD", id+TASK_SHOWHUD, _, _, "b") // Disable minmodels for clients to see zombies properly set_task(5.0, "disable_minmodels", id) } else { // Set bot flag g_isbot[id] = true // CZ bots seem to use a different "classtype" for player entities // (or something like that) which needs to be hooked separately if (!g_hamczbots && cvar_botquota) { // Set a task to let the private data initialize set_task(0.1, "register_ham_czbots", id) } } }
Mensajes: 35
Temas: 4
Registro en: Mar 2017
Reputación:
1
Mensajes: 117
Temas: 37
Registro en: Nov 2018
Reputación:
0
(09/12/2018, 09:22 PM)angel escribió: Index no id Tengo otra duda, porque dice en el mismo tut que
"Todos los Menúes accesibles por SAY y / o CONSOLA, van a hacer que se bugeen, la solución es poner donde se llama la Función que se crea el MENÚ, el siguiente código:"
Código PHP: if( !Registrado[ Index ] || BadPassword[ Index] ) return;
Cuales serian?
Código PHP: public clcmd_changeteam(Index) { static Team; Team = get_user_team( Index ) if( ( Team == 0 || Team == 3 ) && !BadPassword[ Index ] && Registrado[ Index ] ) // Si esta en el Team UNNASIGNED o SPECTATOR, si tiene bien la Password y si está Registrado... return PLUGIN_CONTINUE; // ... le muestra el Menú de Teams. else if( !Registrado[ Index ] || BadPassword[ Index ] ) // Si no está Registrado o tiene mal la Password, le mostramos el Menú de Registro y Login. { static Menu, SZ_Items[ 32 ] Menu = menu_create( "\r[ZP+NIVEL]", "MenuBadPassword" ) formatex( SZ_Items, 31, "%s", !Registrado[ Index ] ? "Registrar nueva Cuenta" : "Ingresar Contraseña" ) menu_additem( Menu, SZ_Items, "1" ) //* Si no está Registrado la Opción esta será: "Registrar nueva Cuenta", de lo contrario será: "Ingresar Contraseña". menu_setprop( Menu, MPROP_EXITNAME, "Salir" ) menu_display( Index, Menu, 0 ) return PLUGIN_HANDLED; } else show_menu_game( Index ) // Si le cambiaron el nombre a esta función, también deben cambiarselo acá. return PLUGIN_HANDLED; }
public CMDRegistrarse( Index ) { if( Registrado[ Index ] || BadPassword[ Index ] ) return PLUGIN_HANDLED; client_cmd( Index, "messagemode IntroducirContrasenia" ) return PLUGIN_CONTINUE; }
public CMDIntroducirContrasenia( Index ) { read_args( SZ_Password[ Index ], charsmax( SZ_Password[ ] ) ) // Ponemos en la Variable SZ_Password lo que escribió como Contraseña remove_quotes( SZ_Password[ Index ] ) // Analiza lo que escribimos trim( SZ_Password[ Index ] ) // Esta opción es para remover los ESPACIOS ( si es que puso ) al principio y al final de lo que escribió
if( equal( SZ_Password[ Index ], "" ) || contain( SZ_Password[ Index ], " ") != -1) // En la primer parte, verificamos si lo que ingresó contiene algo......y en la segunda parte verificamos si lo que ingresó tiene espacios, si coincide alguna de las dos cosas, no se lo aceptamos. return PLUGIN_HANDLED; else if( BadPassword[ Index ] ) // Si se llama esta parte, quiere decir que lo que ingresó contiene algo y no tiene espacios, pero también quiere decir que está Introduciendo la Contraseña para Logearse. { static SZ_Data[ 512 ], SZ_Name[ 32 ], VAULT_Password[ 191 ] get_user_name( Index, SZ_Name, 31 ) if( !fvault_get_data( Vault, SZ_Name, SZ_Data, charsmax( SZ_Data ) ) ) return 0; parse( SZ_Data, VAULT_Password, 190 ) if( equal( SZ_Password[ Index ], VAULT_Password ) ) // Si lo que Ingreso coincide con la Password Registrada, lo mandamos a la Selección de Teams. { client_cmd( Index, "setinfo _pass ^"%s^"", SZ_Password[ Index ] ) BadPassword[ Index ] = 0 Load( Index ) // Fixeamos un Error ya que si es la Primera vez que se registra, cuando llame al Save no aparecerá ninguna Password, esto lo Fixea. SZ_Password_T[ Index ] = SZ_Password[ Index ] return PLUGIN_HANDLED; } return PLUGIN_HANDLED; } else // Si se llama esta parte, quiere decir que lo que ingresó contiene algo y no tiene espacios. { client_cmd( Index, "setinfo _pass ^"%s^"", SZ_Password[ Index ] ) // Creamos una Setinfo al jugador con el prefijo _pass y la contraseña que ingresó. Ustedes si quieren cambienle el prefijo. Registrado[ Index ] = 1 // Guardamos el Nombre, ls Password y los AmmoPacks actuales static SZ_Name[ 32 ], SZ_Data[ 512 ] get_user_name( Index, SZ_Name, 31 ) // Si quieren agregar mas Datos solo vayan aumentando los parametros con su respectiva variable. formatex( SZ_Data, charsmax( SZ_Data ), "%s %d", SZ_Password[ Index ], g_ammopacks[Index] ) // Esta función del FVault sirve para setear datos ( Recomiendo: Que lean el Include del FVault que está posteado al final de este Post ) fvault_set_data( Vault, SZ_Name, SZ_Data ) // Fixeamos un Error ya que si es la Primera vez que se registra, cuando llame al Save no aparecerá ninguna Password, esto lo Fixea. SZ_Password_T[ Index ] = SZ_Password[ Index ] return PLUGIN_HANDLED; } return PLUGIN_CONTINUE; }
public Save( Index ) { if( !Registrado[ Index ] || BadPassword[ Index ] ) // Si NO esta registrado, o si tiene la Contraseña Incorrecta, no le guardamos nada. return PLUGIN_HANDLED; static SZ_Data[ 512 ], SZ_Name[ 32 ] // Guardamos la Data. formatex( SZ_Data, charsmax( SZ_Data ), "%s %d", SZ_Password_T[ Index ], g_ammopacks[Index] ) get_user_name( Index, SZ_Name, 31 ) fvault_set_data( Vault, SZ_Name, SZ_Data ) return PLUGIN_CONTINUE; }
Load( Index ) { static SZ_Data[ 512 ], SZ_Name[ 32 ], SETINFO_Password[ 191 ], VAULT_Password[ 191 ], APs[ 11 ] get_user_name( Index, SZ_Name, 31 ) get_user_info( Index, "_pass", SETINFO_Password, 190 ) // Seteamos en SETINFO_Password lo que tiene como Setinfo con el prefijo _pass if( !fvault_get_data( Vault, SZ_Name, SZ_Data, charsmax( SZ_Data ) ) ) // Detectamos si NO existe su Nombre y Data en el Vault. En ese caso, yo puse que lo mande al Menu de Teams ( Donde le pusimos que se Registre ). { set_task( 0.1, "clcmd_changeteam", Index ) // Si le cambiaron el nombre a esta función, también deben cambiarselo acá. Si no les aparece el Menú de Teams cuando hacen esto, usen set_task de 0.2 return 0; } Registrado[ Index ] = 1 // El Nombre y la Password JAMÁS la cargen. parse( SZ_Data, VAULT_Password, 190, APs, 10 ) // La función PARSE, separa los Datos 1 por 1. Si guardamos la Password primero, y los AmmoPacks despues, entonces este Parse está bien, obviamente tiene que seguir el Orden en el que se guardó. if( equal( SETINFO_Password, VAULT_Password ) ) // Si la Contraseña del Jugador coincide con la Registrada de su Nick, cargamos sus Datos. { // Fixeamos un Error para que no reemplaze la Password Registrada por alguna que puede llegar a cambiar el adentro del Server. SZ_Password_T[ Index ] = SETINFO_Password // Cargamos los AmmoPacks. ( Numero ) g_ammopacks[Index] = str_to_num( APs ) set_task( 0.1, "clcmd_changeteam", Index ) // Si le cambiaron el nombre a esta función, también deben cambiarselo acá. Si no les aparece el Menú de Teams cuando hacen esto, usen set_task de 0.2 // Ejemplo de: Cargar un Float // Variable_De_Float[Index] = str_to_float( Float ) return 2; } else // Si la Contraseña del Jugador NO coincide con la Registrada de su Nick, podemos Kickearlo, mandarlo a Spect, un menú, etc.. { BadPassword[ Index ] = 1 // Yo le voy a poner que si tiene mal la Password lo mande a Spect y el Menú de Ingresar la Password. set_task( 0.1, "clcmd_changeteam", Index ) // Si le cambiaron el nombre a esta función, también deben cambiarselo acá. Si no les aparece el Menú de Teams cuando hacen esto, usen set_task de 0.2. //.... } return 1; }
public MenuBadPassword( Index, Menu, Item ) { if( Item == MENU_EXIT ) { menu_destroy( Menu ) return PLUGIN_HANDLED; } static Access, Data[6], iName[64], CallBack menu_item_getinfo( Menu, Item, Access, Data, 5, iName, 63, CallBack ) switch( str_to_num( Data ) ) { case 1: { if( !Registrado[ Index ] ) CMDRegistrarse( Index ) else client_cmd( Index, "messagemode IntroducirContrasenia" ) } } menu_destroy( Menu ) return PLUGIN_HANDLED; }
Mensajes: 1,182
Temas: 18
Registro en: Oct 2013
Reputación:
16
No entendí ni mierda, que es "tut"?
El codigo que diste ...
Código PHP: if( !Registrado[ Index ] || BadPassword[ Index] ) return;
Lo que hace es que si la variable Registrado es nula, ó la variable BadPassword tiene un valor mayor a 0, detiene la ejecución del código.
Saludos,
cLAANS.-
Mi unico plugin.
Tutorial de niveles.
Ayudo, pero no de la manera que quieren, si quieren aprender les servirá lo mio, para pedir el codigo en bandeja tienen la sección 'Pedidos'
(09/11/2017, 09:30 PM)SoundBlaster escribió: Espera y llamo a los power rangers para que me digan la linea de error
|