Jump to content
Sign in to follow this  
totopizza

[TUT] Hacer Niveles

Recommended Posts

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...

Edited by totopizza

Share this post


Link to post
Share on other sites

Guest
This topic is now closed to further replies.
Sign in to follow this  

×
×
  • Create New...