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

Скачать на Телефон 19.04.2019

Приветствую. Если вы уже продолжительное время используете WordPress, то наверняка пробовали или по крайней мере, читали чужие советы и задумывались о том, что бы добавить собственный код в файл functions.php Однако, вставленные кусок кода так им и останется, со всеми вытекающими последствиями (см ниже). Во многих случаях будет лучше написать собственный плагин, чем просто добавить код в файл functions.php Сегодня будем учиться создавать плагины, ведь на самом деле, это гораздо проще чем вы думаете.

Когда стоит написать собственный плагин?

Да, иногда можно использовать functions.php, когда вам нужно добавить совсем простую функциональность, которая перекликается с отображением контента, к примеру, так можно добавить дополнительные . Такие изменения разумеется пропадут, если вы сделаете обновление темы.

Тот же самый код, но обернутый в плагин, уже никак не должен зависеть от темы.

Что понадобится для написания плагина?

Чтоб написать плагин, вам нужно создать файл плагина и добавить в него код, а затем активировать его тем или иным способом. Каждый плагин имеет открывающий код, который закомментирован. А затем уже идет сам код плагина. Если плагин у вас более сложный, или вы хотите разделить его элементы, то вам нужно создать вложенные файлы – дополнительные PHP-файлы, которые вы свяжете с главным файлом плагина. Вы также можете захотеть включить страницы стилей и дополнительные скрипты в ваш плагин. Как сделать все это будет описано ниже.

Вот несколько способов активировать ваш плагин:

С помощью функции

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

С помощью хука действия (action hook)

WordPress использует сотни «крючков» действий, которые вы можете использовать для вызова кода в функциях, которые вы прописали в своем плагине. Ели ваша тема имеет «крючок» действия, вы можете написать функцию, которую вы потом прикрепите к этому «крючку». Код в вашем плагине будет запущен, когда WordPress загрузит этот «крючок».

С помощью фильтер хука (filter hook)

WordPress также дает возможность использовать множество фильтр-хуков, которые позволяют изменить выводимую информацию. Фильтр-хук отличается от хука действия тем, что он позволяет изменить код, который уже выводится, вместо того, чтоб добавлять новый код. Вы также можете найти фильтр-хуки в вашей теме или другом плагине, который можно использовать для активации кода в вашем собственном плагине.

С помощью шорткода

Ваш плагин может создать шорткод, который затем можно добавить в ваши записи или страницы.

С помощью виджета

Если ваш плагин создает виджет, вы можете активировать его, добавив в виджет-область.

Вступление для плагина

Чтоб создать плагин, вы можете просто создать файл в вашей папке wp-content/plugins со вступительным кодом внутри:

Вам нужно отредактировать код сверху, добавив вашу собственную информацию.

Сохраните плагин, и он появится на привычной странице с вашими плагинами, где вы сможете его активировать.

Это все, что нужно сделать, чтоб создать плагин. Теперь к нему нужно добавить код. Давайте взглянем на разные способы активации кода в плагине.

Написать функцию для вашего плагина

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

Функция для этой кнопки выглядит вот так:

Function wpmudev_cta() { echo "

"; echo "

Call us on 000-0000 or email [email protected]

"; echo "
"; }

Выше я использовал echo для вызова HTML внутри моей PHP –функции. Если вы хотите добавить много HTML внутри функции и не хотите использовать echo так много, вы можете добавить открывающий и закрывающий PHP-теги внутри вашей функции, вместо этого.

Function wpmudev_cta() { ?>

Call us on 000-0000 or email [email protected]

Теперь, когда вы захотите добавить вашу кнопку призыва к действию, вам просто нужно добавить функцию в нужные места в файлы шаблона вашей темы, вот так:

Так гораздо удобнее, чем просто добавить этот код в вашу тему каждый раз, когда вам нужна кнопка призыва к действию – меньше кода для WordPress и меньше манипуляций –для вас.

Активация функции с помощью хука

Есть альтернатива тому, чтоб прописывать вашу функцию в файлах шаблона вашей темы каждый раз, когда вы хотите использовать эту функцию. Если у вашей темы есть хуки, вы можете прицепить вашу функцию к одному или нескольким таким хукам «крючкам». Или вы можете использовать один из хуков, которые предоставляет сам WordPress или плагин, который вы уже активировали.

Если вы хотите узнать, есть ли у вашей темы хук действия, посмотрите в сайдбаре, который называется mytheme_sidebar , вы сможете прицепить свою функцию к нему, используя функцию add_action() :

Функция add_action() имеет два обязательных параметра: Хук, к которому прикрепляется функция, и название функции. Есть также третий опциональный параметр, который представляет приоритетность, согласно которой будет проигрываться ваша функция. Используется, если вы хотите запустить функцию после или перед какой-то другой.

Вы можете прицепить вашу функцию к такому количеству крючков, какому вам хочется. Так что если вы хотите добавить вашу кнопку призыва к действию в сайдбаре, под контентом в вашей теме, используйте крючок mytheme_below_content , как это показано ниже:

Function wpmudev_cta() { ?>

Call us on 000-0000 or email [email protected]

Если вы хотите зацепить код одним из тех хуков, которые предоставляет WordPress, это делается совершенно также. Пример – это создание плагина, который добавляет код Google analytics на ваш сайт, и зацепляется за хук wp_head.

Добавление кода с помощью фильтра работает совершенно также, за исключением того, что вы используете функцию add_filter() . Так что если блок с контентом призыва к действию уже добавлен в тему с использованием фильтра, нужно перезаписать все вот так:

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

Плагин или код

– это оболочка CMS, наполненная разнообразными кодами, которые и заменяют плагины. Конечно, это может позволить выиграть немного миллисекунд при загрузке страницы, но чрезвычайно сложно. Чтобы настраивать ту или иную функцию, приходится редактировать код. Также неудобно, если необходимо реализовать какую-то функцию на другом сайте – приходится перетаскивать туда весь код.

Продолжаем развивать тему. Бывает, что необходимо установить на сайте какую-то специфическую функцию, которую не может реализовать ни один плагин, или все решения в виде плагинов не подходят. В этом случае приходится внедрять в WordPress код. Однако, по причинам, описанным выше, это не всегда удобно и хорошо. И тогда возникает вопрос – как сделать плагин, чтобы он выполнял какой-то код.

Как сделать плагин для WordPress

Пред тем, как сделать плагин, у вас должен быть PHP-код функции, который необходимо выполнять. Этот код вы можете написать самостоятельно, если имеете понятие об этом языке программирования, или получить его из какого-то сервиса, который предоставляет эту функцию.

После этого создаём PHP файл. Сделать его можно легко. Создайте сначала обычный текстовый документ в формате.txt, а потом просто переделайте его расширение в.php. Для редактирования файла лучше использовать NotePad, о котором мы писали . Он удобен в части синтаксиса.

Перед тем, как создать плагин, открываем сделанный PHP-файл и вставляем в него код следующей конструкции:

php

* Plugin Name: название нашего плагина

//код какой-то функции, которую этот плагин будет выполнять

Теперь этот PHP файл закидываем в какую-то папку, которую именуем латинскими буквам. В неё же следует сохранить все файлы, которые использует код PHP-функции, например CSS, Java script или другие исполняемые файлы.

Эта папка и есть плагин, который мы создали. Её копируем в каталог wp-content/plugins и идём в консоль, чтобы активировать его. Если всё сделано правильно, то после активации функция PHP в плагине будет выполняться на сайте.

Теперь вы знаете, как создать плагин. И теперь его вы можете кому-то показать или поставить на другой свой сайт. И при этом вам не надо будет редактировать код.

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

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

#include
#include

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

public plugin_init() {

// 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 нам не нужен, поэтому оставим его без внимания. Эти параметры понадобятся нам для того, чтобы ограничить доступ к функции бессмертия, предоставив его лишь администраторам сервера.
Используем эти параметры в следующей конструкции:


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
new name
read_argv(1, name, 31)
read_argv(2,health, 31)

new hps = str_to_num(health)
return PLUGIN_HANDLED

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

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

new health
new name
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 символа. Стоит отметить, что символы здесь нумеруются от 0 до 31, а не от 1 до 32. Следующая строка задаётся также.

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

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() вписываем строку

название команды задаётся в кавычках на первой позиции после открытия скобок (оно не обязательно должно совпадать с именем функции, просто в качестве простого примера я решил сделать именно так), далее идёт имя функции в ковычках, а затем уровень привелегий 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
new name
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, добавив туда строку moi_plugin.amxx

Когда делался редизайн этого сайта, я обнаружил свою большую ошибку на старой версии. Множество функционала добавлялось с течением времени в файл functions.php старой темы. Это не только увеличивало размер файла, но также повышало вероятность ошибок на сайте при каждом внесении изменений в него. Поэтому было принято решение создать плагин для всего сайта (плагин с хуками из functions.php), который не был привязан к шаблону. Что это за плагин, зачем он нужен, и как создать такой же для своего сайта вы узнаете из этой статьи.

Что за плагин такой?

Плагин Site-Specific — это определенное место для добавления сниппетов, которые вы находите на просторах интернета, и эти сниппеты не привязаны к текущему шаблону сайта. Другими словами:

Время от времени, вы натыкаетесь на статьи, посвященные WordPress в интернете, где люди делятся сниппетами и советами (в том числе и на нашем сайте), которые вы добавляете в свой файл functions.php темы. Эти сниппеты не настолько большие, чтобы их оформить в полноценный плагин, однако некоторые из них безусловно замечательные и добавляют определенный функционал сайту, при этом не являются зависимыми от используемого шаблона, например хук перенаправления пользователей на случайную запись.

Вот в таких случаях вам пригодится плагин для всего сайта (site-specific), который будет действовать также как и файл functions.php, но при этом позволит сохранить плюшки, к которым вы уже успели привыкнуть, при смене темы.

Почему вам нужен этот плагин

Вышеуказанные функции — это то, что вам понадобится в случае если вы решите сменить шаблон, и даже если не решите. Можете представить себе отключение шаблона и потерю всех своих шорткодов? Это будет кошмар! 🙂

При использовании site-specific плагина, у вас получится неубиваемый по части функционала сайта. Если вдруг вы вставите новонайденный сниппет с неверным форматированием, вместо белого экрана смерти WordPress вы получите всего лишь предупреждение от менеджера плагинов о том, что он обнаружил ошибку и отключит плагин. Конечно же, это немного «сломает» ваш сайт на несколько секунд, но вы сразу же можете убрать «плохой» код, и сайт вернется на круги своя.

Это как выбирать меньшее из двух зол: либо вы будете выкинуты из админки и поломаете сайт (из-за неправильного кода в functions.php), либо же вы сломаете сайт, но за пару секунд его и восстановите.

Как сделать такой плагин для своего сайта?

Наверное, думается, что это очень сложно? Неа!

  • Все, что нужно, это создать новую папку в директории с плагинами. Например: /wp-content/plugins/wpincode-plugin/
  • Открыть пустой файл и сохранить его под именем «wpincode-plugin.php»
  • Вставить нижеприведенный код в этот файл:
  • Теперь загрузите этот файл в созданную папку в директории plugins на сервере, а затем активируйте плагин через админку

Исходя из всего вышесказанного, рекомендую добавлять корректные сниппеты, которые вы можете найти на нашем сайте именно в этот плагин, нежели чем в functions.php
Надеюсь, этот метод станет новым трендом. И поверьте, он сохранит вам уйму времени при смене темы.


Описание: Дополнительная информация по создание своего плагина для Counter Strike 1.6 с помощью программы AmxStudio

Статью делал не я поэтому претензии не ко мне:D

Итак, извлекаем содержимое архива 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 . На экране появляется окно для редактирования с текстом

#include
#include

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

public plugin_init() {

// 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 нам не нужен, поэтому оставим его без внимания. Эти параметры понадобятся нам для того, чтобы ограничить доступ к функции бессмертия, предоставив его лишь администраторам сервера.
Используем эти параметры в следующей конструкции:


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
new name
read_argv(1, name, 31)
read_argv(2,health, 31)

new hps = str_to_num(health)
return PLUGIN_HANDLED

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

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

new health
new name
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 символа. Стоит отметить, что символы здесь нумеруются от 0 до 31, а не от 1 до 32. Следующая строка задаётся также.

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

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() вписываем строку

название команды задаётся в кавычках на первой позиции после открытия скобок (оно не обязательно должно совпадать с именем функции, просто в качестве простого примера я решил сделать именно так), далее идёт имя функции в ковычках, а затем уровень привелегий 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
new name
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, добавив туда строку moi_plugin.amxx



Рекомендуем почитать

Наверх