[server] Implement/match n_SetTimer(...)

* Implement/match `CScriptTimers::New(...)`
This commit is contained in:
RD42
2024-06-24 23:10:26 +08:00
parent 1da7f651ea
commit f3446e9c36
3 changed files with 31 additions and 3 deletions

View File

@ -76,8 +76,9 @@ static cell AMX_NATIVE_CALL n_format(AMX *amx, cell *params)
static cell AMX_NATIVE_CALL n_SetTimer(AMX *amx, cell *params)
{
// TODO: SetTimer
return 0;
char* szFuncName;
amx_StrParam(amx, params[1], szFuncName);
return pNetGame->GetTimers()->New(szFuncName, params[2], params[3], amx);
}
static cell AMX_NATIVE_CALL n_KillTimer(AMX *amx, cell *params)

View File

@ -34,3 +34,23 @@ void CScriptTimers::FreeMem(ScriptTimer_s* Timer)
//----------------------------------------------------------------------------------
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;
}
//----------------------------------------------------------------------------------

View File

@ -4,7 +4,13 @@
struct ScriptTimer_s
{
char _gap0[279];
char szScriptFunc[255];
int iTotalTime;
int iRemainingTime;
BOOL bRepeating;
BOOL bKilled;
AMX* pAMX;
int iParamCount;
void* cellParams;
};
@ -21,6 +27,7 @@ public:
CScriptTimers();
~CScriptTimers();
DWORD New(char* szScriptFunc, int iInterval, BOOL bRepeating, AMX* pAMX);
void FreeMem(ScriptTimer_s* Timer);
};