22/08/2015, 08:21 PM
Nombre de la guía: [ZP4.3 GUIA ] Niveles por daño + resets
Dificultad: Fácil.
Conocimientos Previos: Introducción al pawn ( Basico )
Hola:$
Esta sera mi primera guía, la cree hace algún tiempo en otro foro. Aquí se las dejo actualizada :p
Requisitos:
LINK :p
1er paso:
2do paso:
3er paso:
Buscamos la función: "public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)"
Buscamos la condición: "if (!g_zombie[attacker])", y antes de que cierre la condición, antes del "return HAM_IGNORED;"
4to paso:
FIN DE LA GUÍA...
Cualquier, Duda/Queja/Sugerencia, comentar y con gusto le atenderemos
Saludos
Dificultad: Fácil.
Conocimientos Previos: Introducción al pawn ( Basico )
Hola:$
Esta sera mi primera guía, la cree hace algún tiempo en otro foro. Aquí se las dejo actualizada :p
Requisitos:
Código:
AMX Studio ( No es totalmente necesario, pero les facilita las cosas )
Compilador amxx ( AMXXPC.EXE )
Código fuente del mod ( Link abajo )
LINK :p
1er paso:
Crear Variables, cvars, etc.
Código PHP:
// Macro para definir sig nivel
#define LevelUpCost(%1) (%1 * 55 + 20) // nivel x 55 + 20 ejemplo: si soy nivel uno: 1x55+20=75 para sig. nivel || soy nivel 3: 3x55+20=185 para sig. nivel
// Este mensaje saldrá en el menú de reseteo
new const MsgReset[] = "Al resetear tu nivel y exp volveran a 0, pero desbloqueras nuevas funciones."
new cvar_maxlevel, cvar_dmgreq, cvar_exp; // Nivel Maximo, Daño requerido, Exp por dmg
new kDamage[33], kExp[33], kNivel[33], kResets[33]; // Daño, Experiencia, Nivel, Reset.
2do paso:
Setear un valor a las variables que acabamos de crear, para evitar bugs:
Valor para las cvars:
Buscamos "plugin_init()" y debajo de las demás cvarrs, agregamos las nuestras:
Valor para las variables:
Buscamos "reset_vars(id, resetall)", dentro de esta funcion buscamos la condicion "if(resetall)", y antes de que se cierre la condición, agregamos:
Así, seteamos los valores a las variables.
Valor para las cvars:
Buscamos "plugin_init()" y debajo de las demás cvarrs, agregamos las nuestras:
Código PHP:
register_clcmd( "say /reset", "show_menu_reset" ); // Cuando escriban "/reset", se abrira el menu de reseteo
cvar_maxlevel = register_cvar( "zp_maxlevel" , "100" ); // Se definen el nombre de la cvar, y el nivel máximo
cvar_dmgreq = register_cvar( "zp_dmg_req" , "1200" ); // Se definen el nombre de la cvar, y el daño requerido
cvar_exp = register_cvar( "zp_exp_bydmg", "1" ); // Se definen el nombre de la cvar, y la experiencia que se otorga cada vez que se alcance el daño requerido.
Valor para las variables:
Buscamos "reset_vars(id, resetall)", dentro de esta funcion buscamos la condicion "if(resetall)", y antes de que se cierre la condición, agregamos:
Código PHP:
kNivel[id] = 1;
kExp[id] = kDamage[id] =kResets[id] = 0;
Así, seteamos los valores a las variables.
3er paso:
Buscamos la función: "public fw_TakeDamage(victim, inflictor, attacker, Float:damage, damage_type)"
Buscamos la condición: "if (!g_zombie[attacker])", y antes de que cierre la condición, antes del "return HAM_IGNORED;"
Código PHP:
kDamage[attacker] += floatround(damage);
static dmg_required; dmg_required = get_pcvar_num(cvar_dmgreq);
while(kDamage[attacker] > dmg_required)
{
kDamage[attacker] -= dmg_required;
SetExp( attacker , get_pcvar_num(cvar_exp) );
}
4to paso:
Crear funciones que se necesitan: ( C&P )
Esto va al final del plugin.
Esto va al final del plugin.
Código PHP:
SetExp( index , exp )
{
if( !g_isconnected[ index ] || !exp || kNivel[ index ] >= get_pcvar_num(cvar_maxlevel) ) return;
kExp[ index ] += exp;
static lvl; lvl = kNivel[ index ];
while( kExp[ index ] >= LevelUpCost(lvl) )
++kNivel[ index ];
if( lvl < kNivel[ index ] )
client_print( index , print_center, "Felicidades, Subiste al nivel: %d", kNivel[ index ] );
}
Código PHP:
show_menu_reset( index )
{
static Tittle[ 512 ], menu, maxlvl; maxlvl = get_pcvar_num(cvar_maxlevel);
formatex(Tittle, charsmax(Tittle), "\r[ZP] \wMenu de Reseteo^n\w%s^n\yNivel Requerido:\r %d", MsgReset, maxlvl )
menu = menu_create(Tittle, "menu_reset")
menu_additem(menu, (kNivel[index] >= maxlvl ) ? "Hacer Reseteo" : "\dNo puedes hacer reseteo...", "" );
menu_display(index, menu );
return PLUGIN_HANDLED;
}
public menu_reset( index , menu , item )
{
if( item != MENU_EXIT && kNivel[ index ] >= get_pcvar_num(cvar_maxlevel))
{
kNivel[ index ] = 1;
kExp[ index ] = 0;
++kResets[ index ];
client_print( index , print_center , "Felicidades, acabas de hacer un reset, tienes: %d", kResets[ index ] );
}
menu_destroy( menu );
return PLUGIN_HANDLED;
}
FIN DE LA GUÍA...
Cualquier, Duda/Queja/Sugerencia, comentar y con gusto le atenderemos
Saludos