Хотел переделать плагин передачи аммо, но только с гравити, но не получается никак, вернее почти получилось, но не меняется в меню гравитация, подскажите что да как сделать?
- Код: Выделить всё
#include <amxmodx>
#include <cstrike>
#include <fun>
new Float:d_grav[33]
new v_name[33][33]
new v_id[33]
#define PLUGIN "Gravity Menu"
#define VERSION "1.0"
#define AUTHOR "NoName"
public client_connect(id)
{
d_grav[id]=1.0
v_id[id]=id
v_name[id][32]=get_user_name(id,v_name[id],charsmax(v_name[]))
}
public plugin_init()
{
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("amx_gravity","gravity_handled")
}
public gravity_handled(id)
{
static menu[500]
formatex(menu, 499, "\rМеню гравитации:")
new i_Menu = menu_create(menu, "gravity_sub")
formatex(menu, charsmax(menu), "Какую гравитацию:\y%f",d_grav[id])
menu_additem(i_Menu, menu, "1")
formatex(menu, charsmax(menu), "Получатель: \y%s^n",v_name[id])
menu_additem(i_Menu, menu, "2")
formatex(menu, charsmax(menu), "Установить")
menu_additem(i_Menu, menu, "3")
menu_setprop(i_Menu, MPROP_NEXTNAME, "Вперёд")
menu_setprop(i_Menu, MPROP_BACKNAME, "Назад")
menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
menu_display(id, i_Menu, 0)
return PLUGIN_HANDLED
}
public gravity_sub(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Key = str_to_num(s_Data)
switch(i_Key)
{
case 1:
{
if(d_grav[id]<0.2)d_grav[id]=0.2; else
if(d_grav[id]>=0.2&&d_grav[id]<0.5)d_grav[id]=0.5; else
if(d_grav[id]>=0.5&&d_grav[id]<0.7)d_grav[id]=0.7;else d_grav[id]=1.0
gravity_handled(id)
}
case 2:player_select(id)
case 3:give_money(id)
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public player_select(id)
{
new i_Menu = menu_create("\rВыберите получателя: ", "player_select_sub")
new s_Players[32], i_Num, i_Player
new s_Name[32], s_Player[10]
get_players(s_Players, i_Num)
for (new i; i < i_Num; i++)
{
i_Player = s_Players[i]
get_user_name(i_Player, s_Name, charsmax(s_Name))
num_to_str(i_Player, s_Player, charsmax(s_Player))
menu_additem(i_Menu, s_Name, s_Player, 0)
}
menu_setprop(i_Menu, MPROP_NEXTNAME, "Вперёд")
menu_setprop(i_Menu, MPROP_BACKNAME, "Назад")
menu_setprop(i_Menu, MPROP_EXITNAME, "Выход")
menu_display(id, i_Menu, 0)
return PLUGIN_HANDLED
}
public player_select_sub(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new s_Data[6], s_Name[64], i_Access, i_Callback
menu_item_getinfo(menu, item, i_Access, s_Data, charsmax(s_Data), s_Name, charsmax(s_Name), i_Callback)
new i_Player = str_to_num(s_Data)
get_user_name(i_Player, v_name[id], charsmax( v_name[]))
v_id[id]=i_Player
menu_destroy(menu)
gravity_handled(id)
return PLUGIN_HANDLED
}
public give_money(id)
{
new debug_v_name[33][33];get_user_name(v_id[id], debug_v_name[id],charsmax( debug_v_name))
set_user_gravity(v_id[id],d_grav[id])
client_printcolor(v_id[id],"!yВам установлено !t %f !yгравитации!", d_grav[id])
gravity_handled(id)
}
public client_disconnect(id)
{
for (new i; i < 33; i++)if(v_id[i]==id)v_id[i]=i,v_name[i][32]=get_user_name(i,v_name[i],charsmax(v_name[]))
}
stock client_printcolor(const id, const input[], any:...)
{
new count = 1, players[32]
static msg[191]
vformat(msg, 190, input, 3)
replace_all(msg, 190, "!g", "^4") // Green Color
replace_all(msg, 190, "!y", "^1") // Default Color
replace_all(msg, 190, "!t", "^3") // Team Color
if (id) players[0] = id; else get_players(players, count, "ch")
{
for ( new i = 0; i < count; i++ )
{
if ( is_user_connected(players[i]) )
{
message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, players[i])
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}