- Code: Select all
#include "cbase.h"
#include "entityinput.h"
#include "entityoutput.h"
#include "mathlib/mathlib.h"
#include "utlqueue.h"
// memdbgon must be the last include file in a .cpp file!!!
#include "tier0/memdbgon.h"
CUtlVector<int> intQueue;
class CKillCounterEntity : public CBaseEntity
{
public:
DECLARE_CLASS( CKillCounterEntity, CBaseEntity );
void Spawn(void)
{
SetNextThink( gpGlobals->curtime + 0.2 );
};
void Increment(void)
{
AddtoQueue(1);
};
void Reset(void)
{
iValue = 0;
};
int GetValue(void)
{
return iValue;
};
void Think(void)
{
iValue += intQueue[0];
intQueue.Remove(0);
DevMsg("Killcount: %i",iValue);
SetNextThink( gpGlobals->curtime + 0.2 );
}
void AddtoQueue( int Amount )
{
if( Amount > 0 )
{
intQueue.AddToTail(Amount);
DevMsg("+1 Killcount.");
}
};
void InputIncrement(inputdata_t &inputdata) { Increment(); }
void InputReset(inputdata_t &inputdata) { Reset(); }
DECLARE_DATADESC();
private:
int iValue;
};
LINK_ENTITY_TO_CLASS(lux_killcounter, CKillCounterEntity);
BEGIN_DATADESC( CKillCounterEntity )
DEFINE_FIELD( iValue, FIELD_INTEGER ),
DEFINE_INPUTFUNC( FIELD_VOID, "Increment", InputIncrement ),
DEFINE_INPUTFUNC( FIELD_VOID, "Reset", InputReset ),
END_DATADESC()
Any help would be greatly appreciated
EDIT:
Okay i did some more bug testing and found that
- Code: Select all
intQueue.Remove(1);
EDIT2:
Fixed using this code:
- Code: Select all
void Think(void)
{
for (int i = 0; i < intQueue.Count();)
{
if( intQueue[i] > 0 )
{
iValue += intQueue[i];
intQueue.Remove(i);
}
}
DevMsg("Killcount: %i\n",iValue);
SetNextThink( gpGlobals->curtime + 3.0 );
}


