Advertisement
Rochet2

World announer

Sep 23rd, 2012
942
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.03 KB | None | 0 0
  1. #include "ScriptPCH.h"
  2. struct BroadcastData { const char* text; uint32 time; };
  3.  
  4. struct BroadcastData Broadcasts[] =
  5. {
  6.     {"Test Announce, every 30 seconds", 30000},
  7.     {"Test Announce, every 60 seconds", 60000},
  8. };
  9.  
  10. #define BROADCAST_COUNT  sizeof Broadcasts/sizeof(*Broadcasts)
  11. class CustomAnnouncer : public WorldScript
  12. {
  13. public:
  14.     CustomAnnouncer() : WorldScript("CustomAnnouncer") { }
  15.  
  16.     void OnStartup()
  17.     {
  18.         for(uint32 i = 0; i < BROADCAST_COUNT; i++)
  19.             Events.ScheduleEvent(i+1, Broadcasts[i].time);
  20.     }
  21.  
  22.     void OnUpdate(uint32 diff)
  23.     {
  24.         Events.Update(diff);
  25.         while (uint32 eventId = Events.ExecuteEvent())
  26.         {
  27.             if(eventId <= BROADCAST_COUNT)
  28.             {
  29.                 sWorld->SendServerMessage(SERVER_MSG_STRING, Broadcasts[eventId-1].text);
  30.                 Events.ScheduleEvent(eventId, Broadcasts[eventId-1].time);
  31.             }
  32.         }
  33.     }
  34.  
  35. private:
  36.     EventMap Events;
  37. };
  38.  
  39. void AddSC_CustomAnnouncer()
  40. {
  41.     new CustomAnnouncer();
  42. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement