Что нужно:
1. Руки
2. Знание хоть чуть-чуть скриптинга!
Создаем файл с именем weapon_menu.sma(буду описывать предметы из extra item's CSO WEAPON).
Quote
#include
#include
#include
#include
#include
#include
new SayText;
public plugin_init()
{
register_plugin("New Weapon Menu", "1.0", "Ath[U]Lon")
RegisterHam(Ham_Spawn, "player", "Spawn_post", 1)
register_clcmd("wpn_menu","clcmd_menu")
register_clcmd("wpn_menu2","clcmd_menu2")
SayText = get_user_msgid("SayText")
}
public Spawn_post(id)
{
if(is_user_alive(id) && is_user_connected(id) && !zp_get_user_zombie(id))
{
my_wpn(id)
}
}
public clcmd_menu(id)
{
if(is_user_alive(id) && !zp_get_user_zombie(id) && !zp_get_user_survivor(id))
{
my_wpn(id)
}
else
{
print_col_chat( id, "^4Menus are accessible only to ^3Humans")
}
}
public clcmd_menu2(id)
{
if(is_user_alive(id) && !zp_get_user_zombie(id) && !zp_get_user_survivor(id))
{
my_wpn_menu(id)
}
else
{
print_col_chat( id, "^4Menus are accessible only to ^3Humans")
}
}
public my_wpn(id)
{
new menu = menu_create("\rОсновное меню ", "new_wpn")
menu_additem(menu, "\w\rАвтомат\y[M4A1]", "1", 0);
menu_additem(menu, "\w\rАвтомат\y[AK-47]", "2", 0);
menu_additem(menu, "\w\rАвтомат\y[Galil]", "3", 0);
menu_additem(menu, "\w\rДробовик\y[Xm1014]", "4", 0);
menu_additem(menu, "\w\rПулемет\y[M249]", "5", 0);
menu_additem(menu, "\w\r[Винтовка]\w[M24](20 ammo)", "6", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public new_wpn(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[15], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,15, iName, 64, callback)
new key = str_to_num(data)
switch(key)
{
case 1:
{
give_item(id, "weapon_m4a1")
cs_set_user_bpammo (id, CSW_M4A1, 100)
client_cmd(id, "wpn_menu2");
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 2:
{
give_item(id, "weapon_ak47")
cs_set_user_bpammo (id, CSW_AK47, 100)
client_cmd(id, "wpn_menu2");
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 3:
{
give_item(id, "weapon_galil")
cs_set_user_bpammo (id, CSW_GALIL, 120)
client_cmd(id, "wpn_menu2");
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 4:
{
give_item(id, "weapon_xm1014")
cs_set_user_bpammo (id, CSW_XM1014, 35)
client_cmd(id, "wpn_menu2");
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 5:
{
give_item(id, "weapon_m249")
cs_set_user_bpammo (id, CSW_M3, 40)
client_cmd(id, "wpn_menu2");
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 6:
{
zp_force_buy_extra_item(id, zp_get_extra_item_id("\r[Винтовка]\w[M24]"), 0);
client_cmd(id, "wpn_menu2");
menu_destroy(menu)
return PLUGIN_HANDLED
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public my_wpn_menu(id)
{
new menu = menu_create("\yВторичное меню выбора оружия", "new_wpn_menu")
menu_additem(menu, "\w\r[Пистолет]\y[Usp]", "1", 0);
menu_additem(menu, "\w\r[Пистолет]\y[Deagle]", "2", 0);
menu_additem(menu, "\w\r[Пистолет]\y[Dual Elite]", "3", 0);
menu_additem(menu, "\w\r[Пистолет]\y[mushket](10 ammo)", "4", 0);
menu_setprop(menu, MPROP_EXIT, MEXIT_ALL)
menu_display(id, menu, 0)
return PLUGIN_HANDLED
}
public new_wpn_menu(id, menu, item)
{
if (item == MENU_EXIT)
{
menu_destroy(menu)
return PLUGIN_HANDLED
}
new data[15], iName[64]
new access, callback
menu_item_getinfo(menu, item, access, data,15, iName, 64, callback)
new key = str_to_num(data)
switch(key)
{
case 1:
{
give_item(id, "weapon_usp")
cs_set_user_bpammo (id, CSW_USP, 60)
client_cmd(id, "/knife");
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_flashbang")
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 2:
{
give_item(id, "weapon_deagle")
cs_set_user_bpammo (id, CSW_DEAGLE, 40)
client_cmd(id, "/knife");
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_flashbang")
menu_destroy(menu)
return PLUGIN_HANDLED
}
case 3:
{
give_item(id, "weapon_elite")
cs_set_user_bpammo (id, CSW_ELITE, 80)
client_cmd(id, "/knife");
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_flashbang")
client_cmd(id, "knife");
return PLUGIN_HANDLED
}
case 4:
{
zp_force_buy_extra_item(id, zp_get_extra_item_id("[Мушкет]\r[new]"), 0);
client_cmd(id, "/knife");
give_item(id, "weapon_hegrenade")
give_item(id, "weapon_flashbang")
menu_destroy(menu)
return PLUGIN_HANDLED
}
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
stock print_col_chat(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, SayText, _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
}
public zp_user_infected_post(id, infector)
{
menu_cancel(id)
}
Расшифровка:
Тут мы регистрируем какое оружие будет добавлено!
Ищем:
Quote
menu_additem(menu, "\w\r[Винтовка]\w[M24](20 ammo)", "6", 0);
Тут мы пишем команду которая будет выдавать оружие
Quote
case 6:
{
zp_force_buy_extra_item(id, zp_get_extra_item_id("\r[Винтовка]\w[M24]"), 0);
client_cmd(id, "wpn_menu2");
menu_destroy(menu)
return PLUGIN_HANDLED
}
Тоже самое идет с второстепенным оружием.
Quote
Если не понятно, то пишем на
форуме