What's up, guys! Мне хотелось писать скрипты для сервера на чём-то кроме Pawn и подумал я: "Почему бы целиком не написать сервер на C++?".
Единственный менеджер плагинов, который даёт хоть какое-то C++ API это Metamod, а я проклинаю API Metamod из-за его ущербности.
Именно поэтому откопал интересный проект под названием Anubis и обновил его до ReGameDLL 5.21.
Anubis это менеджер плагинов предоставляющий прекраснейшее C++ API для написания собственных плагинов под него.
Как написать свой первый плагин:
Пример плагина:
Установка:
Оригинальный репозиторий: https://github.com/Amaroq7/Anubis (в Wiki есть инфа как написать плагин, как ставить хуки и прочее)
Если вам нужна сборка под Linux, то можете сбилдить её сами с моего форка.
Если вы неравнодушны к этому проекту, то ставьте звёздочки на оригинальный репозиторий, создавайте Issues и задавайте вопросы автору в Discussions.
Единственный менеджер плагинов, который даёт хоть какое-то C++ API это Metamod, а я проклинаю API Metamod из-за его ущербности.
Именно поэтому откопал интересный проект под названием Anubis и обновил его до ReGameDLL 5.21.
Anubis это менеджер плагинов предоставляющий прекраснейшее C++ API для написания собственных плагинов под него.
Как написать свой первый плагин:
- Устанавливаете Anubis на сервер
- Создаёте новый DLL проект в Visual Studio
- Скачиваете архив
sdk.zip
- Закидываете в папку с проектом файлы из архива
- Вставляете код из примера плагина и собираете проект
- Перекидываете DLL'ку в
cstrike/addons/your_folder_name
- Прописываете в
cstrike/addons/metamod/configs/plugins.yaml
следующее:
YAML:
your_module_name:
os: windows
path: addons/your_folder_name/your_file_name.dll
C++:
#include <IAnubis.hpp>
#include <ILogger.hpp>
#include <game/ILibrary.hpp>
#include <engine/ILibrary.hpp>
class Plugin : public Anubis::IPlugin
{
public:
Anubis::InterfaceVersion getInterfaceVersion() const
{
return Anubis::IAnubis::VERSION;
}
std::string_view getName() const
{
return "Minimal plugin";
}
std::string_view getVersion() const
{
return "1.0";
}
std::string_view getDate() const
{
return __DATE__;
}
std::string_view getAuthor() const
{
return "Anubis Dev Team";
}
std::string_view getUrl() const
{
return "https://github.com/Amaroq7/Anubis";
}
Type getType() const
{
return Type::Extension;
}
};
nstd::observer_ptr<Anubis::IAnubis> gApi;
nstd::observer_ptr<Anubis::Game::ILibrary> gGame;
nstd::observer_ptr<Anubis::Engine::ILibrary> gEng;
std::unique_ptr<Anubis::ILogger> gLogger;
/* The following functions are exported from the plugin */
namespace Anubis
{
nstd::observer_ptr<IPlugin> Query()
{
static auto pluginInfo = std::make_unique<Plugin>();
return pluginInfo;
}
bool Init(nstd::observer_ptr<IAnubis> api)
{
gApi = api;
gGame = gApi->getGame(Game::ILibrary::VERSION);
gEng = gApi->getEngine(Engine::ILibrary::VERSION);
gLogger = gApi->getLogger(ILogger::VERSION);
gLogger->setLogTag("TEST");
gLogger->setLogLevel(LogLevel::Debug);
return true;
}
void Shutdown()
{
gLogger.reset();
}
}
- Закинуть файлы из архива
metamod.zip
в корневую папку сервера - Прописать в
liblist.gam
строчку:gamedll "addons\metamod\dlls\metamod.dll"
- Запустить сервер и проверить работоспособность командой
anubis version
Оригинальный репозиторий: https://github.com/Amaroq7/Anubis (в Wiki есть инфа как написать плагин, как ставить хуки и прочее)
Если вам нужна сборка под Linux, то можете сбилдить её сами с моего форка.
Если вы неравнодушны к этому проекту, то ставьте звёздочки на оригинальный репозиторий, создавайте Issues и задавайте вопросы автору в Discussions.
Download all Attachments
-
1.3 MB Просмотры: 7
-
40.7 KB Просмотры: 4
Последнее редактирование: