Jump to content
  • ¡Hola, Invitado! Únete a nuestra comunidad y construyamos juntos algo increíble.

    ¡Bienvenido a nuestra comunidad! Al unirte, formarás parte de una comunidad apasionada por MAPPING. Para participar activamente, simplemente haz clic en el botón ‘Conectarse’ o ‘Registrarse’. Una vez registrado, podrás publicar mensajes, compartir tus experiencias y explorar los diversos foros disponibles. ¡Esperamos verte pronto y compartir momentos increíbles juntos!

[TUT] Hacer Niveles

Valorar este tema


Publicaciones recomendadas

Publicado (editado)

Nombre: Hacer Niveles

Author: cLAANS

Imágenes: No hay...

Fuente: Tutorial - Hacer Niveles

 

Resto del tutoriarl:

#include < amxmodx > // Libreria que siempre y cada uno de nuestros plugins va a nesecitar
#include < hamsandwich > // Libreria que vamos a utilizar para detectar cuando matamos a alguien y cuando revive alguien

#define SetBit(%1,%2) ( %1 |= ( 1 << ( %2 & 31 ) ) )        // Bits, Leer tutorial de rocox para informarce mas
#define ClearBit(%1,%2) ( %1 &= ~ ( 1 << ( %2 & 31 ) ) )      // Bits, Leer tutorial de rocox para informarce mas
#define IsBit(%1,%2) ( %1 & ( 1 << ( %2 & 31 ) ) )             // Bits, Leer tutorial de rocox para informarce mas

#define Siguiente_nivel(%1) %1 * 15 // Macro que se elevara segun otra variable ( Mas abajo lo veran )
#define SLOTS 14 // Los Slots maximos del servidor + 1; 

new const VERSION[ ] =    "1.0" // Definimos la version del plugin

new g_frags[ SLOTS ]; // Variable que va a almacenar nuestros frags 
new g_level[ SLOTS ]; // Variable que va a almacenar nuestros levels

new g_conectado; // Variable que vamos a utilizar para no llamar a una native ( is_user_connected( index ) )
new g_vivo; // Variable que vamos a utilizar para no llamar a una native ( is_user_alive( index ) )

public plugin_init( )
{
   register_plugin( "Tutorial para hacer niveles", VERSION, "cLAANS" );

   RegisterHam( Ham_Killed, "player", "fw_player_killed" ); // Llamamos a Ham Killed para ver Cuando matamos a alguien 
   RegisterHam( Ham_Spawn, "player", "fw_player_spawn" ); // Llamamos a Ham Spawn para ver cuando revive un jugador
}

public client_putinserver( id ) 
   SetBit( g_conectado, id ); 
// Seteamos en true una variable que usaremos despues para verificar si un usuario esta conectado y asi llamar una variable menos

public client_disconnected( id )
{
   ClearBit( g_conectado, id ); 
       ClearBit( g_vivo, id );
}

// La varibale que seteamos en true cuando se conecto el usuario la seteamos en false para evitar errores

public fw_player_spawn( id )
   if( is_user_alive( id ) ) // Para evitar errores, si el usuario esta vivo
       SetBit( g_vivo, id )  // Seteamos en true nuestra variable 

public fw_player_killed( victim, attacker )
{
   if( !IsBit( g_conectado, victim ) || !IsBit( g_vivo, victim ) || victim == attacker ) // Si no esta conectada la victima, o si no esta viva o si la victima es igual al atacante
       return; // Paramos la funcion

   /* Si un usuario no esta conectado no podra atacar asi que no verificamos si el atacante esta conectado
   * lo mismo cuando algunos verifican si el atacante esta vivo, si no lo esta, pues no atacara */

   g_frags[ attacker ]++; // Lo que hacemos aca es aumentar nuestra variable ( g_frags ) +1

   /* Hay miles de formas de las que podemos hacer actuar esta variable */
   /* SI queremos la aumentamos en 10 */

   g_frags[ attacker ] += 10;

   ClearBit( g_vivo, victim ); // Seteamos en false la variable "g_vivo" para evitar problemas

   chequear_nivel( attacker ); // Chequeamos si nuestros frags son los suficientes para pasar de nivel
}

public chequear_nivel( index )
{
   if( g_frags[ index ] >= Siguiente_nivel( g_level[ index ] ) ) 
   // SI nuestros frags son mayores o iguales a los requeridos por nuestra macro
   {
       g_frags[ index ] = 0 // Seteamos los frags en 0 ( SI QUIEREN )
       g_level[ index ]++; // Aumentamos 1 nivel, o los que se les den la gana
   }
} 

 

Ahí está todo explicado...

Editado por totopizza
Invitado
Este tema está cerrado a nuevas respuestas.
×
×
  • Crear nuevo...

Información importante

Al utilizar nuestra web, aceptas nuestras Política de privacidad estás de acuerdo con las condiciones establecidas.