Сделай сам и все. Там не stFontInfo используется.Как в SAMPFUNCS получить, грубо говоря, указатель на структуру stFontInfo, который хранить в себе стандартный шрифт samp.
Или все же лучше самому инициализировать этот шрифт? (Имею ввиду используя функцию CreateNewFont).
Просто хотел удостовериться, что это действительно так.Сделай сам и все. Там не stFontInfo используется.
Using ImGui to draw 3D objects is not rational. Explore Direct3D.Как нарисовать 3D круг при помощи imgui?
Как-то можно перехватить 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.Подскажите, что именно тут проверяется? Какой оффсет? Или это встроенная в самп длл функция?
Как нативно вызвать ее или аналог?
All information about the dialog is contained in the CDialog class.Товарищи, есть ли у кого-нибудь адрес surface'а диалога, желательно для R1?
У тебя объявлена функция StrStr, но в коде нет ее реализации, если тебе нужно узнать, если ли в строке подстрока, то можешь юзать strstr()
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).есть строка на луа:
writeMemory(sampGetBase() + 0x9C0A0, 4, 0x000008C2, true)
пытался переписать на плюсы но чет нихуя не выходит, пробовал:
WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (void*)4, 0x0008C2); патч срабатывал, Но игра крашилась
был вариант
WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (uint8_t*)0x0008C2, 4); нихера не срабатывало, а игра все равно крашилась
крч помогите плз💞
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.
#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 knowThe 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 // ... }
const char raw[] = "\xC2\x08\x00\x00";
как ты вообще собрал это если вместо wpm у тебя луашная функцияесть строка на луа:
writeMemory(sampGetBase() + 0x9C0A0, 4, 0x000008C2, true)
пытался переписать на плюсы но чет нихуя не выходит, пробовал:
WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (void*)4, 0x0008C2); патч срабатывал, Но игра крашилась
был вариант
WriteMemory(GetModuleHandleA("samp.dll") + 0x9C0A0, (uint8_t*)0x0008C2, 4); нихера не срабатывало, а игра все равно крашилась
крч помогите плз💞
unsigned long sampGetBase = reinterpret_cast<unsigned long>(GetModuleHandleA("samp.dll"));
unsigned long data = 0x000008C2;
WriteProcessMemory(GetCurrentProcess(), reinterpret_cast<void*>(sampGetBase + 0x9C0A0), &data, 4, NULL);
ну как минимум я мог написать функцию с таким же названием, что собственно я и сделалкак ты вообще собрал это если вместо wpm у тебя луашная функция
тебе не в этот раздел, но все же:Вопрос:
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"where from u got this string? i want to know
C++:const char raw[] = "\xC2\x08\x00\x00";
SF->getSAMP()->registerChatCommand("patch", [](std::string params) {
strcpy((char*)0x100D3A78, "SWWWWW CCCCCC the connection.");
AddChat(-1, "Наверное, пропатчилось...");
});