Jump to content

xeross155

Members
  • Posts

    702
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by xeross155

  1. Ah, the mails etc, Hmm, I overlooked that.
  2. I don't see how this would have race conditions as only 1 thread will be the ah thread, so threads can't conflict.
  3. Where can I find the OpenMP dll files, vcomp90.dll and vcom90d.dll ?
  4. Yeah, I figured that out. Hmm, what other account wide things exist that might need a flag...
  5. ah yes, I remember you can use 1, 2, 4, 8 etc all in one field.
  6. this seems good for the main branches, however maybe rename the column to something else. dunno if this is non-hacky /hacky
  7. git am ? i always use git apply
  8. What I did was first pull Diablox autobroadcast mangos. Then I added the official mangos as a remote. Then I created a new branch. Then I fetched the official mangos and merged it's master with Diabloxes code. Then I commited the changes locally. Then I used git diff on the new branch and the mangos official master
  9. He'll update and if you're impatient, Apply it manually
  10. This merges wow channels with irc channels afaik
  11. I am not too familiar with the source yet, So I thought it might affect code in SD2
  12. This won't conflict with ScriptDev2 ?
  13. But that raises the question, how can a gm see both an alliance and a horde channel that have the same name ?
  14. Once this gets passed as working correctly I'll use it.
  15. Sorry for double post, Internet was acting weird
  16. Up to date patch(untested) diff --git a/sql/autobroadcast/mangos_mangos_string.sql b/sql/autobroadcast/mangos_mangos_string.sql new file mode 100644 index 0000000..110a7e9 --- /dev/null +++ b/sql/autobroadcast/mangos_mangos_string.sql @@ -0,0 +1,2 @@ +INSERT INTO `mangos_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) VALUES +(1300, '|cffffcc00[server]: |cff00ff00%s|r', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); \\ No newline at end of file diff --git a/sql/autobroadcast/realmd_autobroadcast.sql b/sql/autobroadcast/realmd_autobroadcast.sql new file mode 100644 index 0000000..d396083 --- /dev/null +++ b/sql/autobroadcast/realmd_autobroadcast.sql @@ -0,0 +1,6 @@ +CREATE TABLE IF NOT EXISTS `autobroadcast` ( + `id` int(11) NOT NULL auto_increment, + `text` longtext NOT NULL, + `next` int(11) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 ; \\ No newline at end of file diff --git a/src/game/Language.h b/src/game/Language.h index e1c15fb..0643b24 100644 --- a/src/game/Language.h +++ b/src/game/Language.h @@ -773,6 +773,9 @@ enum MangosStrings // FREE IDS 1300-9999 + // Broadcaster + LANG_AUTO_BROADCAST = 1300, + // Use for not-in-offcial-sources patches // 10000-10999 diff --git a/src/game/World.cpp b/src/game/World.cpp index bf20ccf..affcb5f 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -46,6 +46,7 @@ #include "ItemEnchantmentMgr.h" #include "MapManager.h" #include "ScriptCalls.h" +#include "Language.h" #include "CreatureAIRegistry.h" #include "Policies/SingletonImp.h" #include "BattleGroundMgr.h" @@ -1398,8 +1399,10 @@ void World::SetInitialWorldSettings() sprintf( isoDate, "%04d-%02d-%02d %02d:%02d:%02d", local.tm_year+1900, local.tm_mon+1, local.tm_mday, local.tm_hour, local.tm_min, local.tm_sec); - loginDatabase.PExecute("INSERT INTO uptime (realmid, starttime, startstring, uptime) VALUES('%u', " UI64FMTD ", '%s', 0)", - realmID, uint64(m_startTime), isoDate); + loginDatabase.PExecute("INSERT INTO uptime (realmid, starttime, startstring, uptime) VALUES('%u', " UI64FMTD ", '%s', 0)", realmID, uint64(m_startTime), isoDate); + + static uint32 abtimer = 0; + abtimer = sConfig.GetIntDefault("AutoBroadcast.Timer", 60000); m_timers[WUPDATE_OBJECTS].SetInterval(0); m_timers[WUPDATE_SESSIONS].SetInterval(0); @@ -1409,7 +1412,7 @@ void World::SetInitialWorldSettings() //Update "uptime" table based on configuration entry in minutes. m_timers[WUPDATE_CORPSES].SetInterval(20*MINUTE*IN_MILISECONDS); //erase corpses every 20 minutes - + m_timers[WUPDATE_AUTOBROADCAST].SetInterval(abtimer); //to set mailtimer to return mails every day between 4 and 5 am //mailtimer is increased when updating auctions //one second is 1000 -(tested on win system) @@ -1448,6 +1451,7 @@ void World::SetInitialWorldSettings() sLog.outString("Starting Game Event system..." ); uint32 nextGameEvent = gameeventmgr.Initialize(); m_timers[WUPDATE_EVENTS].SetInterval(nextGameEvent); //depend on next event + sLog.outString("Starting Autobroadcast system..." ); sLog.outString( "WORLD: World initialized" ); } @@ -1604,6 +1608,17 @@ void World::Update(uint32 diff) m_timers[WUPDATE_EVENTS].SetInterval(nextGameEvent); m_timers[WUPDATE_EVENTS].Reset(); } + static uint32 autobroadcaston = 0; + autobroadcaston = sConfig.GetIntDefault("AutoBroadcast.On", 0); + if(autobroadcaston == 1) + { + if (m_timers[WUPDATE_AUTOBROADCAST].Passed()) + { + m_timers[WUPDATE_AUTOBROADCAST].Reset(); + SendBroadcast(); + } + } + /// [/list] ///- Move all creatures with "delayed move" and remove and delete all objects with "delayed remove" @@ -2728,6 +2743,56 @@ void World::ProcessCliCommands() // print the console message here so it looks right zprint("mangos>"); } +void World::SendBroadcast() +{ + std::string msg; + static int nextid; + + QueryResult *result; + if(nextid != 0) + { + result = loginDatabase.PQuery("SELECT `text`, `next` FROM `autobroadcast` WHERE `id` = %u", nextid); + } + else + { + result = loginDatabase.PQuery("SELECT `text`, `next` FROM `autobroadcast` ORDER BY RAND() LIMIT 1"); + } + + if(!result) + return; + + Field *fields = result->Fetch(); + nextid = fields[1].GetUInt32(); + msg = fields[0].GetString(); + delete result; + + static uint32 abcenter = 0; + abcenter = sConfig.GetIntDefault("AutoBroadcast.Center", 0); + if(abcenter == 0) + { + sWorld.SendWorldText(LANG_AUTO_BROADCAST, msg.c_str()); + + sLog.outString("AutoBroadcast: '%s'",msg.c_str()); + } + if(abcenter == 1) + { + WorldPacket data(SMSG_NOTIFICATION, (msg.size()+1)); + data << msg; + sWorld.SendGlobalMessage(&data); + + sLog.outString("AutoBroadcast: '%s'",msg.c_str()); + } + if(abcenter == 2) + { + sWorld.SendWorldText(LANG_AUTO_BROADCAST, msg.c_str()); + + WorldPacket data(SMSG_NOTIFICATION, (msg.size()+1)); + data << msg; + sWorld.SendGlobalMessage(&data); + + sLog.outString("AutoBroadcast: '%s'",msg.c_str()); + } +} void World::InitResultQueue() { diff --git a/src/game/World.h b/src/game/World.h index 8c2f2df..e2f9c1a 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -76,7 +76,8 @@ enum WorldTimers WUPDATE_UPTIME = 4, WUPDATE_CORPSES = 5, WUPDATE_EVENTS = 6, - WUPDATE_COUNT = 7 + WUPDATE_AUTOBROADCAST = 7, + WUPDATE_COUNT = 8 }; /// Configuration elements @@ -371,6 +372,7 @@ class World WorldSession* FindSession(uint32 id) const; void AddSession(WorldSession *s); + void SendBroadcast(); bool RemoveSession(uint32 id); /// Get the number of current active sessions void UpdateMaxSessionCounters(); diff --git a/src/mangosd/mangosd.conf.dist.in b/src/mangosd/mangosd.conf.dist.in index de5dbe2..29bbef1 100644 --- a/src/mangosd/mangosd.conf.dist.in +++ b/src/mangosd/mangosd.conf.dist.in @@ -680,6 +680,29 @@ AllowTwoSide.AddFriend = 0 TalentsInspecting = 1 ################################################################################################################### +# AUTO BROADCAST +# +# AutoBroadcast.On +# Enable auto broadcast +# Default: 0 - off +# 1 - on +# +# AutoBroadcast.Center +# Display method +# Default: 0 - announce +# 1 - notify +# 2 - both +# +# AutoBroadcast.Timer +# Timer for auto broadcast +# +################################################################################################################### + +AutoBroadcast.On = 1 +AutoBroadcast.Center = 2 +AutoBroadcast.Timer = 30000 + +################################################################################################################### # CREATURE SETTINGS # # ThreatRadius
  17. I'm going to try and create a patch from your branch.
  18. ah yes, My bad. Just wondering is there a way I could make a patch from your git branch ?
  19. I think the arena/bg would crash if groups are mixed up
  20. Ye I know haven't updated it thanks for updating it, If possible could you add me to the credits ? Regards, Xeross
  21. make everyone join a custom channel on server join. for example /join WorldChat
  22. Did you use my patch in your branch ?
  23. I'm a complete newb to C++ that's why it is this way, i've just modified the existing announcer and haven't changed the way the variables were declared etc. Also ty for updating.
  24. Well as this branch has no config edits included does it take defualt values if we dont have the config values
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use