Jump to content

Forusim

Members
  • Posts

    190
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by Forusim

  1. Still using: Rev 9134 UDB 386 AnnouncerPatch SD2-1542 ACID3.0.2 WoW3.2.2a with 200-300 players and no lags/less crashes.
  2. 1. Not 100% sure, but imo this works 2. Pretty sure the fear and disorient reduction works. Tested with rogue and priest.
  3. It´s indeed a core bug, but this workarround works good for me. UPDATE quest_template SET RewSpell= '66747', RewSpellCast= '66747' WHERE entry IN (14100, 14111);
  4. Forusim

    Bladestorm

    Bump, what about void Aura::HandleModMechanicImmunity(bool apply, bool /*Real*/)?? Same as Hunter http://www.wowhead.com/?spell=34692, am i right?
  5. Forusim

    Arena invite

    Try to update to actual revision. But the arenainvite was fixed long time ago...
  6. Current instant dmg is 8%. On 3.3.2 it should be 30% (http://www.wowhead.com/?spell=63627) If you look in the sourcecode you see it directly. int32 damagefromticks = SpellDamageBonus(pVictim, procSpell, (leachAura->GetModifier()->m_amount* GetSpellAuraMaxTicks(procSpell)), DOT); basepoints0 = damagefromticks * triggerAmount / 100; triggered_spell_id = 63675; break; From my point of view it should looks like: basepoints0 = damagefromticks * 30 / 100; Would be nice, if some1 could confirm my idea.
  7. Nice patch, which should be implemented to mangos imo. This works on 9312 for me. diff --git a/src/game/Language.h b/src/game/Language.h index 9f9f7af..857d6b9 100644 --- a/src/game/Language.h +++ b/src/game/Language.h @@ -778,6 +778,8 @@ enum MangosStrings // 10000-10999 // Use for custom patches 11000-11999 + // Broadcaster + LANG_AUTO_BROADCAST = 11000, // NOT RESERVED IDS 12000-1999999999 // `db_script_string` table index 2000000000-2000009999 (MIN_DB_SCRIPT_STRING_ID-MAX_DB_SCRIPT_STRING_ID) diff --git a/src/game/World.cpp b/src/game/World.cpp index ca23473..ab5edf4 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -62,6 +62,7 @@ #include "WaypointManager.h" #include "GMTicketMgr.h" #include "Util.h" +#include "Language.h" INSTANTIATE_SINGLETON_1( World ); @@ -95,6 +96,9 @@ World::World() m_defaultDbcLocale = LOCALE_enUS; m_availableDbcLocaleMask = 0; + + // Initialize broadcaster nextId + m_nextId = 0; } /// World destructor @@ -1082,6 +1086,11 @@ void World::LoadConfigSettings(bool reload) sLog.outString( "WORLD: VMap support included. LineOfSight:%i, getHeight:%i",enableLOS, enableHeight); sLog.outString( "WORLD: VMap data directory is: %svmaps",m_dataPath.c_str()); sLog.outString( "WORLD: VMap config keys are: vmap.enableLOS, vmap.enableHeight, vmap.ignoreMapIds, vmap.ignoreSpellIds"); + + // Broadcaster + m_configs[CONFIG_BROADCAST_ENABLED] = sConfig.GetBoolDefault("Broadcast.Enabled", true); + m_configs[CONFIG_BROADCAST_INTERVAL] = sConfig.GetIntDefault("Broadcast.Interval", 150000); + m_configs[CONFIG_BROADCAST_POSITION] = sConfig.GetIntDefault("Broadcast.Position", 1); } /// Initialize the World @@ -1491,6 +1500,9 @@ void World::SetInitialWorldSettings() uint32 nextGameEvent = gameeventmgr.Initialize(); m_timers[WUPDATE_EVENTS].SetInterval(nextGameEvent); //depend on next event + sLog.outString("Starting Autobroadcast system..." ); + m_timers[WUPDATE_BROADCAST].SetInterval(m_configs[CONFIG_BROADCAST_INTERVAL]); + sLog.outString( "WORLD: World initialized" ); } @@ -1643,6 +1655,13 @@ void World::Update(uint32 diff) m_timers[WUPDATE_EVENTS].Reset(); } + ///- Process autobroadcaster + if(getConfig(CONFIG_BROADCAST_ENABLED) && m_timers[WUPDATE_BROADCAST].Passed()) + { + m_timers[WUPDATE_BROADCAST].Reset(); + SendBroadcast(); + } + /// [/list] ///- Move all creatures with "delayed move" and remove and delete all objects with "delayed remove" MapManager::Instance().DoDelayedMovesAndRemoves(); @@ -2176,3 +2195,42 @@ void World::LoadDBVersion() if(m_CreatureEventAIVersion.empty()) m_CreatureEventAIVersion = "Unknown creature EventAI."; } + +/// Broadcast a message +void World::SendBroadcast() +{ + std::string message; + + QueryResult *result; + if(m_nextId > 0) + result = loginDatabase.PQuery("SELECT `text`, `next` FROM `broadcast_strings` WHERE `id` = %u;", m_nextId); + else + result = loginDatabase.PQuery("SELECT `text`, `next` FROM `broadcast_strings` ORDER BY RAND();", m_nextId); + + if(!result) + return; + + Field *fields = result->Fetch(); + m_nextId = fields[1].GetUInt32(); + message = fields[0].GetString(); + + delete result, fields; + + if((getConfig(CONFIG_BROADCAST_POSITION) & BROADCAST_LOCATION_CHAT) == BROADCAST_LOCATION_CHAT) + sWorld.SendWorldText(LANG_AUTO_BROADCAST, message.c_str()); + if((getConfig(CONFIG_BROADCAST_POSITION) & BROADCAST_LOCATION_TOP) == BROADCAST_LOCATION_TOP) + { + WorldPacket data(SMSG_NOTIFICATION, (message.size()+1)); + data << message; + sWorld.SendGlobalMessage(&data); + } + + if((getConfig(CONFIG_BROADCAST_POSITION) & BROADCAST_LOCATION_IRC) == BROADCAST_LOCATION_IRC) +#ifdef MANGCHAT_INSTALLED + sIRC.Send_IRC_Channel(sIRC._irc_chan[sIRC.anchn].c_str(), "\\00311[server]: " + message); +#else + sLog.outError("AutoBroadcaster: You have IRC broadcasting enabled but we couldn't detect mangchat"); +#endif + + sLog.outString("AutoBroadcast: '%s'",message.c_str()); +} diff --git a/src/game/World.h b/src/game/World.h index 74c897a..7a58e59 100644 --- a/src/game/World.h +++ b/src/game/World.h @@ -77,7 +77,8 @@ enum WorldTimers WUPDATE_UPTIME = 4, WUPDATE_CORPSES = 5, WUPDATE_EVENTS = 6, - WUPDATE_COUNT = 7 + WUPDATE_BROADCAST = 7, + WUPDATE_COUNT = 8 }; /// Configuration elements @@ -222,6 +223,12 @@ enum WorldConfigs CONFIG_TIMERBAR_BREATH_MAX, CONFIG_TIMERBAR_FIRE_GMLEVEL, CONFIG_TIMERBAR_FIRE_MAX, + + // Broadcaster + CONFIG_BROADCAST_ENABLED, + CONFIG_BROADCAST_INTERVAL, + CONFIG_BROADCAST_POSITION, + CONFIG_VALUE_COUNT }; @@ -334,6 +341,13 @@ enum RealmZone REALM_ZONE_CN9 = 29 // basic-Latin at create, any at login }; +enum BroadcastLocation +{ + BROADCAST_LOCATION_CHAT = 1, + BROADCAST_LOCATION_TOP = 2, + BROADCAST_LOCATION_IRC = 4, +}; + // DB scripting commands #define SCRIPT_COMMAND_TALK 0 // source = unit, target=any, datalong ( 0=say, 1=whisper, 2=yell, 3=emote text) #define SCRIPT_COMMAND_EMOTE 1 // source = unit, datalong = anim_id @@ -597,6 +611,10 @@ class World std::string m_DBVersion; std::string m_CreatureEventAIVersion; std::string m_ScriptsVersion; + + //Broadcaster + uint32 m_nextId; + void SendBroadcast(); }; extern uint32 realmID; diff --git a/src/mangosd/mangosd.conf.dist.in b/src/mangosd/mangosd.conf.dist.in index 479a6ce..705e28e 100644 --- a/src/mangosd/mangosd.conf.dist.in +++ b/src/mangosd/mangosd.conf.dist.in @@ -1374,3 +1374,27 @@ Ra.IP = 0.0.0.0 Ra.Port = 3443 Ra.MinLevel = 3 Ra.Secure = 1 + +################################################################################################################### +# Automatic Broadcaster +# +# AutoBroadcast.Enabled +# Enable/Disable the broadcaster +# Default: 0 - off +# 1 - on +# +# AutoBroadcast.Position +# Where to display the message (Just add the values for multiple) +# Default: 1 - In the in-game chat window +# 2 - In the top-middle of the screen +# 4 - In the announcements IRC channel (if mangchat is installed) +# +# AutoBroadcast.Interval +# Interval at which to broadcast messages +# +################################################################################################################### + +AutoBroadcast.Enabled = 1 +AutoBroadcast.Position = 1 +AutoBroadcast.Interval = 30000 +
  8. We run [9134] MaNGOS 0.15 and UDB 386 on our server and have to restart our server because of buggy infinite instance id´s. Otherwise it would run for days without a crash and 200-300 players.
  9. I can confirm, that any libral modifieng spellpower of flashlight will consume Infusion of Light instantly.
  10. I had same issue on my server with the alliance spirit guide in warsong. The problem was missing npcflag (32768) for that spirit guide. Check this in your database.
  11. I don´t get, where this multiplicator comes from bp0 = 8 * caster->SpellDamageBonus(this, spellEntry, bp0, DOT, 1); On my server (Rev. 9134) http://www.wowhead.com/?spell=34917 does about 8k dispelldmg at 1100 spellpower. Yesterday i just changed this line to: bp0 = 1 * caster->SpellDamageBonus(this, spellEntry, bp0, DOT, 1); And voilà it does only 1k damage on dispell. Which is equal to the displayed dmg in tooltip for rank 3 (http://www.wowhead.com/?spell=34917). So any ideas? Otherwise i have to change it manualy for my life server.
×
×
  • 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