Sign in to follow this  
Followers 0
legendabrn

Напиши свой первый плагин для SA:MP

3 posts in this topic

В данном уроке мы сделаем шаблон для нашего первого плагина.

 

Первое что нам понадобится, это Visual Studio с установленными c++ дополнениями, а так же SDK

Установив все самое нужное, можно приступать к созданию проекта

1. Открываем Visual Studio

2. Справа жмем создание проекта

605f7a0e94675_.png.489f455b0f2d0da4a671691787f64529.png

3. Выбираем Библиотека Динамической компоновки ( DLL )

605f7a3966613_.png.30af518848104d9336f0124a5e796b0b.png

4. Указываем любое название проекта

605f7aa674acc_.png.37a126ed8268e394f7aff0edb6742b62.png

5. Создав проект, выбираем в самом верху Release, x86 ( SA:MP 32 битный ) 

605f7b2a6c0bc_.png.b185c009ed94574b7d5bcbf4ba6dbb6a.png

6. Открываем нашу папку с проектом и разархивируем SDK.zip

7. Включаем отображение всех файлов

605f7cb14285b_.png.e4f2a1f6ee91fd3e317d768693bfc996.png

8. У нас должна появиться папка SDK, жмем по ней правой кнопкой мыши и включаем в проект

9. Отключаем отображение файлов

10. Создаем plugin.def (для экспорта определения модулей)

Жмем правой кнопкой мыши по нашему проекту -> добавить -> создать элемент

605f7e237e8ff_.thumb.png.3d452c270ed38efafcb50f6b83d381c6.png

11. Выбираем Visual C++ -> Код -> Файл определения модуля ( .def )

605f7e79a1b1a_.png.d58fe559276d569566cdd51bd5ff8734.png

11. Жмем правой кнопкой мыши по проекту -> свойства -> компоновщик -> ввод -> пишем "plugin.def"

605f7ed8004b6_.png.0ed2d8b915005989ab87de362a4b303a.png

12. Открываем dllmain.cpp и вставляем следующий код:

#include "SDK/amx/amx.h"
#include "SDK/plugincommon.h"

extern void *pAMXFunctions;
void *(*logprintf)(const char *fmt, ...);

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 = (void *(*)(const char *fmt, ...))ppData[PLUGIN_DATA_LOGPRINTF];
	
	if (NULL == pAMXFunctions || NULL == logprintf)
		return false;

	logprintf("  clear plugin loaded..");
	return true;
}

PLUGIN_EXPORT void PLUGIN_CALL Unload()
{
	logprintf("  clear plugin unloaded..");
}

13 Жмем правой кнопкой мыши по проекту -> собрать

Если сделали все правильно, в выводе должно быть написано следующее:

605f7f548d049_.png.855c5358f4c2ae545d9fc45d952651ba.png

Копируем из папки Release к себе в папку plugins, прописываем в server.cfg и проверяем

605f7fbe18f8e_.png.5ecc10d56b925a20878ac95178e2e82d.png

 

Снизу предоставлен полный собранный проект.

Гайд об pawn и описание всех функций находится тут

SDK.zip

clearPlugin.zip

Share this post


Link to post
Share on other sites

как тут создать свою функцию чтобы в моде вызывать её через native? 

Share this post


Link to post
Share on other sites

Сделал всё так, как указано в топике. Выводятся ошибки. Использую актуальную версию Visual Studio 2022.

Безымянный.png

UPD: Когда я взял проект, который был приложен, и использовал его, то никаких ошибок не возникло. Всё собралось сразу же...

Edited by Randy

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content

    • AdamMarc1
      By AdamMarc1
      Кто нибудь продает уник мод 1 копия?
    • Kutuzov
      By Kutuzov
      Доброго времени суток.
      На проект Nemalsk RolePlay начался набор в состав администрации.
      Мы решили перевыпустить проект, авторские права не нарушены, уже всё решили с разработчиками.
      Так, как разработчики приостановили развитие проекта, мы решили купить к них же мод и открыть свой проект. Название они разрешили оставить. Мы добавим очень много интересных систем также от себя. Наш проект не является "нубо-рп", мы полноценный RP проект.
      В общем, ждём администрацию, всех желающих прошу написать мне в телеграмм.
       
       
      Мой телеграмм: @vadim_arhipenko
      Официальный телеграмм канал проекта: https://t.me/nemalskrp_official
       
      О свободных уровнях я скажу уже при собеседовании
       
    • Баса марцинкевич
      By Баса марцинкевич
      Всем привет, сливаю для Вас данный мод от проекта: Crime Mobile.
      Автором слива Является:
      Баса марцинкевич
       данный мод стоял на проекте 3 года, с момента его выхода.
       на данном проекте было 1000 онлайна, а также этот мод бонусник.
       А, ещё в этом моде нет оригинальной базы данных. Т.к. ее нету)
      Но есть бэкапы в моде,
       
      Если у Вас получится собрать, из старых базы данных что-то, то Вы молодец…
       
      а, так там есть много разных систем, 
      Аирдропы, семейные территории, семейные посылки, семейные контрабанды ( с уникальными предметами ).
      И много прочего. Советую данный мод.
       
      Если так можно сливать, то я сливаю данный мод в своем тгк. Извиняюсь если нельзя так сливать, то пожалуйста сообщите.
       
      ССЫЛКА НА СЛИВ В ТГК: https://t.me/+vdi9sBz78OYxZmVi
    • HikaSear
      By HikaSear
      Всех приветсвую, кто может помочь? Нужна помощь с созданием запросов в БД, мускула версии R41-4
       
      В общем, нужно написать команду /alogin (я использую командный проц dc_cmd), при вводе должен в бд отправиться запрос, который будет узнавать, какое значение стоит в столбике admin у ника, который ввел данную команду, а затем то что вернет БД (число), записать в переменную в enum e_PLAYER_INFO В pAdmin. Лютые скриптеры павно, хелп
    • Миша_Cherkes
      By Миша_Cherkes
      Всем привет 
      Распологает кто нибудь такой информацией как сделать NPS или же актёров в крмп 0.3е
      Лазил по всем форумникам не могу найти информацию 
      Их можно вроде добавит но они будет без головы пример на скрине