Post: Full Typewriter Message Source + Tutorial
10-24-2013, 10:35 PM #1
xRevolutions
Pokemon Trainer
(adsbygoogle = window.adsbygoogle || []).push({}); Hello NGU,

Today, is seen Aneras Typewriter Release and i know he mean me with reference in my Video.


See his Thread here
You must login or register to view this content.

Anyways, he made a Mistake in the Leveltime thats why im going to Release it. I havnt released it yet because i wanted ppl to Figure it out. I just showed that FM|T isnt the only one who can get nice stuff Happy

At first, what is a Typewriter?
Everyone know it from MW2 1.11 (GSC Times) the Welcome Message. It was used in every Patch and now we have it back in RTE. I
A little Video on how it looks



Lets Start!

What you need?
- Visual Studio C# Project with PS3 Connection Things (Set and Get Memory Function)
You must login or register to view this content.

Step 1:

You need at first Chocos RPC and Hud Elements. You can get them here : You must login or register to view this content.

Step 2:
Put this Functions somewhere in your Project Enzo
            public static class HElems
{
public static UInt32
xOffset = 0x08,
yOffset = 0x04,
textOffset = 0x84,
fontOffset = 0x24,
fontSizeOffset = 0x14,
colorOffset = 0x30,
relativeOffset = 0x2c,
widthOffset = 0x44,
heightOffset = 0x48,
shaderOffset = 0x4c,
GlowColor = 0x8C,
alignOffset = 0x2C,
fadeStartTime = 0x38,
fadeTime = 0x3c,
label = 0x40,
clientOffset = 0xA8,
fromWidth = 0x50,
fromHeight = 0x54,
scaleStartTime = 0x58,
scaleTime = 0x5c,
fromX = 0x60,
fromY = 0x64,
fromAlignOrg = 0x68,
fromAlignScreen = 0x6c,
moveStartTime = 0x70,
moveTime = 0x74,
time = 0x78,
duration = 0x7c,
value = 0x80,
sort = 0x88,
fxBirthTime = 0x90,
fxLetterTime = 0x94,
fxDecayStartTime = 0x98,
fxDecayDuration = 0x9c,
soundID = 0xa0,
flags = 0xa4;
}
public void doTypeWriter(UInt32 clientIndex, String text,Single X = 100, Single Y = 300, Int32[] rgba = { 255,255,255,255 } ,Int32[] glow)
{
UInt32 Elem = HudElem_Alloc();
SetMemory(Elem, new Byte[] { 0x00, 0x00, 0x00, 0x01 });
SetMemory(Elem + HElems.textOffset, uintBytes(createText("")));
SetMemory(Elem + HElems.relativeOffset, uintBytes(0x05));
SetMemory(Elem + HElems.relativeOffset - 4, uintBytes(0x06));
SetMemory(Elem + HElems.fontOffset, uintBytes(10));
SetMemory(Elem + HElems.alignOffset, uintBytes(5));
SetMemory(Elem + HElems.textOffset + 4, new Byte[] { 0x40, 0x00 });
SetMemory(Elem + HElems.fontSizeOffset, ReverseBytes(BitConverter.GetBytes((float)2)));
SetMemory(Elem + HElems.xOffset, ReverseBytes(BitConverter.GetBytes(X)));
SetMemory(Elem + HElems.yOffset, ReverseBytes(BitConverter.GetBytes(Y)));
SetMemory(Elem + HElems.colorOffset, new Byte[] { BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(255)[0] });
SetMemory(Elem + HElems.GlowColor, new Byte[] { BitConverter.GetBytes(glow[0])[0], BitConverter.GetBytes(glow[1])[0], BitConverter.GetBytes(glow[2])[0], BitConverter.GetBytes(glow[3])[0] });
SetMemory(Elem + HElems.clientOffset, ReverseBytes(BitConverter.GetBytes(clientIndex)));
WriteInt32(Elem + HElems.fxBirthTime, getLevelTime());
WriteInt32(Elem + HElems.fxLetterTime, 100);
WriteInt32(Elem + HElems.fxDecayStartTime, 4000);
WriteInt32(Elem + HElems.fxDecayDuration, 1000);
WriteInt32(Elem + HElems.flags, 1);
SetMemory(Elem + HElems.textOffset, uintBytes(createText(text)));
}
public Int32 getLevelTime()
{
Byte[] LevelTime = new Byte[4];
GetMemory(0xFC3DB0,LevelTime);
Array.Reverse(LevelTime, 0, 4);
return BitConverter.ToInt32(LevelTime, 0);
}
public UInt32 HudElem_Alloc()
{
for (UInt32 i = 0xF0E10C; i < 0xF3B10C; i += 0xB4)
{
Byte[] buff = new Byte[4];
GetMemory(i, buff);
if (buff[3] == 0)
{
SetMemory(i, new Byte[0xB4]);
return i;
}
}
return 0;
}
public void WriteInt32(uint offset, int input)
{
Byte[] buff = new Byte[4];
BitConverter.GetBytes(input).CopyTo(buff, 0);
Array.Reverse(buff, 0, 4);
SetMemory(offset, buff);
}

Here a Pastebin if you prefer it
You must login or register to view this content.

Step 3:
Setting up the Typewriter Message Smile

Here is the Syntax of the Function, call it in a Button, Mod Menu or whatever :p
    doTypeWriter(< clientnumber >, < text >, < X Position > , < Y Position > , < RGBA Colors Int32 Array > , < RGBA GlowColors Int32 Array >Winky Winky


Now we want to use it, so call it like this as Example
    doTypeWriter(0, Welcome to my Modded Lobby, 100 , 300 , new Int32[] { 255, 255, 255, 255 } , new Int32[] { 0, 0, 255, 255 })



Some extra Stuff:
Therifboy and me Created a Welcome Message Function that is centered. The Funciton is not perfect cause it calculate the Text length. Anyways it could be usefull for you Winky Winky

Put this in your Project somewhere:
            public void WelcomeMessage(UInt32 clientIndex, String Text1, String Text2, String Text3, Int32[] glowColor)
{
UInt32 elem = HudElem_Alloc();
SetMemory(Elem, new Byte[] { 0x00, 0x00, 0x00, 0x01 });
SetMemory(Elem + HElems.textOffset, uintBytes(createText("")));
SetMemory(Elem + HElems.relativeOffset, uintBytes(0x05));
SetMemory(Elem + HElems.relativeOffset - 4, uintBytes(0x06));
SetMemory(Elem + HElems.fontOffset, uintBytes(10));
SetMemory(Elem + HElems.alignOffset, uintBytes(5));
SetMemory(Elem + HElems.textOffset + 4, new Byte[] { 0x40, 0x00 });
SetMemory(Elem + HElems.fontSizeOffset, ReverseBytes(BitConverter.GetBytes((float)2)));
SetMemory(Elem + HElems.xOffset, ReverseBytes(BitConverter.GetBytes(150)));
SetMemory(Elem + HElems.yOffset, ReverseBytes(BitConverter.GetBytes(300)));
SetMemory(Elem + HElems.colorOffset, new Byte[] { BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(255)[0] });
SetMemory(Elem + HElems.GlowColor, new Byte[] { BitConverter.GetBytes(glow[0])[0], BitConverter.GetBytes(glow[1])[0], BitConverter.GetBytes(glow[2])[0], BitConverter.GetBytes(glow[3])[0] });
SetMemory(Elem + HElems.clientOffset, ReverseBytes(BitConverter.GetBytes(clientIndex)));
WriteInt32(elem + HElems.fxBirthTime, getLevelTime());
WriteInt32(elem + HElems.fxLetterTime, 80);
WriteInt32(elem + HElems.fxDecayStartTime, 9500);
WriteInt32(elem + HElems.fxDecayDuration, 1000);
WriteInt32(elem + HElems.flags, 1);
SetMemory(elem + HElems.textOffset, UInt32ToBytes(createText(Text1 + "\n" + CenterTypeWriterString(Text2, Text1.Length) + "\n" + CenterTypeWriterString(Text3, Text1.Length))));
}
public String CenterTypeWriterString(String text, Int32 length)
{
Int32 calc = (length - text.Length) / 2;
String MyText = String.Empty;
for (Int32 i = 0; i <= calc; i++)
{
MyText += " ";
}
return MyText + " " + text;
}

Here in a Pastebin again if you prefer it
You must login or register to view this content.

How to use it: (Do the first text in the Message longer than the other, else it doesnt work correctly :P)

Syntax of the Function
    WelcomeMessage(< clientnumber >, < Text 1 >, < Text 2 >, < Text 3 >, < RGBA Colors Int32 Array >Winky Winky


Example Function for Button or whatever again:
    WelcomeMessage(0, "Welcome to my Modded MW3 Lobby", "Subcribe xRevolutionsHD", "Created by xRevolution", new Int32[] { 255, 255, 255, 255 })


Thats is the Typewriter.
I hope it's well explained for you!
If you have still Questions then feel free to ask them here :y:

Credits:

    
- xRevolution
- Therifboy (Motivated me to find it. Helping with some things and find with me LevelTime Offset)
- Hacksource (Full Hud Elements Struct)
- Choco (RPC and Huds)
- iMCSx (WriteInt32 Function and connecting things)
(adsbygoogle = window.adsbygoogle || []).push({});

The following 18 users say thank you to xRevolutions for this useful post:

{H} | Exception, ▶DaOriginal209◀, Ansity., BaSs_HaXoR, EliteHackzPS3, ImPiffHD, InfinityISB4CK, MGMoDzHD, O-H, SnaY, Sticky, therifboy, TimeBomb., WeJailbreakYou, Whos Your Host, Fatality, zZHackzZ
10-24-2013, 10:42 PM #2
good job, its better the the one i had
10-24-2013, 11:52 PM #3
Sticky
Mary J Wannnnna
Originally posted by xrevolutions View Post
hello ngu,

today, is seen aneras typewriter release and i know he mean me with reference in my video.


see his thread here
You must login or register to view this content.

anyways, he made a mistake in the leveltime thats why im going to release it. I havnt released it yet because i wanted ppl to figure it out. I just showed that fm|t isnt the only one who can get nice stuff :d

at first, what is a typewriter?
everyone know it from mw2 1.11 (gsc times) the welcome message. It was used in every patch and now we have it back in rte. I
a little video on how it looks



lets start!

What you need?
- visual studio c# project with ps3 connection things (set and get memory function)
You must login or register to view this content.

step 1:

you need at first chocos rpc and hud elements. You can get them here : You must login or register to view this content.

step 2:
put this functions somewhere in your project Enzo
            public static class helems
{
public static uint32
xoffset = 0x08,
yoffset = 0x04,
textoffset = 0x84,
fontoffset = 0x24,
fontsizeoffset = 0x14,
coloroffset = 0x30,
relativeoffset = 0x2c,
widthoffset = 0x44,
heightoffset = 0x48,
shaderoffset = 0x4c,
glowcolor = 0x8c,
alignoffset = 0x2c,
fadestarttime = 0x38,
fadetime = 0x3c,
label = 0x40,
fromwidth = 0x50,
fromheight = 0x54,
scalestarttime = 0x58,
scaletime = 0x5c,
fromx = 0x60,
fromy = 0x64,
fromalignorg = 0x68,
fromalignscreen = 0x6c,
movestarttime = 0x70,
movetime = 0x74,
time = 0x78,
duration = 0x7c,
value = 0x80,
sort = 0x88,
fxbirthtime = 0x90,
fxlettertime = 0x94,
fxdecaystarttime = 0x98,
fxdecayduration = 0x9c,
soundid = 0xa0,
flags = 0xa4;
}
public void dotypewriter(uint32 clientindex, string text,int32[] glow)
{
uint32 elem = hudelem_alloc();
setmemory(elem, new byte[] { 0x00, 0x00, 0x00, 0x01 });
setmemory(elem + helems.textoffset, uintbytes(createtext("")));
setmemory(elem + helems.relativeoffset, uintbytes(0x05));
setmemory(elem + helems.relativeoffset - 4, uintbytes(0x06));
setmemory(elem + helems.fontoffset, uintbytes(10));
setmemory(elem + helems.alignoffset, uintbytes(align));
setmemory(elem + helems.textoffset + 4, new byte[] { 0x40, 0x00 });
setmemory(elem + helems.fontsizeoffset, reversebytes(bitconverter.getbytes((float)2)));
setmemory(elem + helems.xoffset, reversebytes(bitconverter.getbytes(100)));
setmemory(elem + helems.yoffset, reversebytes(bitconverter.getbytes(300)));
setmemory(elem + helems.coloroffset, new byte[] { bitconverter.getbytes(0)[0], bitconverter.getbytes(0)[0], bitconverter.getbytes(0)[0], bitconverter.getbytes(255)[0] });
setmemory(elem + helems.glowcolor, new byte[] { bitconverter.getbytes(glow[0])[0], bitconverter.getbytes(glow[1])[0], bitconverter.getbytes(glow[2])[0], bitconverter.getbytes(glow[3])[0] });
setmemory(elem + 0xa8, reversebytes(bitconverter.getbytes(clientindex)));
writeint32(elem + helems.fxbirthtime, getleveltime());
writeint32(elem + helems.fxlettertime, 100);
writeint32(elem + helems.fxdecaystarttime, 4000);
writeint32(elem + helems.fxdecayduration, 1000);
writeint32(elem + helems.flags, 1);
setmemory(elem + helems.textoffset, uintbytes(createtext(text)));
}
public int32 getleveltime()
{
byte[] leveltime = new byte[4];
getmemory(0xfc3db0,leveltime);
array.reverse(leveltime, 0, 4);
return bitconverter.toint32(leveltime, 0);
}
public uint32 hudelem_alloc()
{
for (uint32 i = 0xf0e10c; i < 0xf3b10c; i += 0xb4)
{
byte[] buf = new byte[4];
getmemory(i, buff);
if (buf[3] == 0)
{
ps3.setmemory(i, new byte[0xb4]);
return i;
}
}
return 0;
}
public void writeint32(uint offset, int input)
{
byte[] buff = new byte[4];
bitconverter.getbytes(input).copyto(buff, 0);
array.reverse(buff, 0, 4);
setmemory(offset, buff);
}

here a pastebin if you prefer it
You must login or register to view this content.

step 3:
setting up the typewriter message Smile

here is the syntax of the function, call it in a button, mod menu or whatever :p
    dotypewriter(< clientnumber >, < text >, < rgba colors int32 array >Winky Winky


now we want to use it, so call it like this as example
    dotypewriter(0, "welcome to my modded lobby", new int32[] { 255, 255, 255, 255 })



some extra stuff:
therifboy and me created a welcome message function that is centered. The funciton is not perfect cause it calculate the text length. Anyways it could be usefull for you Winky Winky

put this in your project somewhere:
            public void welcomemessage(uint32 clientindex, string text1, string text2, string text3, int32[] glowcolor)
{
uint32 elem = hudelem_alloc();
setmemory(elem, new byte[] { 0x00, 0x00, 0x00, 0x01 });
setmemory(elem + helems.textoffset, uintbytes(createtext("")));
setmemory(elem + helems.relativeoffset, uintbytes(0x05));
setmemory(elem + helems.relativeoffset - 4, uintbytes(0x06));
setmemory(elem + helems.fontoffset, uintbytes(10));
setmemory(elem + helems.alignoffset, uintbytes(align));
setmemory(elem + helems.textoffset + 4, new byte[] { 0x40, 0x00 });
setmemory(elem + helems.fontsizeoffset, reversebytes(bitconverter.getbytes((float)2)));
setmemory(elem + helems.xoffset, reversebytes(bitconverter.getbytes(150)));
setmemory(elem + helems.yoffset, reversebytes(bitconverter.getbytes(300)));
setmemory(elem + helems.coloroffset, new byte[] { bitconverter.getbytes(0)[0], bitconverter.getbytes(0)[0], bitconverter.getbytes(0)[0], bitconverter.getbytes(255)[0] });
setmemory(elem + helems.glowcolor, new byte[] { bitconverter.getbytes(glow[0])[0], bitconverter.getbytes(glow[1])[0], bitconverter.getbytes(glow[2])[0], bitconverter.getbytes(glow[3])[0] });
setmemory(elem + 0xa8, reversebytes(bitconverter.getbytes(clientindex)));
writeint32(elem + helems.fxbirthtime, getleveltime());
writeint32(elem + helems.fxlettertime, 80);
writeint32(elem + helems.fxdecaystarttime, 9500);
writeint32(elem + helems.fxdecayduration, 1000);
writeint32(elem + helems.flags, 1);
setmemory(elem + helems.textoffset, uint32tobytes(createtext(text1 + "\n" + centertypewriterstring(text2, text1.length) + "\n" + centertypewriterstring(text3, text1.length))));
}
public string centertypewriterstring(string text, int32 length)
{
int32 calc = (length - text.length) / 2;
string mytext = string.empty;
for (int32 i = 0; i <= calc; i++)
{
mytext += " ";
}
return mytext + " " + text;
}

here in a pastebin again if you prefer it
You must login or register to view this content.

how to use it: (do the first text in the message longer than the other, else it doesnt work correctly :p)

syntax of the function
    welcomemessage(< clientnumber >, < text 1 >, < text 2 >, < text 3 >, < rgba colors int32 array >Winky Winky


example function for button or whatever again:
    welcomemessage(0, "welcome to my modded mw3 lobby", "subcribe xrevolutionshd", "created by xrevolution", new int32[] { 255, 255, 255, 255 })


thats is the typewriter.
I hope it's well explained for you!
If you have still questions then feel free to ask them here :y:

Credits:

    
- xrevolution
- therifboy (motivated me to find it. Helping with some things and find with me leveltime offset)
- hacksource (full hud elements struct)
- choco (rpc and huds)
- imcsx (writeint32 function and connecting things)


waaay better than anera <3

The following user thanked Sticky for this useful post:

xRevolutions
10-25-2013, 12:02 AM #4
O-H
Bounty hunter
Nevermind *** Everything Works Great...Nice Release
10-25-2013, 12:56 AM #5
xRevolutions
Pokemon Trainer
Originally posted by StickyNGU View Post
waaay better than anera <3


Thank you Smile

Originally posted by H View Post
Nevermind *** Everything Works Great...Nice Release


No Problem m8 if you have still any question about it just write it here Winky Winky
10-25-2013, 10:41 AM #6
This tool is not it only support one person Client?
What do I do if Ijikure the code if you want to send in the All Client?
How to use the checkBox also a way to -1 numeric information is optional.
Please tell me if it is good.
10-25-2013, 01:09 PM #7
Mango_Knife
In my man cave
Originally posted by xRevolutions View Post
Hello NGU,

Today, is seen Aneras Typewriter Release and i know he mean me with reference in my Video.


See his Thread here
You must login or register to view this content.

Anyways, he made a Mistake in the Leveltime thats why im going to Release it. I havnt released it yet because i wanted ppl to Figure it out. I just showed that FM|T isnt the only one who can get nice stuff Happy

At first, what is a Typewriter?
Everyone know it from MW2 1.11 (GSC Times) the Welcome Message. It was used in every Patch and now we have it back in RTE. I
A little Video on how it looks



Lets Start!

What you need?
- Visual Studio C# Project with PS3 Connection Things (Set and Get Memory Function)
You must login or register to view this content.

Step 1:

You need at first Chocos RPC and Hud Elements. You can get them here : You must login or register to view this content.

Step 2:
Put this Functions somewhere in your Project Enzo
            public static class HElems
{
public static UInt32
xOffset = 0x08,
yOffset = 0x04,
textOffset = 0x84,
fontOffset = 0x24,
fontSizeOffset = 0x14,
colorOffset = 0x30,
relativeOffset = 0x2c,
widthOffset = 0x44,
heightOffset = 0x48,
shaderOffset = 0x4c,
GlowColor = 0x8C,
alignOffset = 0x2C,
fadeStartTime = 0x38,
fadeTime = 0x3c,
label = 0x40,
clientOffset = 0xA8,
fromWidth = 0x50,
fromHeight = 0x54,
scaleStartTime = 0x58,
scaleTime = 0x5c,
fromX = 0x60,
fromY = 0x64,
fromAlignOrg = 0x68,
fromAlignScreen = 0x6c,
moveStartTime = 0x70,
moveTime = 0x74,
time = 0x78,
duration = 0x7c,
value = 0x80,
sort = 0x88,
fxBirthTime = 0x90,
fxLetterTime = 0x94,
fxDecayStartTime = 0x98,
fxDecayDuration = 0x9c,
soundID = 0xa0,
flags = 0xa4;
}
public void doTypeWriter(UInt32 clientIndex, String text,Single X = 100, Single Y = 300, Int32[] rgba = { 255,255,255,255 } ,Int32[] glow)
{
UInt32 Elem = HudElem_Alloc();
SetMemory(Elem, new Byte[] { 0x00, 0x00, 0x00, 0x01 });
SetMemory(Elem + HElems.textOffset, uintBytes(createText("")));
SetMemory(Elem + HElems.relativeOffset, uintBytes(0x05));
SetMemory(Elem + HElems.relativeOffset - 4, uintBytes(0x06));
SetMemory(Elem + HElems.fontOffset, uintBytes(10));
SetMemory(Elem + HElems.alignOffset, uintBytes(5));
SetMemory(Elem + HElems.textOffset + 4, new Byte[] { 0x40, 0x00 });
SetMemory(Elem + HElems.fontSizeOffset, ReverseBytes(BitConverter.GetBytes((float)2)));
SetMemory(Elem + HElems.xOffset, ReverseBytes(BitConverter.GetBytes(X)));
SetMemory(Elem + HElems.yOffset, ReverseBytes(BitConverter.GetBytes(Y)));
SetMemory(Elem + HElems.colorOffset, new Byte[] { BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(255)[0] });
SetMemory(Elem + HElems.GlowColor, new Byte[] { BitConverter.GetBytes(glow[0])[0], BitConverter.GetBytes(glow[1])[0], BitConverter.GetBytes(glow[2])[0], BitConverter.GetBytes(glow[3])[0] });
SetMemory(Elem + HElems.clientOffset, ReverseBytes(BitConverter.GetBytes(clientIndex)));
WriteInt32(Elem + HElems.fxBirthTime, getLevelTime());
WriteInt32(Elem + HElems.fxLetterTime, 100);
WriteInt32(Elem + HElems.fxDecayStartTime, 4000);
WriteInt32(Elem + HElems.fxDecayDuration, 1000);
WriteInt32(Elem + HElems.flags, 1);
SetMemory(Elem + HElems.textOffset, uintBytes(createText(text)));
}
public Int32 getLevelTime()
{
Byte[] LevelTime = new Byte[4];
GetMemory(0xFC3DB0,LevelTime);
Array.Reverse(LevelTime, 0, 4);
return BitConverter.ToInt32(LevelTime, 0);
}
public UInt32 HudElem_Alloc()
{
for (UInt32 i = 0xF0E10C; i < 0xF3B10C; i += 0xB4)
{
Byte[] buff = new Byte[4];
GetMemory(i, buff);
if (buff[3] == 0)
{
SetMemory(i, new Byte[0xB4]);
return i;
}
}
return 0;
}
public void WriteInt32(uint offset, int input)
{
Byte[] buff = new Byte[4];
BitConverter.GetBytes(input).CopyTo(buff, 0);
Array.Reverse(buff, 0, 4);
SetMemory(offset, buff);
}

Here a Pastebin if you prefer it
You must login or register to view this content.

Step 3:
Setting up the Typewriter Message Smile

Here is the Syntax of the Function, call it in a Button, Mod Menu or whatever :p
    doTypeWriter(< clientnumber >, < text >, < X Position > , < Y Position > , < RGBA Colors Int32 Array > , < RGBA GlowColors Int32 Array >Winky Winky


Now we want to use it, so call it like this as Example
    doTypeWriter(0, Welcome to my Modded Lobby, 100 , 300 , new Int32[] { 255, 255, 255, 255 } , new Int32[] { 0, 0, 255, 255 })



Some extra Stuff:
Therifboy and me Created a Welcome Message Function that is centered. The Funciton is not perfect cause it calculate the Text length. Anyways it could be usefull for you Winky Winky

Put this in your Project somewhere:
            public void WelcomeMessage(UInt32 clientIndex, String Text1, String Text2, String Text3, Int32[] glowColor)
{
UInt32 elem = HudElem_Alloc();
SetMemory(Elem, new Byte[] { 0x00, 0x00, 0x00, 0x01 });
SetMemory(Elem + HElems.textOffset, uintBytes(createText("")));
SetMemory(Elem + HElems.relativeOffset, uintBytes(0x05));
SetMemory(Elem + HElems.relativeOffset - 4, uintBytes(0x06));
SetMemory(Elem + HElems.fontOffset, uintBytes(10));
SetMemory(Elem + HElems.alignOffset, uintBytes(5));
SetMemory(Elem + HElems.textOffset + 4, new Byte[] { 0x40, 0x00 });
SetMemory(Elem + HElems.fontSizeOffset, ReverseBytes(BitConverter.GetBytes((float)2)));
SetMemory(Elem + HElems.xOffset, ReverseBytes(BitConverter.GetBytes(150)));
SetMemory(Elem + HElems.yOffset, ReverseBytes(BitConverter.GetBytes(300)));
SetMemory(Elem + HElems.colorOffset, new Byte[] { BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(255)[0] });
SetMemory(Elem + HElems.GlowColor, new Byte[] { BitConverter.GetBytes(glow[0])[0], BitConverter.GetBytes(glow[1])[0], BitConverter.GetBytes(glow[2])[0], BitConverter.GetBytes(glow[3])[0] });
SetMemory(Elem + HElems.clientOffset, ReverseBytes(BitConverter.GetBytes(clientIndex)));
WriteInt32(elem + HElems.fxBirthTime, getLevelTime());
WriteInt32(elem + HElems.fxLetterTime, 80);
WriteInt32(elem + HElems.fxDecayStartTime, 9500);
WriteInt32(elem + HElems.fxDecayDuration, 1000);
WriteInt32(elem + HElems.flags, 1);
SetMemory(elem + HElems.textOffset, UInt32ToBytes(createText(Text1 + "\n" + CenterTypeWriterString(Text2, Text1.Length) + "\n" + CenterTypeWriterString(Text3, Text1.Length))));
}
public String CenterTypeWriterString(String text, Int32 length)
{
Int32 calc = (length - text.Length) / 2;
String MyText = String.Empty;
for (Int32 i = 0; i <= calc; i++)
{
MyText += " ";
}
return MyText + " " + text;
}

Here in a Pastebin again if you prefer it
You must login or register to view this content.

How to use it: (Do the first text in the Message longer than the other, else it doesnt work correctly :P)

Syntax of the Function
    WelcomeMessage(< clientnumber >, < Text 1 >, < Text 2 >, < Text 3 >, < RGBA Colors Int32 Array >Winky Winky


Example Function for Button or whatever again:
    WelcomeMessage(0, "Welcome to my Modded MW3 Lobby", "Subcribe xRevolutionsHD", "Created by xRevolution", new Int32[] { 255, 255, 255, 255 })


Thats is the Typewriter.
I hope it's well explained for you!
If you have still Questions then feel free to ask them here :y:

Credits:

    
- xRevolution
- Therifboy (Motivated me to find it. Helping with some things and find with me LevelTime Offset)
- Hacksource (Full Hud Elements Struct)
- Choco (RPC and Huds)
- iMCSx (WriteInt32 Function and connecting things)


Great theard
Should be sticky.
But can you make a tool with that?
10-25-2013, 01:24 PM #8
SnaY
Former Lead of GS
Originally posted by xRevolutions View Post
Hello NGU,

Today, is seen Aneras Typewriter Release and i know he mean me with reference in my Video.


See his Thread here
You must login or register to view this content.

Anyways, he made a Mistake in the Leveltime thats why im going to Release it. I havnt released it yet because i wanted ppl to Figure it out. I just showed that FM|T isnt the only one who can get nice stuff Happy

At first, what is a Typewriter?
Everyone know it from MW2 1.11 (GSC Times) the Welcome Message. It was used in every Patch and now we have it back in RTE. I
A little Video on how it looks



Lets Start!

What you need?
- Visual Studio C# Project with PS3 Connection Things (Set and Get Memory Function)
You must login or register to view this content.

Step 1:

You need at first Chocos RPC and Hud Elements. You can get them here : You must login or register to view this content.

Step 2:
Put this Functions somewhere in your Project Enzo
            public static class HElems
{
public static UInt32
xOffset = 0x08,
yOffset = 0x04,
textOffset = 0x84,
fontOffset = 0x24,
fontSizeOffset = 0x14,
colorOffset = 0x30,
relativeOffset = 0x2c,
widthOffset = 0x44,
heightOffset = 0x48,
shaderOffset = 0x4c,
GlowColor = 0x8C,
alignOffset = 0x2C,
fadeStartTime = 0x38,
fadeTime = 0x3c,
label = 0x40,
clientOffset = 0xA8,
fromWidth = 0x50,
fromHeight = 0x54,
scaleStartTime = 0x58,
scaleTime = 0x5c,
fromX = 0x60,
fromY = 0x64,
fromAlignOrg = 0x68,
fromAlignScreen = 0x6c,
moveStartTime = 0x70,
moveTime = 0x74,
time = 0x78,
duration = 0x7c,
value = 0x80,
sort = 0x88,
fxBirthTime = 0x90,
fxLetterTime = 0x94,
fxDecayStartTime = 0x98,
fxDecayDuration = 0x9c,
soundID = 0xa0,
flags = 0xa4;
}
public void doTypeWriter(UInt32 clientIndex, String text,Single X = 100, Single Y = 300, Int32[] rgba = { 255,255,255,255 } ,Int32[] glow)
{
UInt32 Elem = HudElem_Alloc();
SetMemory(Elem, new Byte[] { 0x00, 0x00, 0x00, 0x01 });
SetMemory(Elem + HElems.textOffset, uintBytes(createText("")));
SetMemory(Elem + HElems.relativeOffset, uintBytes(0x05));
SetMemory(Elem + HElems.relativeOffset - 4, uintBytes(0x06));
SetMemory(Elem + HElems.fontOffset, uintBytes(10));
SetMemory(Elem + HElems.alignOffset, uintBytes(5));
SetMemory(Elem + HElems.textOffset + 4, new Byte[] { 0x40, 0x00 });
SetMemory(Elem + HElems.fontSizeOffset, ReverseBytes(BitConverter.GetBytes((float)2)));
SetMemory(Elem + HElems.xOffset, ReverseBytes(BitConverter.GetBytes(X)));
SetMemory(Elem + HElems.yOffset, ReverseBytes(BitConverter.GetBytes(Y)));
SetMemory(Elem + HElems.colorOffset, new Byte[] { BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(255)[0] });
SetMemory(Elem + HElems.GlowColor, new Byte[] { BitConverter.GetBytes(glow[0])[0], BitConverter.GetBytes(glow[1])[0], BitConverter.GetBytes(glow[2])[0], BitConverter.GetBytes(glow[3])[0] });
SetMemory(Elem + HElems.clientOffset, ReverseBytes(BitConverter.GetBytes(clientIndex)));
WriteInt32(Elem + HElems.fxBirthTime, getLevelTime());
WriteInt32(Elem + HElems.fxLetterTime, 100);
WriteInt32(Elem + HElems.fxDecayStartTime, 4000);
WriteInt32(Elem + HElems.fxDecayDuration, 1000);
WriteInt32(Elem + HElems.flags, 1);
SetMemory(Elem + HElems.textOffset, uintBytes(createText(text)));
}
public Int32 getLevelTime()
{
Byte[] LevelTime = new Byte[4];
GetMemory(0xFC3DB0,LevelTime);
Array.Reverse(LevelTime, 0, 4);
return BitConverter.ToInt32(LevelTime, 0);
}
public UInt32 HudElem_Alloc()
{
for (UInt32 i = 0xF0E10C; i < 0xF3B10C; i += 0xB4)
{
Byte[] buff = new Byte[4];
GetMemory(i, buff);
if (buff[3] == 0)
{
SetMemory(i, new Byte[0xB4]);
return i;
}
}
return 0;
}
public void WriteInt32(uint offset, int input)
{
Byte[] buff = new Byte[4];
BitConverter.GetBytes(input).CopyTo(buff, 0);
Array.Reverse(buff, 0, 4);
SetMemory(offset, buff);
}

Here a Pastebin if you prefer it
You must login or register to view this content.

Step 3:
Setting up the Typewriter Message Smile

Here is the Syntax of the Function, call it in a Button, Mod Menu or whatever :p
    doTypeWriter(< clientnumber >, < text >, < X Position > , < Y Position > , < RGBA Colors Int32 Array > , < RGBA GlowColors Int32 Array >Winky Winky


Now we want to use it, so call it like this as Example
    doTypeWriter(0, Welcome to my Modded Lobby, 100 , 300 , new Int32[] { 255, 255, 255, 255 } , new Int32[] { 0, 0, 255, 255 })



Some extra Stuff:
Therifboy and me Created a Welcome Message Function that is centered. The Funciton is not perfect cause it calculate the Text length. Anyways it could be usefull for you Winky Winky

Put this in your Project somewhere:
            public void WelcomeMessage(UInt32 clientIndex, String Text1, String Text2, String Text3, Int32[] glowColor)
{
UInt32 elem = HudElem_Alloc();
SetMemory(Elem, new Byte[] { 0x00, 0x00, 0x00, 0x01 });
SetMemory(Elem + HElems.textOffset, uintBytes(createText("")));
SetMemory(Elem + HElems.relativeOffset, uintBytes(0x05));
SetMemory(Elem + HElems.relativeOffset - 4, uintBytes(0x06));
SetMemory(Elem + HElems.fontOffset, uintBytes(10));
SetMemory(Elem + HElems.alignOffset, uintBytes(5));
SetMemory(Elem + HElems.textOffset + 4, new Byte[] { 0x40, 0x00 });
SetMemory(Elem + HElems.fontSizeOffset, ReverseBytes(BitConverter.GetBytes((float)2)));
SetMemory(Elem + HElems.xOffset, ReverseBytes(BitConverter.GetBytes(150)));
SetMemory(Elem + HElems.yOffset, ReverseBytes(BitConverter.GetBytes(300)));
SetMemory(Elem + HElems.colorOffset, new Byte[] { BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(255)[0] });
SetMemory(Elem + HElems.GlowColor, new Byte[] { BitConverter.GetBytes(glow[0])[0], BitConverter.GetBytes(glow[1])[0], BitConverter.GetBytes(glow[2])[0], BitConverter.GetBytes(glow[3])[0] });
SetMemory(Elem + HElems.clientOffset, ReverseBytes(BitConverter.GetBytes(clientIndex)));
WriteInt32(elem + HElems.fxBirthTime, getLevelTime());
WriteInt32(elem + HElems.fxLetterTime, 80);
WriteInt32(elem + HElems.fxDecayStartTime, 9500);
WriteInt32(elem + HElems.fxDecayDuration, 1000);
WriteInt32(elem + HElems.flags, 1);
SetMemory(elem + HElems.textOffset, UInt32ToBytes(createText(Text1 + "\n" + CenterTypeWriterString(Text2, Text1.Length) + "\n" + CenterTypeWriterString(Text3, Text1.Length))));
}
public String CenterTypeWriterString(String text, Int32 length)
{
Int32 calc = (length - text.Length) / 2;
String MyText = String.Empty;
for (Int32 i = 0; i <= calc; i++)
{
MyText += " ";
}
return MyText + " " + text;
}

Here in a Pastebin again if you prefer it
You must login or register to view this content.

How to use it: (Do the first text in the Message longer than the other, else it doesnt work correctly :P)

Syntax of the Function
    WelcomeMessage(< clientnumber >, < Text 1 >, < Text 2 >, < Text 3 >, < RGBA Colors Int32 Array >Winky Winky


Example Function for Button or whatever again:
    WelcomeMessage(0, "Welcome to my Modded MW3 Lobby", "Subcribe xRevolutionsHD", "Created by xRevolution", new Int32[] { 255, 255, 255, 255 })


Thats is the Typewriter.
I hope it's well explained for you!
If you have still Questions then feel free to ask them here :y:

Credits:

    
- xRevolution
- Therifboy (Motivated me to find it. Helping with some things and find with me LevelTime Offset)
- Hacksource (Full Hud Elements Struct)
- Choco (RPC and Huds)
- iMCSx (WriteInt32 Function and connecting things)


Wow nice stuffs buddy :y:
10-25-2013, 01:30 PM #9
SC58
Former Staff
Here a function maybe for this stuff if its useful for anything?

0xF3B180 - level_locals_t

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

Mango_Knife, xRevolutions
10-27-2013, 12:42 PM #10
Mango_Knife
In my man cave
Originally posted by xRevolutions View Post
Hello NGU,

Today, is seen Aneras Typewriter Release and i know he mean me with reference in my Video.


See his Thread here
You must login or register to view this content.

Anyways, he made a Mistake in the Leveltime thats why im going to Release it. I havnt released it yet because i wanted ppl to Figure it out. I just showed that FM|T isnt the only one who can get nice stuff Happy

At first, what is a Typewriter?
Everyone know it from MW2 1.11 (GSC Times) the Welcome Message. It was used in every Patch and now we have it back in RTE. I
A little Video on how it looks



Lets Start!

What you need?
- Visual Studio C# Project with PS3 Connection Things (Set and Get Memory Function)
You must login or register to view this content.

Step 1:

You need at first Chocos RPC and Hud Elements. You can get them here : You must login or register to view this content.

Step 2:
Put this Functions somewhere in your Project Enzo
            public static class HElems
{
public static UInt32
xOffset = 0x08,
yOffset = 0x04,
textOffset = 0x84,
fontOffset = 0x24,
fontSizeOffset = 0x14,
colorOffset = 0x30,
relativeOffset = 0x2c,
widthOffset = 0x44,
heightOffset = 0x48,
shaderOffset = 0x4c,
GlowColor = 0x8C,
alignOffset = 0x2C,
fadeStartTime = 0x38,
fadeTime = 0x3c,
label = 0x40,
clientOffset = 0xA8,
fromWidth = 0x50,
fromHeight = 0x54,
scaleStartTime = 0x58,
scaleTime = 0x5c,
fromX = 0x60,
fromY = 0x64,
fromAlignOrg = 0x68,
fromAlignScreen = 0x6c,
moveStartTime = 0x70,
moveTime = 0x74,
time = 0x78,
duration = 0x7c,
value = 0x80,
sort = 0x88,
fxBirthTime = 0x90,
fxLetterTime = 0x94,
fxDecayStartTime = 0x98,
fxDecayDuration = 0x9c,
soundID = 0xa0,
flags = 0xa4;
}
public void doTypeWriter(UInt32 clientIndex, String text,Single X = 100, Single Y = 300, Int32[] rgba = { 255,255,255,255 } ,Int32[] glow)
{
UInt32 Elem = HudElem_Alloc();
SetMemory(Elem, new Byte[] { 0x00, 0x00, 0x00, 0x01 });
SetMemory(Elem + HElems.textOffset, uintBytes(createText("")));
SetMemory(Elem + HElems.relativeOffset, uintBytes(0x05));
SetMemory(Elem + HElems.relativeOffset - 4, uintBytes(0x06));
SetMemory(Elem + HElems.fontOffset, uintBytes(10));
SetMemory(Elem + HElems.alignOffset, uintBytes(5));
SetMemory(Elem + HElems.textOffset + 4, new Byte[] { 0x40, 0x00 });
SetMemory(Elem + HElems.fontSizeOffset, ReverseBytes(BitConverter.GetBytes((float)2)));
SetMemory(Elem + HElems.xOffset, ReverseBytes(BitConverter.GetBytes(X)));
SetMemory(Elem + HElems.yOffset, ReverseBytes(BitConverter.GetBytes(Y)));
SetMemory(Elem + HElems.colorOffset, new Byte[] { BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(255)[0] });
SetMemory(Elem + HElems.GlowColor, new Byte[] { BitConverter.GetBytes(glow[0])[0], BitConverter.GetBytes(glow[1])[0], BitConverter.GetBytes(glow[2])[0], BitConverter.GetBytes(glow[3])[0] });
SetMemory(Elem + HElems.clientOffset, ReverseBytes(BitConverter.GetBytes(clientIndex)));
WriteInt32(Elem + HElems.fxBirthTime, getLevelTime());
WriteInt32(Elem + HElems.fxLetterTime, 100);
WriteInt32(Elem + HElems.fxDecayStartTime, 4000);
WriteInt32(Elem + HElems.fxDecayDuration, 1000);
WriteInt32(Elem + HElems.flags, 1);
SetMemory(Elem + HElems.textOffset, uintBytes(createText(text)));
}
public Int32 getLevelTime()
{
Byte[] LevelTime = new Byte[4];
GetMemory(0xFC3DB0,LevelTime);
Array.Reverse(LevelTime, 0, 4);
return BitConverter.ToInt32(LevelTime, 0);
}
public UInt32 HudElem_Alloc()
{
for (UInt32 i = 0xF0E10C; i < 0xF3B10C; i += 0xB4)
{
Byte[] buff = new Byte[4];
GetMemory(i, buff);
if (buff[3] == 0)
{
SetMemory(i, new Byte[0xB4]);
return i;
}
}
return 0;
}
public void WriteInt32(uint offset, int input)
{
Byte[] buff = new Byte[4];
BitConverter.GetBytes(input).CopyTo(buff, 0);
Array.Reverse(buff, 0, 4);
SetMemory(offset, buff);
}

Here a Pastebin if you prefer it
You must login or register to view this content.

Step 3:
Setting up the Typewriter Message Smile

Here is the Syntax of the Function, call it in a Button, Mod Menu or whatever :p
    doTypeWriter(< clientnumber >, < text >, < X Position > , < Y Position > , < RGBA Colors Int32 Array > , < RGBA GlowColors Int32 Array >Winky Winky


Now we want to use it, so call it like this as Example
    doTypeWriter(0, Welcome to my Modded Lobby, 100 , 300 , new Int32[] { 255, 255, 255, 255 } , new Int32[] { 0, 0, 255, 255 })



Some extra Stuff:
Therifboy and me Created a Welcome Message Function that is centered. The Funciton is not perfect cause it calculate the Text length. Anyways it could be usefull for you Winky Winky

Put this in your Project somewhere:
            public void WelcomeMessage(UInt32 clientIndex, String Text1, String Text2, String Text3, Int32[] glowColor)
{
UInt32 elem = HudElem_Alloc();
SetMemory(Elem, new Byte[] { 0x00, 0x00, 0x00, 0x01 });
SetMemory(Elem + HElems.textOffset, uintBytes(createText("")));
SetMemory(Elem + HElems.relativeOffset, uintBytes(0x05));
SetMemory(Elem + HElems.relativeOffset - 4, uintBytes(0x06));
SetMemory(Elem + HElems.fontOffset, uintBytes(10));
SetMemory(Elem + HElems.alignOffset, uintBytes(5));
SetMemory(Elem + HElems.textOffset + 4, new Byte[] { 0x40, 0x00 });
SetMemory(Elem + HElems.fontSizeOffset, ReverseBytes(BitConverter.GetBytes((float)2)));
SetMemory(Elem + HElems.xOffset, ReverseBytes(BitConverter.GetBytes(150)));
SetMemory(Elem + HElems.yOffset, ReverseBytes(BitConverter.GetBytes(300)));
SetMemory(Elem + HElems.colorOffset, new Byte[] { BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(0)[0], BitConverter.GetBytes(255)[0] });
SetMemory(Elem + HElems.GlowColor, new Byte[] { BitConverter.GetBytes(glow[0])[0], BitConverter.GetBytes(glow[1])[0], BitConverter.GetBytes(glow[2])[0], BitConverter.GetBytes(glow[3])[0] });
SetMemory(Elem + HElems.clientOffset, ReverseBytes(BitConverter.GetBytes(clientIndex)));
WriteInt32(elem + HElems.fxBirthTime, getLevelTime());
WriteInt32(elem + HElems.fxLetterTime, 80);
WriteInt32(elem + HElems.fxDecayStartTime, 9500);
WriteInt32(elem + HElems.fxDecayDuration, 1000);
WriteInt32(elem + HElems.flags, 1);
SetMemory(elem + HElems.textOffset, UInt32ToBytes(createText(Text1 + "\n" + CenterTypeWriterString(Text2, Text1.Length) + "\n" + CenterTypeWriterString(Text3, Text1.Length))));
}
public String CenterTypeWriterString(String text, Int32 length)
{
Int32 calc = (length - text.Length) / 2;
String MyText = String.Empty;
for (Int32 i = 0; i <= calc; i++)
{
MyText += " ";
}
return MyText + " " + text;
}

Here in a Pastebin again if you prefer it
You must login or register to view this content.

How to use it: (Do the first text in the Message longer than the other, else it doesnt work correctly :P)

Syntax of the Function
    WelcomeMessage(< clientnumber >, < Text 1 >, < Text 2 >, < Text 3 >, < RGBA Colors Int32 Array >Winky Winky


Example Function for Button or whatever again:
    WelcomeMessage(0, "Welcome to my Modded MW3 Lobby", "Subcribe xRevolutionsHD", "Created by xRevolution", new Int32[] { 255, 255, 255, 255 })


Thats is the Typewriter.
I hope it's well explained for you!
If you have still Questions then feel free to ask them here :y:

Credits:

    
- xRevolution
- Therifboy (Motivated me to find it. Helping with some things and find with me LevelTime Offset)
- Hacksource (Full Hud Elements Struct)
- Choco (RPC and Huds)
- iMCSx (WriteInt32 Function and connecting things)


Nice Work xRevolution
Or Should i call you Seb5594.

The following 10 users say thank you to Mango_Knife for this useful post:

Authority Modz, FusionIsDaName, InfinityISB4CK, ItsMagiicsz, Jannik007, milky4444, ThePaaqoHD, Whos Your Host, worrorfight, zZHackzZ

Copyright © 2026, NextGenUpdate.
All Rights Reserved.

Gray NextGenUpdate Logo