ValveSoftware / halflife

Half-Life 1 engine based games
Other
3.65k stars 617 forks source link

[HL/CS] Adding new client message : ViewModel #199

Open Arkshine opened 11 years ago

Arkshine commented 11 years ago

Small feature but still one of the most wanted functionality people would like to see : having the possibility to change render properties of the view model, through a new message named ViewModel.

Proposed code :

hud.h

class CHud
{
    public:

    [...]
    void _cdecl MsgFunc_ViewModel( const char *pszName, int iSize, void *pbuf );
    [...]
};

hud.cpp

void __MsgFunc_ViewModel(const char *pszName, int iSize, void *pbuf)
{
    gHUD.MsgFunc_ViewModel( pszName, iSize, pbuf );
    return 1;
}

void CHud::Init( void )
{
    [...]
    HOOK_MESSAGE( ViewModel );
    [...]
}

hud_msg.cpp

void CHud::MsgFunc_ViewModel( const char *pszName, int iSize, void *pbuf )
{
    BEGIN_READ(pbuf, iSize);
    cl_entity_t *view = gEngfuncs.GetViewModel();
    if ( view )
    {
        view->curstate.rendermode       = READ_BYTE();
        view->curstate.renderfx         = READ_BYTE();
        view->curstate.rendercolor.r    = READ_BYTE();
        view->curstate.rendercolor.g    = READ_BYTE();
        view->curstate.rendercolor.b    = READ_BYTE();
        view->curstate.renderamt        = READ_BYTE();
        view->curstate.skin             = READ_BYTE();
        view->curstate.body             = READ_BYTE();
    }
}

There is no need to register it on the server, that's something the coders will do themselves. I think it's a reasonable feature, easy to review/implement, and will be in favor of a better gameplay immersion (it reminds me quake!).

As side-note, it has been tested on HL by someone and me and we can confirm it's working fine. Proof:

Thanks for considering this cool feature.

bogdyutzu commented 11 years ago

+1 For this. Will be cool if is possible to set also the body of view model

Arkshine commented 11 years ago

Nevermind my last sentence about not working for me. It works now, the reason was I was not up-to-date and was still using old game location.

@bogdyutzu : I guess it could be useful, I've edited the first post.

Egon-Spengler commented 11 years ago

100% agree with this feature request, it would be amazing to see this added and it would open up a whole new world of fun possibilities for coders and players.

dystopm commented 11 years ago

Awesome request.

Also, would be good to set a param to reset it's values, and another client message "WeaponModel" which will be the same for p_* models, don't you think?

StarsailorAMX commented 11 years ago

Sexy

DeMNiX commented 5 years ago

bump

RauliTop commented 5 years ago

Really cool.

New possibilities to scripters

oaus commented 5 years ago

@mikela-valve Is it possible to add for the next release?

Droads2 commented 5 years ago

Please, if this functionality is implemented, if possible, make support for integer values, instead of byte arguments.

afwn90cj93201nixr2e1re commented 5 years ago

It's not a good idea. Now we set viemmodel at client-side thru precache list idexes. @mikela-valve

x-Eagle-x commented 5 years ago

This solves yet another mystery, there was a thread on amdd about changing view-models rendering years ago, and it's confirmed to be possible. Good work everyone who worked on this, especially Arkshine for sharing it.

SmiteIsTrashBro commented 4 years ago

So, any news on this? Have been waiting for this feature

DarthMan commented 3 years ago

On TFC only, it's possible to render viewmodels, all you gotta do is set render mode for the player entity.

ab2331 commented 1 year ago
        view->curstate.skin             = READ_BYTE();
        view->curstate.body             = READ_BYTE();

should be long instead of byte allowing more combinations of submodels

        view->curstate.skin             = READ_LONG();
        view->curstate.body             = READ_LONG();
rtxa commented 9 months ago

Now it would be the time to implement this in the 25th anniversary update for mod-makers considering how easy to implement and review is this.

LKING1543 commented 4 months ago

My hope hasn't died yet!

WaLkZa commented 6 days ago

@shawns-valve