void PatchInJump(int Address, int Destination){
int FuncBytes[4];
Destination = *(int*)Destination;
FuncBytes[0] = 0x3D600000 + ((Destination >> 16) & 0xFFFF);
if(Destination & 0x8000) FuncBytes[0] += 1;
FuncBytes[1] = 0x396B0000 + (Destination & 0xFFFF);
FuncBytes[2] = 0x7D6903A6;
FuncBytes[3] = 0x4E800420;
Memcpy((void*)Address, FuncBytes, 4*4);
}
#define SL_ConvertToString(StringValue) ((const char*(*)(short))&ParseAddr(0x3E4F04))(Str)
void Scr_NotifyHook(int Entity, short StringValue, unsigned int Parameters){
const char* NotifyId = SL_ConvertToString(StringValue);
if(!strcmp(NotifyId, "weapon_fired")) iPrintln("Ethernet on your forhead");
((void(*)(int, unsigned int, short, unsigned int))&ParseAddr(0x3EC274))(*(int*)Entity, 0, StringValue, Parameters); //Scr_NotifyNum
}
PatchInJump(0x36AAE8, (int)Scr_NotifyHook);
Copyright © 2025, NextGenUpdate.
All Rights Reserved.