Вы находитесь на сайте CentR-CS.my1.Ru, который посвящен игровой тематике. На сайте вы можете найти все для CS:Source, все для CS 1.6, все для системы uCoz и многое другое. Напоминаем, что для игроков CS:Source и CS 1.6 у нас имеется большой выбор файлов, от плагинов до моделей.


Реклама на форуме:


  • Страница 1 из 1
  • 1
Создание своих плагинов для amxx
CENTR_CSДата: Воскресенье, 29.05.2011, 12:07 | Сообщение # 1


FoL
Сообщений: 630
Награды: 6
Репутация: 148
Писать плагины на языке 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")

}


ПРОДАМ ЭТО САЙТ ПИСАТЬ n0-sounjkee@mail.ru
₣ǾŁ



 
  • Страница 1 из 1
  • 1
Поиск:


Статистика Форума
Лучшие пользователи
Уважаемые пользователи
Популярные темы
Недавно обновленные темы
CENTR_CS Постов [ 630 ]
Demon Постов [ 61 ]
aWELQIN Постов [ 58 ]
PaTiaS Постов [ 46 ]
makarRU Постов [ 24 ]
Almat Постов [ 23 ]
lewsdiz Постов [ 15 ]
Hy6 Постов [ 14 ]
Olizina Постов [ 7 ]
igoroha3 Постов [ 5 ]
CENTR_CS Репутация [ 148 ]
Demon Репутация [ 56 ]
Elegant Репутация [ 31 ]
PaTiaS Репутация [ 18 ]
neoNIKs Репутация [ 15 ]
4eJLoBek Репутация [ 12 ]
Almat Репутация [ 10 ]
Vongola_Decimor Репутация [ 8 ]
aWELQIN Репутация [ 7 ]
Olizina Репутация [ 5 ]
Игра в Города [ 28 ]
Смайлик твоего настроени... [ 26 ]
Включаю-Выключаю свет [ 26 ]
Игра в СловА [ 21 ]
Игра в Имена [ 17 ]
Игра в Фильмы [ 17 ]
Ассоциации [ 15 ]
Общение персонала [ 14 ]
Только три слова! [ 13 ]
Считаем до 1000 и обратн... [ 13 ]
Ева Ангелина [ 1 ]
Правила подачи вопросов!... [ 1 ]
ВХ НЕВ [ 1 ]
Правила раздела [ 1 ]
Макет [ 1 ]
Набор в кланы [ 2 ]
Правила заказа. [ 1 ]
Автоматический пересчёт [ 1 ]
Внимание пользователи са... [ 1 ]
Не копипаст! Баг для при... [ 1 ]