- Регистрация
- 23 Окт 2012
- Сообщения
- 210
- Лучшие ответы
- 0
- Репутация
- 63
Странно, что до сих пор в интернете нету не одного нормального мануала на русском по написанию плагинов для сампа. Есть одна инструкция
Мануал расчитан на людей, которые знакомы с C, но даже если Вы новичок и хотите попробовать написать свой собственный плагин, который будет выводить в консоль "Привет, мир", получая указания от абстрактной машины (amx'a), добро пожаловать.
Инструкция написана для IDE Visual C++ 2010 express.
Шаг 1.
Скачать и установить Visual C++ 2010 express (Желательно после этого бесплатно активировать):
Скачать
Шаг 2.
Запустите Visual C++ 2010 express.
Создайте новый проект (файл > Создать > Проект... ЛИБО Ctrl+Shift+N).
Шаг 3.
Когда Вы создали новый проект, Вам предложат выбрать тип для Вашего проекта. Выбирайте "Проект Win32". Введите название для Вашего проекта, выберите его расположение (в выбранной директории автоматически создастся каталог решения - группа проектов) и нажмите 'ОК', чтобы продолжить.
Шаг 4.
Отлично, проект настроен. Нажмите 'Далее' в появившемся диалоге, если все в порядке.
Шаг 5.
После того, как Вы нажали 'Далее', появится еще один диалог. Выберите тип приложения "Библиотека DLL", а в дополнительных параметрах поставьте галочку "Пустой проект". Нажмите 'Готово'.
Шаг 6.
Следующее, что Вы должны сделать - нажать правой кнопкой мыши на название своего проекта в обозревателе решений (находится слева) и выбрать 'Свойства'.
Шаг 7.
В появившемся диалоговом окне перейдите в: Свойства конфигурации > Компоновщик > Ввод. Теперь следует добавить файл определения модуля. Кликните на пустое поле справа от графы 'Файл определения модуля'. Введите название для файла определения модуля, которое должно иметь расширение .def (Например, moduledeffile.def). Нажмите 'ОК'.
Шаг 8.
Теперь следует добавить все необходимые файлы к нашему проекту (включая файл определения). Нажмите правой кнопкой мыши на название проекта в обозревателе решений, выберите раздел 'Добавить' и нажмите 'Создать элемент...'. Так как в меню добавления нельзя выбрать файл с расширением .def, выберите .cpp, но в конце названия не забудьте приписать расширение .def (В моем случае, в строке "Имя", будет написано "moduledeffile.def"). Нажмите 'Добавить'. Теперь добавьте файл исходного кода (Файл C++ с расширением .cpp), для этого нажмите в обозревателе правой кнопкой мыши на фильтр (папку) 'Файлы исходного кода', выберите раздел 'Добавить' и нажмите 'Создать элемент...', выберите 'Файл C++ (.cpp)' и назовите его, к примеру, main (на этот раз не указывая расширения).
Шаг 9.
Добавьте файлы SDK к проекту. Для этого распакуйте заранее скачанный архив в директорию Вашего проекта. Теперь добавьте их в самой среде. Сделать это можно так:
правой кнопкой мыши по названию проекта в обозревателе решений > Добавить > Новый фильтр (тоже самое, что и папка). Назовите фильтр SDK. Нажмите правой кнопкой мыши на созданный фильтр > Добавить > Существующий элемент..., выберите все элементы из папки SDK, которая расположена в каталоге Вашего проекта и нажмите 'Добавить'. Снова нажмите правой кнопкой мыши на фильтр SDK > Добавить > Новый фильтр..., назовите новый фильтр amx, в фильтр amx добавьте файлы, которые находятся в папке SDK\amx.
Приблизительно так теперь должен выглядеть Ваш обозреватель решений:
Шаг 10.
Дважды кликните по .def файлу в обозревателе решений. Скопируйте туда следующий код:
Дважды кликните по .cpp файлу в обозревателе решений. Скопируйте туда следующий код:
А теперь, попробуйте все это скомпилировать, нажав комбинацию клавиш Ctrl+F5. Если все в порядке, Ваш плагин появится в папке Debug Вашего проекта. Самое время испытать его в деле, для этого нужно выполнить 3 простых шага:
Готовое решение + скомпилированный плагин:
При доработке мануала добавлю иллюстрации, объяснение кода, функции SDK и другое.
Оригинальная версия инструкции на английском:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
, для Dev C++, но переводили видимо гугл транслитом. Подробную инструкцию написал юзер официального форума сампа Kyosaur, естественно она на английском.Мануал расчитан на людей, которые знакомы с C, но даже если Вы новичок и хотите попробовать написать свой собственный плагин, который будет выводить в консоль "Привет, мир", получая указания от абстрактной машины (amx'a), добро пожаловать.
Инструкция написана для IDE Visual C++ 2010 express.
Шаг 1.
Скачать и установить Visual C++ 2010 express (Желательно после этого бесплатно активировать):
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Скачать
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
для разработки плагинов:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Шаг 2.
Запустите Visual C++ 2010 express.
Создайте новый проект (файл > Создать > Проект... ЛИБО Ctrl+Shift+N).
Шаг 3.
Когда Вы создали новый проект, Вам предложат выбрать тип для Вашего проекта. Выбирайте "Проект Win32". Введите название для Вашего проекта, выберите его расположение (в выбранной директории автоматически создастся каталог решения - группа проектов) и нажмите 'ОК', чтобы продолжить.
Шаг 4.
Отлично, проект настроен. Нажмите 'Далее' в появившемся диалоге, если все в порядке.
Шаг 5.
После того, как Вы нажали 'Далее', появится еще один диалог. Выберите тип приложения "Библиотека DLL", а в дополнительных параметрах поставьте галочку "Пустой проект". Нажмите 'Готово'.
Шаг 6.
Следующее, что Вы должны сделать - нажать правой кнопкой мыши на название своего проекта в обозревателе решений (находится слева) и выбрать 'Свойства'.
Шаг 7.
В появившемся диалоговом окне перейдите в: Свойства конфигурации > Компоновщик > Ввод. Теперь следует добавить файл определения модуля. Кликните на пустое поле справа от графы 'Файл определения модуля'. Введите название для файла определения модуля, которое должно иметь расширение .def (Например, moduledeffile.def). Нажмите 'ОК'.
Шаг 8.
Теперь следует добавить все необходимые файлы к нашему проекту (включая файл определения). Нажмите правой кнопкой мыши на название проекта в обозревателе решений, выберите раздел 'Добавить' и нажмите 'Создать элемент...'. Так как в меню добавления нельзя выбрать файл с расширением .def, выберите .cpp, но в конце названия не забудьте приписать расширение .def (В моем случае, в строке "Имя", будет написано "moduledeffile.def"). Нажмите 'Добавить'. Теперь добавьте файл исходного кода (Файл C++ с расширением .cpp), для этого нажмите в обозревателе правой кнопкой мыши на фильтр (папку) 'Файлы исходного кода', выберите раздел 'Добавить' и нажмите 'Создать элемент...', выберите 'Файл C++ (.cpp)' и назовите его, к примеру, main (на этот раз не указывая расширения).
Шаг 9.
Добавьте файлы SDK к проекту. Для этого распакуйте заранее скачанный архив в директорию Вашего проекта. Теперь добавьте их в самой среде. Сделать это можно так:
правой кнопкой мыши по названию проекта в обозревателе решений > Добавить > Новый фильтр (тоже самое, что и папка). Назовите фильтр SDK. Нажмите правой кнопкой мыши на созданный фильтр > Добавить > Существующий элемент..., выберите все элементы из папки SDK, которая расположена в каталоге Вашего проекта и нажмите 'Добавить'. Снова нажмите правой кнопкой мыши на фильтр SDK > Добавить > Новый фильтр..., назовите новый фильтр amx, в фильтр amx добавьте файлы, которые находятся в папке SDK\amx.
Приблизительно так теперь должен выглядеть Ваш обозреватель решений:
Шаг 10.
Дважды кликните по .def файлу в обозревателе решений. Скопируйте туда следующий код:
PHP:
EXPORTS
Supports
Load
Unload
AmxLoad
AmxUnload
PHP:
#include "SDK\amx\amx.h"
#include "SDK\plugincommon.h"
typedef void (*logprintf_t)(char* format, ...);
logprintf_t logprintf;
extern void *pAMXFunctions;
cell AMX_NATIVE_CALL HelloWorld(AMX* amx, cell* params)
{
logprintf("This was printed from the Test plugin! Yay!"); // Эта строчка выведется в консоль при вызове функции HelloWorld() сервером
return 1;
}
PLUGIN_EXPORT unsigned int PLUGIN_CALL Supports()
{
return SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES;
}
PLUGIN_EXPORT bool PLUGIN_CALL Load(void **ppData)
{
pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS];
logprintf = (logprintf_t) ppData[PLUGIN_DATA_LOGPRINTF];
logprintf(" * Test plugin was loaded."); // Эта строчка выведется в консоль при загрузке плагина
return true;
}
PLUGIN_EXPORT void PLUGIN_CALL Unload()
{
logprintf(" * Test plugin was unloaded.");
}
AMX_NATIVE_INFO PluginNatives[] =
{
{"HelloWorld", HelloWorld},
{0, 0}
};
PLUGIN_EXPORT int PLUGIN_CALL AmxLoad( AMX *amx )
{
return amx_Register(amx, PluginNatives, -1);
}
PLUGIN_EXPORT int PLUGIN_CALL AmxUnload( AMX *amx )
{
return AMX_ERR_NONE;
}
- Скопировать плагин (название.dll) в директорию '/plugins' Вашего сервера и указать его в конфиге сервера.
- В начале мода/скрипта добавить следующую строчку (чтобы использовать функцию HelloWorld):
PHP:native HelloWorld();
- Добавить вызов функции при вводе команды или другим способом. Можно запускать.
Готовое решение + скомпилированный плагин:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
При доработке мануала добавлю иллюстрации, объяснение кода, функции SDK и другое.
Оригинальная версия инструкции на английском:
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Последнее редактирование: