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

Ltall

Потрачен
14
6
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как нарисовать 3D круг при помощи imgui?
 
Последнее редактирование:

Unknown_251

Новичок
19
1
Как в SAMPFUNCS получить, грубо говоря, указатель на структуру stFontInfo, который хранить в себе стандартный шрифт samp.
Или все же лучше самому инициализировать этот шрифт? (Имею ввиду используя функцию CreateNewFont).
 

Dark_Knight

Me, me and me.
Друг
4,078
2,095
Как в SAMPFUNCS получить, грубо говоря, указатель на структуру stFontInfo, который хранить в себе стандартный шрифт samp.
Или все же лучше самому инициализировать этот шрифт? (Имею ввиду используя функцию CreateNewFont).
Сделай сам и все. Там не stFontInfo используется.
 
  • Влюблен
Реакции: Digger Man52

Wilhelm Groener

Потрачен
3
3
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Как нарисовать 3D круг при помощи imgui?
Using ImGui to draw 3D objects is not rational. Explore Direct3D.

Как-то можно перехватить Read у BitStream для разбора пакета? R3

Знает ли кто адрес указателя на CLocalPlayer? ( На версию сампа похуй, дайте под любую, там уже сам под все найду )

Подскажите, что именно тут проверяется? Какой оффсет? Или это встроенная в самп длл функция?
Как нативно вызвать ее или аналог?
The player is not spawned only if he is a spectator. In that case, it is enough to check whether it is.

Товарищи, есть ли у кого-нибудь адрес surface'а диалога, желательно для R1?
All information about the dialog is contained in the CDialog class.
On the client, unfortunately, you can only get information about the current dialog.
The RefDialog() function returns a pointer to it.

 
Последнее редактирование:
  • Нравится
Реакции: 0xFF

Z3roKwq

Известный
291
154
есть строка на луа:
writeMemory(sampGetBase() + 0x9C0A0, 4, 0x000008C2, true)

пытался переписать на плюсы но чет нихуя не выходит, пробовал:
WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (void*)4, 0x0008C2); патч срабатывал, Но игра крашилась
был вариант
WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (uint8_t*)0x0008C2, 4); нихера не срабатывало, а игра все равно крашилась

крч помогите плз💞
 

Wilhelm Groener

Потрачен
3
3
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
есть строка на луа:
writeMemory(sampGetBase() + 0x9C0A0, 4, 0x000008C2, true)

пытался переписать на плюсы но чет нихуя не выходит, пробовал:
WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (void*)4, 0x0008C2); патч срабатывал, Но игра крашилась
был вариант
WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (uint8_t*)0x0008C2, 4); нихера не срабатывало, а игра все равно крашилась

крч помогите плз💞
The most obvious mistake in your code is that you are trying to add int to the pointer returned by the GetModuleHandleA function. In this case, pointer arithmetic works. The pointer is shifted by 0x9C0A0*sizeof(the type the pointer points to, in this case it is HINSTANCE__ whose size is equal to 4).
The second mistake is that you do not remove the memory protection.

C++:
void make_night() {
    const auto samp =
        reinterpret_cast<std::uintptr_t>(GetModuleHandle("samp.dll"));

    if (const auto ptr = reinterpret_cast<void*>(
        samp + 0x9C0A0)) {  // prevent contamination of the local namespace
        const char raw[] = "\xC2\x08\x00\x00";
        ::DWORD old_prot{};
        VirtualProtect(ptr, sizeof(raw) - 1, PAGE_READWRITE, &old_prot);
        std::memcpy(ptr, raw, 4);
        VirtualProtect(ptr, sizeof(raw) - 1, old_prot, &old_prot);
    }
}

Do not use strstr.
C++:
#include <string>

if (std::string_view{cmdline}.find("-samp") != std::string::npos) { // C++17 and higher
    // ...
}
 
Последнее редактирование:

Smeruxa

Известный
1,359
721
The most obvious mistake in your code is that you are trying to add int to the pointer returned by the GetModuleHandleA function. In this case, pointer arithmetic works. The pointer is shifted by 0x9C0A0*sizeof(the type the pointer points to, in this case it is HINSTANCE__ whose size is equal to 4).
The second mistake is that you do not remove the memory protection.

C++:
void make_night() {
    const auto samp =
        reinterpret_cast<std::uintptr_t>(GetModuleHandle("samp.dll"));

    if (const auto ptr = reinterpret_cast<void*>(
        samp + 0x9C0A0)) {  // prevent contamination of the local namespace
        const char raw[] = "\xC2\x08\x00\x00";
        ::DWORD old_prot{};
        VirtualProtect(ptr, sizeof(raw) - 1, PAGE_READWRITE, &old_prot);
        std::memcpy(ptr, raw, 4);
        VirtualProtect(ptr, sizeof(raw) - 1, old_prot, &old_prot);
    }
}


Do not use strstr.
C++:
#include <string>

if (std::string_view{cmdline}.find("-samp") != std::string::npos) { // C++17 and higher
    // ...
}
where from u got this string? i want to know
C++:
const char raw[] = "\xC2\x08\x00\x00";
 

manukhov

Известный
125
131
есть строка на луа:
writeMemory(sampGetBase() + 0x9C0A0, 4, 0x000008C2, true)

пытался переписать на плюсы но чет нихуя не выходит, пробовал:
WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (void*)4, 0x0008C2); патч срабатывал, Но игра крашилась
был вариант
WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (uint8_t*)0x0008C2, 4); нихера не срабатывало, а игра все равно крашилась

крч помогите плз💞
как ты вообще собрал это если вместо wpm у тебя луашная функция
C++:
unsigned long sampGetBase = reinterpret_cast<unsigned long>(GetModuleHandleA("samp.dll"));
unsigned long data = 0x000008C2;
WriteProcessMemory(GetCurrentProcess(), reinterpret_cast<void*>(sampGetBase + 0x9C0A0), &data, 4, NULL);
 

Хз кто я

Новичок
5
2
Вопрос:
Load Runtime
Failed to load "cef/vccorlib140.dll" 7e
Can't load Runtime
Это строка из гэймлога в лаунчере аризоны. Это хрень связана с Microsoft Visual C++ как мне говорят технари аризоны. Я уже их 100 раз скачивал и ничего. Кто то смог решить? Из-за нее проблемы с cef.
 

Z3roKwq

Известный
291
154
как ты вообще собрал это если вместо wpm у тебя луашная функция
ну как минимум я мог написать функцию с таким же названием, что собственно я и сделал

тебе не в этот раздел, но все же:
 

Wilhelm Groener

Потрачен
3
3
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
where from u got this string? i want to know
C++:
const char raw[] = "\xC2\x08\x00\x00";
The number 0x000008C2 in little-endian, represented as a string with a sequence of bytes. In memory, the little-endian number is arranged in reverse byte order. So it turns out that the number 00 00 08 C2 in memory has a sequence C2 08 00 00, which is represented as a string as "\xC2\x08\x00\x00"
 

Young123

Новичок
10
0
Я решил сделать чит для samp или crmp mobile и столкнулся с такой проблемой, я могу сделать имгуи для чита и вшить его, но не понимаю как писать сам функционал, к примеру я видел что в сурсах sampmodmobile или каких то других есть код с функционалом телепорт, rpc и тд, но это все сделано на libsamp.so, а я делаю на отдельной либке, и вопрос такой как сделать функционал по типу того же rpc и тд на отдельной либке и использовать его на проектах (крупных, по типу бр, орп и тд), может как то можно ее подключать к либ(типо либку самп к моей имею ввиду) или же есть какой то samp api для мобилки?
 
  • Эм
Реакции: Wilhelm Groener

Yuriy Code

Известный
753
929
Решил немного залезть в реверс.
Открыл иду и в неё кинул samp.dll.

Решил пропатчить строку от сампа, нашёл её адрес в IDA (наверное), пытаюсь пропатчить, но, она не патчится. То есть, текст там изменить хочу, но, он не изменяется.

1674010999189.png


C++:
        SF->getSAMP()->registerChatCommand("patch", [](std::string params) {

            strcpy((char*)0x100D3A78, "SWWWWW CCCCCC the connection.");
            AddChat(-1, "Наверное, пропатчилось...");

        });

1674011174192.png