浏览代码

修改bug

mycks 4 月之前
当前提交
65db0c4ed9
共有 56 个文件被更改,包括 8942 次插入0 次删除
  1. 8 0
      .gitignore
  2. 26 0
      NetClientCore/ClientTest.cs
  3. 13 0
      NetClientCore/ClientTestLogicalParsing.cs
  4. 14 0
      NetClientCore/NetClientCore.csproj
  5. 85 0
      NetClientCore/TCP/TCPClient.cs
  6. 251 0
      NetCore/ContentParse/ByteParse.cs
  7. 10 0
      NetCore/ContentParse/IContentParse.cs
  8. 6 0
      NetCore/ContentParse/IContentReceiver.cs
  9. 11 0
      NetCore/IConnection.cs
  10. 7 0
      NetCore/ILogicalParsing.cs
  11. 13 0
      NetCore/NetCore.csproj
  12. 11 0
      NetCore/NetCoreBasic/INetContainer.cs
  13. 8 0
      NetCore/Protocol/IProtocol.cs
  14. 10 0
      NetCore/Protocol/MemoryPack/MemoryMessage/MemoryRequest.cs
  15. 11 0
      NetCore/Protocol/MemoryPack/MemoryMessage/MemoryResponse.cs
  16. 24 0
      NetCore/Protocol/MemoryPack/MemoryWrap.cs
  17. 二进制
      NetCore/Protocol/Protobuf/Proto/protoc.exe
  18. 413 0
      NetCore/Protocol/Protobuf/ProtoMessge/CombatDataStruct.proto
  19. 955 0
      NetCore/Protocol/Protobuf/ProtoMessge/MsgEnum.proto
  20. 154 0
      NetCore/Protocol/Protobuf/ProtoMessge/MsgNotify.proto
  21. 1985 0
      NetCore/Protocol/Protobuf/ProtoMessge/MsgRequest.proto
  22. 1926 0
      NetCore/Protocol/Protobuf/ProtoMessge/MsgResponse.proto
  23. 1515 0
      NetCore/Protocol/Protobuf/ProtoMessge/MsgStruct.proto
  24. 6 0
      NetCore/Protocol/Protobuf/ProtobufWrap.cs
  25. 34 0
      NetServer.sln
  26. 12 0
      NetServer.sln.DotSettings.user
  27. 38 0
      NetServer/MongoDB/DBData/PlayerData.cs
  28. 7 0
      NetServer/MongoDB/DBData/PlayerHero.cs
  29. 29 0
      NetServer/MongoDB/DBDataLink.cs
  30. 34 0
      NetServer/MongoDB/DBLink.cs
  31. 48 0
      NetServer/MongoDB/PlayerDataLink.cs
  32. 10 0
      NetServer/NetLink/IServer.cs
  33. 106 0
      NetServer/NetLink/TCP/TCPServer.cs
  34. 128 0
      NetServer/NetLink/TCP/TCPServerConnection.cs
  35. 547 0
      NetServer/NetLink/TCPLink.cs
  36. 25 0
      NetServer/NetServer.csproj
  37. 17 0
      NetServer/ServerLogic/LogicManager.cs
  38. 26 0
      NetServer/ServerMain.cs
  39. 7 0
      NetServer/TomlData/ServerConfig.cs
  40. 2 0
      NetServer/serverconfig.toml
  41. 13 0
      NetServerCore/NetServerCore.csproj
  42. 4 0
      NetServerCore/obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs
  43. 22 0
      NetServerCore/obj/Debug/net7.0/NetServerCore.AssemblyInfo.cs
  44. 1 0
      NetServerCore/obj/Debug/net7.0/NetServerCore.AssemblyInfoInputs.cache
  45. 13 0
      NetServerCore/obj/Debug/net7.0/NetServerCore.GeneratedMSBuildEditorConfig.editorconfig
  46. 8 0
      NetServerCore/obj/Debug/net7.0/NetServerCore.GlobalUsings.g.cs
  47. 二进制
      NetServerCore/obj/Debug/net7.0/NetServerCore.assets.cache
  48. 二进制
      NetServerCore/obj/Debug/net7.0/NetServerCore.csproj.AssemblyReference.cache
  49. 146 0
      NetServerCore/obj/NetServerCore.csproj.nuget.dgspec.json
  50. 16 0
      NetServerCore/obj/NetServerCore.csproj.nuget.g.props
  51. 2 0
      NetServerCore/obj/NetServerCore.csproj.nuget.g.targets
  52. 170 0
      NetServerCore/obj/project.assets.json
  53. 12 0
      NetServerCore/obj/project.nuget.cache
  54. 1 0
      NetServerCore/obj/project.packagespec.json
  55. 1 0
      NetServerCore/obj/rider.project.model.nuget.info
  56. 1 0
      NetServerCore/obj/rider.project.restore.info

+ 8 - 0
.gitignore

@@ -0,0 +1,8 @@
+
+.idea
+NetServer/bin
+NetServer/obj
+NetCore/bin
+NetCore/obj
+NetClientCore/bin
+NetClientCore/obj

+ 26 - 0
NetClientCore/ClientTest.cs

@@ -0,0 +1,26 @@
+using NetClientCore.TCP;
+using NetCore;
+using NetCore.ContentParse;
+using NetCore.Protocol.MemoryPack;
+
+namespace NetClientCore;
+
+public static class ClientTest
+{
+    static void Main(string[] args)
+    {
+        ClientTestLogicalParsing clientTestLogicalParsing = new ClientTestLogicalParsing();
+        TCPClient<ByteParse, MemoryWrap<MemoryRequest, MemoryResponse>> tcpClient =
+            new TCPClient<ByteParse, MemoryWrap<MemoryRequest, MemoryResponse>>();
+        tcpClient.Connect("127.0.0.1", 1000, clientTestLogicalParsing);
+        int count = 0;
+        while (true)
+        {
+            count++;
+            MemoryRequest memoryRequest = new MemoryRequest();
+            memoryRequest.count = count;
+            tcpClient.SendData(memoryRequest);
+            Thread.Sleep(10);
+        }
+    }
+}

+ 13 - 0
NetClientCore/ClientTestLogicalParsing.cs

@@ -0,0 +1,13 @@
+using NetCore;
+using NetCore.Protocol.MemoryPack;
+
+namespace NetClientCore;
+
+public class ClientTestLogicalParsing : ILogicalParsing
+{
+    public void Logic(object data, IConnection iConnection)
+    {
+        var memoryResponse = data as MemoryResponse;
+        Console.WriteLine("收到服务器消息" + memoryResponse.count);
+    }
+}

+ 14 - 0
NetClientCore/NetClientCore.csproj

@@ -0,0 +1,14 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>net7.0</TargetFramework>
+        <ImplicitUsings>enable</ImplicitUsings>
+        <Nullable>enable</Nullable>
+        <OutputType>Exe</OutputType>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <ProjectReference Include="..\NetCore\NetCore.csproj" />
+    </ItemGroup>
+
+</Project>

+ 85 - 0
NetClientCore/TCP/TCPClient.cs

@@ -0,0 +1,85 @@
+using System.Net;
+using System.Net.Sockets;
+using NetCore;
+using NetCore.ContentParse;
+using NetCore.Protocol;
+
+namespace NetClientCore.TCP;
+
+public class TCPClient<T, K> : IContentReceiver, IConnection
+    where T : IContentParse where K : IProtocol
+{
+    private Socket socket;
+
+    private byte[] buffData = new byte[655300];
+
+    public bool isConnected { get; set; }
+
+    public IContentParse iContentParse
+    {
+        get { return _iContentParse; }
+    }
+
+    public IProtocol iProtocol
+    {
+        get { return _iProtocol; }
+    }
+
+    private IContentParse _iContentParse;
+    public IProtocol _iProtocol;
+    private Thread _udpClientThread;
+    private ILogicalParsing LogicalParsing;
+    
+    
+
+    public async Task Connect(string ip, int port, ILogicalParsing LogicalParsing)
+    {
+        this.LogicalParsing = LogicalParsing;
+        socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+        await socket.ConnectAsync(ip, port);
+        _iContentParse = Activator.CreateInstance<T>();
+        _iProtocol = Activator.CreateInstance<K>();
+        _udpClientThread = new Thread(TheUpdate);
+        _udpClientThread.Start();
+    }
+
+    private void TheUpdate()
+    {
+        while (socket != null)
+        {
+            try
+            {
+                int count = socket.Receive(buffData);
+                if (count <= 0)
+                {
+                    Thread.Sleep(1);
+                    return;
+                }
+
+                byte[] data = new byte[count];
+                Array.Copy(buffData, 0, data, 0, count);
+                _iContentParse.ParseByte(data, _iProtocol, this);
+                // LogTool.Log("数据来了" + count);
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e);
+                isConnected = false;
+                break;
+            }
+        }
+
+        Console.WriteLine("服务器执行完毕");
+    }
+
+    public void AddContent(object data)
+    {
+        LogicalParsing.Logic(data, this);
+    }
+    public void SendData(object sendData)
+    {
+        byte[] data = iProtocol.Serialize(sendData);
+        byte[] parseData=  _iContentParse.AssembleByte(data);
+        socket.SendAsync(parseData, SocketFlags.None);
+    }
+}

+ 251 - 0
NetCore/ContentParse/ByteParse.cs

@@ -0,0 +1,251 @@
+using NetCore.NetServerCoreBasic;
+using NetCore.Protocol;
+
+namespace NetCore.ContentParse;
+
+public class ByteParse : IContentParse
+{
+    // private byte[] buffData = new byte[655350];
+
+    //记录半包数据
+    private bool isBufferData;
+    private byte[] lastBuffData;
+    private int lastCount;
+
+    private ushort lastXueLieHao;
+    //数据结束
+
+    //尾包
+    private byte[] weiBaoBuffData;
+
+
+    private byte[] ShortToByte(short number)
+    {
+        byte[] numberBytes = BitConverter.GetBytes(number).Reverse().ToArray();
+        return numberBytes;
+    }
+
+    private byte[] UShortToByte(ushort number)
+    {
+        byte[] numberBytes = BitConverter.GetBytes(number).Reverse().ToArray();
+        return numberBytes;
+    }
+
+    private byte[] IntToByte(int number,bool isReverse = false)
+    {
+        if (isReverse)
+        {
+            byte[] numberBytes = BitConverter.GetBytes(number).Reverse().ToArray();
+            return numberBytes;
+        }
+        else
+        {
+            byte[] numberBytes = BitConverter.GetBytes(number);
+            return numberBytes;
+        }
+
+    }
+
+    private short ByteToShort(byte[] numberBytes, bool isReverse = false)
+    {
+        if (isReverse)
+        {
+            short converted = BitConverter.ToInt16(numberBytes.Reverse().ToArray(), 0);
+            return converted;
+        }
+        else
+        {
+            short converted = BitConverter.ToInt16(numberBytes, 0);
+            return converted;
+        }
+    }
+
+    private ushort ByteToUshort(byte[] numberBytes, bool isReverse = false)
+    {
+        if (isReverse)
+        {
+            ushort converted = BitConverter.ToUInt16(numberBytes.Reverse().ToArray(), 0);
+            return converted;
+        }
+        else
+        {
+            ushort converted = BitConverter.ToUInt16(numberBytes, 0);
+            return converted;
+        }
+    }
+
+    private int ByteToInt(byte[] numberBytes, bool isReverse = false)
+    {
+        if (isReverse)
+        {
+            int converted = BitConverter.ToInt32(numberBytes.Reverse().ToArray(), 0);
+            return converted;
+        }
+        else
+        {
+            int converted = BitConverter.ToInt32(numberBytes, 0);
+            return converted;
+        }
+    }
+
+    public byte[] AssembleByte(byte[] content)
+    {
+        byte[] mdata = null;
+        // LogTool.Log("回复消息" + buffer.Length);
+        mdata = new byte[content.Length + 4];
+
+        byte[] zcd = IntToByte(content.Length);
+        mdata[0] = zcd[0];
+        mdata[1] = zcd[1];
+        mdata[2] = zcd[2];
+        mdata[3] = zcd[3];
+        Array.Copy(content, 0, mdata, 4, content.Length);
+        return mdata;
+    }
+
+    public void ParseByte(byte[] buffData, IProtocol iProtocol, IContentReceiver contentReceiver)
+    {
+        int count = buffData.Length;
+        try
+        {
+            int currCount = 0;
+            int startIndex = 0;
+
+            // bool isEnd = false;
+            while (currCount < count)
+            {
+                // isEnd = true;
+                byte[] data = null;
+                ushort xueLieHao = 1;
+                int cdShort = 0;
+
+                if (!isBufferData)
+                {
+                    if (weiBaoBuffData != null)
+                    {
+                        int maxCount = 6553500;
+                        if (count + weiBaoBuffData.Length > maxCount)
+                        {
+                            maxCount = count + weiBaoBuffData.Length;
+                        }
+
+                        // LogTool.Log("修复包太短__" + count + "___" + weiBaoBuffData.Length);
+                        byte[] newBuff = new byte[maxCount];
+                        Array.Copy(weiBaoBuffData, 0, newBuff, 0, weiBaoBuffData.Length);
+                        Array.Copy(buffData, 0, newBuff, weiBaoBuffData.Length, count);
+
+                        buffData = newBuff;
+                        count += weiBaoBuffData.Length;
+                        // LogTool.Log("修复包后太短__" + count);
+                        if (count < 6)
+                        {
+                            weiBaoBuffData = new byte[count];
+                            // LogTool.Log("包太短222__" + count);
+                            Array.Copy(buffData, currCount, weiBaoBuffData, 0, count);
+                            break;
+                        }
+                        else
+                        {
+                            weiBaoBuffData = null;
+                        }
+                    }
+                    else
+                    {
+                        if (count - currCount < 6)
+                        {
+                            weiBaoBuffData = new byte[count];
+                            // LogTool.Log("包太短__" + count);
+                            Array.Copy(buffData, currCount, weiBaoBuffData, 0, count);
+                            break;
+                        }
+                    }
+                }
+
+                if (!isBufferData)
+                {
+                    byte[] dataBuffLanl = new byte[4];
+                    dataBuffLanl[0] = buffData[currCount];
+                    currCount++;
+                    dataBuffLanl[1] = buffData[currCount];
+                    currCount++;
+                    dataBuffLanl[2] = buffData[currCount];
+                    currCount++;
+                    dataBuffLanl[3] = buffData[currCount];
+                    currCount++;
+                    cdShort = (ByteToInt(dataBuffLanl, false));
+                    // LogTool.Log("数据到来" + cdShort + "__" + count + "_" + xueLieHao);
+                    if ((currCount + cdShort) > count) //处理半包情况
+                    {
+                        lastBuffData = new byte[count - currCount];
+                        lastCount = cdShort;
+                        lastXueLieHao = xueLieHao;
+                        Array.Copy(buffData, currCount, lastBuffData, 0, lastBuffData.Length);
+                        // LogTool.Log("数据只有一半" + count + "__" + currCount + "___" + cdShort);
+                        isBufferData = true;
+                        break;
+                    }
+                    else
+                    {
+                        // LogTool.Log(currCount + "_收到长度:" + cdShort + "_Max" + count);
+                        data = new byte[cdShort];
+                        Array.Copy(buffData, currCount, data, 0, data.Length);
+                    }
+                }
+                else if (lastCount - lastBuffData.Length > count)
+                {
+                    // LogTool.Log("数据只有一半的一半" + count + "__" + lastCount + "___" + lastBuffData.Length);
+                    byte[] newLastBuffData = new byte[lastBuffData.Length + count];
+                    Array.Copy(lastBuffData, 0, newLastBuffData, 0, lastBuffData.Length);
+                    Array.Copy(buffData, 0, newLastBuffData, lastBuffData.Length, count);
+                    lastBuffData = newLastBuffData;
+                    break;
+                }
+
+                else if (lastBuffData != null) //处理半包情况
+                {
+                    isBufferData = false;
+                    // LogTool.Log("修复半包" + lastCount + "__" + count + "___" +
+                    //             (lastCount - lastBuffData.Length));
+                    xueLieHao = lastXueLieHao;
+                    data = new byte[lastCount];
+                    cdShort = lastCount - lastBuffData.Length;
+                    Array.Copy(lastBuffData, 0, data, 0, lastBuffData.Length);
+                    Array.Copy(buffData, currCount, data, lastBuffData.Length, cdShort);
+                }
+
+                // SimulationCombat cr = SimulationCombat.Parser.ParseFrom(data);
+                // RequestBuffer buffer = new RequestBuffer();
+                // buffer.combatRequest = cr;
+                // buffer.xlh = xueLieHao;
+                // // allCount++;
+                // // LogTool.Log("shoudao "+allCount);
+                // // buffer.httpListenerContext = httpListenerContext;
+                // LogTool.Log("收到中转服请求" + cr.CombatType + "___" + xueLieHao);
+                // AddBuffer(buffer);
+                currCount += cdShort;
+                startIndex = currCount;
+                object serializeData = iProtocol.Deserialize(data);
+                contentReceiver.AddContent(serializeData);
+            }
+
+            // if (isEnd&&currCount < count&&!isBufferData)//尾包
+            // {
+            //     LogTool.Log("尾巴处理"+currCount+"___"+count);
+            //     isWeiBao = true;
+            //     lastBuffData = new byte[count - currCount];
+            //     Array.Copy(buffData, currCount, lastBuffData, 0, lastBuffData.Length);
+            //    
+            // }
+        }
+        catch (Exception e)
+        {
+            Console.WriteLine(e);
+            // RequestBuffer buffer = new RequestBuffer();
+            // buffer.combatRequest = cr;
+            // LogTool.Log(e);
+            //
+            // Send(null, null);
+            // LogTool.Log("");
+        }
+    }
+}

+ 10 - 0
NetCore/ContentParse/IContentParse.cs

@@ -0,0 +1,10 @@
+using NetCore.NetServerCoreBasic;
+using NetCore.Protocol;
+
+namespace NetCore.ContentParse;
+
+public interface IContentParse
+{
+    byte[] AssembleByte(byte[] content);
+    void  ParseByte(byte[] content,IProtocol iProtocol,IContentReceiver contentReceiver);
+}

+ 6 - 0
NetCore/ContentParse/IContentReceiver.cs

@@ -0,0 +1,6 @@
+namespace NetCore.ContentParse;
+
+public interface IContentReceiver
+{
+    void AddContent(object data);
+}

+ 11 - 0
NetCore/IConnection.cs

@@ -0,0 +1,11 @@
+using NetCore.ContentParse;
+using NetCore.NetServerCoreBasic;
+using NetCore.Protocol;
+
+namespace NetCore
+{
+    public interface IConnection : INetContainer
+    {
+        void SendData(object sendData);
+    }
+}

+ 7 - 0
NetCore/ILogicalParsing.cs

@@ -0,0 +1,7 @@
+namespace NetCore
+{
+    public interface ILogicalParsing
+    {
+        void Logic(object data, IConnection iConnection);
+    }
+}

+ 13 - 0
NetCore/NetCore.csproj

@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>net7.0</TargetFramework>
+        <ImplicitUsings>enable</ImplicitUsings>
+        <Nullable>enable</Nullable>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <PackageReference Include="MemoryPack" Version="1.21.3" />
+    </ItemGroup>
+
+</Project>

+ 11 - 0
NetCore/NetCoreBasic/INetContainer.cs

@@ -0,0 +1,11 @@
+using NetCore.ContentParse;
+using NetCore.Protocol;
+
+namespace NetCore.NetServerCoreBasic
+{
+    public interface INetContainer
+    {
+        IContentParse iContentParse { get; }
+        IProtocol iProtocol { get; }
+    }
+}

+ 8 - 0
NetCore/Protocol/IProtocol.cs

@@ -0,0 +1,8 @@
+namespace NetCore.Protocol;
+
+public interface IProtocol
+{
+    
+    object Deserialize(byte[] data);
+    byte[] Serialize(object serializeObject);
+}

+ 10 - 0
NetCore/Protocol/MemoryPack/MemoryMessage/MemoryRequest.cs

@@ -0,0 +1,10 @@
+using MemoryPack;
+
+namespace NetCore.Protocol.MemoryPack
+{
+    [MemoryPackable]
+    public partial class MemoryRequest
+    {
+        public int count;
+    }
+}

+ 11 - 0
NetCore/Protocol/MemoryPack/MemoryMessage/MemoryResponse.cs

@@ -0,0 +1,11 @@
+using MemoryPack;
+
+namespace NetCore.Protocol.MemoryPack
+{
+
+    [MemoryPackable]
+    public partial class MemoryResponse
+    {
+        public int count;
+    }
+}

+ 24 - 0
NetCore/Protocol/MemoryPack/MemoryWrap.cs

@@ -0,0 +1,24 @@
+using MemoryPack;
+
+namespace NetCore.Protocol.MemoryPack;
+
+/// <summary>
+/// 
+/// </summary>
+/// <typeparam name="T">Serialize</typeparam>
+/// <typeparam name="K">Deserialize</typeparam>
+public class MemoryWrap<T,K> : IProtocol where T : class
+{
+    public object Deserialize(byte[] data)
+    {
+        K serialize = MemoryPackSerializer.Deserialize<K>(data);
+        return serialize;
+    }
+
+    public byte[] Serialize(object serializeObject)
+    {
+        T serialize = serializeObject as T;
+        byte[] data = MemoryPackSerializer.Serialize(serialize);
+        return data;
+    }
+}

二进制
NetCore/Protocol/Protobuf/Proto/protoc.exe


+ 413 - 0
NetCore/Protocol/Protobuf/ProtoMessge/CombatDataStruct.proto

@@ -0,0 +1,413 @@
+syntax = "proto3";
+import "MsgStruct.proto";
+import "MsgEnum.proto";
+package com.fort23.protocol.protobuf;
+message CombatData
+{
+  repeated HeroData myHero = 1;
+  repeated HeroData enemyHero = 2;
+}
+message HeroData
+{
+  int64 heroGuid = 1;
+  int64 HP = 2;
+  int64 Defense = 3;
+  int64 Attack = 4;
+  //转码后
+  int64 AttackSpeed = 5;
+  int64 SkillChargeSpeed = 6;
+  int32 Awaken = 7;
+  int64 Power = 8;
+  int64 WeaponDps = 9;
+  int64 ShieldValue = 10;
+  int64 HeroDps = 11;
+  int64 Crit = 13;
+  int64 CritDamage = 14;
+  int32 HeroLevel = 24;
+  int64 HitOdds = 26;
+  int32 MaxSpaceEnergy = 27;
+  sint32 ID = 30;
+  // 评分
+  int32 score = 31;
+
+  int64 FallResistance = 32;
+  int64 DebuffDodge = 33;
+  int64 SmallSkillsSpeed = 34;
+  int64 DebuffHitOdds = 35;
+  int64 addCure = 36;
+  int64 Proficient = 37;
+  int64 MaxHarm = 38;
+}
+/* 英雄信息 */
+message CombatHero
+{
+  // 英雄ID
+  int32 id = 1;
+  // 英雄等级
+  int32 level = 2;
+
+  // 觉醒等级
+  int32 awakenLevel = 4;
+  // 英雄随身装备
+  repeated Equipment equipment = 5;
+
+  // 英雄装备武器
+  Weapon equipWeapon = 7;
+
+  // 英雄装备遗物列表
+  repeated Relic equipRelics = 14;
+
+  // 已装备秘石
+  Gem equipGem = 17;
+  // 英雄血量百分百
+  int32 hpPercent = 18;
+  // 技能能量百分比 默认是0
+  int32 skillEnergy = 19;
+}
+//模拟战斗game服请求验证服的信息
+message SimulationCombat
+{
+  CombatType combatType = 1;
+  repeated CombatHero myHero = 2;
+  int32 combatSeed = 3;
+  int32 levelBattleId = 4;
+  //  SimulationLevelBattle levelBattle = 4;
+  SimulationTestCombat SimulationTestCombat = 5;
+  SimulationFightTogether SimulationFightTogether = 6;
+  //随机数
+  //  int32 randomValue = 7;
+  //左边的英雄 这个准备不用了
+  repeated VerifyHero leftHero = 8;
+  //右边的英雄 这个准备不用了
+  repeated VerifyHero rightHero = 9;
+  //Buff列表
+  repeated StageBuff buffs = 10;
+  //队伍神器ID
+  int32 goldenRelicId = 11;
+  //客户端的战斗信息
+  CombatResult clientCombatResult = 12;
+
+  //左边英雄输入
+  repeated CombatInputCode leftInput=13;
+  //右边英雄输入(目前没有,看后面有PVP没)
+  repeated CombatInputCode rightInput=14;
+  // 副本ID
+  int32 challengeId = 15;
+  // 是否委托战斗
+  bool isAutoFight = 16;
+  // 图鉴信息
+  repeated Medal medals = 17;
+  // 怪物词缀(RogueLike战斗)
+  repeated MonsterGroup monsterGroups = 18;
+  // 节点序号(RogueLike战斗)
+  int32 nodeOrder = 19;
+  // Rogue配置ID(RogueLike战斗)
+  int32 rogueConfigId = 20;
+  // 冒险机关ID
+  int32 stageTrapId = 21;
+  // 冒险机关节点ID
+  int32 stageTrapNodeId = 22;
+  // 玩家飞艇等级
+  int32 playerLevel = 23;
+  //玩家ID
+  int64 playerId=24;
+
+}
+//模拟站到返回给game服的信息
+message SimulationCombatResponse
+{
+  CombatType combatType = 1;
+
+  SimulationFightTogetherResponse SimulationFightTogetherResponse = 2;
+
+  CombatResult combatResult = 3;
+}
+
+// 战斗结果信息
+message CombatResult {
+  // 我方的战斗结果英雄数据,需要传到服务器做校验
+  repeated HeroData myHeroData = 3;
+  // 敌方的战斗英雄数据,需要传到服务器做校验
+  repeated HeroData enemyHeroData = 4;
+  // 战斗是否胜利
+  bool isWin = 9;
+  // 通关时间
+  int32 time = 11;
+
+  //开始游戏时的数据
+  repeated HeroData myStartGameHeroData = 12;
+  // 开始游戏时的数据
+  repeated HeroData enemyStartGameHeroData = 13;
+}
+
+//共斗返回给game服务器的信息
+message SimulationFightTogetherResponse
+{
+  repeated FightTogetherPlayerInfo FightTogetherPlayerInfo = 1;
+  int32 levelBattleId = 2;
+  repeated FightTogetherInfo FightTogetherInfo = 3;
+  int32 combatSeed = 4;
+}
+
+message FightTogetherInfo
+{
+  int64 playerId = 1;
+  int32 port = 3;
+  string ip = 4;
+  uint32 conv = 5;
+}
+
+
+message SimulationFightTogether
+{
+  repeated FightTogetherPlayerInfo FightTogetherPlayerInfo = 1;
+  int32 levelBattleId = 2;
+  int32 roomId = 3;
+  // 战斗结束通知url
+  string notifyUrl = 4;
+}
+
+message SimulationLevelBattle
+{
+  int32 levelBattleId = 1;
+}
+
+message SimulationTestCombatHeroInfo
+{
+  CombatHero combatHero = 1;
+  //额外信息 combatHero+=heroData;
+  HeroData heroData = 2;
+  //英雄GUID
+  int32 guid = 3;
+}
+//模拟测试战斗
+message SimulationTestCombat
+{
+  repeated SimulationTestCombatHeroInfo myHero = 1;
+  repeated SimulationTestCombatHeroInfo enemyHero = 2;
+}
+enum InputCode
+{
+  Null = 0;
+  //使用技能
+  UseSkill = 1;
+  //堆叠
+  ToStack = 2;
+  //使用神器
+  UseArtifact = 3;
+}
+//战斗输入命令
+message CombatInputCode
+{
+  int32 heroguid = 1;
+  int32 heroid = 2;
+  InputCode inputCode = 3;
+
+  bool ToStackForIsUp = 4;
+
+  //游戏帧
+  int32 gameFrame = 5;
+  //编号
+  int64 serialNumber = 6;
+}
+
+message HeroUseSkill
+{
+  int32 skillID = 1;
+}
+
+
+
+
+message CombatSynchronizeRequest
+{
+  CombatSynchronizeType CombatSynchronizeType = 1;
+  FightTogetherCombatPrepareFinish FightTogetherCombatPrepareFinish = 2;
+  repeated CombatInputCode combatInputCode = 3;
+  //测试模拟的出战英雄
+  SimulationFightTogether TestSimulationFightTogether = 6;
+  //测试用的战斗开始标记
+  TestStartCombatSynchronize TestStartCombatSynchronize = 7;
+}
+message CombatSynchronizeResponse
+{
+  CombatSynchronizeType CombatSynchronizeType = 1;
+  CombatSynchronizeData CombatSynchronizeData = 4;
+  FightTogetherCombatPrepareStart FightTogetherCombatPrepareStart = 5;
+
+}
+
+message TestStartCombatSynchronize
+{
+
+}
+message CombatSynchronizeResponsePack
+{
+  repeated CombatSynchronizeResponse allCombatSynchronizeResponse = 1;
+  int64 time = 6;
+}
+
+message FightTogetherCombatPrepareFinish
+{
+  ///编号
+  int64 serialNumber = 2;
+  //玩家id
+  int32 playerId = 3;
+}
+
+
+message FightTogetherPlayerInfo
+{
+  repeated SimulationTestCombatHeroInfo myHero = 1;
+  ///编号
+  int64 serialNumber = 2;
+  //玩家id
+  int64 playerId = 3;
+  //神器ID
+  int32 relicId = 4;
+  //玩家端口
+  int32 serverPort = 5;
+
+  //玩家状态 0=空闲 1=准备 2=离开
+  int32 playerSate = 6;
+  //玩家名字
+  string playerName = 7;
+  //玩家等级
+  int32 level = 8;
+  // 选择的Buff
+  int32 buffId = 9;
+  // 玩家头像
+  int32 playerIcon = 10;
+  // 玩家称呼
+  int32 selectTitle = 11;
+  // 客户端端口
+  int32 clientPort = 12;
+  // 是否是机器人
+  bool isRobot = 13;
+  // 战斗力
+  int64 battlePower = 14;
+}
+message FightTogetherCombatPrepareStart
+{
+  repeated FightTogetherPlayerInfo myHero = 1;
+  int32 levelBattleId = 2;
+
+}
+
+message CreateHeroInfo
+{
+  repeated FightTogetherPlayerInfo myHero = 1;
+
+}
+
+
+
+//验证时的英雄数据
+message VerifyHero
+{
+  int32 heroGuid = 1;
+  int32 heroId = 2;
+  int64 maxHarm = 3;
+  //每一帧的数据
+  repeated VerifyHeroInfoForFrame verifyHeroInfo = 100;
+}
+message VerifyHeroInfoForFrame
+{
+  int32   frame = 1;
+  int32  hashCode = 2;
+  SynchronizeHeroInfoList SynchronizeHeroInfoKeyList = 101;
+}
+
+
+message CombatAddBuff
+{
+  int32 buffId = 1;
+  int64 targetSerialNumber = 2;
+  int32 targetHeroId = 3;
+  int64 sourceSerialNumber = 4;
+  int32 sourceHeroId = 5;
+  int64 buffTime = 6;
+}
+
+message CombatSynchronizeData
+{
+  CampInfo myCampInfo = 1;
+  CampInfo enemyCampInfo = 2;
+  //游戏帧
+  int32 gameFrame = 6;
+
+  int32 seedInext = 7;
+  int32 inextp = 8;
+  int32 randCount = 9;
+  int32 randCount2 = 10;
+  //游戏结束
+  bool isGameOver = 11;
+  bool isWin = 12;
+}
+
+message CampInfo
+{
+  repeated SynchronizeHeroInfo SynchronizeMyHeroInfo = 1;
+  repeated CombatInputCode SynchronizeMyCombatInputCode = 4;
+  repeated SynchronizeHarmInfo SynchronizeMyHarmInfo = 7;
+
+  repeated CombatAddBuff SynchronizeAddBuff = 14;
+
+}
+
+message SynchronizeHeroInfo
+{
+  int32 sourceHeroGuid = 1;
+
+
+  //英雄状态
+  int32 heroState = 4;
+  int64 serialNumber = 5;
+
+  int64 attHarm = 20;
+  int64 bearHarm = 21;
+  int64 recover = 22;
+
+  SynchronizeLocationInfo SynchronizeLocationInfo = 100;
+  SynchronizeHeroInfoList SynchronizeHeroInfoKeyList = 101;
+
+
+}
+message SynchronizeHeroInfoKeyValue
+{
+  string  key = 1;
+  int64 value = 2;
+}
+
+message SynchronizeHeroInfoByteKeyValue
+{
+  string  key = 1;
+  bytes value = 2;
+}
+//同步伤害
+message SynchronizeHarmInfo
+{
+  int64 value = 1;
+  int64 serialNumber = 2;
+  int64 targetSerialNumber = 3;
+  int32 targetHeroId = 4;
+  int64 sourceSerialNumber = 5;
+  int32 sourceHeroId = 6;
+  //1=伤害 2=恢复
+  int32 harmType = 7;
+  int32 attTypeValue = 8;
+  int32 harmTypeValue = 9;
+}
+
+message SynchronizeLocationInfo
+{
+  int64 x = 5;
+  int64 y = 6;
+  int64 rx = 7;
+  int64 rz = 8;
+}
+message SynchronizeHeroInfoList
+{
+  int64 hp = 1;
+}
+

+ 955 - 0
NetCore/Protocol/Protobuf/ProtoMessge/MsgEnum.proto

@@ -0,0 +1,955 @@
+syntax = "proto3";
+
+package com.fort23.protocol.protobuf;
+// option java_outer_classname = "MsgEnum";
+// option java_multiple_files = true;
+
+/* 消息类型枚举 */
+enum MsgType
+{
+  /********************************************************/
+  /*********** Gateway服消息类型枚举,分段号:0~40 *************/
+  /********************************************************/
+  NULL = 0;
+  // 断线重连
+  RECONNECT = 1;
+  // 玩家离线
+  PLAYER_OFFLINE = 2;
+
+  /********************************************************/
+  /*********** Login服消息类型枚举,分段号:41~100 *************/
+  /********************************************************/
+  // 游客用户注册
+  VISITOR_USER_REGISTER = 41;
+  // 游客用户登陆
+  VISITOR_USER_LOGIN = 42;
+  // 平台用户注册
+  PLATFORM_USER_REGISTER = 43;
+  // 平台用户登录
+  PLATFORM_USER_LOGIN = 44;
+  // 平台用户绑定
+  PLATFORM_USER_BIND = 45;
+  // 平台用户未绑定
+  PLATFORM_USER_UNBIND = 46;
+  // 实名认证设置
+  REAL_NAME_SET = 47;
+  // 客户端配置获取
+  CLIENT_CONFIG_GET = 48;
+  // 登录公告获取
+  ANNOUNCEMENT_GET = 49;
+  // 服务器列表获取
+  SERVER_LIST_GET = 50;
+  // 机器人用户注册
+  ROBOT_USER_REGISTER = 51;
+  // 机器人用户登陆
+  ROBOT_USER_LOGIN = 52;
+
+
+  /********************************************************/
+  /*********** Game服消息类型枚举,分段号:101~1000 ***********/
+  /********************************************************/
+  // 游戏服进入
+  GAME_ENTER = 101;
+  // 基础信息记录
+  BASE_INFO_RECORD = 103;
+  // 道具使用
+  ITEM_USE = 104;
+  // 道具出售
+  ITEM_SELL = 105;
+  // 玩家改名
+  PLAYER_RENAME = 106;
+  // 玩家恢复体力
+  PLAYER_RECHARGE = 107;
+  // 体力购买
+  STRENGTH_BUY = 108;
+  // 头像选择
+  ICON_SELECT = 109;
+  // 支付回调
+  PAY_CALLBACK = 110;
+  // 小红点保存
+  RED_DOT_SAVE = 111;
+  // 小红点更新(内部服务器用)
+  RED_DOT_UPDATE = 112;
+  // 游戏公告获取
+  GAME_ANNOUNCEMENT_GET = 113;
+
+  // 英雄升级
+  HERO_UPGRADE = 200;
+  // 英雄觉醒
+  HERO_AWAKEN = 201;
+  //英雄羁绊升级
+  HERO_FETTER_UP = 202;
+  //英雄羁绊奖励领取
+  HERO_FETTER_AWARD = 203;
+  // 英雄装备遗物
+  HERO_EQUIP_RELIC = 204;
+  // 英雄卸下遗物
+  HERO_UNLOAD_RELIC = 205;
+  // 英雄一键装备遗物
+  HERO_EQUIP_ALL_RELIC = 206;
+  // 英雄一键卸下遗物
+  HERO_UNLOAD_ALL_RELIC = 207;
+
+  // 进入主线关卡
+  MAIN_STAGE_ENTER = 220;
+  // 保存主线关卡
+  MAIN_STAGE_SAVE = 221;
+  // 完成关卡机关
+  STAGE_TRAP_COMPLETE = 222;
+  // 完成关卡机关节点
+  STAGE_TRAP_NODE_COMPLETE = 223;
+  // 退出主线关卡
+  MAIN_STAGE_QUIT = 224;
+  // 主线关卡预览
+  MAIN_STAGE_PREVIEW = 225;
+  // 章节奖励领取
+  CHAPTER_REWARD_GET = 226;
+  // 关卡主动复活
+  STAGE_RESURRECT = 227;
+
+  // 装备强化
+  EQUIPMENT_UPGRADE = 230;
+
+  // 秘石装备/卸下
+  GEM_EQUIP = 240;
+
+  // 符文升级
+  RUNE_UPGRADE = 245;
+
+  // 武器强化
+  WEAPON_UPGRADE = 250;
+  // 武器升星
+  WEAPON_AWAKEN = 251;
+  // 武器装备
+  WEAPON_EQUIP = 252;
+  // 武器卸下
+  WEAPON_UNLOAD = 253;
+
+  // 编辑布阵(添加、修改、删除)
+  TEAMPRESET_EDIT = 260;
+  // 应用布阵
+  TEAMPRESET_USE = 261;
+  // 查找布阵
+  TEAMPRESET_FIND = 263;
+  // 特殊玩法换人
+  TEAM_PRESET_SPECIAL = 264;
+  // 特殊玩法打开
+  TEAM_PRESET_SPECIAL_OPEN = 265;
+
+  // 战斗开始
+  COMBAT_START = 270;
+  // 战斗结束
+  COMBAT_FINISH = 271;
+
+  // 招募打开
+  SUMMON_OPEN = 280;
+  // 招募英雄和抽取武器
+  SUMMON = 281;
+  // 招募记录获取
+  SUMMON_RECORD_GET = 282;
+
+  // 商城打开
+  SHOP_OPEN = 290;
+  // 商店商品取得
+  SHOP_ITEM_GET = 291;
+  // 商店商品购买
+  SHOP_ITEM_BUY = 292;
+  // 商店刷新
+  SHOP_REFRESH = 293;
+  // 商店礼包购买
+  SHOP_GIFT_ITEM_BUY = 294;
+  // 商店礼包购买通知
+  SHOP_GIFT_ITEM_BUY_NOTIFY = 295;
+
+  // 基础副本打开
+  DUPLICATE_OPEN = 300;
+  // 副本自动战斗
+  DUPLICATE_AUTO_FIGHT = 301;
+  // 资源副本打开(非纯战斗)
+  DUPLICATE_ENTER = 302;
+  // 资源副本退出(非纯战斗)
+  DUPLICATE_QUIT = 303;
+
+  //探索任务打开
+  ExploreTask_OPEN = 310;
+  //探索任务开始
+  ExploreTask_Start = 311;
+  //探索任务领取
+  ExploreTask_Award = 312;
+  //探索任务接受
+  ExploreTask_Accept = 313;
+  //酒馆升级
+  Explore_LVUP = 314;
+
+
+  //获取商业建筑数据
+  MallBuilding_GetData = 320;
+  //添加商业建筑工作英雄
+  MallBuilding_SetWorkHero = 321;
+  //获取商业建筑工作奖励
+  MallBuilding_GetWorkAward = 322;
+
+  // 打工数据获取
+  WORK_DATA_GET = 323;
+  // 打工英雄设置
+  WORK_HERO_SET = 324;
+  // 打工英雄一键设置
+  WORK_HERO_SET_ALL = 325;
+  // 打工奖励获取
+  WORK_AWARD_GET = 326;
+  // 打工Buff兑换
+  WORK_BUFF_BUY = 327;
+
+  //战斗复活
+  COMBAT_RESURRECTION = 330;
+
+  //勇士选拔赛打开
+  WARRIOR_OPEN = 340;
+  WARRIOR_OPEN_RANK_LIST = 341;
+
+  // 成就打开
+  ACHIEVEMENT_OPEN = 350;
+  // 成就领取
+  ACHIEVEMENT_AWARD = 351;
+
+  //获取喜爱英雄列表
+  LIKE_HERO_GET = 360;
+  //改变喜爱英雄列表
+  LIKE_HERO_CHANGE = 361;
+
+  // 遗物升级
+  RELIC_UPGRADE = 370;
+  // 遗物升星
+  RELIC_UP_STAR = 371;
+  // 遗物上锁(避免重要遗物分解)
+  GENERAL_LOCK = 372;
+  // 遗物装备
+  RELIC_EQUIP = 373;
+  // 遗物分解
+  //  RELIC_RESOLVE = 374;
+  // 遗物合成
+  RELIC_COMPOSE = 374;
+
+  // 铁匠铺打开
+  FORGE_OPEN = 390;
+  // 铁匠铺研究
+  FORGE_RESEARCH = 391;
+  // 铁匠铺制造
+  FORGE_MAKE = 392;
+  // 铁匠铺加速
+  FORGE_SPEED = 393;
+  // 铁匠铺研发通知
+  FORGE_ADVICE = 394;
+  // 铁匠铺槽位信息
+  FORGE_SLOTINFO = 395;
+  // 铁匠铺升级
+  FORGE_LVUP = 396;
+  // 铁匠铺任务队列移除
+  FORGE_REMOVE = 397;
+
+  // 试炼之塔open
+  TOWER_OPEN = 401;
+  // 试炼之塔UnLock
+  TOWER_UNLOCK = 402;
+  // 试炼之塔锁英雄
+  TOWER_LOCK_HERO = 403;
+  // 试炼之塔领取星级奖励
+  TOWER_REWARD_STAR = 404;
+  // 试炼之塔清除层级信息
+  TOWER_RESET_LV = 405;
+
+  // 单人训练打开
+  ROGUE_LIKE_OPEN = 420;
+  // 单人训练开始
+  ROGUE_LIKE_ENTER = 421;
+  // 单人训练切换节点
+  ROGUE_CHANGE_NODE = 422;
+  // 单人训练退出
+  ROGUE_LIKE_QUIT = 423;
+  // 单人训练复活
+  ROGUE_LIKE_RESURRECTION = 424;
+  // 单人训练成就打开
+  ROGUE_ACHIEVE_OPEN = 425;
+  // 单人训练成就领取
+  ROGUE_ACHIEVE_AWARD = 426;
+  // 拟态科技打开
+  ROGUE_MIMICRY_OPEN = 427;
+  // 拟态科技up
+  ROGUE_MIMICRY_LV = 428;
+  // 拟态科技重置
+  ROGUE_MIMICRY_RESET = 429;
+
+  // 任务打开
+  TASK_OPEN = 430;
+  // 任务领奖
+  TASK_AWARD = 431;
+  // 任务积分领奖
+  TASK_SCORE_AWARD = 432;
+  // 任务更新(内部服务期任务更新)
+  TASK_UPDATE = 433;
+  // 任务客户端更新(客户端判断的任务更新)
+  TASK_CLIENT_UPDATE = 434;
+
+  // 新手任务打开
+  TASK_NEW_OPEN = 440;
+  // 积分奖励领取
+  TASK_NEW_SCORE_AWARD = 441;
+
+  // 图鉴打开
+  MEDAL_OPEN = 450;
+  // 图鉴领取
+  MEDAL_AWARD = 451;
+
+  // 称号打开
+  TITLE_OPEN = 460;
+  // 称号选择
+  TITLE_SELECT = 461;
+
+  // 头像框打开
+  ICON_FRAME_OPEN = 465;
+  // 头像框选择
+  ICON_FRAME_SELECT = 466;
+
+  // 邮箱打开
+  MAIL_BOX_OPEN = 470;
+  // 邮件详情
+  MAIL_DETAIL = 471;
+  // 邮件查看
+  MAIL_VIEW = 472;
+  // 邮件领奖
+  MAIL_AWARD = 473;
+  // 邮件领奖记录
+  MAIL_AWARD_RECORD = 474;
+  // 邮件删除
+  MAIL_DELETE = 475;
+
+  // 新手引导保存
+  GUIDE_SAVE = 480;
+
+  // 战令打开
+  BATTLE_PASS_OPEN = 490;
+  // 战令领奖
+  BATTLE_PASS_AWARD = 491;
+  // 战令购买等级
+  BATTLE_PASS_LEVEL_BUY = 492;
+
+  // 契约打开
+  CONTRACT_OPEN = 495;
+  // 契约奖励领取
+  CONTRACT_AWARD = 496;
+
+  // 签到
+  SIGNED_AWARD = 500;
+
+  // 月卡打开
+  CIRCULAR_OPEN = 505;
+  // 月卡领取
+  CIRCULAR_AWARD = 506;
+
+  // 活动打开
+  ACTIVITY_OPEN = 510;
+  // 活动详情信息
+  ACTIVITY_DETAIL = 511;
+  // 活动冲刺任务列表
+  ACTIVITY_RUSH = 512;
+  // 世界BOOS 踢馆
+  ACTIVITY_WORLD_BOSS = 513;
+  // 活动藏宝图赞助
+  ACTIVITY_TM_SUPPORT = 514;
+  // 活动藏宝图赞助领奖
+  ACTIVITY_TM_SUPPORT_AWARD = 515;
+  // 世界boss 排行榜信息
+  WORLD_RANK = 516;
+
+  // 分解武器秘石遗物
+  DECOMPOSE = 520;
+
+  // 委托战斗补充体力请求
+  DUPLICATE_STRENGTH = 525;
+
+  /********************************************************/
+  /*********** Chat服消息类型枚举,分段号:1001~1100 ***********/
+  /********************************************************/
+  // 聊天服进入
+  CHAT_ENTER = 1001;
+  // 聊天服退出
+  CHAT_QUIT = 1002;
+  // 公共频道发言
+  PUBLIC_CHANNEL_SPEAK = 1003;
+  // 公共频道信息通知
+  PUBLIC_WORDS_NOTIFY = 1004;
+  // 切换公共频道
+  SWITCH_PUBLIC_CHANNEL = 1005;
+  // 公会频道发言
+  GUILD_CHANNEL_SPEAK = 1006;
+  // 公会频道信息通知
+  GUILD_WORDS_NOTIFY = 1007;
+  // 私聊频道发言
+  PRIVATE_CHANNEL_SPEAK = 1008;
+  // 私聊频道信息通知
+  PRIVATE_WORDS_NOTIFY = 1009;
+  // 发言消息记录
+  SPEAK_WORDS_RECORD = 1010;
+  // 心跳包
+  HEART_BEAT = 1011;
+  // 取得公共频道信息
+  GET_PUBLIC_CHANNEL = 1012;
+  // 举报发言信息
+  INFORM_SPEAK_WORDS = 1013;
+  // 加入公会频道
+  JOIN_GUILD_CHANNEL = 1014;
+  // 退出公会频道
+  QUIT_GUILD_CHANNEL = 1015;
+  // 加入队伍房间频道
+  JOIN_ROOM_CHANNEL = 1016;
+  // 退出队伍房间频道
+  QUIT_ROOM_CHANNEL = 1017;
+  // 队伍房间频道发言
+  ROOM_CHANNEL_SPEAK = 1018;
+  // 队伍房间频道信息通知
+  ROOM_WORDS_NOTIFY = 1019;
+  // 聊天频道加入
+  CHAT_CHANNEL_JOIN = 1020;
+  // 聊天频道退出
+  CHAT_CHANNEL_QUIT = 1021;
+  // 聊天信息发送
+  CHAT_MESSAGE_SEND = 1022;
+  // 聊天信息通知
+  CHAT_MESSAGE_NOTIFY = 1023;
+
+  /********************************************************/
+  /*********** Cross服消息类型枚举,分段号:1101~1500 ***********/
+  /********************************************************/
+  // 藏宝图打开
+  TREASURE_MAP_OPEN = 1101;
+  // 藏宝图刷新
+  TREASURE_MAP_REFRESH = 1102;
+  // 藏宝图领奖
+  TREASURE_MAP_AWARD = 1103;
+  // 藏宝图历史记录
+  TREASURE_MAP_RECORD = 1104;
+  // 藏宝图记录详细
+  TREASURE_MAP_RECORD_DETAIL = 1105;
+  // 藏宝图房间进入
+  TREASURE_ROOM_ENTER = 1106;
+  // 藏宝图房间退出
+  TREASURE_ROOM_QUIT = 1107;
+  // 藏宝图房间刷新
+  TREASURE_ROOM_REFRESH = 1108;
+  // 藏宝图区域锁定(房主)
+  TREASURE_AREA_LOCK = 1109;
+  // 藏宝图区域进入
+  TREASURE_AREA_ENTER = 1110;
+  // 藏宝图区域退出
+  TREASURE_AREA_QUIT = 1111;
+  // 藏宝图设置招募范围
+  TREASURE_MAP_SET_LIMIT = 1112;
+  // 藏宝图获取邀请码
+  TREASURE_MAP_INVITE_CODE = 1113;
+  // 藏宝图区域选择Buff卡
+  TREASURE_AREA_SELECT_CARD = 1114;
+  // 藏宝图Buff卡通知
+  TREASURE_CARD_NOTIFY = 1115;
+  // 藏宝图古代物品排行榜
+  TREASURE_ANCIENT_RANK = 1116;
+
+  // 好友打开
+  FRIEND_OPEN = 1120;
+  // 好友推荐
+  FRIEND_RECOMMEND = 1121;
+  // 好友申请打开
+  FRIEND_REQ_OPEN = 1122;
+  // 发送好友申请
+  FRIEND_REQ_SEND = 1123;
+  // 好友申请的操作
+  FRIEND_REQ_ACTION = 1124;
+  // 好友删除
+  FRIEND_DELETE = 1125;
+  // 好友申请通知
+  FRIEND_REQ_NOTIFY = 1126;
+  // 好友申请同意通知
+  FRIEND_REQ_AGREE_NOTIFY = 1127;
+
+  // 查找玩家信息
+  FIND_PLAYER_INFO = 1130;
+
+  // 公会创建
+  GUILD_CREATE = 1140;
+  // 公会搜索
+  GUILD_SEARCH = 1141;
+  // 公会刷新
+  GUILD_REFRESH = 1142;
+  // 公会详细信息
+  GUILD_DETAIL = 1143;
+  // 公会申请
+  GUILD_APPLY = 1144;
+  // 公会申请列表
+  GUILD_APPLY_LIST = 1145;
+  // 公会申请确认(会长可见)
+  GUILD_APPLY_CONFIRM = 1146;
+  // 公会修改(会长可操作)
+  GUILD_MODIFY = 1147;
+  // 公会退出
+  GUILD_QUIT = 1148;
+  // 公会修改职位(会长可操作)
+  GUILD_MODIFY_POSITION = 1149;
+  // 公会成员
+  GUILD_MEMBER = 1150;
+  // 公会日志
+  GUILD_LOG = 1151;
+  // 公会信息取得
+  GUILD_INFO_GET = 1152;
+  // 公会信息同步(internal)
+  GUILD_SYNC = 1153;
+  // 公会解散
+  GUILD_DISSOLVE = 1154;
+  // 公会活动排行
+  GUILD_ACTIVITY_RANK = 1155;
+  // 公会活动
+  GUILD_ACTIVITY = 1156;
+  // 公会信息通知
+  GUILD_INFO_NOTIFY = 1157;
+
+  // 共斗进入房间
+  FIGHT_TOGETHER_ENTER_ROOM = 1170;
+  // 共斗创建房间
+  FIGHT_TOGETHER_CREATE_ROOM = 1171;
+  // 共斗匹配请求
+  FIGHT_TOGETHER_MATCH = 1173;
+  // 共斗匹配结果通知
+  FIGHT_TOGETHER_MATCH_NOTIFY = 1174;
+  // 共斗匹配请求取消
+  FIGHT_TOGETHER_MATCH_CANCEL = 1175;
+  // 共斗状态改变
+  FIGHT_TOGETHER_STATE_ALTER = 1176;
+  // 共斗状态改变通知
+  FIGHT_TOGETHER_STATE_ALTER_NOTIFY = 1177;
+  // 共斗队伍信息改变
+  FIGHT_TOGETHER_TEAM_ALTER = 1178;
+  // 共斗队伍信息改变通知
+  FIGHT_TOGETHER_TEAM_ALTER_NOTIFY = 1179;
+  // 共斗开始
+  FIGHT_TOGETHER_START = 1180;
+  // 共斗开始通知
+  FIGHT_TOGETHER_START_NOTIFY = 1181;
+  // 共斗结束请求
+  FIGHT_TOGETHER_FINISH = 1182;
+  // 共斗结束通知
+  FIGHT_TOGETHER_FINISH_NOTIFY = 1183;
+  // 共斗玩家信息通知
+  FIGHT_TOGETHER_PLAYER_INFO_NOTIFY = 1184;
+  // 共斗获取玩家信息(internal)
+  FIGHT_TOGETHER_GET_PLAYER_INFO = 1185;
+  // 共斗Buff改变
+  FIGHT_TOGETHER_BUFF_ALTER = 1186;
+  // 共斗Buff改变通知
+  FIGHT_TOGETHER_BUFF_ALTER_NOTIFY = 1187;
+  // 共斗界面打开
+  FIGHT_TOGETHER_OPEN = 1190;
+  // 共斗房间进入限制修改
+  FIGHT_TOGETHER_LIMIT_ALTER = 1191;
+  // 共斗玩家离开房间
+  FIGHT_TOGETHER_LEAVE = 1192;
+  // 共斗玩家离开房间通知
+  FIGHT_TOGETHER_LEAVE_NOTIFY = 1193;
+  // 共斗房间搜索
+  FIGHT_TOGETHER_SEARCH = 1194;
+  // 共斗BOSS组打开
+  FIGHT_TOGETHER_GROUP_OPEN = 1195;
+  // 共斗全员准备状态
+  FIGHT_TOGETHER_ALL_READY_NOTIFY = 1196;
+
+}
+
+/* 返回类型枚举 */
+enum ReturnType
+{
+  // 成功
+  OK = 0;
+  // 错误
+  ERROR = 1;
+  // Token失效
+  TOKEN_INVALID = 2;
+  // 支付订单已存在
+  PAY_ORDER_EXIST = 3;
+  // 支付订单错误
+  PAY_ORDER_ERROR = 4;
+  // 数据错误
+  GAME_DATA_ERROR = 5;
+  // 账号封禁
+  ACCOUNT_BANNED = 6;
+  // 资源版本号错误
+  ASSET_ERROR = 7;
+  // 错误不弹提示
+  ERROR_NO_TIPS = 8;
+  // ID无效
+  ID_INVALID = 9;
+  // 密码错误
+  PASSWORD_ERROR = 10;
+  // 平台不存在
+  NO_PLATFORM = 11;
+  // 没有可用游戏服
+  NO_GAME_SVR = 12;
+  // 平台账号重复绑定
+  REPEAT_BINDING = 13;
+  // 不是白名单
+  NOT_WHITE_LIST = 14;
+  // 平台未绑定
+  PLATFORM_UNBIND = 15;
+  // 次数不足
+  NO_COUNT = 16;
+  // 消息发送过快
+  MSG_FAST = 17;
+  // 频道已满,限制进入
+  CHANNEL_LIMIT = 18;
+  // 发言信息过快
+  WORDS_FAST = 19;
+  // 发言信息过大
+  WORDS_BIG = 20;
+  // 没有发言记录
+  NO_WORDS_RECORD = 21;
+  // 留言已满
+  LEAVE_WORDS_FULL = 22;
+  // 未找到
+  NOT_FIND = 23;
+  // 未登录
+  NOT_LOGIN = 24;
+  // 禁言
+  SHUT_UP = 25;
+  // 道具不足
+  NO_ITEM = 26;
+  // 已经存在
+  EXIST = 27;
+  // 体力不足
+  NO_STRENGTH = 28;
+  // 名称已存在
+  NAME_EXIST = 29;
+  // 已经满了
+  HAS_FULL = 30;
+  // 公会未找到
+  GUILD_NOT_FIND = 31;
+  // 公会申请未找到
+  APPLY_NOT_FIND = 32;
+  // 玩家未找到
+  PLAYER_NOT_FIND = 33;
+  // 成员未找到
+  MEMBER_NOT_FIND = 34;
+  // 权限不足
+  PERMISSION_DENIED = 35;
+  // 参数错误
+  PARAM_ERROR = 36;
+  // 条件不满足
+  CONDITION_NOT_OK = 37;
+  // 未加入公会
+  GUILD_NOT_JOIN = 38;
+  // 数据库错误
+  DB_ERROR = 39;
+  // 已经完成
+  HAS_DONE = 40;
+  // 资源不够
+  NO_RESOURCE = 41;
+  // 已加入公会
+  GUILD_HAS_JOIN = 42;
+  // 商品数量不足
+  GOODS_NO_COUNT = 43;
+  // 内部请求错误
+  INTERNAL_ERROR = 44;
+  // 见习期间
+  IN_TRAINEE = 45;
+  // 没有奖励
+  NO_AWARD = 46;
+  // 没有弹框
+  NO_TIPS = 47;
+  // 活动结束
+  ACTIVITY_END = 48;
+  // 会话过期
+  SESSION_OVERDUE = 49;
+  // 会话错误
+  SESSION_ERROR = 50;
+  // 战斗验证错误
+  COMBAT_VERIFY_ERROR = 51;
+}
+
+/* 用户类型枚举 */
+enum UserType
+{
+  UNDEFINE = 0;
+  // Google
+  GOOGLE = 1;
+  // Apple
+  APPLE = 2;
+  // Facebook
+  FACEBOOK = 3;
+  // 国内渠道
+  CHANNEL = 4;
+}
+
+/* 服务器状态枚举 */
+enum ServerState
+{
+  // 关闭
+  CLOSE = 0;
+  // 开启
+  START = 1;
+  // 开放
+  OPEN = 2;
+}
+
+/* 小红点类型枚举 */
+enum SignType
+{
+  NO = 0;
+  // 邮箱
+  MAILBOX = 1;
+  // 商店
+  SHOP = 2;
+  // 有新好友
+  HAS_NEW_FRIEND = 3;
+  // 收到好友申请
+  RECEIVE_FRIEND_REQ = 4;
+  // 聊天收到私聊信息
+  RECEIVE_PRIVATE_WORDS = 5;
+
+  // 加入新公会
+  JOIN_NEW_GUILD = 10;
+  // 公会等级升级
+  GUILD_LV_UP = 11;
+  // 公告改变
+  NOTICE_CHANGE = 12;
+  // 公告日志有新内容
+  GUILD_NEW_LOG = 13;
+  // 祈祷捐献刷新
+  PRAY_DON_REFRESH = 14;
+  // 祈祷神灵等级改变
+  PRAY_GOD_LV_CHANGE = 15;
+  // 祈祷神灵等级已满
+  PRAY_GOD_LV_MAX = 16;
+  // 祈祷神灵每周点数降低
+  PRAY_GOD_EXP_DOWN = 17;
+  // 每周商品已刷新
+  GUILD_SHOP_REFRESH = 18;
+  // 出现新商品
+  GUILD_SHOP_NEW_GOODS = 19;
+  // 公会申请列表不为空
+  GUILD_HAS_APPLY = 20;
+  // 公会设置改变
+  GUILD_SETTING_CHANGE = 21;
+}
+
+/* 装备类型枚举 */
+enum EquipmentType
+{
+  NO1 = 0;
+  // 头盔
+  HEAR = 1;
+  // 衣服
+  CLOTHES = 2;
+  // 手腕
+  HAND = 3;
+}
+
+/* 聊天频道状态 */
+enum ChannelState
+{
+  // 空闲
+  FREE = 0;
+  // 火爆
+  HOT = 1;
+  // 爆满
+  FULL = 2;
+  // 限制进入
+  LIMIT = 3;
+}
+
+/* 聊天频道类型 */
+enum ChanType
+{
+  // 公共频道
+  PUBLIC_CHAN = 0;
+  // 公会频道
+  GUILD_CHAN = 1;
+  // 房间频道
+  ROOM_CHAN = 2;
+  // 私聊频道
+  PRIVATE_CHAN = 3;
+}
+
+/* 聊天信息类型 */
+enum WordsType
+{
+  // 字符串,包括表情
+  STRING = 0;
+  // 图片
+  PICTURE = 1;
+  // 声音
+  VOICE = 2;
+}
+
+/* 藏宝图区域状态 */
+enum TreasureAreaState
+{
+  // 可进入
+  ENTER = 0;
+  // 房主锁定
+  LOCK = 1;
+  // 挑战中
+  CHALLENGE = 2;
+  // 已通过
+  PASS = 3;
+}
+
+/* 藏宝图所属类型 */
+enum TreasureBelongType
+{
+  // 自己的
+  MYSELF = 0;
+  // 好友的
+  FRIEND = 1;
+  // 公会的
+  GUILD = 2;
+  // 公共的
+  PUBLIC = 3;
+}
+
+enum CombatType
+{
+  // 测试战斗
+  TEST_COMBAT = 0;
+  // 冒险地图里面的LevelBattle表战斗
+  LEVEL_BATTLE = 1;
+  // 资源副本战斗
+  WEALTH_DUPLICATE = 2;
+  // 主线关卡纯战斗
+  MAIN_STAGE_BATTLE = 3;
+  // 勇者入围赛
+  WARRIOR_FINALIST_BATTLE = 4;
+  // 勇者排位赛
+  WARRIOR_RANK_BATTLE = 5;
+  // 藏宝图关卡纯战斗
+  TREASURE_MAP_BATTLE = 6;
+  //共斗
+  FIGHT_TOGETHER = 7;
+  // 试炼之塔战斗
+  TOWER_BATTLE = 8;
+  //追逐战斗
+  CHASE_COMBAT = 9;
+  //PVP战斗
+  PVP_COUNT = 10;
+  //委托战斗
+  ENTRUST = 11;
+  // 世界BOSS
+  WORLD_BOSS = 12;
+}
+
+enum RankType
+{
+  // 勇士选拔赛排行榜
+  WARRIOR_RANK = 0;
+  // 游移之楔排行榜
+  TOWER_RANK = 1;
+  // rogue排行榜
+  ROGUE_RANK = 2;
+  // 世界BOSS
+  WORLD_BOSS_RANK = 3;
+  // 世界 工会
+  WORLD_BOSS_GUILD_RANK = 4;
+  // 公会世界boss奖牌排名
+  GUILD_RANK = 5;
+  // 公会内部排名
+  GUILD_IN_RANK = 6;
+  // 限时藏宝图古代遗物
+  TREASURE_MAP_ANCIENT = 7;
+}
+
+/* 公会职位枚举 */
+enum GuildPosition
+{
+  // 移除成员
+  REMOVE = 0;
+  // 普通成员
+  NORMAL = 1;
+  // 会长
+  MANAGER = 2;
+}
+
+/* 公会加入限制枚举 */
+enum GuildJoinLimit
+{
+  // 自由加入
+  FREE_JOIN = 0;
+  // 需要审核
+  NEED_REVIEW = 1;
+}
+
+/* 公会成员属性枚举 */
+enum GuildMemberAttr
+{
+  // 成员名称
+  NAME = 0;
+  // 成员头像
+  ICON = 1;
+  // 成员等级
+  LEVEL = 2;
+  // 成员头像框
+  ICON_FRAME = 3;
+}
+
+enum CombatSynchronizeType
+{
+  //准备完成
+  RequestFinish = 0;
+  //准备开始
+  PrepareStart = 1;
+  //同步数据包
+  SynchronizeData = 2;
+  //上传输入指令
+  UpInputCode = 3;
+  //开始战斗
+  StartCombat = 4;
+}
+
+enum TeamPresetType
+{
+  // 冒险编队 (默认编队)
+  DefaultTeamPreset = 0;
+
+  // 新人训练编队 rogueLike
+  NewTeamPreset = 1;
+
+  // 战斗课题  rogueLike
+  CombatRogueTeamPreset = 2;
+
+  // 护送课题  rogueLike
+  EscortTeamPreset = 3;
+
+  // 自由训练 rogueLike
+  FreeTeamPreset = 101;
+
+  // 流明试炼
+  Tower1 = 201;
+  // 时光试炼
+  Tower2 = 202;
+  // 轮回试炼
+  Tower3 = 203;
+}
+
+// 界面代码枚举
+enum InterfaceEnum{
+  // 默认界面(没用)
+  DefaultInterface = 0;
+
+  // 飞艇界面
+  AirShipInterface = 1;
+}
+
+// 分解类型
+enum DecomposeType{
+  // 武器
+  WEAPON_TYPE = 0;
+  // 遗物
+  RELIC_TYPE = 1;
+  // 秘石
+  GEM_TYPE = 2;
+  // 英雄
+  HERO_TYPE = 3;
+}

+ 154 - 0
NetCore/Protocol/Protobuf/ProtoMessge/MsgNotify.proto

@@ -0,0 +1,154 @@
+syntax = "proto3";
+
+import "MsgStruct.proto";
+import "CombatDataStruct.proto";
+
+package com.fort23.protocol.protobuf;
+// option java_outer_classname = "MsgNotify";
+// option java_multiple_files = true;
+
+/* 公共频道信息通知 */
+message PublicWordsNotify
+{
+  // 公共频道ID
+  int32 publicId = 1;
+  // 发言信息
+  SpeakWords words = 2;
+}
+
+/* 公会频道信息通知 */
+message GuildWordsNotify
+{
+  // 公会ID
+  int32 guildId = 1;
+  // 发言信息
+  SpeakWords words = 2;
+}
+
+/* 队伍房间频道信息通知 */
+message RoomWordsNotify
+{
+  // 房间ID
+  int32 roomId = 1;
+  // 发言信息
+  SpeakWords words = 2;
+}
+
+/* 私聊频道信息通知 */
+message PrivateWordsNotify
+{
+  // 对方玩家ID
+  int64 toPlayerId = 1;
+  // 发言信息
+  SpeakWords words = 2;
+}
+
+/* 队伍房间频道信息通知 */
+message ChatMessageNotify
+{
+  // 聊天发言信息
+  SpeakWords words = 2;
+}
+
+/* 藏宝图Buff卡通知 */
+message TreasureCardNotify
+{
+  // Buff卡列表
+  repeated int32 buffCards = 1;
+}
+
+/* 共斗队伍改变通知 */
+message FightTogetherTeamAlterNotify
+{
+  repeated FightTogetherPlayerInfo FightTogetherPlayerInfo = 1;
+}
+
+/* 共斗玩家状态改变通知 */
+message FightTogetherStateAlterNotify
+{
+  int64 playerId = 1;
+  int32 state = 2;
+}
+
+/* 共斗房间玩家离开通知 */
+message FightTogetherLeaveNotify
+{
+  // 是否被踢
+  bool isKickOut = 1;
+  // 离开的玩家ID
+  int64 leavePlayerId = 2;
+  // 提示信息
+  string tipMessage = 3;
+  // 房主玩家ID
+  int64 ownerPlayerId = 4;
+}
+
+/* 共斗玩家匹配房间通知 */
+message FightTogetherMatchRoomNotify
+{
+  // 房间ID
+  int32 roomId = 1;
+}
+
+/* 共斗玩家信息通知 */
+message FightTogetherPlayerInfoNotify
+{
+  repeated FightTogetherPlayerInfo fightTogetherPlayerInfo = 1;
+  // 房主玩家ID
+  int64 ownerPlayerId = 2;
+}
+
+/* 共斗战斗开始通知 */
+message FightTogetherStartNotify
+{
+  // 是否准备,true:房主点开始全员准备,false:进入战斗
+  bool isPrepare = 1;
+  SimulationFightTogetherResponse simulationFightTogetherResponse = 2;
+}
+
+/* 共斗战斗结束通知 */
+message FightTogetherFinishNotify
+{
+  // 房间ID
+  int32 roomId = 1;
+  // 是否胜利
+  bool isWin = 2;
+  // 奖励道具
+  repeated Item awardItems = 3;
+  // 共斗信息
+  FightTogether fightTogether = 4;
+}
+
+/* 共斗玩家Buff改变通知 */
+message FightTogetherBuffAlterNotify
+{
+  int64 playerId = 1;
+  int32 buffId = 2;
+}
+
+/* 共斗全员准备通知 */
+message FightTogetherAllReadyNotify
+{
+  bool isAllReady = 1;
+}
+
+/* 商店礼包购买通知 */
+message ShopGiftItemBuyNotify
+{
+  // 商店礼包ID
+  int32 shopItemId = 1;
+  // 获得的道具
+//  repeated Item items = 2;
+  // 战令等级
+  int32 battlePassLevel = 3;
+  // 战令购买等级
+  int32 battlePassBuyLevel = 4;
+}
+
+/* 公会信息通知 */
+message GuildInfoNotify
+{
+  // 公会ID
+  int32 guildId = 1;
+}
+

+ 1985 - 0
NetCore/Protocol/Protobuf/ProtoMessge/MsgRequest.proto

@@ -0,0 +1,1985 @@
+syntax = "proto3";
+
+import "MsgEnum.proto";
+import "MsgStruct.proto";
+import "CombatDataStruct.proto";
+
+package com.fort23.protocol.protobuf;
+// option java_outer_classname = "MsgRequest";
+// option java_multiple_files = true;
+
+
+/* 请求消息,把所有的 XxxRequest消息全部集合在一起 */
+message Request
+{
+  MsgType msgType = 1;
+  // 时间戳
+  int64 timestamp = 2;
+  // 随机数
+  string nonce = 3;
+  // 玩家ID
+  int64 playerId = 4;
+  // 发送的资源版本号
+  int32 sendAssetVer = 5;
+  // 协议版本号
+  int32 version = 6;
+  // 扩展参数
+  ExtraParam extraParam = 7;
+  // 登录时间
+  int64 loginTime = 8;
+  // 登录Token
+  string loginToken = 9;
+
+  /********************************************************/
+  /************* gateway服消息请求,分段号:21~40 **************/
+  /********************************************************/
+  ReconnectRequest reconnectReq = 21;
+  PlayerOfflineRequest playerOfflineReq = 22;
+
+  /********************************************************/
+  /************* login服消息请求,分段号:41~100 **************/
+  /********************************************************/
+  VisitorUserRegisterRequest visitorUserRegisterReq = 41;
+  VisitorUserLoginRequest visitorUserLoginReq = 42;
+  PlatformUserRegisterRequest platformUserRegisterReq = 43;
+  PlatformUserLoginRequest platformUserLoginReq = 44;
+  PlatformUserBindRequest platformUserBindReq = 45;
+  PlatformUserUnbindRequest platformUserUnbindReq = 46;
+  RealNameSetRequest realNameSetReq = 47;
+  ClientConfigGetRequest clientConfigGetReq = 48;
+  AnnouncementGetRequest announcementGetReq = 49;
+  ServerListGetRequest serverListGetReq = 50;
+
+  /********************************************************/
+  /************* Game服消息请求,分段号:101~1000 *************/
+  /********************************************************/
+  GameEnterRequest gameEnterReq = 101;
+  BaseInfoRecordRequest baseInfoRecordReq = 102;
+  ItemUseRequest itemUseReq = 103;
+  ItemSellRequest itemSellReq = 104;
+  PlayerRenameRequest playerRenameReq = 105;
+  PlayerRechargeRequest playerRechargeRequest = 106;
+  StrengthBuyRequest strengthBuyReq = 107;
+  IconSelectRequest iconSelectReq = 108;
+  PayCallbackRequest PayCallbackReq = 109;
+  RedDotSaveRequest redDotSaveReq = 110;
+  RedDotUpdateRequest redDotUpdateReq = 111;
+
+  HeroUpgradeRequest heroUpgradeReq = 200;
+  HeroAwakenRequest heroAwakenReq = 201;
+
+  MainStageEnterRequest mainStageEnterReq = 220;
+  MainStageSaveRequest mainStageSaveReq = 221;
+  StageTrapCompleteRequest stageTrapCompleteReq = 222;
+  StageTrapNodeCompleteRequest stageTrapNodeCompleteReq = 223;
+  MainStageQuitRequest mainStageQuitReq = 224;
+  MainStagePreviewRequest mainStagePreviewReq = 225;
+  ChapterRewardRequest chapterRewardReq = 226;
+  StageResurrectRequest stageResurrectRequest = 227;
+
+  EquipmentUpgradeRequest  equipmentUpgradeReq = 230;
+
+  GemEquipRequest gemEquipReq = 240;
+
+  RuneUpgradeRequest runeUpgradeReq = 245;
+
+  WeaponUpgradeRequest weaponUpgradeReq = 250;
+  WeaponAwakenRequest weaponAwakenReq = 251;
+  WeaponEquipRequest weaponEquipReq = 252;
+  WeaponUnloadRequest weaponUnloadReq = 253;
+
+  FetterUpRequest fetterReq = 260;
+  FetterAwardRequest fetterAwardReq = 261;
+
+  CombatStartRequest combatStartReq = 270;
+  CombatFinishRequest combatFinishReq = 271;
+
+  TeamPresetEditRequest teamPresetEditReq = 280;
+  TeamPresetUseRequest teamPresetUseReq = 281;
+  TeamPresetFindRequest  teamPresetFindReq = 282;
+  TeamPresetSpecialRequest  teamPresetSpecialRequest = 283;
+  TeamPresetSpecialOpenRequest  teamPresetSpecialOpenRequest = 284;
+
+  SummonRequest summonReq = 290;
+  SummonRecordGetRequest summonRecordGetReq = 291;
+
+  ShopOpenRequest shopOpenReq = 300;
+  ShopItemGetRequest shopItemGetReq = 301;
+  ShopItemBuyRequest shopItemBuyReq = 302;
+  ShopRefreshRequest shopRefreshReq = 303;
+  ShopGiftItemBuyRequest shopGiftItemBuyReq = 304;
+
+  DuplicateOpenRequest duplicateOpenReq = 310;
+  DuplicateAutoFightRequest duplicateAutoFightReq = 311;
+  DuplicateEnterRequest duplicateEnterReq = 312;
+  DuplicateQuitRequest duplicateQuitReq = 313;
+
+  ExploreTaskOpenRequest exploreTaskOpenReq = 320;
+  ExploreTaskStartRequest exploreTaskStartReq = 321;
+  ExploreTaskAwardRequest exploreTaskAwardReq = 322;
+  ExploreTaskAcceptRequest exploreTaskAcceptReq = 323;
+  ExploreLvUpRequest exploreLvUpReq = 324;
+
+  MallBuildingGetDataRequest mallBuildingGetDataReq = 330;
+  MallBuildingSetWorkHeroRequest mallBuildingSetWorkHeroReq = 331;
+  MallBuildingGetWorkAwardRequest mallBuildingGetWorkAwardRequest = 332;
+  WorkHeroSetRequest workHeroSetReq = 333;
+  WorkBuffBuyRequest workBuffBuyReq = 334;
+
+  WarriorOpenRequest warriorOpenReq = 340;
+  WarriorOpenRankListRequest warriorOpenRankListReq = 341;
+
+  AchievementAwardRequest achievementAwardReq = 351;
+
+  GetLikeHeroListRequest getLikeHeroListRequest = 360;
+  ChangeLikeHeroListRequest changeLikeHeroListRequest = 361;
+
+  RelicUpGradeRequest relicUpGradeRequest = 370;
+  RelicUpStarRequest relicUpStarRequest = 371;
+  GeneralLockRequest generalLockRequest = 372;
+  RelicEquipRequest relicEquipRequest = 373;
+  RelicComposeRequest relicComposeRequest = 374;
+
+  ForgeOpenRequest forgeOpenRequest = 390;
+  ForgeResearchRequest forgeResearchRequest = 391;
+  ForgeMakeRequest forgeMakeRequest = 392;
+  ForgeSpeedUpRequest forgeSpeedUpRequest = 393;
+  ForgeAdviceRequest forgeAdviceRequest = 394;
+  ForgeSlotInfoRequest  forgeSlotInfoRequest = 395;
+  ForgeLvUpRequest forgeLvUpRequest = 396;
+  ForgeRemoveRequest forgeRemoveRequest = 397;
+
+  TowerOpenRequest towerOpenRequest = 401;
+  TowerUnLockRequest towerUnLockRequest = 402;
+  TowerLockHeroRequest towerLockHeroRequest = 403;
+  TowerRewardStarRequest towerRewardStarRequest = 404;
+  TowerResetLvRequest towerResetLvRequest = 405;
+
+  RogueLikeOpenRequest rogueLikeOpenRequest = 420;
+  RogueLikeEnterRequest rogueLikeEnterRequest = 421;
+  RogueLikeChangeNodeRequest rogueLikeChangeNodeRequest = 422;
+  RogueLikeQuitRequest rogueLikeQuitRequest = 423;
+  RogueLikeResurrectionRequest rogueLikeResurrectionRequest = 424;
+  RogueLikeAchieveOpenRequest rogueLikeAchieveOpenRequest = 425;
+  RogueLikeAchieveAwardRequest rogueLikeAchieveAwardRequest = 426;
+  RogueLikeMimicryOpenRequest rogueLikeMimicryOpenRequest = 427;
+  RogueLikeMimicryLvRequest rogueLikeMimicryLvRequest = 428;
+  RogueLikeMimicryResetRequest rogueLikeMimicryResetRequest = 429;
+
+  TaskAwardRequest taskAwardReq = 430;
+  TaskScoreAwardRequest taskScoreAwardReq = 431;
+  TaskUpdateRequest taskUpdateReq = 432;
+  TaskClientUpdateRequest taskClientUpdateReq = 433;
+
+  TaskNewOpenRequest taskNewOpenRequest = 440;
+  TaskNewScoreAwardRequest taskNewScoreAwardRequest = 441;
+
+  MedalOpenRequest medalOpenRequest = 450;
+  MedalAwardRequest medalAwardRequest = 451;
+
+  TitleSelectRequest titleSelectReq = 460;
+
+  IconFrameSelectRequest iconFrameSelectReq = 465;
+
+  MailBoxOpenRequest mailBoxOpenReq = 470;
+  MailViewRequest mailViewReq = 471;
+  MailDetailRequest mailDetailReq = 472;
+  MailAwardRequest mailAwardReq = 473;
+  MailDeleteRequest mailDeleteReq = 474;
+
+  GuideSaveRequest guideSaveReq = 480;
+
+  BattlePassLevelBuyRequest battlePassLevelBuyReq = 490;
+
+  ContractOpenRequest contractOpenReq = 495;
+  ContractAwardRequest contractAwardReq = 496;
+
+  SignedRequest signedRequest = 500;
+
+  CircularOpenRequest circularOpenRequest = 505;
+  CircularAwardRequest circularAwardRequest = 506;
+
+  ActivityOpenRequest activityOpenReq = 510;
+  ActivityDetailRequest activityDetailReq = 511;
+  ActivityRushRequest activityRushReq = 512;
+  ActivityWorldBossRequest worldBossReq = 513;
+  ActivityTMSupportRequest activityTMSupportReq = 514;
+  ActivityTMSupportAwardRequest activityTMSupportAwardReq = 515;
+  WorldBossRankRequest worldBossRankReq = 516;
+
+  DecomposeRequest decomposeRequest = 520;
+
+  DuplicateStrengthRequest duplicateStrengthRequest = 525;
+
+  /********************************************************/
+  /************* Chat服消息请求,分段号:1001~1100 ************/
+  /********************************************************/
+  ChatEnterRequest chatEnterReq = 1001;
+  PublicChannelSpeakRequest publicChannelSpeakReq = 1002;
+  SwitchPublicChannelRequest switchPublicChannelReq = 1003;
+  GuildChannelSpeakRequest guildChannelSpeakReq = 1004;
+  PrivateChannelSpeakRequest privateChannelSpeakReq = 1005;
+  SpeakWordsRecordRequest speakWordsRecordReq = 1006;
+  GetPublicChannelRequest getPublicChannelReq = 1007;
+  InformSpeakWordsRequest informSpeakWordsReq = 1008;
+  JoinGuildChannelRequest joinGuildChannelReq = 1009;
+  QuitGuildChannelRequest quitGuildChannelReq = 1010;
+  JoinRoomChannelRequest joinRoomChannelReq = 1011;
+  QuitRoomChannelRequest quitRoomChannelReq = 1012;
+  RoomChannelSpeakRequest roomChannelSpeakReq = 1013;
+  ChatChannelJoinRequest chatChannelJoinReq = 1014;
+  ChatChannelQuitRequest chatChannelQuitReq = 1015;
+  ChatMessageSendRequest chatMessageSendReq = 1016;
+
+  /********************************************************/
+  /*********** Cross服消息请求,分段号:1101~1500 ***********/
+  /********************************************************/
+  TreasureRoomEnterRequest treasureRoomEnterReq = 1101;
+  TreasureRoomQuitRequest treasureRoomQuitReq = 1102;
+  TreasureRoomRefreshRequest treasureRoomRefreshReq = 1103;
+  TreasureMapAwardRequest treasureMapAwardReq = 1104;
+  TreasureAreaLockRequest treasureAreaLockReq = 1105;
+  TreasureAreaEnterRequest treasureAreaEnterReq = 1106;
+  TreasureAreaQuitRequest treasureAreaQuitReq = 1107;
+  TreasureMapRecordDetailRequest treasureMapRecordDetailReq = 1108;
+  TreasureMapSetLimitRequest treasureMapSetLimitReq = 1109;
+  TreasureMapRefreshRequest treasureMapRefreshReq = 1110;
+  TreasureMapInviteCodeRequest treasureMapInviteCodeReq = 1111;
+  TreasureAreaSelectCardRequest treasureAreaSelectCardReq = 1112;
+
+  FriendReqSendRequest friendReqSendReq = 1120;
+  FriendReqActionRequest friendReqActionReq = 1121;
+  FriendDeleteRequest friendDeleteReq = 1122;
+
+  FindPlayerInfoRequest findPlayerInfoReq = 1123;
+  CombatResurrectionRequest combatResurrectionReq = 1124;
+
+  GuildCreateRequest guildCreateReq = 1130;
+  GuildSearchRequest guildSearchReq = 1131;
+  GuildRefreshRequest guildRefreshReq = 1132;
+  GuildApplyRequest guildApplyReq = 1133;
+  GuildApplyConfirmRequest guildApplyConfirmReq = 1134;
+  GuildModifyRequest guildModifyReq = 1135;
+  GuildModifyPositionRequest guildModifyPositionReq = 1136;
+  GuildLogRequest guildLogReq = 1137;
+  GuildDetailRequest guildDetailReq = 1138;
+  GuildSyncRequest guildSyncReq = 1139;
+  GuildActivityRankRequest guildActivityRankReq = 1140;
+  GuildActivityRequest guildActivityReq = 1141;
+
+  FightTogetherEnterRoomRequest fightTogetherEnterRoomReq = 1160;
+  FightTogetherCreateRoomRequest fightTogetherCreateRoomReq = 1161;
+  FightTogetherStateAlterRequest fightTogetherStateAlterReq = 1162;
+  FightTogetherStartRequest fightTogetherStartReq = 1163;
+  FightTogetherMatchRoomRequest fightTogetherMatchRoomReq = 1164;
+  FightTogetherMatchCancelRequest fightTogetherMatchCancelReq = 1165;
+  FightTogetherTeamAlterRequest fightTogetherTeamAlterReq = 1167;
+  FightTogetherGetPlayerInfoRequest fightTogetherGetPlayerInfoReq = 1168;
+  FightTogetherBuffAlterRequest fightTogetherBuffAlterReq = 1169;
+  FightTogetherFinishRequest fightTogetherFinishReq = 1170;
+  FightTogetherLimitAlterRequest fightTogetherLimitAlterReq = 1171;
+  FightTogetherLeaveRequest fightTogetherLeaveReq = 1172;
+  FightTogetherSearchRequest fightTogetherSearchReq = 1173;
+  FightTogetherGroupOpenRequest fightTogetherGroupOpenReq = 1174;
+}
+
+/* 断线重连请求 */
+message ReconnectRequest {
+  // 会话ID
+  int64 sessionId = 1;
+  // 客户端发送请求顺序号
+  int32 clientSeqNum = 2;
+  // 接受服务器消息顺序号
+  int32 serverSeqNum = 3;
+}
+
+/* 玩家离线请求 */
+message PlayerOfflineRequest {
+  repeated SessionInfo sessionInfos = 1;
+}
+
+/* 游客用户注册请求 */
+message VisitorUserRegisterRequest {
+  // 用户名
+  string name = 1;
+  // 用户平台
+  string platform = 2;
+  // 设备唯一ID
+  string udid = 3;
+  // 版本号
+  int32 version = 4;
+  // 老账号ID
+  int64 oldAccountId = 5;
+  // 语言
+  string language = 6;
+  // 用户渠道
+  string channel = 7;
+  // 账号密码
+  string password = 8;
+  // IP地址
+  string ip = 9;
+}
+
+/* 游客用户登录请求 */
+message VisitorUserLoginRequest {
+  // 账号ID
+  int64 accountId = 1;
+  // 账号密码
+  string password = 2;
+  // 版本号
+  int32 version = 3;
+  // 语言
+  string language = 4;
+  // 用户名
+  string name = 6;
+  // IP地址
+  string ip = 7;
+}
+
+/* 平台用户注册请求 */
+message PlatformUserRegisterRequest {
+  // 用户平台
+  int32 platform = 1;
+  // 用户名
+  string name = 2;
+  // 设备唯一ID
+  string udid = 3;
+  // 绑定的googleUserId
+  string googleUserId = 4;
+  // 绑定的facebookUserId
+  string facebookUserId = 5;
+  // 绑定的appleUserId
+  string appleUserId = 6;
+  // 语言
+  string language = 7;
+  // 渠道
+  string channel = 8;
+}
+
+/* 平台用户登录请求 */
+message PlatformUserLoginRequest {
+  // 绑定的googleUserId
+  string googleUserId = 1;
+  // 绑定的facebookUserId
+  string facebookUserId = 2;
+  // 版本号
+  int32 version = 3;
+  // 绑定的appleUserId
+  string appleUserId = 4;
+  // 语言
+  string language = 5;
+  // 绑定的渠道userId
+  string channelUserId = 6;
+  // 用户名
+  string name = 7;
+  // 设备唯一ID
+  string udid = 8;
+  // 渠道
+  string channel = 9;
+  // 用户平台
+  string platform = 10;
+  // IP地址
+  string ip = 11;
+}
+
+/* 平台用户绑定请求 */
+message PlatformUserBindRequest {
+  // 账号ID
+  int64 accountId = 1;
+  // 登录token
+  string loginToken = 2;
+  // 登录时间
+  int64 loginTime = 3;
+  // 待绑定的googleUserId
+  string googleUserId = 4;
+  // 待绑定的facebookUserId
+  string facebookUserId = 5;
+  // 绑定的appleUserId
+  string appleUserId = 6;
+}
+
+/* 平台用户解绑请求 */
+message PlatformUserUnbindRequest {
+  // 账号ID
+  int64 accountId = 1;
+  // 登录token
+  string loginToken = 2;
+  // 登录时间
+  int64 loginTime = 3;
+  // 解绑的googleUserId
+  string googleUserId = 4;
+  // 解绑的facebookUserId
+  string facebookUserId = 5;
+  // appleUserId
+  string appleUserId = 6;
+}
+
+/* 实名认证设置请求 */
+message RealNameSetRequest {
+  // 账号ID
+  int64 accountId = 1;
+  // 年龄
+  int32 age = 2;
+  // 身份证
+  string identityCard = 3;
+}
+
+/* 客户端配置获取请求 */
+message ClientConfigGetRequest {
+  // 客户端打包版本号
+  int32 buildVer = 1;
+}
+
+/* 公告获取请求 */
+message AnnouncementGetRequest {
+  // 游戏服ID 0=登录前公告 >0 游戏内公告
+  int32 gameId = 1;
+}
+
+/* 服务器列表获取请求 */
+message ServerListGetRequest {
+  // 账号ID
+  int64 accountId = 1;
+}
+
+/* 游戏服进入请求 */
+message GameEnterRequest {
+  // 账号ID
+  int64 accountId = 1;
+  // 游戏服ID
+  int32 gameId = 2;
+  // 是否是切换服务器
+  bool isChangeServer = 3;
+  // 设备唯一标识符
+  string udid = 4;
+  // 从哪个服切换过来
+  int32 fromGameId = 5;
+  // 渠道ID
+  string channelId = 6;
+  // 用户平台
+  string platform = 7;
+  // 平台用户ID
+  string openId = 8;
+  // APK的SHA256码
+  string apkSHA256 = 9;
+}
+
+/* 基本信息记录请求 */
+message BaseInfoRecordRequest {
+  // ip地址
+  string ip = 1;
+  // 设备mac地址
+  string mac = 2;
+  // 设备唯一标识符
+  string udid = 3;
+  // 运营渠道
+  string appChannel = 4;
+  // 设备型号
+  string deviceModel = 5;
+  // 操作系统
+  string osName = 6;
+  // 客户端版本号
+  string appVer = 7;
+  // 网络连接
+  string network = 8;
+}
+
+/* 道具使用请求 */
+message ItemUseRequest {
+  // 道具ID
+  int32 itemId = 1;
+  // 道具数量
+  int64 itemCount = 2;
+  // 是否在关卡内
+  bool isInStage = 3;
+  // 自选宝箱道具索引
+  int32 index = 4;
+}
+
+/* 道具出售请求 */
+message ItemSellRequest {
+  // 道具ID
+  int32 itemId = 1;
+  // 道具数量
+  int64 itemCount = 2;
+}
+
+/* 体力购买请求 */
+message StrengthBuyRequest {
+  // 购买次数
+  int32 count = 1;
+}
+
+/* 头像选择请求 */
+message IconSelectRequest {
+  // 选择的头像
+  int32 selectIcon = 1;
+}
+
+/* 英雄升级请求 */
+message HeroUpgradeRequest {
+  // 英雄ID
+  int32 heroId = 1;
+  // 消耗经验道具ID
+  repeated int32 costItemId = 2;
+  // 消耗经验道具数量
+  repeated int32 costItemCount = 3;
+}
+
+/* 英雄觉醒请求 */
+message HeroAwakenRequest {
+  // 英雄ID
+  int32 heroId = 1;
+  // 是否一键觉醒
+  bool isOneKey = 2;
+}
+
+/* 主线关卡进入请求 */
+message MainStageEnterRequest {
+  // 关卡ID
+  int32 stageId = 1;
+}
+
+/* 主线关卡保存请求 */
+message MainStageSaveRequest {
+  // 关卡ID
+  int32 stageId = 1;
+  // 关卡发现的格子位置
+  repeated Position positions = 2;
+}
+
+/* 完成关卡机关请求 */
+message StageTrapCompleteRequest {
+  // 关卡ID
+  int32 stageId = 1;
+  // 关卡机关ID
+  int32 trapId = 2;
+}
+
+/* 主线关卡退出请求 */
+message MainStageQuitRequest {
+  // 关卡ID
+  int32 stageId = 1;
+}
+
+/* 主线关卡预览请求 */
+message MainStagePreviewRequest {
+  // 关卡ID
+  int32 stageId = 1;
+}
+
+/* 完成关卡机关节点请求 */
+message StageTrapNodeCompleteRequest {
+  // 关卡ID
+  int32 stageId = 1;
+  // 关卡机关ID
+  int32 trapId = 2;
+  // 关卡机关节点ID
+  int32 nodeId = 3;
+  // 关卡机关状态参数
+  repeated int32 stateParams = 4;
+  // 关卡机关节点参数(index)
+  repeated int32 nodeParams = 5;
+  // buff替换ID
+  repeated int32 replaceBuffId = 6;
+  // rogueBuff 商店是否主动刷新 0 否 1  主动刷  2 升级购买buff
+  int32 buffRefresh = 7;
+}
+
+/* 章节奖励领取请求 */
+message ChapterRewardRequest {
+  // 章节ID
+  int32 chapterId = 1;
+  // 奖励ID
+  int32 rewardId = 2;
+}
+
+/* 关卡主动复活扣减 */
+message StageResurrectRequest{
+  // 关卡ID
+  int32 stageId = 1;
+}
+
+/* 装备强化请求 */
+message EquipmentUpgradeRequest {
+  // 装备类型  1=头盔 2=衣服 3=手腕
+  EquipmentType type = 1;
+  // 英雄ID
+  int32 heroId = 2;
+}
+
+/* 武器强化请求 */
+message WeaponUpgradeRequest {
+  // 武器ID
+  int32 weaponId = 1;
+  // 武器起始等级
+  int32 fromLv = 2;
+  // 武器目标等级
+  int32 toLv = 3;
+}
+
+/* 武器升星请求 */
+message WeaponAwakenRequest {
+  // 武器ID
+  int32 weaponId = 1;
+}
+
+/* 武器装备请求 */
+message WeaponEquipRequest {
+  // 英雄ID
+  int32 heroId = 1;
+  // 武器ID
+  int32 weaponId = 2;
+  // 装备位置
+  int32 pos = 3;
+}
+
+/* 武器卸下请求 */
+message WeaponUnloadRequest {
+  // 英雄ID
+  int32 heroId = 1;
+}
+
+/* 秘石装备请求 */
+message GemEquipRequest {
+  // 秘石ID
+  int32 gemId = 1;
+  // 装备英雄ID
+  int32 heroId = 2;
+}
+
+/* 符文升级请求 */
+message RuneUpgradeRequest {
+  // 符文ID
+  int32 runeId = 1;
+}
+
+/* 聊天服进入请求 */
+message ChatEnterRequest
+{
+  // 公会ID
+  int32 guildId = 2;
+  // 语言ID
+  int32 languageId = 3;
+  // 登录token
+  string loginToken = 4;
+  // 登录时间
+  int64 loginTime = 5;
+  // 账号ID
+  int64 accountId = 6;
+  // 频道最后已读时间(世界、语言、公会频道)
+  repeated int64 lastReadTimes = 7;
+}
+
+/* 遗物升级请求 */
+message RelicUpGradeRequest
+{
+  // 需要升级的遗物guid
+  int32 relicId = 1;
+  // 消耗遗物升级guid
+  repeated int32 conRelicId = 2;
+  // 消耗残像碎片数量
+  int32 debrisCnt = 3;
+  // 遗物当前等级
+  //  int32 relicLv = 3;
+}
+
+/* 遗物升星请求 */
+message RelicUpStarRequest
+{
+
+}
+
+/* 通用上锁请求 */
+message GeneralLockRequest
+{
+  // guid
+  int32  guid = 1;
+  // 上锁请求  1:武器  2:迷失  3:遗物
+  int32 type = 2;
+}
+
+/* 遗物装备请求 */
+message RelicEquipRequest
+{
+  // 装备英雄
+  int32 heroId = 1;
+  // 装备遗物Id
+  int32 relicId = 2;
+  // 装备位置
+  int32 pos = 3;
+}
+
+/* 遗物合成请求 */
+message RelicComposeRequest{
+  repeated int32 relicGuids = 1;
+}
+
+/* 铁匠铺打开请求 */
+message ForgeOpenRequest{
+
+}
+
+/* 铁匠铺研发 */
+message ForgeResearchRequest{
+  // 图纸id
+  int32 bluePrintId = 1;
+  // 研发槽位
+  int32 slot = 2;
+}
+
+/* 铁匠铺制造 */
+message ForgeMakeRequest{
+  // 图纸guid
+  int32 bluePrintId = 1;
+  // 制造类型 1 武器  2 秘石  3 神器
+  int32 makeType = 2;
+}
+
+/* 铁匠铺加速 */
+message ForgeSpeedUpRequest{
+
+}
+
+/* 铁匠铺任务完成通知请求 */
+message ForgeAdviceRequest{
+  // 槽位
+  int32 slot = 1;
+}
+
+/* 铁匠铺槽位任务信息请求 */
+message ForgeSlotInfoRequest{
+  // 槽位id
+  int32 slotId = 1;
+}
+/*  铁匠铺升级请求 */
+message ForgeLvUpRequest{
+
+}
+
+/* 铁匠铺队列移除请求 */
+message ForgeRemoveRequest{
+  // 槽位id
+  int32 slotId = 1;
+  // 移除图纸id
+  int32 removeBlueId = 2;
+  // 道具数量
+  int64 speedItemCount = 3;
+}
+
+/* 试炼之塔打开请求 */
+message TowerOpenRequest{
+
+}
+
+/* 试炼之塔解锁塔请求 */
+message TowerUnLockRequest{
+  // 解锁神器ID
+  int32 unLockRelicId = 1;
+}
+
+/* 试炼之塔锁英雄 */
+message TowerLockHeroRequest{
+  // 层id
+  int32 towerLevelId = 1;
+  // 选择英雄ID
+  repeated int32 lockHero = 2;
+  // 战斗索引
+  int32 combatIndex = 3;
+}
+
+/* 试炼之塔领取星级奖励 */
+message TowerRewardStarRequest{
+  // 星级奖励Id
+  int32 rewardStarId = 1;
+}
+/* 试炼之塔清除该层信息 */
+message TowerResetLvRequest{
+  // 试炼之塔层级id
+  int32 towerLvId = 1;
+}
+
+/* 公共频道发言请求 */
+message PublicChannelSpeakRequest
+{
+  // 公共频道ID
+  int32 publicId = 1;
+  // 发言信息
+  SpeakWords words = 2;
+}
+
+/* 公会频道发言请求 */
+message GuildChannelSpeakRequest
+{
+  // 公会ID
+  int32 guildId = 1;
+  // 发言信息
+  SpeakWords words = 2;
+}
+
+/* 队伍房间频道发言请求 */
+message RoomChannelSpeakRequest
+{
+  // 房间ID
+  int32 roomId = 1;
+  // 发言信息
+  SpeakWords words = 2;
+}
+
+/* 切换公共频道请求 */
+message SwitchPublicChannelRequest
+{
+  // 当前公共频道ID
+  int32 currPublicId = 2;
+  // 目标公共频道ID
+  int32 targetPublicId = 3;
+}
+
+/* 私聊频道发言请求 */
+message PrivateChannelSpeakRequest
+{
+  // 私聊玩家ID
+  int64 toPlayerId = 2;
+  // 目标聊天服ID
+  int32 toChatId = 3;
+  // 发言信息
+  SpeakWords words = 4;
+}
+
+/* 发言信息记录请求 */
+message SpeakWordsRecordRequest
+{
+  // 频道ID
+  int32 chanId = 2;
+  // 发言玩家ID
+  int64 speakPlayerId = 3;
+  // 发言时间
+  int64 speakTime = 4;
+}
+
+/* 取得公共频道信息请求 */
+message GetPublicChannelRequest
+{
+  // 语言ID
+  int32 languageId = 2;
+}
+
+/* 举报发言信息请求 */
+message InformSpeakWordsRequest
+{
+  // 频道ID
+  int32 chanId = 2;
+  // 发言玩家ID
+  int64 speakPlayerId = 3;
+  // 发言时间
+  int64 speakTime = 4;
+}
+
+/* 加入公会频道请求 */
+message JoinGuildChannelRequest
+{
+  // 公会ID
+  int32 guildId = 2;
+}
+
+/* 退出公会频道请求 */
+message QuitGuildChannelRequest
+{
+  // 退出玩家ID(管理者踢出玩家)
+  int64 quitPlayerId = 2;
+}
+
+/* 加入队伍房间频道请求 */
+message JoinRoomChannelRequest
+{
+  // 房间ID
+  int32 roomId = 1;
+}
+
+/* 退出队伍房间频道请求 */
+message QuitRoomChannelRequest
+{
+  // 退出玩家ID(房主踢出玩家)
+  int64 quitPlayerId = 2;
+}
+
+/* 聊天频道加入请求 */
+message ChatChannelJoinRequest
+{
+  // 频道ID(公共频道ID、公会ID、房间ID)
+  int32 chanId = 1;
+  // 频道类型
+  ChanType chanType = 2;
+}
+
+/* 退出队伍房间频道请求 */
+message ChatChannelQuitRequest
+{
+  // 退出玩家ID(房主踢出玩家)
+  int64 quitPlayerId = 1;
+  // 频道ID(公共频道ID、公会ID、房间ID)
+  int32 chanId = 2;
+  // 频道类型
+  ChanType chanType = 3;
+}
+
+/* 聊天信息发送请求 */
+message ChatMessageSendRequest
+{
+  // 聊天发言信息
+  SpeakWords words = 1;
+}
+
+/*羁绊升级请求*/
+message FetterUpRequest{
+  //赠送的道具id
+  int32 itemId = 1;
+  //英雄id
+  int32 heroId = 2;
+}
+
+/*羁绊奖励领取请求*/
+message FetterAwardRequest{
+  //  英雄id
+  int32 heroId = 1;
+  //  领取的奖励等级
+  int32 level = 2;
+}
+
+/* 藏宝图房间进入请求 */
+message TreasureRoomEnterRequest {
+  // 藏宝图ID
+  int32 mapId = 1;
+  // 邀请码
+  int32 inviteCode = 2;
+}
+
+/* 藏宝图房间退出请求 */
+message TreasureRoomQuitRequest {
+  // 藏宝图ID
+  int32 mapId = 1;
+}
+
+/* 藏宝图房间刷新请求 */
+message TreasureRoomRefreshRequest {
+  // 藏宝图ID
+  int32 mapId = 1;
+}
+
+/* 藏宝图领奖请求 */
+message TreasureMapAwardRequest {
+  // 藏宝图ID
+  int32 mapId = 1;
+  // 藏宝图配置表ID
+  int32 mapConfigId = 2;
+  // 是否有特殊奖励
+  bool isSpecialAward = 3;
+  // 是否是创建者
+  bool isCreator = 4;
+  // 任务奖励索引
+  sint32 taskRewardIndex = 5;
+  // 古代物品奖励索引
+  int32 ancientRewardIndex = 6;
+}
+
+/* 藏宝图区域锁定请求 */
+message TreasureAreaLockRequest {
+  // 藏宝图ID
+  int32 mapId = 1;
+  // 区域索引,从1开始
+  int32 areaIndex = 2;
+}
+
+/* 藏宝图区域进入请求 */
+message TreasureAreaEnterRequest {
+  // 藏宝图ID
+  int32 mapId = 1;
+  // 藏宝图区域索引,从1开始
+  int32 areaIndex = 2;
+  // 藏宝图区域ID
+  int32 areaId = 3;
+  // 藏宝图区域地图索引
+  int32 areaMapIndex = 4;
+  // 藏宝图配置表ID
+  int32 mapConfigId = 5;
+  // 藏宝图公共Buff卡
+  repeated int32 bufCards = 6;
+  // 寻宝基金代币
+  int64 coin = 7;
+}
+
+/* 藏宝图区域退出请求 */
+message TreasureAreaQuitRequest {
+  // 藏宝图ID
+  int32 mapId = 1;
+  // 藏宝图区域索引,从1开始
+  int32 areaIndex = 2;
+  // 藏宝图区域ID
+  int32 areaId = 3;
+  // 是否完成
+  bool isComplete = 4;
+  // 藏宝图区域地图索引
+  int32 areaMapIndex = 5;
+  // 藏宝图配置ID
+  int32 mapConfigId = 6;
+}
+
+/* 藏宝图记录详情请求 */
+message TreasureMapRecordDetailRequest {
+  // 藏宝图ID
+  int32 mapId = 1;
+}
+
+/* 藏宝图设置招募范围请求 */
+message TreasureMapSetLimitRequest {
+  // 藏宝图ID
+  int32 mapId = 1;
+  // 1=好友,2=公会,3=公共
+  repeated int32 limit = 2;
+}
+
+/* 藏宝图刷新请求 */
+message TreasureMapRefreshRequest {
+  // 是否只刷新其他人的
+  bool isOther = 1;
+}
+
+
+message TreasureMapInviteCodeRequest {
+  // 藏宝图ID
+  int32 mapId = 1;
+}
+
+/* 藏宝图区域Buff卡选择请求 */
+message TreasureAreaSelectCardRequest {
+  // 藏宝图ID
+  int32 mapId = 1;
+  // 藏宝图区域索引,从1开始
+  int32 areaIndex = 2;
+  // 藏宝图区域ID
+  int32 areaId = 3;
+  // 选择的Buff卡
+  repeated int32 selectCards = 4;
+}
+
+// 发送好友申请
+message FriendReqSendRequest {
+  int64 otherPlayerId = 1;
+}
+
+// 好友申请的操作
+message FriendReqActionRequest {
+  // 其他玩家ID,不赋值代表全部拒绝
+  int64 otherPlayerId = 1;
+  bool isAgree = 2;
+}
+
+// 好友删除请求
+message FriendDeleteRequest {
+  int64 otherPlayerId = 1;
+}
+
+// 查找玩家信息请求
+message FindPlayerInfoRequest {
+  int64 otherPlayerId = 1;
+}
+
+/* 玩家重新改名请求 */
+message PlayerRenameRequest {
+  string newName = 1;
+}
+
+/* 恢复体力请求 */
+message PlayerRechargeRequest{
+  //  int64 rechargeTime = 1;
+}
+
+// 编辑布阵
+message TeamPresetEditRequest {
+  TeamPreset teamPreset = 1;
+}
+
+// 基础副本打开
+message DuplicateOpenRequest {
+
+}
+
+// 副本自动战斗请求
+message DuplicateAutoFightRequest {
+  // 自动战斗次数
+  int32 autoFightCount = 1;
+  // 副本id
+  int32 challengeId = 2;
+  // speed  极速卷倍数
+  int32 speedRoll = 3;
+  // 体力补充类型
+  int32 supplyType = 4;
+}
+
+//资源副本确认(带地图的)
+message DuplicateEnterRequest {
+  // 副本id
+  int32 challengeId = 1;
+}
+
+//资源副本确认(带地图的)
+message DuplicateQuitRequest {
+  // 副本id
+  int32 challengeId = 1;
+}
+
+// 战斗数据返回,返回玩家对应的战斗英雄数据
+message CombatStartRequest {
+  // 战斗类型
+  CombatType combatType = 1;
+  // 使用的团队下表
+  int32 useTeamIndex = 2;
+  // 副本id
+  int32 challengeId = 3;
+  // 副本难度
+  int32 challengeDifficulty = 4;
+  // 阵容英雄
+  repeated int32 teamHeros = 5;
+  // 活动id
+  int32 activityId = 6;
+}
+
+//战斗完成的回调,更具不同的战斗类型赋值不同的战斗数据
+message CombatFinishRequest
+{
+  // 战斗类型
+  CombatType combatType = 1;
+  // 使用的团队下表
+  int32 useTeamIndex = 2;
+  //  // 我方的战斗结果英雄数据,需要传到服务器做校验
+  //  repeated HeroData myHeroData = 3;
+  //  // 敌方的战斗英雄数据,需要传到服务器做校验
+  //  repeated HeroData enemyHeroData = 4;
+  // 副本id
+  int32 challengeId = 5;;
+  // 副本难度
+  int32 challengeDifficulty = 6;
+  // 冒险机关ID
+  int32 stageTrapId = 7;
+  // 冒险机关节点ID
+  int32 stageTrapNodeId = 8;
+  //  // 战斗是否胜利
+  //  bool isWin = 9;
+  // 分数
+  int32 score = 10;
+  //  // 通关时间
+  //  int32 time = 11;
+  // 我方指令
+  repeated CombatInputCode myHeroCode = 12;
+  // 敌方指令
+  repeated CombatInputCode enemyHeroCode = 13;
+  // 战斗随机数种子
+  int32 combatSeed = 14;
+  // 战斗ID
+  int64 combatId = 15;
+  //左边验证的英雄
+  repeated VerifyHero leftHero = 16;
+  //右边验证的英雄
+  repeated VerifyHero rightHero = 17;
+  // 是否主动放弃战斗
+  bool giveUpCombat = 18;
+  // 神器ID
+  int32 relicId = 19;
+  // 玩家队伍总评分
+  int32 playerTeamScore = 20;
+  // 敌人队伍总评分
+  int32 enemyTeamScore = 21;
+  // 战斗结果信息
+  CombatResult combatResult = 3;
+  // 资源本战斗 speed  极速卷倍数
+  int32 speedRoll = 22;
+  // 资源本战斗 体力补充类型
+  int32 supplyType = 23;
+  // 活动id
+  int32 activityId = 24;
+  // worldBoss RoomId
+  int32 roomId = 25;
+  // worldBossId
+  int32  scheduleConfigId = 26;
+  // battleId
+  int32 battleId = 27;
+  // 精英怪数量
+  int32 eliteMonster = 28;
+  // 精英怪数量
+  int32 commonMonster = 29;
+  // boss数量
+  int32 bossMonster = 30;
+}
+
+// 应用布阵
+message TeamPresetUseRequest {
+  // 布阵应用
+  TeamPreset teamPreset = 1;
+  // 布阵应用类型
+  TeamPresetType teamPresetType = 2;
+}
+
+// 获取布阵信息
+message TeamPresetFindRequest{
+  // 队伍数量
+  int32 formationCnt = 1;
+  // 队伍获取类型
+  TeamPresetType teamPresetType = 2;
+}
+
+/* 特殊玩法换人请求 */
+message TeamPresetSpecialRequest{
+  // 玩法类型
+  TeamPresetType teamPresetType = 1;
+  // 布阵应用
+  TeamPreset teamPreset = 2;
+}
+
+/**
+  特殊玩法打开
+ */
+message TeamPresetSpecialOpenRequest{
+
+}
+
+/* 招募英雄和抽取武器请求 */
+message SummonRequest {
+  // 召唤ID
+  int32 summonId = 1;
+  // 召唤数量,1=单抽 10=十连抽
+  int32 summonCount = 2;
+}
+
+/* 招募记录获取请求 */
+message SummonRecordGetRequest {
+  // 页数,从1开始
+  int32 page = 1;
+}
+
+/* 商城打开请求 */
+message ShopOpenRequest {
+  // 默认打开商店ID
+  int32 defaultShopId = 1;
+}
+
+/* 商店商品取得请求 */
+message ShopItemGetRequest {
+  // 商店ID
+  int32 shopId = 1;
+}
+
+/* 商店商品购买请求 */
+message ShopItemBuyRequest {
+  // 商店ID
+  int32 shopId = 1;
+  // 商品ID
+  int32 shopItemId = 2;
+  // 商品索引
+  int32 shopItemIndex = 3;
+  // 购买次数
+  int32 buyCount = 4;
+}
+
+/* 商店礼包购买请求 */
+message ShopGiftItemBuyRequest {
+  // 商店ID
+  int32 shopId = 1;
+  // 商品ID
+  int32 shopItemId = 2;
+  // 商品索引,-1=通过商品ID查找
+  sint32 shopItemIndex = 3;
+  // 购买次数
+  int32 buyCount = 4;
+}
+
+/* 商店刷新请求 */
+message ShopRefreshRequest {
+  // 商店ID
+  int32 shopId = 1;
+  // 是否手动刷新
+  bool isManual = 2;
+}
+
+/*探索任务打请求*/
+message ExploreTaskOpenRequest
+{
+
+}
+/*获取任务开始请求*/
+message ExploreTaskStartRequest
+{
+  //任务id
+  int32 taskId = 1;
+  //上阵英雄id
+  repeated int32 heroes = 2;
+  //使用道具id
+  repeated int32 items = 3;
+}
+
+/*获取任务领奖请求*/
+message ExploreTaskAwardRequest
+{
+  //任务id
+  int32 taskId = 1;
+}
+
+/*探索任务接受请求*/
+message  ExploreTaskAcceptRequest
+{
+  int32 taskId = 1;
+}
+
+/*酒馆升级*/
+message  ExploreLvUpRequest
+{
+
+}
+
+
+
+/*获取商业建筑的数据 */
+message  MallBuildingGetDataRequest
+{
+  //需要获取那些建筑的类型列表
+  // repeated int32 MallBuildingType = 1;
+
+}
+
+/* 商业建筑添加工作英雄请求*/
+message MallBuildingSetWorkHeroRequest
+{
+  //商业建筑类型
+  int32 mallBuildingType = 1;
+
+  //工作的英雄id列表
+  repeated int32 workHeroIDList = 2;
+}
+
+/*商业建筑获取工作奖励*/
+message MallBuildingGetWorkAwardRequest
+{
+  //商业建筑类型
+  int32 mallBuildingType = 1;
+
+}
+
+/* 打工英雄设置请求 */
+message WorkHeroSetRequest
+{
+  // 建筑ID
+  int32 buildingId = 1;
+  // 工作的英雄列表
+  repeated int32 workHeroes = 2;
+}
+
+/* 打工Buff兑换请求 */
+message WorkBuffBuyRequest
+{
+  // 打工BuffID
+  int32 workBuffId = 1;
+}
+
+/**
+战斗复活
+ */
+message CombatResurrectionRequest
+{
+  CombatType CombatType = 1;
+  CombatDungeonResurrection combatDungeonResurrection = 2;
+}
+/*
+主线关卡复活信息
+ */
+message CombatDungeonResurrection
+{
+  int32 dungeonId = 1;
+}
+
+// 成就奖励领取
+message AchievementAwardRequest
+{
+  // 成就Id
+  int32 achievementId = 1;
+}
+
+// 勇士选拔赛打开界面
+message  WarriorOpenRequest
+{
+
+}
+
+// 勇士选拔赛打开排行榜界面
+message  WarriorOpenRankListRequest
+{
+
+}
+
+/* 获取喜欢英雄列表请求*/
+message GetLikeHeroListRequest
+{
+
+}
+
+/*改变喜欢英雄列表请求 */
+message ChangeLikeHeroListRequest
+{
+  repeated int32 heroIds = 1;
+
+}
+
+/* 公会创建请求 */
+message GuildCreateRequest
+{
+  // 公会名称
+  string name = 1;
+  // 公会旗帜
+  string icon = 2;
+  // 公会语言
+  int32 language = 3;
+  // 公会等级需求
+  int32 levelNeed = 4;
+  // 公会加入限制
+  int32 joinLimit = 5;
+  // 公会描述信息
+  string des = 6;
+  // 公会公告
+  string notice = 7;
+}
+
+/* 公会搜索请求 */
+message GuildSearchRequest
+{
+  // 搜索条件
+  string condition = 1;
+}
+
+/* 公会刷新请求 */
+message GuildRefreshRequest
+{
+  // 公会语言
+  int32 language = 1;
+  // 公会等级需求
+  int32 levelNeed = 2;
+  // 公会加入限制
+  int32 joinLimit = 3;
+}
+
+/* 公会详情请求 */
+message GuildDetailRequest
+{
+  // 公会ID
+  int32 guildId = 1;
+}
+
+/* 公会申请请求 */
+message GuildApplyRequest
+{
+  // 申请公会ID
+  int32 guildId = 1;
+  // 玩家等级
+  int32 playerLv = 2;
+}
+
+/* 公会申请确认请求 */
+message GuildApplyConfirmRequest
+{
+  // 申请玩家ID
+  int64 applyId = 1;
+  // 是否同意
+  bool isOk = 2;
+  // 是否全部
+  bool isAll = 3;
+}
+
+/* 公会修改请求 */
+message GuildModifyRequest
+{
+  // 公会名称
+  string name = 1;
+  // 公会旗帜
+  string icon = 2;
+  // 公会等级需求
+  int32 levelNeed = 3;
+  // 公会加入限制
+  int32 joinLimit = 4;
+  // 公会描述信息
+  string des = 5;
+  // 公会公告
+  string notice = 6;
+}
+
+/* 公会修改职位请求 */
+message GuildModifyPositionRequest
+{
+  // 公会成员ID
+  int64 memberId = 1;
+  // 公会职位
+  int32 position = 2;
+}
+
+/* 公会日志请求 */
+message GuildLogRequest
+{
+  // 日志页数,从1开始
+  int32 page = 1;
+}
+
+/* 公会信息同步请求 */
+message GuildSyncRequest
+{
+  // 公会ID
+  int32 guildId = 1;
+  // 公会下次加入时间
+  int32 guildNextJoinTime = 2;
+}
+
+/* 公会活动排行榜 */
+message GuildActivityRankRequest{
+  // 排行类型  1
+  int32 rankType = 1;
+}
+
+
+/* 公会活动 */
+message GuildActivityRequest{
+
+}
+
+
+/* 共斗进入房间请求 */
+message FightTogetherEnterRoomRequest
+{
+  // 房间ID
+  int32 roomId = 1;
+  // 玩家信息
+  FightTogetherPlayerInfo fightTogetherPlayerInfo = 2;
+}
+
+/* 共斗创建房间请求 */
+message FightTogetherCreateRoomRequest
+{
+  // 创建的共斗ID
+  int32 fightTogetherId = 1;
+  // 房间进入限制 1=私密房间 2=公开房间 4=好友可见 8=公会成员可见
+  int32 limit = 2;
+}
+
+/* 共斗队伍改变请求 */
+message FightTogetherTeamAlterRequest
+{
+  // 玩家信息
+  FightTogetherPlayerInfo fightTogetherPlayerInfo = 1;
+}
+
+/* 共斗获取玩家信息请求 */
+message FightTogetherGetPlayerInfoRequest
+{
+  // 共斗ID
+  int32 fightTogetherId = 1;
+}
+
+/* 共斗匹配房间请求 */
+message FightTogetherMatchRoomRequest
+{
+  // 匹配的共斗类型
+  int32 fightTogetherId = 1;
+}
+
+/* 共斗匹配房间取消请求 */
+message FightTogetherMatchCancelRequest
+{
+  // 匹配的共斗类型
+  int32 fightTogetherId = 1;
+}
+
+/* 共斗状态改变请求 */
+message FightTogetherStateAlterRequest
+{
+  // 玩家状态 0=空闲 1=准备 2=结算中
+  int32 state = 1;
+  // 结算玩,再来一次
+  bool isAgain = 2;
+}
+
+/* 共斗开始请求 */
+message FightTogetherStartRequest
+{
+  // 是否准备,true:房主点开始全员准备,false:进入战斗
+  bool isPrepare = 1;
+}
+
+/* 共斗结束请求 */
+message FightTogetherFinishRequest
+{
+  // 房间ID
+  int32 roomId = 1;
+  // 是否胜利
+  bool isWin = 2;
+  // 战斗配置ID
+  int32 levelBattleId = 3;
+  // 共斗ID
+  int32 fightTogetherId = 4;
+  // 玩家信息列表
+  repeated RoleSimpleInfo roleInfos = 5;
+
+}
+
+/* 共斗Buff改变请求 */
+message FightTogetherBuffAlterRequest
+{
+  // buffId
+  int32 buffId = 1;
+}
+
+/* 共斗房间进入限制修改请求 */
+message FightTogetherLimitAlterRequest
+{
+  // 房间进入限制 1=私密房间 2=公开房间 4=好友可见 8=公会成员可见
+  int32 limit = 1;
+}
+
+/* 共斗玩家离开房间请求 */
+message FightTogetherLeaveRequest
+{
+  // 是否被踢出房间
+  bool isKickOut = 1;
+  // 离开的玩家ID
+  int64 leavePlayerId = 2;
+}
+
+/* 共斗房间搜索请求 */
+message FightTogetherSearchRequest
+{
+  // 房间进入限制 1=私密房间 2=公开房间 4=好友可见 8=公会成员可见
+  int32 limit = 1;
+  // 玩家等级
+  int32 level = 2;
+}
+
+/* 共斗BOSS组打开请求 */
+message FightTogetherGroupOpenRequest
+{
+  // BOSS组ID
+  int32 groupId = 1;
+}
+
+/* 单人训练打开 */
+message RogueLikeOpenRequest{
+
+}
+
+/* 单人训练开始 */
+message  RogueLikeEnterRequest{
+  // 难度ID
+  int32 rogueSysId = 1;
+  // 布阵英雄ID
+  repeated int32 heroIds = 2;
+  // 布阵神器
+  int32 goldenId = 3;
+  // 布阵宠物
+  int32 petId = 4;
+}
+
+/* 单人训练切换节点 */
+message RogueLikeChangeNodeRequest{
+  // 当前关卡id
+  int32  rogueLikeId = 1;
+  // 当前节点
+  int32  currentNode = 2;
+  // 选择的传送门地图ID
+  int32 chooseMapId = 3;
+}
+
+/* 单人训练退出 */
+message RogueLikeQuitRequest{
+  // 退出 or 放弃 (true 退出) (false 放弃)
+  bool quitType = 1;
+  // 难度ID
+  int32 rogueLikeId = 2;
+  // 是否强制退出
+  bool forceQuit = 3;
+}
+
+/* 单人训练复活界面 */
+message RogueLikeResurrectionRequest{
+  // 选择的难度
+  int32  rogueSysId = 1;
+}
+
+/* 单人训练打开请求 */
+message RogueLikeAchieveOpenRequest{
+
+}
+
+/* 单人训练成就领取 */
+message RogueLikeAchieveAwardRequest{
+  // 成就ID
+  int32 achieveId = 1;
+}
+
+/* 拟态科技打开 */
+message RogueLikeMimicryOpenRequest{
+
+}
+
+/* 单人训练重置拟态科技 */
+message RogueLikeMimicryResetRequest{
+
+}
+
+/* 单人训练拟态科技等级变化 */
+message RogueLikeMimicryLvRequest{
+  // skillId
+  int32 rogueSkillId = 1;
+  // 更改类型 0减 1加
+  int32 changeType = 2;
+}
+
+/* 任务领奖请求 */
+message TaskAwardRequest {
+  // 完成的任务ID列表
+  repeated int32 taskIds = 1;
+  // 领取参数   新手任务(0套 1天 2页)
+  repeated int32 param = 2;
+}
+
+/* 任务积分领奖请求 */
+message TaskScoreAwardRequest {
+  // 任务类型
+  int32 taskType = 1;
+  // 领奖索引,从0开始
+  repeated int32 awardIndex = 2;
+}
+
+/* 任务更新请求 */
+message TaskUpdateRequest {
+  // 任务条件类型
+  int32 conditionType = 1;
+  // 任务更新参数Key
+  repeated string paramKey = 2;
+  // 任务更新参数Value
+  repeated int32 paramValue = 3;
+  // 任务增加值
+  int32 addValue = 4;
+  // 任务设置值
+  int32 setValue = 5;
+}
+
+/* 任务客户端更新请求 */
+message TaskClientUpdateRequest {
+  // 任务条件类型
+  int32 conditionType = 1;
+  // 任务更新参数Key
+  repeated string paramKey = 2;
+  // 任务更新参数Value
+  repeated int32 paramValue = 3;
+  // 任务增加值
+  int32 addValue = 4;
+  // 任务设置值
+  int32 setValue = 5;
+}
+
+/* 新手任务打开请求 */
+message TaskNewOpenRequest{
+}
+
+/* 领取积分奖励请求 */
+message TaskNewScoreAwardRequest{
+  // 第几套
+  int32 id = 1;
+  // 天数
+  int32 day = 2;
+  // 页数
+  int32 page = 3;
+  // 领奖索引,从0开始
+  repeated int32 index = 4;
+}
+
+/* 图鉴打开请求 */
+message MedalOpenRequest{
+
+}
+
+/* 图鉴领取奖励请求 */
+message MedalAwardRequest{
+  // 领取ids
+  repeated int32 pictorialId = 1;
+  // 领取类型 (1 普通条目 2 羁绊)
+  int32 awardType = 2;
+}
+
+/* 选择称号请求 */
+message TitleSelectRequest {
+  // 选择的称号ID
+  int32 titleSelectId = 1;
+}
+
+/* 选择头像框请求 */
+message IconFrameSelectRequest {
+  // 选择的头像框ID
+  int32 iconFrameSelectId = 1;
+}
+
+/* 邮箱打开请求 */
+message MailBoxOpenRequest {
+  // 页码
+  int32 pageNum = 1;
+}
+
+/* 邮件详情请求 */
+message MailDetailRequest {
+  // 邮件ID
+  int64 mailId = 1;
+}
+
+/* 邮件查看请求 */
+message MailViewRequest {
+  // 邮件ID
+  repeated int64 mailId = 1;
+}
+
+/* 邮件领奖请求 */
+message MailAwardRequest {
+  // 邮件ID列表
+  repeated int64 mailIds = 1;
+}
+
+/* 邮件删除请求 */
+message MailDeleteRequest {
+  // 邮件ID列表
+  repeated int64 mailIds = 1;
+}
+
+/* 新手引导保存请求 */
+message GuideSaveRequest {
+  // 引导ID
+  int32 guideId = 1;
+}
+
+/* 支付回调请求 */
+message PayCallbackRequest {
+  // CP订单ID
+  string gameOrderId = 1;
+  // 订单额外数据
+  string extension = 2;
+  // 充值金额
+  string money = 3;
+}
+
+/* 战令购买等级请求 */
+message BattlePassLevelBuyRequest {
+  // 购买等级
+  int32 buyLevel = 1;
+}
+
+/* 小红点保持请求 */
+message RedDotSaveRequest {
+  // 小红点信息
+  RedDot redDot = 1;
+}
+
+/* 小红点更新请求 */
+message RedDotUpdateRequest {
+  // 操作,1=Add 2=Remove
+  int32 operation = 1;
+  // 小红点ID
+  int32 redDotId = 2;
+  // 小红点参数
+  string redDotParam = 3;
+}
+
+/* 契约打开 */
+message ContractOpenRequest{
+
+}
+
+/* 契约领取 */
+message ContractAwardRequest{
+  int32 contractContentId = 1;
+}
+
+
+/* 签到 */
+message SignedRequest{
+  int32 activityId = 1;
+}
+
+/* 月卡打开 */
+message CircularOpenRequest{
+}
+
+/* 月卡领取 */
+message CircularAwardRequest{
+  // 月卡ID
+  int32 circularId = 1;
+}
+
+/* 活动打开请求 */
+message ActivityOpenRequest {
+  // 详情活动ID
+  int32 activityId = 1;
+}
+
+/* 活动详情信息请求 */
+message ActivityDetailRequest{
+  // 活动ID
+  int32 activityId = 1;
+}
+
+/* 活动冲刺信息请求 */
+message ActivityRushRequest{
+}
+
+/* 活动 世界BOSS 踢馆 */
+message ActivityWorldBossRequest{
+  // roomID
+  int32 roomId = 1;
+}
+
+/* 活动藏宝图赞助 */
+message ActivityTMSupportRequest {
+  // 活动ID
+  int32 activityId = 1;
+  // 活动赞助势力ID
+  int32 supportGroupId = 2;
+  // 赞助的古代物品ID
+  repeated int32 supportItemIds = 3;
+  // 赞助的古代物品数量
+  repeated int32 supportItemCounts = 4;
+}
+
+/* 活动藏宝图赞助领奖 */
+message ActivityTMSupportAwardRequest {
+  // 活动ID
+  int32 activityId = 1;
+  // 活动赞助势力ID
+  int32 supportGroupId = 2;
+  // 活动赞助领奖等级
+  int32 awardLevel = 3;
+}
+
+/* 世界boss 排行信息 */
+message WorldBossRankRequest{
+  // roomID
+  int32 roomId = 1;
+}
+
+/* 分解遗物等 */
+message DecomposeRequest{
+  // 分解类型
+  DecomposeType decomposeType = 1;
+  // 分解ID
+  repeated int32 decomposeIds = 2;
+  // 分解数量  英雄碎片需要传 其余不用
+  repeated int32 decomposeCnt = 3;
+}
+
+/* 委托战斗补充体力 */
+message DuplicateStrengthRequest{
+  int32 challengeId = 1;
+  int32 speedRoll = 2;
+  int32 supply = 3;
+}
+
+
+

+ 1926 - 0
NetCore/Protocol/Protobuf/ProtoMessge/MsgResponse.proto

@@ -0,0 +1,1926 @@
+syntax = "proto3";
+
+import "MsgEnum.proto";
+import "MsgStruct.proto";
+import "MsgNotify.proto";
+import "CombatDataStruct.proto";
+
+package com.fort23.protocol.protobuf;
+// option java_outer_classname = "MsgResponse";
+// option java_multiple_files = true;
+
+/* 响应消息,把所有的XxxResponse消息全部集合在一起 */
+message Response
+{
+  // 消息类型
+  MsgType msgType = 1;
+  // 返回类型
+  ReturnType returnType = 2;
+  // 错误信息
+  string errorMsg = 3;
+  // 服务器时间毫秒
+  int64 serverTime = 4;
+  // 账号封禁时间
+  int32 bannedTime = 5;
+  // 账号封禁理由
+  string bannedReason = 6;
+  // 扩展参数
+  ExtraParam extraParam = 7;
+  // 错误信息参数
+  repeated string errorParams = 8;
+  // 同步数值道具信息
+  repeated Item syncItems = 9;
+  // 同步任务信息
+  repeated Task syncTasks = 10;
+  // 禁言时间
+  int32 shutUpTime = 11;
+  // 禁言理由
+  string shutUpReason = 12;
+  // 同步玩家等级
+  int32 syncPlayerLv = 13;
+  // 获得道具
+  repeated Item gainItems = 14;
+  // 获得图纸
+  repeated BluePrintInfo bluePrints = 15;
+  // 今日体力经验
+  int32 GainedExpToday = 16;
+  // 同步玩家战令等级
+  int32 syncBattlePassLv = 17;
+  // 小红点信息
+  repeated RedDot redDots = 18;
+  // 同步玩家战令ID
+  int32 syncBattlePassId = 19;
+
+  /********************************************************/
+  /************* gateway服消息响应,分段号:21~40 **************/
+  /********************************************************/
+  // ...
+
+  /********************************************************/
+  /************* login服消息响应,分段号:41~100 **************/
+  /********************************************************/
+  PlatformUserRegisterResponse platformUserRegisterResp = 41;
+  VisitorUserRegisterResponse visitorUserRegisterResp = 42;
+  VisitorUserLoginResponse visitorUserLoginResp = 43;
+  PlatformUserLoginResponse platformUserLoginResp = 44;
+  PlatformUserBindResponse platformUserBindResp = 45;
+  ClientConfigGetResponse clientConfigGetResp = 46;
+  AnnouncementGetResponse announcementGetResp = 47;
+  ServerListGetResponse serverListGetResp = 48;
+
+  /********************************************************/
+  /************* Game服消息响应,分段号:101~1000 *************/
+  /********************************************************/
+  GameEnterResponse gameEnterResp = 101;
+  ItemUseResponse itemUseResp = 102;
+  ItemSellResponse itemSellRsp = 103;
+  PlayerRechargeResponse playerRechargeResp = 105;
+  StrengthBuyResponse strengthBuyResp = 106;
+  RedDotUpdateResponse redDotUpdateResp = 107;
+  GameAnnouncementGetResponse gameAnnouncementGetResp = 108;
+
+  HeroUpgradeResponse heroUpgradeResp = 210;
+  HeroAwakenResponse heroAwakenResp = 211;
+
+  MainStageEnterResponse mainStageEnterResp = 220;
+  StageTrapCompleteResponse stageTrapCompleteResp = 221;
+  StageTrapNodeCompleteResponse stageTrapNodeCompleteResp = 222;
+  MainStageQuitResponse mainStageQuitResp = 223;
+  MainStagePreviewResponse mainStagePreviewResp = 224;
+  ChapterRewardResponse chapterRewardResp = 225;
+  StageResurrectResponse stageResurrectResponse = 226;
+
+  EquipmentUpgradeResponse equipmentUpgradeResp = 230;
+
+  RuneUpgradeResponse  runeUpgradeResp = 245;
+
+  WeaponUpgradeResponse weaponUpgradeResp = 250;
+  WeaponAwakenResponse weaponAwakenResp = 251;
+
+  FetterUpResponse fetterRes = 260;
+  FetterAwardResponse fetterAwardResp = 261;
+
+  CombatStartResponse combatStartResp = 271;
+  CombatFinishResponse combatFinishResp = 272;
+
+  TeamPresetEditResponse teamPresetEditResp = 280;
+  TeamPresetUseResponse teamPresetUseResp = 281;
+  TeamPresetFindResponse teamPresetFindResp = 282;
+  TeamPresetSpecialResponse  teamPresetSpecialResponse = 283;
+  TeamPresetSpecialOpenResponse  teamPresetSpecialOpenResponse = 284;
+
+  SummonOpenResponse summonOpenResp = 291;
+  SummonResponse summonResp = 292;
+  SummonRecordGetResponse summonRecordGetResp = 293;
+
+  ShopOpenResponse shopOpenResp = 300;
+  ShopItemGetResponse shopItemGetResp = 301;
+  ShopItemBuyResponse shopItemBuyResp = 302;
+  ShopRefreshResponse shopRefreshResp = 303;
+  ShopGiftItemBuyResponse shopGiftItemBuyResp = 304;
+  ShopGiftItemBuyNotify shopGiftItemBuyNotify = 305;
+
+  DuplicateOpenResponse duplicateOpenResp = 310;
+  DuplicateAutoFightResponse duplicateAutoFightResp = 311;
+  DuplicateEnterResponse duplicateEnterResp = 312;
+  DuplicateQuitResponse duplicateQuitResp = 313;
+
+  ExploreTaskOpenResponse exploreTaskOpenResp = 320;
+  ExploreTaskStartResponse exploreTaskStartResp = 321;
+  ExploreTaskAwardResponse exploreTaskAwardResp = 322;
+  ExploreTaskAcceptResponse exploreTaskAcceptResp = 323;
+  ExploreLvUpResponse  ExploreUpsResponse = 324;
+
+  MallBuildingGetDataResponse mallBuildingGetDataResp = 330;
+  MallBuildingSetWorkHeroResponse mallBuildingSetWorkHeroResponse = 331;
+  MallBuildingGetWorkAwardResponse mallBuildingGetWorkAwardResponse = 332;
+  WorkDataGetResponse workDataGetResp = 333;
+  WorkHeroSetResponse workHeroSetResp = 334;
+  WorkHeroSetAllResponse workHeroSetAllResp = 335;
+  WorkAwardGetResponse workAwardGetResp = 336;
+  WorkBuffBuyResponse WorkBuffBuyResp = 337;
+
+  WarriorOpenResponse warriorOpenResp = 340;
+  WarriorOpenRankListResponse warriorOpenRankListResp = 341;
+
+  AchievementOpenResponse achievementOpenResp = 350;
+  AchievementAwardResponse achievementAwardResp = 351;
+
+  GetLikeHeroListResponse getLikeHeroListResponse = 360;
+
+  RelicUpGradeResponse relicUpGradeResponse = 370;
+  RelicUpStarResponse relicUpStarResponse = 371;
+  GeneralLockResponse generalLockResponse = 372;
+  RelicEquipResponse relicEquipResponse = 373;
+  RelicComposeResponse relicComposeResponse = 374;
+
+  ForgeOpenResponse forgeOpenResponse = 390;
+  ForgeResearchResponse forgeResearchResponse = 391;
+  ForgeMakeResponse forgeMakeResponse = 392;
+  ForgeSpeedUpResponse forgeSpeedUpResponse = 393;
+  ForgeAdviceResponse  forgeAdviceResponse = 394;
+  ForgeSlotInfoResponse forgeSlotInfoResponse = 395;
+  ForgeLvUpResponse forgeLvUpsResponse = 396;
+  ForgeRemoveResponse forgeRemoveResponse = 397;
+
+  TowerOpenResponse towerOpenResponse = 401;
+  TowerUnLockResponse towerUnLockResponse = 402;
+  TowerLockHeroResponse towerLockHeroResponse = 403;
+  TowerRewardStarResponse towerRewardStarResponse = 404;
+  TowerResetLvResponse towerResetLvResponse = 405;
+
+  RogueLikeOpenResponse rogueLikeOpenResponse = 420;
+  RogueLikeEnterResponse rogueLikeEnterResponse = 421;
+  RogueLikeChangeNodeResponse rogueLikeChangeNodeResponse = 422;
+  RogueLikeQuitResponse rogueLikeQuitResponse = 423;
+  RogueLikeResurrectionResponse rogueLikeResurrectionResponse = 424;
+  RogueLikeAchieveOpenResponse rogueLikeAchieveOpenResponse = 425;
+  RogueLikeAchieveAwardResponse rogueLikeAchieveAwardResponse = 426;
+  RogueLikeMimicryOpenResponse rogueLikeMimicryOpenResponse = 427;
+  RogueLikeMimicryLvResponse rogueLikeMimicryLvResponse = 428;
+  RogueLikeMimicryResetResponse rogueLikeMimicryResetResponse = 429;
+
+  TaskOpenResponse taskOpenResp = 430;
+  TaskAwardResponse taskAwardResp = 431;
+  TaskScoreAwardResponse taskScoreAwardResp = 432;
+
+  TaskNewOpenResponse taskNewOpenResponse = 440;
+  TaskNewScoreAwardResponse taskNewScoreAwardResponse = 441;
+
+  MedalOpenResponse medalOpenResponse = 450;
+  MedalAwardResponse medalAwardResponse = 451;
+
+  TitleOpenResponse titleOpenResp = 460;
+
+  IconFrameOpenResponse iconFrameOpenResp = 465;
+
+  MailBoxOpenResponse mailBoxOpenResp = 470;
+  MailDetailResponse mailDetailResp = 471;
+  MailAwardResponse mailAwardResp = 472;
+  MailAwardRecordResponse mailAwardRecordResp = 473;
+
+  GuideSaveResponse guideSaveResp = 480;
+
+  BattlePassOpenResponse battlePassOpenResp = 490;
+  BattlePassAwardResponse battlePassAwardResp = 491;
+
+  ContractOpenResponse contractOpenResp = 495;
+  ContractAwardResponse contractAwardResp = 496;
+
+  SignedResponse signedResponse = 500;
+
+  CircularOpenResponse circularOpenResponse = 505;
+  CircularAwardResponse circularAwardResponse = 506;
+
+  ActivityOpenResponse activityOpenResp = 510;
+  ActivityDetailResponse activityDetailResp = 511;
+  ActivityRushResponse activityRushResp = 512;
+  ActivityWorldBossResponse worldBossResp = 513;
+  ActivityTMSupportResponse activityTMSupportResp = 514;
+  ActivityTMSupportAwardResponse activityTMSupportAwardResp = 515;
+  WorldBossRankResponse WorldBossRankResponse = 516;
+
+  DecomposeResponse decomposeResponse = 520;
+
+  /********************************************************/
+  /************* Chat服消息响应,分段号:1001~1100 ************/
+  /********************************************************/
+  ChatEnterResponse chatEnterResp = 1001;
+  SwitchPublicChannelResponse switchPublicChannelResp = 1002;
+  SpeakWordsRecordResponse speakWordsRecordResp = 1003;
+  GetPublicChannelResponse getPublicChannelResp = 1004;
+  JoinGuildChannelResponse joinGuildChannelResp = 1005;
+  PublicWordsNotify publicWordNotify = 1006;
+  GuildWordsNotify guildWordsNotify = 1007;
+  PrivateWordsNotify privateWordsNotify = 1008;
+  RoomWordsNotify roomWordsNotify = 1009;
+  ChatChannelJoinResponse chatChannelJoinResp = 1010;
+  ChatMessageNotify chatMessageNotify = 1011;
+
+  /********************************************************/
+  /*********** Cross服消息响应,分段号:1101~1500 ***********/
+  /********************************************************/
+  TreasureMapOpenResponse treasureMapOpenResp = 1101;
+  TreasureMapRefreshResponse treasureMapRefreshResp = 1102;
+  TreasureMapAwardResponse treasureMapAwardResp = 1103;
+  TreasureMapRecordResponse treasureMapRecordResp = 1104;
+  TreasureMapRecordDetailResponse treasureMapRecordDetailResp = 1105;
+  TreasureRoomEnterResponse treasureRoomEnterResp = 1106;
+  TreasureRoomRefreshResponse treasureRoomRefreshResp = 1107;
+  TreasureAreaEnterResponse treasureAreaEnterResp = 1108;
+  TreasureAreaQuitResponse treasureAreaQuitResp = 1109;
+  TreasureMapInviteCodeResponse treasureMapInviteCodeResp = 1110;
+  TreasureAreaLockResponse treasureAreaLockResp = 1111;
+  TreasureCardNotify treasureCardNotify = 1112;
+  TreasureAreaSelectCardResponse treasureAreaSelectCardResp = 1113;
+  TreasureAncientRankResponse treasureAncientRankResp = 1114;
+
+  FriendOpenResponse friendOpenResp = 1120;
+  FriendRecommendResponse friendRecommendResp = 1121;
+  FriendReqOpenResponse friendReqOpenResp = 1122;
+
+  FindPlayerInfoResponse findPlayerInfoResp = 1130;
+  CombatResurrectionResponse combatResurrectionResp = 1131;
+
+  GuildCreateResponse guildCreateResp = 1140;
+  GuildSearchResponse guildSearchResp = 1141;
+  GuildRefreshResponse guildRefreshResp = 1142;
+  GuildMemberResponse guildMemberResp = 1143;
+  GuildLogResponse guildLogResp = 1144;
+  GuildApplyListResponse guildApplyListResp = 1145;
+  GuildDetailResponse guildDetailResp = 1146;
+  GuildInfoGetResponse guildInfoGetResp = 1147;
+  GuildApplyResponse guildApplyResp = 1148;
+  GuildApplyConfirmResponse guildApplyConfirmResp = 1149;
+  GuildActivityRankResponse guildActivityRankResp = 1150;
+  GuildActivityResponse guildActivityResp = 1151;
+  GuildInfoNotify guildInfoNotify = 1152;
+
+  FightTogetherEnterRoomResponse fightTogetherEnterRoomResp = 1167;
+  FightTogetherCreateRoomResponse fightTogetherCreateRoomResp = 1168;
+  FightTogetherStateAlterNotify fightTogetherStateAlterNotify = 1169;
+  FightTogetherStartNotify fightTogetherStartNotify = 1170;
+  FightTogetherMatchRoomNotify fightTogetherMatchRoomNotify = 1171;
+  FightTogetherTeamAlterNotify fightTogetherTeamAlterNotify = 1172;
+  FightTogetherPlayerInfoNotify fightTogetherPlayerInfoNotify = 1173;
+  FightTogetherGetPlayerInfoResponse fightTogetherGetPlayerInfoResp = 1174;
+  FightTogetherBuffAlterNotify fightTogetherBuffAlterNotify = 1175;
+  FightTogetherFinishNotify fightTogetherFinishNotify = 1176;
+  FightTogetherOpenResponse fightTogetherOpenResp = 1177;
+  FightTogetherLeaveNotify fightTogetherLeaveNotify = 1178;
+  FightTogetherSearchResponse fightTogetherSearchResp = 1179;
+  FightTogetherGroupOpenResponse fightTogetherGroupOpenResp = 1180;
+  FightTogetherAllReadyNotify fightTogetherAllReadyNotify = 1181;
+}
+
+/* 游客用户注册响应 */
+message VisitorUserRegisterResponse {
+  // 账号ID
+  int64 accountId = 1;
+  // 账号密码
+  string password = 2;
+  // 最近登录的游戏服信息
+  GameServer lastGameSvr = 3;
+  // 登录token
+  string loginToken = 4;
+  // 登录时间
+  int64 loginTime = 5;
+  // 聊天服信息
+  ChatServer chatSvr = 6;
+  // 是否是测试版本
+  bool isTestVersion = 7;
+  // 公告内容
+  string content = 8;
+  // 是否可以进游戏
+  bool canEnter = 9;
+  // 公告持续时间,单位:秒
+  int32 durationTime = 10;
+  // 重置次数
+  int32 resetCount = 11;
+  // 合服游戏服信息列表
+  repeated GameServer mergeGameSvrs = 12;
+  // 玩家账号id
+  string playerId = 13;
+  // 是否是白名单
+  bool isWhite = 14;
+  // 账号封禁时间
+  int32 bannedTime = 15;
+  // 账号封禁理由
+  string bannedReason = 16;
+  // 是否实名认证
+  bool isRealName = 17;
+  // 会话ID
+  int64 sessionId = 18;
+}
+
+/* 游客用户登录响应 */
+message VisitorUserLoginResponse {
+  // 最近登录的角色ID
+  int64 lastRoleId = 1;
+  // 最近登录的游戏服信息
+  GameServer lastGameSvr = 2;
+  // 登录token
+  string loginToken = 3;
+  // 登录时间
+  int64 loginTime = 4;
+  // 绑定的googleUserId
+  string googleUserId = 5;
+  // 绑定的facebookUserId
+  string facebookUserId = 6;
+  // 绑定的appleUserId
+  string appleUserId = 7;
+  // 聊天服信息
+  ChatServer chatSvr = 8;
+  // 是否是测试版本
+  bool isTestVersion = 9;
+  // 公告内容
+  string content = 10;
+  // 是否可以进游戏
+  bool canEnter = 11;
+  // 公告持续时间,单位:秒
+  int32 durationTime = 12;
+  // 重置次数
+  int32 resetCount = 13;
+  // 合服游戏服信息列表
+  repeated GameServer mergeGameSvrs = 14;
+  // 是否是白名单
+  bool isWhite = 15;
+  // 是否实名认证
+  bool isRealName = 18;
+  // 账号ID
+  int64 accountId = 19;
+  // 玩家年龄
+  int32 age = 20;
+  // 会话ID
+  int64 sessionId = 21;
+}
+
+/* 平台用户注册响应 */
+message PlatformUserRegisterResponse {
+  // 账号ID
+  int64 accountId = 1;
+  // 最近登录的角色ID
+  int64 lastRoleId = 2;
+  // 最近登录的游戏服信息
+  GameServer lastGameSvr = 3;
+  // 登录token
+  string loginToken = 4;
+  // 聊天服信息
+  ChatServer chatSvr = 5;
+}
+
+/* 平台用户登录响应 */
+message PlatformUserLoginResponse {
+  // 最近登录的角色ID
+  int64 lastRoleId = 1;
+  // 最近登录的游戏服信息
+  GameServer lastGameSvr = 2;
+  // 登录token
+  string loginToken = 3;
+  // 登录时间
+  int64 loginTime = 4;
+  // 绑定的googleUserId
+  string googleUserId = 5;
+  // 绑定的facebookUserId
+  string facebookUserId = 6;
+  // 绑定的appleUserId
+  string appleUserId = 7;
+  // 账号ID
+  int64 accountId = 8;
+  // 账号密码
+  string password = 9;
+  // 聊天服信息
+  ChatServer chatSvr = 10;
+  // 是否是测试版本
+  bool isTestVersion = 11;
+  // 公告内容
+  string content = 12;
+  // 是否可以进游戏
+  bool canEnter = 13;
+  // 公告持续时间,单位:秒
+  int32 durationTime = 14;
+  // 合服游戏服信息列表
+  repeated GameServer mergeGameSvrs = 15;
+  // 角色等级
+  int32 roleLv = 16;
+  // 是否新角色
+  bool newRole = 17;
+  // 名字
+  string roleName = 18;
+  // 是否实名认证
+  bool isRealName = 19;
+  // 玩家年龄
+  int32 age = 20;
+  // 会话ID
+  int64 sessionId = 21;
+}
+
+/* 平台用户绑定响应 */
+message PlatformUserBindResponse {
+  // ...
+}
+
+/* 客户端配置获取响应 */
+message ClientConfigGetResponse {
+  // 资源地址
+  string assetsUrl = 1;
+  // 大版本号
+  int32 apkVer = 2;
+  // 资源版本号
+  int32 assetsVer = 3;
+  // 协议版本号
+  int32 protocolVer = 4;
+}
+
+/* 公告获取响应 */
+message AnnouncementGetResponse {
+  // 公告信息列表
+  repeated Announcement announcements = 1;
+}
+
+/* 服务器列表获取响应 */
+message ServerListGetResponse {
+  // 绑定的角色信息列表
+  repeated RoleSimpleInfo roles = 1;
+  // 全部游戏服信息列表
+  repeated GameServer gameSvrs = 2;
+}
+
+/* 游戏服登录响应 */
+message GameEnterResponse {
+  // 玩家ID
+  int64 playerId = 1;
+  // 玩家名字
+  string name = 2;
+  // 玩家头像
+  int32 icon = 3;
+  // 玩家等级
+  int32 level = 4;
+  // 是否是新角色
+  bool isNewRole = 5;
+  // 解锁的关卡列表
+  repeated int32 unlockStages = 6;
+  // 关卡信息
+  repeated Stage stages = 8;
+  // 英雄数据
+  repeated Hero heroes = 9;
+  // 秘石列表
+  repeated Gem gems = 10;
+  // 武器数据
+  repeated Weapon weapons = 11;
+  // 道具数据
+  repeated Item items = 12;
+  // 任务信息
+  repeated Task tasks = 13;
+  // 羁绊送礼次数
+  int32 GiveCount = 14;
+  // 羁绊下一次刷新时间
+  int64 NextRefreshTime = 15;
+  // 符文列表
+  repeated int32 runes = 16;
+  // 总充值
+  int32 totalRecharge = 17;
+  // 解锁的选拔赛进度
+  int32 unlockWarriorFinalistProgress = 18;
+  // 公会ID
+  int32 guildId = 19;
+  // 遗物列表
+  repeated Relic relics = 20;
+  // 图纸列表
+  repeated BluePrintInfo bluePrints = 21;
+  // 已领取的章节奖励ID列表
+  repeated int32 chapterRewards = 23;
+  // 每日经验上限 今日已获得经验
+  int32 GainedExpToday = 24;
+  // 铁匠铺等级
+  int32 forgeLv = 25;
+  // 当前通关章节
+  repeated int32 mainChapter = 26;
+  // 已开服天数
+  int32 openSrvDay = 27;
+  // 当日零点时间戳
+  int64 zeroTimestamp = 28;
+  // 图鉴信息
+  repeated Medal medals = 29;
+  // 新手任务 当前套
+  int32 newPlayerOder = 30;
+  // 新手任务 当前套是否领取
+  bool newPlayerOrderAward = 31;
+  // 选择的称号ID
+  int32 titleSelectId = 32;
+  // 新手引导信息列表
+  repeated Guide guides = 33;
+  // 通关塔
+  repeated int32 finishTower = 34;
+  // 塔对应解锁状态
+  repeated TowerChapter towerChapter = 35;
+  // 选择的头像框ID
+  int32 iconFrameSelectId = 36;
+  // 最大解锁英雄等级
+  int32 maxHeroLv = 37;
+  // 铁匠铺研发次数
+  int32 forgeResearchCount = 38;
+  // 喜欢的英雄列表
+  repeated int32 likeHeroes = 39;
+  // 签到信息
+  repeated Signed signed = 40;
+  // 当前战令信息
+  BattlePass battlePass = 41;
+  // 铁匠铺升级剩余时间
+  int64 forgeLvUpTime = 42;
+  // 会话ID
+  int64 sessionId = 43;
+  // 公告信息列表
+  repeated Announcement announcements = 44;
+  // 月卡信息
+  repeated Circular circulars = 45;
+  // 月卡购买ID表
+  repeated int32 circularIds = 46;
+  // 活动信息列表
+  repeated Activity activities = 47;
+}
+
+/* 游戏公告获取响应 */
+message GameAnnouncementGetResponse {
+  // 公告信息列表
+  repeated Announcement announcements = 1;
+}
+
+/* 英雄升级响应 */
+message HeroUpgradeResponse {
+  // 当前等级
+  int32 currLv = 1;
+  // 当前经验值
+  int32 currExp = 2;
+}
+
+/* 英雄觉醒响应 */
+message HeroAwakenResponse {
+  // 当前觉醒等级
+  int32 currAwakenLv = 1;
+}
+
+/* 道具使用响应 */
+message ItemUseResponse {
+  //  repeated Item items = 1;
+  // 获得关卡Buff
+  repeated StageBuff buffs = 2;
+}
+
+/* 道具出售响应 */
+message ItemSellResponse {
+  //  repeated Item items = 1;
+}
+
+/* 恢复体力值 */
+message PlayerRechargeResponse{
+  // 当前体力值
+  int32 strength = 1;
+  // 下次恢复体力时间
+  int64 nextRechargeTime = 2;
+}
+
+/* 体力购买响应 */
+message StrengthBuyResponse {
+  // 获得道具
+  //  repeated Item items = 1;
+}
+
+/* 小红点更新响应 */
+message RedDotUpdateResponse {
+  // 小红点信息
+  RedDot redDot = 1;
+}
+
+/* 主线关卡进入响应 */
+message MainStageEnterResponse {
+  // 关卡信息
+  Stage stage = 1;
+}
+
+/* 完成关卡机关响应 */
+message StageTrapCompleteResponse {
+  // ...
+}
+
+/* 完成关卡机关节点响应 */
+message StageTrapNodeCompleteResponse {
+  // 获得道具
+  repeated Item items = 1;
+  // 随机机关ID
+  int32 randomTrapId = 2;
+  // 同步关卡任务信息
+  repeated StageTask stageTasks = 3;
+  // 解锁的关卡列表
+  repeated int32 unlockStages = 4;
+  // 获得临时道具
+  //  repeated Item tempItems = 6;
+  // 获得关卡Buff
+  repeated StageBuff stageBuffs = 7;
+  // 机关信息
+  repeated Trap traps = 8;
+  // 机关节点信息
+  TrapNode trapNode = 9;
+  // 英雄属性改变
+  repeated StageHeroChange heroChanges = 11;
+  // 生命次数
+  int32 liftCnt = 12;
+  // 任务完成获得道具
+  repeated Item taskAwardItems = 13;
+  // 通关章节
+  repeated int32 mainChapter = 14;
+  // 复活英雄id
+  int32 resurrectionHeroId = 15;
+  // 移除buffID
+  repeated int32 removeBuffId = 16;
+  // 战斗英雄属性改变
+  repeated StageHeroChange combatHeroChanges = 17;
+  // 塔对应解锁状态
+  repeated TowerChapter towerChapter = 18;
+  // 最大解锁英雄等级
+  int32 maxHeroLv = 19;
+  // rogue强制退出
+  bool rogueForceQuit = 20;
+  // 是否死亡
+  bool isDead = 21;
+}
+
+/* 主线关卡退出响应 */
+message MainStageQuitResponse {
+  // 关卡星星数
+  repeated int32 star = 1;
+  // 解锁的关卡列表
+  repeated int32 unlockStages = 2;
+  // 收集完成数量
+  int32 collectCompleteCnt = 3;
+  // 收集总数量
+  int32 collectTotalCnt = 4;
+  // 任务完成数量
+  int32 taskCompleteCnt = 5;
+  // 任务总数量
+  int32 taskTotalCnt = 6;
+}
+
+/* 主线关卡预览响应 */
+message MainStagePreviewResponse {
+  // 关卡信息
+  Stage stage = 1;
+}
+
+/* 章节奖励领取响应 */
+message ChapterRewardResponse {
+  // 奖励道具
+  //  repeated Item items = 1;
+}
+
+/* 主动复活相应 */
+message StageResurrectResponse{
+  Stage stage = 1;
+  // 剩余复活次数
+  int32 liftCnt = 2;
+}
+
+/* 装备强化响应 */
+message EquipmentUpgradeResponse {
+  // 进阶装备ID
+  int32 equipmentId = 1;
+}
+
+/* 武器强化响应 */
+message WeaponUpgradeResponse {
+  // 当前等级
+  int32 currLv = 1;
+}
+
+/* 武器升星响应 */
+message WeaponAwakenResponse {
+  // 当前星级
+  int32 currStar = 1;
+}
+
+/* 遗物升级响应 */
+message RelicUpGradeResponse
+{
+  Relic relic = 1;
+  /*// 等级
+  int32 relicLv = 1;
+  // exp
+  int64 exp = 2;
+  // pid
+  int32 pid = 3;*/
+}
+
+/* 遗物升星响应 */
+message RelicUpStarResponse
+{
+
+}
+
+/* 遗物上锁响应 */
+message GeneralLockResponse{
+  bool isLock = 1;
+  // 上锁类型   1:武器  2:迷失  3:遗物
+  int32 type = 2;
+}
+
+/* 遗物装备响应 */
+message RelicEquipResponse
+{
+  // 是否成功
+  bool result = 1;
+  // 替换的遗物Id
+  int32 relicId = 2;
+}
+
+/* 遗物合成响应 */
+message RelicComposeResponse{
+  Relic info = 1;
+}
+
+/* 铁匠铺打开响应 */
+message ForgeOpenResponse{
+  // 铁匠铺等级
+  int32 forgeLv = 1;
+  // 加速时间戳
+  int64 speedUpTime = 2;
+  // 制造次数
+  int32 makeCount = 3;
+  // 研发次数
+  int32 researchCount = 4;
+  // 槽位信息
+  repeated ForgeSlot forgeSlots = 5;
+  // 加速标志位
+  bool speedUp = 6;
+  // 当前道具剩余时间
+  int64 speedItemTime = 7;
+  // 已研发完成图纸
+  repeated int32 completeResearchs = 8;
+  // 铁匠铺id
+  int32 forgeId = 9;
+  // 铁匠铺升级结束时间
+  int64 buildUpLVEndTime = 10;
+  // 图纸信息
+  repeated BluePrintInfo blueInfos = 11;
+}
+
+/* 铁匠铺研发响应 */
+message ForgeResearchResponse{
+  // 槽位id
+  int32 slotId = 1;
+
+  // 槽位新加任务信息
+  //  ForgeSlotTask  task = 2;
+  // 图纸信息
+  repeated BluePrintInfo blue = 2;
+}
+
+/* 铁匠铺制造响应 */
+message ForgeMakeResponse{
+  // 制造类型  1武器 2秘石
+  int32 makeType = 1;
+  // 武器
+  Weapon weapon = 2;
+  // 秘石
+  Gem gem = 3;
+}
+
+/* 铁匠铺加速响应 */
+message ForgeSpeedUpResponse{
+
+}
+
+/* 铁匠铺任务完成通知响应 */
+message ForgeAdviceResponse{
+  // 完成研发图纸
+  repeated int32 finishBluePrint = 1;
+  // 当前槽位信息
+  ForgeSlot forgeSlot = 2;
+}
+
+/* 铁匠铺槽位任务信息响应 */
+message ForgeSlotInfoResponse{
+  // 槽位信息
+  ForgeSlot forgeSlot = 1;
+}
+
+/* 铁匠铺升级响应 */
+message ForgeLvUpResponse{
+  // 升级需要时间
+  int64 endTime = 1;
+}
+
+/* 铁匠铺移除队列任务响应 */
+message ForgeRemoveResponse{
+  // 移除返回道具
+  repeated int32 returnItems = 1;
+  // 移除返回道具数量
+  repeated int32 returnItemsCount = 2;
+  // 移除后最后的图纸id
+  int32 removeLastId = 3;
+}
+
+/* 试炼之塔打开响应 */
+message TowerOpenResponse{
+  //试炼之塔信息
+  repeated TowerData towerData = 1;
+  // 排位剩余时间
+  int32 remainTime = 2;
+  // 当前赛季
+  int32 currentRank = 3;
+  // 赛季信息 (角色排名、排名列表)
+  TowerRank towerRank = 4;
+  // 赛季奖励道具
+  //  repeated Item rewardItem = 5;
+}
+
+/* 试炼之塔解锁塔响应 */
+message TowerUnLockResponse{
+  // 解锁标志位
+  bool flag = 1;
+  // 解锁图纸信息
+  BluePrintInfo bluePrintInfo = 2;
+  // 解锁塔信息
+  Tower unLockTower = 3;
+}
+
+/* 试炼之塔锁英雄响应 */
+message TowerLockHeroResponse{
+  TowerLevel towerLv = 1;
+}
+
+/* 试炼之塔解领取星级奖励 */
+message TowerRewardStarResponse{
+  // 已领取的星级奖励
+  repeated int32 rewardStar = 1;
+  // 本次领取获得奖励
+  //  repeated Item items = 2;
+}
+/* 试炼之塔清除关卡信息 */
+message TowerResetLvResponse{
+  // 清除标志位
+  bool flag = 1;
+}
+
+/* 符文升级响应 */
+message RuneUpgradeResponse {
+  // 当前符文ID
+  int32 currRuneId = 1;
+}
+
+/* 聊天服进入响应 */
+message ChatEnterResponse
+{
+  // 已进入的公共频道信息(世界、语言、公会频道)
+  repeated PublicChannel publicChannels = 1;
+  // 最近收到的发言信息(世界、语言、公会频道、私聊)
+  repeated SpeakWords lastSpeakWords = 2;
+  // UDP主机
+  string udpHost = 3;
+  // UDP端口
+  int32 udpPort = 4;
+}
+
+/* 切换公共频道响应 */
+message SwitchPublicChannelResponse
+{
+  // 最近发言信息
+  repeated SpeakWords words = 1;
+}
+
+/* 发言信息记录响应 */
+message SpeakWordsRecordResponse
+{
+  // 频道ID
+  int32 chanId = 1;
+  // 发言信息记录
+  repeated SpeakWords words = 2;
+}
+
+/* 取得公共频道信息响应 */
+message GetPublicChannelResponse
+{
+  // 公共频道信息
+  repeated PublicChannel publicChannels = 1;
+}
+
+/* 加入公会频道响应 */
+message JoinGuildChannelResponse
+{
+  // 公会频道最近发言信息
+  repeated SpeakWords guildWords = 1;
+}
+
+/* 聊天频道加入响应 */
+message ChatChannelJoinResponse
+{
+  // 频道信息
+  PublicChannel publicChannel = 1;
+  // 频道最近发言信息列表
+  repeated SpeakWords lastSpeakWords = 2;
+}
+
+/*羁绊升级响应*/
+message FetterUpResponse{
+  //羁绊等级
+  int32 fetterLv = 1;
+  //羁绊经验
+  int32 exp = 2;
+  //英雄id
+  int32 heroId = 3;
+
+  //发现喜欢物品的id
+  repeated int32 loveItems = 4;
+  //发现讨厌物品的id
+  repeated int32 hateItems = 5;
+  //下一次领取奖励刷新时间
+  int64  NextRefreshTime = 6;
+  //送礼次数
+  int32 GiveCount = 7;
+
+
+}
+/*羁绊奖励领取响应*/
+message FetterAwardResponse{
+
+  //  英雄id
+  int32 heroId = 1;
+  //  奖励领取情况
+  repeated int32 lastReadTimes = 3;
+  // 获得道具
+  //  repeated Item items = 4;
+  //  //发现喜欢物品的id
+  //  repeated int32 loveItems = 4;
+  //  //发现讨厌物品的id
+  //  repeated int32 hateItems = 5;
+}
+
+/* 藏宝图打开响应 */
+message TreasureMapOpenResponse
+{
+  // 藏宝图信息
+  repeated TreasureMap maps = 1;
+  // 藏宝图星星领奖信息
+  repeated TreasureStarAward starAwards = 2;
+}
+
+/* 藏宝图刷新响应 */
+message TreasureMapRefreshResponse
+{
+  // 藏宝图信息
+  repeated TreasureMap maps = 1;
+  // 藏宝图信息
+  repeated RoleSimpleInfo creatorPlayerInfos = 2;
+  // 藏宝图星星领奖信息
+  repeated TreasureStarAward starAwards = 3;
+}
+
+/* 藏宝图领奖响应 */
+message TreasureMapAwardResponse
+{
+  // 奖励道具
+  //  repeated Item items = 1;
+  // 是否有特殊奖励
+  bool awardHasSpecial = 2;
+  // 藏宝图星星领奖记录
+  TreasureStarAward starAward = 3;
+}
+
+/* 藏宝图历史记录响应 */
+message TreasureMapRecordResponse
+{
+  // 藏宝图信息
+  repeated TreasureMap maps = 1;
+}
+
+/* 藏宝图记录详情响应 */
+message TreasureMapRecordDetailResponse
+{
+  // 角色领奖信息
+  repeated RoleSimpleInfo roleInfos = 1;
+}
+
+/* 藏宝图房间进入响应 */
+message TreasureRoomEnterResponse
+{
+  // 藏宝图信息
+  TreasureMap map = 1;
+}
+
+/* 主线关卡进入响应 */
+message TreasureAreaEnterResponse {
+  // 关卡信息
+  Stage stage = 1;
+}
+
+/* 主线关卡退出响应 */
+message TreasureAreaQuitResponse {
+  // 道具信息
+  //  repeated Item items = 1;
+  // 获得buff卡
+  repeated int32 buffCards = 2;
+  // 任务奖励索引,从1开始
+  int32 taskRewardIndex = 3;
+  // 古代物品价值
+  int32 ancientValue = 4;
+}
+
+/* 藏宝图获取邀请码响应 */
+message TreasureMapInviteCodeResponse {
+  // 邀请码
+  int32 inviteCode = 1;
+}
+
+/* 藏宝图房间刷新响应 */
+message TreasureRoomRefreshResponse
+{
+  // 藏宝图信息
+  TreasureMap map = 1;
+}
+
+/* 藏宝图区域锁定响应 */
+message TreasureAreaLockResponse
+{
+  // 藏宝图信息
+  TreasureMap map = 1;
+}
+
+/* 藏宝图区域锁定响应 */
+message TreasureAreaSelectCardResponse
+{
+  // 新增关卡Buff道具
+  //  repeated Item buffItems = 1;
+}
+
+/* 藏宝图古代物品排行榜响应 */
+message TreasureAncientRankResponse
+{
+  // 自己古代遗物价值
+  int32 myAncientValue = 1;
+  // 排行榜玩家信息
+  repeated RoleSimpleInfo rankRoleInfo = 2;
+  // 排行奖励组ID
+  int32 rewardGroupId = 3;
+}
+
+// 好友打开
+message FriendOpenResponse {
+  repeated RoleSimpleInfo roleInfos = 1;
+}
+
+// 好友推荐
+message FriendRecommendResponse {
+  repeated RoleSimpleInfo roleInfos = 1;
+}
+
+// 好友申请打开
+message FriendReqOpenResponse {
+  repeated RoleSimpleInfo roleInfos = 1;
+}
+
+// 查询玩家信息
+message FindPlayerInfoResponse {
+  RoleSimpleInfo roleInfo = 1;
+}
+
+
+/*玩家消耗体力响应*/
+message PlayerExpendEnergyResponse
+{
+  //当前玩家体力
+  int32 curPlayerEnergy = 1;
+
+  //错误代码 0 是成功 1是体力不足
+  int32 errorCode = 2;
+
+  //是否升级
+  bool isLevelUp = 3;
+
+  //当前飞艇等级
+  int32 curAirShipLevel = 4;
+
+  //当前经验
+  int64 curEX = 5;
+
+}
+/*玩家改名相应 */
+message PlayerReNameResponse
+{
+  string newPlayerName = 1;
+
+  //错误代码 0 是成功 1是钻石不足
+  int32 errorCode = 2;
+
+}
+//战斗数据返回,返回玩家对应的战斗英雄数据
+message CombatStartResponse
+{
+  //自己的英雄数据,规避下以后成长系统带来的bug,开发模式需要客户端的数据和服务器的数据对比,如有异常需要排查
+  repeated HeroData myHeroData = 1;
+  //敌人的英雄数据(PVE可能目前不需要,暂时可以不用赋值)
+  repeated HeroData enemyHeroData = 2;
+  // 勇者排位赛BattleId
+  int32 rankBattleId = 3;
+  // 战斗随机数种子
+  int32 combatSeed = 4;
+  // 战斗ID
+  int64 combatId = 5;
+}
+
+//战斗完成的回调,更具不同的战斗类型赋值不同的战斗数据
+message CombatFinishResponse
+{
+  //  repeated Item items = 1;
+  // 生命次数
+  int32 liftCnt = 2;
+  // 当前关卡信息
+  Stage currStage = 3;
+  // 解锁的关卡列表
+  repeated int32 unlockStages = 6;
+  // 战斗剩余时间(单位:秒)
+  int32 remainTime = 7;
+  // 存活英雄数量
+  int32 remainHeroCnt = 8;
+  // 通关主线章节
+  repeated int32 mainChapter = 9;
+  // 当前层信息
+  TowerLevel towerLv = 10;
+  // 塔对应解锁状态
+  repeated TowerChapter towerChapter = 11;
+  // 最大解锁英雄等级
+  int32 maxHeroLv = 12;
+  // 关卡分数
+  WorldBossScore worldBossScore = 13;
+  // 通关难度
+  repeated int32  passDiff = 14;
+  // 藏宝图战斗丢失古代物品
+  repeated Item lossItems = 15;
+}
+
+/* 编辑阵容响应 */
+message TeamPresetEditResponse
+{
+  // 阵容ID
+  int32 presetId = 1;
+}
+
+/* 应用阵容响应 */
+message TeamPresetUseResponse
+{
+  // 关卡调整阵型计数
+  int32 stageFormationCnt = 1;
+  TeamPreset useTeamPreset = 2;
+}
+
+/* 阵容获取响应 */
+message TeamPresetFindResponse
+{
+  // 预设队伍信息
+  repeated TeamPreset teamPresets = 1;
+  // 队伍应用信息
+  TeamPreset useTeamPreset = 2;
+  // 队伍长度
+  int32 type = 3;
+}
+
+/* 特殊玩法布阵响应 */
+message TeamPresetSpecialResponse{
+  // 布阵
+  repeated TeamPreset teamPresets = 1;
+}
+
+/**
+  特殊玩法打开响应
+ */
+message TeamPresetSpecialOpenResponse{
+  repeated TeamSpecial teamSpecials = 1;
+}
+
+/* 招募打开响应 */
+message SummonOpenResponse
+{
+  // 招募信息列表
+  repeated Summon summons = 1;
+  // 招募刷新时间
+  int32 summonRefreshTime = 2;
+}
+
+/* 招募英雄和抽取武器响应 */
+message SummonResponse {
+  // 道具信息
+  //  repeated Item items = 1;
+  // 招募信息
+  Summon summon = 2;
+}
+
+/* 招募记录获取响应 */
+message SummonRecordGetResponse {
+  // 招募记录信息
+  repeated SummonRecord summonRecords = 1;
+  // 总页数
+  int32 totalPage = 2;
+}
+
+/* 商城打开响应 */
+message ShopOpenResponse {
+  // 商店信息
+  repeated Shop shops = 1;
+  // 首充双倍列表
+  repeated int32 firstChargeDouble = 2;
+}
+
+/* 商店商品取得响应 */
+message ShopItemGetResponse {
+  // 商店信息
+  Shop shop = 1;
+}
+
+/* 商店商品购买响应 */
+message ShopItemBuyResponse {
+  // 获得的道具
+  //  repeated Item items = 1;
+}
+
+/* 商店礼包购买响应 */
+message ShopGiftItemBuyResponse {
+  // 订单ID
+  string orderId = 1;
+}
+
+/* 商店刷新响应 */
+message ShopRefreshResponse {
+  // 商店信息
+  Shop shop = 1;
+}
+
+/* 基础副本打开响应 */
+message DuplicateOpenResponse{
+  // 副本信息
+  repeated Duplicate duplicates = 1;
+}
+
+/* 副本打开(带地图) */
+message DuplicateEnterResponse{
+  // 副本信息
+  repeated Duplicate duplicates = 1;
+  //机关信息
+  Stage stage = 2;
+}
+
+/* 资源副本退出(带地图) */
+message DuplicateQuitResponse{
+  // 副本信息
+  repeated Duplicate duplicates = 1;
+  //得到道具
+  //  repeated Item items = 2;
+}
+
+// 副本自动战斗响应
+message DuplicateAutoFightResponse {
+
+}
+
+
+/* 所有探索任务 */
+message ExploreTaskOpenResponse
+{
+  //所有任务信息
+  repeated ExploreTask exploreTasks = 1;
+  //酒馆等级
+  int32  exploreLv = 2;
+  //酒馆升级时间
+  int64 exploreUpTime = 3;
+  //酒馆任务完成次数
+  int32  taskOverCount = 4;
+}
+
+/* 探索任务开始响应 */
+message ExploreTaskStartResponse
+{
+  //任务信息
+  ExploreTask exploreTask = 1;
+}
+/*获取任务领奖响应*/
+message ExploreTaskAwardResponse
+{
+  // 任务奖励
+  repeated Item items = 1;
+  // 大成功奖励
+  repeated Item bigSuccessItems = 2;
+}
+
+/*探索任务接受响应*/
+message  ExploreTaskAcceptResponse
+{
+
+}
+/*酒馆升级响应*/
+message  ExploreLvUpResponse
+{
+  int64 upOverTime = 1;
+}
+
+/*获取商业建筑的数据响应*/
+message  MallBuildingGetDataResponse
+{
+  //对应的建筑数据
+  repeated MallBuildingData mallBuildingDatas = 1;
+
+}
+
+message MallBuildingSetWorkHeroResponse
+{
+  MallBuildingData mallBuildingData = 1;
+}
+
+/*获取商业建筑打工奖励响应*/
+message MallBuildingGetWorkAwardResponse
+{
+  //工作奖励
+  //  repeated Item workAward = 1;
+
+  MallBuildingData mallBuildingData = 2;
+
+}
+
+/* 打工数据获取响应 */
+message WorkDataGetResponse {
+  // 打工建筑信息
+  repeated WorkBuilding workBuildings = 1;
+  // 打工Buff信息
+  repeated WorkBuff workBuffs = 2;
+  // 存储的道具
+  repeated Item storageItems = 3;
+  // 存储的时间
+  int32 storageTime = 4;
+}
+
+/* 打工英雄设置响应 */
+message WorkHeroSetResponse {
+  // 设置英雄的建筑信息
+  WorkBuilding workBuilding = 1;
+}
+
+/* 打工英雄一键设置响应 */
+message WorkHeroSetAllResponse {
+  // 打工建筑信息
+  repeated WorkBuilding workBuildings = 1;
+}
+
+/* 打工奖励获取响应 */
+message WorkAwardGetResponse {
+  // 奖励道具
+  //  repeated Item items = 1;
+}
+
+/* 打工Buff兑换响应 */
+message WorkBuffBuyResponse {
+  // 兑换的Buff
+  WorkBuff workBuff = 1;
+  // 打工建筑信息
+  repeated WorkBuilding workBuildings = 2;
+}
+
+/*
+战斗复活
+ */
+message CombatResurrectionResponse
+{
+  bool isOk = 1;
+}
+
+// 成就打开响应
+message AchievementOpenResponse
+{
+  // 成就已领奖的列表
+  repeated int32 achievementAwardIds = 1;
+}
+
+// 成就领取响应
+message AchievementAwardResponse
+{
+  //  repeated Item items = 1;
+}
+
+// 勇士选拔赛打开界面
+message  WarriorOpenResponse
+{
+  int32 progress = 1; //入围赛进度
+  int32 rankSeason = 2; //第几赛季
+  int32 refreshTime = 3; //刷新时间
+  int32 rankNumber = 4; //排名
+  int32 rankScore = 5;  //分数
+  repeated WarriorRankData allRankLayers = 6;//排位赛所有信息
+  int32 lastRankLayer = 7; //上次排位赛层数
+  int64 playerEnergy = 8; //玩家体力
+}
+
+// 勇士选拔赛打开排行榜界面
+message  WarriorOpenRankListResponse
+{
+  repeated RoleSimpleInfo allPlayerInfos = 1;
+  int32 myScore = 2;
+  int32 myRankNumber = 3;
+}
+
+/* 获取喜欢英雄列表响应*/
+message  GetLikeHeroListResponse
+{
+  //英雄列表
+  repeated int32  heroIds = 1;
+}
+
+/* 公会创建响应 */
+message GuildCreateResponse
+{
+  // 公会信息
+  GuildInfo guildInfo = 1;
+  // 公会成员信息
+  MemberInfo memberInfo = 2;
+}
+
+/* 公会搜索响应 */
+message GuildSearchResponse
+{
+  // 公会信息列表
+  repeated GuildInfo guildInfos = 1;
+}
+
+/* 公会刷新响应 */
+message GuildRefreshResponse
+{
+  // 公会信息列表
+  repeated GuildInfo guildInfos = 1;
+}
+
+/* 公会详细信息响应 */
+message GuildDetailResponse
+{
+  // 公会详细信息
+  GuildInfo guildInfo = 1;
+  // 公会成员列表
+  repeated MemberInfo memberInfos = 2;
+}
+
+/* 公会成员响应 */
+message GuildMemberResponse
+{
+  // 公会成员列表
+  repeated MemberInfo memberInfos = 1;
+}
+
+/* 公会日志响应 */
+message GuildLogResponse
+{
+  // 公会日志列表
+  repeated GuildLog guildLogs = 1;
+  // 总页数
+  int32 totalPage = 2;
+}
+
+/* 公会申请列表响应 */
+message GuildApplyListResponse
+{
+  // 公会申请角色信息列表
+  repeated RoleSimpleInfo roleInfos = 1;
+}
+
+/* 公会信息取得响应 */
+message GuildInfoGetResponse
+{
+  // 公会信息
+  GuildInfo guildInfo = 1;
+  // 公会成员信息
+  repeated MemberInfo memberInfos = 2;
+}
+
+/* 公会申请响应 */
+message GuildApplyResponse
+{
+  // 如果公会自由加入,返回公会信息
+  GuildInfo guildInfo = 1;
+}
+
+/* 公会申请确认响应 */
+message GuildApplyConfirmResponse
+{
+  // 成功的申请ID列表
+  repeated int64 okApplyIds = 1;
+}
+
+/* 公会活动排行榜信息 */
+message GuildActivityRankResponse{
+  int32 guildRank = 1;
+  int32 guildGold = 2;
+  int32 guildSilver = 3;
+  int32 guildBronze = 4;
+  repeated RoleSimpleInfo roleSimples = 5;
+}
+
+/* 公会活动信息 */
+message GuildActivityResponse{
+  repeated int32 activityIds = 1;
+}
+
+/* 共斗进入房间响应 */
+message FightTogetherEnterRoomResponse
+{
+  // 房间ID
+  int32 roomId = 1;
+  // 房间内玩家信息
+  repeated FightTogetherPlayerInfo FightTogetherPlayerInfo = 2;
+  // 房间进入限制 1=私密房间 2=公开房间 4=好友可见 8=公会成员可见
+  int32 limit = 3;
+  // 房主玩家ID
+  int64 ownerPlayerId = 4;
+}
+
+/* 共斗创建房间响应 */
+message FightTogetherCreateRoomResponse
+{
+  // 房间ID
+  int32 roomId = 1;
+}
+
+/* 共斗获取玩家信息响应 */
+message FightTogetherGetPlayerInfoResponse
+{
+  FightTogetherPlayerInfo fightTogetherPlayerInfo = 1;
+}
+
+/* 共斗界面打开响应 */
+message FightTogetherOpenResponse
+{
+  // 共斗信息
+  repeated FightTogether fightTogether = 1;
+}
+
+/* 共斗房间搜索响应 */
+message FightTogetherSearchResponse
+{
+  // 共斗房间信息
+  repeated FightTogetherRoom rooms = 1;
+  // 房主角色信息
+  repeated RoleSimpleInfo ownerPlayerInfo = 2;
+}
+
+/* 共斗BOSS组打开响应 */
+message FightTogetherGroupOpenResponse
+{
+  // 各个BOSS在线人数
+  repeated int32 onlineNums = 1;
+}
+
+/* 单人训练打开响应 */
+message RogueLikeOpenResponse{
+  repeated RogueLike rogueLikes = 1;
+
+  // 当前赛季
+  int32 currentSeason = 2;
+
+  // 本赛季剩余时间
+  int64 remainder = 3;
+
+  // 本期已获取代币数量
+  repeated int32 currentToken = 4;
+
+  // 排行榜信息
+  RogueRank rogueRank = 5;
+
+  // 当前周
+  repeated int32 rogueRankWeekId = 6;
+
+  // 本期道具刷新时间剩余
+  int64  remainTimeWeek = 7;
+}
+
+/* 单人训练开始响应 */
+message RogueLikeEnterResponse{
+  // mapId
+  int32 mapId = 1;
+  // 英雄属性
+  int32 rogueMapId = 2;
+  // 关卡信息
+  Stage stage = 3;
+  // 节点地图池组
+  repeated int32 randomNode = 4;
+  // 下张地图
+  repeated int32 nextMapId = 5;
+  // 复活次数
+  int32 riseCnt = 6;
+  // 随机种子
+  int32 randomSeed = 7;
+  // 是否刷新周期 标准
+  bool isRefresh = 8;
+  // 当前节点id
+  int32 currentNodeId = 9;
+}
+
+/* 单人训练节点切换 */
+message RogueLikeChangeNodeResponse{
+  Stage stage = 1;
+  // mapId
+  int32 mapId = 2;
+  // 英雄属性
+  int32 rogueMapId = 3;
+  // 下个节点地图ID信息
+  repeated int32 nextRogueMapId = 4;
+  // 节点地图池组
+  repeated int32 randomNode = 5;
+  // 复活次数
+  int32  reliveCount = 6;
+  // 营地数量
+  int32 campsiteCount = 7;
+  // 当前节点Order
+  int32 currentOrder = 8;
+}
+
+/* 单人训练退出响应 */
+message RogueLikeQuitResponse{
+  // 获得道具
+  //  repeated Item items = 1;
+
+  // 完成节点值
+  int32 finishNode = 2;
+
+  // 勋章数量
+  int32 medalNum = 3;
+
+  // 赛季指标
+  int32 indexSeason = 4;
+
+  // 宝箱数量
+  int32 boxNum = 5;
+
+  // 营地数量
+  int32 campsiteCount = 6;
+
+  // 退出时最大等级
+  int32 quitMaxLv = 7;
+}
+
+
+/* 单人训练打开复活响应 */
+message RogueLikeResurrectionResponse{
+  // 英雄复活属性
+  repeated StageHeroChange stageHeroChanges = 1;
+}
+
+/* 单人训练成就打开请求 */
+message RogueLikeAchieveOpenResponse{
+  repeated Task tasks = 1;
+  repeated int32 achieveWard = 2;
+}
+
+/* 单人训练成就领取奖励 */
+message RogueLikeAchieveAwardResponse{
+  // 成就奖励
+  //  repeated Item items = 1;
+}
+
+/* 拟态科技打开 */
+message RogueLikeMimicryOpenResponse{
+  // 已购买skill
+  repeated RogueMimicry rogueMimicries = 1;
+  // 上限
+  int32 limitValue = 2;
+}
+
+/* 单人训练重置拟态  */
+message RogueLikeMimicryResetResponse{
+  // 降级返回的道具
+  //  repeated Item addItem = 1;
+}
+
+/* 单人训练重置拟态升级降级  */
+message RogueLikeMimicryLvResponse{
+  // 降级返回的道具
+  //  repeated Item addItem = 1;
+  RogueMimicry rogueMimicry = 2;
+}
+
+/* 任务打开响应 */
+message TaskOpenResponse {
+  // 积分领奖信息
+  repeated TaskScoreAward scoreAwards = 1;
+  // 日常刷新时间
+  int32 taskDailyRefreshTime = 2;
+  // 周常刷新时间
+  int32 taskWeeklyRefreshTime = 3;
+}
+
+/* 任务领奖响应 */
+message TaskAwardResponse {
+  // 奖励道具
+  //  repeated Item items = 1;
+  // 领奖的任务ID
+  repeated int32 awardTaskId = 2;
+  // 新手任务翻页  页数
+  int32 nextPage = 3;
+}
+
+/* 任务积分领奖响应 */
+message TaskScoreAwardResponse {
+  // 奖励道具
+  //  repeated Item items = 1;
+}
+
+/* 新手任务打开响应 */
+message TaskNewOpenResponse{
+  // 新手任务
+  repeated NewTaskDay newTaskDays = 1;
+  // 当前天
+  int32 currentDay = 2;
+  // 领取大奖资格
+  bool grandPrize = 3;
+  // 刷新时间
+  int64 refreshTime = 4;
+}
+
+/* 新手任务积分领取奖励响应 */
+message TaskNewScoreAwardResponse{
+  // 奖励道具
+  //  repeated Item items = 1;
+  // 是否解锁下页(解锁才会返回)
+  int32 unlockPage = 2;
+  // 该套完成
+  bool orderFinish = 3;
+  // 领取大奖资格
+  bool grandPrize = 4;
+}
+
+/* 图鉴打开响应 */
+message MedalOpenResponse{
+  repeated Medal medal = 1;
+}
+
+/* 图鉴领取响应 */
+message MedalAwardResponse{
+  // 图鉴ID
+  int32 id = 1;
+  // 领取后图鉴等级
+  int32 level = 2;
+  // 领取后经验
+  int32 exp = 3;
+  // 领取后分类完成条目总数量
+  int32 doneCnt = 4;
+  // 领取条目ID
+  repeated PicGroup picGroup = 5;
+  // 已领取羁绊
+  repeated Trammels awardTrammel = 6;
+  // 该分页领取后数量
+  int32 awardCnt = 7;
+  // 奖励道具
+  //  repeated Item items = 8;
+  // 该类领取后的所有条目
+  repeated int32 isAwardList = 9;
+}
+
+/* 称号打开响应 */
+message TitleOpenResponse {
+  // 称号信息列表
+  repeated Title titles = 1;
+}
+
+/* 头像框打开响应 */
+message IconFrameOpenResponse {
+  // 头像框信息列表
+  repeated IconFrame iconFrames = 1;
+}
+
+/* 邮箱打开响应 */
+message MailBoxOpenResponse {
+  // 邮件信息列表
+  repeated Mail mails = 1;
+}
+
+/* 邮件详细响应 */
+message MailDetailResponse {
+  // 邮件信息
+  Mail mails = 1;
+}
+
+/* 邮箱领奖响应 */
+message MailAwardResponse {
+  // 奖励道具
+  //  repeated Item items = 1;
+  // 领奖的邮件ID列表
+  repeated int64 awardMailIds = 2;
+}
+
+/* 邮箱领奖记录响应 */
+message MailAwardRecordResponse {
+  // 邮件信息列表
+  repeated Mail mails = 1;
+}
+
+/* 新手引导保存响应 */
+message GuideSaveResponse {
+  // 奖励道具
+  //  repeated Item items = 1;
+}
+
+/* 战令打开响应 */
+message BattlePassOpenResponse {
+  // 当前战令信息
+  BattlePass battlePass = 1;
+}
+
+/* 战令领奖响应 */
+message BattlePassAwardResponse {
+  // 领取奖励
+  //  repeated Item items = 1;
+}
+
+/* 契约打开请求 */
+message ContractOpenResponse{
+  // 所有的契约信息列表
+  repeated Contract contract = 1;
+}
+
+/* 契约奖励领取 */
+message ContractAwardResponse{
+
+}
+
+/* 签到响应 */
+message SignedResponse{
+  Signed signed = 1;
+}
+
+/* 月卡打开请求 */
+message CircularOpenResponse{
+  repeated Circular circular = 2;
+}
+
+/* 月卡领取 */
+message CircularAwardResponse{
+  Circular circular = 1;
+}
+
+/* 活动打开响应 */
+message ActivityOpenResponse{
+  // 活动信息列表
+  repeated Activity activities = 1;
+}
+
+/* 活动详细信息响应 */
+message ActivityDetailResponse{
+  // 活动详细信息
+  Activity activity = 1;
+}
+
+/* 活动冲刺响应 */
+message ActivityRushResponse{
+  // 活动冲刺
+  repeated ActivityRush activityRush = 1;
+}
+
+/* 世界boss踢榜 */
+message ActivityWorldBossResponse{
+  // 世界boss
+  WorldBoss worldBoss = 1;
+}
+
+/* 活动藏宝图赞助响应 */
+message ActivityTMSupportResponse {
+  // 赞助信息
+  TMSupport support = 1;
+}
+
+/* 活动藏宝图赞助领奖响应 */
+message ActivityTMSupportAwardResponse {
+  // 已领奖等级
+  int32 hasAwardLv = 1;
+}
+
+message WorldBossRankResponse{
+  WorldBossRank worldBossRank = 1;
+  WorldBossGuildRank worldGuildRank = 2;
+  GuildRank beforeGuildRank = 3;
+  GuildRank guildRank = 4;
+}
+
+/* 遗物分解请求 */
+message DecomposeResponse{
+
+}

+ 1515 - 0
NetCore/Protocol/Protobuf/ProtoMessge/MsgStruct.proto

@@ -0,0 +1,1515 @@
+syntax = "proto3";
+import "MsgEnum.proto";
+
+package com.fort23.protocol.protobuf;
+// option java_outer_classname = "MsgStruct";
+// option java_multiple_files = true;
+
+//**********************
+// 其他消息公用的结构体
+//**********************
+/* 扩展参数 */
+message ExtraParam {
+  // int32参数列表
+  repeated int32 intParams = 1;
+  // long参数列表
+  repeated int64 longParams = 2;
+  // string参数列表
+  repeated string stringParams = 3;
+  // bool参数列表
+  repeated bool boolParams = 4;
+  // 请求字节数组
+  bytes reqData = 5;
+}
+
+/* Game服信息 */
+message GameServer {
+  int32 id = 1;
+  // 服务器状态 0=关闭(维护中) 1=开启(维护中) 2=开放(正常) 3=繁忙
+  int32 state = 2;
+  // 网关服地址
+  string gatewayAddr = 3;
+  // 不能注册
+  bool unregistrable = 4;
+  // 合服后名称
+  string mergeName = 6;
+  // 区域名称
+  string areaName = 7;
+}
+
+/* 公告信息 */
+message Announcement {
+  // 公告标题
+  string title = 1;
+  // 公告内容
+  string content = 2;
+  // 是否可以跳过公告
+  bool isCanSkip = 3;
+  // 公告持续时间,单位:秒
+  int32 durationTime = 4;
+  // 公告类型 0=维护更新 1=游戏公告 2=运营公告
+  int32 type = 5;
+  // 显示排序(降序)
+  int32 sort = 6;
+}
+
+/* Chat服信息 */
+message ChatServer {
+  int32 id = 1;
+  string host = 2;
+  int32 port = 3;
+  int32 state = 4;
+}
+
+/* 角色简单信息 */
+message RoleSimpleInfo {
+  int64 id = 1;
+  int32 gameId = 2;
+  string name = 3;
+  int32 level = 4;
+  int32 icon = 5;
+  int32 lastLogoutTime = 6;
+  bool isFriend = 7;
+  bool isSendFriendReq = 8;
+  // 藏宝图区域索引,从1开始
+  int32 treasureAreaIndex = 9;
+  // 没有选择区域,踢出藏宝图时间
+  int32 treasureKickOutTime = 10;
+  // 藏宝图领取奖励道具
+  repeated Item treasureAwardItems = 11;
+  // 常用英雄列表
+  repeated Hero commonHeroes = 12;
+  // 好友显示索引,逆序,最大的放在最前面
+  int32 index = 13;
+  // 排位赛分数
+  int32 rankScore = 14;
+  // 藏宝图是否获得特殊奖励
+  bool isSpecialTreasureAward = 15;
+  // 角色签名
+  string leaveMessage = 16;
+  // 藏宝图区域任务奖励(掉落组ID)
+  int32 treasureAreaTaskAward = 17;
+  // 称号ID
+  int32 titleId = 18;
+  // 图鉴信息
+  repeated Medal medals = 19;
+  // 公会ID
+  int32 guildId = 20;
+  // 公会ICON
+  int32 guildIcon = 21;
+  // 公会名称
+  string guildName = 22;
+  // 头像框ID
+  int32 iconFrameId = 23;
+  // 世界boss
+  int64 worldBossScore = 24; // 赛季总分
+  int64 todayScore = 25;  // 进入分数
+  repeated int32 challengeBoss = 26; // 挑战boss
+  // 古代物品价值
+  int32 ancientValue = 27;
+  // 排行榜排名
+  int32 rank = 28;
+  // 队伍战斗力
+  int64 teamPower= 29;
+  // 藏宝图区域ID
+  int32 treasureAreaId = 30;
+}
+
+
+// 试炼之塔排名信息
+message RogueRankRoleInfo{
+  int64 id = 1;
+  int32 gameId = 2;
+  string name = 3;
+  int32 icon = 4;
+  int32 rogueSeason = 5;
+  int32 rogueIndex = 6; // 赛季指标
+  int32 rogueRankRefresh = 7;  // 最后刷新时间
+  int32 rankScore = 8; // 排位赛分数
+  int32 ranking = 9; // 排名
+  int32 rankRewardId = 10; // 排名奖励
+  int32 rogueLv = 11;  // 最大层数
+  int32 rogueLvDiff = 12; // 最大层数难度
+}
+
+// 试炼之塔排名信息
+message TowerRankRoleInfo{
+  int64 id = 1;
+  int32 gameId = 2;
+  string name = 3;
+  int32 icon = 4;
+  int32 towerSeason = 5;
+  int32 towerStar = 6; // 星级
+  int32 towerRankRefresh = 7;  // 最后刷新时间
+  int32 rankScore = 8; // 排位赛分数
+  int32 ranking = 9; // 排名
+  int32 rankRewardId = 10; // 排名奖励
+}
+
+
+///* 小红点信息 */
+//message Sign {
+//  SignType signType = 1;
+//  int32 signCnt = 2;
+//}
+
+/* 月卡 */
+message Circular{
+  // 月卡ID
+  int32  circularId = 1;
+  // 剩余时间
+  int64  remainTime = 2;
+  // 购买次数
+  int32 buyCnt = 3;
+  // 今日是否领取  true 已领取 false 未领取
+  bool isReceive = 4;
+  // 月卡剩余次数
+  int32 remainCnt = 5;
+}
+
+/* 契约 */
+message Contract{
+  // 契约ID
+  int32 contractId = 1;
+  // 是否解锁  false解锁  true锁定
+  bool lock = 2;
+  // 针对活动剩余时间
+  int64 remainTime = 3;
+  // 免费奖励领取ID
+  repeated int32 freeAwardId = 4;
+  // 付费奖励领取ID
+  repeated int32 awardId = 5;
+  // 付费状态 0 未充值  1 充值
+  int32 payStatus = 6;
+  // 当前值
+  int32 currentValue = 7;
+}
+
+/* 道具信息 */
+message Item
+{
+  // 道具ID(数值道具同configId)
+  int32 id = 1;
+  // 道具配置ID
+  int32 configId = 2;
+  // 道具数量
+  int64 count = 3;
+  // 英雄信息
+  Hero hero = 4;
+  // 武器信息
+  Weapon weapon = 5;
+  // 遗物信息
+  Relic relic = 6;
+  // 冒险关卡的Buff
+  StageBuff stageBuff = 7;
+  // 称号信息
+  Title title = 8;
+  // 头像框信息
+  IconFrame iconFrame = 9;
+  // 秘石
+  Gem gem = 10;
+  // 图纸
+  BluePrintInfo bluePrintInfo = 11;
+}
+
+/* 英雄信息 */
+message Hero
+{
+  // 英雄ID
+  int32 id = 1;
+  // 英雄等级
+  int32 level = 2;
+  // 英雄经验值
+  int32 exp = 3;
+  // 觉醒等级
+  int32 awakenLevel = 4;
+  // 英雄随身装备
+  repeated Equipment equipment = 5;
+  // 英雄装备秘石ID
+  int32 equipGemId = 6;
+  // 英雄装备武器ID
+  int32 equipWeaponId = 7;
+  //英雄羁绊等级
+  int32 friendShipLv = 8;
+  //羁绊经验值
+  int32 fetterExp = 9;
+  //羁绊领取情况
+  repeated int32 lastReadTimes = 10;
+  //已发现的喜欢物品
+  repeated int32 loveItems = 12;
+  //已发现讨厌的物品
+  repeated int32 hateItems = 13;
+  // 英雄装备遗物列表
+  repeated int32 equipRelics = 14;
+  // 默认武器ID
+  int32 defaultWeaponId = 15;
+}
+
+/* 装备信息 */
+message Equipment
+{
+  // 装备ID
+  int32 id = 1;
+  // 装备类型, 1=头盔 2=衣服 3=手腕
+  EquipmentType type = 2;
+  // 装备等级
+  int32 level = 3;
+}
+
+/* 武器信息 */
+message Weapon
+{
+  // 武器ID
+  int32 id = 1;
+  // 武器等级
+  int32 level = 2;
+  // 武器星级
+  int32 star = 3;
+  // 武器装备的英雄ID
+  int32 equipHeroId = 4;
+  // 武器对应图纸GUID
+  int32 bluePrintId = 5;
+  // 是否上锁
+  bool lock = 6;
+  // 武器道具Id
+  int32 weaponItemId = 7;
+}
+
+/* 单人训练 */
+message RogueLike{
+  // 单人训练类型
+  int32 rogueType = 1;
+
+  // 已首次通关难度
+  repeated int32 firstPass = 2;
+
+  // 上次挑战关卡(暂存)
+  int32  lastStage = 3;
+
+  // 上次挑战关卡节点
+  int32 lastStageNode = 4;
+
+  // 是否能够重进  主要判断复活次数  是否足够
+  bool isReEnter = 5;
+
+  // 层数奖励
+  repeated int32 tierCount = 6;
+
+  // 宝箱奖励数量
+  int32 boxCount = 7;
+
+  // 最大通关层数
+  int32 maxLevel = 8;
+
+  // 标准模式 剩余时间
+  int64 remainTime = 9;
+
+  // 营地数量
+  int32 campsiteCount = 10;
+
+  // 解锁最大难度
+  int32 unLockDiff = 11;
+
+  // 标准模拟当前等级
+  int32 currentLv = 12;
+
+  // 是否刷新
+  bool  isRefresh = 13;
+}
+
+/* 单人训练 拟态科技 */
+message RogueMimicry{
+  int32 rogueSkillId = 1;
+  int32 mimicryLv = 2;
+}
+
+/* 排名信息 */
+message RogueRank{
+  // 角色简单信息
+  repeated RogueRankRoleInfo roguerRankRoles = 1;
+
+  // 当前角色信息
+  RogueRankRoleInfo myRankInfo = 2;
+
+  // 距离下次刷新时间
+  int64 nextRefreshTime = 3;
+}
+
+/* 排名信息 */
+message TowerRank{
+  // 角色简单信息
+  repeated TowerRankRoleInfo towerRankRoles = 1;
+
+  // 当前角色信息
+  TowerRankRoleInfo myRankInfo = 2;
+
+  // 战斗最强阵容
+  repeated TowerScoreLv towerScoreLv = 3;
+}
+
+/**
+  塔对应解锁状态
+ */
+message TowerChapter{
+  // 塔id
+  int32 towerId = 1;
+  // 塔状态  0 未解锁 1 已解锁 2 已完成
+  int32 towerStatus = 2;
+  // 塔对应章节
+  int32 towerChapterId = 3;
+}
+
+/**
+  排名信息  每层最高分数已经 阵容 神器
+ */
+message TowerScoreLv{
+  // levelBattleId
+  int32 battleId = 1;
+  // 玩家id
+  int64 playerId = 2;
+  // 所属服务器
+  int32 srvId = 3;
+  // 名称
+  string name = 4;
+  // 头像
+  int32 icon = 5;
+  // 阵容
+  repeated int32 heros = 6;
+  // 神器id
+  int32 relicId = 7;
+  // 分数
+  int32  towerScore = 8;
+  // 用时
+  int32 towerTime = 9;
+}
+
+message TowerData{
+  // 塔类型 区分1主线、2时光、3轮回
+  int32 towerType = 1;
+  repeated Tower towers = 2;
+  int32 unLockTower = 3;// 最新解锁塔id
+  // 赛季塔  是否结束 结束3  结算中2 进行中 1
+  int32 towerSeason = 4;
+  // 系列塔是否解锁
+  bool isLock = 5;
+}
+
+/* 塔信息 */
+message Tower{
+  // 塔每层信息
+  repeated TowerLevel towerLevel = 1;
+  // 塔总星级
+  int32 towerAllStar = 2;
+  // 已领取星星奖励数组
+  repeated int32 rewardStarIds = 3;
+  // 塔类型 区分1主线、2时光、3轮回
+  int32 towerType = 4;
+  // 塔ID
+  int32 towerId = 5;
+  // 达成条件未领取的星星奖励
+  repeated int32 unclaimed = 6;
+  // 标记第一个未满星的层
+  int32 notFullStarLv = 7;
+  // 该塔是否完成
+  bool finishFlag = 8;
+  // 神器id
+  int32  towerRelicId = 9;
+}
+
+/* 塔层级信息 */
+message TowerLevel{
+  // 该层星级
+  int32 star = 1;
+  // 已达成星级条件
+  repeated TowerStarType starType = 2;
+  // 层id
+  int32 levelId = 3;
+  // 已锁定英雄
+  repeated TowerLvLockHero lockHero = 4;
+  // 可选  锁英雄
+  repeated int32 checkHeros = 5;
+  // 该层已通关战斗索引
+  repeated int32 finishCombatIndex = 6;
+  // 该层战斗分数
+  repeated int32 towerScore = 7;
+  // 该层已扣除体力战斗索引
+  repeated int32 combatStrengthIndex = 8;
+  // 该层是否完成所有战斗
+  bool finishAllCombat = 9;
+}
+
+// 每层战斗锁英雄
+message TowerLvLockHero{
+  // 战斗索引
+  int32 index = 1;
+  // 锁英雄
+  repeated int32 lockHeroIds = 2;
+}
+
+// 塔层战斗星级
+message TowerStarType{
+  int32 index = 1;
+  repeated int32 starType = 2;
+}
+
+/* 秘石信息 */
+message Gem
+{
+  // 秘石ID
+  int32 id = 1;
+  // 秘石对应图纸ID
+  int32 blueprintId = 2;
+  // 是否上锁
+  bool isLock = 3;
+  // 装备英雄
+  int32 equipHeroId = 4;
+  // 秘石道具ID
+  int32 gemItemId = 5;
+  // 技能id
+  repeated int32 skillIds = 6;
+  // 秘石对应gemId
+  int32 gemConfigId = 7;
+}
+
+/* 铁匠铺槽位信息 */
+message ForgeSlot{
+  // 槽位id
+  int32 forgeSlotId = 1;
+  // 任务队列
+  repeated ForgeSlotTask tasks = 2;
+  // 任务开始加速时间
+  int64 speedUpTime = 3;
+}
+
+/* 槽位任务 */
+message ForgeSlotTask{
+  // 任务标志位 0进行中 1等待中 2完成
+  int32 taskFlag = 1;
+  // 任务剩余时间
+  float remainder = 2;
+  // 研究图纸id
+  int32 bluePrintId = 3;
+  // 预计任务结束时间
+  int64 taskEndTime = 4;
+  // 任务加速状态
+  bool taskSpeedFlag = 5;
+  // 任务开始加速时间
+  int64 taskSpeedTime = 6;
+  // 当前研发图纸上级图纸
+  int32 beforeBluePrint = 7;
+}
+
+message TeamSpecial{
+  int32 type = 1;
+  TeamPreset teamPreset = 2;
+}
+
+/* 遗物信息 */
+message Relic
+{
+  // 唯一ID
+  int32 guid = 1;
+  // 物品ID
+  int32 itemId = 2;
+  // 数量
+  int64 count = 3;
+  // 等级
+  int32 level = 4;
+  // 经验
+  int64 exp = 5;
+  // 装备的英雄ID
+  int32 equipHeroId = 6;
+  // 星级
+  int32 star = 7;
+  // 品质
+  int32 quality = 8;
+  // 基础强度ID
+  int32 basicPowerID = 9;
+  // 部位
+  int32 type = 10;
+  // 是否上锁
+  bool isLock = 11;
+  // 效果id
+  int32 effectId = 12;
+  //装备附加的随机属性
+  repeated RandomProperty randomProperty = 13;
+  //最新获得
+  int32 lastGet = 14;
+  // 遗物套装id
+  int32 suitId = 15;
+  // 主属性
+  int32 attrTyep = 16;
+  // 主属性百分比
+  int32 attrVal = 17;
+  // 升级已消耗金币
+  int64 consumed = 18;
+}
+
+/* 遗物效果随机属性 */
+message RandomProperty
+{
+  // 属性类别
+  int32 type = 1;
+  // 词条档位
+  int32 value = 2;
+  // 强化次数
+  int32 count = 3;
+}
+
+/* 关卡信息 */
+message Stage
+{
+  // 关卡ID
+  int32 id = 1;
+  // 获得星星数
+  repeated int32 star = 2;
+  // 关卡机关列表
+  repeated Trap traps = 3;
+  // 关卡可见位置
+  repeated Position viewPositions = 4;
+  // 关卡任务信息
+  repeated StageTask tasks = 5;
+  // 是否通关
+  bool isPass = 6;
+  // 关卡内的道具
+  repeated Item items = 7;
+  // 关卡内的Buff
+  repeated StageBuff buffs = 8;
+  // 随机种子(藏宝图)
+  int32 randomSeed = 13;
+  // 地图ID(藏宝图)
+  int32 mapId = 14;
+  // 是否第一次进入
+  bool isFirstEnter = 15;
+  // 背包容量
+  int32 itemCapacity = 16;
+  // 关卡英雄状态
+  repeated StageHeroChange stageHero = 17;
+}
+
+/* 关卡机关信息 */
+message Trap
+{
+  // 机关ID
+  int32 id = 1;
+  // 是否完成
+  bool isComplete = 2;
+  // 机关节点信息列表
+  repeated TrapNode trapNodes = 3;
+  // 机关状态参数
+  repeated int32 stateParams = 4;
+  //  // 机关完成标志位
+  //  bool trapFlag = 5;
+  //  // 机关完成次数
+  //  int32 trapCount = 6;
+  //  // 遗物挖掘次数
+  //  int32 remainsCount = 7;
+  //  // 在小地图上展示的类型
+  //  int32 mapRoomShowType = 8;
+}
+
+/* 关卡节点信息 */
+message TrapNode
+{
+  // 节点ID
+  int32 id = 1;
+  // 是否完成
+  bool isComplete = 2;
+  // 道具节点获得次数
+  int32 gainCnt = 3;
+  // 遗物节点挖掘次数
+  int32 excavateCnt = 4;
+  // Buff选择节点Buf道具池子
+  repeated int32 buffItemPool = 5;
+  // 随机节点随机的下一个节点ID
+  int32 randomNextId = 6;
+  // 怪物组 以及怪物组词条信息
+  repeated MonsterGroup monsterGroup = 7;
+  // 节点战斗ID
+  int32 battleId = 8;
+  // buff刷新次数
+  int32 buffRefreshCnt = 9;
+}
+
+/* 怪物组 */
+message MonsterGroup{
+  repeated Monster monster = 1;
+}
+
+/* 怪物信息 */
+message Monster{
+  // 怪物ID
+  int32 id = 1;
+  // 怪物词条
+  int32 entry = 2;
+}
+/* 关卡任务信息 */
+message StageTask
+{
+  // 任务ID
+  int32 id = 1;
+  // 是否完成
+  bool isComplete = 2;
+  // 任务组列表
+  repeated StageGroupTask groupTasks = 3;
+}
+
+/* 关卡任务组信息 */
+message StageGroupTask
+{
+  // 任务组ID
+  int32 id = 1;
+  // 是否完成
+  bool isComplete = 2;
+  // 子任务列表
+  repeated StageSubTask subTask = 3;
+}
+
+/* 关卡子任务信息 */
+message StageSubTask
+{
+  // 子任务ID
+  int32 id = 1;
+  // 是否完成
+  bool isComplete = 2;
+}
+
+/* 冒险关卡Buff信息 */
+message StageBuff
+{
+  // BuffID
+  int32 id = 1;
+  // 开始时间
+  int32 startTime = 2;
+  // 结束时间
+  int32 endTime = 3;
+  // 叠加个数
+  int32 overlayCnt = 4;
+  // Buff来源 1=藏宝图多人
+  int32 source = 5;
+}
+
+/* 关卡英雄属性改变 */
+message StageHeroChange
+{
+  // 英雄ID
+  int32 heroId = 1;
+  // 血量改变,以最大生命值未基础,+代表增加,-代表扣除
+  sint32 changeHp = 2;
+  // 能量值
+  int64 maxSpaceEnergy = 3;
+}
+
+/* 改变的任务信息 */
+message AlterTask
+{
+  int32 taskId = 1;
+  int64 lastValue = 2;
+  int64 currValue = 3;
+}
+
+/* 任务信息 */
+message Task
+{
+  // 任务ID
+  int32 id = 1;
+  // 任务类型
+  int32 type = 2;
+  // 任务达成值
+  int32 value = 3;
+  // 任务开始时间
+  int32 startTime = 4;
+  // 任务结束时间
+  int32 endTime = 5;
+  // 任务停留时间
+  int32 stayTime = 6;
+  // 奖励是否已领取
+  bool achieveAward = 7;
+  // 任务完成时间(成就)
+  int32 finishTime = 8;
+}
+
+/* 聊天发言信息 */
+message SpeakWords
+{
+  // 频道ID(公共频道ID、公会ID、房间ID)
+  int32 chanId = 1;
+  // 聊天频道类型
+  ChanType chanType = 2;
+  // 玩家ID
+  int64 playerId = 3;
+  // 私聊对方玩家ID
+  int64 toPlayerId = 4;
+  // 玩家名称
+  string name = 5;
+  // 玩家公会名称
+  string guildName = 6;
+  // 玩家等级
+  int32 level = 7;
+  // 玩家icon
+  int32 icon = 8;
+  // 游戏服ID
+  int32 gameId = 9;
+  // 聊天服ID
+  int32 chatId = 10;
+  // 发言时间
+  int64 speakTime = 11;
+  // 发言信息类型
+  WordsType wordsType = 12;
+  // 发言信息内容
+  string wordsData = 13;
+  // 信息举报次数
+  int32 informCnt = 14;
+  // 头像框
+  int32 iconFrame = 15;
+  // 是否显示发言时间
+  bool isShowTime = 16;
+}
+
+/* 公共频道信息 */
+message PublicChannel
+{
+  // 公共频道ID
+  int32 id = 1;
+  // 公共频道名称
+  string name = 2;
+  // 公共频道图标
+  string icon = 3;
+  // 公共频道状态
+  int32 state = 4;
+  // 消息未读数
+  int32 unread = 5;
+  // 频道类型
+  ChanType type = 6;
+}
+
+/* 藏宝图信息 */
+message TreasureMap
+{
+  // 藏宝图ID
+  int32 id = 1;
+  // 结束时间
+  int32 endTime = 2;
+  // 藏宝图区域信息
+  repeated TreasureArea areas = 3;
+  // 领取时间(藏宝图历史记录用)
+  int32 awardTime = 4;
+  // 创建者
+  int64 creator = 5;
+  // 角色信息
+  repeated RoleSimpleInfo roleInfos = 6;
+  // 领奖的玩家ID
+  repeated int64 awardPlayerIds = 7;
+  // 藏宝图配置表ID
+  int32 configId = 8;
+  // 藏宝图所属类型 0:自己的 1:好友 2:公会 3:公共
+  int32 belongType = 9;
+  // 邀请码
+  int32 inviteCode = 10;
+  // 招募范围
+  repeated int32 limit = 11;
+  // Buff卡列表
+  repeated int32 buffCards = 12;
+  // 寻宝基金代币
+  int64 coin = 13;
+}
+
+/* 藏宝图区域信息 */
+message TreasureArea
+{
+  // 区域ID
+  int32 id = 1;
+  // 区域状态
+  TreasureAreaState state = 2;
+  // buff卡
+  repeated int32 buffs = 3;
+  // 随机数种子
+  int32 randomSeed = 4;
+  // 地图索引
+  int32 mapIndex = 5;
+  // 占领的玩家ID
+  int64 playerId = 6;
+  // 古代物品价值
+  int32 ancientValue = 7;
+}
+
+/* 藏宝图星星领奖信息 */
+message TreasureStarAward
+{
+  // 星级
+  int32 star = 1;
+  // 已领奖的次数
+  int32 awardCnt = 2;
+  // 下次刷新时间
+  int32 refreshTime = 3;
+}
+
+/* 阵容信息 */
+message Formation
+{
+  // 阵容英雄信息
+  repeated Hero heroes = 3;
+  // 阵容神器ID
+  int32 goldenRelicId = 4;
+  // 阵容宠物ID
+  int32 petId = 5;
+}
+/* 队伍预设信息 */
+message TeamPreset
+{
+  // 队伍预设ID
+  int32 id = 1;
+  // 队伍预设索引
+  int32 index = 2;
+  // 队伍预设名称
+  string name = 3;
+  // 队伍预设阵容信息
+  repeated Formation formations = 4;
+}
+
+/*队伍应用*/
+//message UseTeamPreset
+//{
+//  //应用阵容id
+//  int32 presetId = 1;
+//  //应用布阵
+//  TeamPreset teamPreset = 2;
+//}
+
+/* 招募信息 */
+message Summon {
+  // 招募ID
+  int32 id = 1;
+  // 每日免费单抽,true=抽过 false=未抽
+  bool freeDone = 2;
+  // 招募次数
+  int32 count = 3;
+  // 招募歪的次数
+  int32 noUpCount = 4;
+  // 开始时间
+  int64 startTime = 5;
+  // 结束时间
+  int64 endTime = 6;
+}
+
+/* 招募记录信息 */
+message SummonRecord {
+  // 招募ID
+  int32 summonId = 1;
+  // 招募英雄ID
+  int32 summonHeroId = 2;
+  // 招募时间
+  int64 summonTime = 3;
+}
+
+/* 商店信息 */
+message Shop {
+  // 商店ID
+  int32 id = 1;
+  // 商店刷新时间
+  int32 refreshTime = 2;
+  // 商店结束时间
+  int32 endTime = 3;
+  // 商店商品列表
+  repeated ShopItem shopItems = 4;
+  // 商店刷新次数
+  int32 refreshCount = 5;
+  // 商店购买次数
+  int32 buyCount = 6;
+}
+
+/* 商品信息 */
+message ShopItem {
+  // 商品ID
+  int32 id = 1;
+  // 商品购买次数
+  int32 buyCount = 2;
+  // 商品结束时间
+  int32 endTime = 3;
+}
+
+/* 副本信息 */
+message Duplicate{
+  //副本类型
+  int32 type = 1;
+  //通关难度
+  int32 difficulty = 2;
+  //今日剩余次数
+  int32 count = 3;
+  //队伍预设
+  TeamPreset teamPreset = 4;
+  //可使用次数
+  int32 accessibilityCount = 5;
+}
+
+/* 探索任务 */
+message ExploreTask {
+  // 任务id
+  int32 id = 1;
+  //任务是否完成
+  /// bool isFinish = 2;
+  //任务是否领奖
+  bool isGetAward = 2;
+  // 剩余完成时间
+  int32 finishTime = 3;
+  // 参加探索的英雄英雄
+  repeated int32 heroes = 4;
+  //探索使用的道具
+  repeated int32 items = 5;
+  //任务是否接受
+  bool isAccept = 6;
+}
+
+/*商业建筑数据*/
+message MallBuildingData
+{
+  //商业建筑类型
+  int32 MallBuildingType = 1;
+  //建筑等级
+  int32 MallBuildingLv = 2;
+  //工作的英雄id列表
+  repeated int32 WorkHeroIdList = 3;
+  //开始工作时间
+  int32 StartWorkTime = 4;
+  //已经工作的时间
+  int32 workTime = 5;
+}
+
+/* 打工建筑信息 */
+message WorkBuilding {
+  // 建筑ID
+  int32 id = 1;
+  // 建筑打工的英雄列表
+  repeated int32 workHeroes = 2;
+  // 建筑打工产出效率(包含Buff),$xxx/小时
+  int32 output = 4;
+}
+
+/* 打工Buff信息 */
+message WorkBuff {
+  // BuffID
+  int32 id = 1;
+  // Buff剩余时间,单位:秒
+  int32 remainTime = 4;
+}
+
+//
+message WarriorRankData {
+  //层级
+  int32 layer = 1;
+  //星
+  int32 star = 2;
+  //battleRandom表Id
+  int32 battleRandomId = 3;
+  //我的分数
+  int32 myScore = 4;
+  //最高分数
+  int32 highestScore = 5;
+  //我的时间
+  int32  myTime = 6;
+  //最高分数的时间
+  int32  highestTime = 7;
+}
+
+/* 位置信息 */
+message Position {
+  int32 x = 1;
+  int32 y = 2;
+  int32 z = 3;
+}
+
+/* 公会信息 */
+message GuildInfo
+{
+  // 公会ID
+  int32 id = 1;
+  // 公会名称
+  string name = 2;
+  // 公会旗帜
+  string icon = 3;
+  // 公会语言
+  int32 language = 4;
+  // 公会加入等级限制
+  int32 levelNeed = 5;
+  // 公会加入限制
+  int32 joinLimit = 6;
+  // 公会活跃系数
+  int32 activeScale = 7;
+  // 公会当天活跃度
+  int32 activeValue = 8;
+  // 公会描述信息
+  string des = 9;
+  // 公会公告信息
+  string notice = 10;
+  // 公会成员数
+  int32 memberNum = 11;
+  // 公会是否已经申请过
+  bool hasApply = 12;
+  // 公会会长名称
+  string managerName = 13;
+}
+
+///* 公会申请信息 */
+//message ApplyInfo
+//{
+//  // 玩家ID
+//  int64 id = 1;
+//  // 玩家名称
+//  string name = 2;
+//  // 玩家头像
+//  int32 icon = 3;
+//  // 玩家等级
+//  int32 level = 4;
+//  // 玩家关卡
+//  int32 stage = 5;
+//  // 玩家头像框
+//  int32 iconFrame = 6;
+//  // 玩家最后登出时间 (0:代表在线)
+//  int32 lastLogoutTime = 7;
+//  // 玩家称号ID
+//  int32 titleId = 8;
+//  // 游戏服ID
+//  int32 gameId = 9;
+//}
+
+/* 公会成员信息 */
+message MemberInfo
+{
+  // 成员ID
+  int64 id = 1;
+  // 成员职位
+  int32 position = 2;
+  // 成员活跃度
+  int32 activeValue = 3;
+  // 成员角色信息
+  RoleSimpleInfo roleInfo = 4;
+}
+
+/* 公会日志信息 */
+message GuildLog
+{
+  // 日志时间
+  int32 logTime = 1;
+  // 日志参数
+  repeated string params = 2;
+}
+
+/* 图纸信息 */
+message BluePrintInfo
+{
+  // 图纸id
+  int32 id = 1;
+  // 图纸产品itemId
+  int32 bid = 2;
+  // 图纸类型
+  int32 type = 3;
+  // Guid
+  int32 guid = 4;
+  // 是否研究
+  bool reash = 5;
+  // 最后图纸
+  int32 lastBlueId = 6;
+}
+
+
+/* 商品信息 */
+message GoodsInfo
+{
+  // 商品ID
+  int32 id = 1;
+  // 购买数量
+  int32 buyCnt = 2;
+}
+
+// 会话信息
+message SessionInfo {
+  // 会话ID
+  int64 sessionId = 1;
+  // 玩家ID
+  int64 playerId = 2;
+}
+
+// 共斗信息
+message FightTogether {
+  // 共斗ID
+  int32 id = 1;
+  // 奖励次数
+  int32 awardCnt = 2;
+  // 结束时间
+  int32 endTime = 3;
+}
+
+// 共斗房间信息
+message FightTogetherRoom {
+  // 共斗房间ID
+  int32 id = 1;
+  // 共斗ID
+  int32 fightTogetherId = 2;
+  // 房间玩家数
+  int32 playerCount = 3;
+  // 房主ID
+  int64 ownerPlayerId = 4;
+  // 房间进入限制 1=私密房间 2=公开房间 4=好友可见 8=公会成员可见
+  int32 limit = 5;
+}
+
+// 任务积分奖励
+message TaskScoreAward {
+  // 任务类型
+  int32 taskType = 1;
+  // 已领奖索引
+  repeated int32 awardIndexes = 2;
+}
+
+// 新手任务分天
+message NewTaskDay{
+  // 当前天
+  int32 day = 1;
+  // 当前天任务
+  repeated Task tasks = 2;
+  // 当前天已领取的积分奖励
+  repeated int32 awardScore = 3;
+  // 当前天积分
+  int64  currentScore = 4;
+  // 当前天已解锁页数
+  int32 page = 5;
+}
+
+/* 图鉴 */
+message Medal{
+  // 图鉴ID
+  int32 id = 1;
+  // 图鉴等级
+  int32 level = 2;
+  // 已完成条目数量
+  int32 doneCnt = 3;
+  // 勋章经验值
+  int32 exp = 4;
+  // 条目
+  repeated ObjectPage  objectPage = 5;
+  // 羁绊
+  repeated Trammels trammels = 6;
+  // 已领取条目
+  repeated int32  isAwardList = 7;
+  // 每个对应条目已完成数量
+  repeated DoneObjCnt doneObjCnt = 8;
+}
+
+message DoneObjCnt {
+  // 分组
+  int32 type = 1;
+  // 数量
+  int32 cnt = 2;
+}
+
+/* 条目分页 */
+message ObjectPage{
+  // ObjectType
+  int32 pageId = 1;
+  // 图鉴组
+  repeated PicGroup picGroup = 2;
+}
+
+/* 羁绊 */
+message Trammels{
+  // 羁绊id
+  int32 id = 1;
+  // 羁绊已完成条目
+  repeated int32 contentId = 2;
+  // 是否已领取
+  bool isAward = 3;
+}
+
+/* 图鉴组 */
+message PicGroup{
+  // 组ID
+  int32 groupId = 1;
+  // 该组当前对应的PictorialId
+  int32 pictorialId = 2;
+  // 收集数量
+  int32 collectCnt = 3;
+  // 是否已领取
+  bool isAward = 4;
+  //
+}
+
+/* 称号信息 */
+message Title {
+  // 称号ID
+  int32 id = 1;
+  // 获得时间,单位:秒
+  int32 gainTime = 2;
+}
+
+/* 邮件信息 */
+message Mail {
+  // 邮件ID
+  int64 id = 1;
+  // 发送名
+  string sendName = 2;
+  // 邮件标题
+  string title = 3;
+  // 邮件内容
+  string content = 4;
+  // 邮件道具
+  repeated Item items = 5;
+  // 邮件状态,0=未查看 1=已查看 2=已领取 4=已删除
+  int32 state = 6;
+  // 邮件发送时间
+  int64 sendTime = 7;
+  // 邮件领奖时间
+  int64 awardTime = 8;
+  // 邮件参数
+  repeated string params = 9;
+}
+
+/* 新手引导信息 */
+message Guide {
+  // 引导组ID
+  int32 groupId = 1;
+  // 引导ID
+  int32 guideId = 2;
+}
+
+/* 头像框信息 */
+message IconFrame {
+  // 头像框ID
+  int32 id = 1;
+  // 获得时间,单位:毫秒
+  int64 gainTime = 2;
+}
+
+/* 签到 */
+message Signed{
+  // 签到id
+  int32 signedId = 1;
+  // 剩余时间  永久为0
+  int64 remainTime = 2;
+  // 已签到时间戳
+  repeated int64 signedDays = 3;
+  // 签到天数
+  int32 signedDay = 4;
+  // 今日是否已签到  true  已签到  false 未签到
+  bool isSigned = 5;
+  //  // 活动名称
+  //  string signedName = 6;
+  //  // 7日签到还是30日
+  //  int32 signedStyle = 7;
+  //  // 描述
+  //  int32 desId = 8;
+}
+
+/* 战令信息 */
+message BattlePass {
+  // 战令ID
+  int32 id = 1;
+  // 战令等级
+  int32 level = 2;
+  // 战令领取等级
+  int32 awardLevel = 3;
+  // 战令周积分
+  int32 weekExp = 4;
+  // 战令第几周
+  int32 weekNum = 5;
+  // 战令解锁等级
+  int32 unlockLevel = 6;
+  // 战令解锁领取等级
+  int32 unlockAwardLevel = 7;
+}
+
+/* 小红点信息 */
+message RedDot {
+  // 小红点ID
+  int32 id = 1;
+  // 小红点参数,size==0 红点消失; size>0 红点显示
+  repeated string params = 2;
+}
+
+/* 战斗事件BI日志 */
+message BattleBiLog{
+  // 玩家方评分
+  int32 playerTeamScore = 1;
+  // 玩家方英雄评分组成
+  repeated int32 playerHeroScore = 2;
+  // 敌方队伍评分
+  int32 enemyTeamScore = 3;
+}
+
+/* 活动信息 */
+message Activity {
+  // 活动ID
+  int32 id = 1;
+  // 活动提示预告时间
+  int64 tipsTime = 2;
+  // 活动开始时间
+  int64 startTime = 3;
+  // 活动结束时间
+  int64 endTime = 4;
+  // 活动停留时间
+  int64 stayTime = 5;
+  // 签到活动数据
+  Signed signed = 6;
+  // 世界boss数据
+  WorldBoss worldBoss = 7;
+  // 活动藏宝图数据
+  ActivityTreasureMap treasureMap = 8;
+}
+
+message ActivityRush{
+  // index
+  int32 index = 1;
+  // 任务完成数量
+  int32 comTaskCnt = 2;
+  // 任务ids
+  repeated int32 taskIds = 3;
+}
+
+message WorldBoss{
+  // 踢馆次数
+  int32 challengeCnt = 1;
+  // scheduleConfigId
+  int32 scheduleConfigId = 2;
+  repeated WorldBossRoom  worldBossRoom = 3;
+  WorldBossGuildRank worldGuildRank = 4;
+  WorldBossGuildRank beforeWorldGuildRank = 5;
+  GuildRank guildRank = 6;
+}
+
+message WorldBossRoom{
+  int32 roomId = 1;
+  int64 score = 2;
+  // 踢馆
+  bool challengeFlag = 4;
+  WorldBossRank worldBossRank = 5;
+  // 通关难度
+  repeated int32 diff = 6;
+
+  WorldBossScore worldScore = 7;
+
+  // roomBattleIdDiff
+  repeated int32 diffBattleIds = 14;
+}
+
+message WorldBossScore{
+  // 基础分数
+  int32 basicScore = 1;
+  // 时间分数
+  int32 timeScore = 2;
+  // 英雄限定加成
+  int32 heroScore = 3;
+  // 武器加成
+  int32 weaponTypeScore = 4;
+  // 职业加成
+  int32 heroProScore = 5;
+  // 属性加成
+  int32 heroAttrScore = 6;
+  // 难度
+  double diffScore = 7;
+  // 总分
+  int64  score = 8;
+  // 坚持分数
+  int32 keepScore = 9;
+  // boss分数
+  int32 bossMonsterScore = 10;
+  // 精英怪分数
+  int32 eliteMonsterScore = 11;
+  // 普通怪分数
+  int32 commonMonsterScore = 12;
+  //血量分数
+  int32 hpScore = 13;
+  // 神器限定加成
+  int32 goldScore = 14;
+}
+
+/* 排名信息 */
+message WorldBossRank{
+  // 角色简单信息
+  repeated WorldBossRankRoleInfo worldRankRoles = 1;
+
+  // 当前角色信息
+  WorldBossRankRoleInfo myRankInfo = 2;
+
+  // 距离下次刷新时间
+  int64 nextRefreshTime = 3;
+}
+
+// 世界BOSS排名信息
+message WorldBossRankRoleInfo{
+  int64 id = 1;
+  int32 gameId = 2;
+  string name = 3;
+  int32 icon = 4;
+  int64 score = 5;
+  int32 rankRewardId = 6; // 排名奖励
+  int32 ranking = 7; // 排名
+}
+
+// 公会排名
+message WorldBossGuildRank{
+  // 角色简单信息
+  repeated WorldBossGuildRankInfo worldRankRoles = 1;
+
+  // 公会信息
+  WorldBossGuildRankInfo myRankInfo = 2;
+
+  // 距离下次刷新时间
+  int64 nextRefreshTime = 3;
+}
+
+message WorldBossGuildRankInfo{
+  int32 guildId = 1;
+  int32 gameId = 2;
+  string name = 3;
+  string icon = 4;
+  int64 score = 5;
+  int32 rankRewardId = 6; // 排名奖励
+  int32 ranking = 7; // 排名
+}
+
+
+// 公会排名
+message GuildRank{
+  // 角色简单信息
+  repeated GuildRankInfo guildRankRoles = 1;
+
+  // 公会信息
+  GuildRankInfo myRankInfo = 2;
+
+  // 距离下次刷新时间
+  int64 nextRefreshTime = 3;
+}
+
+message GuildRankInfo{
+  int64 guildId = 1;
+  int32 gameId = 2;
+  string name = 3;
+  string icon = 4;
+  int64 score = 5;
+  int32 rankRewardId = 6; // 排名奖励
+  int32 ranking = 7; // 排名
+  int64 gold = 8;  // 金
+  int64 silver = 9;  // 银
+  int64 bronze = 10; // 铜
+}
+
+/* 活动藏宝图信息 */
+message ActivityTreasureMap {
+  // 活动第几天
+  int32 days = 1;
+  // 活动赞助信息
+  repeated TMSupport supports = 2;
+  // 活动招募信息
+  repeated Summon summons = 3;
+}
+
+/* 活动藏宝图赞助信息 */
+message TMSupport {
+  // 赞助势力ID
+  int32 groupId = 1;
+  // 赞助价值
+  int32 value = 2;
+  // 赞助已领奖等级
+  int32 hasAwardLv = 3;
+}
+
+

+ 6 - 0
NetCore/Protocol/Protobuf/ProtobufWrap.cs

@@ -0,0 +1,6 @@
+namespace NetCore.Protocol;
+
+public class ProtobufWrap
+{
+    
+}

+ 34 - 0
NetServer.sln

@@ -0,0 +1,34 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetServer", "NetServer\NetServer.csproj", "{1C3B1592-1BAB-42CD-A54B-09497FDCF37F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetCore", "NetCore\NetCore.csproj", "{1A01D334-A2CF-43BF-8477-0E54AAA8F12D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetServerCore", "NetServerCore\NetServerCore.csproj", "{568F6CE3-1D0F-4228-8ACD-7D410B0AB11F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NetClientCore", "NetClientCore\NetClientCore.csproj", "{AD2035CC-1301-45DE-8027-3CC83EF3A064}"
+EndProject
+Global
+	GlobalSection(SolutionConfigurationPlatforms) = preSolution
+		Debug|Any CPU = Debug|Any CPU
+		Release|Any CPU = Release|Any CPU
+	EndGlobalSection
+	GlobalSection(ProjectConfigurationPlatforms) = postSolution
+		{1C3B1592-1BAB-42CD-A54B-09497FDCF37F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1C3B1592-1BAB-42CD-A54B-09497FDCF37F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1C3B1592-1BAB-42CD-A54B-09497FDCF37F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1C3B1592-1BAB-42CD-A54B-09497FDCF37F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{1A01D334-A2CF-43BF-8477-0E54AAA8F12D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{1A01D334-A2CF-43BF-8477-0E54AAA8F12D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{1A01D334-A2CF-43BF-8477-0E54AAA8F12D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{1A01D334-A2CF-43BF-8477-0E54AAA8F12D}.Release|Any CPU.Build.0 = Release|Any CPU
+		{568F6CE3-1D0F-4228-8ACD-7D410B0AB11F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{568F6CE3-1D0F-4228-8ACD-7D410B0AB11F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{568F6CE3-1D0F-4228-8ACD-7D410B0AB11F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{568F6CE3-1D0F-4228-8ACD-7D410B0AB11F}.Release|Any CPU.Build.0 = Release|Any CPU
+		{AD2035CC-1301-45DE-8027-3CC83EF3A064}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+		{AD2035CC-1301-45DE-8027-3CC83EF3A064}.Debug|Any CPU.Build.0 = Debug|Any CPU
+		{AD2035CC-1301-45DE-8027-3CC83EF3A064}.Release|Any CPU.ActiveCfg = Release|Any CPU
+		{AD2035CC-1301-45DE-8027-3CC83EF3A064}.Release|Any CPU.Build.0 = Release|Any CPU
+	EndGlobalSection
+EndGlobal

+ 12 - 0
NetServer.sln.DotSettings.user

@@ -0,0 +1,12 @@
+<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArraySegment_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Fck_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b821dd3ae45b4a8027ef197e5363fb1e910_003F2d_003Fe501690b_003FArraySegment_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AArray_002Ecs_002Fl_003AC_0021_003FUsers_003Fck_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b821dd3ae45b4a8027ef197e5363fb1e910_003Fc4_003F44d48ead_003FArray_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ABsonClassMap_002Ecs_002Fl_003AC_0021_003FUsers_003Fck_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F39988e239fb94b73b8bdb00ab8b87d1f82400_003Fdb_003F7d011d2f_003FBsonClassMap_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AEnumerable_002Ecs_002Fl_003AC_0021_003FUsers_003Fck_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fcddef56ef4284285af8127b5bfe899a47b8b0_003F50_003Fc8e1b21b_003FEnumerable_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIMongoCollectionExtensions_002Ecs_002Fl_003AC_0021_003FUsers_003Fck_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5111d10f571f4f52a6ca7377a3b36b4324f600_003Fee_003Fbab34a02_003FIMongoCollectionExtensions_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIMongoCollection_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Fck_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5111d10f571f4f52a6ca7377a3b36b4324f600_003Fb9_003Fb8c04f38_003FIMongoCollection_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AIMongoDatabase_002Ecs_002Fl_003AC_0021_003FUsers_003Fck_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5111d10f571f4f52a6ca7377a3b36b4324f600_003Fef_003Fc77c03e9_003FIMongoDatabase_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AMaybeNullWhenAttribute_002Ecs_002Fl_003AC_0021_003FUsers_003Fck_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003Fae7b821dd3ae45b4a8027ef197e5363fb1e910_003Fdf_003F390582f1_003FMaybeNullWhenAttribute_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASocket_002Ecs_002Fl_003AC_0021_003FUsers_003Fck_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F11a4d7854a1e443a8be7eb11e4f9d2e1898b0_003F26_003F25b6da3a_003FSocket_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AUpdateDefinition_00601_002Ecs_002Fl_003AC_0021_003FUsers_003Fck_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5111d10f571f4f52a6ca7377a3b36b4324f600_003Fd2_003Fced503db_003FUpdateDefinition_00601_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
+	<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AUpdateDefinitionExtensions_002Ecs_002Fl_003AC_0021_003FUsers_003Fck_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E2_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F5111d10f571f4f52a6ca7377a3b36b4324f600_003Fca_003Fd3d21fb1_003FUpdateDefinitionExtensions_002Ecs/@EntryIndexedValue">ForceIncluded</s:String></wpf:ResourceDictionary>

+ 38 - 0
NetServer/MongoDB/DBData/PlayerData.cs

@@ -0,0 +1,38 @@
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization.Attributes;
+using MongoDB.Driver;
+
+namespace NetServer.MongoDB.DBData;
+
+public class PlayerData
+{
+    [BsonId] public ObjectId id { get; set; }
+    public long playerId { get; set; }
+    public string name { get; set; }
+    public int age { get; set; }
+    public PlayerHero PlayerHero { get; set; }
+
+    [BsonIgnore] public UpdateDefinition<PlayerData> Update;
+
+    public UpdateDefinition<PlayerData> CapyUpdate()
+    {
+        lock (Update)
+        {
+            UpdateDefinition<PlayerData> updateValue = Update;
+            Update = null;
+            return updateValue;
+        }
+    }
+
+    public void AddUpdateDefinition(UpdateDefinition<PlayerData> updateDefinition)
+    {
+        if (Update != null)
+        {
+            Builders<PlayerData>.Update.Combine(Update, updateDefinition);
+        }
+        else
+        {
+            Update = updateDefinition;
+        }
+    }
+}

+ 7 - 0
NetServer/MongoDB/DBData/PlayerHero.cs

@@ -0,0 +1,7 @@
+namespace NetServer.MongoDB.DBData;
+
+public class PlayerHero
+{
+    public int heroId { get; set; }
+    public int heroLevel{ get; set; }
+}

+ 29 - 0
NetServer/MongoDB/DBDataLink.cs

@@ -0,0 +1,29 @@
+using MongoDB.Driver;
+using NetServer.MongoDB.DBData;
+
+namespace NetServer.MongoDB;
+
+public class DBDataLink<T>
+{
+    protected IMongoCollection<T> _playerMongoCollection;
+
+    protected void Init(DBLink dbLink,string dbName)
+    {
+        _playerMongoCollection = dbLink.MongoDatabase.GetCollection<T>(dbName);
+    }
+
+    protected void Insert(T bsonDocument)
+    {
+        _playerMongoCollection.InsertOne(bsonDocument);
+    }
+
+    protected void Update(FilterDefinition<T> filter, UpdateDefinition<T> update)
+    {
+        _playerMongoCollection.UpdateManyAsync(filter, update);
+    }
+
+    protected async Task<T> FindOneDataAsync(FilterDefinition<T> filter)
+    {
+        return await _playerMongoCollection.Find(filter).FirstOrDefaultAsync();
+    }
+}

+ 34 - 0
NetServer/MongoDB/DBLink.cs

@@ -0,0 +1,34 @@
+using System.Collections.Concurrent;
+using MongoDB.Bson;
+using MongoDB.Bson.Serialization;
+using MongoDB.Driver;
+using NetServer.MongoDB.DBData;
+
+namespace NetServer.MongoDB;
+
+public class DBLink
+{
+    private IMongoDatabase _iMongoDatabase;
+    private MongoClient _mongoClient;
+
+
+    public IMongoDatabase MongoDatabase
+    {
+        get { return _iMongoDatabase; }
+    }
+
+
+    public void LinkDB(string dbPath, string dbName)
+    {
+        try
+        {
+            _mongoClient = new MongoClient(dbPath);
+
+            _iMongoDatabase = _mongoClient.GetDatabase(dbName);
+        }
+        catch (Exception e)
+        {
+            Console.WriteLine(e);
+        }
+    }
+}

+ 48 - 0
NetServer/MongoDB/PlayerDataLink.cs

@@ -0,0 +1,48 @@
+using MongoDB.Driver;
+using NetServer.MongoDB.DBData;
+
+namespace NetServer.MongoDB;
+
+public class PlayerDataLink : DBDataLink<PlayerData>
+{
+    public static PlayerDataLink PlayerDbLink
+    {
+        get
+        {
+            if (_playerDbLink == null)
+            {
+                _playerDbLink = new PlayerDataLink();
+            }
+
+            return _playerDbLink;
+        }
+    }
+
+    private static PlayerDataLink _playerDbLink;
+
+    public void InitPlayerData(DBLink dbLink)
+    {
+        base.Init(dbLink, "player");
+    }
+
+    public void InsertPlayerData(PlayerData playerData)
+    {
+        base.Insert(playerData);
+    }
+
+    public void UpdatePlayerData(PlayerData bsonDocument)
+    {
+        var filter = Builders<PlayerData>.Filter
+            .Eq(restaurant => restaurant.id, bsonDocument.id);
+        var update = bsonDocument.Update;
+        bsonDocument.Update = bsonDocument.CapyUpdate();
+        base.Update(filter, update);
+    }
+
+    private async Task<PlayerData> FindOneDataAsyncPlayerData(long id)
+    {
+        var filter = Builders<PlayerData>.Filter
+            .Eq(r => r.playerId, id);
+        return await base.FindOneDataAsync(filter);
+    }
+}

+ 10 - 0
NetServer/NetLink/IServer.cs

@@ -0,0 +1,10 @@
+using NetCore;
+using NetCore.ContentParse;
+using NetCore.NetServerCoreBasic;
+
+namespace NetServer.NetLink;
+
+public interface IServer 
+{
+    ILogicalParsing LogicalParsing { get; }
+}

+ 106 - 0
NetServer/NetLink/TCP/TCPServer.cs

@@ -0,0 +1,106 @@
+using System.Collections.Concurrent;
+using System.Net;
+using System.Net.Sockets;
+using NetCore;
+using NetCore.ContentParse;
+using NetCore.NetServerCoreBasic;
+using NetCore.Protocol;
+
+namespace NetServer.NetLink.TCP;
+
+public class TCPServer<T, K> : IServer where T : IContentParse where K : IProtocol
+{
+    // private byte[] buffData = new byte[6553];
+    private Socket socket;
+
+    public ILogicalParsing LogicalParsing
+    {
+        get { return _logicalParsing; }
+    }
+
+    private ILogicalParsing _logicalParsing;
+
+    //记录半包数据
+    private bool isBufferData;
+    private byte[] lastBuffData;
+    private int lastCount;
+
+    private short lastXueLieHao;
+    //数据结束
+
+    //尾包
+    private byte[] weiBaoBuffData;
+
+    private long index;
+
+    private ConcurrentDictionary<long, TCPServerConnection<T, K>> allTcpServerConnections =
+        new ConcurrentDictionary<long, TCPServerConnection<T, K>>();
+
+
+    public void Start()
+    {
+    }
+
+
+    public void Init(IContentParse iContentParse, IProtocol iProtocol)
+    {
+    }
+
+    public void AddGetData(object data)
+    {
+    }
+
+    // private Thread _udpClientThread;
+
+    // private byte[] buffer = new byte[2048];
+
+
+    // public Dictionary<long, IServerConnection> KcpServerConnections = new Map<long, IServerConnection>();
+    // private List<CombatSynchronizeRequest> CombatSynchronizeRequests = new List<CombatSynchronizeRequest>();
+    // private List<IServerConnection> awaitConnections = new List<IServerConnection>();
+    // private IServerManager iServerManager;
+    public TCPServer(int port, ILogicalParsing logicalParsing)
+    {
+        _logicalParsing = logicalParsing;
+        socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+        socket.Bind(new IPEndPoint(IPAddress.Any, port));
+        socket.Listen();
+        AcceptAsync();
+    }
+
+    private async Task AcceptAsync()
+    {
+        try
+        {
+            if (socket == null)
+            {
+                return;
+            }
+
+            Socket newSocket = await socket.AcceptAsync();
+            int code = newSocket.RemoteEndPoint.GetHashCode();
+            TCPServerConnection<T, K> tcpServerConnection = new TCPServerConnection<T, K>(this, newSocket);
+            index++;
+            bool isAdd = allTcpServerConnections.TryAdd(index, tcpServerConnection);
+            if (!isAdd)
+            {
+                Console.Error.WriteLine("添加失败");
+            }
+
+            AcceptAsync();
+        }
+        catch (Exception e)
+        {
+            Console.WriteLine(e);
+        }
+    }
+
+    public void RemoveConnection(TCPServerConnection<T, K> tcpServerConnection)
+    {
+        bool isOk = allTcpServerConnections.TryRemove(tcpServerConnection.index, out TCPServerConnection<T, K> value);
+        if (!isOk)
+        {
+            Console.Error.WriteLine("移除失败");
+        }
+    }
+}

+ 128 - 0
NetServer/NetLink/TCP/TCPServerConnection.cs

@@ -0,0 +1,128 @@
+using System.Net.Sockets;
+using NetCore;
+using NetCore.ContentParse;
+using NetCore.Protocol;
+
+namespace NetServer.NetLink.TCP;
+
+public class TCPServerConnection<T, K> : IContentReceiver, IConnection
+    where T : IContentParse where K : IProtocol
+{
+    public long index;
+    public bool isConnected { get; set; }
+    private byte[] buffData = new byte[6553];
+    private Socket socket;
+
+    //记录半包数据
+    private bool isBufferData;
+    private byte[] lastBuffData;
+    private int lastCount;
+
+    private short lastSendType;
+
+    //数据结束
+
+    //尾包
+    private byte[] weiBaoBuffData;
+
+
+    private Thread _udpClientThread;
+
+
+    private TCPServer<T, K> _tcpServer;
+
+   
+    public IContentParse iContentParse
+    {
+        get { return _iContentParse; }
+    }
+
+    public IProtocol iProtocol
+    {
+        get { return _iProtocol; }
+    }
+
+    private IContentParse _iContentParse;
+    public IProtocol _iProtocol;
+
+
+
+    public TCPServerConnection(TCPServer<T, K> tcpServer, Socket socket)
+    {
+        this.socket = socket;
+        socket.NoDelay = true;
+        _tcpServer = tcpServer;
+        isConnected = true;
+        _iContentParse = Activator.CreateInstance<T>();
+        _iProtocol = Activator.CreateInstance<K>();
+        _udpClientThread = new Thread(TheUpdate);
+        _udpClientThread.Start();
+    }
+
+
+    private void TheUpdate()
+    {
+        while (socket != null)
+        {
+            try
+            {
+                int count = socket.Receive(buffData);
+                if (count <= 0)
+                {
+                    Thread.Sleep(1);
+                    return;
+                }
+
+                byte[] data = new byte[count];
+                Array.Copy(buffData, 0, data, 0, count);
+                _iContentParse.ParseByte(data, _iProtocol, this);
+                // LogTool.Log("数据来了" + count);
+            }
+            catch (Exception e)
+            {
+                Console.WriteLine(e);
+                isConnected = false;
+                break;
+            }
+        }
+
+        Console.WriteLine("服务器执行完毕");
+    }
+
+    public void AddContent(object data)
+    {
+        _tcpServer.LogicalParsing.Logic(data, this);
+    }
+
+    public void SendData(object sendData)
+    {
+        byte[] data = iProtocol.Serialize(sendData);
+        byte[] parseData=  _iContentParse.AssembleByte(data);
+        socket.SendAsync(parseData, SocketFlags.None);
+    }
+
+    public void Update()
+    {
+    }
+
+    public void ReceiveAsync()
+    {
+    }
+
+    public int Input(byte[] data)
+    {
+        return 0;
+    }
+
+    public void Dispose()
+    {
+        socket?.Close();
+        socket?.Dispose();
+        socket = null;
+        _tcpServer = null;
+        _udpClientThread = null;
+        lastBuffData = null;
+        weiBaoBuffData = null;
+        buffData = null;
+    }
+}

+ 547 - 0
NetServer/NetLink/TCPLink.cs

@@ -0,0 +1,547 @@
+// using System.Net.Sockets;
+// using NetCore.ContentParse;
+// using NetCore.NetServerCoreBasic;
+// using NetCore.Protocol;
+//
+// namespace NetServer.NetLink;
+//
+// public class TCPLink : INetContainer
+// {
+//     public void Start()
+//     {
+//     }
+//
+//     public void Init(IContentParse iContentParse, IProtocol iProtocol)
+//     {
+//     }
+//
+//     public void AddGetData(object data)
+//     {
+//     }
+//
+//
+//     private byte[] buffData = new byte[6553500];
+//     private Socket _tcpClient;
+//     private Thread thread;
+//     public BinaryReader br;
+//     public BinaryWriter bw;
+//     public string url;
+//     private bool isRun;
+//     private long jg;
+//     private Thread heartThread;
+//     private Queue<SendBuffer> _sendBuffers = new Queue<SendBuffer>();
+//     private int allCount;
+//     private SocketAsyncEventArgs sae;
+//
+//     //记录半包数据
+//     private bool isBufferData;
+//     private byte[] lastBuffData;
+//     private int lastCount;
+//
+//     private ushort lastXueLieHao;
+//     //数据结束
+//
+//     //尾包
+//     private byte[] weiBaoBuffData;
+//
+//
+//     //
+//     public class RequestBuffer
+//     {
+//         // public HttpListenerContext httpListenerContext;
+//         public ushort xlh;
+//         public SimulationCombat combatRequest;
+//     }
+//
+//     public enum SendBufferType
+//     {
+//         Data,
+//         Connect,
+//     }
+//
+//     public class SendBuffer
+//     {
+//         public RequestBuffer RequestBuffer;
+//         public SimulationCombatResponse SimulationFightTogetherResponse;
+//         public SendBufferType SendBufferType;
+//
+//         /// <summary>
+//         /// 版本
+//         /// </summary>
+//         public ushort ver;
+//     }
+//
+//     public Queue<RequestBuffer> requestBuffer = new Queue<RequestBuffer>();
+//
+//     public void Init(string ip, int port)
+//     {
+//         this.url = ip;
+//         LogTool.Log("开启协议");
+//         _tcpClient = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
+//         _tcpClient.Connect(ip, port);
+//
+//         isRun = true;
+//         LogTool.Log("启动成功" + url);
+//         heartThread = new Thread(HrartUpdate);
+//         heartThread.Start();
+//         thread = new Thread(TheUpdate);
+//         thread.Start();
+//     }
+//
+//     private void HrartUpdate()
+//     {
+//         while (isRun)
+//         {
+//             if (_tcpClient != null)
+//             {
+//                 try
+//                 {
+//                     SendBuffer sbs = null;
+//                     lock (_sendBuffers)
+//                     {
+//                         if (!_sendBuffers.TryDequeue(out sbs))
+//                         {
+//                         }
+//                     }
+//
+//                     if (sbs != null)
+//                     {
+//                         byte[] data = GetSendData(sbs);
+//                         _tcpClient.Send(data);
+//                     }
+//
+//                     long currTime = DateTime.Now.Ticks / 10000;
+//                     double kk = currTime - jg;
+//                     if (kk > 5 * 1000)
+//                     {
+//                         jg = currTime;
+//                         byte[] cdByte = IntToByte(1);
+//                         byte[] mdata = new byte[5];
+//                         mdata[0] = cdByte[0];
+//                         mdata[1] = cdByte[1];
+//                         mdata[2] = cdByte[2];
+//                         mdata[3] = cdByte[3];
+//                         mdata[4] = 2;
+//                         _tcpClient.Send(mdata);
+//                     }
+//                 }
+//                 catch (Exception e)
+//                 {
+//                     Console.WriteLine(e);
+//                     // isRun = false;
+//                     Dispose();
+//                 }
+//             }
+//
+//
+//             Thread.Sleep(1);
+//         }
+//     }
+//
+//     private byte[] ShortToByte(short number)
+//     {
+//         byte[] numberBytes = BitConverter.GetBytes(number).Reverse().ToArray();
+//         return numberBytes;
+//     }
+//
+//     private byte[] UShortToByte(ushort number)
+//     {
+//         byte[] numberBytes = BitConverter.GetBytes(number).Reverse().ToArray();
+//         return numberBytes;
+//     }
+//
+//     private byte[] IntToByte(int number)
+//     {
+//         byte[] numberBytes = BitConverter.GetBytes(number).Reverse().ToArray();
+//         return numberBytes;
+//     }
+//
+//     private short ByteToShort(byte[] numberBytes, bool isReverse = false)
+//     {
+//         if (isReverse)
+//         {
+//             short converted = BitConverter.ToInt16(numberBytes.Reverse().ToArray(), 0);
+//             return converted;
+//         }
+//         else
+//         {
+//             short converted = BitConverter.ToInt16(numberBytes, 0);
+//             return converted;
+//         }
+//     }
+//
+//     private ushort ByteToUshort(byte[] numberBytes, bool isReverse = false)
+//     {
+//         if (isReverse)
+//         {
+//             ushort converted = BitConverter.ToUInt16(numberBytes.Reverse().ToArray(), 0);
+//             return converted;
+//         }
+//         else
+//         {
+//             ushort converted = BitConverter.ToUInt16(numberBytes, 0);
+//             return converted;
+//         }
+//     }
+//
+//     private int ByteToInt(byte[] numberBytes, bool isReverse = false)
+//     {
+//         if (isReverse)
+//         {
+//             int converted = BitConverter.ToInt32(numberBytes.Reverse().ToArray(), 0);
+//             return converted;
+//         }
+//         else
+//         {
+//             int converted = BitConverter.ToInt32(numberBytes, 0);
+//             return converted;
+//         }
+//     }
+//
+//
+//     private void TheUpdate()
+//     {
+//         while (isRun)
+//         {
+//             // if (sae == null)
+//             // {
+//             //     SendAe();
+//             // }
+//
+//             try
+//             {
+//                 // SocketAsyncEventArgs sae=new SocketAsyncEventArgs();
+//                 // sae.SetBuffer(buffData);
+//
+//                 int count = _tcpClient.Receive(buffData);
+//
+//                 // if (count <= 4)
+//                 // {
+//                 //     Thread.Sleep(1);
+//                 //     continue;
+//                 // }
+//                 // LogTool.Log("数据来了" + count);
+//                 // byte[] currBuferr=new byte[count];
+//                 // Array.Copy(buffData, 0, currBuferr, 0,count);
+//                 // currBuferr = currBuferr.Reverse().ToArray();
+//                 try
+//                 {
+//                     int currCount = 0;
+//                     int startIndex = 0;
+//
+//                     // bool isEnd = false;
+//                     while (currCount < count)
+//                     {
+//                         // isEnd = true;
+//                         byte[] data = null;
+//                         ushort xueLieHao = 1;
+//                         int cdShort = 0;
+//                         // if (isWeiBao&&lastBuffData!=null)
+//                         // {
+//                         //     LogTool.Log("修复尾包"+lastBuffData.Length+"__"+count);
+//                         //     isWeiBao = false;
+//                         //     int maxCount = 6553500;
+//                         //     if (count + lastBuffData.Length > maxCount)
+//                         //     {
+//                         //         maxCount = count + lastBuffData.Length;
+//                         //     }
+//                         //     byte[] newBuffData = new byte[6553500];
+//                         //     Array.Copy(lastBuffData, 0, newBuffData, 0, lastBuffData.Length);
+//                         //     Array.Copy(buffData, 0, newBuffData, lastBuffData.Length, count);
+//                         //     count += lastBuffData.Length;
+//                         //     buffData = newBuffData;
+//                         //     lastBuffData = null;
+//                         // }
+//                         if (!isBufferData)
+//                         {
+//                             if (weiBaoBuffData != null)
+//                             {
+//                                 int maxCount = 6553500;
+//                                 if (count + weiBaoBuffData.Length > maxCount)
+//                                 {
+//                                     maxCount = count + weiBaoBuffData.Length;
+//                                 }
+//
+//                                 // LogTool.Log("修复包太短__" + count + "___" + weiBaoBuffData.Length);
+//                                 byte[] newBuff = new byte[maxCount];
+//                                 Array.Copy(weiBaoBuffData, 0, newBuff, 0, weiBaoBuffData.Length);
+//                                 Array.Copy(buffData, 0, newBuff, weiBaoBuffData.Length, count);
+//
+//                                 buffData = newBuff;
+//                                 count += weiBaoBuffData.Length;
+//                                 // LogTool.Log("修复包后太短__" + count);
+//                                 if (count < 6)
+//                                 {
+//                                     weiBaoBuffData = new byte[count];
+//                                     // LogTool.Log("包太短222__" + count);
+//                                     Array.Copy(buffData, currCount, weiBaoBuffData, 0, count);
+//                                     break;
+//                                 }
+//                                 else
+//                                 {
+//                                     weiBaoBuffData = null;
+//                                 }
+//                             }
+//                             else
+//                             {
+//                                 if (count - currCount < 6)
+//                                 {
+//                                     weiBaoBuffData = new byte[count];
+//                                     // LogTool.Log("包太短__" + count);
+//                                     Array.Copy(buffData, currCount, weiBaoBuffData, 0, count);
+//                                     break;
+//                                 }
+//                             }
+//                         }
+//
+//                         if (!isBufferData)
+//                         {
+//                             byte[] cdByte = new byte[2];
+//                             cdByte[0] = buffData[currCount];
+//                             currCount++;
+//                             cdByte[1] = buffData[currCount];
+//                             currCount++;
+//                             xueLieHao = ByteToUshort(cdByte, true);
+//
+//                             byte[] dataBuffLanl = new byte[4];
+//                             dataBuffLanl[0] = buffData[currCount];
+//                             currCount++;
+//                             dataBuffLanl[1] = buffData[currCount];
+//                             currCount++;
+//                             dataBuffLanl[2] = buffData[currCount];
+//                             currCount++;
+//                             dataBuffLanl[3] = buffData[currCount];
+//                             currCount++;
+//                             cdShort = (ByteToInt(dataBuffLanl, true));
+//                             // LogTool.Log("数据到来" + cdShort + "__" + count + "_" + xueLieHao);
+//                             if ((currCount + cdShort) > count) //处理半包情况
+//                             {
+//                                 lastBuffData = new byte[count - currCount];
+//                                 lastCount = cdShort;
+//                                 lastXueLieHao = xueLieHao;
+//                                 Array.Copy(buffData, currCount, lastBuffData, 0, lastBuffData.Length);
+//                                 // LogTool.Log("数据只有一半" + count + "__" + currCount + "___" + cdShort);
+//                                 isBufferData = true;
+//                                 break;
+//                             }
+//                             else
+//                             {
+//                                 // LogTool.Log(currCount + "_收到长度:" + cdShort + "_Max" + count);
+//                                 data = new byte[cdShort];
+//                                 Array.Copy(buffData, currCount, data, 0, data.Length);
+//                             }
+//                         }
+//                         else if (lastCount - lastBuffData.Length > count)
+//                         {
+//                             // LogTool.Log("数据只有一半的一半" + count + "__" + lastCount + "___" + lastBuffData.Length);
+//                             byte[] newLastBuffData = new byte[lastBuffData.Length + count];
+//                             Array.Copy(lastBuffData, 0, newLastBuffData, 0, lastBuffData.Length);
+//                             Array.Copy(buffData, 0, newLastBuffData, lastBuffData.Length, count);
+//                             lastBuffData = newLastBuffData;
+//                             break;
+//                         }
+//
+//                         else if (lastBuffData != null) //处理半包情况
+//                         {
+//                             isBufferData = false;
+//                             // LogTool.Log("修复半包" + lastCount + "__" + count + "___" +
+//                             //             (lastCount - lastBuffData.Length));
+//                             xueLieHao = lastXueLieHao;
+//                             data = new byte[lastCount];
+//                             cdShort = lastCount - lastBuffData.Length;
+//                             Array.Copy(lastBuffData, 0, data, 0, lastBuffData.Length);
+//                             Array.Copy(buffData, currCount, data, lastBuffData.Length, cdShort);
+//                         }
+//
+//                         SimulationCombat cr = SimulationCombat.Parser.ParseFrom(data);
+//                         RequestBuffer buffer = new RequestBuffer();
+//                         buffer.combatRequest = cr;
+//                         buffer.xlh = xueLieHao;
+//                         // allCount++;
+//                         // LogTool.Log("shoudao "+allCount);
+//                         // buffer.httpListenerContext = httpListenerContext;
+//                         LogTool.Log("收到中转服请求" + cr.CombatType + "___" + xueLieHao);
+//                         AddBuffer(buffer);
+//                         currCount += cdShort;
+//                         startIndex = currCount;
+//                     }
+//
+//                     // if (isEnd&&currCount < count&&!isBufferData)//尾包
+//                     // {
+//                     //     LogTool.Log("尾巴处理"+currCount+"___"+count);
+//                     //     isWeiBao = true;
+//                     //     lastBuffData = new byte[count - currCount];
+//                     //     Array.Copy(buffData, currCount, lastBuffData, 0, lastBuffData.Length);
+//                     //    
+//                     // }
+//                 }
+//                 catch (Exception e)
+//                 {
+//                     // RequestBuffer buffer = new RequestBuffer();
+//                     // buffer.combatRequest = cr;
+//                     LogTool.Log(e);
+//
+//                     Send(null, null);
+//                     // LogTool.Log("");
+//                 }
+//             }
+//             catch (Exception e)
+//             {
+//                 LogTool.Log(e);
+//                 break;
+//             }
+//         }
+//
+//         LogTool.Log("服务器执行完毕");
+//     }
+//
+//
+//     public void AddBuffer(RequestBuffer buffer)
+//     {
+//         lock (requestBuffer)
+//         {
+//             requestBuffer.Enqueue(buffer);
+//         }
+//     }
+//
+//     public RequestBuffer GetRequestBuffer()
+//     {
+//         lock (requestBuffer)
+//         {
+//             if (requestBuffer.TryDequeue(out RequestBuffer buffer))
+//             {
+//                 return buffer;
+//             }
+//
+//             return null;
+//         }
+//     }
+//
+//     private byte[] GetSendData(SendBuffer sendBuffer)
+//     {
+//         byte[] mdata = null;
+//         if (sendBuffer != null)
+//         {
+//             if (sendBuffer.SimulationFightTogetherResponse != null)
+//             {
+//                 byte[] data = null;
+//                 int size = sendBuffer.SimulationFightTogetherResponse.CalculateSize();
+//                 data = new byte[size];
+//                 CodedOutputStream cos = new CodedOutputStream(data);
+//                 sendBuffer.SimulationFightTogetherResponse.WriteTo(cos);
+//                 cos.CheckNoSpaceLeft();
+//                 LogTool.Log("回复消息" + sendBuffer.RequestBuffer.xlh + "__" + data.Length);
+//                 mdata = new byte[data.Length + 7];
+//                 byte[] zcd = IntToByte((mdata.Length - 4));
+//
+//
+//                 mdata[0] = zcd[0];
+//                 mdata[1] = zcd[1];
+//                 mdata[2] = zcd[2];
+//                 mdata[3] = zcd[3];
+//
+//                 // LogTool.Log( "mdata"+[0]+"_"+ mdata[1]+"_"+ mdata[2]+"_"+ mdata[3]);
+//
+//                 mdata[4] = 1;
+//                 byte[] cdByte = UShortToByte(sendBuffer.RequestBuffer.xlh);
+//                 mdata[5] = cdByte[0];
+//                 mdata[6] = cdByte[1];
+//
+//                 Array.Copy(data, 0, mdata, 7, data.Length);
+//             }
+//             else
+//             {
+//                 if (sendBuffer.SendBufferType == SendBufferType.Connect)
+//                 {
+//                     byte[] cdByte = IntToByte(3);
+//                     mdata = new byte[7];
+//                     mdata[0] = cdByte[0];
+//                     mdata[1] = cdByte[1];
+//                     mdata[2] = cdByte[2];
+//                     mdata[3] = cdByte[3];
+//                     mdata[4] = 0;
+//                     cdByte = UShortToByte(sendBuffer.ver);
+//                     mdata[5] = cdByte[0];
+//                     mdata[6] = cdByte[1];
+//                 }
+//                 else
+//                 {
+//                     byte[] cdByte = IntToByte(3);
+//                     mdata = new byte[7];
+//                     mdata[0] = cdByte[0];
+//                     mdata[1] = cdByte[1];
+//                     mdata[2] = cdByte[2];
+//                     mdata[3] = cdByte[3];
+//
+//                     mdata[4] = 3;
+//                     cdByte = UShortToByte(sendBuffer.RequestBuffer.xlh);
+//                     mdata[5] = cdByte[0];
+//                     mdata[6] = cdByte[1];
+//                 }
+//             }
+//         }
+//         else
+//         {
+//             LogTool.Log("回复消息" + 125);
+//
+//             byte[] cdByte = IntToByte(1);
+//             mdata = new byte[7];
+//             mdata[0] = cdByte[0];
+//             mdata[1] = cdByte[1];
+//             mdata[2] = cdByte[2];
+//             mdata[3] = cdByte[3];
+//
+//             mdata[4] = 4;
+//         }
+//
+//
+//         return mdata;
+//     }
+//
+//     public void Send(RequestBuffer buffer, SimulationCombatResponse resp,
+//         SendBufferType sendBufferType = SendBufferType.Data)
+//     {
+//         lock (_sendBuffers)
+//         {
+//             SendBuffer sendBuffer = new SendBuffer();
+//             sendBuffer.RequestBuffer = buffer;
+//             sendBuffer.SimulationFightTogetherResponse = resp;
+//             sendBuffer.SendBufferType = sendBufferType;
+//             _sendBuffers.Enqueue(sendBuffer);
+//         }
+//     }
+//
+//     public void Send(SendBuffer sendBuffer)
+//     {
+//         lock (_sendBuffers)
+//         {
+//             // SendBuffer sendBuffer = new SendBuffer();
+//             // sendBuffer.RequestBuffer = buffer;
+//             // sendBuffer.SimulationFightTogetherResponse = resp;
+//             // sendBuffer.SendBufferType = sendBufferType;
+//             _sendBuffers.Enqueue(sendBuffer);
+//         }
+//     }
+//
+//     public void Dispose()
+//     {
+//         isRun = false;
+//         if (thread != null)
+//         {
+//             _tcpClient.Close();
+//
+//             thread.Abort();
+//         }
+//
+//         if (heartThread != null)
+//         {
+//             heartThread.Abort();
+//         }
+//
+//         heartThread = null;
+//         thread = null;
+//     }
+// }
+//
+// }
+// }

+ 25 - 0
NetServer/NetServer.csproj

@@ -0,0 +1,25 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <OutputType>Exe</OutputType>
+        <TargetFramework>net7.0</TargetFramework>
+        <ImplicitUsings>enable</ImplicitUsings>
+        <Nullable>enable</Nullable>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <ProjectReference Include="..\NetCore\NetCore.csproj" />
+    </ItemGroup>
+
+    <ItemGroup>
+      <PackageReference Include="MongoDB.Driver" Version="3.1.0" />
+      <PackageReference Include="Nett" Version="0.15.0" />
+    </ItemGroup>
+
+    <ItemGroup>
+      <None Update="serverconfig.toml">
+        <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+      </None>
+    </ItemGroup>
+
+</Project>

+ 17 - 0
NetServer/ServerLogic/LogicManager.cs

@@ -0,0 +1,17 @@
+using NetCore;
+using NetCore.ContentParse;
+using NetCore.Protocol.MemoryPack;
+
+namespace NetServer.ServerLogic;
+
+public class LogicManager : ILogicalParsing
+{
+    public void Logic(object data, IConnection iConnection)
+    {
+        MemoryRequest memoryRequest = data as MemoryRequest;
+        Console.WriteLine("服务器收到消息"+memoryRequest.count);
+        MemoryResponse memoryResponse = new MemoryResponse();
+        memoryResponse.count = 999;
+        iConnection.SendData(memoryResponse);
+    }
+}

+ 26 - 0
NetServer/ServerMain.cs

@@ -0,0 +1,26 @@
+using NetCore.ContentParse;
+using NetCore.Protocol.MemoryPack;
+using NetServer.MongoDB;
+using NetServer.NetLink.TCP;
+using NetServer.ServerLogic;
+using NetServer.TomlData;
+using Nett;
+
+namespace NetServer;
+
+public class ServerMain
+{
+    static void Main(string[] args)
+    {
+        ServerConfig serverConfig = Toml.ReadFile<ServerConfig>("serverconfig.toml");
+        DBLink dbLink = new DBLink();
+        dbLink.LinkDB(serverConfig.dbpath, serverConfig.dbname);
+        LogicManager logicManager = new LogicManager();
+        TCPServer<ByteParse, MemoryWrap<MemoryResponse, MemoryRequest>> tcpServer =
+            new TCPServer<ByteParse, MemoryWrap<MemoryResponse, MemoryRequest>>(1000, logicManager);
+        while (true)
+        {
+            Thread.Sleep(10);
+        }
+    }
+}

+ 7 - 0
NetServer/TomlData/ServerConfig.cs

@@ -0,0 +1,7 @@
+namespace NetServer.TomlData;
+
+public class ServerConfig
+{
+    public string dbpath { get; set; } 
+    public string dbname { get; set; }
+}

+ 2 - 0
NetServer/serverconfig.toml

@@ -0,0 +1,2 @@
+dbpath="mongodb://admin:abcdefgzaq12wsx@139.155.99.185:27017"
+dbname="xy001"

+ 13 - 0
NetServerCore/NetServerCore.csproj

@@ -0,0 +1,13 @@
+<Project Sdk="Microsoft.NET.Sdk">
+
+    <PropertyGroup>
+        <TargetFramework>net7.0</TargetFramework>
+        <ImplicitUsings>enable</ImplicitUsings>
+        <Nullable>enable</Nullable>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <ProjectReference Include="..\NetCore\NetCore.csproj" />
+    </ItemGroup>
+
+</Project>

+ 4 - 0
NetServerCore/obj/Debug/net7.0/.NETCoreApp,Version=v7.0.AssemblyAttributes.cs

@@ -0,0 +1,4 @@
+// <autogenerated />
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v7.0", FrameworkDisplayName = ".NET 7.0")]

+ 22 - 0
NetServerCore/obj/Debug/net7.0/NetServerCore.AssemblyInfo.cs

@@ -0,0 +1,22 @@
+//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("NetServerCore")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
+[assembly: System.Reflection.AssemblyProductAttribute("NetServerCore")]
+[assembly: System.Reflection.AssemblyTitleAttribute("NetServerCore")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// 由 MSBuild WriteCodeFragment 类生成。
+

+ 1 - 0
NetServerCore/obj/Debug/net7.0/NetServerCore.AssemblyInfoInputs.cache

@@ -0,0 +1 @@
+c44a8d444ad82352653336026f2e4ea97580c666d60a78b9e85c5fc613262ab9

+ 13 - 0
NetServerCore/obj/Debug/net7.0/NetServerCore.GeneratedMSBuildEditorConfig.editorconfig

@@ -0,0 +1,13 @@
+is_global = true
+build_property.TargetFramework = net7.0
+build_property.TargetPlatformMinVersion = 
+build_property.UsingMicrosoftNETSdkWeb = 
+build_property.ProjectTypeGuids = 
+build_property.InvariantGlobalization = 
+build_property.PlatformNeutralAssembly = 
+build_property.EnforceExtendedAnalyzerRules = 
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = NetServerCore
+build_property.ProjectDir = D:\Server\NetServer\NetServer\NetServerCore\
+build_property.EnableComHosting = 
+build_property.EnableGeneratedComInterfaceComImportInterop = 

+ 8 - 0
NetServerCore/obj/Debug/net7.0/NetServerCore.GlobalUsings.g.cs

@@ -0,0 +1,8 @@
+// <auto-generated/>
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.IO;
+global using global::System.Linq;
+global using global::System.Net.Http;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;

二进制
NetServerCore/obj/Debug/net7.0/NetServerCore.assets.cache


二进制
NetServerCore/obj/Debug/net7.0/NetServerCore.csproj.AssemblyReference.cache


+ 146 - 0
NetServerCore/obj/NetServerCore.csproj.nuget.dgspec.json

@@ -0,0 +1,146 @@
+{
+  "format": 1,
+  "restore": {
+    "D:\\Server\\NetServer\\NetServer\\NetServerCore\\NetServerCore.csproj": {}
+  },
+  "projects": {
+    "D:\\Server\\NetServer\\NetServer\\NetCore\\NetCore.csproj": {
+      "version": "1.0.0",
+      "restore": {
+        "projectUniqueName": "D:\\Server\\NetServer\\NetServer\\NetCore\\NetCore.csproj",
+        "projectName": "NetCore",
+        "projectPath": "D:\\Server\\NetServer\\NetServer\\NetCore\\NetCore.csproj",
+        "packagesPath": "C:\\Users\\ck\\.nuget\\packages\\",
+        "outputPath": "D:\\Server\\NetServer\\NetServer\\NetCore\\obj\\",
+        "projectStyle": "PackageReference",
+        "fallbackFolders": [
+          "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+        ],
+        "configFilePaths": [
+          "C:\\Users\\ck\\AppData\\Roaming\\NuGet\\NuGet.Config",
+          "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+          "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+        ],
+        "originalTargetFrameworks": [
+          "net7.0"
+        ],
+        "sources": {
+          "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+          "https://api.nuget.org/v3/index.json": {}
+        },
+        "frameworks": {
+          "net7.0": {
+            "targetAlias": "net7.0",
+            "projectReferences": {}
+          }
+        },
+        "warningProperties": {
+          "warnAsError": [
+            "NU1605"
+          ]
+        },
+        "restoreAuditProperties": {
+          "enableAudit": "true",
+          "auditLevel": "low",
+          "auditMode": "direct"
+        }
+      },
+      "frameworks": {
+        "net7.0": {
+          "targetAlias": "net7.0",
+          "dependencies": {
+            "MemoryPack": {
+              "target": "Package",
+              "version": "[1.21.3, )"
+            }
+          },
+          "imports": [
+            "net461",
+            "net462",
+            "net47",
+            "net471",
+            "net472",
+            "net48",
+            "net481"
+          ],
+          "assetTargetFallback": true,
+          "warn": true,
+          "frameworkReferences": {
+            "Microsoft.NETCore.App": {
+              "privateAssets": "all"
+            }
+          },
+          "runtimeIdentifierGraphPath": "C:\\Users\\ck\\.dotnet\\sdk\\8.0.404\\RuntimeIdentifierGraph.json"
+        }
+      }
+    },
+    "D:\\Server\\NetServer\\NetServer\\NetServerCore\\NetServerCore.csproj": {
+      "version": "1.0.0",
+      "restore": {
+        "projectUniqueName": "D:\\Server\\NetServer\\NetServer\\NetServerCore\\NetServerCore.csproj",
+        "projectName": "NetServerCore",
+        "projectPath": "D:\\Server\\NetServer\\NetServer\\NetServerCore\\NetServerCore.csproj",
+        "packagesPath": "C:\\Users\\ck\\.nuget\\packages\\",
+        "outputPath": "D:\\Server\\NetServer\\NetServer\\NetServerCore\\obj\\",
+        "projectStyle": "PackageReference",
+        "fallbackFolders": [
+          "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+        ],
+        "configFilePaths": [
+          "C:\\Users\\ck\\AppData\\Roaming\\NuGet\\NuGet.Config",
+          "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+          "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+        ],
+        "originalTargetFrameworks": [
+          "net7.0"
+        ],
+        "sources": {
+          "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+          "https://api.nuget.org/v3/index.json": {}
+        },
+        "frameworks": {
+          "net7.0": {
+            "targetAlias": "net7.0",
+            "projectReferences": {
+              "D:\\Server\\NetServer\\NetServer\\NetCore\\NetCore.csproj": {
+                "projectPath": "D:\\Server\\NetServer\\NetServer\\NetCore\\NetCore.csproj"
+              }
+            }
+          }
+        },
+        "warningProperties": {
+          "warnAsError": [
+            "NU1605"
+          ]
+        },
+        "restoreAuditProperties": {
+          "enableAudit": "true",
+          "auditLevel": "low",
+          "auditMode": "direct"
+        }
+      },
+      "frameworks": {
+        "net7.0": {
+          "targetAlias": "net7.0",
+          "imports": [
+            "net461",
+            "net462",
+            "net47",
+            "net471",
+            "net472",
+            "net48",
+            "net481"
+          ],
+          "assetTargetFallback": true,
+          "warn": true,
+          "frameworkReferences": {
+            "Microsoft.NETCore.App": {
+              "privateAssets": "all"
+            }
+          },
+          "runtimeIdentifierGraphPath": "C:\\Users\\ck\\.dotnet\\sdk\\8.0.404\\RuntimeIdentifierGraph.json"
+        }
+      }
+    }
+  }
+}

+ 16 - 0
NetServerCore/obj/NetServerCore.csproj.nuget.g.props

@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+    <RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
+    <RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
+    <ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
+    <NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">$(UserProfile)\.nuget\packages\</NuGetPackageRoot>
+    <NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">C:\Users\ck\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages</NuGetPackageFolders>
+    <NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
+    <NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.10.1</NuGetToolVersion>
+  </PropertyGroup>
+  <ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
+    <SourceRoot Include="C:\Users\ck\.nuget\packages\" />
+    <SourceRoot Include="C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages\" />
+  </ItemGroup>
+</Project>

+ 2 - 0
NetServerCore/obj/NetServerCore.csproj.nuget.g.targets

@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" standalone="no"?>
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />

+ 170 - 0
NetServerCore/obj/project.assets.json

@@ -0,0 +1,170 @@
+{
+  "version": 3,
+  "targets": {
+    "net7.0": {
+      "MemoryPack/1.21.3": {
+        "type": "package",
+        "dependencies": {
+          "MemoryPack.Core": "1.21.3",
+          "MemoryPack.Generator": "1.21.3"
+        }
+      },
+      "MemoryPack.Core/1.21.3": {
+        "type": "package",
+        "compile": {
+          "lib/net7.0/MemoryPack.Core.dll": {
+            "related": ".xml"
+          }
+        },
+        "runtime": {
+          "lib/net7.0/MemoryPack.Core.dll": {
+            "related": ".xml"
+          }
+        }
+      },
+      "MemoryPack.Generator/1.21.3": {
+        "type": "package"
+      },
+      "NetCore/1.0.0": {
+        "type": "project",
+        "framework": ".NETCoreApp,Version=v7.0",
+        "dependencies": {
+          "MemoryPack": "1.21.3"
+        },
+        "compile": {
+          "bin/placeholder/NetCore.dll": {}
+        },
+        "runtime": {
+          "bin/placeholder/NetCore.dll": {}
+        }
+      }
+    }
+  },
+  "libraries": {
+    "MemoryPack/1.21.3": {
+      "sha512": "cwCtED8y400vMWx/Vp0QCSeEpVFjDU4JwF52VX9WTaqVERUvNqjG9n6osFlmFuytegyXnHvYEu1qRJ8rv/rkbg==",
+      "type": "package",
+      "path": "memorypack/1.21.3",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "Icon.png",
+        "memorypack.1.21.3.nupkg.sha512",
+        "memorypack.nuspec"
+      ]
+    },
+    "MemoryPack.Core/1.21.3": {
+      "sha512": "ajrYoBWT2aKeH4tlY8q/1C9qK1R/NK+7FkuVOX58ebOSxkABoFTqCR7W+Zk2rakUHZiEgNdRqO67hiRZPq6fLA==",
+      "type": "package",
+      "path": "memorypack.core/1.21.3",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "Icon.png",
+        "lib/net7.0/MemoryPack.Core.dll",
+        "lib/net7.0/MemoryPack.Core.xml",
+        "lib/net8.0/MemoryPack.Core.dll",
+        "lib/net8.0/MemoryPack.Core.xml",
+        "lib/netstandard2.1/MemoryPack.Core.dll",
+        "lib/netstandard2.1/MemoryPack.Core.xml",
+        "memorypack.core.1.21.3.nupkg.sha512",
+        "memorypack.core.nuspec"
+      ]
+    },
+    "MemoryPack.Generator/1.21.3": {
+      "sha512": "hYU0TAIarDKnbkNIWvb7P4zBUL+CTahkuNkczsKvycSMR5kiwQ4IfLexywNKX3s05Izp4gzDSPbueepNWZRpWA==",
+      "type": "package",
+      "path": "memorypack.generator/1.21.3",
+      "files": [
+        ".nupkg.metadata",
+        ".signature.p7s",
+        "Icon.png",
+        "analyzers/dotnet/cs/MemoryPack.Generator.dll",
+        "memorypack.generator.1.21.3.nupkg.sha512",
+        "memorypack.generator.nuspec"
+      ]
+    },
+    "NetCore/1.0.0": {
+      "type": "project",
+      "path": "../NetCore/NetCore.csproj",
+      "msbuildProject": "../NetCore/NetCore.csproj"
+    }
+  },
+  "projectFileDependencyGroups": {
+    "net7.0": [
+      "NetCore >= 1.0.0"
+    ]
+  },
+  "packageFolders": {
+    "C:\\Users\\ck\\.nuget\\packages\\": {},
+    "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
+  },
+  "project": {
+    "version": "1.0.0",
+    "restore": {
+      "projectUniqueName": "D:\\Server\\NetServer\\NetServer\\NetServerCore\\NetServerCore.csproj",
+      "projectName": "NetServerCore",
+      "projectPath": "D:\\Server\\NetServer\\NetServer\\NetServerCore\\NetServerCore.csproj",
+      "packagesPath": "C:\\Users\\ck\\.nuget\\packages\\",
+      "outputPath": "D:\\Server\\NetServer\\NetServer\\NetServerCore\\obj\\",
+      "projectStyle": "PackageReference",
+      "fallbackFolders": [
+        "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+      ],
+      "configFilePaths": [
+        "C:\\Users\\ck\\AppData\\Roaming\\NuGet\\NuGet.Config",
+        "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+        "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+      ],
+      "originalTargetFrameworks": [
+        "net7.0"
+      ],
+      "sources": {
+        "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+        "https://api.nuget.org/v3/index.json": {}
+      },
+      "frameworks": {
+        "net7.0": {
+          "targetAlias": "net7.0",
+          "projectReferences": {
+            "D:\\Server\\NetServer\\NetServer\\NetCore\\NetCore.csproj": {
+              "projectPath": "D:\\Server\\NetServer\\NetServer\\NetCore\\NetCore.csproj"
+            }
+          }
+        }
+      },
+      "warningProperties": {
+        "warnAsError": [
+          "NU1605"
+        ]
+      },
+      "restoreAuditProperties": {
+        "enableAudit": "true",
+        "auditLevel": "low",
+        "auditMode": "direct"
+      }
+    },
+    "frameworks": {
+      "net7.0": {
+        "targetAlias": "net7.0",
+        "imports": [
+          "net461",
+          "net462",
+          "net47",
+          "net471",
+          "net472",
+          "net48",
+          "net481"
+        ],
+        "assetTargetFallback": true,
+        "warn": true,
+        "frameworkReferences": {
+          "Microsoft.NETCore.App": {
+            "privateAssets": "all"
+          }
+        },
+        "runtimeIdentifierGraphPath": "C:\\Users\\ck\\.dotnet\\sdk\\8.0.404\\RuntimeIdentifierGraph.json"
+      }
+    }
+  }
+}

+ 12 - 0
NetServerCore/obj/project.nuget.cache

@@ -0,0 +1,12 @@
+{
+  "version": 2,
+  "dgSpecHash": "9oSXbxvuIeE=",
+  "success": true,
+  "projectFilePath": "D:\\Server\\NetServer\\NetServer\\NetServerCore\\NetServerCore.csproj",
+  "expectedPackageFiles": [
+    "C:\\Users\\ck\\.nuget\\packages\\memorypack\\1.21.3\\memorypack.1.21.3.nupkg.sha512",
+    "C:\\Users\\ck\\.nuget\\packages\\memorypack.core\\1.21.3\\memorypack.core.1.21.3.nupkg.sha512",
+    "C:\\Users\\ck\\.nuget\\packages\\memorypack.generator\\1.21.3\\memorypack.generator.1.21.3.nupkg.sha512"
+  ],
+  "logs": []
+}

+ 1 - 0
NetServerCore/obj/project.packagespec.json

@@ -0,0 +1 @@
+"restore":{"projectUniqueName":"D:\\Server\\NetServer\\NetServer\\NetServerCore\\NetServerCore.csproj","projectName":"NetServerCore","projectPath":"D:\\Server\\NetServer\\NetServer\\NetServerCore\\NetServerCore.csproj","outputPath":"D:\\Server\\NetServer\\NetServer\\NetServerCore\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net7.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net7.0":{"targetAlias":"net7.0","projectReferences":{"D:\\Server\\NetServer\\NetServer\\NetCore\\NetCore.csproj":{"projectPath":"D:\\Server\\NetServer\\NetServer\\NetCore\\NetCore.csproj"}}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"}}"frameworks":{"net7.0":{"targetAlias":"net7.0","imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Users\\ck\\.dotnet\\sdk\\8.0.404\\RuntimeIdentifierGraph.json"}}

+ 1 - 0
NetServerCore/obj/rider.project.model.nuget.info

@@ -0,0 +1 @@
+17378599546970849

+ 1 - 0
NetServerCore/obj/rider.project.restore.info

@@ -0,0 +1 @@
+17378599546970849