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

В теме 3 сообщения

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Randy
Новичок

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

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

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

Отредактировано пользователем Randy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!


Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.


Войти

  • Последние посетители   0 пользователей онлайн

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

  • Похожий контент

    • Rahmzhan21
      От Rahmzhan21
      Оплаты временно не будет если проект будет успешным будет оплата за работу писать в тг @RaxamM2 или же вк https://vk.ru/kartbaidima
      Набираем всех челов которые умеют делать крмп
    • gamelandhost
      От gamelandhost
      Ведётся набор персонала для начала разработки кроссплатформенного RP-проекта на базе San Andreas Multiplayer.
       
      Мод будет разрабатываться с нуля. Проект на стадии формирования команды.
       
       
       
      ⚠ Важно: на первом этапе участие осуществляется на добровольческой основе (без оплаты).
       
       
       
      Вакансии
       
       
       
      Pawn Developer
       
       
       
      Обязанности: разработка RP-систем, работа с БД, исправление багов.
       
      Требования: знание Pawn, MySQL, понимание RP.
       
       
       
      Junior Pawn Developer
       
       
       
      Обязанности: помощь в разработке, простые системы, исправление ошибок.
       
      Требования: базовые знания Pawn, желание учиться, адекватность.
       
       
       
      Android Developer
       
       
       
      Обязанности: адаптация проекта под Android, работа с лаунчером, оптимизация UI.
       
      Требования: Java/Kotlin, Android SDK.
       
       
       
      UI/UX Designer (PC + Mobile)
       
       
       
      Обязанности: интерфейсы меню и HUD, адаптация под мобильные устройства.
       
      Требования: Figma, понимание игрового UI.
       
       
       
      Backend Developer
       
       
       
      Обязанности: API для сайта и лаунчера, авторизация, БД.
       
      Требования: PHP / Node.js / Python, MySQL, REST API.
       
       
       
      DevOps / Системный администратор
       
      Обязанности: настройка серверов, стабильность, бэкапы.
       
      Требования: Linux, VPS, базовые сети.
       
       
       
      RP-дизайнер / Геймдизайнер
       
       
       
      Обязанности: RP-механики, баланс экономики, сценарии работ и квестов.
       
      Требования: опыт RP, понимание баланса.
       
       
       
      Mapper
       
       
       
      Обязанности: маппинг интерьеров и экстерьеров, оптимизация объектов.
       
      Требования: опыт маппинга SAMP, аккуратность.
       
       
       
       
       
      Связь: ответ в теме или личные сообщения с кратким описанием опыта.
    • Yarik_Vito
      От Yarik_Vito
      Устроюсь на проект павно разрабом насчет зп договоримся опыт с сфере год
      Тг @Yarik_Vito
      Вк @yarik_vito
    • xDetik
      От xDetik
      Нужен специалист по Pawn. Свяжитесь с нами через VK по ссылке https://vk.com/dev1lchik или оставьте свои контактные данные.
    • Татарников Георгий
      От Татарников Георгий
      LIFE RP | Mobile — мобильный RP-проект для Android, который активно готовится к запуску и будет долго развиваться и улучшаться после релиза.
       
      О проекте
      В команде уже есть: разработчики, тестировщик, продакт-менеджер, технический администратор, тех.администратор по лаунчеру
      Сильная медийная поддержка, работа с крупными блогерами
      Проект ориентирован на мобильных игроков (Android)
      Есть прямые выходы на RuStore и Play Market
      Кого ищем
      Ищем только маппера для долгосрочного сотрудничества.
      Задачи
       
      Добавление и замена объектов
      Изменение и настройка интерьеров
      Обновление/улучшение локаций и окружения
      Доработки маппинга под задачи проекта
      Работа по ТЗ и приветствуется импровизация
      Условия
               Оплата: 10 000 – 15 000 ₽ / месяц (фикс)
      Аванс присутствует
      После запуска проекта зарплата будет повышаться (обсуждаемо)
      Важно
      Для получения должности нужно будет выполнить одно техническое задание по маппингу.
      Наши ресурсы
      Сайт проекта: https://life-roleplay.ru/
      Группа VK: https://vk.ru/liferoleplayrussian
      Telegram-канал: https://t.me/foxunegame
      Подача заявки / связь
      Пишите в Telegram: @foxune777