Sign in to follow this  
Followers 0

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

3 posts in this topic

legendabrn
Активный

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

 

Первое что нам понадобится, это 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
fargo
Новичок

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

Share this post


Link to post
Share on other sites
Randy
Новичок

Сделал всё так, как указано в топике. Выводятся ошибки. Использую актуальную версию 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

    • MetaLife Online
      By MetaLife Online
      Привествую! Я основатель проекта MetaLife Online, и проект нуждаеться в спонсоре/инвесторе.
      О всем договоримся в лс 
      ТГ
      ВК
    • Nikolas_Alwarez
      By Nikolas_Alwarez
      Здравствуйте, хотел создать свою КРМП карту, на основе карты криминальной России, и столкнулся с такой проблемой. Я не могу найти файлы этой карты, карта нужна 3D для редактирования, помогите пожалуйста найти эту карту.
    • tenteykov
      By tenteykov
      Всем привет, хочу открыть свой проект в crmp мобайл гейминге:
      - мне нужен разработчик мода, либо человек который шарит как из готового сделать что то более менее уникальное и интересное
      -человек который может сделать лаунчер и линкануть это все непосредственно с самим сервером, чтобы все нажималось, работало
      Если есть дженералист кто совмещает все в 1 лице, было бы счастье)
    • PerfCode
      By PerfCode
      Доброго времени суток, форумчане!
       
      Начал разработку мода Arizona RP и подумываю над созданием проекта. Мод хороший, сам же имею за плечами огромный опыт как в разработке, так и в создании проекта. 
       
      Ты взрослый, адекватный, рассудительный и мечтаешь создать свой проект? Имеешь большой опыт игры на оригинальной Arizona RP? 
      Напиши мне! Возможно, именно с тобой у нас сложится отличная команда и мы сможем создать хороший игровой проект с модом Arizona RP. 
       
      Мой ТГ: @perfcode
    • Kutuzov
      By Kutuzov
      Всем здарова.
      Недавно начал заниматься съемкой фильмов в GTA SA.
      Кому не сложно, можете пожалуйста подписаться на канал и поддержать лайком и комментарием?
      Заранее сорри за какие то киноляпы и т.п., т.к. заниматься этим начал на этой неделе и выпустил уже 2 серии.
       
       
      https://youtu.be/zK5-Fw9oc6A - 1 серия
      https://www.youtube.com/watch?v=gOmNS0dmoQg - 2 серия