ab5c11f876
AMXx Mods may now patch/retreive memory of several varieties directly from the game .dll, mod .dll, or can go free and patch/retreive any peice of memory. I salute you DS.
73 lines
2.2 KiB
C++
73 lines
2.2 KiB
C++
#include "MemWrite.h"
|
|
|
|
#define NATIVE_PATCH_BASEADDRESS PickBaseAddress(params[2])
|
|
#define NATIVE_PATCH_ADDRESS params[1]
|
|
#define NATIVE_PATCH_FLAGS params[4]
|
|
#define NATIVE_PATCH_SIGNED params[5]
|
|
#define NATIVE_PATCH_PARAMETER params[3]
|
|
|
|
#define NATIVE_PATCH_MEMORY NATIVE_PATCH_BASEADDRESS, NATIVE_PATCH_ADDRESS
|
|
|
|
static cell AMX_NATIVE_CALL memhack_set_char(AMX *amx, cell *params)
|
|
{
|
|
if(NATIVE_PATCH_SIGNED)
|
|
{
|
|
return (cell)UTIL_PatchMemory_Byte(NATIVE_PATCH_MEMORY, (char)(NATIVE_PATCH_PARAMETER), NATIVE_PATCH_FLAGS);
|
|
}
|
|
else
|
|
{
|
|
return (cell)UTIL_PatchMemory_UnsignedByte(NATIVE_PATCH_MEMORY, (unsigned char)(NATIVE_PATCH_PARAMETER), NATIVE_PATCH_FLAGS);
|
|
}
|
|
}
|
|
|
|
static cell AMX_NATIVE_CALL memhack_set_short(AMX *amx, cell *params)
|
|
{
|
|
if(NATIVE_PATCH_SIGNED)
|
|
{
|
|
return (cell)UTIL_PatchMemory_Word(NATIVE_PATCH_MEMORY, (short)(NATIVE_PATCH_PARAMETER), NATIVE_PATCH_FLAGS);
|
|
}
|
|
else
|
|
{
|
|
return (cell)UTIL_PatchMemory_UnsignedWord(NATIVE_PATCH_MEMORY, (unsigned short)(NATIVE_PATCH_PARAMETER), NATIVE_PATCH_FLAGS);
|
|
}
|
|
}
|
|
|
|
static cell AMX_NATIVE_CALL memhack_set_long(AMX *amx, cell *params)
|
|
{
|
|
if(NATIVE_PATCH_SIGNED)
|
|
{
|
|
return (cell)UTIL_PatchMemory_Byte(NATIVE_PATCH_MEMORY, (long)(NATIVE_PATCH_PARAMETER), NATIVE_PATCH_FLAGS);
|
|
}
|
|
else
|
|
{
|
|
return (cell)UTIL_PatchMemory_UnsignedByte(NATIVE_PATCH_MEMORY, (unsigned long)(NATIVE_PATCH_PARAMETER), NATIVE_PATCH_FLAGS);
|
|
}
|
|
}
|
|
|
|
static cell AMX_NATIVE_CALL memhack_set_quad(AMX *amx, cell *params)
|
|
{
|
|
return (cell)UTIL_PatchMemory_Qword(NATIVE_PATCH_MEMORY, (long long)(NATIVE_PATCH_PARAMETER), NATIVE_PATCH_FLAGS);
|
|
}
|
|
|
|
static cell AMX_NATIVE_CALL memhack_set_float(AMX *amx, cell *params)
|
|
{
|
|
return (cell)UTIL_PatchMemory_Float(NATIVE_PATCH_MEMORY, amx_ctof(NATIVE_PATCH_PARAMETER), NATIVE_PATCH_FLAGS);
|
|
}
|
|
|
|
static cell AMX_NATIVE_CALL memhack_set_pointer(AMX *amx, cell *params)
|
|
{
|
|
return (cell)UTIL_PatchMemory_Pointer(NATIVE_PATCH_MEMORY, (maddress)(NATIVE_PATCH_PARAMETER), NATIVE_PATCH_FLAGS);
|
|
}
|
|
|
|
AMX_NATIVE_INFO write_natives[] = {
|
|
{ "memhack_set_char", memhack_set_char },
|
|
{ "memhack_set_short", memhack_set_short },
|
|
{ "memhack_set_long", memhack_set_long },
|
|
|
|
{ "memhack_set_float", memhack_set_float },
|
|
{ "memhack_set_quad", memhack_set_quad },
|
|
{ "memhack_set_pointer", memhack_set_pointer },
|
|
{ NULL, NULL }
|
|
};
|
|
|