Finally done!!! I finished what DS started:
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.
This commit is contained in:
72
dlls/MemHack/MemWriteNatives.cpp
Normal file
72
dlls/MemHack/MemWriteNatives.cpp
Normal file
@ -0,0 +1,72 @@
|
||||
#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 }
|
||||
};
|
||||
|
Reference in New Issue
Block a user