Напиши свой первый плагин для 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 пользователей онлайн

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

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

    • KeinKotov
      От KeinKotov
      Всём ещё раз здравствуйте. 
      Вообщем начал я разработку своего проекта и понял... Я ничерта не понял. Я смотрел видео. Читал книги. Решил попробовать сделать тдм сервер в точности по видео и у меня не получилось. В видео он сохранил несколько позиций спавна в массив и потом через функцию по очерёдности i++ доставал эти позиции, то есть каждый игрок должен был появляться на следующей позиции. Я сделал всё в точности как у него, прям всё. У меня сравнится на нулевых координатах с id3 скином, хотя в массиве совершенно другие скины. Откуда он берёт точку спавна и скин, почему не достаёт значения из массива я так понять и не смог, хотя сделал всё в точности как у него. По конец даже комментарии и координаты скопировал, ну ничего не помогает. Видео 8ми летней давности, может оно уже не актуально для нынешнего времени, может сейчас новая версия pawn и там совершенно по другому я так и не разобрался. Пожалуйста, подскажите мне что делать. Я прочитал несколько книг про Pawno. Сейчас я хочу сесть и делать код по каким то примерам с объяснениями, но в просторах интернета нету новых уроков по Pawno. Старые я не решаюсь смотреть т.к. думаю что это всё же проблема в том что раньше был другой синтаксис. Помогите пожалуйста
    • Smileee
      От Smileee
      Куплю мобильный проект, что бы был интересный и не слитый, что то интересное. Пишите в личные
    • KeinKotov
      От KeinKotov
      Всем привет. Меня зовут Kein. Я первый день на вашем форуме.
      Хочу поделиться с вами своей историей о моей пути в скриптинге сампа и создании своего сервера, историей которая только началась.
      Мне 22 года, работаю на стройке, есть жена и полугодовалая дочь. В скриптинг я пошёл потому что всегда любил самп, играл в него лет с 12, но на данный момент у меня большие хотелки к серверам сампа и нечего подходящего я найти не могу. Идей для реализации механик у меня полно, а слушать меня никто не хочет. Вот я и принял решение изучить скриптинг и создать свой сервер. Я уже понял насколько это тяжело, но я взялся за это основательно. Сервер с оригинальным модом будет открыт. Только неизвестно когда, учить мне ещё много.
      Вот собственно поэтому я и решил вести блог тут, я хочу делиться своими успехами, рассказывать о том что нашёл на просторах интернета или придумал сам, да и новичкам начинать будет проще видя мой путь. На данный момент с pawn я знаком только по лп "Основы pawn" на канале "PawnStart" И читаю книгу "PawnBook v5".Подскажите пожалуйста, если я не правильно начал изучать pawn, то что следует сделать первым делом?
      Я обещаю что я открою свой сервер, так что следите за дальнейшими постами. Всех обнял
    • maximBO$$
      От maximBO$$
      не могу скачать файлы сервера, ошибки на скрине
      функциями 0.3дл на сервере пользоваться не могу
       
      фото ошибок
       

    • Козельский Ярослав
      От Козельский Ярослав
      Люди, скажите пожалуйста, где мне взять основу для лаунчера который можно будет выставить в магазин приложений после изменения дизайна и ip серверов?