Как сделать чтобы загрузился плагин

Для создания нам нужны
1) программка, которая Скомпилирует, т.к SDK для SA:MP на с++, естественно, нам и нужно программку работающую в этой же среде.
Скачать можно тут: Тут
2) SDK: SDK.rar [11,38К]
3) Немного разбираться, про что это.
И так начнём:
1)Открываем установленный DEV-C++
2)Нажимаем: Файл->Создать->Проект->DLL
-Не забывайте сменить имя проекта, нежелательно использования русских букв
-Нажимаем ОК, и выбираем папку куда сохранить проект
3)Вы сохраниили проект. Перед вами окно где что то написано, а точнее это начальные исходики dl.
-Нажимаем : Выполнить->Скомплинировать
4) После того как вы получи dll( если не получили, то извините, забудьте про плагины вообще)
- В папку где лежит сделать проект, и ваша dll кидаем папку SDK( которую вы скачали выше
5)Подключаем SDK
#include "SDK/amxplugin.cpp" #include "SDK/amx/amx.h" // хоть и есть ссылка на этот плагин в plugin.h, но почему то работает лучше когда прописан сразу здесь #include "SDK/plugin.h"
6) После этих строчек:
typedef DLLIMPORT void (logprintf_t)(char format,...); logprintf_t logprintf; DLLIMPORT void ppPluginData; BOOL Copys(char indir[128],char outdir[128]); extern DLLIMPORT void pAMXFunctions; //Some declaration functions static char pcCreateAndFillStringFromCell(AMX amx,cell params) { char szDest; int nLen; cell pString; amx_GetAddr(amx,params,&pString); amx_StrLen(pString, &nLen); szDest = new char[nLen+1]; amx_GetString(szDest, pString, 0, UNLIMITED); return szDest; } typedef DLLIMPORT struct assoc_array assoc_array; PLUGIN_EXPORT DLLIMPORT unsigned int PLUGIN_CALL Supports() { return SUPPORTS_VERSION | SUPPORTS_AMX_NATIVES; } PLUGIN_EXPORT DLLIMPORT bool PLUGIN_CALL Load(void ppData) { pAMXFunctions = ppData[PLUGIN_DATA_AMX_EXPORTS]; logprintf = (logprintf_t)ppData[PLUGIN_DATA_LOGPRINTF]; logprintf("Плагин успешно загружен"); return 1; } PLUGIN_EXPORT DLLIMPORT void PLUGIN_CALL Unload() { logprintf("No loader"); } static cell AMX_NATIVE_CALL f_MyOnePlagin(AMX amx, cell params) { logprintf("Ура, это мой первый плагин"); return 1; } AMX_NATIVE_INFO Natives[] = { { "MyOnePlagin", f_MyOnePlagin } }; PLUGIN_EXPORT DLLIMPORT int PLUGIN_CALL AmxLoad(AMX amx) { return amx_Register(amx, Natives, -1); } PLUGIN_EXPORT DLLIMPORT int PLUGIN_CALL AmxUnload(AMX amx) { return AMX_ERR_NONE; }
Впринципе готово, но это же урок, Поэтому объясню как добавлять свои функции
Хотя начнем с загрузки:
Когда плагин загрузился, за это отвечаем :
PLUGIN_EXPORT DLLIMPORT bool PLUGIN_CALL Load(void ppData)
Поэтому там можно писать Что будет просходить при условии что плагин загрузился
Как Сделать свою функцию:
1)
static cell AMX_NATIVE_CALL f_MyOnePlagin(AMX amx, cell params) //f_MyOnePlagin-названии функции используемой в //dll { logprintf("Ура, это мой первый плагин"); // выводит сообщение в консоль return 1; }
2) Нужно определить какая функция будет вызываться в нашем моде, это делается в
AMX_NATIVE_INFO Natives[] = { { "MyOnePlagin", f_MyOnePlagin } ////MyOnePlagin - функция которая будет вызываться в вашем моде f_MyOnePlagin- котороая в dll };
Вот и всё, нажимаем Скомплинировать, Помещаем получившую dll в папку plugins, и подключаем в конфигее
7) Открываем ваш мод
И вставляем
native MyOnePlagin();
8) Делаем вызов это функции, например в
public OnGameModeInit()
Пишем
MyOnePlagin();
Всё Скомпилирует, запускаем сервак
Это азы, дальше осваивате сами.

Источник: http://pawn-wiki.ru/index.php?/topic/492-pishem-plagin/



Рекомендуем посмотреть ещё:


Закрыть ... [X]

Не удалось загрузить плагин что делать: инструкция Провод для люстры своими руками

Как сделать чтобы загрузился плагин Как сделать чтобы загрузился плагин Как сделать чтобы загрузился плагин Как сделать чтобы загрузился плагин Как сделать чтобы загрузился плагин Как сделать чтобы загрузился плагин