diff --git a/src/client/defs.h b/src/client/defs.h index c5d530c8..47b92126 100644 --- a/src/client/defs.h +++ b/src/client/defs.h @@ -164,6 +164,7 @@ struct float m_flEventTime; float m_flEventFrame; float m_flEventMdl; + int m_iEventWeapon; int m_iLastWeapon; int m_iOldWeapon; diff --git a/src/client/modelevent.qc b/src/client/modelevent.qc index ed519141..8c5ccd00 100644 --- a/src/client/modelevent.qc +++ b/src/client/modelevent.qc @@ -90,10 +90,19 @@ Event_Callback(float mtime, __inout float btime) /* if the sequence ain't the same anymore... */ if (pSeat->m_flEventFrame != pSeat->m_eViewModel.frame) return; + /* if the model changed... */ if (pSeat->m_flEventMdl != pSeat->m_eViewModel.modelindex) return; + print(sprintf("%d %d %i\n", pSeat->m_flEventFrame, pSeat->m_flEventMdl, pSeat->m_iEventWeapon)); + + /* weapon changed */ + player pl = (player)(pSeat->m_ePlayer); + + if (pSeat->m_iEventWeapon != pl.activeweapon) + return; + /* only play once */ if (mtime == btime) return; @@ -102,6 +111,8 @@ Event_Callback(float mtime, __inout float btime) if (btime <= pSeat->m_flEventTime && (mtime > pSeat->m_flEventTime)) { pSeat->m_pEventCall(); pSeat->m_pEventCall = __NULL__; + pSeat->m_flEventMdl = 0; + pSeat->m_flEventFrame = -1; } btime = mtime; diff --git a/src/client/view.qc b/src/client/view.qc index d283a23a..9ccf73bc 100644 --- a/src/client/view.qc +++ b/src/client/view.qc @@ -67,6 +67,8 @@ View_AddEvent(void(void) pCallback, float flTime) pSeat->m_flEventTime = flTime; pSeat->m_flEventFrame = pSeat->m_eViewModel.frame; pSeat->m_flEventMdl = pSeat->m_eViewModel.modelindex; + NSClientPlayer pl = (NSClientPlayer)pSeat->m_ePlayer; + pSeat->m_iEventWeapon = pl.activeweapon; } void diff --git a/src/server/traceattack.qc b/src/server/traceattack.qc index e2fda907..296c8cae 100644 --- a/src/server/traceattack.qc +++ b/src/server/traceattack.qc @@ -41,6 +41,9 @@ NSTraceAttack::_FireSingle(vector vecPos, vector vecAngles, float flDamage, floa if (flRange <= 0) return; + if (flDamage < 1) + return; + range = (vecAngles * 8196); m_eOwner.dimension_solid = 255; @@ -151,7 +154,7 @@ NSTraceAttack::_FireSingle(vector vecPos, vector vecAngles, float flDamage, floa cont = pointcontents(trace_endpos + v_forward * m_flMaxThickness); if (cont == CONTENT_EMPTY) - _FireSingle(trace_endpos + (v_forward * 2), vecAngles, m_flDamage / 2, flRange); + _FireSingle(trace_endpos + (v_forward * 2), vecAngles, flDamage / 2, flRange); } #endif }