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