From 80c857005135623973da941d1d40dbbbb63dcb68 Mon Sep 17 00:00:00 2001 From: squeek Date: Sun, 22 Mar 2015 18:37:45 -0700 Subject: [PATCH] Lua: Add player_onuse callback --- cl_dll/ff/c_ff_player.h | 1 + dlls/ff/ff_player.h | 1 + game_shared/ff/ff_player_shared.cpp | 19 +++++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/cl_dll/ff/c_ff_player.h b/cl_dll/ff/c_ff_player.h index 80184082f..691828508 100644 --- a/cl_dll/ff/c_ff_player.h +++ b/cl_dll/ff/c_ff_player.h @@ -171,6 +171,7 @@ class C_FFPlayer : public C_BasePlayer, public IFFPlayerAnimStateHelpers virtual bool IsOverridingViewmodel( void ) { return IsCloaked(); }; virtual int DrawOverriddenViewmodel( C_BaseViewModel *pViewmodel, int flags ) { return pViewmodel ? pViewmodel->DrawOverriddenViewmodel( flags ) : 0; } virtual const QAngle& GetRenderAngles( void ); + virtual void PlayerUse( void ); virtual RenderGroup_t GetRenderGroup(); diff --git a/dlls/ff/ff_player.h b/dlls/ff/ff_player.h index 8c2af2d71..9eede2430 100644 --- a/dlls/ff/ff_player.h +++ b/dlls/ff/ff_player.h @@ -166,6 +166,7 @@ class CFFPlayer : public CBasePlayer, public IFFPlayerAnimStateHelpers virtual void Event_Killed(const CTakeDamageInfo &info); virtual bool Event_Gibbed(const CTakeDamageInfo &info); virtual bool BecomeRagdollOnClient(const Vector &force); + virtual void PlayerUse( void ); virtual void LeaveVehicle( const Vector &vecExitPoint, const QAngle &vecExitAngles ); virtual void UpdateOnRemove( void ); diff --git a/game_shared/ff/ff_player_shared.cpp b/game_shared/ff/ff_player_shared.cpp index 83b214c87..9c37fe0f1 100644 --- a/game_shared/ff/ff_player_shared.cpp +++ b/game_shared/ff/ff_player_shared.cpp @@ -606,6 +606,25 @@ void CFFPlayer::PlayStepSound(Vector &vecOrigin, surfacedata_t *psurface, float } // <-- Mirv: Proper sounds +/** Allow Lua to react to and/or deny +use +*/ +void CFFPlayer::PlayerUse() +{ +#ifdef GAME_DLL + if (m_afButtonPressed & IN_USE) + { + CFFLuaSC hContext( 0 ); + hContext.Push( this ); + if( _scriptman.RunPredicates_LUA( NULL, &hContext, "player_onuse" ) && !hContext.DidReturnNil() && !hContext.GetBool() ) + { + return; + } + } +#endif + + BaseClass::PlayerUse(); +} + //----------------------------------------------------------------------------- // Purpose: Handle all class specific skills //-----------------------------------------------------------------------------