#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <csx>
#include <fakemeta>
#include <fun>
#include <hamsandwich>
#include <nvault>
#define TASK_REGEN 134926
#define ID_REGEN (taskid - TASK_REGEN)
#define EFFECT_LENGTH 3
const KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
const FR_KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
const A_FR_KEYSMENU = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_6|MENU_KEY_7|MENU_KEY_8|MENU_KEY_9|MENU_KEY_0
// Definitia la salvarea pe nvault
new salvare_date;
// Nivele si XP
new XP[33];
new hp_level_f[33], ap_level_f[33], speed_lvl_f[33], gravity_lvl_f[33], damage_lvl_f[33], regenerare_lvl_f[33];
new hp_level_a_f[33], ap_level_a_f[33], speed_lvl_a_f[33], gravity_lvl_a_f[33], damage_lvl_a_f[33], regenerare_lvl_a_f[33];
// Functiile puterilor (regenerare si respawn)
new maximhp[33];
public plugin_init()
{
register_plugin("XP & POWERS", "1.1b", "cyby")
register_concmd("amx_givexp", "givexp_cmd", ADMIN_KICK, "<nume> <xp>")
// Comenzi ale jucatorilor
register_clcmd("chooseteam", "show_game")
register_clcmd("jointeam", "show_game")
// Eventuri si procese ale jucatorilor
// Moarte
register_event("DeathMsg", "ucidere", "a")
// Prethink(executa mereu)
register_forward(FM_PlayerPreThink, "player_prethink")
// Spawn Event
RegisterHam(Ham_Spawn, "player", "spawn_player_post", 1)
// Damage
RegisterHam(Ham_TakeDamage, "player", "damage_player")
// Regenerare (separat)
RegisterHam(Ham_TakeDamage, "player", "take_damage")
// Event castigare
register_event("SendAudio", "Win_Furien", "a", "2=%!MRAD_terwin")
register_event("SendAudio", "Win_Anti_Furien", "a", "2=%!MRAD_ctwin")
// Preluare date NVAULT
salvare_date = nvault_open("FURIEN_LVL");
register_menu("Game Menu", KEYSMENU, "menu_game")
register_menu("Furien Menu", FR_KEYSMENU, "menu_furien")
register_menu("AntiF Menu", A_FR_KEYSMENU, "menu_afurien")
}
public client_putinserver(id)
{
preluaredate(id)
}
public client_disconnect(id)
{
salvaredate(id)
XP[id] = 0
hp_level_f[id] = 0
ap_level_f[id] = 0
speed_lvl_f[id] = 0
gravity_lvl_f[id] = 0
damage_lvl_f[id] = 0
regenerare_lvl_f[id] = 0
hp_level_a_f[id] = 0
ap_level_a_f[id] = 0
speed_lvl_a_f[id] = 0
gravity_lvl_a_f[id] = 0
damage_lvl_a_f[id] = 0
regenerare_lvl_a_f[id] = 0
}
public salvaredate(id)
{
new nume[32]
get_user_name(id,nume,31)
new vaultnume[32],vaultdate[256]
format(vaultnume,31,"%s", nume)
format(vaultdate,255,"%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#", XP[id], hp_level_f[id], ap_level_f[id], speed_lvl_f[id], gravity_lvl_f[id], damage_lvl_f[id], regenerare_lvl_f[id], hp_level_a_f[id], ap_level_a_f[id], speed_lvl_a_f[id], gravity_lvl_a_f[id], damage_lvl_a_f[id], regenerare_lvl_a_f[id])
nvault_set(salvare_date,vaultnume,vaultdate)
return PLUGIN_CONTINUE
}
public preluaredate(id)
{
new nume[32]
get_user_name(id,nume,31)
new vaultnume[32],vaultdate[256]
format(vaultnume,31,"%s", nume)
format(vaultdate,255,"%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#%i#", XP[id], hp_level_f[id], ap_level_f[id], speed_lvl_f[id], gravity_lvl_f[id], damage_lvl_f[id], regenerare_lvl_f[id], hp_level_a_f[id], ap_level_a_f[id], speed_lvl_a_f[id], gravity_lvl_a_f[id], damage_lvl_a_f[id], regenerare_lvl_a_f[id])
nvault_get(salvare_date,vaultnume,vaultdate,255)
replace_all(vaultdate, 255, "#", " ")
new playerxp[32], hp_n_f[32], ap_n_f[32], speed_n_f[32], grav_n_f[32], dmg_n_f[32], regen_n_f[32], hp_n_a_f[32], ap_n_a_f[32], speed_n_a_f[32], grav_n_a_f[32], dmg_n_a_f[32], regen_n_a_f[32]
parse(vaultdate, playerxp, 31, hp_n_f, 31, ap_n_f, 31, speed_n_f, 31, grav_n_f, 31, dmg_n_f, 31, regen_n_f, 31, hp_n_a_f, 31, ap_n_a_f, 31, speed_n_a_f, 31, grav_n_a_f, 31, dmg_n_a_f, 31, regen_n_a_f, 31)
XP[id] = str_to_num(playerxp)
hp_level_f[id] = str_to_num(hp_n_f)
ap_level_f[id] = str_to_num(ap_n_f)
speed_lvl_f[id] = str_to_num(speed_n_f)
gravity_lvl_f[id] = str_to_num(grav_n_f)
damage_lvl_f[id] = str_to_num(dmg_n_f)
regenerare_lvl_f[id] = str_to_num(regen_n_f)
hp_level_a_f[id] = str_to_num(hp_n_a_f)
ap_level_a_f[id] = str_to_num(ap_n_a_f)
speed_lvl_a_f[id] = str_to_num(speed_n_a_f)
gravity_lvl_a_f[id] = str_to_num(grav_n_a_f)
damage_lvl_a_f[id] = str_to_num(dmg_n_a_f)
regenerare_lvl_a_f[id] = str_to_num(regen_n_a_f)
return PLUGIN_CONTINUE
}
public givexp_cmd(id,level,cid)
{
if(!cmd_access(id, level, cid, 2))
{
return PLUGIN_HANDLED;
}
new arg[32], name[32];
read_argv(1, arg, 31)
get_user_name(id, name, 31)
new jucator = cmd_target(id, arg, 31)
if(!jucator)
{
return PLUGIN_HANDLED
}
if(!is_user_connected(jucator))
{
return PLUGIN_HANDLED
}
new cant[4], name2[32];
get_user_name(jucator, name2, 31)
read_argv(2, cant, 3)
new XP_plus = str_to_num(cant)
XP[jucator] += XP_plus
mesaj_color(0, ".v[Furien].g Adminul.e %s.g a dat.e %d.g XP lui.e %s.g.", name, XP_plus, name2)
return PLUGIN_HANDLED;
}
public ucidere()
{
new atacator, victim;
atacator = read_data(1)
victim = read_data(2)
if(!is_user_connected(atacator) || !is_user_connected(victim))
{
return
}
if(atacator == victim)
{
return;
}
XP[atacator] += 10;
set_hudmessage(200, 100, 50, -1.0, -1.0, 0, 6.0, 2.5)
show_hudmessage(atacator, "+10 XP")
}
public bomb_planted(id)
{
XP[id] +=15
mesaj_color(id, ".v[Furien].g Ai primit.e 15 XP.g pentru plantarea bombei.")
}
public bomb_defused(id)
{
XP[id] +=15
mesaj_color(id, ".v[Furien].g Ai primit.e 15 XP.g pentru dezamorsarea bombei.")
}
public player_prethink(id)
{
if(!is_user_alive(id))
{
return PLUGIN_HANDLED;
}
if(cs_get_user_team(id) == CS_TEAM_T)
{
set_pev(id, pev_maxspeed, 500.0 + speed_lvl_f[id] * 25.0)
if(gravity_lvl_f[id] == 1)
{
set_pev(id, pev_gravity, 400.0/800.0)
}
else if(gravity_lvl_f[id] == 2)
{
set_pev(id, pev_gravity, 375.0/800.0)
}
else if(gravity_lvl_f[id] == 3)
{
set_pev(id, pev_gravity, 350.0/800.0)
}
else if(gravity_lvl_f[id] == 4)
{
set_pev(id, pev_gravity, 325.0/800.0)
}
else if(gravity_lvl_f[id] == 5)
{
set_pev(id, pev_gravity, 300.0/800.0)
}
else if(gravity_lvl_f[id] == 6)
{
set_pev(id, pev_gravity, 275.0/800.0)
}
else if(gravity_lvl_f[id] == 7)
{
set_pev(id, pev_gravity, 250.0/800.0)
}
}
if(cs_get_user_team(id) == CS_TEAM_CT)
{
set_pev(id, pev_maxspeed, 250.0 + speed_lvl_a_f[id] * 25.0)
if(gravity_lvl_a_f[id] == 1)
{
set_pev(id, pev_gravity, 750.0/800.0)
}
else if(gravity_lvl_a_f[id] == 2)
{
set_pev(id, pev_gravity, 700.0/800.0)
}
else if(gravity_lvl_a_f[id] == 3)
{
set_pev(id, pev_gravity, 650.0/800.0)
}
else if(gravity_lvl_a_f[id] == 4)
{
set_pev(id, pev_gravity, 600.0/800.0)
}
else if(gravity_lvl_a_f[id] == 5)
{
set_pev(id, pev_gravity, 550.0/800.0)
}
else if(gravity_lvl_a_f[id] == 6)
{
set_pev(id, pev_gravity, 500.0/800.0)
}
else if(gravity_lvl_a_f[id] == 7)
{
set_pev(id, pev_gravity, 450.0/800.0)
}
}
return PLUGIN_CONTINUE
}
public spawn_player_post(id)
{
if(!is_user_alive(id))
{
return PLUGIN_HANDLED;
}
if(cs_get_user_team(id) == CS_TEAM_T)
{
set_user_health(id, 100 + hp_level_f[id] * 25)
set_pev(id, pev_armorvalue, ap_level_f[id] * 25.0)
}
if(cs_get_user_team(id) == CS_TEAM_CT)
{
set_user_health(id, 100 + hp_level_a_f[id] * 25)
set_pev(id, pev_armorvalue, ap_level_a_f[id] * 25.0)
}
maximhp[id] = get_user_health(id)
return PLUGIN_CONTINUE
}
public damage_player(victim, inflictor, attacker, Float:damage, damage_type)
{
if(cs_get_user_team(attacker) == CS_TEAM_CT)
{
damage += damage_lvl_a_f[attacker] * 10
}
if(cs_get_user_team(attacker) == CS_TEAM_T)
{
if(get_user_weapon(attacker) == CSW_KNIFE)
{
damage += damage_lvl_a_f[attacker] * 10
}
}
SetHamParamFloat(4, damage);
}
public take_damage(victim, inflictor, attacker, Float:damage, damage_type)
{
if(cs_get_user_team(victim) == CS_TEAM_CT)
{
set_task(1.0, "regen_hp_a_f", victim+TASK_REGEN)
}
if(cs_get_user_team(victim) == CS_TEAM_T)
{
if(get_user_weapon(victim) == CSW_KNIFE)
{
remove_task(victim+TASK_REGEN)
set_task(1.0, "regen_hp_f", victim+TASK_REGEN)
}
}
}
public Win_Furien()
{
new players[32], num, player;
get_players(players, num, "", "TERRORIST")
for(new i = 0; i < num; i++)
{
player = players
if(!is_user_alive(player))
{
return PLUGIN_HANDLED
}
XP[player] += 10
msg_screen_fade(player, EFFECT_LENGTH, 175, 0, 0, 115);
mesaj_color(player, ".v[Furien].g Ai castigat bonus.e 10 XP.g pentru castigarea rundei.")
}
return PLUGIN_CONTINUE
}
public Win_Anti_Furien()
{
new players[32], num, player;
get_players(players, num, "", "CT")
for(new i = 0; i < num; i++)
{
player = players
if(!is_user_alive(player))
{
return PLUGIN_HANDLED
}
XP[player] += 10
msg_screen_fade(player, EFFECT_LENGTH, 175, 0, 0, 115);
mesaj_color(player, ".v[Furien].g Ai castigat bonus.e 10 XP.g pentru castigarea rundei.")
}
return PLUGIN_CONTINUE
}
public regen_hp_a_f(taskid)
{
if(is_user_connected(ID_REGEN) && is_user_alive(ID_REGEN))
{
if(maximhp[ID_REGEN] != -1)
{
new curenthp;
curenthp = get_user_health(ID_REGEN)
if(curenthp < maximhp[ID_REGEN])
{
if(curenthp > maximhp[ID_REGEN])
{
set_user_health(ID_REGEN, maximhp[ID_REGEN])
}
set_user_health(ID_REGEN, get_user_health(ID_REGEN) + regenerare_lvl_a_f[ID_REGEN] * 5)
set_task(5.0, "regen_hp_a_f", ID_REGEN+TASK_REGEN)
}
}
}
}
public regen_hp_f(taskid)
{
if(is_user_connected(ID_REGEN) && is_user_alive(ID_REGEN))
{
if(maximhp[ID_REGEN] != -1)
{
new curenthp = get_user_health(ID_REGEN)
if(curenthp < maximhp[ID_REGEN])
{
if(curenthp > maximhp[ID_REGEN])
{
set_user_health(ID_REGEN, maximhp[ID_REGEN])
}
set_user_health(ID_REGEN, get_user_health(ID_REGEN) + regenerare_lvl_f[ID_REGEN] * 5)
set_task(5.0, "regen_hp_f", ID_REGEN+TASK_REGEN)
}
}
}
}
public show_game(id)
{
if(is_user_alive(id))
{
show_menu_game(id)
return PLUGIN_HANDLED
}
return PLUGIN_CONTINUE
}
show_menu_game(id)
{
static menu[250], len
len = 0
len += formatex(menu[len], charsmax(menu) - len, "\yFurien\r [XP:%d]^n^n", XP[id])
len += formatex(menu[len], charsmax(menu) - len, "\y1.\w Furien XP Buying^n")
len += formatex(menu[len], charsmax(menu) - len, "\y2.\w Anti-Furien XP Buying^n")
show_menu(id, KEYSMENU, menu, -1, "Game Menu")
}
public menu_game(id, key)
{
switch (key)
{
case 0:
{
furiens_ability(id)
}
case 1:
{
anti_furiens_ability(id)
}
}
}
furiens_ability(id)
{
if(is_user_alive(id))
{
new xp_need_hp, xp_need_ap, xp_need_speed, xp_need_gravity, xp_need_damage, xp_need_regen;
xp_need_hp = hp_level_f[id] * 99
xp_need_ap = ap_level_f[id] * 99
xp_need_speed = speed_lvl_f[id] * 111
xp_need_gravity = gravity_lvl_f[id] * 100
xp_need_damage = damage_lvl_f[id] * 122
xp_need_regen = regenerare_lvl_f[id] * 144
static menu[250], len
len = 0
len += formatex(menu[len], charsmax(menu) - len, "\yAbilitati Furien\r [XP:%d]^n^n", XP[id])
if(hp_level_f[id] < 7)
{
len += formatex(menu[len], charsmax(menu) - len, "\y1.\w HP + 25\r [LV.%d/XP UP:%d]^n", hp_level_f[id], xp_need_hp)
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d1.\d HP + 25\d [LV.%d MAX]^n", hp_level_f[id])
}
if(ap_level_f[id] < 7)
{
len += formatex(menu[len], charsmax(menu) - len, "\y2.\w AP + 25\r [LV.%d/XP UP:%d]^n", ap_level_f[id], xp_need_ap)
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d2. AP + 25 [LV.%d MAX]^n", ap_level_f[id])
}
if(speed_lvl_f[id] < 7)
{
len += formatex(menu[len], charsmax(menu) - len, "\y3.\w SPEED +25\r [LV.%d/XP UP:%d]^n", speed_lvl_f[id], xp_need_speed)
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d3. SPEED +25 [LV.%d MAX]^n", speed_lvl_f[id])
}
if(gravity_lvl_f[id] < 7)
{
len += formatex(menu[len], charsmax(menu) - len, "\y4.\w GRAVITY -25\r [LV.%d/XP UP:%d]^n", gravity_lvl_f[id], xp_need_gravity)
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d4. GRAVITY -25 [LV.%d MAX]^n", gravity_lvl_f[id])
}
if(damage_lvl_f[id] < 7)
{
len += formatex(menu[len], charsmax(menu) - len, "\y5.\w DAMAGE +10\r [LV.%d/XP UP:%d]^n", damage_lvl_f[id], xp_need_damage)
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d5. DAMAGE +10 [LV.%d MAX]^n", damage_lvl_f[id])
}
if(regenerare_lvl_f[id] < 7)
{
len += formatex(menu[len], charsmax(menu) - len, "\y6.\w REGEN +5 HP\r [LV.%d/XP UP:%d]", regenerare_lvl_f[id], xp_need_regen)
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d6. REGEN +5 HP [LV.%d MAX]", regenerare_lvl_f[id])
}
show_menu(id, FR_KEYSMENU, menu, -1, "Furien Menu")
return PLUGIN_HANDLED;
}
return PLUGIN_HANDLED;
}
public menu_furien(id, key)
{
new xp_need_hp, xp_need_ap, xp_need_speed, xp_need_gravity, xp_need_damage, xp_need_regen;
xp_need_hp = hp_level_f[id] * 99
xp_need_ap = ap_level_f[id] * 99
xp_need_speed = speed_lvl_f[id] * 111
xp_need_gravity = gravity_lvl_f[id] * 100
xp_need_damage = damage_lvl_f[id] * 122
xp_need_regen = regenerare_lvl_f[id] * 144
switch(key)
{
case 0:
{
if(hp_level_f[id] < 7)
{
if(XP[id] >= xp_need_hp)
{
XP[id] -= xp_need_hp
hp_level_f[id] += 1
mesaj_color(id, ".v[Furien].g Ai avansat la nivelul.e %d.g la HP pentru.e Furieni.g.", hp_level_f[id])
salvaredate(id)
}
else
{
mesaj_color(id, ".v[Furien].g Nu ai destul XP. XP necesar.e %d.g.", xp_need_hp - XP[id])
}
}
if(hp_level_f[id] >= 7)
{
hp_level_f[id] = 7
mesaj_color(id, ".v[Furien].g Ai nivelul maxim la.e HP.g.")
}
}
case 1:
{
if(ap_level_f[id] < 7)
{
if(XP[id] >= xp_need_ap)
{
XP[id] -= xp_need_ap
ap_level_f[id] += 1
mesaj_color(id, ".v[Furien].g Ai avansat la nivelul.e %d.g la AP pentru.e Furieni.g.", ap_level_f[id])
salvaredate(id)
}
else
{
mesaj_color(id, ".v[Furien].g Nu ai destul XP. XP necesar.e %d.g.", xp_need_ap - XP[id])
}
}
if(ap_level_f[id] >= 7)
{
ap_level_f[id] = 7
mesaj_color(id, ".v[Furien].g Ai nivelul maxim.")
}
}
case 2:
{
if(speed_lvl_f[id] < 7)
{
if(XP[id] >= xp_need_speed)
{
XP[id] -= xp_need_speed
speed_lvl_f[id] += 1
mesaj_color(id, ".v[Furien].g Ai avansat la nivelul.e %d.g la SPEED pentru.e Furieni.g.", speed_lvl_f[id])
salvaredate(id)
}
else
{
mesaj_color(id, ".v[Furien].g Nu ai destul XP. XP necesar.e %d.g.", xp_need_speed - XP[id])
}
}
if(speed_lvl_f[id] >= 7)
{
speed_lvl_f[id] = 7
mesaj_color(id, ".v[Furien].g Ai nivelul maxim.")
}
}
case 3:
{
if(gravity_lvl_f[id] < 7)
{
if(XP[id] >= xp_need_gravity)
{
XP[id] -= xp_need_gravity
gravity_lvl_f[id] += 1
mesaj_color(id, ".v[Furien].g Ai avansat la nivelul.e %d.g la GRAVITY pentru.e Furieni.g.", gravity_lvl_f[id])
salvaredate(id)
}
else
{
mesaj_color(id, ".v[Furien].g Nu ai destul XP. XP necesar.e %d.g.", xp_need_gravity - XP[id])
}
}
if(gravity_lvl_f[id] >= 7)
{
gravity_lvl_f[id] = 7
mesaj_color(id, ".v[Furien].g Ai nivelul maxim.")
}
}
case 4:
{
if(damage_lvl_f[id] < 7)
{
if(XP[id] >= xp_need_damage)
{
XP[id] -= xp_need_damage
damage_lvl_f[id] += 1
mesaj_color(id, ".v[Furien].g Ai avansat la nivelul.e %d.g la DAMAGE pentru.e Furieni.g.", damage_lvl_f[id])
salvaredate(id)
}
else
{
mesaj_color(id, ".v[Furien].g Nu ai destul XP. XP necesar.e %d.g.", xp_need_damage - XP[id])
}
}
if(damage_lvl_f[id] >= 7)
{
damage_lvl_f[id] = 7
mesaj_color(id, ".v[Furien].g Ai nivelul maxim.")
}
}
case 5:
{
if(regenerare_lvl_f[id] < 7)
{
if(XP[id] >= xp_need_regen)
{
XP[id] -= xp_need_regen
regenerare_lvl_f[id] += 1
mesaj_color(id, ".v[Furien].g Ai avansat la nivelul.e %d.g la REGEN pentru.e Furieni.g.", regenerare_lvl_f[id])
salvaredate(id)
}
else
{
mesaj_color(id, ".v[Furien].g Nu ai destul XP. XP necesar.e %d.g.", xp_need_regen - XP[id])
}
}
if(regenerare_lvl_f[id] >= 7)
{
regenerare_lvl_f[id] = 7
mesaj_color(id, ".v[Furien].g Ai nivelul maxim.")
}
}
}
return PLUGIN_HANDLED
}
anti_furiens_ability(id)
{
if(is_user_alive(id))
{
new xp_need_hp, xp_need_ap, xp_need_speed, xp_need_gravity, xp_need_damage, xp_need_regen;
xp_need_hp = hp_level_a_f[id] * 99
xp_need_ap = ap_level_a_f[id] * 99
xp_need_speed = speed_lvl_a_f[id] * 111
xp_need_gravity = gravity_lvl_a_f[id] * 100
xp_need_damage = damage_lvl_a_f[id] * 122
xp_need_regen = regenerare_lvl_a_f[id] * 144
static menu[250], len
len = 0
len += formatex(menu[len], charsmax(menu) - len, "\yAbilitati AntiFurien\r [XP:%d]^n^n", XP[id])
if(hp_level_a_f[id] < 7)
{
len += formatex(menu[len], charsmax(menu) - len, "\y1.\w HP + 25\r [LV.%d/XP UP:%d]^n", hp_level_a_f[id], xp_need_hp)
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d1. HP + 25 [LV.%d MAX]^n", hp_level_a_f[id])
}
if(ap_level_a_f[id] < 7)
{
len += formatex(menu[len], charsmax(menu) - len, "\y2.\w AP + 25\r [LV.%d/XP UP:%d]^n", ap_level_a_f[id], xp_need_ap)
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d2. AP + 25 [LV.%d MAX]^n", ap_level_a_f[id])
}
if(speed_lvl_a_f[id] < 7)
{
len += formatex(menu[len], charsmax(menu) - len, "\y3.\w SPEED +25\r [LV.%d/XP UP:%d]^n", speed_lvl_a_f[id], xp_need_speed)
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d3. SPEED +25 [LV.%d MAX]^n", speed_lvl_a_f[id])
}
if(gravity_lvl_a_f[id] < 7)
{
len += formatex(menu[len], charsmax(menu) - len, "\y4.\w GRAVITY -25\r [LV.%d/XP UP:%d]^n", gravity_lvl_a_f[id], xp_need_gravity)
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d4. GRAVITY -25 [LV.%d MAX]^n", gravity_lvl_a_f[id])
}
if(damage_lvl_a_f[id] < 7)
{
len += formatex(menu[len], charsmax(menu) - len, "\y5.\w DAMAGE +10\r [LV.%d/XP UP:%d]^n", damage_lvl_a_f[id], xp_need_damage)
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d5. DAMAGE +10 [LV.%d MAX]^n", damage_lvl_a_f[id])
}
if(regenerare_lvl_a_f[id] < 7)
{
len += formatex(menu[len], charsmax(menu) - len, "\y6.\w REGEN +5 HP\r [LV.%d/XP UP:%d]", regenerare_lvl_a_f[id], xp_need_regen)
}
else
{
len += formatex(menu[len], charsmax(menu) - len, "\d6. REGEN +5 HP [LV.%d MAX]", regenerare_lvl_a_f[id])
}
show_menu(id, A_FR_KEYSMENU, menu, -1, "AntiF Menu")
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public menu_afurien(id, key)
{
new xp_need_hp, xp_need_ap, xp_need_speed, xp_need_gravity, xp_need_damage, xp_need_regen;
xp_need_hp = hp_level_a_f[id] * 99
xp_need_ap = ap_level_a_f[id] * 99
xp_need_speed = speed_lvl_a_f[id] * 111
xp_need_gravity = gravity_lvl_a_f[id] * 100
xp_need_damage = damage_lvl_a_f[id] * 122
xp_need_regen = regenerare_lvl_a_f[id] * 144
switch (key)
{
case 0:
{
if(hp_level_a_f[id] < 7)
{
if(XP[id] >= xp_need_hp)
{
XP[id] -= xp_need_hp
hp_level_a_f[id] += 1
mesaj_color(id, ".v[Furien].g Ai avansat la nivelul.e %d.g la HP pentru.e Anti-Furieni.g.", hp_level_a_f[id])
salvaredate(id)
}
else
{
mesaj_color(id, ".v[Furien].g Nu ai destul XP. XP necesar.e %d.g.", xp_need_hp - XP[id])
}
}
if(hp_level_a_f[id] >= 7)
{
hp_level_a_f[id] = 7
mesaj_color(id, ".v[Furien].g Ai nivelul maxim la.e HP.g.")
}
}
case 1:
{
if(ap_level_a_f[id] < 7)
{
if(XP[id] >= xp_need_ap)
{
XP[id] -= xp_need_ap
ap_level_a_f[id] += 1
mesaj_color(id, ".v[Furien].g Ai avansat la nivelul.e %d.g la AP pentru.e Anti-Furieni.g.", ap_level_a_f[id])
salvaredate(id)
}
else
{
mesaj_color(id, ".v[Furien].g Nu ai destul XP. XP necesar.e %d.g.", xp_need_ap - XP[id])
}
}
if(ap_level_a_f[id] >= 7)
{
ap_level_a_f[id] = 7
mesaj_color(id, ".v[Furien].g Ai nivelul maxim.")
}
}
case 2:
{
if(speed_lvl_a_f[id] < 7)
{
if(XP[id] >= xp_need_speed)
{
XP[id] -= xp_need_speed
speed_lvl_a_f[id] += 1
mesaj_color(id, ".v[Furien].g Ai avansat la nivelul.e %d.g la SPEED pentru.e Anti-Furieni.g.", speed_lvl_a_f[id])
salvaredate(id)
}
else
{
mesaj_color(id, ".v[Furien].g Nu ai destul XP. XP necesar.e %d.g.", xp_need_speed - XP[id])
}
}
if(speed_lvl_a_f[id] >= 7)
{
speed_lvl_a_f[id] = 7
mesaj_color(id, ".v[Furien].g Ai nivelul maxim.")
}
}
case 3:
{
if(gravity_lvl_a_f[id] < 7)
{
if(XP[id] >= xp_need_gravity)
{
XP[id] -= xp_need_gravity
gravity_lvl_a_f[id] += 1
mesaj_color(id, ".v[Furien].g Ai avansat la nivelul.e %d.g la GRAVITY pentru.e Anti-Furieni.g.", gravity_lvl_a_f[id])
salvaredate(id)
}
else
{
mesaj_color(id, ".v[Furien].g Nu ai destul XP. XP necesar.e %d.g.", xp_need_gravity - XP[id])
}
}
if(gravity_lvl_a_f[id] >= 7)
{
gravity_lvl_a_f[id] = 7
mesaj_color(id, ".v[Furien].g Ai nivelul maxim.")
}
}
case 4:
{
if(damage_lvl_a_f[id] < 7)
{
if(XP[id] >= xp_need_damage)
{
XP[id] -= xp_need_damage
damage_lvl_a_f[id] += 1
mesaj_color(id, ".v[Furien].g Ai avansat la nivelul.e %d.g la DAMAGE pentru.e Anti-Furieni.g.", damage_lvl_a_f[id])
salvaredate(id)
}
else
{
mesaj_color(id, ".v[Furien].g Nu ai destul XP. XP necesar.e %d.g.", xp_need_damage - XP[id])
}
}
if(damage_lvl_a_f[id] >= 7)
{
damage_lvl_a_f[id] = 7
mesaj_color(id, ".v[Furien].g Ai nivelul maxim.")
}
}
case 5:
{
if(regenerare_lvl_a_f[id] < 7)
{
if(XP[id] >= xp_need_regen)
{
XP[id] -= xp_need_regen
regenerare_lvl_a_f[id] += 1
mesaj_color(id, ".v[Furien].g Ai avansat la nivelul.e %d.g la REGEN pentru.e Anti-Furieni.g.", regenerare_lvl_a_f[id])
salvaredate(id)
}
else
{
mesaj_color(id, ".v[Furien].g Nu ai destul XP. XP necesar.e %d.g.", xp_need_regen - XP[id])
}
}
if(regenerare_lvl_a_f[id] >= 7)
{
regenerare_lvl_a_f[id] = 7
mesaj_color(id, ".v[Furien].g Ai nivelul maxim.")
}
}
}
return PLUGIN_HANDLED;
}
stock mesaj_color(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, ".v", "^4")
replace_all(msg, 190, ".g", "^1")
replace_all(msg, 190, ".e", "^3")
if (id) players[0] = id; else get_players(players, count, "ch")
{
for (new i = 0; i < count; i++)
{
if (is_user_connected(players))
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players)
write_byte(players);
write_string(msg);
message_end();
}
}
}
}
stock msg_screen_fade(id, holdtime, r, g, b, a)
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("ScreenFade"), { 0, 0, 0 }, id)
write_short(seconds_to_units(holdtime))
write_short(seconds_to_units(holdtime))
write_short(0)
write_byte(r)
write_byte(g)
write_byte(b)
write_byte(a)
message_end()
}
stock seconds_to_units(time)
{
return ((1 << 12) * (time))
}