Z3roKwq
Известный
- 290
- 154
Перебор всех идов на сервере, получение их CPed и проверять что структуры не равны nullptrВ sf есть какой нибудь аналог getAllChars() из муна?
Ну это я знаю, но на радмире этот способ не особо работаетПеребор всех идов на сервере, получение их CPed и проверять что структуры не равны nullptr
РаботаетНу это я знаю, но на радмире этот способ не особо работает
я наверное не то чето сказал, поэтому проще будет на примере, мне нужно получить позицию нпс, как это сделать?Работает
CActorPoolя наверное не то чето сказал, поэтому проще будет на примере, мне нужно получить позицию нпс, как это сделать?
Буду очень благодарен, если пример кода скинешCActorPool
CPed* aPed = CPools::GetPed(pSAMP->getPlayers()->pRemotePlayer[iPlayerID]->pPlayerData->pSAMP_Actor->ulGTAEntityHandle);
float fbarr = aPed->m_fHealth;
float fHealth = pSAMP->getPlayers()->pRemotePlayer[iPlayerID]->pPlayerData->fActorHealth;
так устроен самп. он хранит значения здоровьев в своих пулахВот этот код постоянно выводит значение 1000
C++:CPed* aPed = CPools::GetPed(pSAMP->getPlayers()->pRemotePlayer[iPlayerID]->pPlayerData->pSAMP_Actor->ulGTAEntityHandle); float fbarr = aPed->m_fHealth;
всё дело в том, как калкор хранит значения хп и брони в синхронизации. не исправитьА этот код показывает hp не точно, там постоянно меньше чем на самом деле есть, причем как то рандомно, когда hp 100 он покажет 100, но по мере уменьшения оно становится все менее точно.
C++:float fHealth = pSAMP->getPlayers()->pRemotePlayer[iPlayerID]->pPlayerData->fActorHealth;
#include <Windows.h>
#include <detours/detours.h>
#include <iostream>
static HMODULE(WINAPI* TrueLoadLibrary)(LPCWSTR lpLibFileName) = LoadLibraryW;
HMODULE WINAPI DetouredLoadLibrary(LPCWSTR lpLibFileName)
{
HMODULE res = TrueLoadLibrary(lpLibFileName);
MessageBoxW(NULL, lpLibFileName, L"Detoured!", MB_OK | MB_ICONEXCLAMATION);
return res;
}
void SetGlobalHook()
{
// Получение адреса оригинальной функции LoadLibraryW из kernel32.dll
TrueLoadLibrary = reinterpret_cast<HMODULE(WINAPI*)(LPCWSTR)>(GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "LoadLibraryW"));
// Установка хука
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourAttach(&(PVOID&)TrueLoadLibrary, DetouredLoadLibrary);
DetourTransactionCommit();
}
// Функция для удаления глобального хука
void RemoveGlobalHook()
{
// Удаление хука
DetourTransactionBegin();
DetourUpdateThread(GetCurrentThread());
DetourDetach(&(PVOID&)TrueLoadLibrary, DetouredLoadLibrary);
DetourTransactionCommit();
}
int main()
{
// Установка глобального хука
SetGlobalHook();
// Ждем нажатия клавиши перед удалением хука
std::cout << "Press any key to remove the hook..." << std::endl;
std::cin.get();
// Удаление глобального хука
RemoveGlobalHook();
return 0;
}
TrueLoadLibrary = reinterpret_cast<HMODULE(WINAPI*)(LPCWSTR)>(GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "LoadLibraryW"));
а в чем смысл? ты же в своем приложении хукаешьне работает глобально, что не так? есть такая же версия только в формате длл и безC++:#include <Windows.h> #include <detours/detours.h> #include <iostream> static HMODULE(WINAPI* TrueLoadLibrary)(LPCWSTR lpLibFileName) = LoadLibraryW; HMODULE WINAPI DetouredLoadLibrary(LPCWSTR lpLibFileName) { HMODULE res = TrueLoadLibrary(lpLibFileName); MessageBoxW(NULL, lpLibFileName, L"Detoured!", MB_OK | MB_ICONEXCLAMATION); return res; } void SetGlobalHook() { // Получение адреса оригинальной функции LoadLibraryW из kernel32.dll TrueLoadLibrary = reinterpret_cast<HMODULE(WINAPI*)(LPCWSTR)>(GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "LoadLibraryW")); // Установка хука DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourAttach(&(PVOID&)TrueLoadLibrary, DetouredLoadLibrary); DetourTransactionCommit(); } // Функция для удаления глобального хука void RemoveGlobalHook() { // Удаление хука DetourTransactionBegin(); DetourUpdateThread(GetCurrentThread()); DetourDetach(&(PVOID&)TrueLoadLibrary, DetouredLoadLibrary); DetourTransactionCommit(); } int main() { // Установка глобального хука SetGlobalHook(); // Ждем нажатия клавиши перед удалением хука std::cout << "Press any key to remove the hook..." << std::endl; std::cin.get(); // Удаление глобального хука RemoveGlobalHook(); return 0; }и все работаетC++:TrueLoadLibrary = reinterpret_cast<HMODULE(WINAPI*)(LPCWSTR)>(GetProcAddress(GetModuleHandle(TEXT("kernel32.dll")), "LoadLibraryW"));
я хочу глобально хукать функцию LoadLibraryWа в чем смысл? ты же в своем приложении хукаешь
драйвер делай тогдая хочу глобально хукать функцию LoadLibraryW