legendabrn

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

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

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

 

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

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


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

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

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


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

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

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

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

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

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


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

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

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

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

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


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

Войти

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


Войти

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

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

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

    • elizabethsem200
      От elizabethsem200
      Всем привет, в поисках разработчика с опытом работы, оплата по договорённости.

      Кого заинтересовало вы можете обратиться сюда для уточнения информации: Ссылка
       
    • tivan666ban
      От tivan666ban
      Я полный ноль в павн ну как полный ноль что такое if else print forward и т.д. я понимаю но как хочу сам полностью написать любую систему например регистрация с авторизацией то начинается не понимание многих аспектов. Вобщем как научиться программировать на павн.
    • Tufxgod
      От Tufxgod
      Пойду на проект в качестве разработчика.
      Опыт в павн 2 года, умею писать системы любой сложности, владею mysql.
      Пишите в лс!
    • Kevin_Hubert
      От Kevin_Hubert
      Обращаюсь ко всем, а именно прошу обратить Администрацию сайта - на этого человека, который развёл меня на 4000 рублей грубо говоря, после чего пропал, и не отвечает.
      На этом сайте сидит и продаёт якобы моды свои, хотя они слиты в открытый доступ.

      Заказал у него багофикс + улучшения, на что получил добро от него, и скинул бабки - в итоге этот (Слово удалено системой) кинул меня. 

      Все пруфы: https://pawno-rus.ru/profile/44856-miguelcrown08/
    • wandalism_
      От wandalism_
      ПОИСК ЧЕЛОВЕКА КОТОРЫЙ НАПИШЕТ СИСТЕМУ ДНК ЕСЛИ ВСЕ БУДЕТ ЧЕТКО ОПЛАЧИВАЮ 100 РУБЛЕЙ И НА ЧАЙ ОСТАВЛЮ 50 РУБЛЕЙ