Выдача хп, что не так?

ZemAmazing

Новичок
Автор темы
11
1
Ели как написал такой скрипт, по идей который должен выдавать хп если его значение меньше 160, проверив его понял что он не работает, если есть специалисты, пожалуйста подскажите и помогите понять как это исправить
C++:
#include "pch.h"

BOOL WINAPI AMZHP(HMODULE createModule)
{
    DWORD gameModule = (DWORD)GetModuleHandle(L"Aggmain.asi");
    {
        if (GetAsyncKeyState(0x47) & 0x8000)
        {
            DWORD HP = *(DWORD*)gameModule + 0x8CE098;
            if (HP < 160)
            {
                *(DWORD*)HP = 160;
            }

        }
    }
}
BOOL APIENTRY DLLMain(HMODULE hModule,
    DWORD ul_reason_for_call,
    LPVOID lpReserved
)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)AMZHP, 0, 0, 0);
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
 

EclipsedFlow

Известный
Проверенный
1,040
462
Ели как написал такой скрипт, по идей который должен выдавать хп если его значение меньше 160, проверив его понял что он не работает, если есть специалисты, пожалуйста подскажите и помогите понять как это исправить
C++:
#include "pch.h"

BOOL WINAPI AMZHP(HMODULE createModule)
{
    DWORD gameModule = (DWORD)GetModuleHandle(L"Aggmain.asi");
    {
        if (GetAsyncKeyState(0x47) & 0x8000)
        {
            DWORD HP = *(DWORD*)gameModule + 0x8CE098;
            if (HP < 160)
            {
                *(DWORD*)HP = 160;
            }

        }
    }
}
BOOL APIENTRY DLLMain(HMODULE hModule,
    DWORD ul_reason_for_call,
    LPVOID lpReserved
)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)AMZHP, 0, 0, 0);
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
C++ это не скриптовый язык как Lua. Его не свойственно называть скриптом.
C++:
#include "pch.h"

BOOL WINAPI AMZHP(HMODULE createModule)
{
    while (true)
    {
        DWORD gameModule = (DWORD)GetModuleHandle(L"Aggmain.asi");
    
        if (GetAsyncKeyState(0x47) & 0x8000)
        {
            DWORD health_addr = gameModule + 0x8CE098;
            DWORD HP = *(DWORD*)health_addr;
            if (HP < 160)
            {
                *(DWORD*)health_addr = 160;
            }   
        }
        
        Sleep(1);
    }
}
BOOL APIENTRY DLLMain(HMODULE hModule,
    DWORD ul_reason_for_call,
    LPVOID lpReserved
)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)AMZHP, 0, 0, 0);
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
 
  • Нравится
Реакции: Blasted!

ZemAmazing

Новичок
Автор темы
11
1
C++ это не скриптовый язык как Lua. Его не свойственно называть скриптом.
C++:
#include "pch.h"

BOOL WINAPI AMZHP(HMODULE createModule)
{
    while (true)
    {
        DWORD gameModule = (DWORD)GetModuleHandle(L"Aggmain.asi");
  
        if (GetAsyncKeyState(0x47) & 0x8000)
        {
            DWORD health_addr = gameModule + 0x8CE098;
            DWORD HP = *(DWORD*)health_addr;
            if (HP < 160)
            {
                *(DWORD*)health_addr = 160;
            } 
        }
      
        Sleep(1);
    }
}
BOOL APIENTRY DLLMain(HMODULE hModule,
    DWORD ul_reason_for_call,
    LPVOID lpReserved
)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)AMZHP, 0, 0, 0);
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
не работает, может я адрес не тот дал? CE выдаёт: "aggmain.asi+8CE098" или тип данных не тот?

C++:
int hp = *reinterpret_cast<float*>(*reinterpret_cast<DWORD*>(0xB6F5F0) + 0x540);
if (hp < 160)
hp  =160;
тоже не работает
 
Последнее редактирование:

F0RQU1N and

Известный
1,310
494
C++:
BOOL WINAPI AMZHP( HMODULE createModule )
{
    DWORD gameModule = (DWORD)GetModuleHandleW( L"Aggmain.asi" );
    while ( true )
    {
        if (!gameModule ) gameModule = (DWORD)GetModuleHandleW( L"Aggmain.asi" );

        if ( GetAsyncKeyState( 0x47 ) & 0x8000 )
        {
            auto* health = (int*)( gameModule + 0x8CE098 );

            if ( *health < 160 )
            {
                *health = 160;
            }
        }

        Sleep( 1 );
    }
}
BOOL APIENTRY DLLMain( HMODULE hModule,
                       DWORD ul_reason_for_call,
                       LPVOID lpReserved
)
{
    switch ( ul_reason_for_call )
    {
    case DLL_PROCESS_ATTACH:
        CreateThread( 0, 0, (LPTHREAD_START_ROUTINE)AMZHP, 0, 0, 0 );
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
try this
 

ZemAmazing

Новичок
Автор темы
11
1
C++:
BOOL WINAPI AMZHP( HMODULE createModule )
{
    DWORD gameModule = (DWORD)GetModuleHandleW( L"Aggmain.asi" );
    while ( true )
    {
        if (!gameModule ) gameModule = (DWORD)GetModuleHandleW( L"Aggmain.asi" );

        if ( GetAsyncKeyState( 0x47 ) & 0x8000 )
        {
            auto* health = (int*)( gameModule + 0x8CE098 );

            if ( *health < 160 )
            {
                *health = 160;
            }
        }

        Sleep( 1 );
    }
}
BOOL APIENTRY DLLMain( HMODULE hModule,
                       DWORD ul_reason_for_call,
                       LPVOID lpReserved
)
{
    switch ( ul_reason_for_call )
    {
    case DLL_PROCESS_ATTACH:
        CreateThread( 0, 0, (LPTHREAD_START_ROUTINE)AMZHP, 0, 0, 0 );
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
try this
does not work

Правильно. Он и не будет работать. Ты пишешь в свою переменную, а не в адрес значения хп.
Для новичка, как написать не в свою переменную, а в адрес значения
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
Пиши в указатель его переменной. Правильно.
Для новичка, как написать не в свою переменную, а в адрес значения
вполне могу ошибаться, но вроде так. Очнеь давно уже не кодил
C++:
reinterpret_cast<type *>(address) = value;
 

EclipsedFlow

Известный
Проверенный
1,040
462
Пиши в указатель его переменной. Правильно.

вполне могу ошибаться, но вроде так. Очнеь давно уже не кодил
C++:
reinterpret_cast<type *>(address) = value;
Ты привел к типу указателя, а забыл разыменовать его. По сути ты записываешь значения здоровья в адрес переменной.

C++:
*reinterpret_cast<float*>(address) = 100.f;
 
  • Нравится
Реакции: Dark_Knight

ZemAmazing

Новичок
Автор темы
11
1
Ты привел к типу указателя, а забыл разыменовать его. По сути ты записываешь значения здоровья в адрес переменной.

C++:
*reinterpret_cast<float*>(address) = 100.f;
Так?
C++:
#include "pch.h"

BOOL WINAPI AMZHP(HMODULE createModule)
{
    while (true)
    {
        DWORD gameModule = (DWORD)GetModuleHandle(L"Aggmain.asi");

        if (GetAsyncKeyState(0x47) & 0x8000)
        {
            DWORD health_addr = gameModule + 0x8CE098;
            DWORD HP = *(DWORD*)health_addr;
            if (HP < 160)
            {
                *reinterpret_cast<float*>(HP) = 160.f;
            }
        }

        Sleep(1);
    }
}
BOOL APIENTRY DLLMain(HMODULE hModule,
    DWORD ul_reason_for_call,
    LPVOID lpReserved
)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)AMZHP, 0, 0, 0);
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}

Так?
C++:
#include "pch.h"

BOOL WINAPI AMZHP(HMODULE createModule)
{
    while (true)
    {
        DWORD gameModule = (DWORD)GetModuleHandle(L"Aggmain.asi");

        if (GetAsyncKeyState(0x47) & 0x8000)
        {
            DWORD health_addr = gameModule + 0x8CE098;
            DWORD HP = *(DWORD*)health_addr;
            if (HP < 160)
            {
                *reinterpret_cast<float*>(HP) = 160.f;
            }
        }

        Sleep(1);
    }
}
BOOL APIENTRY DLLMain(HMODULE hModule,
    DWORD ul_reason_for_call,
    LPVOID lpReserved
)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)AMZHP, 0, 0, 0);
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
C++:
[CODE=cpp]#include "pch.h"



BOOL WINAPI AMZHP(HMODULE createModule)

{

    while (true)

    {

        DWORD gameModule = (DWORD)GetModuleHandle(L"Aggmain.asi");



        if (GetAsyncKeyState(0x47) & 0x8000)

        {

            DWORD health_addr = gameModule + 0x8CE098;

            DWORD HP = *(DWORD*)health_addr;

            if (HP < 160)

            {

                *reinterpret_cast<float*>(gameModule + 0x8CE098) = 160.f;

            }

        }



        Sleep(1);

    }

}

BOOL APIENTRY DLLMain(HMODULE hModule,

    DWORD ul_reason_for_call,

    LPVOID lpReserved

)

{

    switch (ul_reason_for_call)

    {

    case DLL_PROCESS_ATTACH:

        CreateThread(0, 0, (LPTHREAD_START_ROUTINE)AMZHP, 0, 0, 0);

    case DLL_THREAD_ATTACH:

    case DLL_THREAD_DETACH:

    case DLL_PROCESS_DETACH:

        break;

    }

    return TRUE;

}
или так?[/CODE]
 
Последнее редактирование:
  • Bug
Реакции: Dark_Knight