[Tutorial] RT3ME Your first XRPC tool - Part 1

begallegal1 Nov 17, 2013

  1. begallegal1

    begallegal1 Medicine Man Lifetime Gold TeamXPG
    125/188

    Joined:
    Oct 31, 2011
    Messages:
    3,694
    Likes Received:
    3,131
    Trophy Points:
    235
    Gender:
    Male
    Location:
    In a Field of Green
    Console:
    Xbox
    Hello all , since there seems to be lots of interest in XRPC tools again with COD: Ghosts being out now, I thought I would put up a VERY basic series of tutorials to help members who may want to try their hand at making some xrpc tools ;)

    [​IMG]

    For this you will need:
    1. My source attached below,or a new C# Form application project in Visual Studio
    2. Xbox360 SDK installed on your PC with your console set as default
    3. Your Jtag-RGH 360 with RPC.xex and XBDM.xex plugins installed

    http://www.youtube.com/watch?v=0pLZe9SfyrU
    sorry vids a bit laggy my PC is pretty weak :p

    Here is a single cheat tool that shows how to setup the app and connect, shows us some console info in the connected message box,,gives us 3 jump height levels plus default ,and shows a popup when level is set
    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    //Add reference to XRPCLib
    using XRPCLib;
    
    namespace RT3ME
    {
        public partial class Form1 : Form
        {
            //Make an instance of our XRPC class
            XRPC x = new XRPC();
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void Form1_Load(object sender, EventArgs e)
            {
                //Try to connect , dispay console info if success, error message if failed
                try
                {
                    x.Connect();
                    MessageBox.Show("Connected To: " + x.xbCon.Name + "\n\nConsole Type: " + x.xbCon.ConsoleType + "\n\nMounted Drives: " + x.xbCon.Drives + "\n\nCurrently Running: " + x.xbCon.RunningProcessInfo.ProgramName, "Connected!");
                }
                catch (System.Exception)
                {
                    MessageBox.Show("No Console To Connect", "Error!");
                }    
            }
    
            private void dateTime_Tick(object sender, EventArgs e)
            {
                //date/time label just for fun 
                dateTimeLbl.Text = System.DateTime.Now.ToString();
            }
    
            private void XPG_Click(object sender, EventArgs e)
            {
                //Gotta rep XPG ^_^
                System.Diagnostics.Process.Start("http://www.xpgamesaves.com");
            }
    
            private void setJumpHt_Click(object sender, EventArgs e)
            {   
                //Fix Fall Damage First
                x.SetMemory(0x8201B424, new byte[] { 0x4F, 0xFF, 0x00, 0x00 });
    
                //Select jump height based on numerical up/down box, 
                //we are giving 3 levels of jump here plus default 
                if (jumpLvlNumBox.Value == 0)
                {
                    x.SetMemory(0x820151F8, new byte[] { 0x42, 0x1c, 0x00, 0x00 });
                    x.Notify(XRPC.XNotiyLogo.FLASH_LOGO, "Default Jump Set");
                }
                if (jumpLvlNumBox.Value == 1)
                {
                    x.SetMemory(0x820151F8, new byte[] { 0x43, 0xFF, 0x00, 0x00 });
                    x.Notify(XRPC.XNotiyLogo.FLASH_LOGO, "Level 1 Jump Set");
                }
                if (jumpLvlNumBox.Value == 2)
                {
                    x.SetMemory(0x820151F8, new byte[] { 0x45, 0xFF, 0x00, 0x00 });
                    x.Notify(XRPC.XNotiyLogo.FLASH_LOGO, "Level 2 Jump Set");
                }
                if (jumpLvlNumBox.Value == 3)
                {
                    x.SetMemory(0x820151F8, new byte[] { 0x48, 0xFF, 0x00, 0x00 });
                    x.Notify(XRPC.XNotiyLogo.FLASH_LOGO, "Level 3 Jump Set");
                }
            }
        }
    }
     
    have a browse through the code and my notes inside should get you heading in the right direction ;)

    feel free to comment with questions or suggestions for Part2+

    enjoy
    :begal:
     

    Attached Files:

  2. Coder123

    Coder123 Finnish Modder XPG Developer TeamXPG
    105/188

    Joined:
    Jan 21, 2012
    Messages:
    1,953
    Likes Received:
    717
    Trophy Points:
    105
    Gender:
    Male
    Location:
    Finland
    Console:
    Xbox
    i would personally use this for connection

    x.Connect();
    if (x.activeConnection == true)
    {
    MessageBox.Show("Tool was succesfully connected to default console");
    }
    else
    {
    MessageBox.Show("Connection to defaut console failed!");
    }

    Also since its using XRPC and one of the major things why people use it is because it can call functions, you should show some sample on that too ;)
     
  3. begallegal1

    begallegal1 Medicine Man Lifetime Gold TeamXPG
    235/282

    Joined:
    Oct 31, 2011
    Messages:
    3,694
    Likes Received:
    3,131
    Trophy Points:
    235
    Gender:
    Male
    Location:
    In a Field of Green
    Console:
    Xbox
    Well now ya basically wiped out half of part 2 with checking the connection :p I'll have to add some more error handling stuff to that and a few extras and that will be part2 :D , and yea functions and all that will come in part3+ , thanks for the input coder ;)
     
  4. pedro210

    pedro210 Newbie
    0/47

    Joined:
    Sep 21, 2012
    Messages:
    311
    Likes Received:
    27
    Trophy Points:
    0
    Console:
    Xbox
    Ooh man this is awesome i wanted to know how to send pop ups with xnotify but was inputting the wrong name i believe I think I had Happy_Face or something similiar awesome tut ;)
     
  5. CRACKbomber

    CRACKbomber Resident Xbox Guru XPG Developer
    25/47

    Joined:
    Sep 12, 2011
    Messages:
    276
    Likes Received:
    235
    Trophy Points:
    25
    Gender:
    Male
    Location:
    Michigan
    Console:
    Xbox
    Seems pointless to do that. Using a try catch statement is much more efficient for error handling and logging. Also you don't need to compare a bool to true / false in a if..else statement. It will already evaluate it like if true then else this
     
  6. gold972

    gold972 团队XPG影响 Effect XPG Developer TeamXPG
    205/282

    Joined:
    Dec 6, 2010
    Messages:
    6,833
    Likes Received:
    14,939
    Trophy Points:
    205
    Gender:
    Male
    Location:
    France Kernal XDK
    Console:
    Xbox
    good job begal ;)
     
  7. StarkillerAkatsuki

    StarkillerAkatsuki Official Self-Deprecating Noob
    0/47

    Joined:
    Aug 16, 2013
    Messages:
    181
    Likes Received:
    118
    Trophy Points:
    0
    Gender:
    Male
    Console:
    Xbox
    Very nice Begal, but you could use a switch for the jump height? I'm a noob in C# but i think i read something about that.
     
  8. Alcatraz3222

    Alcatraz3222 Newbie
    0/47

    Joined:
    Mar 6, 2013
    Messages:
    52
    Likes Received:
    33
    Trophy Points:
    0
    Console:
    Xbox
    yes it's possible, use

    x.SetMemory(0x8201B424, new byte[] { 0x4F, 0xFF, 0x00, 0x00 }); //This is Fall_Damage

    if (switchButton == true)
    {
    x.SetMemory(0x820151F8, new byte[] { 0x,46, 0x1C, 00, 00 }); //Jump
    x.Notify(XRPC.XNotiyLogo.FLASH_LOGO, "Modded Jump Set"); //XNotify
    }
    if (switchButton == false)
    {
    x.SetMemory(0x820151F8, new byte[] { 0x,42, 0x1C, 00, 00 });
    x.Notify(XRPC.XNotiyLogo.FLASH_LOGO, "Default Jump Set");
    }

    I'm sorry I can not edit my other post, is switchButton.Value == true

    please moderator add this post to my other post
     
  9. begallegal1

    begallegal1 Medicine Man Lifetime Gold TeamXPG
    235/282

    Joined:
    Oct 31, 2011
    Messages:
    3,694
    Likes Received:
    3,131
    Trophy Points:
    235
    Gender:
    Male
    Location:
    In a Field of Green
    Console:
    Xbox
    Yes a switch case would work just fine for this as well , wrote this up and tested it just now, produces exact same results as the method in Part1,,I will add this as an alternate method for that function in part2 , thanks for pointing that out , options of use are good to have ;)

    int jVal = Convert.ToInt32(jumpLvlNumBox.Value);
    switch (jVal)
    {
    case 0 :
    x.SetMemory(0x820151F8, new byte[] { 0x42, 0x1c, 0x00, 0x00 });
    break;
    case 1:
    x.SetMemory(0x820151F8, new byte[] { 0x43, 0xFF, 0x00, 0x00 });
    break;
    case 2:
    x.SetMemory(0x820151F8, new byte[] { 0x45, 0xFF, 0x00, 0x00 });
    break;
    case 3:
    x.SetMemory(0x820151F8, new byte[] { 0x48, 0xFF, 0x00, 0x00 });
    break;
    }

    I believe he was talking about what I have posted above ;)



    Working on Part2 right now, should be up later today, just trying to be sure I make the most of each part of this series without overwhelming members who may be new to coding their own apps, also giving myself enough time to research my own info and use some of what others have shared as well (credits and thanks will be given to those who's open source mw tools I have looked at)
     
  10. XPGHAZARD

    XPGHAZARD BANNED BANNED
    0/47

    Joined:
    Sep 8, 2013
    Messages:
    1,370
    Likes Received:
    292
    Trophy Points:
    0
    Gender:
    Male
    Location:
    Inside a vortex.
    Console:
    Xbox One
    Great job Begal, as always! ;)
     
  11. StarkillerAkatsuki

    StarkillerAkatsuki Official Self-Deprecating Noob
    0/47

    Joined:
    Aug 16, 2013
    Messages:
    181
    Likes Received:
    118
    Trophy Points:
    0
    Gender:
    Male
    Console:
    Xbox
    Exactly! Glad to see my memory hasn't failed me yet, can't wait to see Part 2.
     
  12. pedro210

    pedro210 Newbie
    0/47

    Joined:
    Sep 21, 2012
    Messages:
    311
    Likes Received:
    27
    Trophy Points:
    0
    Console:
    Xbox
    Suggestion: tutorial on how to find bytes and stuff needed to get this accomplished
     
  13. KillerVidz

    KillerVidz Rocky BANNED
    0/47

    Joined:
    Feb 20, 2012
    Messages:
    3,312
    Likes Received:
    1,280
    Trophy Points:
    0
    Gender:
    Male
    Location:
    XPG-UK
    Console:
    Xbox One
    I keep getting this error?

    Error 1 The name 'x' does not exist in the current context

    EDIT: Fixed forgot to add //Make an instance of our XRPC class
    XRPC x = new XRPC();
     
  14. FatPat666

    FatPat666 ѪĴůğğäĽŏҲҲƉƴĻȺNѪ Lifetime Gold XPG Retired Staff
    135/188

    Joined:
    Jul 12, 2011
    Messages:
    1,782
    Likes Received:
    822
    Trophy Points:
    135
    Gender:
    Male
    Location:
    50187
    Console:
    Xbox One
    thank you for this. its a great start, :)
    now to find my own offsets.
     
  15. Heistful

    Heistful Banned (Read The Rules) BANNED
    0/47

    Joined:
    Nov 8, 2013
    Messages:
    131
    Likes Received:
    22
    Trophy Points:
    0
    Console:
    Xbox
    Excellent tutorial man! Great work!
     
  16. GConwell

    GConwell Ain't No Picnic Lifetime Gold
    125/188

    Joined:
    Mar 7, 2011
    Messages:
    1,086
    Likes Received:
    394
    Trophy Points:
    125
    Gender:
    Male
    Occupation:
    DJ
    Location:
    Ireland
    Home Page:
    Console:
    Playstation 4
    nice tut i would make 1 but no console to test it out :(
     
  17. KillerVidz

    KillerVidz Rocky BANNED
    0/47

    Joined:
    Feb 20, 2012
    Messages:
    3,312
    Likes Received:
    1,280
    Trophy Points:
    0
    Gender:
    Male
    Location:
    XPG-UK
    Console:
    Xbox One
    Do what I do ;) Get others to test man. I cant test as my RGH broke so I have Admins and Mods test mine :p
     

Share This Page

Close