Post: [RELEASE] Modern Warfare 3 - Buttons Monitoring All Clients
04-10-2013, 07:25 PM #1
(adsbygoogle = window.adsbygoogle || []).push({}); Hello!

I'll not write the same things like i've do in the Black Ops 2 Thread's (You must login or register to view this content.) , but like you could see it's a bit the same code for black ops 2. Just i have change all unsigned int for buttons and some offsets because black ops 2 is a bit different.

    
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Buttons_Monitoring_All_Clients
{

// Made by iMCSx for Playstation 3.
// Credit to : Im A Hooker (Se7enSins) , for his Xbox Mw2 Release.
// Youtube.com/iMCSx - Nextgenupdate.com - www.FrenchModdingTeam.com

public partial class Form1 : Form
{
// Define Custom Timer (I don't like use this, i use a custom hard way)
// It is ok for test and use for fun
private Timer StartiMCSxButtons = new Timer();

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

public class Buttons
{
//Define Buttons For Modern Warfare 3
public static uint
X = 1024,
O = 512,
Square = 2097152,
L3 = 139264,
R3 = 262144,
L2 = 32768,
R2 = 16384,
Start = 128,
L1 = 2056,
R1 = 65536,
Crouch = 512,
Prone = 256;
}

public class PS3Types
{
// Create Connect Types
public static int StartButton;
public static byte[] BIND = new byte[4];
public static uint[] processIDs;
public static uint ProcessID;
}

public void ConnectAttach()
{
try
{
PS3TMAPI.InitTargetComms();
PS3TMAPI.Connect(0, null);
PS3TMAPI.GetProcessList(0, out PS3Types.processIDs);
ulong uProcess = PS3Types.processIDs[0];
PS3Types.ProcessID = Convert.ToUInt32(uProcess);
PS3TMAPI.ProcessAttach(0, PS3TMAPI.UnitType.PPU, PS3Types.ProcessID);
PS3TMAPI.ProcessContinue(0, PS3Types.ProcessID);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

private uint getPlayerState(int clientIndex)
{
// Get the playerState from entities.
byte[] iMCSxDest = new byte[4];
PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, PS3Types.ProcessID, 0, 0x000FCA280 + ((uint)clientIndex * 0x280) + 0x158, ref iMCSxDest);
Array.Reverse(iMCSxDest);
uint Next = BitConverter.ToUInt32(iMCSxDest, 0);
return Next;
}

private uint UseButtonMonitoring(int client)
{
// Get buttons value.
return (getPlayerState(client) + 0x3609);
}

private uint DetectButton(int clientID)
{
// Reverse Byte[] to UInt32 and detect them.
PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, PS3Types.ProcessID, 0, UseButtonMonitoring(clientID), ref PS3Types.BIND);
return System.BitConverter.ToUInt32(PS3Types.BIND, 0);
}

private void button1_Click(object sender, EventArgs e)
{
ConnectAttach(); // Connect First your debug.
StartiMCSxButtons.Interval = 300;
StartiMCSxButtons.Enabled = true;
StartiMCSxButtons.Tick += StartiMCSxButtons_Tick;
StartiMCSxButtons.Start(); // Start Event.
}

private void button2_Click(object sender, EventArgs e)
{
StartiMCSxButtons.Enabled = false;
StartiMCSxButtons.Stop(); // Stop Event.
}

void StartiMCSxButtons_Tick(object sender, EventArgs e)
{
uint client0 = DetectButton(0); // Must be in a loop.
uint client1 = DetectButton(1); // Exemple Other Client

if (client0 == Buttons.X)
MessageBox.Show("Client 0 Press the buttons X !");
if (client0 == Buttons.R1 + Buttons.L1) // Example 2 Buttons Pressed in the same moment.
MessageBox.Show("Client 0 Press the buttons R1 + L1 !");
if (client1 == Buttons.X)
MessageBox.Show("Client 1 Press the buttons X !");
}
}
}




This method work for all Call of duty. If you want find this for Black Ops 1 or Modern Warfare 2 , you'll need to find the g_entity for these game , and check if all value for buttons change. For get a value you could do this in a timer :

    
uint client0 = DetectButton(0);
if (client0 != 00000000)
MessageBox.Show("Value: " + client0.ToString());


Credit : Im A Hooker , For his mw2 xbox release base.

Don't forget to check the Black Ops 2 Thread's You must login or register to view this content. for more explanation.

Have Fun.

The following 22 users say thank you to iMCSx for this useful post:

-Walk-, Ansity., BaSs_HaXoR, YouAppreciateMe, FAKA_ELITE, FM|T Enstone, FM|T xDevOpS, FM|T ZoRo, Gendjisan, HolyCreepsHacks, iMrDannyModz, KoS_Riitalo, Mango_Knife, MW2TopTenWORLD, Nosawilsno15, O-H, SC58, ShutTheCrunchUp, SnaY, Steeve, Whos Your Host, xePixTvx

The following user groaned iMCSx for this awful post:

Alexon
04-10-2013, 09:38 PM #2
YouAppreciateMe
I Be That Pretty Mother****er
Originally posted by FM
Hello!

I'll not write the same things like i've do in the Black Ops 2 Thread's (You must login or register to view this content.) , but like you could see it's a bit the same code for black ops 2. Just i have change all unsigned int for buttons and some offsets because black ops 2 is a bit different.

    
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace Buttons_Monitoring_All_Clients
{

// Made by iMCSx for Playstation 3.
// Credit to : Im A Hooker (Se7enSins) , for his Xbox Mw2 Release.
// Youtube.com/iMCSx - Nextgenupdate.com - www.FrenchModdingTeam.com

public partial class Form1 : Form
{
// Define Custom Timer (I don't like use this, i use a custom hard way)
// It is ok for test and use for fun
private Timer StartiMCSxButtons = new Timer();

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{

}

public class Buttons
{
//Define Buttons For Modern Warfare 3
public static uint
X = 1024,
O = 512,
Square = 2097152,
L3 = 139264,
R3 = 262144,
L2 = 32768,
R2 = 16384,
Start = 128,
L1 = 2056,
R1 = 65536,
Crouch = 512,
Prone = 256;
}

public class PS3Types
{
// Create Connect Types
public static int StartButton;
public static byte[] BIND = new byte[4];
public static uint[] processIDs;
public static uint ProcessID;
}

public void ConnectAttach()
{
try
{
PS3TMAPI.InitTargetComms();
PS3TMAPI.Connect(0, null);
PS3TMAPI.GetProcessList(0, out PS3Types.processIDs);
ulong uProcess = PS3Types.processIDs[0];
PS3Types.ProcessID = Convert.ToUInt32(uProcess);
PS3TMAPI.ProcessAttach(0, PS3TMAPI.UnitType.PPU, PS3Types.ProcessID);
PS3TMAPI.ProcessContinue(0, PS3Types.ProcessID);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

private uint getPlayerState(int clientIndex)
{
// Get the playerState from entities.
byte[] iMCSxDest = new byte[4];
PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, PS3Types.ProcessID, 0, 0x000FCA280 + ((uint)clientIndex * 0x280) + 0x158, ref iMCSxDest);
Array.Reverse(iMCSxDest);
uint Next = BitConverter.ToUInt32(iMCSxDest, 0);
return Next;
}

private uint UseButtonMonitoring(int client)
{
// Get buttons value.
return (getPlayerState(client) + 0x3609);
}

private uint DetectButton(int clientID)
{
// Reverse Byte[] to UInt32 and detect them.
PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, PS3Types.ProcessID, 0, UseButtonMonitoring(clientID), ref PS3Types.BIND);
return System.BitConverter.ToUInt32(PS3Types.BIND, 0);
}

private void button1_Click(object sender, EventArgs e)
{
ConnectAttach(); // Connect First your debug.
StartiMCSxButtons.Interval = 300;
StartiMCSxButtons.Enabled = true;
StartiMCSxButtons.Tick += StartiMCSxButtons_Tick;
StartiMCSxButtons.Start(); // Start Event.
}

private void button2_Click(object sender, EventArgs e)
{
StartiMCSxButtons.Enabled = false;
StartiMCSxButtons.Stop(); // Stop Event.
}

void StartiMCSxButtons_Tick(object sender, EventArgs e)
{
uint client0 = DetectButton(0); // Must be in a loop.
uint client1 = DetectButton(1); // Exemple Other Client

if (client0 == Buttons.X)
MessageBox.Show("Client 0 Press the buttons X !");
if (client0 == Buttons.R1 + Buttons.L1) // Example 2 Buttons Pressed in the same moment.
MessageBox.Show("Client 0 Press the buttons R1 + L1 !");
if (client1 == Buttons.X)
MessageBox.Show("Client 1 Press the buttons X !");
}
}
}




This method work for all Call of duty. If you want find this for Black Ops 1 or Modern Warfare 2 , you'll need to find the g_entity for these game , and check if all value for buttons change. For get a value you could do this in a timer :

    
uint client0 = DetectButton(0);
if (client0 != 00000000)
MessageBox.Show("Value: " + client0.ToString());


Credit : Im A Hooker , For his mw2 xbox release base.

Don't forget to check the Black Ops 2 Thread's You must login or register to view this content. for more explanation.

Have Fun.


I now see why you're a part of the FrenchModding|Team
cause this is just :boss:
04-10-2013, 10:30 PM #3
KoS_Riitalo
Do a barrel roll!
Gg cs Smile
04-11-2013, 12:01 PM #4
This isn't really needed. We can monitor all clients via the clientstate Winky Winky the clientstate is also a lot easier to find.
But oh.. you used integers instead of hex strings. Hex strings have some advantages in some situations Winky Winky
04-11-2013, 12:15 PM #5
Originally posted by Anera View Post
This isn't really needed. We can monitor all clients via the clientstate Winky Winky the clientstate is also a lot easier to find.
But oh.. you used integers instead of hex strings. Hex strings have some advantages in some situations Winky Winky


Mmh , this code get the pointers for get the clientState of the g_client :yds:

If you do 0x0110A280 + (clientNum * 0x3980) + 0x3609 OR 0x00FCA280 + (clientNum * 0x280) + 0x158 for get 4 bytes for the address it's the SAME things.

I would just use the g_entity for base and get clients , and not the "clientState".
04-11-2013, 12:32 PM #6
Originally posted by FM
Mmh , this code get the pointers for get the clientState of the g_client :yds:

If you do 0x0110A280 + (clientNum * 0x3980) + 0x3609 OR 0x00FCA280 + (clientNum * 0x280) + 0x158 for get 4 bytes for the address it's the SAME things.

I would just use the g_entity for base and get clients , and not the "clientState".


so you wanna tell me 0x0110A280 + 0x3609 is the same as 0x00FCA280 + 0x158 ? lol
even if its the "pointer" there is no reason for you to re-release this. This has already been released on the xbox (Bad Luck Brian also released it on NGU for ps3...). with the correct offset + 0x3608. The 1 byte your code isn't reading is actually pretty important Winky Winky
04-11-2013, 01:30 PM #7
Originally posted by Anera View Post
so you wanna tell me 0x0110A280 + 0x3609 is the same as 0x00FCA280 + 0x158 ? lol
even if its the "pointer" there is no reason for you to re-release this. This has already been released on the xbox (Bad Luck Brian also released it on NGU for ps3...). with the correct offset + 0x3608. The 1 byte your code isn't reading is actually pretty important Winky Winky


It's the same , you don't understand how to work a "uint method" with a return ? lol

    
[COLOR=#000000]private uint getPlayerState(int clientIndex)
{
// Get the playerState from entities.
byte[] iMCSxDest = new byte[4];
PS3TMAPI.ProcessGetMemory(0, PS3TMAPI.UnitType.PPU, PS3Types.ProcessID, 0, 0x000FCA280 + ((uint)clientIndex * 0x280) + 0x158, ref iMCSxDest);
Array.Reverse(iMCSxDest);
uint Next = BitConverter.ToUInt32(iMCSxDest, 0); return Next;
}[/COLOR][COLOR=#000000]
[/COLOR]


this return 0x0110A280.

I have also saw the Bad Luck Brian's thread , and first the things what i've saw, he wrote in vb.net , and second he give directly the clientState + the length for get the buttons monitoring added , not the best way for learn.

And for the correct offset , yes the game work every +0x04 then i've just added + 0x01 , personal choice , it is a crime ?

I've done it in my COD Ultimate Tool , always in Alpha version , i have a big slot only for buttons monitoring and all work PERFECTLY.
For All Clients , already tested when i give this to 10 players in the same moment , none bug.

I gave credit for hooker, i use this since a long time ago ps3/xbox.

Peace.
Last edited by iMCSx ; 04-11-2013 at 02:58 PM.
04-12-2013, 05:41 PM #8
AmmarA1
I defeated!
Very good thank you!
04-14-2013, 10:17 PM #9
Have fun
04-18-2013, 12:05 AM #10
you are the best god hop

Copyright © 2024, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo