Disabled Client Error 28_3 and Client Error 28_4 100% Working and undetected
Tested and working fine, around more or less 35 minutes ingame, no disconnected from server and no more client errors received. Using this you are free to modified the weapon range, recoil, reload, or do onehitkill, weapon binder, and etc., without getting any client error.
credits:
@Biesi - for the source.
@yaago - for the latest offset addy
@HardHaxing - for starting/posting the thread of 28_4, so that it gives me the courage to conduct a test on the said client error.
Code:
#define dwBypassWeaponHack 0x000000; //need to update it
#define ADDR_WeaponMgrPointer 0x000000; //need to update it
typedef struct _WEAPON
{
unsigned char Data[0xC3C0];
} WEAPON, *PWEAPON;
PWEAPON pOldWeapons[1600];
PWEAPON GetWeaponByIndex(int index)
{
return pOldWeapons[index];
}
void CreateBackup(DWORD dwCShell, DWORD dwWeaponMgr)
{
DWORD pWeaponMgr = *(DWORD*)(dwCShell + dwWeaponMgr );
for(int i = 0; i < 1600; i++)
{
DWORD dwWeapon = *(DWORD*)(pWeaponMgr + (4 * i));
if (dwWeapon)
{
pOldWeapons[i] = new WEAPON;
memcpy(pOldWeapons[i], (void*)(dwWeapon), sizeof(WEAPON));
}
}
}
how to use:
void clientkiller()
{
CreateBackup(CShellModule, ADDR_WeaponMgrPointer)
DWORD dwOldProtect;
VirtualProtect((void*)(dwBypassWeaponHack + 0x1), sizeof(DWORD), PAGE_EXECUTE_READWRITE, &dwOldProtect);
*(DWORD*)(dwBypassWeaponHack + 0x1) = (DWORD)GetWeaponByIndex - dwBypassWeaponHack - 5;
VirtualProtect((void*)(dwBypassWeaponHack + 0x1), sizeof(DWORD), dwOldProtect, NULL);
}
@Biesi - for the source.
@yaago - for the latest offset addy
@HardHaxing - for starting/posting the thread of 28_4, so that it gives me the courage to conduct a test on the said client error.




