Как создать плагин

Архів · 2012 vovchik2x2 Статті 6 063

Архівний матеріал ya-cs.ru (2012). Російською. Плагіни й збірки можуть не працювати з ReHLDS та AMXX 1.10.

Скачать Как создать плагин

Описание: Статья по созданию плагина

Напишем несложный плагин, меню администратора на самом начальном этапе.

Шаг 1. Подключим нужные модули, зарегистрируем плагин и команду:
#include
#include
#include
Подгрузили все необходимые нам модули.

#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
#include
#include

#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;
}

Мітки:

Коментарі 19

  1. vovchik2x2

    Генеально ватсон,а мы не знали:D

    эта статья для новичков. Могу написать еще примеры

    Відповісти

  2. ahatomik

    vovchik2x2, Молодец , статья хорошая !
    Учитовая то , что многие только начинают заниматься своими серверами.

    Відповісти

  3. vovchik2x2

    Братишь. А ты пробывал его компильнуть? Глянь что получится -__-

    #include <amxmodx>
    #include <hamsandwich>
    #include <fun>
    Извини опечатку в статье сделал

    Відповісти

  4. xa-xa

    Время надо ебло,я учусь и пишу плагин не в 20 строк еблотик как закончу,будешь первый информирован…

    Відповісти

  5. xa-xa

    Как я тебе сказал,напишу образцовый вип меню,правда для пуб но пишу для себя,продемонстрирую вам школоло а то выёбываются 20 строками …

    Відповісти

Ваш коментар

Коментар з’явиться після перевірки. E-mail не публікується.