Advertisement
BaSs_HaXoR

BO2 RPC [1.18]

Sep 14th, 2014
405
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.87 KB | None | 0 0
  1.    
  2.  
  3.                public class RPC
  4.         {
  5.             public static int Call(uint func_address, params object[] parameters) {
  6.                 int length = parameters.Length;
  7.                 int index = 0;
  8.                 UInt32 num3 = 0;
  9.                 UInt32 num4 = 0;
  10.                 UInt32 num5 = 0;
  11.                 UInt32 num6 = 0;
  12.                 while (index < length)
  13.                 {
  14.                     if (parameters[index] is int)
  15.                     {
  16.                         PS3.Extension.WriteInt32(0x10020000 + (num3 * 4), (int)parameters[index]);
  17.                         num3++;
  18.                     }
  19.                     else if (parameters[index] is UInt32)
  20.                     {
  21.                         PS3.Extension.WriteUInt32(0x10020000 + (num3 * 4), (UInt32)parameters[index]);
  22.                         num3++;
  23.                     }
  24.                     else
  25.                     {
  26.                         UInt32 num7;
  27.                         if (parameters[index] is string)
  28.                         {
  29.                             num7 = 0x10022000 + (num4 * 0x400);
  30.                             PS3.Extension.WriteString(num7, Convert.ToString(parameters[index]));
  31.                             PS3.Extension.WriteUInt32(0x10020000 + (num3 * 4), num7);
  32.                             num3++;
  33.                             num4++;
  34.                         }
  35.                         else if (parameters[index] is float)
  36.                         {
  37.                             PS3.Extension.WriteFloat(0x10020024 + (num5 * 4), (float)parameters[index]);
  38.                             num5++;
  39.                         }
  40.                         else if (parameters[index] is float[])
  41.                         {
  42.                             float[] input = (float[])parameters[index];
  43.                             num7 = 0x10021000 + (num6 * 4);
  44.                             Lib.WriteSingle(num7, input);
  45.                             PS3.Extension.WriteUInt32(0x10020000 + (num3 * 4), num7);
  46.                             num3++;
  47.                             num6 += (UInt32)input.Length;
  48.                         }
  49.                     }
  50.                     index++;
  51.                 }
  52.                 PS3.Extension.WriteUInt32(0x1002004C, func_address);
  53.                 Thread.Sleep(20);
  54.                 return PS3.Extension.ReadInt32(0x10020050);
  55.             }
  56.             private static void Enable() {
  57.                 uint function_address = 0x7AA1E0;
  58.                 PS3.SetMemory(function_address, new byte[] { 0x4E, 0x80, 0x00, 0x20 });
  59.                 Thread.Sleep(20);
  60.                 byte[] memory = new byte[]
  61.                         { 0x7C, 0x08, 0x02, 0xA6, 0xF8, 0x01, 0x00, 0x80, 0x3C, 0x60, 0x10, 0x02, 0x81, 0x83, 0x00, 0x4C,
  62.                 0x2C, 0x0C, 0x00, 0x00, 0x41, 0x82, 0x00, 0x64, 0x80, 0x83, 0x00, 0x04, 0x80, 0xA3, 0x00, 0x08,
  63.                 0x80, 0xC3, 0x00, 0x0C, 0x80, 0xE3, 0x00, 0x10, 0x81, 0x03, 0x00, 0x14, 0x81, 0x23, 0x00, 0x18,
  64.                 0x81, 0x43, 0x00, 0x1C, 0x81, 0x63, 0x00, 0x20, 0xC0, 0x23, 0x00, 0x24, 0xc0, 0x43, 0x00, 0x28,
  65.                 0xC0, 0x63, 0x00, 0x2C, 0xC0, 0x83, 0x00, 0x30, 0xC0, 0xA3, 0x00, 0x34, 0xc0, 0xC3, 0x00, 0x38,
  66.                 0xC0, 0xE3, 0x00, 0x3C, 0xC1, 0x03, 0x00, 0x40, 0xC1, 0x23, 0x00, 0x48, 0x80, 0x63, 0x00, 0x00,
  67.                 0x7D, 0x89, 0x03, 0xA6, 0x4E, 0x80, 0x04, 0x21, 0x3C, 0x80, 0x10, 0x02, 0x38, 0xA0, 0x00, 0x00,
  68.                 0x90, 0xA4, 0x00, 0x4C, 0x90, 0x64, 0x00, 0x50, 0xE8, 0x01, 0x00, 0x80, 0x7C, 0x08, 0x03, 0xA6,
  69.                 0x38, 0x21, 0x00, 0x70, 0x4E, 0x80, 0x00, 0x20 };
  70.                 PS3.SetMemory(function_address + 4, memory);
  71.                 PS3.SetMemory(0x10020000, new byte[0x2854]);
  72.                 PS3.SetMemory(function_address, new byte[] { 0xF8, 0x21, 0xFF, 0x91 });
  73.                 PS3.SetMemory(0x3DBF70, new byte[] { 0x60, 0x00, 0x00, 0x00 });
  74.                 PS3.SetMemory(0x30010000, new byte[] { 0x01 });
  75.                
  76.             }
  77.             public static void Init()
  78.             {
  79.                 if (PS3.Extension.ReadByte(0x30010000) == 1) {
  80.                     Console.Write("RPC Already Enabled");
  81.                 }
  82.                 else
  83.                     Enable();
  84.             }
  85.      
  86.             public static void iPrintln(int Client, string Text) {
  87.                 SV_GameSendServerCommand(Client, "O \"" + Text + "\"");
  88.             }
  89.      
  90.             public static void iPrintlnBold(int Client, string Text) {
  91.                 SV_GameSendServerCommand(Client, "< \"" + Text + "\"");
  92.             }
  93.             public static void CBuf_Addtext(string Command) {
  94.                 RPC.Call(0x313E88, 0, Command);
  95.             }
  96.      
  97.             public static void SV_GameSendServerCommand(int Client, string Command) {
  98.                 RPC.Call(0x34A1DC, Client, 1, Command);
  99.             }
  100.         }
  101.      
  102.     //Enable with "RPC.Init();
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement