You can use SpriteFont.TextHeight and SpriteFont.TextWidth expressions to get the exact size of the text, or calculate length using CharacterWidth, CharacterSpacing, CharacterScale. But this could be tricky if you don't want to break in the middle of a long word.
So a much easier solution would be to break text manually. Just insert some special character where you want your breaks to be:
"Oh... my god... I think that you ruined it...hzg@You are so irresponsible after all...hzg@now I'll have to do it by myself."
Then use tokenat(text, 0, "@") to print the first part of text, tokenat(text, 1, "@") for second and so on.
.
For the typewriter effect search the forum or tutorials, there are plenty of examples. There is also a plugin by Rexrainbow.
Also, check out this excellent dialog system (working link to capx is in comments):
construct.net/forum/construct-2/how-do-i-18/zelda-dialogue-system-capx-and-117812