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

Gmazov

Участник
Автор темы
23
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,043
474
Ели как написал такой скрипт, по идей который должен выдавать хп если его значение меньше 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!

Gmazov

Участник
Автор темы
23
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,309
498
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
 

Gmazov

Участник
Автор темы
23
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,078
2,096
Пиши в указатель его переменной. Правильно.
Для новичка, как написать не в свою переменную, а в адрес значения
вполне могу ошибаться, но вроде так. Очнеь давно уже не кодил
C++:
reinterpret_cast<type *>(address) = value;
 

EclipsedFlow

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

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

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

Gmazov

Участник
Автор темы
23
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