12/10/2020, 01:24 AM
(Última modificación: 12/10/2020, 01:25 AM por Kiltr0. Edited 3 times in total.)
Hola, tal cual dice el titulo tengo un sistema de habilidades que edite creo que es de clans si no me equivoco, resulta que al aumentar los puntos de habilidad en el speed este no aumenta lo trato de medir con un hud de velocidad pero me marca la velocidad normal por eso vengo a pedir ayuda a ver si alguien me ayuda a solucionar este problema, dejo el código abajo.
pd: no esta el register_plugin(blabla) ya que este plugin lo tenia editado para adaptarlo.
Código PHP:
#include <amxmodx>
#include <amxmisc>
#include <fun>
#include <hamsandwich>
new Ham:Ham_Player_ResetMaxSpeed = Ham_Item_PreFrame
enum _:DATA_MEJORA { MEJORA_NAME[10], MEJORA_COSTO, MEJORA_MAX }
new g_szMejoras[][DATA_MEJORA] = {
{ "Chaleco", 13, 10 },
{ "Velocidad", 11, 5 },
{ "Gravedad", 16, 4 }
}
new gHabilidades[33][3], gPuntos[33];
#define chaleco(%1) (%1 * 10)
#define velocidad(%1) (%1 * 10.00)
#define gravedad(%1) (%1 * 0.07)
public plugin_init() {
register_clcmd("say /puntos" , "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_armor(id, get_user_armor(id) + chaleco(gHabilidades[id][0]))
set_user_gravity(id, get_user_gravity(id) - gravedad(gHabilidades[id][1]))
}
public fw_Player_ResetMaxSpeed(id) {
if(!is_user_alive(id)) return;
set_user_maxspeed(id, get_user_maxspeed(id) + velocidad(gHabilidades[id][2]))
}
public show_menu_puntos(id) {
new szText[500], menu;
formatex(szText, charsmax(szText), "\r[ESCONDIDAS LVL]^n\wSelecciona la Habilidad a Mejorar^nTienes \r%d Punto%s\w actualmente", gPuntos[id], (gPuntos[id] == 1) ? "" : "s")
menu = menu_create(szText, "h_puntos");
for(new i = 0; i < sizeof g_szMejoras; i++) {
if(gHabilidades[id][i] == g_szMejoras[i][MEJORA_MAX]) {
formatex(szText, charsmax(szText), "\d%s [ %d/%d ] \r( COMPLETADO )", g_szMejoras[i][MEJORA_NAME], gHabilidades[id][i], g_szMejoras[i][MEJORA_MAX])
}
else {
if(gPuntos[id] >= g_szMejoras[i][MEJORA_COSTO]) {
formatex(szText, charsmax(szText), "\wAumentar %s \d[ \r%d\d/\r%d\d ] \d( \w%d Punto%s \d)", g_szMejoras[i][MEJORA_NAME], gHabilidades[id][i], g_szMejoras[i][MEJORA_MAX], g_szMejoras[i][MEJORA_COSTO], (g_szMejoras[i][MEJORA_COSTO] > 1) ? "s" : "")
}
else {
formatex(szText, charsmax(szText), "\dAumentar %s [ %d/%d ] ( %d Punto%s )", g_szMejoras[i][MEJORA_NAME], gHabilidades[id][i], g_szMejoras[i][MEJORA_MAX], g_szMejoras[i][MEJORA_COSTO], (g_szMejoras[i][MEJORA_COSTO] > 1) ? "s" : "")
}
}
menu_additem(menu, szText);
}
menu_setprop(menu, MPROP_EXITNAME, "Salir");
menu_display(id, menu, 0)
}
public h_puntos(id, menu, item) {
if(item == MENU_EXIT) {
menu_destroy(menu);
return PLUGIN_HANDLED;
}
if(gPuntos[id] < g_szMejoras[item][MEJORA_COSTO]) {
Color(id, "Necesitas !t%d!y punto%s para mejorar !g%s!y.", g_szMejoras[item][MEJORA_COSTO], (g_szMejoras[item][MEJORA_COSTO] > 1) ? "s" : "", g_szMejoras[item][MEJORA_NAME])
client_cmd(id, "spk buttons/button10.wav")
return PLUGIN_HANDLED;
}
if(gHabilidades[id][item] == g_szMejoras[item][MEJORA_MAX]) {
Color(id, "Subiste el maximo de puntos para la mejora !g%s!y.", g_szMejoras[item][MEJORA_NAME])
client_cmd(id, "spk buttons/button10.wav");
return PLUGIN_HANDLED;
}
gPuntos[id] -= g_szMejoras[item][MEJORA_COSTO]
gHabilidades[id][item]++;
Color(id, "Subiste la mejora !t%s!y ahora tienes !g%d / %d!y completada de ella.", g_szMejoras[item][MEJORA_NAME], gHabilidades[id][item], g_szMejoras[item][MEJORA_MAX])
show_menu_puntos(id)
menu_destroy(menu);
return PLUGIN_HANDLED;
}
stock Color(const id, const Text[], any:...) {
new count = 1, players[32];
static msg[191], len, i;
len = formatex(msg, charsmax(msg), "!g[ESCONDIDAS LVL]!y ")
vformat(msg[len], 190 - len, Text, 3);
replace_all(msg, 190, "!g", "^4");
replace_all(msg, 190, "!y", "^1");
replace_all(msg, 190, "!t", "^3");
if(id)
players[0] = id;
else
get_players(players, count, "ch");
for( i = 0; i < count; ++i) {
if(is_user_connected(players[i]))
writeMessage(players[i], msg);
}
}
stock writeMessage(player, message[]) {
message_begin(MSG_ONE, get_user_msgid("SayText"), { 0, 0, 0 }, player);
write_byte(player);
write_string(message);
message_end();
}
pd: no esta el register_plugin(blabla) ya que este plugin lo tenia editado para adaptarlo.