zoukankan      html  css  js  c++  java
  • T端带配置文件的魔兽世界BOSS被杀世界公告

    这个代码是Trinity的内核代码。
    
    主要功能,。就是BOSS被杀死后,世界BOSS向所有的私服玩家都公告一次。公告的内容在SQL里面配置
    
    适合使用在变态魔兽世界私服中。可以实现BOSS击杀公告。你也可以根据此代码扩展更改,实现击杀boss获得奖励什么的
    
    
     # HG changeset patch 
    # User aa@aa-HP
    # Date 1367859811 -10800
    # Node ID cfa885e9e6e4c4e37f6799a45918b946546830a4
    # Parent  0af922d0404643f4ebaac4d2b786c43aaf190967
    # Project: DoomCore
    Добавил систему анонс при убийстве босса
     
    diff -r 0af922d04046 -r cfa885e9e6e4 src/server/game/Entities/Unit/Unit.cpp
    --- a/src/server/game/Entities/Unit/Unit.cpp    Mon May 06 19:16:04 2013 +0300
    +++ b/src/server/game/Entities/Unit/Unit.cpp    Mon May 06 20:03:31 2013 +0300
    @@ -15354,6 +15354,9 @@
             // Call creature just died function
             if (creature->IsAIEnabled)
                 creature->AI()->JustDied(this);
    +            
    +            if (creature)
    +            sScriptMgr->AllCreatureJustDied(creature);
     
             if (TempSummon* summon = creature->ToTempSummon())
                 if (Unit* summoner = summon->GetSummoner())
    diff -r 0af922d04046 -r cfa885e9e6e4 src/server/game/Miscellaneous/Language.h
    --- a/src/server/game/Miscellaneous/Language.h    Mon May 06 19:16:04 2013 +0300
    +++ b/src/server/game/Miscellaneous/Language.h    Mon May 06 20:03:31 2013 +0300
    @@ -1175,6 +1175,10 @@
         // Use for custom patches             11000-11999
         LANG_AUTO_BROADCAST                 = 11000,
         LANG_INVALID_REALMID                = 11001,
    +    
    +    // Boss kill announce 
    +    LANG_BOSS_KILL_HISTORY_NORMAL       = 11008,
    +    LANG_BOSS_KILL_HISTORY_HEROIC       = 11009,
     
         // NOT RESERVED IDS                   12000-1999999999
         // `db_script_string` table index     2000000000-2000009999 (MIN_DB_SCRIPT_STRING_ID-MAX_DB_SCRIPT_STRING_ID)
    diff -r 0af922d04046 -r cfa885e9e6e4 src/server/game/Scripting/ScriptLoader.cpp
    --- a/src/server/game/Scripting/ScriptLoader.cpp    Mon May 06 19:16:04 2013 +0300
    +++ b/src/server/game/Scripting/ScriptLoader.cpp    Mon May 06 20:03:31 2013 +0300
    @@ -1315,6 +1315,8 @@
     void AddSC_npc_title();
     //Top 5 Class Killers
     void AddSC_Top5_Killers();
    +//Boss Kill Announcer
    +void AddSC_boss_kill_history();
     #endif
     
     void AddCustomScripts()
    @@ -1333,6 +1335,7 @@
         AddSC_title_granter();
         AddSC_npc_title();
         AddSC_Top5_Killers();
    +    AddSC_boss_kill_history();
         
     #endif
     }
    diff -r 0af922d04046 -r cfa885e9e6e4 src/server/game/Scripting/ScriptMgr.cpp
    --- a/src/server/game/Scripting/ScriptMgr.cpp    Mon May 06 19:16:04 2013 +0300
    +++ b/src/server/game/Scripting/ScriptMgr.cpp    Mon May 06 20:03:31 2013 +0300
    @@ -217,6 +217,7 @@
         SCR_CLEAR(PlayerScript);
         SCR_CLEAR(GuildScript);
         SCR_CLEAR(GroupScript);
    +    SCR_CLEAR(AllCreatureScript);
         SCR_CLEAR(UnitScript);
     
         #undef SCR_CLEAR
    @@ -796,6 +797,11 @@
         tmpscript->OnUpdate(creature, diff);
     }
     
    +void ScriptMgr::AllCreatureJustDied(Creature* creature)
    +{
    +    FOREACH_SCRIPT(AllCreatureScript)->AllCreatureJustDied(creature);
    +}
    +
     bool ScriptMgr::OnGossipHello(Player* player, GameObject* go)
     {
         ASSERT(player);
    @@ -1432,6 +1438,12 @@
         ScriptRegistry<CreatureScript>::AddScript(this);
     }
     
    +AllCreatureScript::AllCreatureScript(const char* name)
    +    : ScriptObject(name)
    +{
    +    ScriptRegistry<AllCreatureScript>::AddScript(this);
    +}
    +
     GameObjectScript::GameObjectScript(const char* name)
         : ScriptObject(name)
     {
    @@ -1536,6 +1548,7 @@
     template class ScriptRegistry<BattlegroundMapScript>;
     template class ScriptRegistry<ItemScript>;
     template class ScriptRegistry<CreatureScript>;
    +template class ScriptRegistry<AllCreatureScript>;
     template class ScriptRegistry<GameObjectScript>;
     template class ScriptRegistry<AreaTriggerScript>;
     template class ScriptRegistry<BattlegroundScript>;
    diff -r 0af922d04046 -r cfa885e9e6e4 src/server/game/Scripting/ScriptMgr.h
    --- a/src/server/game/Scripting/ScriptMgr.h    Mon May 06 19:16:04 2013 +0300
    +++ b/src/server/game/Scripting/ScriptMgr.h    Mon May 06 20:03:31 2013 +0300
    @@ -450,6 +450,18 @@
             virtual CreatureAI* GetAI(Creature* /*creature*/) const { return NULL; }
     };
     
    +class AllCreatureScript : public ScriptObject
    +{
    +    protected:
    +
    +        AllCreatureScript(const char* name);
    +
    +    public:
    +               
    +        // Called when creature dying
    +        virtual void AllCreatureJustDied(Creature* /*creature*/) { }
    +};
    +
     class GameObjectScript : public ScriptObject, public UpdatableScript<GameObject>
     {
         protected:
    @@ -928,6 +940,10 @@
             uint32 GetDialogStatus(Player* player, Creature* creature);
             CreatureAI* GetCreatureAI(Creature* creature);
             void OnCreatureUpdate(Creature* creature, uint32 diff);
    +         
    +         public: /* AllCreatureScript */
    +
    +        void AllCreatureJustDied(Creature* creature);
     
         public: /* GameObjectScript */
     
    diff -r 0af922d04046 -r cfa885e9e6e4 src/server/game/World/World.cpp
    --- a/src/server/game/World/World.cpp    Mon May 06 19:16:04 2013 +0300
    +++ b/src/server/game/World/World.cpp    Mon May 06 20:03:31 2013 +0300
    @@ -1197,6 +1197,14 @@
         
          // Management for LFG EveryWhere
         m_bool_configs[CONFIG_ON_LFG_EVERY_WHERE]  = ConfigMgr::GetBoolDefault("LFG.Everywhere", true);
    +    
    +     //Boss kill history system
    +    m_bool_configs[CONFIG_BOSS_KILL_HISTORY_ENABLE] = ConfigMgr::GetBoolDefault("Boss.Kill.History.Enable", true);
    +    m_int_configs[CONFIG_BOSS_KILL_HISTORY_GUILD_GROUP_10_COUNT] = ConfigMgr::GetIntDefault("Boss.Kill.History.Guild.Group.10",8);
    +    m_int_configs[CONFIG_BOSS_KILL_HISTORY_GUILD_GROUP_25_COUNT] = ConfigMgr::GetIntDefault("Boss.Kill.History.Guild.Group.25",20);
    +    m_int_configs[CONFIG_BOSS_KILL_HISTORY_REWARD_ENABLE] = ConfigMgr::GetBoolDefault("Boss.Kill.History.Reward.Enable", false);
    +    m_int_configs[CONFIG_BOSS_KILL_HISTORY_REWARD_ITEM] = ConfigMgr::GetIntDefault("Boss.Kill.History.Reward.Item.Id",49426);
    +    m_int_configs[CONFIG_BOSS_KILL_HISTORY_REWARD_ITEM_COUNT] = ConfigMgr::GetIntDefault("Boss.Kill.History.Reward.Item.Count",10);
     
         // AutoBroadcast
         m_bool_configs[CONFIG_AUTOBROADCAST] = ConfigMgr::GetBoolDefault("AutoBroadcast.On", false);
    diff -r 0af922d04046 -r cfa885e9e6e4 src/server/game/World/World.h
    --- a/src/server/game/World/World.h    Mon May 06 19:16:04 2013 +0300
    +++ b/src/server/game/World/World.h    Mon May 06 20:03:31 2013 +0300
    @@ -160,6 +160,8 @@
         CONFIG_UI_QUESTLEVELS_IN_DIALOGS,     // Should we add quest levels to the title in the NPC dialogs?
         CONFIG_EVENT_ANNOUNCE,
         CONFIG_ON_LFG_EVERY_WHERE,
    +    CONFIG_BOSS_KILL_HISTORY_REWARD_ENABLE,
    +    CONFIG_BOSS_KILL_HISTORY_ENABLE,
         BOOL_CONFIG_VALUE_COUNT
     };
     
    @@ -322,6 +324,10 @@
         CONFIG_WINTERGRASP_BATTLETIME,
         CONFIG_WINTERGRASP_NOBATTLETIME,
         CONFIG_WINTERGRASP_RESTART_AFTER_CRASH,
    +    CONFIG_BOSS_KILL_HISTORY_GUILD_GROUP_10_COUNT,
    +    CONFIG_BOSS_KILL_HISTORY_GUILD_GROUP_25_COUNT,
    +    CONFIG_BOSS_KILL_HISTORY_REWARD_ITEM,
    +    CONFIG_BOSS_KILL_HISTORY_REWARD_ITEM_COUNT,
         INT_CONFIG_VALUE_COUNT
     };
     
    diff -r 0af922d04046 -r cfa885e9e6e4 src/server/worldserver/worldserver.conf.dist
    --- a/src/server/worldserver/worldserver.conf.dist    Mon May 06 19:16:04 2013 +0300
    +++ b/src/server/worldserver/worldserver.conf.dist    Mon May 06 20:03:31 2013 +0300
    @@ -2778,4 +2778,65 @@
     Channel.CityOnlyFlag = 1
     
     #
    +###################################################################################################
    +
    +###################################################################################################
    +# BOSS KILL HISTORY SYSTEM
    +#
    +#    Boss.Kill.History.Enable
    +#        Description: Enables the boss kill history system.
    +#        Important:   When you kiliing the boss, if you're in guild the world receive announcement,
    +#                     that your guild killed this boss, on whisch difficult and the count of kills.
    +#        Default:     1 - (Enabled)
    +#                     0 - (Disabled)
    +#
    +
    +Boss.Kill.History.Enable = 1
    +
    +#
    +#    Boss.Kill.History.Reward.Enable
    +#        Description: Enables or disables the reward system for BKH.
    +#        Default:     0 - (Disabled)
    +#                     1 - (Enabled)
    +#
    +
    +Boss.Kill.History.Reward.Enable = 0
    +
    +#
    +#    Boss.Kill.History.Reward.Item.Id
    +#        Description: ID of the item, which all of party members will be rewarded on guild kill.
    +#        Default:     1 - (Enabled)
    +#                     0 - (Disabled)
    +#
    +
    +Boss.Kill.History.Reward.Item.Id = 49426
    +
    +#
    +#    Boss.Kill.History.Reward.Item.Count
    +#        Description: Count of the items, which all of party members will be rewarded on guild kill.
    +#        Default:     1 - (Enabled)
    +#                     0 - (Disabled)
    +#
    +
    +Boss.Kill.History.Reward.Item.Count = 10
    +
    +#
    +#    Boss.Kill.History.Guild.Group.10
    +#        Description: How many liverymen have to be in group
    +#        Default:     8
    +#                     
    +#   
    +
    +Boss.Kill.History.Guild.Group.10 = 8
    +
    +#
    +#    Boss.Kill.History.Guild.Group.25
    +#        Description: How many liverymen have to be in group
    +#        Default:     20
    +#                     
    +#   
    +
    +Boss.Kill.History.Guild.Group.25 = 20
    +
    +#
     ###################################################################################################
     No newline at end of file
    
    
    上面是C++代码文件
    
    下面是SQL文件代码
    
    
    DELETE FROM `trinity_string` WHERE `entry` IN (12010, 12011);
    INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc8`) VALUES
    (12010, '|cFF00FFFF%s - %s (Normal, %u peoples) defeated by guild "%s", in %u person(s)|r', '|cFF00FFFF%s - %s (Обычный режим на %u человек) повержен гильдией "%s", составом в %u человек.|r'),
    (12011, '|cFF00FFFF%s - %s (Heroic, %u peoples) defeated by guild "%s", in %u person(s)|r', '|cFF00FFFF%s - %s (Героический режим на %u человек) повержен гильдией "%s", составом в %u человек(а)|r');
  • 相关阅读:
    stenciljs 学习四 组件装饰器
    stenciljs 学习三 组件生命周期
    stenciljs 学习二 pwa 简单应用开发
    stenciljs ionic 团队开发的方便web 组件框架
    stenciljs 学习一 web 组件开发
    使用npm init快速创建web 应用
    adnanh webhook 框架 hook rule
    adnanh webhook 框架 hook 定义
    adnanh webhook 框架request values 说明
    adnanh webhook 框架execute-command 以及参数传递处理
  • 原文地址:https://www.cnblogs.com/needly/p/3752626.html
Copyright © 2011-2022 走看看