Писать плагины на языке Small достаточно легко, и после нескольких уроков, вероятно, вы сможете написать свой собственный плагин к AMX. Поэтому, думаю, я не должен писать излишне многое до тех пор пока вы сами не начнёте самостоятельно думать как же написать плагин (код). Конечно, если вы писали раньше программы, это сильно поможет. Но я думаю язык Small – хорошее начало для новичка. Я надеюсь, вы имеете некоторые ключевые понятия в языках программирования. Если не понимаете что такое переменные и функции, то вы должны пойти и найти информацию по этим вопросам. Я не буду вам этого объяснять. Однако не пугайтесь. Я думаю, из моих уроков вы сможете понять, что к чему.
Я писал этот плагин под мод HL - Counter- Strike. Так что примите это к сведению. Но, думаю, всё сказанное здесь будет полезным для написания скриптов к другим модам HL.
030613
Урок 1
Ваш первый плагин
*****************
Давайте начнем с простого: вывод сообщений на экран. Придумаем команду, которая это будет делать: amx_ helloworld, amx_ hello или даже hello. Надо что бы админ смог, когда захочет, вписать соответствующую команду и на экран выводилось соответствующая надпись: hello world, hello или даже " Privet, 4 itaki"( ).
Прежде чем начать я хочу сказать несколько слов о том, что нужно для написания скриптов:
Вам нужен редактор текста. Блокнот ( notepad) – это хорошо, но worldpad лучше. Когда вы освоитесь можно переходить на более удобные редакторы. Мы доберёмся до них в более поздних уроках.
У вас должен быть установлен AMXMod и соответственно должен быть сервер на котором он стоит. Я не буду объяснять вам как устанавливать и настраивать AMXMod на сервере, так как это очень хорошо описано в документации к AMXMod'у.
Проверьте наличие файла sc.exe и sc. bat, они идут вместе с AMXMod.
Всё проверили? Поехали!
Создайте новый файл и назовите его helloworld. sma. Начинаем с секции "комментарий", в самом начале файла helloworld. sma. Секция комментарий – часть кода, не являясь кодом. �*то всего на всего комментарий. Обычно здесь указывают название плагина, его версию. Позже можно более детально описать работу вашего плагина, его установку и т.д. Но пока начнём с малого:/*
Hello world, v0.1
By JGHG
*/
Я всегда начинаю нумерацию версии плагина с 0.1. На самом деле не имеет значения с какой версии начать, но не начинайте с версии 1.0. Всегда нано начинать с меньшей версии. А когда вы пойметё, что ваш плагин уже готов к финалу, тогда вам и карты в руки. Так или иначе это всего на всего комментарий. Тут вы можете расписать весь ваш день, по минутам, как дневник. �*то не будет критично, т.к. компилятор не будет читать эти строки. Но наличие названия плагина, версии и автора логично поместить здесь.
Любой плагин должен иметь функцию plugin_ init(). Всё то, что вставлено в эту данную функцию будет регистрироваться в AMX, что бы он мог использовать ваш плагин:public plugin_init() {
register_plugin("Hello world","0.1","jghg")
}
�*то сделает ваш плагин зарегистрированным. plugin_ init() берёт три параметра из плагина: это его название ( Hello world), его версию (0.1) и автора ( jghg). Старайтесь не терять кавычек, иначе работать не будет.
Но этого не достаточно, для нашей цели. Должна быть команда которую админ сможет использовать и для этого мы должны её зарегистрировать в plugin_ init() функции. Команды, которые вводятся в консоле сервера или от клиента должны быть в нутрии plugin_ init() для того, что бы ею могли пользоваться. plugin_ init() важен по многим другим причинам, о которых вы узнаете из более поздних уроках. Функция plugin_ init() это как сообщение для AMXMod, что существкет ваш плагин, и в случае чего (введение команды) юзать его.register_clcmd("amx_helloworld","myfunction ",A DMIN_VOTE," : prints Hello world!!! to everyone")
Допишите данную строку в секцию функции plugin_ init(). С помощью этой строки мы регистрируем команду, которую будем в последствии использовать. Первый параметр в кавычках - это команда, которую мы будет вбивать в консоле. Следующий параметр в кавычках – это функция в нашем плагине, когда команда будет введена будет выполнена данная функция. �*ту функцию мы напишем позже. На самом деле назвать можно как угодно. Название не должно быть очень большим, тогда данное название не подходит ( ). Назвал её так для простоты и непринужденности прочтения текста. Следующий параметр – уровень доступа. Т.е. кто на сервере имеет права для выполнения данной команды. В данном случае админ ( ADMIN _ VOTE ). Зачем простым игрокам разводить флуд ( ). Но можно сделать доступ всем: надо указать 0 вместо ADMIN _ VOTE. Замете кавычек нет! Таким образом командой могут пользоваться админы с уровнем доступа к голосованию ( vote). И последний параметр – это комментарий. Он будет отображен когда вы введёте amx_ help. НЕ ТЕ�*ЯЙТЕ КАВЫЧЕК!!!
Таким образом функция plugin_ init() выглядит так:public plugin_init() {
register_plugin("Hello world","0.1","jghg")
register_clcmd("amx_helloworld","myfunction",ADMIN _VOTE," : says Hello world!!! to game screen")
}
Держите отступы, т.е. используйте " tab" или, к примеру, пробелы в написании функций. Откройте любой . sma файл, поставляемый вместе с AMX, и вы поймёте, о чем я говорю. �*то упростит компиляцию и плагин будет откомпилирован более качественно. Так же это упростит изучение вашего плагина других разработчиков. Куда проще разбираться в структурированном коде, чем в бардаке . Есть ещё серьёзные основания, но сейчас я не буду в них вдаваться.
Добавьте данные строки. Они должны обязательно присутствовать в плагине:#include
#include
Данные строки помещаются сразу после комментариев и перед plugin_ init() функцией. Некоторый (это не про меня) помещают plugin_ init() как последняя функция плагина. Но, по крайней мере, я всегда могу быстро найти свою функцию и думаю так удобнее делать.
Мы уже довольно много написали. Должно быть, похоже вот на это:/*
Hello world, v0.1
By JGHG
*/
#include
#include
public plugin_init() {
register_plugin("Hello world","0.1","jghg")
register_clcmd("amx_helloworld","myfunction",ADMIN _VOTE," : says Hello world!!! to game screen")
}