Другое С/С++ Вопрос - Ответ

AdCKuY_DpO4uLa

Известный
287
477

|| NN - NoName ||

Известный
1,049
628
Долго искал и до сих пор ищу ответ на интересующий меня вопрос.

Суть вопроса: как мне подключить SAMP-api к проекту?

Вот у меня есть SAMP-api. Что мне делать дальше? Как его подключить к моему проекту?
1627078556312.png


Мне нужно только 0.3.7-R1
 

.deserve

Участник
32
36
Долго искал и до сих пор ищу ответ на интересующий меня вопрос.

Суть вопроса: как мне подключить SAMP-api к проекту?

Вот у меня есть SAMP-api. Что мне делать дальше? Как его подключить к моему проекту? Посмотреть вложение 106715

Мне нужно только 0.3.7-R1
Я не совсем понимаю что ты тогда мог искать, если не смог найти как подключить статическую/динамическую библиотеку к своему проекту.

Я не знаю, что это за проект и что он генерит, но тебе в любом случае нужно подключить хидеры (.h files) в свой проект, а после этого скомпилить проект и подключить библиотеку к проекту, в зависимости от того че там и от того че ты хочешь. Если статика - то делать особо нечего, в msdn даже есть: тык
А если динамическая, то тебе решать как ты хочешь юзать её функции и как ее подключать. Но они все равно объявлены в header files, поэтому их тебе нужно все равно подключать. А далее смотришь тут
По твоим хотелкам дальше - либо явное связывание, либо неявное, либо если тебе надо чтобы все шло по маслу до того как ты вызовешь функцию из библиотеки, то используй отложенную загрузку (только не с kernel32.dll, но тебе её и не нужно отложенно загружать), но при этом не используй FreeLibrary.
Тебе я так полагаю больше неявное связывание подойдет, ибо меньше мороки.
По сути всё. И это применимо не только к твоему проекту, но и ко всем сторонним библиотекам.
 

|| NN - NoName ||

Известный
1,049
628
Я не совсем понимаю что ты тогда мог искать, если не смог найти как подключить статическую/динамическую библиотеку к своему проекту.

Я не знаю, что это за проект и что он генерит, но тебе в любом случае нужно подключить хидеры (.h files) в свой проект, а после этого скомпилить проект и подключить библиотеку к проекту, в зависимости от того че там и от того че ты хочешь. Если статика - то делать особо нечего, в msdn даже есть: тык
А если динамическая, то тебе решать как ты хочешь юзать её функции и как ее подключать. Но они все равно объявлены в header files, поэтому их тебе нужно все равно подключать. А далее смотришь тут
По твоим хотелкам дальше - либо явное связывание, либо неявное, либо если тебе надо чтобы все шло по маслу до того как ты вызовешь функцию из библиотеки, то используй отложенную загрузку (только не с kernel32.dll, но тебе её и не нужно отложенно загружать), но при этом не используй FreeLibrary.
Тебе я так полагаю больше неявное связывание подойдет, ибо меньше мороки.
По сути всё. И это применимо не только к твоему проекту, но и ко всем сторонним библиотекам.
Благодарю. Мне все объяснили и я сразу понял в чём была моя ошибка.
 

loganhackerdff

Известный
868
517
Привет всем
мне нужна хелпа с имги
у меня есть функция получения названия раскладки:
C++:
     std::string GetKeyBoardLocaleName()
    {
        char OutBuff[16];
        GetKeyboardLayoutNameA(OutBuff);

        char  buffer[255];
        GetLocaleInfoA(strtol(OutBuff, (char**)OutBuff[strlen(OutBuff)], 16), LOCALE_SLANGUAGE,
            buffer, sizeof(buffer) / sizeof(char));
        return buffer;


    }
Я также загуражю шрифт с поддержкой Кирилицы, русский текст у меня рисуеться, но вот вместо названия раскладки знаки вопроса
C++:
            char szBuffer[128];
            sprintf(szBuffer, (const char*)u8"Раскладка: %s",GetKeyBoardLocaleName().c_str());


            ImGui::TextColored(ImVec4(m_v4Color.x, m_v4Color.y, m_v4Color.z, 1.f), szBuffer);

В MessageBoxA() текст выводиться, раньше я рендерил через Font на SF, сейчас всё через ImGui
 

SR_team

like pancake
BH Team
4,720
6,368
Привет всем
мне нужна хелпа с имги
у меня есть функция получения названия раскладки:
C++:
     std::string GetKeyBoardLocaleName()
    {
        char OutBuff[16];
        GetKeyboardLayoutNameA(OutBuff);

        char  buffer[255];
        GetLocaleInfoA(strtol(OutBuff, (char**)OutBuff[strlen(OutBuff)], 16), LOCALE_SLANGUAGE,
            buffer, sizeof(buffer) / sizeof(char));
        return buffer;


    }
Я также загуражю шрифт с поддержкой Кирилицы, русский текст у меня рисуеться, но вот вместо названия раскладки знаки вопроса
C++:
            char szBuffer[128];
            sprintf(szBuffer, (const char*)u8"Раскладка: %s",GetKeyBoardLocaleName().c_str());


            ImGui::TextColored(ImVec4(m_v4Color.x, m_v4Color.y, m_v4Color.z, 1.f), szBuffer);
у тебя слово "Раскладка" в UTF-8, а GetLocaleInfoA отдает cp1251
 
  • Нравится
Реакции: loganhackerdff

TheD1sl1ke

Новичок
15
1
Всем привет. Каким образом можно прочитать адрес памяти в C#/C++?
Если быть конкретнее то мне нужно получить значение адреса памяти, для дальнейшего использования в качестве переменной.
 

kin4stat

mq-team
Всефорумный модератор
2,730
4,710
Всем привет. Каким образом можно прочитать адрес памяти в C#/C++?
Если быть конкретнее то мне нужно получить значение адреса памяти, для дальнейшего использования в качестве переменной.
C++:
template <typename T>
T ReadMemory(uintptr_t address) {
    DWORD old;
    VirtualProtect(reinterpret_cast<void*>(address), sizeof(T), PAGE_READWRITE, &old);
    T value = *reinterpret_cast<T*>(address);
    VirtualProtect(reinterpret_cast<void*>(address), sizeof(T), old, &old);
    return value;
}
 
  • Нравится
Реакции: TheD1sl1ke

loganhackerdff

Известный
868
517
Всем привет. Каким образом можно прочитать адрес памяти в C#/C++?
Если быть конкретнее то мне нужно получить значение адреса памяти, для дальнейшего использования в качестве переменной.
с++ :
C++:
auto value = *(тип переменной*)адрес;
для C# по идее тоже самое только в unsafe блок и auto заменить на var
 
  • Bug
  • Нравится
Реакции: TheD1sl1ke и 4el0ve4ik

loganhackerdff

Известный
868
517
Привет всем, кто знает как открыть меню (которое на ESC) чё может куда-то записать или чо вызвать?
 

kin4stat

mq-team
Всефорумный модератор
2,730
4,710
  • Нравится
Реакции: loganhackerdff

LaRossa

Потрачен
429
117
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Привет, нашёл указатель на чат и пытаюсь открыть его, но появляется только курсор, чат как бы появляется его не видно (но когда нажимаю ENTER он на секунды появляется и пропадает)

CE:
mov eax, [ecx+14E0]
mov eax, [esi + 14E0]
mov [esi + 14E0], 1

samp.DLL+26E8CC + 14E0

Подскажите в чём может быть ошибка

C++:
int addr = *(int*)(var.sAPI.dwSampModule + 0x26E8CC);
*(bool*)(addr + 0x14E0) = 1;
 

loganhackerdff

Известный
868
517
всем ку я не научился пользоваться гидрой, скажите пж адрес функции скриншота для samp 0.3.7 R3
для 0.3.7 R1 я знаю - samp.dll + 0x70FC0
(и если не сложно напишите как блять в этой гидре прыгнуть на функцию)
 

Cake_

Известный
Проверенный
263
313
@LaRossa
close/open chat r3:
#define FUNC_CChat_Close     0x0068E10
#define FUNC_CChat_Open      0x0068D10

void ToggleSAMPChat(bool status = true) {
    uintptr_t pSamp = reinterpret_cast<uintptr_t>(GetModuleHandleA("samp.dll"));
    uintptr_t pChat = *reinterpret_cast<uintptr_t*>(pSamp + 0x26E8CC);
    status ? reinterpret_cast<int(__thiscall*)(uintptr_t ptr)>(pSamp + FUNC_CChat_Open)(pChat) :
                                            reinterpret_cast<int(__thiscall*)(uintptr_t ptr)>(pSamp + FUNC_CChat_Close)(pChat);
}
@loganhackerdff 0074EB0
 
  • Нравится
Реакции: LaRossa и loganhackerdff