Any thing in the hudLayout.res is in the res 640x480 (same with all res
files). The engine automatically scales them depending on the users res.
Only time you need to scale screen pos is when hard coding them.

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Joel R.
Sent: Tuesday, April 17, 2007 11:33 AM
To: hlcoders@list.valvesoftware.com
Subject: Re: [hlcoders] Client Side Text

--
[ Picked text/plain from multipart/alternative ]
Are you sure the 640x480 will work? I believe the screen sizes to the pixels
of the resolution so at 1024x768 the screen is that many pixels.  I usually
just set it inside the constructor SetSize( ScreenWidth(), ScreenHeight() );
might also have to be done where hud Resets itself.  Another thing that
bothers me is the MeshBuilder isn't aligned to screenspace pixels.  It's a
pain to pan them out together.

On 4/16/07, Oliver <[EMAIL PROTECTED]> wrote:
>
> --
> [ Picked text/plain from multipart/alternative ]
> Joel: Glad to be of assistance!  Good luck with the mod.
>
> Dest: Let's start with the simplest solution.  Have you specified your
> class
> in scripts/HudLayout.res file?  Our classname is CH5UI_PlayerNames, here's
> what we have in our HudLayout.res file.  This sets your hud element to be
> visible, positioned at 0,0 and sizes it to fit the whole screen.
>
>     CH5UI_PlayerNames
>     {
>         "fieldName" "CH5UI_PlayerNames"
>         "xpos"    "0"
>         "ypos"    "0"
>         "wide"    "640"
>         "tall"  "480"
>         "visible" "1"
>         "enabled" "1"
>     }
>
> If you have already done this, we'll keep troubleshooting from there.
>
>
> On 4/16/07, Joel R. <[EMAIL PROTECTED]> wrote:
> >
> > --
> > [ Picked text/plain from multipart/alternative ]
> > Hey Oliver I borrowed your method for the OffsetZ which saved me time
> > perfecting it to be the right distance over the players head.  We're
> using
> > it in our mod for Mario Kart Source and you'll receive appropriate
> credit
> > for it.  Thanks.
> >
> > Dest Romano: The font's you can use are listed in ClientScheme.res.  You
> > can
> > get them in ApplySchemeSettings and just do.
> > m_hFont = pScheme->GetFont( "Trebuchet24" );
> > Or whatever custom font you want just add it to ClientScheme.res and at
> > the
> > bottom is where you link to the filename of the .ttf file.  Make sure
> the
> > name you use for the custom font is the exact same as when you open the
> > font
> > up at the top.
> >
> > On 4/16/07, Oliver <[EMAIL PROTECTED]> wrote:
> > >
> > > --
> > > [ Picked text/plain from multipart/alternative ]
> > > 1) Declare as a private variable for the class:
> > > vgui::HFont m_hFont;
> > >
> > > Be sure to set it to a font in the constructor, we set to trebuchet:
> > > m_hFont = g_hFontTrebuchet24;
> > >
> > > 2) Declare as a private variable for the class:
> > > wchar_t sIDString[256];
> > >
> > > 3) You're right, code could be cleaned by moving variable declaration
> > out
> > > of
> > > Paint method.
> > >
> > > Good luck!
> > >
> > > On 4/16/07, Dest Romano <[EMAIL PROTECTED]> wrote:
> > > >
> > > > Hello, That looks like a really great method of drawing text so I
> > coded
> > > it
> > > > in. I have three questions
> > > >
> > > > 1) Where is m_hFont declared and how could I access m_hFont
> > > > 2) Where is sIDString declared and what type of variable is it
> (char*
> > > > dosen't seem to work)
> > > > 3) Why do you declare so many variables in a class that will run
> every
> > > > frame, why not just storing them on the player under public?
> > > >
> > > > Thanks for the method Oliver!
> > > > -Dest
> > > >
> > > >
> > > > >From: Oliver <[EMAIL PROTECTED]>
> > > > >Reply-To: hlcoders@list.valvesoftware.com
> > > > >To: hlcoders@list.valvesoftware.com
> > > > >Subject: Re: [hlcoders] Client Side Text
> > > > >Date: Sun, 15 Apr 2007 23:11:22 -0400
> > > > >
> > > > >--
> > > > >[ Picked text/plain from multipart/alternative ]
> > > > >Here's how we did it:
> > > > >
> > > > >Create a client-side class that extends CHudElement and vgui::Panel
> > > > >
> > > > >The Paint method is used to draw the text (fade as distance
> > increases).
> > > > >The
> > > > >InView method determines if the other player is in view of the
> local
> > > > >player.
> > > > >
> > > > >I make no claims to the elegance of this code, but it does
> work.  :)
> > > > >
> > > > >void YourClassName::Paint()
> > > > >{
> > > > >     C_HL2MP_Player *pLocalPlayer =
> > > > C_HL2MP_Player::GetLocalHL2MPPlayer();
> > > > >
> > > > >     if ( !pLocalPlayer )
> > > > >         return;
> > > > >
> > > > >     Vector origin;
> > > > >     int x, y, length, wide, tall, offsetZ, alpha;
> > > > >     for ( int iEntIndex = 0; iEntIndex <
> > > > >cl_entitylist->NumberOfEntities();
> > > > >iEntIndex++ )
> > > > >     {
> > > > >         if ( IsPlayerIndex( iEntIndex ) )
> > > > >         {
> > > > >             C_BasePlayer *pPlayer =
> > > > >static_cast<C_BasePlayer*>(cl_entitylist->GetEnt( iEntIndex ));
> > > > >
> > > > >             if( pPlayer && !pPlayer->IsLocalPlayer() )
> > > > >             {
> > > > >                 if(InView(pLocalPlayer, pPlayer))
> > > > >                 {
> > > > >                     sIDString[0] = 0;
> > > > >
> > > > >vgui::localize()->ConvertANSIToUnicode(pPlayer->GetPlayerName(),
> > > > sIDString,
> > > > >sizeof(sIDString));
> > > > >
> > > > >                     length = (pPlayer->GetAbsOrigin() -
> > > > >pLocalPlayer->GetAbsOrigin()).Length();
> > > > >                     offsetZ = 72;
> > > > >                     offsetZ += (length - 80)/12.6;
> > > > >                     if(length <= 400) alpha = 255;
> > > > >                     else
> > > > >                     {
> > > > >                         alpha = 655 - length;
> > > > >                         if(alpha < 0) alpha = 0;
> > > > >                     }
> > > > >
> > > > >
> > > > >                     vgui::surface()->GetTextSize( m_hFont,
> > sIDString,
> > > > >wide,
> > > > >tall );
> > > > >
> > > > >                     Vector offset = Vector(0,0,offsetZ);
> > > > >
> GetVectorInScreenSpace(pPlayer->GetAbsOrigin(),
> > x,
> > > > y,
> > > > >&offset);
> > > > >                     x -= wide/2;
> > > > >
> > > > >                     vgui::surface()->DrawSetTextFont(m_hFont);
> > > > >                     vgui::surface()->DrawSetTextPos(x, y);
> > > > >
> > > > >vgui::surface()->DrawSetTextColor(Color(255,255,255,alpha));
> > > > >                     vgui::surface()->DrawPrintText(sIDString,
> > > > >wcslen(sIDString));
> > > > >                 }
> > > > >             }
> > > > >         }
> > > > >     }
> > > > >}
> > > > >
> > > > >bool YourClassName::InView(C_BasePlayer *pLocalPlayer, C_BasePlayer
> > > > >*pPlayer)
> > > > >{
> > > > >     // Clip text that is far away
> > > > >     if((pLocalPlayer->GetAbsOrigin() -
> > > > >pPlayer->GetAbsOrigin()).LengthSqr()
> > > > > > 90000000) return false;
> > > > >
> > > > >     // Clip text that is behind the client
> > > > >     Vector clientForward;
> > > > >     pLocalPlayer->EyeVectors( &clientForward );
> > > > >
> > > > >     Vector toText    = pPlayer->GetAbsOrigin() -
> > > > >pLocalPlayer->GetAbsOrigin();
> > > > >      float  dotPr    = DotProduct(clientForward,toText);
> > > > >
> > > > >     if (dotPr < 0) return false;
> > > > >
> > > > >     //Clip text that is obscured
> > > > >     trace_t tr;
> > > > >     Vector forward = pPlayer->GetAbsOrigin() -
> > > > >pLocalPlayer->GetAbsOrigin();
> > > > >     int length = forward.Length();
> > > > >     forward.NormalizeInPlace();
> > > > >     UTIL_TraceLine(pLocalPlayer->Weapon_ShootPosition(), forward *
> > > > >MAX_TRACE_LENGTH, (MASK_SHOT & ~CONTENTS_WINDOW), pLocalPlayer,
> > > > >COLLISION_GROUP_NONE, &tr);
> > > > >
> > > > >     if((tr.endpos - pLocalPlayer->GetAbsOrigin()).Length() <
> length)
> > > > >     {
> > > > >         return false;
> > > > >     }
> > > > >     return true;
> > > > >}
> > > > >
> > > > >On 4/15/07, Dest Romano <[EMAIL PROTECTED]> wrote:
> > > > > >
> > > > > > Hello everyone,
> > > > > >
> > > > > > I am attempting to draw text over other players' heads.
> > > > > >
> > > > > > Serverside, NDebugOverlay::Text works perfectly fine
> > > > > > However, I don't want to draw text over myself, so I am going to
> > > draw
> > > > it
> > > > > > client side.
> > > > > >
> > > > > > When I do NDebugOverlay::Text clientside, it gives me an
> > unresolved
> > > > > > external
> > > > > > symbol.
> > > > > >
> > > > > > I do have debugoverlay_shared.h included, and it is in
> > game_shared,
> > > so
> > > > I
> > > > > > don't see what is wrong.
> > > > > >
> > > > > > baseplayer_shared.obj : error LNK2019: unresolved external
> symbol
> > > > "void
> > > > > > __cdecl NDebugOverlay::Text(class Vector const &,char const
> > > > >*,bool,float)"
> > > > > > ([EMAIL PROTECTED]@@YAXABVVector@@[EMAIL PROTECTED]) referenced in
> > function
> > > > > > "public: virtual void __thiscall
> > > C_BasePlayer::DrawJumbleNames(void)"
> > > > > > ([EMAIL PROTECTED]@@UAEXXZ)
> > > > > > 1>Release HL2MP/client.dll : fatal error LNK1120: 1 unresolved
> > > > externals
> > > > > >
> > > > > > If anyone has another more flexible method of drawing text over
> > > > entities
> > > > > > client side, or a solution to this error, I would love to hear
> it!
> > > > > >
> > > > > > Thanks,
> > > > > > Dest
> > > > > >
> > > >
> > > > _________________________________________________________________
> > > > MSN is giving away a trip to Vegas to see Elton John. Enter to win
> > > today.
> > > > http://msnconcertcontest.com?icid-nceltontagline
> > > >
> > > >
> > > > _______________________________________________
> > > > To unsubscribe, edit your list preferences, or view the list
> archives,
> > > > please visit:
> > > > http://list.valvesoftware.com/mailman/listinfo/hlcoders
> > > >
> > > >
> > > --
> > >
> > > _______________________________________________
> > > To unsubscribe, edit your list preferences, or view the list archives,
> > > please visit:
> > > http://list.valvesoftware.com/mailman/listinfo/hlcoders
> > >
> > >
> > --
> >
> > _______________________________________________
> > To unsubscribe, edit your list preferences, or view the list archives,
> > please visit:
> > http://list.valvesoftware.com/mailman/listinfo/hlcoders
> >
> >
> --
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives,
> please visit:
> http://list.valvesoftware.com/mailman/listinfo/hlcoders
>
>
--

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives,
please visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

_______________________________________________
To unsubscribe, edit your list preferences, or view the list archives, please 
visit:
http://list.valvesoftware.com/mailman/listinfo/hlcoders

Reply via email to