Понедельник, 21.07.2025 05:07

Меню сайта
Основной раздел Система uCoz PhotoShop Изготовление Counter-Strike 1.6 Спрайты CS 1.6 Сервер CS 1.6 Помощь по CS 1.6 Counter Strike Source Сервер CSS
Комментарии
написал:
Rip by mg-rip.ucoz.ru !!!!!
Материал: HLTV Models
написал:
ttt
WooL написал:
Ага angel
GOMMER написал:
крутая кс
Топ Файловиков

1. WooL

152

2. YoDaPk

12

3. wool9595

0

4. ГОМЕР

0

5. GOMMER

0

6. SOKOL

0

7. Горностай

0

8. АдМиН

0

9. KiCk-AsS

0

10. XENIUD

0

Обновленные темы
  • 1111 (0)
  • Новый информер комментарии для ucoz как на Dle (0)
  • Голубая кнопка вверх для Ucoz (0)
  • Статистика кто посетил в красивом стиле для uCoz (0)
  • статистика CW (0)
  • Всплывающий мини-чат в углу сайта + красивый вид (0)
  • Обновленная статистика для Ucoz (0)
  • Сегодня нас посетили XX юзеров (0)
  • Скрипт "сегодня были пользователи" для uCoz (0)
  • Cтатистика для Ucoz (0)
  • Главная » Статьи » Counter-Strike 1.6 » Для сервера

    Делаем плагин для AMXMods
    Итак, извлекаем содержимое архива AMX Studio в папку scripting нашего AMXX-мода и запускаем AMXX-Studio.
    Теперь необходимо настроить рабочую среду для себя как можно удобнее. Неплохим вариантом было бы сделать так, чтобы готовые плагины сразу помещались в папку plugins. Для этого жмём Tools, затем Settings. В появившемся окне видим слева структурное дерево, в котором выбираем ветвь Compiller settings. В поле Compiller указываем путь к файлу amxxpc.exe (наш компилятор), который лежит в папке scripting. В Default Output Directory вписываем путь к папке plugins нашего AMXX мода. Настройка завершена, жмём Ок.

    Теперь мы можем приступить к написанию скриптов - будущих плагинов. Язык, используемый для написания AMX-скриптов, называется Pawn, именно с ним мы и будем работать. Жмём File , New , Plugin. На экране появляется окно для редактирования с текстом

    /* Plugin generated by AMXXX-Studio */

    #include
    #include

    #define PLUGIN "New Plug-In"
    #define VERSION "1.0"
    #define AUTHOR "Admin"


    public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)

    // Add your code here...
    }

    Сразу следует пояснить что всё это значит. Начнём с первой строки - она ограничена символами /* */ - это символические скобки, в которые можно записывать комментарии. Комментарии сохраняются только в скрипте, а при компилировании они просто игнорируются. Следовательно от комментариев только польза.
    Далее мы видим строки

    #include
    #include

    Директивой #include включается определённый модуль для работы с его объявлениями, как в С. Все эти модули хранятся в папке scripting/include. При использовании тех или иных модулей, нужно обязательно учесть, что получившийся в результате плагин будет требовать от пользователя включения этих модулей в файле modules.ini, который лежит в папке configs. Для включения модуля, достаточно раскомментировать соответствующую ему строку.
    Следующие три строчки

    #define PLUGIN "New Plug-In"
    #define VERSION "1.0"
    #define AUTHOR "Admin"

    Сообщают информацию об имени будущего плагина, его версии и авторе в виде констант. Эти константы в дальнейшем могут использоваться, и далее мы это видим

    public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)

    // Add your code here...
    }

    Итак, мы подошли к первой функции нашего скрипта plugin_init(). Вы, возможно, уже заметили, что все модули, написанные на Pawn, не содержат классов. В тонкости языка мы углубляться не будем, но лишь отметим, что данный язык используется для написания высокопроизводительных и быстродействующих модулей с монолитной структурой. Эти модули затем компиллируются в бинарные файлы. Тем самым обеспечиваются все необходимые условия для максимального быстродействия.

    Вернёмся к нашей функции plugin_init(). Эту функцию исполняет сервер при старте, либо переходе на следующую карту. В теле функции обязательно должна присутствовать строка

    register_plugin(PLUGIN, VERSION, AUTHOR)

    которая регистрирует плагин в памяти функцией уже другого модуля register_plugin()

    О чём говорит строка // Add your code here..., я думаю догадаться можно легко :).

    Итак, я пояснил некоторые особенности языка скриптинга амх-мода, теперь можно создать один простой плагин в качестве примера. Этот плагин будет делать игрока бессмертным, в какой-то степени, а именно будет давать 999999 HP к здоровью.

    Начнём. Жмём File, New, Plugin.
    Сразу после закрывшейся фигурной скобки функции plugin_init() создаём новую функцию

    godme(id,level,cid){

    }

    id, level, cid - аргументы функции (параметры), причём эти параметры уже имеет каждый клиент, поэтому их инициализация в теле функции не трабуется (инициализация - присвоение начального значения переменной). Эти аргументы уже имеют свои значения, например человек, подключившийся к серверу получает на нём номер id, обычно соответствующий номеру занемаемого им слота (например id = 4), level - уровень привелегий (например level = ADMIN - уровень привилегий администратора), параметр cid нам не нужен, поэтому оставим его без внимания. Эти параметры понадобятся нам для того, чтобы ограничить доступ к функции бессмертия, предоставив его лишь администраторам сервера.
    Используем эти параметры в следующей конструкции:

    if (!cmd_access(id, level, cid, 2))
    return PLUGIN_HANDLED

    Эта запись читается так: Если игрок не имеет уровень привелегий ADMIN, то прерывание работы плагина и возврат в его начало.
    Возврат в начало организуется строкой

    return PLUGIN_HANDLED

    При этом весь код, расположенный ниже, не выполняется.
    Применим эту конструкцию к нашей функции:

    public godme(id, level, cid)
    {
    if (!cmd_access(id, level, cid, 2))
    return PLUGIN_HANDLED
    }

    после строки
    return PLUGIN_HANDLED
    пишем код, который будет выполняться в случае, если игрок - админ. А именно нам необходимо реализовать присвоение 999999 HP. Это делается следующим образом:

    new health[32]
    new name[32]
    read_argv(1, name, 31)
    read_argv(2,health, 31)
    new player = cmd_target(id, name, 5)
    new hps = str_to_num(health)
    set_user_health (player, hps)
    return PLUGIN_HANDLED

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

    public godme(id, level, cid)
    {
    if (!cmd_access(id, level, cid, 2))
    return PLUGIN_HANDLED

    new health[32]
    new name[32]
    read_argv(1, name, 31)
    read_argv(2,health, 31)
    new player = cmd_target(id, name, 5)
    new hps = str_to_num(health)
    set_user_health (player, hps)
    return PLUGIN_HANDLED
    }

    Теперь нужно пояснить всё написанное.
    Начнём со строки new health[32] - так задаётся строка в С (как массив из символов, где каждый символ - это его числовой код), имеющая длину 32 символа. Стоит отметить, что символы здесь нумеруются от 0 до 31, а не от 1 до 32. Следующая строка задаётся также.

    Далее функцией read_argv(pos,output[],len) производим чтение данных при вводе с консоли, то есть наша функция будет выполняться консольной командой dodme (user) (health), которую мы позже зарегистрируем, а сейчас нужно понять лишь то, что в строке read_argv(1, name, 31) функция read_argv будет читать имя игрока (user) , распологающееся на первой позиции, которому мы хотим дать много здоровья и заносить его в строку name.
    Дале читаем с консоли количество сообщаемого здоровья той же функцией, но уже в строку health и со второй позиции

    read_argv(2,health, 31)

    Далее видим

    new player = cmd_target(id, name, 5)

    player - это переменная, число неопределённого типа, компилятор сам подбирает для него тип, мы лишь задаём значение переменной. А значением для переменной player будет возвращаемое значение функции cmd_target(id, name, 5).
    Эта функция меет очень важное значение для управления командой. Он позволяет по отрезку из имени игрока определить его id. Например, если ник игрока -=~PRO100Otec ~=-, то достаточно будет написать в консоле godme otec 999999 для того, чтобы этому игроку присвоить много здоровья.
    Id игрока, определённый данным методом помещается в переменную player.
    Далее строка new hps = str_to_num(health) - тут задаётся новая переменная hps, которая будет содержать количество здоровья в виде числа (так как при чтении с консоли образуется строка, то её необходимо перевести в число для использования в функции set_user_health(player, health). Перевод строки в число производится функцией str_to_num(str), возвращающим значение строки в виде числа.
    Теперь нам остаётся лишь сделать бессертным нашего избранника функцией

    set_user_health (player, hps)

    В конце добавляем return PLUGIN_HANDLED, чтобы прекратилось выполнение плагина. В нашем случае он и без этой строки будет исправно работать, но во многих случаях следует использовать данную конструкцию.

    Теперь необходимо зарегистрировать консольную команду godme, которой мы будем добавлять здоровье. Для этого в конец тела метода plugin_init() вписываем строку

    register_concmd("godme","godme",ADMIN_SLAY,"godme")

    название команды задаётся в кавычках на первой позиции после открытия скобок (оно не обязательно должно совпадать с именем функции, просто в качестве простого примера я решил сделать именно так), далее идёт имя функции в ковычках, а затем уровень привелегий level, по которому и идёт проверка в теле нашей функции. В нашем случае level = ADMIN_SLAY, тоесть каждый админ, имеющий в своих правах директиву 'e' (имеется ввиду директива прав в файле users.ini например "botinok" "12345" "bcdefghijklmnopqrstuvwxy" "a"), отвещающую за slap и slay команды, может иметь право делать бессмертным любого другого игрока.

    Осталось лишь подключить используемые модули. Помимо стандартных нужно подключить ещё 2 дополнительных модуля: fun и AMXXmisc, так как метод set_user_health() принадлежит модулю fun, а cmd_access() - AMXXmisc. Для этого запишем в самом верху скрипта

    #include
    #include
    #include

    Всё, скрипт готов, если вы всё делали правильно, то он примет следующий вид:

    /* Plugin generated by AMXXX-Studio */

    #include
    #include
    #include

    #define PLUGIN "New Plug-In"
    #define VERSION "1.0"
    #define AUTHOR "Admin"


    public plugin_init() {
    register_plugin(PLUGIN, VERSION, AUTHOR)
    register_concmd("godme","godme",ADMIN_SLAY,"godme")
    }

    public godme(id, level, cid)
    {
    if (!cmd_access(id, level, cid, 2))
    return PLUGIN_HANDLED

    new health[32]
    new name[32]
    read_argv(1, name, 31)
    read_argv(2,health, 31)
    new player = cmd_target(id, name, 5)
    new hps = str_to_num(health)
    set_user_health (player, hps)
    return PLUGIN_HANDLED
    }

    Теперь жмём кнопку Compile, похожую на зелёный треугольник и наш скрипт превращается в откомпиллированный готовый плагин и отправляется в папку plugins.

    Нам остаётся лишь зарегистрировать его в файле plugins.ini, добавив туда строку makeserv_plugin_me.amxx
    Категория: Для сервера | Добавил: WooL (11.09.2010)
    Просмотров: 4253 | Рейтинг: 0.0/0
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Реклама
    Поиск
    Чат
    200
    Изображения
    Добавь свое!
    Партнеры

    Стать партнером Стать партнером
    Стать партнером Стать партнером
    Стать партнером Стать партнером
    Наши баннеры

    Наши баннеры
    Наш опрос
    Ваш выбор?

    Результаты | Архив опросов
    Всего ответов: 37
    Ссылки
    Купить ссылку здесь
    (Цена: 2 руб.)


    Поставить к себе на сайт
    Статистика
    Зарег. на сайте:
    Всего: 50
    Новых за месяц: 0
    Новых за неделю: 0
    Новых вчера: 0
    Новых сегодня: 0
    Из них:
    Администраторов: 2
    Модераторов: 1
    VIP: 0
    Проверенных: 0
    Обычных: 47
    Banned:): 0
    Из них:
    Парней: 42
    Девушек: 7
    Всего материалов:
    Новостей: 22
    Файлов: 167
    Фото: 17
    Форум: 80/81
    Коментариев: 7
    Счетчики:


    CY-PR.com
    Онлайн:
    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Сегод. нас посетили:

    GameWP.3dn.ru© Все права защищены! Версия сайта 10.0 | 2010 | Сделать бесплатный сайт с Конструктор сайтовuCoz.
    Полное или частичное использование материалов GameWP.3dn.ru только с разрешения администрации.
    Сайт оптимизирован под браузер Opera. Sitemap | Sitemap-forum | Tags.
    Дизайн данного сайта полностью принадлежит администратору сайта.
    Вся информация предоставленная на сайте GameWP.3dn.ru является собственностью авторов. Любую информацию размещенную на сайте запрещено копировать без размещения ссылки на источник.
    Дизайн данного сайта принадлежит полностью администратору сайта. Категорически запрещается копировать и использовать без соглашения главного администратора. За использование дизайна без согласия главного администратора, полагается разбирательство с администрацией хостера (в данном случае системы uCoz) и блокировка аккаунта нарушителя.
    Yandex | Google | Rambler | Yahoo | Mail