yung milonov
Известный
- 1,042
- 544
я хукаю рпс клик мап и там всё оккак получить координаты метки на карте с адекватной координатой Z?
После получения координат, надо отрендерить сцену в месте где нужно получить правильную координату Z (CStreaming::LoadScene 0x40EB70/CStreaming::LoadSceneCollision 0x40ED80), а после используя функцию (CWorld::FindGroundZFor3DCoord 0x5696C0/CWorld::FindGroundZForCoord 0x569660) получить правильное значение.как получить координаты метки на карте с адекватной координатой Z?
Вариант конечно хороший, но есть всякие пидорасы, которую эту папку меняютон и так по стандарту в сф, а так:
C++:std::filesystem::current_path();
Лучше через peb -> ProcessParameters -> ImagePathNameВариант конечно хороший, но есть всякие пидорасы, которую эту папку меняют
Поэтому лучше GetModuleFilename + GetModuleHandle(0)
В смысле папку поменять?Вариант конечно хороший, но есть всякие пидорасы, которую эту папку меняют
Поэтому лучше GetModuleFilename + GetModuleHandle(0)
всмысле текущий путь может меняться. Это даже игра делает во время загрузкиВ смысле папку поменять?
То что предложил даркпиксель x86Как получить путь к папке c игрой?
PPEB peb = (PPEB)__readfsdword(0x30);
std::wcout << peb->ProcessParameters->ImagePathName.Buffer;
Куда выводит? код? многобайтовая кодировка? что читаешь? может там и записаны иероглифыПри чтении строк библиотекой fstream, плагин СФ выводит иероглифы, как исправить?
Пробовал в консоль и в чат выводить, многобайтовая кодировка стоит, читаю txt по строкам анг. буквы и цифры.Куда выводит? код? многобайтовая кодировка? что читаешь? может там и записаны иероглифы
Код, поаж, мб флаги там неправильныеПробовал в консоль и в чат выводить, многобайтовая кодировка стоит, читаю txt по строкам анг. буквы и цифры.
Ну хотябы озы c++ поучиПри компиляции вот такого кода ( SFPlugin )
cod:#include <Windows.h> #include "main.h" SAMPFUNCS *SF = new SAMPFUNCS(); void __stdcall mainloop() void CALLBACK cmd_show_info_player(std::string param); { if (param.empty()) return; int i = std::stoi(param); char buf[128]; stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[i]; if (!pPlayer) return; sprintf(buf, "Nickname - %s, Ping - %d, Score - %d, isNPC - %d, AFKState - %d", pPlayer->szPlayerName, pPlayer->iPing, pPlayer->iScore, pPlayer->iIsNPC, pPlayer->pPlayerData->iAFKState == 2); SF->getSAMP()->getChat()->AddChatMessage(-1, buf); }; { static bool initialized = false; if (!initialized) { if (GAME && GAME->GetSystemState() == eSystemState::GS_PLAYING_GAME && SF->getSAMP()->IsInitialized()) { initialized = true; SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "SAMPFUNCS Plugin loaded."); SF->getSAMP()->registerChatCommand("showinfo", cmd_show_info_player); } } } BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved) { if (dwReasonForCall == DLL_PROCESS_ATTACH) SF->initPlugin(mainloop, hModule); return TRUE; }
Выдаёт такую ошибку:
1>------ Сборка начата: проект: SFPlugin, Конфигурация: Release Win32 ------
1> main.cpp
1>main.cpp(9): error C2144: синтаксическая ошибка: перед "void" требуется ";"
1>main.cpp(10): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>main.cpp(31): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
У тебя явно написано где ошибка, чего не хватает, и почему не компилируетсяПри компиляции вот такого кода ( SFPlugin )
cod:#include <Windows.h> #include "main.h" SAMPFUNCS *SF = new SAMPFUNCS(); void __stdcall mainloop() void CALLBACK cmd_show_info_player(std::string param); { if (param.empty()) return; int i = std::stoi(param); char buf[128]; stRemotePlayer *pPlayer = SF->getSAMP()->getPlayers()->pRemotePlayer[i]; if (!pPlayer) return; sprintf(buf, "Nickname - %s, Ping - %d, Score - %d, isNPC - %d, AFKState - %d", pPlayer->szPlayerName, pPlayer->iPing, pPlayer->iScore, pPlayer->iIsNPC, pPlayer->pPlayerData->iAFKState == 2); SF->getSAMP()->getChat()->AddChatMessage(-1, buf); }; { static bool initialized = false; if (!initialized) { if (GAME && GAME->GetSystemState() == eSystemState::GS_PLAYING_GAME && SF->getSAMP()->IsInitialized()) { initialized = true; SF->getSAMP()->getChat()->AddChatMessage(D3DCOLOR_XRGB(0, 0xAA, 0), "SAMPFUNCS Plugin loaded."); SF->getSAMP()->registerChatCommand("showinfo", cmd_show_info_player); } } } BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID lpReserved) { if (dwReasonForCall == DLL_PROCESS_ATTACH) SF->initPlugin(mainloop, hModule); return TRUE; }
Выдаёт такую ошибку:
1>------ Сборка начата: проект: SFPlugin, Конфигурация: Release Win32 ------
1> main.cpp
1>main.cpp(9): error C2144: синтаксическая ошибка: перед "void" требуется ";"
1>main.cpp(10): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
1>main.cpp(31): error C2447: {: отсутствует заголовок функции (возможно, используется формальный список старого типа)
========== Сборка: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========