xeross155
-
Posts
702 -
Joined
-
Last visited
Never -
Donations
0.00 GBP
Content Type
Profiles
Bug Tracker
Wiki
Release Notes
Forums
Downloads
Blogs
Events
Posts posted by xeross155
-
-
I don't see how this would have race conditions as only 1 thread will be the ah thread, so threads can't conflict.
-
Where can I find the OpenMP dll files, vcomp90.dll and vcom90d.dll ?
-
Yeah, I figured that out.
Hmm, what other account wide things exist that might need a flag...
-
ah yes, I remember you can use 1, 2, 4, 8 etc all in one field.
-
this seems good for the main branches, however maybe rename the column to something else. dunno if this is non-hacky /hacky
-
git am ? i always use git apply
-
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
-
He'll update and if you're impatient, Apply it manually
-
This merges wow channels with irc channels afaik
-
Why would it?
I am not too familiar with the source yet, So I thought it might affect code in SD2
-
Diablox or my patch ?
-
This won't conflict with ScriptDev2 ?
-
But that raises the question, how can a gm see both an alliance and a horde channel that have the same name ?
-
Once this gets passed as working correctly I'll use it.
-
Sorry for double post, Internet was acting weird
-
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
-
I'm going to try and create a patch from your branch.
-
ah yes, My bad.
Just wondering is there a way I could make a patch from your git branch ?
-
I think the arena/bg would crash if groups are mixed up
-
Ye I know haven't updated it thanks for updating it, If possible could you add me to the credits ?
Regards, Xeross
-
make everyone join a custom channel on server join.
for example /join WorldChat
-
Did you use my patch in your branch ?
-
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.
-
Well as this branch has no config edits included does it take defualt values if we dont have the config values
[Patch] Multi-Threaded AuctionHouseMgr
in OldCore modifications
Posted
Ah, the mails etc, Hmm, I overlooked that.