void CLuaMapFile::Tick(int ServerTick) { FunctionPrepare("Tick"); PushInteger((int)(time_get() * 1000 / time_freq())); //time in ms PushInteger(ServerTick); FunctionExec(); }
void CLuaFile::TickDefered() { if (!g_Config.m_SvLua) return; ErrorFunc(m_pLua); if (!FunctionExist("TickDefered")) return; FunctionPrepare("TickDefered"); PushInteger((int)(time_get() * 1000 / time_freq())); PushInteger(m_pServer->Server()->Tick()); FunctionExec(); ErrorFunc(m_pLua); }
void CLuaFile::FunctionExec(const char *pFunctionName) { if (m_pLua == 0) return; if (m_aFilename[0] == 0) return; if (pFunctionName) { if (FunctionExist(pFunctionName) == false) return; FunctionPrepare(pFunctionName); } if (lua_pcall(m_pLua, m_FunctionVarNum, LUA_MULTRET, 0)) ErrorFunc(m_pLua); m_FunctionVarNum = 0; }
int CLuaMapFile::FunctionExec(const char *pFunctionName) { if (m_pLua == 0) return 0; if (pFunctionName) { if (FunctionExist(pFunctionName) == false) return 0; FunctionPrepare(pFunctionName); } int Ret = lua_pcall(m_pLua, m_FunctionVarNum, LUA_MULTRET, 0); if (Ret) ErrorFunc(m_pLua); m_FunctionVarNum = 0; return Ret; }
void CLuaFile::Tick() { if (!g_Config.m_SvLua) return; ErrorFunc(m_pLua); MySQLTick(); //garbage collector -> clear old results that aren't fetched by lua m_pLuaShared->Tick(); if (!FunctionExist("Tick")) return; FunctionPrepare("Tick"); PushInteger((int)(time_get() * 1000 / time_freq())); PushInteger(m_pServer->Server()->Tick()); FunctionExec(); if (m_pServer->Server()->Tick() % (m_pServer->Server()->TickSpeed() * 60) == 0) dbg_msg("lua", "%i kiB", lua_gc(m_pLua, LUA_GCCOUNT, 0)); lua_gc(m_pLua, LUA_GCCOLLECT, 1000); ErrorFunc(m_pLua); }