Just a simple program if you want to advertise something on your lobbys Credits to: GCAluminizing for his explained tutorial about hudelems Me for fixing code, making the program and editing the shader + text position. You need MW2 on TU8 and XRPC.xex as plugin to use this. Picture: In-game: Source: 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; using XRPCLib; namespace HudElem { public partial class Form1 : Form { XRPC Jtag = new XRPC(); public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Jtag.Connect(); //connect to default console } private void button2_Click(object sender, EventArgs e) { Jtag.Call(0x82254940, -1, 0, "s loc_warnings 0"); Jtag.Call(0x82254940, -1, 0, "s loc_warningsUI 0"); //disable unlocalized text uint elem = createElem(0); string elemtext = "" + textBox1.Text; setText(elem, uintBytes(createText(elemtext)), 1, 20, 330, 0, 1); spawnElem(0, elem); //send text uint elemshader = createElem(0); uint shader = getMaterialIndex("black"); setIcon(elemshader, shader, 1000, 23, 250, 0, 1); spawnElem(0, elemshader); //sent black shader } public static class HElems { public static uint locString = 0x8220C838, material = 0x8220C9F8, elem = 0x821DF9C0, xOffset = 0x08, yOffset = 0x04, textOffset = 0x84, fontOffset = 0x28, fontSizeOffset = 0x14, colorOffset = 0x34, relativeOffset = 0x2c, widthOffset = 0x48, heightOffset = 0x44, shaderOffset = 0x4C, alignOffset = 0x30; } public uint createElem(int client) { return Jtag.Call(HElems.elem, client, 0); } public uint spawnElem(int client, uint elemAddress) { Jtag.SetMemory(elemAddress + 0xA8, ReverseBytes(BitConverter.GetBytes(client))); return elemAddress; } public uint createText(string text) { return Jtag.Call(HElems.locString, text); } public uint getMaterialIndex(string material) { return Jtag.Call(HElems.material, material); } public byte[] uintBytes(uint input) { byte[] data = BitConverter.GetBytes(input); Array.Reverse(data); return data; } public byte[] ReverseBytes(byte[] inArray) { byte temp; int highCtr = inArray.Length - 1; for (int ctr = 0; ctr < inArray.Length / 2; ctr++) { temp = inArray[ctr]; inArray[ctr] = inArray[highCtr]; inArray[highCtr] = temp; highCtr -= 1; } return inArray; } public void setIcon(uint elem, uint shader, int width, int height, float x, float y, uint align, float sort = 0, int r = 255, int g = 255, int b = 255, int a = 255) { Jtag.SetMemory(elem, new byte[] { 0x00, 0x00, 0x00, 0x04 }); Jtag.SetMemory(elem + HElems.relativeOffset, uintBytes(0x05)); Jtag.SetMemory(elem + HElems.relativeOffset - 4, uintBytes(0x06)); Jtag.SetMemory(elem + HElems.shaderOffset, uintBytes(shader)); Jtag.SetMemory(elem + HElems.heightOffset, ReverseBytes(BitConverter.GetBytes(height))); Jtag.SetMemory(elem + HElems.widthOffset, ReverseBytes(BitConverter.GetBytes(width))); Jtag.SetMemory(elem + HElems.alignOffset, uintBytes(align)); Jtag.SetMemory(elem + HElems.colorOffset, new byte[] { BitConverter.GetBytes(r)[0], BitConverter.GetBytes(g)[0], BitConverter.GetBytes(B)[0], BitConverter.GetBytes(a)[0] }); Jtag.SetMemory(elem + HElems.textOffset + 4, ReverseBytes(BitConverter.GetBytes(sort))); Jtag.SetMemory(elem + HElems.xOffset, ReverseBytes(BitConverter.GetBytes(x))); Jtag.SetMemory(elem + HElems.yOffset, ReverseBytes(BitConverter.GetBytes(y))); } public void setText(uint elem, byte[] text, uint font, float fontScale, float x, float y, uint align, int r = 255, int g = 255, int b = 255, int a = 255) { Jtag.SetMemory(elem, new byte[] { 0x00, 0x00, 0x00, 0x01 }); Jtag.SetMemory(elem + HElems.textOffset, text); Jtag.SetMemory(elem + HElems.relativeOffset, uintBytes(0x05)); Jtag.SetMemory(elem + HElems.relativeOffset - 4, uintBytes(0x06)); Jtag.SetMemory(elem + HElems.fontOffset, uintBytes(font)); Jtag.SetMemory(elem + HElems.alignOffset, uintBytes(align)); Jtag.SetMemory(elem + HElems.textOffset + 4, new byte[] { 0x40, 0x00 }); Jtag.SetMemory(elem + HElems.fontSizeOffset, ReverseBytes(BitConverter.GetBytes(fontScale))); Jtag.SetMemory(elem + HElems.xOffset, ReverseBytes(BitConverter.GetBytes(x))); Jtag.SetMemory(elem + HElems.yOffset, ReverseBytes(BitConverter.GetBytes(y))); Jtag.SetMemory(elem + HElems.colorOffset, new byte[] { BitConverter.GetBytes(r)[0], BitConverter.GetBytes(g)[0], BitConverter.GetBytes(B)[0], BitConverter.GetBytes(a)[0] }); } } } Download: https://mega.co.nz/#...OnOADgVwhHGpSbI