关灯
开启左侧

单机中一个有趣的推荐阵营系统Trinity335

  [复制链接]
admin实名认证 发表于 2016-4-27 23:08:35 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
1、你是否觉得邀请朋友来玩单机的时候,大家都不清楚创建什么阵营比较好?

2、是否在游戏平衡无法控制的时候,能希望推荐玩家去创建响应的阵营

下面就是一个这个系统,。带有conf 配置的,你可以随意切换

这样,。大家在玩魔兽世界私服单机的时候,就可以更有乐趣了!

先看看conf的内容

+
+###################################################################################################
+# CUSTOM CHARACTER LOGIN SCREEN OPTIONS
+#
+#    Recommended.Faction.Enable
+#        Description: On first account login, adds a fake character representing a faction side
+#        Default:     0 - (disable)
+#                     1 - (Enable)
+
+Recommended.Faction.Enable = 1
+
+#
+#    Recommended.Faction.Side
+#        Description: Recommended faction to represent
+#        Default:     1 - (alliance)
+#                     2 - (horde)
+
+Recommended.Faction.Side = 1
+
+#


额~~自己翻译一下!!


看看部分代码。。下面是部分代码。全部代码在下载中哈


src/server/game/Entities/Player/Player.cpp    |  119 +++++++++++++++++++++++++
src/server/game/Entities/Player/Player.h      |    1 +
src/server/game/Handlers/CharacterHandler.cpp |   11 +++
src/server/game/World/World.cpp               |    4 +
src/server/game/World/World.h                 |    2 +
src/server/worldserver/worldserver.conf.dist  |   21 +++++
6 files changed, 158 insertions(+)

diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 1d04af6..5db0aa3 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -2044,6 +2044,125 @@ bool Player::BuildEnumData(PreparedQueryResult result, WorldPacket* data)
     return true;
}

+bool Player::CreateFakeCharacter(WorldPacket* data)
+{
+    uint32 guid = 0;                                          // GUID
+    std::string charName;
+    uint32 charRace;
+    uint32 charClass;
+    uint32 charGender;
+    uint32 charLevel;
+    uint32 playerBytes1;
+    uint32 playerBytes2;
+
+    *data << uint64(MAKE_NEW_GUID(guid, 0, HIGHGUID_PLAYER)); // don't touch it
+    switch(sWorld->getIntConfig(CONFIG_RECOMMENDED_FACTION_SIDE))
+    {
+    case 1: // alliance
+    {
+        charName = "Alliance Recommended";
+        charRace = 4;                // race   : night elf
+        charClass = 1;               // class  : warrior
+        charGender = 1;              // gender : female
+        charLevel = 1;               // level  : 1
+        playerBytes1 = 33556231;     // used to create display column 1
+        playerBytes2 = 33554437;     // used to create display column 2
+    }
+    break;
+    case 2:
+    {
+        charName = "Horde Recommended";
+        charRace = 10;               // race   : blood elf
+        charClass = 4;               // class  : rogue
+        charGender = 1;              // gender : female
+        charLevel = 1;               // level  : 1
+        playerBytes1 = 17106692;     // used to create display column 1
+        playerBytes2 = 33554436;     // used to create display column 2
+    }
+    break;
+    default:
+    {
+        charName = "Horde Recommended";
+        charRace = 10;               // race   : blood elf
+        charClass = 4;               // class  : rogue
+        charGender = 1;              // gender : female
+        charLevel = 1;               // level  : 1
+        playerBytes1 = 17106692;     // used to create display column 1
+        playerBytes2 = 33554436;     // used to create display column 2
+    }
+    break;
+    }
+
+    *data << charName.c_str();                                // name
+    *data << uint8(charRace);                                 // race
+    *data << uint8(charClass);                                // class
+    *data << uint8(charGender);                               // gender
+
+    *data << uint8(playerBytes1);                             // skin
+    *data << uint8(playerBytes1 >> 8);                        // face
+    *data << uint8(playerBytes1 >> 16);                       // hair style
+    *data << uint8(playerBytes1 >> 24);                       // hair color
+
+    *data << uint8(playerBytes2 & 0xFF);                      // facial hair
+
+    *data << uint8(charLevel);                                // level
+    *data << uint32(876);                                     // zone
+    *data << uint32(1);                                       // map
+
+    *data << 0;                                               // x
+    *data << 0;                                               // y
+    *data << 0;                                               // z
+
+    *data << uint32(0);                                       // guild id
+
+    *data << uint32(CHARACTER_FLAG_LOCKED_BY_BILLING);        // character flags
+
+    *data << uint32(CHAR_CUSTOMIZE_FLAG_NONE);                // customize flags
+
+    *data << uint8(0 & AT_LOGIN_FIRST ? 1 : 0);               // First login
+
+    *data << uint32(0);                                       // pet display id
+    *data << uint32(0);                                       // pet level
+    *data << uint32(0);                                       // pet family
+
+    std::string equipmentTemplate = "0 0 0 0 0 0 0 0 60000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ";
+
+    Tokenizer equipment(equipmentTemplate.c_str(), ' ');
+    for (uint8 slot = 0; slot < INVENTORY_SLOT_BAG_END; ++slot)
+    {
+        uint32 visualBase = slot * 2;
+        uint32 itemId = GetUInt32ValueFromArray(equipment, visualBase);
+        ItemTemplate const* proto = sObjectMgr->GetItemTemplate(itemId);
+        if (!proto)
+        {
+            *data << uint32(0);
+            *data << uint8(0);
+            *data << uint32(0);
+            continue;
+        }
+
+        SpellItemEnchantmentEntry const* enchant = NULL;
+
+        uint32 enchants = GetUInt32ValueFromArray(equipment, visualBase + 1);
+        for (uint8 enchantSlot = PERM_ENCHANTMENT_SLOT; enchantSlot <= TEMP_ENCHANTMENT_SLOT; ++enchantSlot)
+        {
+            uint32 enchantId = 0x0000FFFF & (enchants >> enchantSlot*16);
+            if (!enchantId)
+                continue;
+
+            enchant = sSpellItemEnchantmentStore.LookupEntry(enchantId);
+            if (enchant)
+                break;
+        }
+
+        *data << uint32(proto->DisplayInfoID);
+        *data << uint8(proto->InventoryType);
+        *data << uint32(enchant ? enchant->aura_id : 0);
+    }
+
+    return true;
+}
+



好,。估计大家也看到了,这个是像魔兽客户端发送操作数据来实现的,。具体是否有用,我也没有测试过,希望大家喜欢


faction_recommend Trinity Core阵营推荐补丁下载
游客,如果您要查看本帖隐藏内容请回复

标签:单机
 

精彩评论2

倒序浏览
tity3833 发表于 2022-3-19 06:36:32 | 显示全部楼层
 

感谢楼主分享,吾爱尚玩,可以免费下载网单!
 
1314 发表于 2016-12-10 09:26:16 | 显示全部楼层
 
找了好久终于找到了!吾爱尚玩真棒!
 
VIP介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 最佳新人

    注册账号后积极发帖的会员
  • 活跃会员

    经常参与各类话题的讨论,发帖内容较有主见
  • 热心会员

    经常帮助其他会员答疑
  • 推广达人

    积极宣传本站,为本站带来更多注册会员
  • 宣传达人

    积极宣传本站,为本站带来更多的用户访问量
  • 灌水之王

    经常在论坛发帖,且发帖量较大
  • 突出贡献

    长期对论坛的繁荣而不断努力,或多次提出建设性意见
  • 优秀版主

    活跃且尽责职守的版主
  • 荣誉管理

    曾经为论坛做出突出贡献目前已离职的版主
  • 论坛元老

    为论坛做出突出贡献的会员

0关注

5粉丝

3421帖子

排行榜
作者专栏

QQ交流群&&微信订阅号

QQ交流群

微信订阅号

吾爱尚玩资源基地永久域名:

Www.523Play.Com

在线管理员QQ:1589479632

邮箱:Email@523play.com

QQ交流群:558936238

Copyright   ©2015-2116  吾爱尚玩资源基地|523play.comPowered by©523Pplay.Com技术支持:吾爱尚玩资源基地