THREAD: [C#/VB/C++] Ultimate RTM Tool Programming Tutorial
  1. 05-26-2016, 11:05 PM
    S63's Avatar
    S63
    Space Ninja
    S63's Avatar
    S63
    Space Ninja
    841
    Posts
    6,215
    Reputation
    Jan 2016
    NextGenUpdate
    HI NGU,
    I made these tutorials because I don't see many people making stuff anymore and would like to see more
    people starting to code so the community can start to grow and become stronger Happy

    In this tutorial we will be making tools in the following languages:
    C#
    VB.NET
    C++

    Things Required (Green = Needed, Orange = Recommended):
    A Brain
    Computer (Not MAC)
    Control Console Or Target Manager API!
    Offsets for game your coding
    Access to a CFW PS3 system

    Find PS3Lib You must login or register to view this content.

    Definitions:
    Spoiler:

    Encoding:

    Encoding is a class (System.Text), we will be using ACSII (7 bit) which is part of the encoding class. What
    ACSII (7 bit) basically does this converts character sets, we will be using this so we can convert are
    name strings (for name changers) to bytes so the PS3 system is able to read them correctly.


    Bitconverter:

    Bitconverter is a class, we will be using GetBytes(Int32) which will return the
    specified 32-bit signed integer value as an array of bytes.



    C#
    Spoiler:

    Tutorial 1 (Setting up form)
    Spoiler:

    So first off you want to start by making a new project...
    You must login or register to view this content.

    after this you want to click on C# Projects, then click windows application form.
    You must login or register to view this content.

    after creating your windows application form you will get this...
    You must login or register to view this content.

    Now you can see the tool box on the side, click it and is should open all we need for this part is
    radionbutton and button. Now we can design our tool. Also to edit the properties just look and the
    bottom right hand corner and you'll see the properties windows everything you need to edit the
    properties of your button etc is there just use your brain
    You must login or register to view this content.

    Next we want to add the PS3Lib to are refrences you do this...
    You must login or register to view this content.

    Once done add using PS3Lib to are app and we need to define it like this...
    You must login or register to view this content.


    Tutorial 2 (Adding API options to the tool)
    Spoiler:

    So now what you want to do after completing tutorial 1 is double click your TMAPI button.
    You must login or register to view this content.

    Now you want to add our code for tmapi which is: PS3.ChangeAPI(SelectAPI.TargetManager); exactly how you see it.
    You must login or register to view this content.

    And just do the same for CCAPI button.
    You must login or register to view this content.

    Next we want to add our connect code which is like this.
    You must login or register to view this content.

    Just do this again for attach.
    You must login or register to view this content.

    now we want to add our disconnect function.
    You must login or register to view this content.

    Now for Power off we need to create a API checker which is done like this.
    You must login or register to view this content.


    Tutorial 3 (Stats Editor and Name Changing)
    Spoiler:

    So for stats editing we are going to be using converting functions and encoding functions (Read above in definations).

    So we are going to need a numericUpDown, label, button and a checkbox like so....
    You must login or register to view this content.

    First things first we want to edit our numericUpDown min value and max value to this just do.....
    You must login or register to view this content.

    Recommended Max and Min values:

    For Score, Killss etc...
    Max - 2147483647
    Min - -2147483647

    For Time played Editor
    Days
    Max - 199
    Min - 0

    Hours
    Max - 23
    Min - 0

    Minutes
    Max - 59
    Min - 0

    Seconds
    Max - 59
    Min - 0


    Next we want to make our button only set stats if the checkbox is checked, we will do this by using if statements and bools
    You must login or register to view this content.

    Now we want to add our set code functions which we will make now.
    You must login or register to view this content.

    Now we got our set stats function, we now need a Set Time Played Function!
    You must login or register to view this content.

    Finally we can make our stats editor.
    You must login or register to view this content.

    And last of all for stats edit we want to make checkall function!
    You must login or register to view this content.

    And now we can move to making a name changer!

    First you want to get your textbox, button, checkBox and a timer!
    You must login or register to view this content.

    Now we want to start by coding send name!
    You must login or register to view this content.

    Next we wanna set up our checkBox (Flashing Name)!
    You must login or register to view this content.

    Finally to finish of this tutorial we will add flashing name to our timer, you wanna add random
    function to the top of your project likes this!
    You must login or register to view this content.

    Then do this...
    You must login or register to view this content.


    Tutorial 4 (Adding Clients)
    Spoiler:

    In this tutorial we will be using dataGridView, buttons and contextmenustrip...

    First we want to get our buttons ready...
    You must login or register to view this content.

    We want to find our columns in properties for datagridview like this!
    You must login or register to view this content.

    Next we want to add columns...
    You must login or register to view this content.

    Now we want to add our contextmenustrip...
    You must login or register to view this content.

    Next we want to make our getclientname function using the function ReadSting, also we need
    client 0 name offset(MW2 - 0x014e5490) and client size (MW2 - 0x3700)
    You must login or register to view this content.

    Now we want to add this function to our datagridview like this...
    You must login or register to view this content.

    Finally we are going to make our godmode function and add to our contextmenustrip..
    You must login or register to view this content.

    Now we will make give godmode...
    You must login or register to view this content.

    Then we will remove godmode...
    You must login or register to view this content.


    If you guys want more tutorials posted on thread that is linked to C# just let me know below!
    What do you guys want me to make for my next tutorial here on NGU?
    Please post your ideas below and ill reply ASAP!
    [/CODE]


    VB.NET
    Spoiler:

    Tutorial 1 (Setting up Form)
    Spoiler:

    So first off you want to start by making a new project...
    You must login or register to view this content.

    after this you want to click on VB Projects, then click windows application form.
    You must login or register to view this content.

    after creating your windows application form you will get this...
    You must login or register to view this content.

    Now you can see the tool box on the side, click it and is should open all we need for this part is
    radionbutton and button. Now we can design our tool. Also to edit the properties just look and the
    bottom right hand corner and you'll see the properties windows everything you need to edit the
    properties of your button etc is there just use your brain
    You must login or register to view this content.

    Next we want to add the PS3Lib to are refrences you do this...
    You must login or register to view this content.

    Once done add using PS3Lib to are app and we need to define it like this...
    You must login or register to view this content.


    Tutorial 2 (Adding API options to the tool)
    Spoiler:

    So now what you want to do after completing tutorial 1 is double click your TMAPI button.
    You must login or register to view this content.

    Now you want to add our code for tmapi which is: PS3.ChangeAPI(SelectAPI.TargetManager) exactly how you see it.
    You must login or register to view this content.

    And just do the same for CCAPI button.
    You must login or register to view this content.

    Next we want to add our connect code which is like this.
    You must login or register to view this content.

    Just do this again for attach.
    You must login or register to view this content.

    now we want to add our disconnect function.
    You must login or register to view this content.

    Now for Power off we need to create a API checker which is done like this.
    You must login or register to view this content.


    Tutorial 3 (Stats Editor and Name Changing)
    Spoiler:

    So for stats editing we are going to be using converting functions and encoding functions (Read above in definations).

    So we are going to need a numericUpDown, label, button and a checkbox like so....
    You must login or register to view this content.

    First things first we want to edit our numericUpDown min value and max value to this just do.....
    You must login or register to view this content.

    Recommended Max and Min values:

    For Score, Killss etc...
    Max - 2147483647
    Min - -2147483647

    For Time played Editor
    Days
    Max - 199
    Min - 0

    Hours
    Max - 23
    Min - 0

    Minutes
    Max - 59
    Min - 0

    Seconds
    Max - 59
    Min - 0


    Next we want to make our button only set stats if the checkbox is checked, we will do this by using if statements and bools
    You must login or register to view this content.

    Now we want to add our set code functions which we will make now.
    You must login or register to view this content.

    Now we want to add are numerics for timeplayed etc..
    You must login or register to view this content.

    we now need a Set Time Played!
    You must login or register to view this content.

    And last of all for stats edit we want to make checkall function!
    You must login or register to view this content.

    And now we can move to making a name changer!

    First you want to get your textbox, button, checkBox and a timer!
    You must login or register to view this content.

    Now we need to add Imports System.Text as the top of are project so we can use encoding.
    You must login or register to view this content.

    Now we want to start by coding send name!
    You must login or register to view this content.

    Next we wanna set up our checkBox (Flashing Name)!
    You must login or register to view this content.

    Finally to finish of this tutorial we will add flashing name to our timer, you wanna add random
    function to the top of your project likes this!
    You must login or register to view this content.

    Then do this...
    You must login or register to view this content.


    If you guys want more tutorials posted on thread that is linked to VB.NET just let me know below!
    What do you guys want me to make for my next tutorial here on NGU?
    Please post your ideas below and ill reply ASAP!


    Q And A
    Spoiler:

    Where can i get offsets from?

    Modern Warfare 1 - You must login or register to view this content.
    World At War - You must login or register to view this content.
    Modern Warfare 2 - You must login or register to view this content.
    Black Ops 1 - You must login or register to view this content.
    Modern Warfare 3 - You must login or register to view this content.
    Black Ops 2 -
    Ghosts - You must login or register to view this content.
    Advanced Warfare -


    Are offsets the same for everygame?

    No They are different and they change if a new update for the game comes out!


    How do i find offsets?

    Easy use debugger or ida pro!


    How do i add other CCAPI Commands?

    C#

    Notify Modes!
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.ARROW, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.ARROWRIGHT, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.CAUTION, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.DIALOG, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.DIALOGSHADOW, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.FINGER, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.FRIEND, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.GRAB, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.HAND, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.INFO, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.PEN, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.POINTER, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.PROGRESS, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.SLIDER, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.TEXT, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.TROPHY1, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.TROPHY2, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.TROPHY3, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.TROPHY4, "");
    PS3.CCAPI.Notify(CCAPI.NotifyIcon.WRONGWAY, "");

    Shutdown Modes!
    PS3.CCAPI.ShutDown(CCAPI.RebootFlags.ShutDown);
    PS3.CCAPI.ShutDown(CCAPI.RebootFlags.SoftReboot);
    PS3.CCAPI.ShutDown(CCAPI.RebootFlags.HardReboot);

    Buzzer Modes!
    PS3.CCAPI.RingBuzzer(CCAPI.BuzzerMode.Single);
    PS3.CCAPI.RingBuzzer(CCAPI.BuzzerMode.Double);
    PS3.CCAPI.RingBuzzer(CCAPI.BuzzerMode.Continuous);

    LED Settings!
    Green:
    PS3.CCAPI.SetConsoleLed(CCAPI.LedColor.Green, CCAPI.LedMode.On);
    PS3.CCAPI.SetConsoleLed(CCAPI.LedColor.Green, CCAPI.LedMode.Off);
    PS3.CCAPI.SetConsoleLed(CCAPI.LedColor.Green, CCAPI.LedMode.Blink);

    Red:
    PS3.CCAPI.SetConsoleLed(CCAPI.LedColor.Red, CCAPI.LedMode.On);
    PS3.CCAPI.SetConsoleLed(CCAPI.LedColor.Red, CCAPI.LedMode.Off);
    PS3.CCAPI.SetConsoleLed(CCAPI.LedColor.Red, CCAPI.LedMode.Blink);

    PSID And IDPS Changers:
    IDPS Changer:
    PS3.CCAPI.Set*********("");

    PSID Changer:
    PS3.CCAPI.SetPSID("");

    PSID And IDPS Changer On PS3 Boot Up!
    PS3.CCAPI.SetBoot*********("", CCAPI.IdType.IDPS);
    PS3.CCAPI.SetBoot*********("", CCAPI.IdType.PSID);

    PSID And IDPS Reset:
    PS3.CCAPI.ResetBoot*********(CCAPI.IdType.IDPS);
    PS3.CCAPI.ResetBoot*********(CCAPI.IdType.PSID);



    Other Useful Resources

    C# - You must login or register to view this content.
    VB - You must login or register to view this content.
    C++ (Win32) - You must login or register to view this content.


    Credits

    S63 For The Tutorials
    Sony For Target Manager API
    iMCSx For PS3Lib
    Enstone For CCAPI
    And Whoever Found The Offsets I Used Happy
    Last edited by S63 ; 09-01-2016 at 04:45 PM.

  2. The Following 6 Users Say Thank You to S63 For This Useful Post:

    , , , , ,

  3. 05-30-2016, 08:28 AM
    xiYQHEMoDz's Avatar
    xiYQHEMoDz
    Little One
    xiYQHEMoDz's Avatar
    xiYQHEMoDz
    Little One
    286
    Posts
    661
    Reputation
    Dec 2015
    NextGenUpdate
    Thanks but is to hard
  4. 05-30-2016, 12:22 PM
    S63's Avatar
    S63
    Space Ninja
    S63's Avatar
    S63
    Space Ninja
    841
    Posts
    6,215
    Reputation
    Jan 2016
    NextGenUpdate
    Originally Posted by xiYQHEMoDz View Post
    Thanks but is to hard


    You being sarcastic or you really need help? If so just hook me up on skype and ill help ya with what ever you get stuck on
  5. 06-05-2016, 12:56 PM
    59
    Posts
    70
    Reputation
    May 2016
    NextGenUpdate
    I have a small Bug...I don't get the client names if i am connected with ccapi but it works if i am connected with tmapi.. here is my code:
    public string ClientNames(uint ClientsName)
    {
    PS3API API = new PS3API();
    //0x0110D60C + ClientsName + 0x3980
    string getnames = API.Extension.ReadString(0x0110D60C + ((uint)ClientsName*0x3980));
    return getnames;
    }
    private void button37_Click(object sender, EventArgs e)
    {
    if (dataGridView1.RowCount == 1)
    {
    dataGridView1.Rows.Add(17);
    }

    for (uint i = 0; i < 18; i++)
    {
    dataGridView1[0, Convert.ToInt32(i)].Value = i;
    dataGridView1[1, Convert.ToInt32(i)].Value = ClientNames(i);
    }
    }
  6. 06-05-2016, 06:17 PM
    S63's Avatar
    S63
    Space Ninja
    S63's Avatar
    S63
    Space Ninja
    841
    Posts
    6,215
    Reputation
    Jan 2016
    NextGenUpdate
    Originally Posted by R3ALYZED View Post
    I have a small Bug...I don't get the client names if i am connected with ccapi but it works if i am connected with tmapi.. here is my code:
    public string ClientNames(uint ClientsName)
    {
    PS3API API = new PS3API();
    //0x0110D60C + ClientsName + 0x3980
    string getnames = API.Extension.ReadString(0x0110D60C + ((uint)ClientsName*0x3980));
    return getnames;
    }
    private void button37_Click(object sender, EventArgs e)
    {
    if (dataGridView1.RowCount == 1)
    {
    dataGridView1.Rows.Add(17);
    }

    for (uint i = 0; i < 18; i++)
    {
    dataGridView1[0, Convert.ToInt32(i)].Value = i;
    dataGridView1[1, Convert.ToInt32(i)].Value = ClientNames(i);
    }
    }


    Im guessing its maybe something to so with your lib and the readstring might be tmapi only thats only if your using a old version of the lib or try doing the ps3lib defination like this
    You must login or register to view this content.

    Instead of putting it in every function you add

    Also change your offset from 0x0110D60C to 0x0110D694
    Last edited by S63 ; 06-05-2016 at 06:32 PM.

  7. 06-05-2016, 06:37 PM
    59
    Posts
    70
    Reputation
    May 2016
    NextGenUpdate
    I found it out my self and changed the code but thanks
  8. 06-05-2016, 06:43 PM
    S63's Avatar
    S63
    Space Ninja
    S63's Avatar
    S63
    Space Ninja
    841
    Posts
    6,215
    Reputation
    Jan 2016
    NextGenUpdate
    Originally Posted by R3ALYZED View Post
    I found it out my self and changed the code but thanks


    What was it?
  9. 06-05-2016, 06:45 PM
    59
    Posts
    70
    Reputation
    May 2016
    NextGenUpdate
    public string ClientNames(int Client)
    {
    byte[] Names = new byte[20];
    API.GetMemory(0x0110D60C + 0x3980 * (uint)Client, Names);
    string Name = Encoding.ASCII.GetString(Names);
    return Name;
    }

    private void button37_Click(object sender, EventArgs e)
    {
    if (dataGridView1.RowCount == 1)
    {
    dataGridView1.Rows.Add(17);
    }

    for (int i = 0; i < 18; i++)
    {
    dataGridView1.Rows.Cells[0].Value = i;
    dataGridView1.Rows.Cells[1].Value = ClientNames(i);
    }
    }


    I am not really sure but I think it was the uint and convert thing Happy
  10. 06-05-2016, 06:48 PM
    S63's Avatar
    S63
    Space Ninja
    S63's Avatar
    S63
    Space Ninja
    841
    Posts
    6,215
    Reputation
    Jan 2016
    NextGenUpdate
    Removed
    Last edited by S63 ; 06-05-2016 at 06:54 PM.

  11. 06-05-2016, 09:31 PM
    47
    Posts
    100
    Reputation
    Oct 2014
    NextGenUpdate
    Class namechanger Code?