Here ye go
Credits - Mango_Knife
Credits - Mango_Knife
//Mw3 RPC Class
public static class RPC
{
#region RPC
public static void EnableRPC()
{
PS3.SetMemory(0x523B10, new byte[2175]);
PS3.SetMemory(0x18BE6C, new byte[] { 0x60, 0x00, 0x00, 0x00 });
PS3.SetMemory(0x3BC9CC, new byte[] { 0x60, 0x00, 0x00, 0x00 });
PS3.SetMemory(0x18BE74, new byte[] { 0x48, 0x00, 0x00, 0x68 });
PS3.SetMemory(0x1DB1244, new byte[4]);
PS3.SetMemory(0x114AE64, new byte[4]);
PS3.SetMemory(0x3BC9E4, new byte[] { 0x41, 0x82, 0x02, 0x20, 0x3D, 0x00, 0x00, 0x52, 0x80, 0x68, 0x3B, 0x10, 0x80, 0x88, 0x3B, 0x14, 0x80, 0xA8, 0x3B, 0x18, 0x80, 0xC8, 0x3B, 0x1C, 0x80, 0xE8, 0x3B, 0x20, 0x39, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x1D, 0x3C, 0x80, 0x01, 0x15, 0x90, 0x64, 0xAE, 0x64, 0x38, 0x80, 0x00, 0x00, 0x3C, 0x60, 0x01, 0xDB, 0x90, 0x83, 0x12, 0x44, 0x48, 0x00, 0x01, 0xE8, 0x4E, 0x80, 0x00, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00 });
}
public static void GetMemoryR(uint Address, ref byte[] Bytes)
{
PS3.GetMemory(Address, Bytes);
}
public static uint str_pointer(string str)
{
uint addr = 0x523B30;
byte[] check = new byte[1];
uint i;
for (i = 0; i < 5; i++)
{
GetMemoryR(addr, ref check);
if (check[0] == 0x00)
break;
if (i == 4)
{
i = 0; break;
}
}
addr = (0x523B30 + (i * 0x68));
PS3.SetMemory(addr, new byte[0x68]);
PS3.SetMemory(addr, Encoding.UTF8.GetBytes(str));
return addr;
}
public static void CallFunction(uint func_addr, uint param1 = 0, uint param2 = 0, uint param3 = 0, uint param4 = 0, uint param5 = 0)
{
byte[] par1 = BitConverter.GetBytes(param1);
byte[] par2 = BitConverter.GetBytes(param2);
byte[] par3 = BitConverter.GetBytes(param3);
byte[] par4 = BitConverter.GetBytes(param4);
byte[] par5 = BitConverter.GetBytes(param5);
Array.Reverse(par1);
Array.Reverse(par2);
Array.Reverse(par3);
Array.Reverse(par4);
Array.Reverse(par5);
PS3.SetMemory(0x523B10, par1);
PS3.SetMemory(0x523B14, par2);
PS3.SetMemory(0x523B18, par3);
PS3.SetMemory(0x523B1C, par4);
PS3.SetMemory(0x523B20, par5);
PS3.SetMemory(0x3BCA04, MakeBl(0x3BCA04, func_addr));
PS3.SetMemory(0x1DB1244, new byte[] { 0x00, 0x00, 0x00, 0x01 });
}
public static uint GetFuncReturn()
{
byte[] ret = new byte[4];
GetMemoryR(0x114AE64, ref ret);
Array.Reverse(ret);
return BitConverter.ToUInt32(ret, 0);
}
public static byte[] MakeBl(uint callAddr, uint addrToBlTo)
{
byte[] instruction = new byte[4];
uint addr_t = (uint)(((int)addrToBlTo - (int)callAddr) + 1);
if ((int)addrToBlTo > (int)callAddr) instruction[3] = 0x48;
else
{
instruction[3] = 0x4B; addr_t = (uint)(0x1000000 - ((int)callAddr - (int)addrToBlTo) + 1);
}
byte[] addr = BitConverter.GetBytes(addr_t);
for (int i = 0; i < 3; i++)
{
instruction = addr;
}
Array.Reverse(instruction);
return instruction;
}
#endregion
#region Cbuf_AddText
public static void CBuf_AddText(int client, string command)
{
CallFunction(Addresses.CBuf_AddText, (uint) client, str_pointer(command),0,0,0);
}
#endregion
#region SV_GameSendServerCommand
public static void SV_GameSendServerCommand(int client, string command)
{
CallFunction(Addresses.SV_GameSendServerCommand, (uint)client, 0, str_pointer(command), 0, 0);
}
#endregion
#region iPrintln
public static void iPrintln(int client, string Text)
{
SV_GameSendServerCommand(client, "f \"" + Text + "\"");
Thread.Sleep(20);
}
#endregion
#region iPrintlnBold
public static void iPrintlnBold(int client, string Text)
{
SV_GameSendServerCommand(client, "c \"" + Text + "\"");
Thread.Sleep(20);
}
#endregion
#region Set_ClientDvar
public static void Set_ClientDvar(int client, string Text)
{
SV_GameSendServerCommand(client, "q " + Text);
Thread.Sleep(20);
}
#endregion
#region Fov
public static void Fov(int client, string Text)
{
SV_GameSendServerCommand(client, "q \"cg_fov \"" + Text + "\"");
Thread.Sleep(20);
}
#endregion
#region Vision
public static void Vision(int client, string Text)
{
SV_GameSendServerCommand(client, "J \"" + Text + "\"");
Thread.Sleep(20);
}
#endregion
#region KickWithError
public static void Kick(int client, string Text)
{
SV_GameSendServerCommand(client, "r \"" + Text + "\"");
Thread.Sleep(20);
}
#endregion
#region GiveWeapon
public static void GiveWeapon(int client, int weapon,int akimbo)
{
CallFunction(Addresses.G_GivePlayerWeapon, (uint)G_ClientFunction(client), (uint)weapon, 0);
CallFunction(Addresses.Add_Ammo, (uint)(Addresses.G_Entity + (client * 0x280)), (uint)weapon, 0, 9999, 1);
}
#endregion
#region G_ClientFunction
public static uint G_ClientFunction(int client)
{
return Addresses.G_Client + ((uint)client * 0x3980);
}
#endregion
#region SetModel
public static void SetModel(int client, string model)
{
CallFunction(Addresses.G_SetModel, (uint)(Offsets.Addresses.G_Entity + (client * 640)), str_pointer(model), 0, 0, 0);
}
#endregion
#region Cmd_ExecuteSingleCommand
public static void Cmd_ExecuteSingleCommand(uint client, string command)
{
CallFunction(Addresses.Cmd_ExecuteSingleCommand, (uint)client, str_pointer(command), 0, 0, 0);
}
#endregion
}
#region Addresses
public static class Addresses
{
public static uint
G_Client = 0x110A280,
g_client = 0x110A280,
G_ClientIndex = 0x3980,
EntityIndex = 0x280,
G_Entity = 0xFCA280,
MapBrushModel = 0x7F80,
BG_GetPerkIndexForName = 0x210B0,
BG_GetNumWeapons = 0x3CFBC,
BG_FindWeaponIndexForName = 0x3CFD0,
BG_GetWeaponIndexForName = 0x3D434,
BG_GetViewModelWeaponIndex = 0x3D7D8,
Cmd_ExecuteSingleCommand = 0x1DB240,
BG_WeaponFireRecoil = 0x3FBD0,
CG_FireWeapon = 0xBE498,
Key_IsDown = 0xD1CD8,
Key_StringToKeynum = 0xD1D18,
Key_IsValidGamePadChar = 0xD1E64,
Key_KeyNumToString = 0xD1EA4,
Key_Unbind_f = 0xD2368,
Key_Bind_f = 0xD247C,
BG_TakePlayerWeapon = 0x1C409C,
G_GivePlayerWeapon = 0x1C3034,
SV_GameSendServerCommand = 0x228FA8,
SV_GetConfigString = 0x22A4A8,
SV_SetConfigString = 0x22A208,
va = 0x299490,
G_SetModel = 0x1BEF5C,
G_LocalizedStringIndex = 0x1BE6CC,
G_MaterialIndex = 0x1BE744,
G_ModelIndex = 0x1BE7A8,
G_ModelName = 0x1BE8A0,
Add_Ammo = 0x18A29C,
PlayerCmd_SetPerk = 0x17EBE8,
G_Damage = 0x183E18,
G_RadiusDamage = 0x185600,
G_GetClientScore = 0x18EA74,
G_GetClientDeaths = 0x18EA98,
Cmd_AddCommandInternal = 0x1DC4FC,
CBuf_AddText /*(int localClientNum, const char *text)*/ = 0x001DB240,
SV_SendDisconnect /*(client_s *client, int state, const char *reason)*/ = 0x0022472C,
SV_SendClientGameState /*(client_s *client)*/ = 0x002284F8,
SV_KickClient /*(client_s *cl, char *playerName, int maxPlayerNameLen)*/ = 0x00223BD0,
G_CallSpawnEntity /*(gentity_s *ent)*/ = 0x001BA730,
Player_Die /*(unsigned int *self, unsigned int *inflictor, unsigned int *attacker, int damage, int meansOfDeath, int iWeapon, const float *vDir, unsigned int hitLoc, int psTimeOffset)*/ = 0x00183748,
SV_DropClient /*(client_s *drop, const char *reason, bool tellThem)*/ = 0x002249FC,
SV_SendServerCommand /*(client_s *,svscmd_type,char const *,...)*/ = 0x0022CEBC,
Scr_Notify /*(gentity_s *ent, unsigned __int16 stringValue, unsigned int paramcount)*/ = 0x001BB1B0,
Sv_SetGametype /*(void)*/ = 0x00229C1C,
Sv_Maprestart /*(int fast_restart)*/ = 0x00223774,
sv_maprestart_f = 0x00223B20,
sv_spawnsever /*(const char *server)*/ = 0x0022ADF8,
sv_map_f = 0x002235A0,
sv_matchend /*(void)*/ = 0x0022F7A8,
R_AddCmdDrawText /*(const char *text, int maxChars, void *font, float x, float y, float xScale, float yScale, float rotation, const float *color, int style)*/ = 0x00393640,
R_RegisterFont /*(char* asset, int imagetrack)*/ /*(const char *name, int imageTrack)*/ = 0x003808B8,
R_AddCmdDrawStretchPic /*(float x, float y, float w, float h, float xScale, float yScale, float xay, float yay, const float *color, int material)*/ = 0x00392D78,
CL_DrawTextHook /*(const char *text, int maxChars, void *font, float x, float y, float xScale, float yScale, const float *color, int style)*/ = 0x000D93A8,
R_AddCmdDrawTextWithEffects /*(char const *,int,Font_s *,float,float,float,float,float,float const * const,int,float const * const,Material *,Material *,int,int,int,int)*/ = 0x003937C0,
CG_BoldGameMessage /*(int LocalClientNum, const char *Message)*/ = 0x0007A5C8,
UI_FillRectPhysical /*(float x, float y, float width, float height, const float *color)*/ = 0x0023A810,
UI_DrawLoadBar /*(ScreenPlacement *scrPlace, float x, float y, float w, float h, int horzAlign, int vertAlign, const float *color, Material *material)*/ = 0x0023A730,
Scr_MakeGameMessage /*(int iClientNum, const char *pszCmd)*/ = 0x001B07F0,
Scr_ConstructMessageString /*(int firstParmIndex, int lastParmIndex, const char *errorContext, char *string, unsigned int stringLimit)*/ = 0x001B04F4,
R_NormalizedTextScale /*(Font_s *font, float scale)*/ = 0x003808F0,
TeleportPlayer /*(gentity_s *player, float *origin, float *angles)*/ = 0x00191B00,
CL_DrawText /*(ScreenPlacement *scrPlace, const char *text, int maxChars, Font_s *font, float x, float y, int horzAlign, int vertAlign, float xScale, float yScale, const float *color, int style)*/ = 0x000D9490,
CL_DrawTextRotate /*(ScreenPlacement *scrPlace, const char *text, int maxChars, Font_s *font, float x, float y, float rotation, int horzAlign, int vertAlign, float xScale, float yScale, const float *color, int style)*/ = 0x000D9554,
SV_GameDropClient /*(int clientNum, const char *reason)*/ = 0x00229020,
Dvar_GetBool /*(const char *dvarName)*/ = 0x00291060,
Dvar_GetInt /*(const char *dvarName)*/ = 0x002910DC,
Dvar_GetFloat /*(const char *dvarName)*/ = 0x00291148,
Dvar_RegisterBool /*(const char *dvarName, bool value, unsigned __int16 flags, const char *description)*/ = 0x002933F0,
Dvar_IsValidName /*(const char *dvarName)*/ = 0x0029019C,
Material_RegisterHandle /*(const char *name, int imageTrack)*/ = 0x0038B044,
CL_RegisterFont /*(const char *fontName, int imageTrack)*/ = 0x000D9734,
SetClientViewAngle /*(gentity_s *ent, const float *angle)*/ = 0x001767E0,
R_RegisterDvars /*(void)*/ = 0x0037E420,
PlayerCmd_SetClientDvar /*(scr_entref_t entref)*/ = 0x0017CB4C,
Jump_RegisterDvars /*(void)*/ = 0x00018E20,
AimTarget_RegisterDvars = 0x00012098,
G_FreeEntity /*(gentity_s *ed)*/ = 0x001C0840,
G_EntUnlink /*(gentity_s *ent)*/ = 0x001C4A5C,
SV_DObjGetTree /*(gentity_s *ent)*/ = 0x00229A68,
BG_GetEntityTypeName /*(const int eType)*/ = 0x0001D1F0,
CL_GetClientState /*(int localClientNum, uiClientState_s *state)*/ = 0x000E26A8,
CL_GetConfigString /*(int localClientNum, int configStringIndex)*/ = 0x000C5E7C,
Info_ValueForKey /*(const char *s, const char *key)*/ = 0x00299604,
Scr_GetInt /*(unsigned int index)*/ = 0x002201C4,
ClientSpawn /*(gentity_s *ent, const float *spawn_origin, const float *spawn_angles)*/ = 0x00177468,
Sv_ClientCommand /*(client_s *cl, msg_t *msg)*/ = 0x00228178,
Sv_ExecuteClientMessage /*(client_s *cl, msg_t *msg)*/ = 0x00228B50,
Sv_ExecuteClientCommand /*(client_s *cl, const char *s, int clientOK)*/ = 0x00182DEC,
ClientCommand /*(int clientNum)*/ = 0x00182440,
CalculateRanks /*(void)*/ = 0x0019031C,
ClientScr_SetScore /*(gclient_s *pSelf, client_fields_s *pField)*/ = 0x00176150,
ClientScr_SetMaxHealth /*(gclient_s *pSelf, client_fields_s *pField)*/ = 0x00176094,
Sv_ReceiveStats /*(netadr_t from, msg_t *msg)*/ = 0x002244E0,
ClientConnect /*(int clientNum, unsigned __int16 scriptPersId)*/ = 0x001771A0,
Sv_DirectConnect /*(netadr_t from)*/ = 0x00255BB4,
Sv_SetConfigstring /*(int index, const char *val)*/ = 0x0022A208,
Sv_AddServerCommand /*(client_s *client, svscmd_type type, const char *cmd)*/ = 0x0022CBA0,
IntermissionClientEndFrame /*(gentity_s *ent)*/ = 0x001745F8,
memset = 0x0049B928,
str_pointer = 0x523b30,
g_gametype = 0x8360d5;
}
#endregion
public static class RPC
{
#region RPC
public static void EnableRPC()
{
PS3.SetMemory(0x523B10, new byte[2175]);
PS3.SetMemory(0x18BE6C, new byte[] { 0x60, 0x00, 0x00, 0x00 });
PS3.SetMemory(0x3BC9CC, new byte[] { 0x60, 0x00, 0x00, 0x00 });
PS3.SetMemory(0x18BE74, new byte[] { 0x48, 0x00, 0x00, 0x68 });
PS3.SetMemory(0x1DB1244, new byte[4]);
PS3.SetMemory(0x114AE64, new byte[4]);
PS3.SetMemory(0x3BC9E4, new byte[] { 0x41, 0x82, 0x02, 0x20, 0x3D, 0x00, 0x00, 0x52, 0x80, 0x68, 0x3B, 0x10, 0x80, 0x88, 0x3B, 0x14, 0x80, 0xA8, 0x3B, 0x18, 0x80, 0xC8, 0x3B, 0x1C, 0x80, 0xE8, 0x3B, 0x20, 0x39, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x1D, 0x3C, 0x80, 0x01, 0x15, 0x90, 0x64, 0xAE, 0x64, 0x38, 0x80, 0x00, 0x00, 0x3C, 0x60, 0x01, 0xDB, 0x90, 0x83, 0x12, 0x44, 0x48, 0x00, 0x01, 0xE8, 0x4E, 0x80, 0x00, 0x20, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00 });
}
public static void GetMemoryR(uint Address, ref byte[] Bytes)
{
PS3.GetMemory(Address, Bytes);
}
public static uint str_pointer(string str)
{
uint addr = 0x523B30;
byte[] check = new byte[1];
uint i;
for (i = 0; i < 5; i++)
{
GetMemoryR(addr, ref check);
if (check[0] == 0x00)
break;
if (i == 4)
{
i = 0; break;
}
}
addr = (0x523B30 + (i * 0x68));
PS3.SetMemory(addr, new byte[0x68]);
PS3.SetMemory(addr, Encoding.UTF8.GetBytes(str));
return addr;
}
public static void CallFunction(uint func_addr, uint param1 = 0, uint param2 = 0, uint param3 = 0, uint param4 = 0, uint param5 = 0)
{
byte[] par1 = BitConverter.GetBytes(param1);
byte[] par2 = BitConverter.GetBytes(param2);
byte[] par3 = BitConverter.GetBytes(param3);
byte[] par4 = BitConverter.GetBytes(param4);
byte[] par5 = BitConverter.GetBytes(param5);
Array.Reverse(par1);
Array.Reverse(par2);
Array.Reverse(par3);
Array.Reverse(par4);
Array.Reverse(par5);
PS3.SetMemory(0x523B10, par1);
PS3.SetMemory(0x523B14, par2);
PS3.SetMemory(0x523B18, par3);
PS3.SetMemory(0x523B1C, par4);
PS3.SetMemory(0x523B20, par5);
PS3.SetMemory(0x3BCA04, MakeBl(0x3BCA04, func_addr));
PS3.SetMemory(0x1DB1244, new byte[] { 0x00, 0x00, 0x00, 0x01 });
}
public static uint GetFuncReturn()
{
byte[] ret = new byte[4];
GetMemoryR(0x114AE64, ref ret);
Array.Reverse(ret);
return BitConverter.ToUInt32(ret, 0);
}
public static byte[] MakeBl(uint callAddr, uint addrToBlTo)
{
byte[] instruction = new byte[4];
uint addr_t = (uint)(((int)addrToBlTo - (int)callAddr) + 1);
if ((int)addrToBlTo > (int)callAddr) instruction[3] = 0x48;
else
{
instruction[3] = 0x4B; addr_t = (uint)(0x1000000 - ((int)callAddr - (int)addrToBlTo) + 1);
}
byte[] addr = BitConverter.GetBytes(addr_t);
for (int i = 0; i < 3; i++)
{
instruction = addr;
}
Array.Reverse(instruction);
return instruction;
}
#endregion
#region Cbuf_AddText
public static void CBuf_AddText(int client, string command)
{
CallFunction(Addresses.CBuf_AddText, (uint) client, str_pointer(command),0,0,0);
}
#endregion
#region SV_GameSendServerCommand
public static void SV_GameSendServerCommand(int client, string command)
{
CallFunction(Addresses.SV_GameSendServerCommand, (uint)client, 0, str_pointer(command), 0, 0);
}
#endregion
#region iPrintln
public static void iPrintln(int client, string Text)
{
SV_GameSendServerCommand(client, "f \"" + Text + "\"");
Thread.Sleep(20);
}
#endregion
#region iPrintlnBold
public static void iPrintlnBold(int client, string Text)
{
SV_GameSendServerCommand(client, "c \"" + Text + "\"");
Thread.Sleep(20);
}
#endregion
#region Set_ClientDvar
public static void Set_ClientDvar(int client, string Text)
{
SV_GameSendServerCommand(client, "q " + Text);
Thread.Sleep(20);
}
#endregion
#region Fov
public static void Fov(int client, string Text)
{
SV_GameSendServerCommand(client, "q \"cg_fov \"" + Text + "\"");
Thread.Sleep(20);
}
#endregion
#region Vision
public static void Vision(int client, string Text)
{
SV_GameSendServerCommand(client, "J \"" + Text + "\"");
Thread.Sleep(20);
}
#endregion
#region KickWithError
public static void Kick(int client, string Text)
{
SV_GameSendServerCommand(client, "r \"" + Text + "\"");
Thread.Sleep(20);
}
#endregion
#region GiveWeapon
public static void GiveWeapon(int client, int weapon,int akimbo)
{
CallFunction(Addresses.G_GivePlayerWeapon, (uint)G_ClientFunction(client), (uint)weapon, 0);
CallFunction(Addresses.Add_Ammo, (uint)(Addresses.G_Entity + (client * 0x280)), (uint)weapon, 0, 9999, 1);
}
#endregion
#region G_ClientFunction
public static uint G_ClientFunction(int client)
{
return Addresses.G_Client + ((uint)client * 0x3980);
}
#endregion
#region SetModel
public static void SetModel(int client, string model)
{
CallFunction(Addresses.G_SetModel, (uint)(Offsets.Addresses.G_Entity + (client * 640)), str_pointer(model), 0, 0, 0);
}
#endregion
#region Cmd_ExecuteSingleCommand
public static void Cmd_ExecuteSingleCommand(uint client, string command)
{
CallFunction(Addresses.Cmd_ExecuteSingleCommand, (uint)client, str_pointer(command), 0, 0, 0);
}
#endregion
}
#region Addresses
public static class Addresses
{
public static uint
G_Client = 0x110A280,
g_client = 0x110A280,
G_ClientIndex = 0x3980,
EntityIndex = 0x280,
G_Entity = 0xFCA280,
MapBrushModel = 0x7F80,
BG_GetPerkIndexForName = 0x210B0,
BG_GetNumWeapons = 0x3CFBC,
BG_FindWeaponIndexForName = 0x3CFD0,
BG_GetWeaponIndexForName = 0x3D434,
BG_GetViewModelWeaponIndex = 0x3D7D8,
Cmd_ExecuteSingleCommand = 0x1DB240,
BG_WeaponFireRecoil = 0x3FBD0,
CG_FireWeapon = 0xBE498,
Key_IsDown = 0xD1CD8,
Key_StringToKeynum = 0xD1D18,
Key_IsValidGamePadChar = 0xD1E64,
Key_KeyNumToString = 0xD1EA4,
Key_Unbind_f = 0xD2368,
Key_Bind_f = 0xD247C,
BG_TakePlayerWeapon = 0x1C409C,
G_GivePlayerWeapon = 0x1C3034,
SV_GameSendServerCommand = 0x228FA8,
SV_GetConfigString = 0x22A4A8,
SV_SetConfigString = 0x22A208,
va = 0x299490,
G_SetModel = 0x1BEF5C,
G_LocalizedStringIndex = 0x1BE6CC,
G_MaterialIndex = 0x1BE744,
G_ModelIndex = 0x1BE7A8,
G_ModelName = 0x1BE8A0,
Add_Ammo = 0x18A29C,
PlayerCmd_SetPerk = 0x17EBE8,
G_Damage = 0x183E18,
G_RadiusDamage = 0x185600,
G_GetClientScore = 0x18EA74,
G_GetClientDeaths = 0x18EA98,
Cmd_AddCommandInternal = 0x1DC4FC,
CBuf_AddText /*(int localClientNum, const char *text)*/ = 0x001DB240,
SV_SendDisconnect /*(client_s *client, int state, const char *reason)*/ = 0x0022472C,
SV_SendClientGameState /*(client_s *client)*/ = 0x002284F8,
SV_KickClient /*(client_s *cl, char *playerName, int maxPlayerNameLen)*/ = 0x00223BD0,
G_CallSpawnEntity /*(gentity_s *ent)*/ = 0x001BA730,
Player_Die /*(unsigned int *self, unsigned int *inflictor, unsigned int *attacker, int damage, int meansOfDeath, int iWeapon, const float *vDir, unsigned int hitLoc, int psTimeOffset)*/ = 0x00183748,
SV_DropClient /*(client_s *drop, const char *reason, bool tellThem)*/ = 0x002249FC,
SV_SendServerCommand /*(client_s *,svscmd_type,char const *,...)*/ = 0x0022CEBC,
Scr_Notify /*(gentity_s *ent, unsigned __int16 stringValue, unsigned int paramcount)*/ = 0x001BB1B0,
Sv_SetGametype /*(void)*/ = 0x00229C1C,
Sv_Maprestart /*(int fast_restart)*/ = 0x00223774,
sv_maprestart_f = 0x00223B20,
sv_spawnsever /*(const char *server)*/ = 0x0022ADF8,
sv_map_f = 0x002235A0,
sv_matchend /*(void)*/ = 0x0022F7A8,
R_AddCmdDrawText /*(const char *text, int maxChars, void *font, float x, float y, float xScale, float yScale, float rotation, const float *color, int style)*/ = 0x00393640,
R_RegisterFont /*(char* asset, int imagetrack)*/ /*(const char *name, int imageTrack)*/ = 0x003808B8,
R_AddCmdDrawStretchPic /*(float x, float y, float w, float h, float xScale, float yScale, float xay, float yay, const float *color, int material)*/ = 0x00392D78,
CL_DrawTextHook /*(const char *text, int maxChars, void *font, float x, float y, float xScale, float yScale, const float *color, int style)*/ = 0x000D93A8,
R_AddCmdDrawTextWithEffects /*(char const *,int,Font_s *,float,float,float,float,float,float const * const,int,float const * const,Material *,Material *,int,int,int,int)*/ = 0x003937C0,
CG_BoldGameMessage /*(int LocalClientNum, const char *Message)*/ = 0x0007A5C8,
UI_FillRectPhysical /*(float x, float y, float width, float height, const float *color)*/ = 0x0023A810,
UI_DrawLoadBar /*(ScreenPlacement *scrPlace, float x, float y, float w, float h, int horzAlign, int vertAlign, const float *color, Material *material)*/ = 0x0023A730,
Scr_MakeGameMessage /*(int iClientNum, const char *pszCmd)*/ = 0x001B07F0,
Scr_ConstructMessageString /*(int firstParmIndex, int lastParmIndex, const char *errorContext, char *string, unsigned int stringLimit)*/ = 0x001B04F4,
R_NormalizedTextScale /*(Font_s *font, float scale)*/ = 0x003808F0,
TeleportPlayer /*(gentity_s *player, float *origin, float *angles)*/ = 0x00191B00,
CL_DrawText /*(ScreenPlacement *scrPlace, const char *text, int maxChars, Font_s *font, float x, float y, int horzAlign, int vertAlign, float xScale, float yScale, const float *color, int style)*/ = 0x000D9490,
CL_DrawTextRotate /*(ScreenPlacement *scrPlace, const char *text, int maxChars, Font_s *font, float x, float y, float rotation, int horzAlign, int vertAlign, float xScale, float yScale, const float *color, int style)*/ = 0x000D9554,
SV_GameDropClient /*(int clientNum, const char *reason)*/ = 0x00229020,
Dvar_GetBool /*(const char *dvarName)*/ = 0x00291060,
Dvar_GetInt /*(const char *dvarName)*/ = 0x002910DC,
Dvar_GetFloat /*(const char *dvarName)*/ = 0x00291148,
Dvar_RegisterBool /*(const char *dvarName, bool value, unsigned __int16 flags, const char *description)*/ = 0x002933F0,
Dvar_IsValidName /*(const char *dvarName)*/ = 0x0029019C,
Material_RegisterHandle /*(const char *name, int imageTrack)*/ = 0x0038B044,
CL_RegisterFont /*(const char *fontName, int imageTrack)*/ = 0x000D9734,
SetClientViewAngle /*(gentity_s *ent, const float *angle)*/ = 0x001767E0,
R_RegisterDvars /*(void)*/ = 0x0037E420,
PlayerCmd_SetClientDvar /*(scr_entref_t entref)*/ = 0x0017CB4C,
Jump_RegisterDvars /*(void)*/ = 0x00018E20,
AimTarget_RegisterDvars = 0x00012098,
G_FreeEntity /*(gentity_s *ed)*/ = 0x001C0840,
G_EntUnlink /*(gentity_s *ent)*/ = 0x001C4A5C,
SV_DObjGetTree /*(gentity_s *ent)*/ = 0x00229A68,
BG_GetEntityTypeName /*(const int eType)*/ = 0x0001D1F0,
CL_GetClientState /*(int localClientNum, uiClientState_s *state)*/ = 0x000E26A8,
CL_GetConfigString /*(int localClientNum, int configStringIndex)*/ = 0x000C5E7C,
Info_ValueForKey /*(const char *s, const char *key)*/ = 0x00299604,
Scr_GetInt /*(unsigned int index)*/ = 0x002201C4,
ClientSpawn /*(gentity_s *ent, const float *spawn_origin, const float *spawn_angles)*/ = 0x00177468,
Sv_ClientCommand /*(client_s *cl, msg_t *msg)*/ = 0x00228178,
Sv_ExecuteClientMessage /*(client_s *cl, msg_t *msg)*/ = 0x00228B50,
Sv_ExecuteClientCommand /*(client_s *cl, const char *s, int clientOK)*/ = 0x00182DEC,
ClientCommand /*(int clientNum)*/ = 0x00182440,
CalculateRanks /*(void)*/ = 0x0019031C,
ClientScr_SetScore /*(gclient_s *pSelf, client_fields_s *pField)*/ = 0x00176150,
ClientScr_SetMaxHealth /*(gclient_s *pSelf, client_fields_s *pField)*/ = 0x00176094,
Sv_ReceiveStats /*(netadr_t from, msg_t *msg)*/ = 0x002244E0,
ClientConnect /*(int clientNum, unsigned __int16 scriptPersId)*/ = 0x001771A0,
Sv_DirectConnect /*(netadr_t from)*/ = 0x00255BB4,
Sv_SetConfigstring /*(int index, const char *val)*/ = 0x0022A208,
Sv_AddServerCommand /*(client_s *client, svscmd_type type, const char *cmd)*/ = 0x0022CBA0,
IntermissionClientEndFrame /*(gentity_s *ent)*/ = 0x001745F8,
memset = 0x0049B928,
str_pointer = 0x523b30,
g_gametype = 0x8360d5;
}
#endregion