Для создания нам нужны 1) программка, которая Скомпилирует, т.к SDK для SA:MP на с++, естественно, нам и нужно программку работающую в этой же среде. Чисто от себя я предлагаю DEV-c++ , программка хорошо подходит для написания dll'ок Скачать можно тут: http://rghost.ru/18839371 2) SDK :http://rghost.ru/18839541 3) немного разбираться, про что это. И так начнём: 1)Открываем установленный DEV-C++ 2)Нажимаем: Файл->Создать->Проект->DLL -Не забывайте сменить имя проекта, нежелательно использования русских букв -Нажимаем ОК, и выбираем папку куда сохранить проект 3)Вы сохраниили проект. Перед вами окно где что то написано, а точнее это начальные исходики dl. -Нажимаем : Выполнить->Скомплинировать 4) После того как вы получи dll( если не получили, то извините, забудьте про плагины вообще) - В папку где лежит проект, и ваша dll кидаем папку SDK( которую вы скачали выше 5)Подключаем SDK
Code
#include "SDK/amxplugin.cpp" #include "SDK/amx/amx.h" // хоть и есть ссылка на этот плагин в plugin.h, но почему то работает лучше когда прописан сразу здесь #include "SDK/plugin.h"
Поэтому там можно писать Что будет просходить при условии что плагин загрузился Как Сделать свою функцию: 1)
Code
static cell AMX_NATIVE_CALL f_MyOnePlagin(AMX *amx, cell *params) //f_MyOnePlagin-названии функции используемой в //dll { logprintf("Ура, это мой первый плагин:)"); // выводит сообщение в консоль return 1; }
2) Нужно определить какая функция будет вызываться в нашем моде, это делается в
Code
AMX_NATIVE_INFO Natives[] = { { "MyOnePlagin", f_MyOnePlagin } ////MyOnePlagin - функция которая будет вызываться в вашем моде f_MyOnePlagin- котороая в dll };
Вот и всё, нажимаем Скомплинировать, Помещаем получившую dll в папку plugins , и подключаем в конфигее 7) Открываем ваш мод И вставляем
Code
native MyOnePlagin();
8) Делаем вызов это функции, например в
Code
public OnGameModeInit()
Пишем
Code
MyOnePlagin();
Всё Скомпилирует, запускаем сервак Это азы, дальше осваивате сами.
Тема создана при просьбе Knief весь текст скопирован из его сообщения.
Используем Notepad++ вместо Pawno SandBox RPG on the developing setElementData ( source, "user.id", exports.MySQL:filter (data, "id") )
Сообщение отредактировал Внедорожник - Понедельник, 22.08.2011, 23:06
Я имею ввиду что у тебя написано "скомплинирует", мой пост намекал на ошибку... С плагинами не пробовал работать, времени пока разбираться нет да и знания в с++ нету.
Я имею ввиду что у тебя написано "скомплинирует", мой пост намекал на ошибку... С плагинами не пробовал работать, времени пока разбираться нет да и знания в с++ нету.
а) я в с++ тоже не очень, просто везде смысл один) Правда создавая с++ так намудили) Пример: за 3 часа(если взять чистой работы) я написал, прогу на делфе, которая соединяет с бд sql , тащит данные, кое что делает с ними, так же заносит, и т.д и т.п, ну около 1к строк было. А на с++ пока писал плагин, я убил 4-5 часов, создавай функцию, которая будет копировать папку, со всеми файлами, оказывается, в с++ нет таких стандартных средств. Да и вообще, куда не сунешься в с++ сразу проблемы
Приватно никого не консультирую, моды также не пишу, ни так, ни за деньги. Моя ICQ 675715, пишу только с неё. Все остальные Роачи фейки, ничего я не продаю и продавать не буду, вас разводят.
Полезно, но объяснил ты не всё, что написал) Я например теперь понимаю, как создать функцию, а что это такое, без понятия. Quote static char *pcCreateAndFillStringFromCell(AMX *amx,cell params) { char *szDest; int nLen; cell *pString; amx_GetAddr(amx,params,&pString); amx_StrLen(pString, &nLen); szDest = new char[nLen+1]; amx_GetString(szDest, pString, 0, UNLIMITED); return szDest; } Написал бы кто-нибудь парочку простеньких плагинов с исходниками.
pcCreateAndFillStringFromCell(AMX *amx,cell params) - нужно, для функций, с несколькими агрументами. используется так: В принципе давайте изменим свою первую функцию.
Code
static cell AMX_NATIVE_CALL f_MyOnePlagin(AMX *amx, cell *params) //f_MyOnePlagin-названии функции используемой в //dll { char* arg1; // объявление переменых тип char - означает это строка, а int - целый числа, впринципе, насчет этого гугл поможет char* arg2; arg1=pcCreateAndFillStringFromCell(amx, params[1]); arg2=pcCreateAndFillStringFromCell(amx, params[2]); logprintf("В функцию, я ввёл слова : %s и %s",arg1,arg2); // выводит сообщение в консоль return 1; }
И соответсвенно, в моде
Code
native MyOnePlagin(const ar1[],const ar2[]);
и уже вызывать:
Code
MyOnePlagin("ВАСЯ","Бухарик");
Кстати незнаю как выведутся русский слова) поэтому можете заменить на свои
http://forum.sa-mp.com/showthread.php?t=253436 - Немного получше все описано, если знания англ. позволяют, можете почитать =)
аха) ну попробуй скомлинируй dll )) потом скажешь сколько часов ссидел) Точнее она скомплинируется, но ты не подключешь его. Кстати первое, что я находил, та самая статья, потом я жалел, что её нашёл
Честно говоря бесполезная тема, те, кто в состоянии что-либо писать на си++ никогда не возьмут во внимание подобного рода статьи, которые не несут абсолютно никакой информации. К тому же, функции типа pcCreateAndFillStringFromCell настолько убоги, что вы ничего не выиграете в скорости от подобного рода использования. Вся загвоздка передач данных состоит в том, что в павн используются ячейки, отсюда мы видим нужду в переводе данного типа на понятный си языку тип. К тому же эти исходники заточены под визуаловский компилятор, visual msc c++ самая убогая программа имхо, я всегда пишу только на codeblocks. Эту статью можно назвать так: используем готовую среду для вывода в консоль надписи - "мой первый плагин".
Русскоязычныи портал о MTA/GTA-IV-MP | http://multi-theft-auto.ru
Честно говоря бесполезная тема, те, кто в состоянии что-либо писать на си++ никогда не возьмут во внимание подобного рода статьи, которые не несут абсолютно никакой информации. К тому же, функции типа pcCreateAndFillStringFromCell настолько убоги, что вы ничего не выиграете в скорости от подобного рода использования. Вся загвоздка передач данных состоит в том, что в павн используются ячейки, отсюда мы видим нужду в переводе данного типа на понятный си языку тип. К тому же эти исходники заточены под визуаловский компилятор, visual msc c++ самая убогая программа имхо, я всегда пишу только на codeblocks. Эту статью можно назвать так: используем готовую среду для вывода в консоль надписи - "мой первый плагин".
Это статья предназначена, что б начать делать плагин. Дай ссылку, где расписано, какая должна быть структура у плагина для подключения.а? Это статья только об этом и рассказывает. А рассказывать о более сложных, смысла нет, потому что больше половины пользователей, в самом моде разобраться не могут, а способных писать плагины, тут вообще маленька доля, и если кто то хочет, он задаётся целью, и пишет, а писать примеры, на угад, какие надо, а какие нет. Смысла нет. Я показал, какая должна быть структура у плагина, как создавать функции, такого я на рунете не находил. А про visual с++ я с тобой полностью согласен