2023-10-31 21:31:16 +08:00
|
|
|
|
2024-01-30 21:52:00 +08:00
|
|
|
#include "main.h"
|
2023-10-31 21:31:16 +08:00
|
|
|
|
2024-03-14 23:24:26 +08:00
|
|
|
//----------------------------------------------------------------------------------
|
|
|
|
|
2023-10-31 21:31:16 +08:00
|
|
|
CScriptTimers::CScriptTimers()
|
|
|
|
{
|
2024-01-30 21:52:00 +08:00
|
|
|
m_dwTimerCount = 0;
|
2023-10-31 21:31:16 +08:00
|
|
|
}
|
2024-03-14 23:24:26 +08:00
|
|
|
|
|
|
|
//----------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
CScriptTimers::~CScriptTimers()
|
|
|
|
{
|
|
|
|
DwordTimerMap::iterator itor;
|
|
|
|
for (itor = m_Timers.begin(); itor != m_Timers.end(); itor++)
|
|
|
|
{
|
|
|
|
FreeMem(itor->second);
|
|
|
|
SAFE_DELETE(itor->second);
|
|
|
|
}
|
|
|
|
m_Timers.clear();
|
|
|
|
}
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
void CScriptTimers::FreeMem(ScriptTimer_s* Timer)
|
|
|
|
{
|
|
|
|
if (Timer->cellParams != NULL)
|
|
|
|
{
|
|
|
|
free(Timer->cellParams);
|
|
|
|
Timer->cellParams = NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------------
|
|
|
|
|
2024-08-29 23:14:15 +08:00
|
|
|
DWORD CScriptTimers::New(char* szScriptFunc, int iInterval, BOOL bRepeating, AMX* pAMX)
|
|
|
|
{
|
|
|
|
m_dwTimerCount++;
|
|
|
|
|
|
|
|
ScriptTimer_s* NewTimer = new ScriptTimer_s;
|
|
|
|
|
|
|
|
strncpy(NewTimer->szScriptFunc, szScriptFunc, 255);
|
|
|
|
NewTimer->iTotalTime = iInterval;
|
|
|
|
NewTimer->iRemainingTime = iInterval;
|
|
|
|
NewTimer->bRepeating = bRepeating;
|
|
|
|
NewTimer->iParamCount = 0;
|
|
|
|
NewTimer->bKilled = false;
|
|
|
|
NewTimer->pAMX = pAMX;
|
|
|
|
NewTimer->cellParams = NULL;
|
|
|
|
|
|
|
|
m_Timers.insert(DwordTimerMap::value_type(m_dwTimerCount, NewTimer));
|
|
|
|
return m_dwTimerCount;
|
|
|
|
}
|
|
|
|
|
|
|
|
//----------------------------------------------------------------------------------
|
|
|
|
|
2024-08-29 23:15:47 +08:00
|
|
|
void CScriptTimers::Kill(DWORD dwTimerId)
|
|
|
|
{
|
|
|
|
DwordTimerMap::iterator itor;
|
|
|
|
itor = m_Timers.find(dwTimerId);
|
|
|
|
if (itor != m_Timers.end())
|
|
|
|
{
|
|
|
|
itor->second->iRemainingTime = 0;
|
|
|
|
itor->second->bKilled = true;
|
|
|
|
itor->second->bRepeating = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
//-----------------------------------------------------------
|
|
|
|
|