Jed's use of the model script to determine where to put the "prop" on
the player is correct from what I have seen.

His code, i don't believe is necessary. Merely attaching a prop with
the correct "bonemerge" should work perfectly.

On Sat, Dec 8, 2012 at 5:57 AM, Jan Hartung <jan.hart...@gmx.de> wrote:
> Hi Jed,
>
>
>
> Thanks for the detailed reply, I’m sure this will help us to make items show
> on the player. I’ll let you know the results once I’m done implementing and
> the models are properly set up. May take a few days though as there’s first
> some work to do on my dev system.
>
>
>
> Jan
>
>
>
> Von: hlcoders-boun...@list.valvesoftware.com
> [mailto:hlcoders-boun...@list.valvesoftware.com] Im Auftrag von Jed
> Gesendet: Freitag, 7. Dezember 2012 19:08
>
>
> An: Discussion of Half-Life Programming
> Betreff: Re: [hlcoders] Show a model on the player
>
>
>
> Jan,
>
> I wrote code to attach models to the play as part of the Ham and Jam mod. We
> use it to put random helmet models on the players as a means of trying to
> not make them all look the same. I use bone merging as the general method
> rather than attachments but it seems to work fine for me.
>
> I'm afraid I haven't opened Visual Studio for over a year but the basics are
> thus.
>
> Set-up your player models and create the bones where you want your models to
> be attached. You need to then define them as used for bone merging with the
> $bonemerge directive in your QC file.
>
> In the models you want to attach to the player, you need to have a bone in
> the model with the same name as the bone you will attach to. The general
> technique I used is to place the actual prop model on the player model so
> it's how you want it to appear on the player model and then create a new
> bone in the same position and orientation and the bone I will attach too,
> call it something different and weight the attachment model to the new bone.
> I then move the new bone and the model down so that it's origin is 0,0,0 and
> export the SMD. In the QC file I use $renamebone to rename the extra bone to
> the same as the bone it will attach to.
>
> So, at this point you should have a player model with named and defined
> attachment bones and models you will attach to it with named bones that
> match the attachment points.
>
> Codewise what I did was this.
>
> I created a new client and server sidee class called C_PlayerHelmet baed on
> on C_PhysicsProp:
>
> class C_PlayerHelmet: public C_PhysicsProp
> {
>     typedef C_PhysicsProp BaseClass;
> public:
>     DECLARE_CLIENTCLASS();
>
>     C_PlayerHelmet();
>     ~C_PlayerHelmet();
>
>     virtual bool    ShouldDraw( void );
> };
>
> It's only function, ShouldDraw, basically just does checks to see if it
> should draw the helmet, based on if we're the local player or not and such.
>
> bool C_PlayerHelmet::ShouldDraw( void )
> {
>     // TODO: This needs some refinement...
>
>     // if we don't have an owner entity...
>     if ( !GetOwnerEntity() )
>         return BaseClass::ShouldDraw();
>
>     if( GetOwnerEntity() == C_HajPlayer::GetLocalHajPlayer() )
>         return input->CAM_IsThirdPerson();
> }
>
> On the server side I have the same class with basically a Spawn function
> which calls PreCache and then BaseClass::Spawn();
>
> That's it - that just the entity to handle the helmet model for the player.
>
> As for actually getting it onto the player model. Well I have a whole bunch
> of player class functions to handle that but basically in my player model
> class I create an instance for the helmet as:
>
> CHandle<CBaseEntity>    m_hHelmetEnt
>
> When I actually want to attach a helmet to the player:
>
> // create the helmet entity
>     if ( !m_hHelmetEnt )
>     {
>         m_hHelmetEnt = (CBaseEntity*)CreateEntityByName( "player_helmet" );
>
>         // failure!
>         if ( !m_hHelmetEnt )
>         {
>             DevMsg(1, "Could not create player helmet entity!");
>             m_bHasHelmet = false;
>             return;
>         }
>
>         // get the helmet index
>         unsigned int n = ChooseHelmet();
>
>         if ( n > HELMET_NONE )
>         {
>             m_hHelmetEnt->SetOwnerEntity( this );
>             m_hHelmetEnt->SetModel( g_pszHelmetModels[n] );
>
>             // must spawn before attaching.
>             m_hHelmetEnt->Spawn();
>
>             m_hHelmetEnt->FollowEntity( this, true );
>             m_hHelmetEnt->AddEffects( EF_BONEMERGE_FASTCULL );
>             m_hHelmetEnt->AddEffects( EF_PARENT_ANIMATES );
>             m_hHelmetEnt->RemoveEFlags( EFL_USE_PARTITION_WHEN_NOT_SOLID );
>
>             SetHelmet( n );
>             m_bHasHelmet = true;
>         }
>     }
>
> To take the helmet off:
>
>     if ( m_hHelmetEnt )
>     {
>         UTIL_RemoveImmediate( m_hHelmetEnt );
>         m_hHelmetEnt = NULL;
>     }
>
> That's pretty much the basics. What it does is short is create the
> attachment model as it's own entity and have it bonemerge and follow the
> player around.
>
> I had a bunch of other stuff which handles the helmet getting shot or blown
> off and just spawning it into the world as a non solid gib that vanishes
> after a while.
>
> // Jed
>
>
>
> On 30 November 2012 18:32, Jan Hartung <jan.hart...@gmx.de> wrote:
>
> Thanks Nick, the page you linked to might help. I'll check it in detail
> later.
>
> Jan
>
> -----Ursprüngliche Nachricht-----
> Von: hlcoders-boun...@list.valvesoftware.com
> [mailto:hlcoders-boun...@list.valvesoftware.com] Im Auftrag von Nick
> Gesendet: Freitag, 30. November 2012 17:50
> An: Discussion of Half-Life Programming
> Betreff: Re: [hlcoders] Show a model on the player
>
> i am not sure... but someone did a mod where weapons were added on the
> player back.
>
> Also, I knew of amodeler named Flare and who was able to set the
> attachment point on the prop.. And that attachment point on the prop
> determined where the model was attached to the player.
>
> If the prop is setup correctly, it should be perfectly setup when
> attached to a player with HLMV, no code would be required.
> http://www.halfwit-2.com/?page=resources&action=view&item=14
>
> On Sat, Nov 24, 2012 at 11:19 AM, Jan Hartung <jan.hart...@gmx.de>
> wrote:
>> I’ve been trying different things now, but none of them work as they
>> are supposed to.
>>
>>
>>
>> A combination of LookupAttachment and GetAttachment and setting the
>> origin and angles of the entity I want to attach to the player to what
>
>> GetAttachment returned followed by a call to FollowEntity does not
>> help. The entity seems to be glued to the players feet then.
>>
>> Calling SetParent and afterwards SetParentAttachment yields better
> results.
>> The entity is shown on the attachment point and moves completely
>> relative to the player. The problem here is, that the weapon is no
>> longer in the player’s hands and the whole player model jerks around.
>> Additionally the console prints the error message “*** ERROR: Bone
>> access not allowed (entity 1:player)”. I tried to solve that by
>> calling PushAllowBoneAccess on the player (client side). Doesn’t help,
>
>> the error message does not disappear and the player keeps on jerking
> around.
>>
>>
>>
>> Any ideas?
>>
>>
>>
>> Jan
>>
>>
>>
>>
>>
>> Von: hlcoders-boun...@list.valvesoftware.com
>> [mailto:hlcoders-boun...@list.valvesoftware.com] Im Auftrag von Cale
>> Dunlap
>> Gesendet: Mittwoch, 3. Oktober 2012 20:21
>> An: Discussion of Half-Life Programming
>> Betreff: Re: [hlcoders] Show a model on the player
>>
>>
>>
>> I haven't personally done what you're trying to do, but perhaps
>> looking at bone followers would provide some insight. I'm not sure if
>> they'll address what you're asking. Other members of the list can
> correct me if I'm wrong.
>> I've actually been curious about this myself.
>>
>>
>>
>> Cale
>>
>> On Thursday, September 27, 2012, Jan Hartung wrote:
>>
>> Hi,
>>
>>
>>
>> I’m trying to render different items (models) on the player model. The
>
>> player model has been set up with various attachments where I could
>> render the items. My problem is that I couldn’t find a way to attach
>> an item to any of the attachment points. The net doesn’t really help
>> with this and I couldn’t find the code used to show the weapons on the
>
>> player models. Any hints on how to render models on attachment points?
>>
>>
>>
>> Jan
>>
>>
>>
>>
>> _______________________________________________
>> To unsubscribe, edit your list preferences, or view the list archives,
>
>> please visit:
>> https://list.valvesoftware.com/cgi-bin/mailman/listinfo/hlcoders
>>
>>
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives,
> please visit:
> https://list.valvesoftware.com/cgi-bin/mailman/listinfo/hlcoders
>
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives,
> please visit:
> https://list.valvesoftware.com/cgi-bin/mailman/listinfo/hlcoders
>
>
>
>
> _______________________________________________
> To unsubscribe, edit your list preferences, or view the list archives,
> please visit:
> https://list.valvesoftware.com/cgi-bin/mailman/listinfo/hlcoders
>
>

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

Reply via email to