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!

Crear un XP mod

Valorar este tema


Invitado CHRiS

Publicaciones recomendadas

Publicado

segun lei esto es algo como, dificil de hacer y codiciado por algunos :P.

Espero que les sirva este humilde aporte.

 

 

Para empezar:

 

Debemos agregar estos includes al plugin, ya que estos includes son parte fundamental, sin estos, el plugin no puede funcionar.

 

#include 
#include 
#include 
#include   

 

Para hacer este plugin algo así como, "divertido", le pondremos clases de animales.

 

PHP Code:

enum pclass
{
   CLASS_NOTHING=0,
   CLASS_DOG,
   CLASS_CAT,
   CLASS_HORSE,
   CLASS_COW,

   NUM_OF_CLASSES
}  

Despues hacemos 3 variables, que indicarán las clases, xp y level.

PHP Code:

new pclass:g_PlayerClass[33];
new g_PlayerXP[33];
new g_PlayerLevel[33];

Ahora una constante con la cantidad máxima de clases, y con los nombre que tendrán en el juego.

 

PHP Code:

new const CLASS_NAMES[NUM_OF_CLASSES][] = {
   "None",
   "Dog",
   "Cat",
   "Horse",
   "Cow"
}  

Aquí hablaremos parte de los levels.

PHP Code:

#define NUM_OF_LEVELS 6 //Esta es la cantidad de levels que tendrémos en nuestro mod

PHP Code:

new const LEVELS[NUM_OF_LEVELS] = {
   100, //100 XP necesarios para el Level 1
   200, //200 XP necesarios para el Level 2
   400, //Etc..
   800,
   1600,
   3200
}  

Esto es un mensaje que se mostrará:

 

PHP Code:

new gmsgStatusText;  
Ahora vamos a plugin_init:

 

PHP Code:

public plugin_init()
{
   register_plugin("Animal Mod", "1.0", "XunTric")
   
   register_cvar("sv_animalmod", "1") //El XP Mod estará activado
   
   register_event("DeathMsg", "DeathMsg", "a")
   
   register_cvar("XP_per_kill", "20") //La cantidad de XP que uno recibira al matar gente

   register_menucmd(register_menuid("menu_ChooseAnimal"),1023,"MenuAction_ChooseAnimal");
   
   register_event("ResetHUD", "ResetHud", "b")
   
   gmsgStatusText = get_user_msgid("StatusText")
}  

PHP Code:

ChooseAnimal(id) //Aquí el jugador escojera su clase
{
   new menu[] = "Animal Mod: Choose Animal^n^n1. Dog^n2. Cat^n3. Horse^n4. Cow^n^n0. Exit" // I think this should be better than doing format, in case it works Wink
   new keys = MENU_KEY_0|MENU_KEY_1|MENU_KEY_2|MENU_KEY_3
   
   show_menu(id, keys, menu, -1, "menu_ChooseAnimal")    
}  

Aquí le mandará mensajes al jugador según la clase de animal que escoja.

 

PHP Code:

public MenuAction_ChooseAnimal(id, pclass:key)
{
   if (key == g_PlayerClass[id])
   {
       client_print(id, print_chat, "[Animal Mod] You are already a %s! Choose something else!", CLASS_NAMES[key]);
       ChooseAnimal(id);
       return;
   }
   client_print(id, print_chat, "[Animal Mod] You are now a %s!", key);
   g_PlayerClass[id] = key;      
   ShowHUD(id);
}

public ResetHUD(id)
{
   if (g_PlayerClass[id] == CLASS_NOTHING)
        ChooseAnimal(id);
}  

Aquí pondremos el code que hará que el jugador gane experiencia:

 

PHP Code:

public DeathMsg()
{
   if (!get_cvar_num("sv_animalmod")) //Esto significa que si la cvar "sv_animalmod" esta activada, el plugin funcionará como queremos
        return;
   
   new attacker = read_data(1)
   
   if (g_PlayerClass[attacker] == CLASS_NOTHING)
        return;
   
   if(g_PlayerLevel[attacker] == NUM_OF_LEVELS)
        return;
   
   g_PlayerXP[attacker] += get_cvar_num("XP_per_kill")
   
   if(g_PlayerXP[attacker] >= LEVELS[g_PlayerLevel[attacker]])
   {
       ++g_PlayerLevel[attacker];
        
       client_print(attacker, _:print_chat, "[Animal Mod] Congratulations! You are now level %i!", g_PlayerLevel[attacker])
   }
   ShowHUD(attacker);
}  

Este es un mensaje que le mostrará al jugador su nivel y xp:

 

PHP Code:

ShowHUD(id)    
{
   new HUD[51]
   format(HUD, 50, "[%s]Level: %i XP: %i", CLASS_NAMES[g_PlayerClass[id]], g_PlayerLevel[id], g_PlayerXP[id])

   message_begin(MSG_ONE, gmsgStatusText, {0,0,0}, id)
   write_byte(0)
   write_string(HUD)
   message_end()
}  

Y finalmente aquí hará que cuando entre otro jugador al servidor, este no obtenga el level o xp de otro.

 

PHP Code:

public client_connect(id)
{
   g_PlayerClass[id] = CLASS_NOTHING;
   g_PlayerXP[id] = 0;
   g_PlayerLevel[id] = 0;
}  

 

 

Echo por PM, traducido por zapdos1

 

  • 11 meses después...
×
×
  • Crear nuevo...

Información importante

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