Описание: Статья по созданию плагина
Напишем несложный плагин, меню администратора на самом начальном этапе.
Шаг 1. Подключим нужные модули, зарегистрируем плагин и команду:
#include <amxmodx>
#include <hamsandwich>
#include <fun>
Подгрузили все необходимые нам модули.
#define PLUGIN "ADM WEAPON-MENU"
#define VERSION "1.0"
#define AUTHOR "xz"
где, PLUGIN - название вашего плагина, VERSION - версия, AUTHOR - автор.
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /wmenu", "wmenu", ADMIN_VOTE, "Admin WeaponMenu")
}
где, plugin_init - обязательная функция, без нее amx просто не сможет запустить Ваш плагин.
register_plugin - регистрируем плагин.
register_clcmd - регистрируем команду (написав в чат /wmenu у нас и будет появляться то самое меню.), разберем, функция состоит из 4-х значений, say /wmenu - команда, которая запустит ее, wmenu - функция, которая выполнится после запуска (ее напишем чуть позже), ADMIN_VOTE - кто имеет права на запуск, в нашем случае игрок с флагом на голосование сможет ее запускать, Admin WeaponMenu - произвольный комментарий.
Шаг 2. Пишем функцию wmenu, создаем меню:
public wmenu(id) {
new menu = menu_create("Выбор оружия", "menu_o")
menu_additem(menu, "Deagle","1")
menu_additem(menu, "USP","2")
menu_additem(menu, "AWP","3")
menu_additem(menu, "M4A1","4")
menu_additem(menu, "AKa-47","5")
menu_additem(menu, "Famas","6")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_setprop(menu, MPROP_EXIT,MEXIT_ALL)
menu_display(id,menu,0)
//return PLUGIN_HANDLED
}
где, new menu = menu_create - создали новое меню, Выбор оружия - заголовок нашего меню, menu_o - название функции которая обработает выбор админа.
menu_additem - добавляем пункт в меню, Deagle - название пункта, 1 - уникальный номер нашего пункта.
//return PLUGIN_HANDLED - указывает что функция выполнена, если не укажем, то в консоле нам выдаст unknown command.
Шаг 3. Пишем функцию menu_o(обработчик):
public menu_o(id, menu, item)
{
switch(item)
{
case 0:
{
if(is_user_alive(id))
give_item(id, "weapon_deagle")
}
case 1:
{
if(is_user_alive(id))
give_item(id, "weapon_usp")
}
case 2:
{
if(is_user_alive(id))
give_item(id, "weapon_awp")
}
case 3:
{
if(is_user_alive(id))
give_item(id, "weapon_m4a1")
}
case 4:
{
if(is_user_alive(id))
give_item(id, "weapon_ak47")
}
case 5:
{
if(is_user_alive(id))
give_item(id, "weapon_famas")
}
}
return PLUGIN_HANDLED;
}
где, id - у каждого игрока есть свой уникальный номер, от 1 до 32-х.
if(is_user_alive(id))
give_item(id, "weapon_usp"), если перевести на русский, то получается что-то типо такого, если игрок под id живой, то дать ему usp.
Шаг 4. Итог:
#include <amxmodx>
#include <hamsandwich>
#include <fun>
#define PLUGIN "ADM WEAPON-MENU"
#define VERSION "1.0"
#define AUTHOR "xz"
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
register_clcmd("say /wmenu", "wmenu", ADMIN_VOTE, "Admin WeaponMenu")
}
public wmenu(id) {
new menu = menu_create("Выбор оружия", "menu_o")
menu_additem(menu, "Deagle","1")
menu_additem(menu, "USP","2")
menu_additem(menu, "AWP","3")
menu_additem(menu, "M4A1","4")
menu_additem(menu, "AKa-47","5")
menu_additem(menu, "Famas","6")
menu_setprop(menu, MPROP_EXITNAME, "Выход")
menu_setprop(menu, MPROP_EXIT,MEXIT_ALL)
menu_display(id,menu,0)
//return PLUGIN_HANDLED
}
public menu_o(id, menu, item)
{
switch(item)
{
case 0:
{
if(is_user_alive(id))
give_item(id, "weapon_deagle")
}
case 1:
{
if(is_user_alive(id))
give_item(id, "weapon_usp")
}
case 2:
{
if(is_user_alive(id))
give_item(id, "weapon_awp")
}
case 3:
{
if(is_user_alive(id))
give_item(id, "weapon_m4a1")
}
case 4:
{
if(is_user_alive(id))
give_item(id, "weapon_ak47")
}
case 5:
{
if(is_user_alive(id))
give_item(id, "weapon_famas")
}
}
return PLUGIN_HANDLED;
}