- 624
- 383
Библиотека для работы с сампом, которая реализует незаметную для разработчика поддержку версий сампа. Добавлять новые версии крайне легко, достаточно добавить таблицу оффсетов в массив (
src/offsets.cpp).Небольшой пример:
Example:
auto netGame = SAMP::NetGame();
if (netGame) {
if (netGame->rakClient && netGame->rakClient->IsConnected())
netGame->rakClient->Disconnect(0);
netGame->~CNetGame();
}
Как видим, чтобы получить RakClientInterface мы не вызываем функции, а просто берём поле. Реализовано это через properties (экслюзив для MSVC). Некоторых это может оттолкнуть, но учитывая, что почти всё на винде к сожалению билдится MSVC, огромных проблем в данном подходе я не вижу (в теории Clang тоже это реализует, но я не проверял)
Функции и поля далеко не все, и поддержка версий только R1 и R3-1, т.к. эта либа позаимствована(вырезана) из проекта, где всё добавлялось по мере необходимости. Буду дополнять, что можете делать и вы, создавая пул реквесты.
Также изначально была идея некого хака языка, сделав так, чтобы все структуры сразу содержали референсы, которые мы будем заменять через замену памяти
В будущем есть идея расширить библиотеку, добавив в неё свои хуки, ивенты и т.д.
btw. хз занято ли имя SAMP-SDK, может кто-то уже делал библиотеку с таким названием, но я не видел