Создание amxx плагина
Статья предназначена для новичков в программировании, но что-нибудь мыслящих (например тех, кто хотя бы сумел с первого раза поставить amxx:, доступным языком. Супермегакуль-программеры могут распечатать эту статью и использовать её по назначению.
Что нам понадобится? amxx-studio или pstudio-0.8.2 взять можно на amxmodx.org Открыв программу amx-studio мы увидим типичный редактор с подсветкой кода не забудьте прописать в опциях путь к \addons\amxmodx\scripting\amxxpc.exe для генерирования плагинов в код который будет понятен нашей игре Counter Strike и у вас должен быть установлен AMXMod и соответственно должен быть сервер на котором он стоит. Я не буду объяснять вам как устанавливать и настраивать AMXMod на сервере, так как это очень хорошо описано у нас на сайте.
Это комментарий к программе.
/* Plugin generated by AMXX-Studio */
Мы можем изменить его скажем на:
/* Супер мега плагин, который ничего не делает, начинающего кулхацкера Васи Пупкина из бобруйска */
Это все информация о плагине и его авторе.
#define PLUGIN "New Plugin"
#define VERSION "1.0"
#define AUTHOR "Author"
Можем изменить скажем на:
#define PLUGIN "Pupkin Plugin"
#define VERSION "1.0"
#define AUTHOR "Bac9|"
Примечание: Здесь уже придется писать латиницей.
Это список модулей, которые мы будем использовать.
#include amxmodx>
#include amxmisc
Добавим ещё один интересный модуль cstrike. В конечном счете у нас будет:
#include amxmodx
#include amxmisc
#include cstrike
Функции модулей мы можем посмотреть на сайте amxmodx.org в разделе functions. А
Любой плагин должен иметь функцию plugin_ init(). Всё то, что вставлено в эту данную функцию будет регистрироваться в AMX, что бы он мог использовать ваш плагин:public plugin_init() {
register_plugin()
Это сделает ваш плагин зарегистрированным. plugin_ init() берёт три параметра из плагина: это его название ( Pupkin Plugin), его версию (1.0) и автора ( Bac9|). Старайтесь не терять кавычек, иначе работать не будет.
public plugin_init() {
register_plugin(PLUGIN, VERSION, AUTHOR)
// Add your code here...
}
Эта функция рассказывает amx'y все о себе (какие команды ей надо, какие функции они вызывают и.т.д. и.т.п.). register_plugin(PLUGIN, VERSION, AUTHOR) эта строчка регистрирует наш плагинчик, как плагин под названием, которое мы указали выше, версии, которую мы тоже указали выше и с автором (не поверите), которого мы тоже указали выше.
Что же делать дальше?
Дальше мы добавим в наш плагин команду, с помощью которой мы будем вызывать функцию. Добавим в public plugin_init() {
следующую строчку для нашей цели. Должна быть команда которую админ сможет использовать и для этого мы должны её зарегистрировать в plugin_ init() функции. Команды, которые вводятся в консоле сервера или от клиента должны быть в нутрии plugin_ init() для того, что бы ею могли пользоваться. plugin_ init() важен по многим другим причинам. Функция plugin_ init() это как сообщение для AMXMod, что существует ваш плагин, и в случае чего (введение команды) юзать его.register_concmd("amx_pupkin","vasia",ADMIN_ALL,"zapustit function vasia pupkin")
Название плагина не должно быть очень большим, тогда данное название не подходит (amx_pupkin).Я назвал её так для простоты и непринуждённости прочтения текста. Следующий параметр – уровень доступа. Т.е. кто на сервере имеет права для выполнения данной команды. В данном случае админ ( ADMIN_ALL ). И последний параметр – это комментарий. Он будет отображен когда вы введёте (amx_pupkin). НЕ ТЕРЯЙТЕ КАВЫЧЕК!!!
register_concmd("amx_pupkin","vasia",ADMIN_ALL,"zapustit function vasia pupkin")
должно выглядеть вот так:
/* Plugin generated by AMXX-Studio */
#define PLUGIN "Pupkin Plugin"
#define VERSION "1.0"
#define AUTHOR "Bac9|" #include amxmodx
#include amxmisc
#include cstrike
public plugin_init() {
register_plugin("Pupkin Plugin", "1.0", "Bac9|")
register_concmd("amx_pupkin","vasia",ADMIN_ALL,"zapustit function vasia pupkin")
// Add your code here...
}
amx_pupkin - команда, если мы введем её в консоль cs, то запустится функция под названием vasia. Чтобы запустить команду не нужно обладать никакими правами(ADMIN_ALL), если команда должна быть доступной только для администратора, то вместо ADMIN_ALL пишем ADMIN_KICK. zapustit function vasia pupkin - комментарий к команде, который будет виден в списке команд amx вызываемом по команде amx_help в консоли cs.
Нам осталось написать последнюю функцию – вывод сообщения на экран. Мы зарегистрировали команду которая будет выполнятся в консоли, сообщение выводимое на экран тоже зарегистрировали. Теперь осталось создать функцию которая будет всё это делать:public pupkin(id) {
Хочу прокомментировать следующее – id. Id – это уникальный номер каждого присутствующего на сервере. Оно будет ему присвоено при входе и отобрано при выходе. Это уникальный номер каждого играющего, одинаковых быть не может. Если сервер рассчитан на 32 игрока, то id будет от 1 до 32.
Теперь обработаем функцию vasia, вызываемую при вводе amx_pupkin в консоль cs.
public pupkin(id) { //Начинаем функцию взяв id игрока
client_print(id,print_chat,"Tb| 3anycTuL fyHkcuy pupkina") //Выводим сообщение в чат
} //Заканчиваем функцию
Quote (ПРИМЕР)
/* Plugin generated by AMXX-Studio */
#define PLUGIN "Pupkin Plugin"
#define VERSION "1.0"
#define AUTHOR "Bac9|" #include amxmodx
#include amxmisc
#include cstrike
public plugin_init() {
register_plugin("Pupkin Plugin", "1.0", "Bac9|")
register_concmd("amx_pupkin","vasia",ADMIN_ALL,"zapustit function vasia pupkin")
// Add your code here...
}
public pupkin(id) {
client_print(id,print_chat,"Tb| 3anycTuL fyHkcuy pupkina")
}
в этом примере показана самая малость простого кода(скрипта) для плагина от amxxstudio Откомпилируйте его и убедитесь, что нет ошибок во время компиляции..Если при компиляции вы получаете сообщение warning 217: loose indentation, перейдите на указанную строчку и После чего забираем откомпилированный плагин (pupkin.amxx) в папке куда вы его кинули , amx в папку amx\ plugins и прописать плагин в amx\ config\ plugins. ini.
Что же делает этот плагин?
При вводе amx_pupkin в консоль cs он выводит нам сообщение в чат cs Tb| 3anycTuL fyHkcuy pupkina.Такой вот простой пример.
Обязательно читаем HELP-scripting-Russian
AMX Mod X Documentation
pawn