m_timers[WUPDATE_CORPSES].SetInterval(20 * MINUTE * IN_MILLISECONDS);
//erase corpses every 20 minutes
m_timers[WUPDATE_CLEANDB].SetInterval(m_int_configs[CONFIG_LOGDB_CLEARINTERVAL]*MINUTE*IN_MILLISECONDS);
// clean logs table every 14 days by default
m_timers[WUPDATE_AUTOBROADCAST].SetInterval(getIntConfig(CONFIG_AUTOBROADCAST_INTERVAL));
+ m_timers[WUPDATE_YOUREVENT].SetInterval(2 * HOUR * IN_MILLISECONDS); // your time will be 30 * MINUTES * IN_MILLISECONDS
m_timers[WUPDATE_DELETECHARS].SetInterval(DAY*IN_MILLISECONDS); // check for chars to delete every day
LoginDatabase.Execute(stmt);
}
+ if (m_timers[WUPDATE_YOUREVENT].Passed())
+ {
+ // Your stuff, you want to spawn a NPC here
+ }
/// <li> Clean logs table
WUPDATE_MAILBOXQUEUE,
WUPDATE_DELETECHARS,
WUPDATE_PINGDB,
+ WUPDATE_YOUREVENT,
WUPDATE_COUNT
World.cpp
Code:m_timers[WUPDATE_CORPSES].SetInterval(20 * MINUTE * IN_MILLISECONDS); //erase corpses every 20 minutes m_timers[WUPDATE_CLEANDB].SetInterval(m_int_configs[CONFIG_LOGDB_CLEARINTERVAL]*MINUTE*IN_MILLISECONDS); // clean logs table every 14 days by default m_timers[WUPDATE_AUTOBROADCAST].SetInterval(getIntConfig(CONFIG_AUTOBROADCAST_INTERVAL)); + m_timers[WUPDATE_YOUREVENT].SetInterval(2 * HOUR * IN_MILLISECONDS); // your time will be 30 * MINUTES * IN_MILLISECONDS m_timers[WUPDATE_DELETECHARS].SetInterval(DAY*IN_MILLISECONDS); // check for chars to delete every day
Also World.cpp
Code:LoginDatabase.Execute(stmt); } + if (m_timers[WUPDATE_YOUREVENT].Passed()) + { + // Your stuff, you want to spawn a NPC here + } /// <li> Clean logs table
World.h
Code:WUPDATE_MAILBOXQUEUE, WUPDATE_DELETECHARS, WUPDATE_PINGDB, + WUPDATE_YOUREVENT, WUPDATE_COUNT
I can't give your the correct linenumbers atm, but i think you can find them with this informations. (+ they don't have to be the exact lines as i used xD)
class TestScript : public WorldScript
{
public:
TestScript(): WorldScript("TestScript")
{
events.ScheduleEvent(1, 30 * MINUTE * IN_MILLISECONDS);
}
void OnUpdate(uint32 diff) override
{
while (uint32 id = events.ExecuteEvent())
{
switch (id)
{
case 1:
// spawn code here
break;
}
}
}
EventMap events;
};
Here is a small template if someone wants to continue.
Im unable to right now, but decided to post this small code.
Made it able to handle multiple timed events as well.
Code:class TestScript : public WorldScript { public: TestScript(): WorldScript("TestScript") { events.ScheduleEvent(1, 30 * MINUTE * IN_MILLISECONDS); } void OnUpdate(uint32 diff) override { while (uint32 id = events.ExecuteEvent()) { switch (id) { case 1: // spawn code here break; } } } EventMap events; };