Bueno, mi problema es que agregue la función para que los adm frageen de a 2. Pero el problema es que cuando llegan a los 15 frags (Requeridos para el nivel 2), no pasan de level, siguen sumando frags.
Codigo:
PHP Code:
#include <amxmodx>
#include <hamsandwich>
#include <engine>
#include <cstrike>
#include <fun>
#include <amxmisc>
#define PLUGIN "Base Builder Revolution"
#define VERSION "1.0"
#define AUTHOR "RodriiK - r0ma' (Niveles por Frags) - [R]ak (Crear una entidad)"
#define TAG "[Base Builder Revolution]"
//Tag en el mensaje de que subio de nivel
//Macro para obtener cuanto le falta para el siguiente nivel
//Si no resetean los frags usaria 1 macro asi mas o menos
//#define next_level(%1) ((%1 + 1) * (power(%1, 2) / 2)) /2
//Si resetan frags usaria algo asi
#define next_level(%1) %1 * 16
new g_vida[33]
new g_puntos[33]
new g_level[33] // Contiene los level de los players
new g_frags[33] // Los frags de los players
new g_conectado[33] // Variable para saber si el user esta conectado
new g_maxplayers, g_msgSayText//en g_maxplayers voy a obtener el maximo de players del sv para usarla en los loops, y en msgsay text para el stock de hns_print_color
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)//Registramos el plugin
RegisterHam(Ham_Killed, "player", "fw_PlayerKilled")//Evento de hamsandwich que se llama cuando matan a alguien.
register_clcmd("say /clases", "Menu")
register_clcmd("say /menu", "Menu2")
new ent = create_entity("info_target")//Creo 1 entidad
entity_set_string(ent, EV_SZ_classname, "entity_task")//Le seteo 1 classname
entity_set_float(ent, EV_FL_nextthink, 1.0)//La ago pensar cada 1.0 segundos
register_think("entity_task", "fw_ShowHUD")//El think de la entidad que va mostrar el hud
g_maxplayers = get_maxplayers()
g_msgSayText = get_user_msgid("SayText")
RegisterHam( Ham_Spawn, "player", "fw_playerspawn", 1)
}
public client_putinserver(id)
{
g_level[id] = 1//Reseteamos los level frags y le seteo conectado
g_frags[id] = 0
g_conectado[id] = 1
}
public client_disconnect(id)
{
g_conectado[id] = 0//No esta mas conectado
}
public fw_PlayerKilled(victim, attacker)
{
if(!g_conectado[victim] || !g_conectado[attacker] || victim == attacker || get_user_team(victim) == get_user_team(attacker))//Si no esta conectado la victima o el atacante o la victima es el atacante o son del mismo team no continua
return
if(is_user_admin(attacker))
{
g_frags[attacker] += 2
g_puntos[attacker] += 2
}
else
{
g_frags[attacker]++//Aumentamos frags y chekeamos si tiene suficientes para subir de nivel
check_level(attacker)
g_puntos[attacker]++
}
}
public fw_ShowHUD(ent)//Esto muestra el hud
{
static id
set_hudmessage(85, 255, 212, 0.80, 0.12, 0, 0.9)//Configuramos por asi decirlo el hud, el color, posicion, efecto, y tiempo
for( id = 1; id <= g_maxplayers; id++)
{
if(!g_conectado[id])//Si no esta conectado no continua
continue
show_hudmessage(id, "[Level: %d] [Frags: %d/%d] [Puntos: %d]", g_level[id], g_frags[id], next_level(g_level[id]), g_puntos[id])//Mostramos hud con nivel, frags y los necesarios para pasar al siguiente nivel.
}
entity_set_float(ent, EV_FL_nextthink, 1.0)
}
public check_level(id)
{
while(g_frags[id] >= next_level(g_level[id]))//Si los frags son mayores o igual a los necesarios para pasar de nivel.
{
g_level[id]++//Aumentamos el nivel
g_frags[id] = 0//Yo reseteo lo frags esto es a su gusto.
hns_print_color(id, "^x04%s^x01 Felicitaciones subiste al nivel:^x04 %d^x01.", TAG, g_level[id])//Mensaje que subio de nivel
if(cs_get_user_team(id) == CS_TEAM_T)
{
set_user_health(id, get_user_health(id) + g_vida[id] * 25)
}
}
}