Jump to content

xeross155

Members
  • Posts

    702
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Posts posted by xeross155

  1. 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
    

×
×
  • 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