Другое SAMPFUNCS | API C++

Stiopko

Известный
Проверенный
307
218
Как можно поставить вооот такой
upload_2019-2-11_21-17-40.png
маркер на карте (ну типа когда вы заходине через esc на карту и ставите там точку только мне ето все нужно сделать програмно)
Єто
C++:
CVector pos(crds[0], crds[1], crds[2]);
CMarker *mapMarker = GAME->GetRadar()->CreateMarker(&pos);
mapMarker->SetSprite(eMarkerSprite::MARKER_SPRITE_WAYPOINT);
не то, це фейковий маркер
 

Adder

Известный
22
0
Приветствую, вопрос такой. Как реализовать такую функцию.
При нажатии на клавишу, вызывается чат окно в нём вводится команда, например /sms id
И чтобы оно не закрывалось. Пробовал использовать:
SF->getSAMP()->getChat()->SetChatInputText();
SF->getSAMP()->getInput()->EnableInput();
Но если используешь их, то они вызываются только со второго нажатия клавиши
 

Cake_

Потрачен
Проверенный
263
313
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как выгружать/подгружать плагин?
 

Vlad Horii

Известный
Проверенный
310
172
Здравствуйте, подскажите пожалуйста, как этот код клео будет выглядить на SF API
CLEO:
04E4: refresh_game_renderer_at 0.0 0.0
03CB: set_rendering_origin_at 0.0 0.0 0.0
 

Adder

Известный
22
0
Приветствую, вопрос такой. Как реализовать такую функцию.
При нажатии на клавишу, вызывается чат окно в нём вводится команда, например /sms id
И чтобы оно не закрывалось. Пробовал использовать:
SF->getSAMP()->getChat()->SetChatInputText();
SF->getSAMP()->getInput()->EnableInput();
Но если используешь их, то они вызываются только со второго нажатия клавиши
Так и не нашёл ответа. Может кто подскажет
 

ЯedЯuM

Malware Maker
242
302
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как выгружать/подгружать плагин?
Хуйню тебе выше посоветовали, есть функции для прямой выгрузки/загрузки без всяких там консолей.
C++:
SF->loadPlugin("путь к плагину");
SF->unloadPlugin("имя плагина");

Где правильней удалять данные плагине при выгрузке
Тут
C++:
void CALLBACK endProc() { // это типу сффовский деструктор
    if (activatePlugin != nullptr) {
        ActivatePlugin *s = activatePlugin;
        activatePlugin = nullptr;
        delete s;
    }
    //ImGui_ImplDX9_Shutdown();
    //ImGui_ImplWin32_Shutdown();
    //ImGui::DestroyContext();
}

или тут

C++:
case DLL_PROCESS_DETACH:
        ImGui_ImplDX9_Shutdown();
        ImGui_ImplWin32_Shutdown();
        ImGui::DestroyContext();
        break;
Нет разницы, но я бы предпочёл длл детач потому что до SAMPFUNCS v5.4.0 другие плагины которые установили свой деструктор позже могли затереть твой и он бы не сработал.

Так и не нашёл ответа. Может кто подскажет
Полный код покажи, я думаю у тебя проблема в проверке нажатия этой самой клавиши.
 
  • Нравится
Реакции: Stiopko

Cake_

Потрачен
Проверенный
263
313
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
e-LojbwK-Qw.png

как сделать такой текст?
 

ЯedЯuM

Malware Maker
242
302
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

san0

Известный
Друг
411
268
Как можно поставить вооот такой маркер на карте
C++:
CVector vec = CVector();
int &m_nTargetBlipIndex = *reinterpret_cast<int*>(
    reinterpret_cast<unsigned char*>(GAME->GetMenuManager()->GetInterface()) + 0x2C);

if (!m_nTargetBlipIndex) {
    using CRadar__SetCoordBlip = auto (__cdecl*)(eMarkerType, CVector, unsigned int, eMarkerDisplay, char*) -> int;
    m_nTargetBlipIndex = reinterpret_cast<CRadar__SetCoordBlip>(0x583820)
        (eMarkerType::MARKER_TYPE_COORDS, vec, 0, eMarkerDisplay::MARKER_DISPLAY_BLIPONLY, nullptr);
}
auto CRadar__GetActualBlipArrayIndex = ((int(__cdecl *)(int))0x582870);
CMarker &m = *GAME->GetRadar()->GetMarker(CRadar__GetActualBlipArrayIndex(m_nTargetBlipIndex));
m.SetPosition(&vec);
m.SetSprite(eMarkerSprite::MARKER_SPRITE_WAYPOINT);
Надеюсь, это по большей степени самый простой из методов, да и тому же карманный. По хорошему нужно использовать вместо этих деклараций полные классы из plugin-sdk, например https://github.com/DK22Pac/plugin-sdk/blob/master/plugin_sa/game_sa/CRadar.h, ну и будет выглядеть явно лучше, нежели прямая работа с памятью и смещениями по типу 0x2C.
как этот код клео будет выглядить на SF API
Аналогично рекомендуется все это красиво оформить
C++:
CVector vec(100.0f, 150.0f, 200.0f);

// 04E4: refresh_game_renderer_at 0.0 0.0
((void*(__cdecl *)(CVector2D*, void*))0x410C00)(&CVector2D(vec), reinterpret_cast<void*>(0xB72914));
// 03CB: set_rendering_origin_at 0.0 0.0 0.0
GAME->GetWorld()->LoadMapAroundPoint(&vec, /* radius used for requesting objects */ 100.0f);

как сделать такой текст?
C++:
static void show_text_highpriority(const char* text, const unsigned int time) {
    ((void(__cdecl *)(const char *, unsigned int, unsigned short, bool))0x69F1E0)(text, time, 0, false);
}
// ...
show_text_highpriority("~r~H~g~E~w~Y", 4000U);