Post: Creating an RTM Tool in C#: Part 2 (Clients)
10-11-2015, 06:05 AM #1
Freezee
Bounty hunter
(adsbygoogle = window.adsbygoogle || []).push({});
Introduction


This tutorial is for those who are need help adding Client Modifications for their tools.






Creating / Loading your project


You want to Create or Load a Project in your Visual Studio IDE, If you need help on Creating a Form or Connect and Attach Buttons, Check out my other tutorialYou must login or register to view this content..





Getting Client names
We can use a few different objects to display the clients name, we will use a label, and I'll explain using it on a 'Awesome faceata Grid View' object.

Go into your toolbox and drag a Label onto your form, this will be used to display the clients name. Also drag a Button onto your form, we will use this to get the names.



    
byte[] Client0 = new byte[24]; //Gets the Bytes of the defined offset below, It's [24] because of the character length of the players name.

YourAPI.GetMemory(0x0110D694, Client0); //Getting the Memory of Client 0.

string Client0Name = Encoding.ASCII.GetString(Client0); //Gets the String of Client 0's name.

YourLabelName.Text = Client0Name; //Changing your Label(s) text to the Players name.



[HR][/HR]
You can use a 'Awesome faceataGridView' with this.


uint CalculateAddress(uint Address, int Client, uint Offset)
{
//This adds up address + the offset (aka mod).
//Then adds the client number, * by the size of the structure which in this case is 0x5808.
//Then returns the total value.
return Address + Offset + ((uint)Client * 0x580Cool Man (aka Tustin);
}



for (int i = 0; i < 18; i++)// Loops from 0 - 17, since we have 18 clients, player 1 is client 0, player 18 is client 17.
{
uint AddressToRead = CalculateAddress(0x01780F28, i, 0x5544);//Address is our client 0 main address, i is the client number which increases, 0x5544 is the Name offset.
string PlayersName = YourAPI.Extension.ReadString(AddressToRead);//Read the name from the address
dataGridView1.Rows.Add(PlayersName); // Adds items to DataGridView
}






    
Client Addresses:
Client 0: 0x0110D694
Client 1: 0x01111014
Client 2: 0x01114994
Client 3: 0x01118314
Client 4: 0x0111BC94
Client 5: 0x0111F614
Client 6: 0x01122F94
Client 7: 0x01126914
Client 8: 0x0112A294
Client 9: 0x0112DC14
Client 10: 0x01131594
Client 11: 0x01134F14
Client 12: 0x01138894
Client 13: 0x0113C214
Client 14: 0x0113FB94
Client 15: 0x01143514
Client 16: 0x01146E94
Client 17: 0x0114A814
[/COLOR]




Giving Client Modifications


We will make a God Mode Function for Client 0. Drag an Object onto your Form (Check-box, Radio-Button, Button etc.) and Click It.

As Always, There are explanations and code snippets.

    Byte[] bytes = new Byte[] { 0xFF }; //Defines the byte (0xFF enables godmode).
YourAPIName.SetMemory(0x0FCA41E, bytes); // 0x0FCA41E is the offset, "bytes" is 0xFF.

Byte[] bytes = new Byte[] { 0x00 }; //Defines the byte (0x00 disables godmode)
YourAPIName.SetMemory(0x0FCA41E, bytes); //Same exact thing as above.


You can do other things to get it to work with datagridview, I'll leave that too the user to decide.




Definitions and Offsets

Definitions!

What are Clients?

It's a player or a 'client' that connects to the server.



Offsets



Credits to whomever found these.

client 0: 0x0110A29C
health: 0x0FCA41E
ammo: 0x0110a62b
vision: 0x0110a293
primary weapon: 0x0110A4FF
secondary weapon: 0x0110A4F7

client 1: 0x0110DC1C
health: 0x00fca69e
ammo: 0x110DFAB
vision: 0x110DC13
primary weapon: 0x110DE7F
secondary weapon: 0x110DE77

client 2: 0x0111159C
health: 0xFCA91E
ammo: 0x111192B
vision: 0x1111593
primary weapon: 0x11117FF
secondary weapon: 0x11117F7

client 3: 0x01114F1C
health: 0xFCAB9E
ammo: 0x11152AB
vision: 0x1114F13
primary weapon: 0x111517F
secondary weapon: 0x1115177

client 4: 0x0111889C
health: 0xFCAE1E
ammo: 0x1118C2B
vision: 0x1118893
primary weapon: 0x1118AFF
secondary weapon: 0x1118AF7

client 5: 0x0111C21C
health: 0xFCB09E
ammo: 0x111C5AB
vision: 0x111C213
primary: 0x111C47F
secondary: 0x111C477


client 6: 0x0111FB9C
health: 0xFCB31E
ammo: 0x111FF2B
vision: 0x111FB93
primary: 0x111FDFF
secondary: 0x111FDF7

client 7: 0x0112351C
health: 0xFCB59E
ammo: 0x11238AB
vison: 0x1123513
primary: 0x112377F
secondary: 0x1123777

client 8: 0x01126E9C
health: 0xFCB81E
ammo: 0x112722B
vison: 0x1126E93
primary: 0x11270FF
secondary: 0x11270F7

client 9: 0x0112A81C
health: 0xFCBA9E
ammo: 0x112ABAB
vision: 0x112A813
primary: 0x112AA7F
secondary: 0x112AA77

client 10: 0x0112E19C
health: 0xFCBD1E
ammo: 0x112E52B
vision: 0x112E193
primary: 0x112E3FF
secondary: 0x112E3F7

client 11: 0x01131B1C
health: 0xFCBF9E
ammo: 0x1131EAB
vision: 0x1131B13
primary: 0x1131D7F
secondary: 0x1131D77

client 12: 0x0113549C
health: 0xFCC21E
ammo: 0x113582B
vision: 0x1135493
primary: 0x11356FF
secondary: 0x11356F7

client 13: 0x1138E1C
health: 0xFCC49E
ammo: 0x11391AB
vision: 0x1138E13
primary: 0x113907F
secondary: 0x1139077

client 14: 0x113C79C
health: 0xFCC71E
ammo: 0x113CB2B
vision: 0x113C793
primary: 0x113C9FF
secondary: 0x113C9F7

client 15: 0x114011C
health: 0xFCC99E
ammo: 0x11404AB
vision: 0x1140113
primary: 0x114037F
secondary: 0x1140377

client 16: 0x1143A9C
health: 0xFCCC1E
ammo: 0x1143E2B
vision: 0x1143A93
primary: 0x1143CFF
secondary: 0x1143CF7

client 17: 0x114741C
health: 0xFCCE9E
ammo: 0x11477AB
vision: 0x1147413
primary: 0x114767F
secondary: 0x1147677




Thanks to You must login or register to view this content.
Last edited by Freezee ; 04-25-2017 at 01:12 AM. Reason: Changed layout.

The following 2 users say thank you to Freezee for this useful post:

anxify, XxBlud23xX
10-25-2015, 07:05 AM #11
LovleyPurpz
Save Point
Why only one person thanks this
10-29-2015, 03:27 AM #12
Freezee
Bounty hunter
Originally posted by LovleyPurpz View Post
Why only one person thanks this


You tell me.
10-31-2015, 05:01 PM #13
Default Avatar
Bch
Guest
Originally posted by Freezee View Post
You tell me.


Heres some suggestions/improvements..
1) The locations you are writing to memory are called "Addresses". They are commonly known in the modding community as "offsets", however an offset describes a value in relation to another value. Therefore in regards to call of duty, an example could be the clients. Lets call client 0 (0x01780F2Cool Man (aka Tustin) our main address and our client 0's name address is 0x178646C. Therefore, our client 0's name offset is the value in relation to our main address. Therefore we do name address (0x178646C) - main address (0x01780F28= our offset, which in this case is 0x5544. (BO2 Addresses)

2) How it's stored in memory, each "client" is stored as a structure. A specific sequence in memory, which has a certain size. The following i got from a BO2 1,19 offset thread so credit to them;
playerState - 0x01780F28 //This is our "main" client 0 Address. Where the structure starts.
playerState_size - 0x5808 //This is the size of the structure. The structure is replicated in memory 18 times (max number of players in a game). Which stores information about each individual client.

Name in Game - 0x5544 //Offset in relation to our Address
Clantag - 0x55B0
Health - 0x18
ButtonMonitoring - 0x569C
Freeze Player - 0x5694
Kill Player - 0x30
Speed - 0x54F0
Lag - 0x543B
Perks - 0x548
3rd Person - 0x84
Invisible - 0xFD
TeleportPlayer - 0x28
Change Team - 0x5507
Earthquake - 0x15F
Origin - 0x28
Alive - 0x55D0
Angles - 0x56BC
PrimaryAmmo - 0x43C
SecondaryAmmo - 0x438
LethalAmmo - 0x440
Killstreak 1 - 0x42B
Killstreak 2 - 0x4302
Killstreak 3 - 0x434
PrimmaryCamo - 0x2A3
SecondaryCamo - 0x2DB
Auto Prone - 0x57F0

So seems as all clients are identical in memory. We can create a simple function which will do the maths for us, and save us alot of time and memory storing all addresses.
uint CalculateAddress(uint Address, int Client, uint Offset)
{

//This adds up address + the offset (aka mod).
//Then adds the client number, * by the size of the structure which in this case is 0x5808.
//Then returns the total value.

return Address + Offset + ((uint)Client * 0x580Cool Man (aka Tustin);

}

PS3API PS3 = new PS3API(SelectAPI.ControlConsole);//Create an instance of PS3API and set the default to CCAPI.

Then you can simply use it as follows, in this case it will simply populate a list box.

listbox1.Items.Clear();//Empty the listbox
for (int i = 0; i < 18; i++)//Loop from 0-17, because you can have 18 clients.
{
//I will break this into steps to make it clearer, but you could put it all in one line
uint AddressToRead = CalculateAddress(0x01780F28, i, 0x5544);//Address is our client 0 main address, i is the client number which increases, 0x5544 is the Name offset.
string PlayersName = PS3.Extension.ReadString(AddressToRead);//Read the name from the address
listbox1.Items.Add(PlayersName);//Add the players name to the list box.

}
Last edited by Bch ; 10-31-2015 at 06:46 PM.
01-14-2016, 10:41 PM #14
Thank You
04-25-2017, 07:33 AM #15
Freezee
Bounty hunter
Updated to change the layout and fixed some text / wording issues;.

Copyright © 2024, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo