Code:
new arg1[32]
new arg2[10]
new Float:g_fGravity[33];
new Float:g_fGravity2[33];
public plugin_init() {
register_plugin("Personal Gravity", "1.1", "SatanWoJ")
register_concmd("amx_pgrav", "gravity", ADMIN_KICK, "<nick> <gravity>")
register_clcmd("say /buygrav", "bgrav", 0)
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_0
register_menucmd(register_menuid("Gravity Menu"), keys, "GravMenu")
register_logevent("hook_roundstart", 2, "0=World triggered", "1=Round_Start");
register_event("ResetHUD", "player_spawn", "b");
register_event("DeathMsg", "hook_death", "d")
}
public client_connect(id) {
g_fGravity2[id] = 1.0
}
public gravity(id, level, cid) {
if(!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED
read_argv(1, arg1, 31)
read_argv(2, arg2, 9)
new target = cmd_target(id, arg1, 15)
new Float:amount = str_to_float(arg2)/800
set_user_gravity(target, amount)
g_fGravity[id] = amount
return PLUGIN_CONTINUE
}
public bgrav(id) {
if(!is_user_alive(id))
return PLUGIN_HANDLED
new menu[192]
new keys = MENU_KEY_1|MENU_KEY_2|MENU_KEY_3|MENU_KEY_4|MENU_KEY_5|MENU_KEY_0
format(menu, 191, "Gravity Menu^n^n1. 100 - $5000^n2. 200 - $3500^n3. 400 - $2000^n4. 550 - $1500^n5. 800 - $0^n^n0. BACK.")
show_menu(id, keys, menu)
return PLUGIN_HANDLED
}
public GravMenu(id, key)
{
switch(key)
{
case 0:
{
new money = cs_get_user_money(id)
new Float:grav = get_user_gravity(id)
if(money < 5000)
{
client_print(id, print_chat, "You have insufficient funds!")
return PLUGIN_HANDLED
}
else if(grav == 0.125)
{
client_print(id, print_chat, "You already are at that gravity!")
return PLUGIN_HANDLED
}
else
{
cs_set_user_money(id, money-5000)
set_user_gravity(id, 0.125)
g_fGravity2[id] = 0.125
return PLUGIN_HANDLED
}
}
case 1:
{
new money = cs_get_user_money(id)
new Float:grav = get_user_gravity(id)
if(money < 3500)
{
client_print(id, print_chat, "You have insufficient funds!")
return PLUGIN_HANDLED
}
else if(grav == 0.25)
{
client_print(id, print_chat, "You already are at that gravity!")
return PLUGIN_HANDLED
} else {
cs_set_user_money(id, money-3500)
set_user_gravity(id, 0.25)
g_fGravity2[id] = 0.25
return PLUGIN_HANDLED
}
}
case 2:
{
new money = cs_get_user_money(id)
new Float:grav = get_user_gravity(id)
if(money < 2000)
{
client_print(id, print_chat, "You have insufficient funds!")
return PLUGIN_HANDLED
}
else if(grav == 0.5)
{
client_print(id, print_chat, "You already are at that gravity!")
return PLUGIN_HANDLED
} else {
cs_set_user_money(id, money-2000)
set_user_gravity(id, 0.5)
g_fGravity2[id] = 0.5
return PLUGIN_HANDLED
}
}
case 3:
{
new money = cs_get_user_money(id)
new Float:grav = get_user_gravity(id)
if(money < 1500)
{
client_print(id, print_chat, "You have insufficient funds!")
return PLUGIN_HANDLED
}
else if(grav == 0.6875)
{
client_print(id, print_chat, "You already are at that gravity!")
return PLUGIN_HANDLED
} else {
cs_set_user_money(id, money-1500)
set_user_gravity(id, 0.6875)
g_fGravity2[id] = 0.6875
return PLUGIN_HANDLED
}
}
case 4:
{
new Float:grav = get_user_gravity(id)
if(grav == 1.0)
{
client_print(id, print_chat, "You already are at that gravity!")
return PLUGIN_HANDLED
} else {
set_user_gravity(id, 1.0)
g_fGravity2[id] = 1.0
return PLUGIN_HANDLED
}
}
case 9:
{
return PLUGIN_HANDLED;
}
}
return PLUGIN_CONTINUE
}
public hook_roundstart(id)
{
if(g_fGravity[id] > 0.0)
{
set_user_gravity(id, g_fGravity[id]);
set_user_gravity(id, g_fGravity2[id]);
}
}
public hook_death(id)
{
new Killer = read_data(1)
new Victim = read_data(2)
g_fGravity[victim] = 1.0
g_fGravity2[victim] = 1.0
return PLUGIN_HANDLED
}
I've tried just about everything, and if a person dies they don't get their gravity back (which is good). But, if a person lives, they don't get their gravity back either (which is bad). >.<