18/04/2019, 10:26 PM
Lo que dice el titulo, indagando por Internet encontré un sistema de habilidades de @cLAANS y la verdad lo edite un poco quite algunas cosas que no me gustaban y ahora quiero pedir o que me oriente a como añadirle que vaya aumentando el daño ya sea con cualquier arma por puntos.
Cualquier tipo de ayuda será bien recibida.
Cualquier tipo de ayuda será bien recibida.
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
#define PLUGIN "Habilidades por puntos"
#define AUTHOR ""
#define VERSION "1.2"
new const TAG [] = "[HABILIDADES]"
new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame
enum _:DATA_MEJORA { MEJORA_NAME[10], MEJORA_COSTO, MEJORA_MAX };
new g_mejora_data[][DATA_MEJORA] =
{
{ "Vida", 10, 20 },
{ "Velocidad", 11, 5 },
{ "Gravedad", 16, 4}
};
new g_habilidad[33][3];
new g_puntos[33];
new g_msgSayText;
#define vida(%1) (%1 * 15)
#define velocidad(%1) (%1 * 0.1)
#define gravedad(%1) (%1 * 0.1)
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR);
register_clcmd("say /habilidades" , "show_menu_puntos");
RegisterHam(Ham_Player_ResetMaxSpeed, "player", "fw_Player_ResetMaxSpeed", 1);
RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawn_Post", 1);
}
public fw_PlayerSpawn_Post( id )
{
set_user_health(id, get_user_health(id) + vida( g_habilidad[id][0]));
set_user_gravity(id, get_user_gravity(id) - gravedad(g_habilidad[id][2]));
return HAM_IGNORED;
}
public fw_Player_ResetMaxSpeed( id )
set_user_maxspeed(id, get_user_maxspeed(id) + velocidad(g_habilidad[id][1]));
public show_menu_puntos(id)
{
new iLen[250];
new hadle_puntos = menu_create("\ySistema de habilidades", "hadle_puntos")
for(new i = 0; i < sizeof g_mejora_data; i++)
{
if(g_habilidad[id][ i] <= g_mejora_data[i][MEJORA_MAX])
{
if(g_puntos[id] >= g_mejora_data[i][MEJORA_COSTO])
formatex(iLen , charsmax(iLen), "\wAumentar : %s [%d / %d] \y[ Costo : %d P]", g_mejora_data[i][MEJORA_NAME], g_habilidad[id][i], g_mejora_data[i][MEJORA_MAX], g_mejora_data[i][MEJORA_COSTO]);
else
formatex(iLen , charsmax(iLen), "\dAumentar : %s [%d / %d] \r[P.Necesarios : %d]", g_mejora_data[i][MEJORA_NAME], g_habilidad[id][i], g_mejora_data[i][MEJORA_MAX], g_mejora_data[i][MEJORA_COSTO]);
if(g_habilidad[id][i] >= g_mejora_data[i][MEJORA_MAX])
formatex(iLen, charsmax(iLen), "\d[%d] %s [%d / %d] \r[COMPLETADO]", i+1, g_mejora_data[i][MEJORA_NAME], g_habilidad[id][i], g_mejora_data[i][MEJORA_MAX]);
}
menu_additem(hadle_puntos, iLen);
}
menu_setprop(hadle_puntos, MPROP_EXITNAME,"\ySalir");
menu_display(id, hadle_puntos, 0);
return PLUGIN_HANDLED;
}
public hadle_puntos(id , menu, item)
{
menu_destroy(menu);
if (item == MENU_EXIT) return;
if(g_puntos[id] < g_mejora_data[item][MEJORA_COSTO])
{
hns_print_color(id, "^x04%s^x01 Nesecitas^x03 %d^x01 puntos para mejorar^x03 %s^x01.", TAG, g_mejora_data[item][MEJORA_COSTO], g_mejora_data[item][MEJORA_NAME]);
client_cmd(id, "spk buttons/button10.wav");
return;
}
if(g_habilidad[id][item] >= g_mejora_data[item][MEJORA_MAX])
{
hns_print_color(id, "^x04%s^x01 Subistes el maximo de puntos para la mejora:^x03 %s^x01.", TAG, g_mejora_data[item][MEJORA_NAME]);
client_cmd(id, "spk buttons/button10.wav" );
return;
}
g_puntos[id] -= g_mejora_data[item][MEJORA_COSTO];
g_habilidad[id][item]++;
hns_print_color(id, "^x04%s^x01 Subistes la mejora:^x03 %s^x01 ahora tenes^x03 %d^x01 /^x03 %d^x01 completada de ella. ", TAG, g_mejora_data[item][MEJORA_NAME], g_habilidad[id][item], g_mejora_data[item][MEJORA_MAX]);
show_menu_puntos(id);
}
stock hns_print_color( id, const mensaje[ ], any:...)
{
static buffer[ 192 ];
vformat(buffer, charsmax(buffer), mensaje, 3);
message_begin(MSG_ONE_UNRELIABLE, g_msgSayText, _, id );
write_byte( id );
write_string(buffer );
message_end( );
}