100hp bar при 160hp персонажа

фaрик

Известный
Автор темы
163
25
qq, давно видел такую штуку, сейчас найти нигде не получается, мне нужна адаптированная короткая полоска под 160hp
 
Решение
держи, написал быстренько
сурс:
C++:
#include <cstdint>
#include <windows.h>

template<typename T>
void write_memory(std::uintptr_t addr, const T value) {
    DWORD vp;
    VirtualProtect(reinterpret_cast<void *>(addr), sizeof(T), PAGE_EXECUTE_READWRITE, &vp);
    *reinterpret_cast<T *>(addr) = value;
    VirtualProtect(reinterpret_cast<void *>(addr), sizeof(T), vp, nullptr);
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID) {
    static constexpr auto ratio = 62.5f;
    if (dwReasonForCall == DLL_PROCESS_ATTACH) {
        write_memory<std::uintptr_t>(0x5892FF + 2, reinterpret_cast<std::uintptr_t>(&ratio));
    } else if (dwReasonForCall == DLL_PROCESS_DETACH) {
        write_memory<std::uintptr_t>(0x5892FF + 2...

sc6ut

неизвестный
Модератор
382
1,075
держи, написал быстренько
сурс:
C++:
#include <cstdint>
#include <windows.h>

template<typename T>
void write_memory(std::uintptr_t addr, const T value) {
    DWORD vp;
    VirtualProtect(reinterpret_cast<void *>(addr), sizeof(T), PAGE_EXECUTE_READWRITE, &vp);
    *reinterpret_cast<T *>(addr) = value;
    VirtualProtect(reinterpret_cast<void *>(addr), sizeof(T), vp, nullptr);
}

BOOL APIENTRY DllMain(HMODULE hModule, DWORD dwReasonForCall, LPVOID) {
    static constexpr auto ratio = 62.5f;
    if (dwReasonForCall == DLL_PROCESS_ATTACH) {
        write_memory<std::uintptr_t>(0x5892FF + 2, reinterpret_cast<std::uintptr_t>(&ratio));
    } else if (dwReasonForCall == DLL_PROCESS_DETACH) {
        write_memory<std::uintptr_t>(0x5892FF + 2, 0x858628);
    }
    return TRUE;
}
 

Вложения

  • adapted_health.asi
    8 KB · Просмотры: 12
  • Нравится
  • Вау
Реакции: фaрик, rvng и ARMOR