Diablox
-
Posts
182 -
Joined
-
Last visited
Never -
Donations
0.00 GBP
Content Type
Profiles
Bug Tracker
Wiki
Release Notes
Forums
Downloads
Blogs
Events
Posts posted by Diablox
-
-
In your realmd DB you have a table caled autobroadcast
It looks like this
id text nextLets say you want 3 mesage to broadcast
message 1
message 2
message 3
id text next1 message1 2
2 message2 3
3 message3 1
I think you can understend now how it works,
-
Copy paste this in your patch.txt
[HIGHLIGHT=diff]From 71dcce34aeb586a253b4645fe893ebc22a50332e Mon Sep 17 00:00:00 2001
From: Diablox <[email protected]>
Date: Thu, 9 Jul 2009 21:42:54 +0200
Subject: PATCH Autobroadcast
---
sql/autobroadcast/mangos_mangos_string.sql | 4 ++
sql/autobroadcast/realmd_autobroadcast.sql | 6 ++
src/game/Language.h | 3 +
src/game/World.cpp | 72 ++++++++++++++++++++++++++--
src/game/World.h | 3 +-
src/mangosd/mangosd.conf.dist.in | 23 +++++++++
6 files changed, 106 insertions(+), 5 deletions(-)
create mode 100644 sql/autobroadcast/mangos_mangos_string.sql
create mode 100644 sql/autobroadcast/realmd_autobroadcast.sql
diff --git a/sql/autobroadcast/mangos_mangos_string.sql b/sql/autobroadcast/mangos_mangos_string.sql
new file mode 100644
index 0000000..39dc1ce
--- /dev/null
+++ b/sql/autobroadcast/mangos_mangos_string.sql
@@ -0,0 +1,4 @@
+DELETE FROM `mangos_string` WHERE `entry` = '1300';
+
+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);
diff --git a/sql/autobroadcast/realmd_autobroadcast.sql b/sql/autobroadcast/realmd_autobroadcast.sql
new file mode 100644
index 0000000..1e1ad4c
--- /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 ;
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..3651b62 100644
--- a/src/game/World.cpp
+++ b/src/game/World.cpp
@@ -49,6 +49,7 @@
#include "CreatureAIRegistry.h"
#include "Policies/SingletonImp.h"
#include "BattleGroundMgr.h"
+#include "Language.h"
#include "TemporarySummon.h"
#include "WaypointMovementGenerator.h"
#include "VMapFactory.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,7 +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 by Xeross..." );
sLog.outString( "WORLD: World initialized" );
}
@@ -1604,6 +1607,16 @@ 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();
+ }
+ }
///
///- Move all creatures with "delayed move" and remove and delete all objects with "delayed remove"
@@ -2729,6 +2742,57 @@ void World::ProcessCliCommands()
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()
{
m_resultQueue = new SqlResultQueue;
diff --git a/src/game/World.h b/src/game/World.h
index 8c2f2df..16c0394 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
@@ -372,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
--
1.5.6.3[/HIGHLIGHT]
-
When someone enters the BG queue server will do announce. Something like
BG queue announce Warsong Gulch H(1/5) A(0/5)
can't remember exactly how it looks like.
-
create new file caled patch.txt in mangos source folder
copy paste patch into the patch.txt, save
and then run
git am patch.txt
Works for me!!
-
it actually depends on the creature and your settings in the video options....
Like Fel Reavers in Hellfire Peninsula have almost unlimited visibility distance while regular mobs are about 100-150 yards.
We are not even near to achieve something like that!!
-
What settings did you use
Visibility.Distance.Continents = 90Visibility.Distance.Instances = 90
Visibility.Distance.BGArenas = 90
Visibility.Distance.Object = 90
Visibility.Distance.InFlight = 90
or
Visibility.Distance.Continents = 66Visibility.Distance.Instances = 66
Visibility.Distance.BGArenas = 66
Visibility.Distance.Object = 66
Visibility.Distance.InFlight = 66
Does anyone know how far do you see on retail?
-
Second, how can I use the patch diablox posted here since I can't just copy the text and paste it into a txt file?
Yes you can!!
-
Battleground.QueueAnnouncer.Enable = 1
Battleground.QueueAnnouncer.PlayerOnly = 0
On my server this is working! Everyone can se the announce.
-
Sory there was a error in my patch (and in my repo). Now is fixed.
From 71dcce34aeb586a253b4645fe893ebc22a50332e Mon Sep 17 00:00:00 2001 From: Diablox <[email protected]> Date: Thu, 9 Jul 2009 21:42:54 +0200 Subject: PATCH Autobroadcast --- sql/autobroadcast/mangos_mangos_string.sql | 4 ++ sql/autobroadcast/realmd_autobroadcast.sql | 6 ++ src/game/Language.h | 3 + src/game/World.cpp | 72 ++++++++++++++++++++++++++-- src/game/World.h | 3 +- src/mangosd/mangosd.conf.dist.in | 23 +++++++++ 6 files changed, 106 insertions(+), 5 deletions(-) create mode 100644 sql/autobroadcast/mangos_mangos_string.sql create mode 100644 sql/autobroadcast/realmd_autobroadcast.sql diff --git a/sql/autobroadcast/mangos_mangos_string.sql b/sql/autobroadcast/mangos_mangos_string.sql new file mode 100644 index 0000000..39dc1ce --- /dev/null +++ b/sql/autobroadcast/mangos_mangos_string.sql @@ -0,0 +1,4 @@ +DELETE FROM `mangos_string` WHERE `entry` = '1300'; + +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); diff --git a/sql/autobroadcast/realmd_autobroadcast.sql b/sql/autobroadcast/realmd_autobroadcast.sql new file mode 100644 index 0000000..1e1ad4c --- /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 ; 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..3651b62 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -49,6 +49,7 @@ #include "CreatureAIRegistry.h" #include "Policies/SingletonImp.h" #include "BattleGroundMgr.h" +#include "Language.h" #include "TemporarySummon.h" #include "WaypointMovementGenerator.h" #include "VMapFactory.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,7 +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 by Xeross..." ); sLog.outString( "WORLD: World initialized" ); } @@ -1604,6 +1607,16 @@ 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" @@ -2729,6 +2742,57 @@ void World::ProcessCliCommands() 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() { m_resultQueue = new SqlResultQueue; diff --git a/src/game/World.h b/src/game/World.h index 8c2f2df..16c0394 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 @@ -372,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 -- 1.5.6.3
-
Try reading the config file!!
Battleground.QueueAnnouncer.Enable = 1 -
Here it is!!!
git pull git://github.com/Diablox/mangos.git autobroadcastEdit: I finaly created patch file
[HIGHLIGHT=diff]From 71dcce34aeb586a253b4645fe893ebc22a50332e Mon Sep 17 00:00:00 2001
From: Diablox <[email protected]>
Date: Thu, 9 Jul 2009 21:42:54 +0200
Subject: [PATCH] Autobroadcast
---
sql/autobroadcast/mangos_mangos_string.sql | 4 ++
sql/autobroadcast/realmd_autobroadcast.sql | 6 ++
src/game/Language.h | 3 +
src/game/World.cpp | 72 ++++++++++++++++++++++++++--
src/game/World.h | 3 +-
src/mangosd/mangosd.conf.dist.in | 23 +++++++++
6 files changed, 106 insertions(+), 5 deletions(-)
create mode 100644 sql/autobroadcast/mangos_mangos_string.sql
create mode 100644 sql/autobroadcast/realmd_autobroadcast.sql
diff --git a/sql/autobroadcast/mangos_mangos_string.sql b/sql/autobroadcast/mangos_mangos_string.sql
new file mode 100644
index 0000000..39dc1ce
--- /dev/null
+++ b/sql/autobroadcast/mangos_mangos_string.sql
@@ -0,0 +1,4 @@
+DELETE FROM `mangos_string` WHERE `entry` = '1300';
+
+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);
diff --git a/sql/autobroadcast/realmd_autobroadcast.sql b/sql/autobroadcast/realmd_autobroadcast.sql
new file mode 100644
index 0000000..1e1ad4c
--- /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 ;
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..3651b62 100644
--- a/src/game/World.cpp
+++ b/src/game/World.cpp
@@ -49,6 +49,7 @@
#include "CreatureAIRegistry.h"
#include "Policies/SingletonImp.h"
#include "BattleGroundMgr.h"
+#include "Language.h"
#include "TemporarySummon.h"
#include "WaypointMovementGenerator.h"
#include "VMapFactory.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,7 +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 by Xeross..." );
sLog.outString( "WORLD: World initialized" );
}
@@ -1604,6 +1607,16 @@ 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();
+ }
+ }
///
///- Move all creatures with "delayed move" and remove and delete all objects with "delayed remove"
@@ -2729,6 +2742,57 @@ void World::ProcessCliCommands()
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()
{
m_resultQueue = new SqlResultQueue;
diff --git a/src/game/World.h b/src/game/World.h
index 8c2f2df..16c0394 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
@@ -372,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
--
1.5.6.3
[/HIGHLIGHT]
-
Actualy Paradox version is still working whit MaNGOS se there is time to make this one working.
-
Thats why i created a git branch. Im still dont know hot to create patch. I will try today if i make it i will post it here :D
-
if i empty the game_graveyard_zone the spirits will appear onto the corpses?
Yes! But i think that will also affect BG and you can be stuck for 2 min waiting to reivive
-
mangos DB game_graveyard_zone! You can empty the table.
-
Ofc the credits are yours!! The patch is still in your thread
-
Look at mangos DB battleground_template table! The max and min lvl fields is what you are looking for.
-
I... don't think that's possible. At least, not right now.
What exactly?? Vendor showing only yours class gear??
-
No it only req to know SQL and ofc to know where to put what!!
-
Ok i will give you a example whit S4 vendor!! You do the rest
-
Lets try the next solution
- if(zone->flags & AREA_FLAG_SANCTUARY) // in sanctuary+ if(zone->flags & AREA_FLAG_SANCTUARY || (GetAreaId() == ID)
-
hehe
You must add all the patches to the source and compile! If you add one by one you will get core whit just one patch not all of them.
-
Actualy a put it in Player:Update
void Player::Update( uint32 p_time ){
if(!IsInWorld())
return;
if(player->GetZoneId() == ID)
UpdatePvP(false);
-
I'm thinkin you dont know how to compile!! But i will try one more time
Create new folder called mangos.
Right clik on mangos folder -> Git Bash Here
Copy paste next:
git clone git://github.com/mangos/mangos.git
git pull git://github.com/Diablox/mangos.git autobroadcast
git pull git://github.com/Naicisum/mangos.git ahbot
[Patch] Auto Announcer(With Next ID)
in OldCore modifications
Posted
Try restarting the server when you change config options!