The Two Thirdpersons (1 Viewer)

Je Hooft

Well-Known Member
Jan 13, 2016
So this is more like an observation I made and also a question. You know how when you press !tp you can still see your crosshair right? I think normally it's in the middle of your character. IMO playing thirdperson like this is very annoying as you can barely see any rockets in front of you and thus you HAVE to look down to see anything, making you miss your rockets.
However, I found out that sometimes the crosshair sits above your character. Like pretty far up. Playing in this TP mode is great tbh, contrary to the other TP.

But here's the thing: I have no idea how to switch between the two modes. Sometimes I get the crosshair in the middle of my pyro (which is way too far down) while other times it is situated above the pyro. Does anyone have any idea how to change between the two modes? Or just how to activate the mode where the crosshair is up higher? Any info would be appreciated.
Can't help here, I never use TP but i'm interested in the answer ::):
Update: two things:
1. Waxel said the crosshair moves down when you taunt in tp. Tested it, he's completely right. Thanks @Waxel
2. There's actually 3 different positions for the crosshair. There's one really high up (pos1), one just above the pyro (pos2), and one right in the middle of the pyro (pos3) when facing forward. taunting with pos1 reverts the crosshair to pos2, which is the usual thing to happen. but sometimes when you !tp, the crosshair starts at pos2 and taunting will then revert it to pos3. pos3 is the only position that really annoys me. But now I know how to prevent it. Hope anyone reading learned something from this as well.
Here's the deal, there is 2 thirdperson "modes" yes, but they function the same way (shared code). One is forced with taunts and another is via command.

The issue comes that the way the plugin functions, it tells your client that you need the taunt cam, BUT it does not set the z offset. So what you get is what you will use.
Normally, thirdperson is 25 Hu above your "eyes", but using the thirdperson command sets the offset to 0
While taunting sets the offset to -15 Hu, the plugin does neither. So odd behavior ahead!
Sometimes it uses the default offset of 25 above the eyes, sometimes -15 below head, other times a mix of two with also 0 being in there for no particular reason.

I've went deeper into this issue, the plugin forces a netvar SetForcedTauntCam, but the crucial thing is left out, IT DOES NOT SET THE OFFSETS!
Now, I've no clue where the game gets or even sets these values at all, but this is what I've gathered. Taunting moves the Z offset down by 15, what I'm guessing is hammer units
I've debugged all the possible scenarios using IDA disassembler and gdb to debug the game and get the values, these are the z offset values I got when doing them in that particular order, can be different for no apparent reason.
join: 25 Hu
taunt: 10 Hu
rejoin: 0 Hu
taunt: -15 Hu
look up: 10 Hu
Using the thirdperson command always sets the z offset to 0, aka at your head (eyes), while taunting sets it to -15, aka center of body.
Executing thirdperson while being forced to thirdperson by netvar does nothing. Looking up after executing thirdperson can result in a z offset of 25.
Basically thirdperson is very buggy.

The game seems to set the m_flUpOffset property in CThirdPersonManager, but no clue where and if it could be overriden by server.

To fix the initial bugginess, I just load up itemtest and taunt, then join any db server with a fixed camera at 10 Hu above your eyes, roughly at least. It's still buggy but it works.
  • Informative
  • Like
Reactions: Je Hooft and TWC

Users who are viewing this thread