Browse Source

移除cs项目

王刚 3 years ago
parent
commit
64adc7b59f
73 changed files with 0 additions and 23521 deletions
  1. 0 13
      CSserver/BattleRoom/BattleRoom.csproj
  2. 0 89
      CSserver/BattleRoom/Program.cs
  3. 0 230
      CSserver/BattleRoom/server/Peer.cs
  4. 0 284
      CSserver/BattleRoom/server/Room.cs
  5. 0 167
      CSserver/BattleRoom/server/RoomManager.cs
  6. 0 190
      CSserver/BattleRoom/server/ServerPeer.cs
  7. 0 13
      CSserver/BossServer/BossServer.csproj
  8. 0 64
      CSserver/BossServer/Program.cs
  9. 0 162
      CSserver/BossServer/server/Boss.cs
  10. 0 163
      CSserver/BossServer/server/EmailProc.cs
  11. 0 248
      CSserver/BossServer/server/Peer.cs
  12. 0 291
      CSserver/BossServer/server/Room.cs
  13. 0 21
      CSserver/DataTransfer/DataTransfer.csproj
  14. 0 274
      CSserver/DataTransfer/Program.cs
  15. 0 462
      CSserver/DataTransfer/tongji/DataToExcelText.cs
  16. 0 241
      CSserver/DataTransfer/tongji/UserStatistics.cs
  17. 0 140
      CSserver/DataTransfer/tongji/loseUserDataTransfer.cs
  18. 0 112
      CSserver/Lib1/Config.cs
  19. 0 14
      CSserver/Lib1/Lib1.csproj
  20. 0 212
      CSserver/Lib1/MemKey_User.cs
  21. 0 38
      CSserver/Lib1/db/Mongo.cs
  22. 0 847
      CSserver/Lib1/db/MysqlUtil.cs
  23. 0 30
      CSserver/Lib1/db/Redis.cs
  24. 0 137
      CSserver/Lib1/utils/CompressUtil.cs
  25. 0 55
      CSserver/Lib1/utils/DateTimeExtension.cs
  26. 0 180
      CSserver/Lib1/utils/HttpHelper.cs
  27. 0 847
      CSserver/Lib1/utils/MysqlUtil.cs
  28. 0 31
      CSserver/Lib1/utils/Redis.cs
  29. 0 53
      CSserver/Lib1/utils/Singleton.cs
  30. 0 26
      CSserver/Lib1/utils/SocketUtils.cs
  31. 0 40
      CSserver/Lib1/utils/TaskWaitingExtension.cs
  32. 0 13
      CSserver/MultiDup/MultiDup.csproj
  33. 0 103
      CSserver/MultiDup/Program.cs
  34. 0 184
      CSserver/MultiDup/server/Lobby.cs
  35. 0 223
      CSserver/MultiDup/server/Peer.cs
  36. 0 265
      CSserver/MultiDup/server/Room.cs
  37. 0 191
      CSserver/MultiDup/server/ServerPeer.cs
  38. 0 174
      CSserver/PBReferens/DataBuff.cs
  39. 0 16
      CSserver/PBReferens/PBReferens.csproj
  40. 0 9
      CSserver/PBReferens/pb/ErrCode.proto
  41. 0 104
      CSserver/PBReferens/pb/MsgTypeEnum.proto
  42. 0 185
      CSserver/PBReferens/pb/MultiDup.proto
  43. 0 62
      CSserver/PBReferens/pb/chat.proto
  44. 0 55
      CSserver/PBReferens/pb/fight.proto
  45. 0 786
      CSserver/PBReferens/pbcs/Chat.cs
  46. 0 41
      CSserver/PBReferens/pbcs/ErrCode.cs
  47. 0 1159
      CSserver/PBReferens/pbcs/Fight.cs
  48. 0 204
      CSserver/PBReferens/pbcs/MsgTypeEnum.cs
  49. 0 4775
      CSserver/PBReferens/pbcs/MultiDup.cs
  50. 0 617
      CSserver/PBReferens/pbgo/pb/BossServer/fight.pb.go
  51. 0 535
      CSserver/PBReferens/pbgo/pb/Chat/chat.pb.go
  52. 0 126
      CSserver/PBReferens/pbgo/pb/ErrCode.pb.go
  53. 0 312
      CSserver/PBReferens/pbgo/pb/MsgTypeEnum.pb.go
  54. 0 2286
      CSserver/PBReferens/pbgo/pb/MultiDup/MultiDup.pb.go
  55. 0 13
      CSserver/RedisTransfer/ITransfer.cs
  56. 0 10
      CSserver/RedisTransfer/Program.cs
  57. 0 20
      CSserver/RedisTransfer/RedisTransfer.csproj
  58. 0 75
      CSserver/RedisTransfer/Trans2Json.cs
  59. 0 140
      CSserver/RedisTransfer/Trans2MongoDB.cs
  60. 0 3209
      CSserver/RedisTransfer/keys.txt
  61. 0 29
      CSserver/StatisticsTransfer/Program.cs
  62. 0 18
      CSserver/StatisticsTransfer/StatisticsTransfer.csproj
  63. 0 25
      CSserver/StatisticsTransfer/StatisticsTransfer.sln
  64. 0 119
      CSserver/StatisticsTransfer/tongji/ReportedLogs.cs
  65. 0 359
      CSserver/StatisticsTransfer/tongji/TargetStatistics.cs
  66. 0 252
      CSserver/clientTest/Program.cs
  67. 0 268
      CSserver/clientTest/Program_Chat.cs
  68. 0 393
      CSserver/clientTest/Program_MultiDup.cs
  69. 0 18
      CSserver/clientTest/clientTest.csproj
  70. 0 85
      CSserver/csserver.sln
  71. 0 13
      CSserver/csserver/ChatServer.csproj
  72. 0 179
      CSserver/csserver/Program.cs
  73. 0 197
      CSserver/csserver/server/Peer.cs

+ 0 - 13
CSserver/BattleRoom/BattleRoom.csproj

@@ -1,13 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>net6.0</TargetFramework>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\Lib1\Lib1.csproj" />
-    <ProjectReference Include="..\PBReferens\PBReferens.csproj" />
-  </ItemGroup>
-
-</Project>

+ 0 - 89
CSserver/BattleRoom/Program.cs

@@ -1,89 +0,0 @@
-using System;
-using System.Net;
-using System.Net.Sockets;
-using System.Threading.Tasks;
-using System.Diagnostics;
-using System.Collections.Generic;
-using MultiDup;
-namespace BattleRoom
-{
-    internal class Program
-    {
-
-        const int port = 16006;                                                        // 端口号(用来监听客户端连接的)  
-
-        static void Main(string[] args)
-        {
-            selfTest();
-            Console.WriteLine("开启监听......");
-            Console.WriteLine("ctrl + c 退出程序......");
-
-            InitServerPeer();
-
-            Task.Run(WatchConnecting).Wait();                                                // 开启监听线程 
-
-        }
-
-        /// <summary>
-        /// 初始化服务器间socket
-        /// </summary>
-        async static void InitServerPeer()
-        {
-            var port = 16005;                                                                // 连接本机的大厅服务端口            
-            var endPoint = new IPEndPoint(IPAddress.Loopback, port);
-            //var endPoint = new IPEndPoint(IPAddress.Parse("192.168.10.17"), port);
-            var client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
-
-            try
-            {
-                await client.ConnectAsync(endPoint);
-            }
-            catch (Exception ee)
-            {
-                Debug.WriteLine(ee.Message);
-            }
-            RoomManager.Instance.ServerPeer = new ServerPeer(client);                     // 给管理器的服务器间socket赋值
-            RoomManager.Instance.ServerPeer.OnSocketDisconnected += () => { InitServerPeer(); };
-        }
-
-        static void selfTest()
-        {
-            var rdb = Redis.Ins.GetDatabase(1);
-            Debug.Assert(rdb.StringSet("test", "wanggang" + DateTime.Now.ToString("yyyyMMddHHmmss")), "Redis读写失败!");
-        }
-
-        /// <summary>
-        /// 监听客户端发来的请求  
-        /// </summary>
-        async static Task WatchConnecting()
-        {
-            IPAddress ip = IPAddress.Any;
-            IPEndPoint ipe = new IPEndPoint(ip, port);                                  //将IP地址和端口号绑定到网络节点point上  
-
-            //定义一个套接字用于监听客户端发来的消息,包含三个参数(IP4寻址协议,流式连接,Tcp协议)  
-            Socket SocketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
-            SocketWatch.Bind(ipe);                                                      // 监听绑定的网络节点           
-            SocketWatch.Listen(20);                                                     // 将套接字的监听队列长度限制为20    
-
-            while (true)                                                                // 持续不断监听客户端发来的请求     
-            {
-                Socket connection;
-                try
-                {
-                    connection = await SocketWatch.AcceptAsync();
-                }
-                catch (Exception ex)
-                {
-                    Console.WriteLine(ex.Message);                                       // 提示套接字监听异常     
-                    break;
-                }
-
-                RoomManager.Instance.OnNewPeerConnected(new Peer(connection));           // 有新客户端连入
-            }
-            SocketWatch.Close();                                                         // 结束监听socket
-        }
-
-
-    }
-}
-

+ 0 - 230
CSserver/BattleRoom/server/Peer.cs

@@ -1,230 +0,0 @@
-using StackExchange.Redis;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Net.Sockets;
-using System.Threading.Channels;
-using System.Threading.Tasks;
-using ProtoDataBuff;
-using pb = global::Google.Protobuf;
-
-using MultiDup;
-namespace BattleRoom
-{
-    /// <summary>
-    /// 客户端状态
-    /// </summary>
-    enum ClientState
-    {
-        /// <summary>
-        /// 已连接,未登录
-        /// </summary>
-        Connected,
-        /// <summary>
-        /// 在大厅(已登录)
-        /// </summary>
-        InLobby,
-        /// <summary>
-        /// 在房间
-        /// </summary>
-        InRoom,
-        /// <summary>
-        /// 已开始游戏(在房间)
-        /// </summary>
-        InGame,
-        /// <summary>
-        /// 已断开
-        /// </summary>
-        Leaved
-    }
-
-
-    /// <summary>
-    /// 一个连接对象的抽象,代表一个远端的对象
-    /// </summary>
-    class Peer
-    {
-        /// <summary>
-        /// 玩家属性字段
-        /// </summary>
-        public Dictionary<string, object> Properties = new();
-
-        /// <summary>
-        /// 客户端状态字段
-        /// </summary>
-        public ClientState CurrentState = ClientState.Connected;
-
-
-        /// <summary>
-        /// peer的唯一Id
-        /// </summary>
-        public readonly int Id;
-
-        /// <summary>
-        /// socket连接
-        /// </summary>
-        public readonly Socket Sock;
-        public Action OnSocketDisconnected;
-        public string UID => Properties.TryGetValue(PropertyName.Uid, out var uid)? uid.ToString():"";
-            
-        public int zoneid => Properties.TryGetValue(PropertyName.Zoneid, out var zoneid)?Convert.ToInt32(zoneid):1;
-
-
-        public Room room;
-
-        /// <summary>
-        /// 线程安全的peer计数器
-        /// </summary>
-        private volatile static int _UniqPeerId = 0;
-
-        /// <summary>
-        /// 构造函数
-        /// </summary>
-        /// <param name="sock"></param>
-        public Peer(Socket sock)
-        {
-            this.Sock = sock;
-            Sock.ReceiveTimeout = 1500;                                         // 接收等待超时时间设为1.5秒 
-            Id = _UniqPeerId++;
-            var t = Task.Run(() => recv(Sock));                                 // 新建接收线程 
-            var tcs = Task.Run(WriteToClient);                                  // 向客户端发送消息线程
-            OnSocketDisconnected = () =>
-            {
-                Console.WriteLine("错误! socket断开!");
-            };
-        }
-
-
-        public void Close()
-        {
-            this.CurrentState = ClientState.Leaved;                              // 关闭接收窗口
-            //room.RemovePeer(this);                                      // 从房间中移除自己
-            
-            this.sendDataBuffer.Reader.Completion
-                .ContinueWith(t =>
-                Task.Delay(5000).ContinueWith(t1 => Sock.Close())
-                );                                                               // 延迟5秒关闭套接字
-        }
-
-        #region 消息收发
-
-        /// <summary>
-        /// 向客户端发送事件
-        /// </summary>
-        public void SendEvent(eProtocalCommand msgType, pb::IMessage msg)
-        {
-            SendToClient(msgType, msg);
-        }
-
-        /// <summary>
-        /// 向客户端发送消息
-        /// </summary>
-        /// <param name="msgType"></param>
-        /// <param name="msg"></param>
-        void SendToClient(eProtocalCommand msgType, pb::IMessage msg)
-        {
-            using var ms = new MemoryStream();
-            using var os = new pb::CodedOutputStream(ms);
-            msg.WriteTo(os);
-            os.Flush();
-            ms.Seek(0, SeekOrigin.Begin);
-            var sdata = sSocketData.FromBytes(msgType, ms.ToArray());
-            sendDataBuffer.Writer.WriteAsync(sdata).AsTask().Wait();
-        }
-
-
-        /// <summary>
-        /// 向客户端写入消息
-        /// </summary>
-        async void WriteToClient()
-        {
-            while (true)
-            {
-                try
-                {
-                    var msg = await sendDataBuffer.Reader.ReadAsync();
-                    Console.WriteLine($"向客户端发送消息{msg._protocallType}");
-                    await Sock.SendAsync(new ArraySegment<byte>(msg.ToBytes()), SocketFlags.None);
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-
-            }
-            Close();
-        }
-
-
-        /// <summary>
-        /// 发送buffer
-        /// </summary>
-        private Channel<sSocketData> sendDataBuffer = Channel.CreateUnbounded<sSocketData>();
-
-        /// <summary>
-        /// 接收客户端发来的信息,客户端套接字对象
-        /// </summary>
-        /// <param name="socketclientpara"></param>    
-        async void recv(Socket socketServer)
-        {
-
-            var _databuffer = new DataBuffer();
-            byte[] arrServerRecMsg = new byte[4096];                                                // 创建一个内存缓冲区,其大小为4k字节  
-            while (true)
-            {
-                try
-                {
-                    var length = await socketServer.ReceiveAsync(new ArraySegment<byte>(arrServerRecMsg), SocketFlags.None);   // 将接收到的信息存入到内存缓冲区,并返回其字节数组的长度    
-                    if (length <= 0 || CurrentState == ClientState.Leaved)                                                     // 视为客户端已经close连接
-                    {
-                        OnSocketDisconnected?.Invoke();
-                        break;
-                    }
-                    _databuffer.AddBuffer(arrServerRecMsg, length);                                  //将收到的数据添加到缓存器中
-                    while (_databuffer.GetData(out sSocketData _socketData))                         //取出一条完整数据,转到room的消息队列,由room统一进行逻辑处理 
-                    {
-                        Console.WriteLine(" recv: " + _socketData._protocallType);
-                        Console.WriteLine( $"CurrentState: {CurrentState}");
-                        switch (CurrentState)
-                        {
-                            case ClientState.Connected:
-                            case ClientState.InLobby:                                                                                                                 
-                                await RoomManager.Instance.MsgChannel.Writer.WriteAsync(new KeyValuePair<int, sSocketData>(this.Id, _socketData)); // 放入大厅处理队列
-                                break;
-                            case ClientState.InRoom:
-                            case ClientState.InGame:
-                                if (null != room)
-                                {
-                                    await room.MsgChannel.Writer.WriteAsync(new KeyValuePair<int, sSocketData>(this.Id, _socketData));           // 放入房间channel
-                                }
-                                else {
-                                    Console.WriteLine("错误! 尚未进入对应房间!");
-                                }
-                                break;
-                            case ClientState.Leaved:
-                                break;
-                        }
-
-                    }
-                    Array.Clear(arrServerRecMsg, 0, length);
-                }
-                catch (SocketException e)
-                {
-                    if (e.ErrorCode == 10060)                                                    // 超时的时候错误号码是10060
-                    {
-                        continue;                                                                // 继续等待  
-                    }
-                    break;
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-            }
-
-            Close();                                                                 // 关闭
-        }
-        #endregion
-    }
-
-}

+ 0 - 284
CSserver/BattleRoom/server/Room.cs

@@ -1,284 +0,0 @@
-using CSharpUtil;
-using CSharpUtil.Net;
-using ProtoDataBuff;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Channels;
-using System.Threading.Tasks;
-using static System.Console;
-using pb = global::Google.Protobuf;
-using MultiDup;
-namespace BattleRoom
-{
-    /// <summary>
-    /// 房间状态
-    /// </summary>
-    enum RoomState
-    {
-        /// <summary>
-        /// 开启状态(可以连接登入)
-        /// </summary>
-        Open,
-        /// <summary>
-        /// 已关闭(不可继续登录)
-        /// </summary>
-        Close,
-    }
-
-    enum TargetType
-    {
-        /// <summary>
-        /// 所有
-        /// </summary>
-        All,
-        /// <summary>
-        /// 其他人
-        /// </summary>
-        Others,
-
-
-    }
-
-    class PropertyName
-    {
-        public const string Uid = nameof(Uid);
-        public const string Name = nameof(Name);
-        public const string Zoneid = nameof(Zoneid);
-        public const string Hp = nameof(Hp);
-        public const string MaxHp = nameof(MaxHp);
-        public const string TotalDamage = nameof(TotalDamage);
-    }
-
-    /// <summary>
-    /// 房间对象
-    /// </summary>
-    class Room
-    {
-
-        /// <summary>
-        /// 房间状态字段
-        /// </summary>
-        public RoomState CurrentState = RoomState.Close;
-
-        /// <summary>
-        /// 客户端
-        /// </summary>
-        public Dictionary<int, Peer> ClientPeers = new Dictionary<int, Peer>();
-
-        /// <summary>
-        /// 消息分发
-        /// </summary>
-        private Dictionary<eProtocalCommand, Action<int, sSocketData>> callbacks = new Dictionary<eProtocalCommand, Action<int, sSocketData>>();
-
-        /// <summary>
-        /// 客户端消息队列
-        /// </summary>
-        public Channel<KeyValuePair<int, sSocketData>> MsgChannel = Channel.CreateBounded<KeyValuePair<int, sSocketData>>(1000);
-
-
-        /// <summary>
-        /// 房间编号
-        /// </summary>
-        public int Id { get; }
-
-        /// <summary>
-        /// 玩家id集合
-        /// </summary>
-        public List<string> PlayerUids = new List<string>();
-
-        /// <summary>
-        /// 战斗服务器端口
-        /// </summary>
-        public int BattleServerPort = 6006;
-        /// <summary>
-        /// 战斗服务器IP地址
-        /// </summary>
-        public string BattleServerIp = "192.168.10.17";
-
-        /// <summary>
-        /// 构造函数
-        /// </summary> 
-        public Room(int RoomId, IEnumerable<string> uids)
-        {
-            Id = RoomId;
-            PlayerUids = uids.ToList();
-
-
-            callbacks.Add(eProtocalCommand.CsLeaveRoom, On_Leave);
-            callbacks.Add(eProtocalCommand.CsBtStatus, On_BtStatus);
-            callbacks.Add(eProtocalCommand.CsBtPosition, On_BtPosition);
-            callbacks.Add(eProtocalCommand.CsBtBroadCast, On_BtBroadCast);
-            callbacks.Add(eProtocalCommand.CsBtPeopleList, On_PeopleList);
-            var t = Task.Run(MsgLoop);
-            Open();
-        }
-
-
-        void On_PeopleList(int peerId, sSocketData data)
-        {
-            var msg = CS_BT_PeopleList.Parser.ParseFrom(data._data);
-            if (ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                Console.WriteLine($"{msg.Uid} 在请求队友列表.");
-                var info = new SC_BT_PeopleList() { NewerUid = "", Zoneid = msg.Zoneid };
-                info.PlayerUids.AddRange(PlayerUids);
-                peer.SendEvent(eProtocalCommand.ScBtPeopleList, info);
-            }
-        }
-
-
-        void On_BtStatus(int peerId, sSocketData data)
-        {
-            var msg = CS_BT_Status.Parser.ParseFrom(data._data);
-            if (ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                var info = new SC_BT_Status() { PropertyName = msg.PropertyName, Value = msg.Value, SenderUid = msg.SenderUid, Zoneid = msg.Zoneid };
-                this.Broadcast(TargetType.Others, eProtocalCommand.ScBtStatus, info);
-            }
-        }
-        void On_BtPosition(int peerId, sSocketData data)
-        {
-            var msg = CS_BT_Position.Parser.ParseFrom(data._data);
-            if (ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                var info = new SC_BT_Position() { X = msg.X, Y = msg.Y, Z = msg.Z, SenderUid = msg.SenderUid, Zoneid = msg.Zoneid };
-                this.Broadcast(TargetType.All, eProtocalCommand.ScBtPostion, info);
-            }
-        }
-        void On_BtBroadCast(int peerId, sSocketData data)
-        {
-            var msg = CS_BT_BroadCast.Parser.ParseFrom(data._data);
-            if (ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                var info = new SC_BT_BroadCast() { Msg = msg.Msg, SenderUid = msg.SenderUid, Zoneid = msg.Zoneid };
-                this.Broadcast(TargetType.Others, eProtocalCommand.ScBtBroadCast, info);
-            }
-        }
-
-        void On_BtOver(int peerId, sSocketData data)
-        {
-            var msg = CS_BT_Over.Parser.ParseFrom(data._data);
-            if (ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                var info = new SC_BT_Over() { Msg = msg.Msg, SenderUid = msg.SenderUid, Zoneid = msg.Zoneid };
-                this.Broadcast(TargetType.Others, eProtocalCommand.ScGameOver, info);
-            }
-        }
-
-
-
-        /// <summary>
-        /// 离开房间(战斗结束)
-        /// </summary>
-        /// <param name="data"></param>
-        void On_Leave(int peerId, sSocketData data)
-        {
-            if (this.ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                Broadcast(TargetType.All, eProtocalCommand.ScMdLeaveRoom, new SC_MD_LeaveRoom() { Uid = peer.UID, Zoneid = peer.zoneid });
-                peer.Close();
-                RemovePeer(peerId);
-            }
-        }
-
-
-
-
-        #region 网络
-        async void MsgLoop()
-        {
-            while (true)
-            {
-                var msg = await MsgChannel.Reader.ReadAsync();
-                if (callbacks.ContainsKey(msg.Value._protocallType))
-                {
-                    callbacks[msg.Value._protocallType](msg.Key, msg.Value);
-                }
-                else
-                {
-                    // 未找到消息处理逻辑
-                }
-            }
-        }
-        /// <summary>
-        /// 广播消息
-        /// </summary>
-        /// <param name="targetType"></param>
-        /// <param name="msgType"></param>
-        /// <param name="msg"></param>
-        private void Broadcast(TargetType targetType, eProtocalCommand msgType, pb::IMessage msg)
-        {
-            switch (targetType)
-            {
-                case TargetType.All:
-                    this.ClientPeers.Values.ToList().ForEach(p => p.SendEvent(msgType, msg));
-                    break;
-                case TargetType.Others:
-                    this.ClientPeers.Values.ToList().ForEach(p =>p.SendEvent(msgType, msg));
-                    break;
-            }
-
-        }
-        #endregion
-
-        /// <summary>
-        /// 开启
-        /// </summary>
-        public void Open()
-        {
-
-            this.CurrentState = RoomState.Open;
-        }
-        public void Close()
-        {
-            this.CurrentState = RoomState.Close;
-            Task.Delay(TimeSpan.FromMinutes(1)).ContinueWith(t => Open());
-        }
-
-
-        private object lock_peers = new object();
-        public void AddPeer(Peer p)
-        {
-            Console.WriteLine("加入房间ing");
-            if (CurrentState == RoomState.Open)
-            {
-                lock (lock_peers)
-                {
-                    p.CurrentState = ClientState.InRoom;
-                    p.room = this;
-                    this.ClientPeers.Add(p.Id, p);
-                }
-            }
-            else
-            { 
-                WriteLine("游戏结束2 // 这里不应该执行到!!!");
-                p.SendEvent(eProtocalCommand.ScGameOver, new SC_MD_EnterRoom() { });
-                p.Close();
-            }
-        }
-
-        public void RemovePeer(Peer p)
-        {
-            lock (lock_peers)
-            {
-                if (this.ClientPeers.ContainsKey(p.Id))
-                {
-                    this.ClientPeers.Remove(p.Id);
-                }
-            }
-        }
-        public void RemovePeer(int peerId)
-        {
-            lock (lock_peers)
-            {
-                if (this.ClientPeers.ContainsKey(peerId))
-                {
-                    this.ClientPeers.Remove(peerId);
-                }
-            }
-        }
-
-    }
-
-}

+ 0 - 167
CSserver/BattleRoom/server/RoomManager.cs

@@ -1,167 +0,0 @@
-using System;
-using System.Collections.Generic;
-
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Threading.Channels;
-using ProtoDataBuff;
-
-using CSharpUtil;
-using MultiDup;
-
-namespace BattleRoom
-{
-
-    /// <summary>
-    /// 房间管理者, 负责 将连接上来的客户端转移到房间中
-    /// </summary>
-    internal class RoomManager : Singleton<RoomManager>
-    {
-        /// <summary>
-        /// 服务器间的连接
-        /// </summary>
-        public ServerPeer ServerPeer;
-
-        /// <summary>
-        /// 客户端
-        /// </summary>
-        public Dictionary<int, Peer> ClientPeers = new Dictionary<int, Peer>();
-
-        /// <summary>
-        /// 消息分发
-        /// </summary>
-        private Dictionary<eProtocalCommand, Action<int, sSocketData>> callbacks = new Dictionary<eProtocalCommand, Action<int, sSocketData>>();
-
-        /// <summary>
-        /// 客户端消息队列
-        /// </summary>
-        public Channel<KeyValuePair<int, sSocketData>> MsgChannel = Channel.CreateBounded<KeyValuePair<int, sSocketData>>(1000);
-
-
-        /// <summary>
-        /// 房间列表
-        /// </summary>
-        Dictionary<int, Room> roomDic = new Dictionary<int, Room>();
-
-
-        public RoomManager()
-        {
-            this.callbacks.Add(eProtocalCommand.CsBtLogin, On_BtLogin);
-            this.callbacks.Add(eProtocalCommand.CsLeaveRoom, On_Leave);
-
-            var t = Task.Run(MsgLoop);
-
-        }
-        private object lock_peers = new object();
-        public void AddPeer(Peer p)
-        {
-            lock (lock_peers)
-            {
-                this.ClientPeers.Add(p.Id, p);
-                Console.WriteLine(p.Id + " 连接上来了!");
-            }
-
-        }
-        public void RemovePeer(int peerId)
-        {
-            lock (lock_peers)
-            {
-                if (this.ClientPeers.ContainsKey(peerId))
-                {
-                    this.ClientPeers.Remove(peerId);
-                }
-            }
-        }
-
-        public void OnNewPeerConnected(Peer peer)
-        {
-            AddPeer(peer);
-        }
-
-        /// <summary>
-        /// 进入大厅(登陆自己的uid)
-        /// </summary>
-        /// <param name="data"></param>
-        void On_BtLogin(int peerId, sSocketData data)
-        {
-            var msg = CS_BT_Login.Parser.ParseFrom(data._data);
-            Console.WriteLine("登录逻辑");
-            if (this.ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                Console.WriteLine("寻找对应的房间");
-                roomDic.Values.ToList().ForEach(r =>
-                {
-                    if (r.PlayerUids.Contains(msg.Uid))
-                    {
-                        peer.room = r;               // 设置自己的room
-                        r.AddPeer(peer);
-                        Console.WriteLine("加入对应的房间");
-                    }
-                });
-                if (null == peer.room)
-                {
-                    Console.WriteLine("未找到对应的房间");
-                    peer.SendEvent(eProtocalCommand.ScBtLogin, new SC_BT_Login() { Msg = "未找到对应房间!" });
-                }
-                else
-                {
-                    peer.Properties.Add(PropertyName.Uid, msg.Uid);
-                    peer.Properties.Add(PropertyName.Zoneid, msg.Zoneid);
-                    peer.CurrentState = ClientState.InGame;
-                    peer.SendEvent(eProtocalCommand.ScBtLogin, new SC_BT_Login() { Msg = peer.room.Id.ToString() });
-
-                }
-
-            }
-        }
-
-
-
-        /// <summary>
-        /// 创建一个房间(副本)
-        /// </summary>
-        /// <param name="data"></param>
-        public void CreateRoom(sSocketData data)
-        {
-            Console.WriteLine("接收到创建房间指令!");
-            var msg = SS_CreateBattleServer.Parser.ParseFrom(data._data);
-
-            var room = new Room(msg.RoomId, msg.PlayerUids);
-            roomDic.Add(room.Id, room);
-
-            ServerPeer.SendEvent(eProtocalCommand.SsCreateBattleRoomOk, new SS_CreateBattleServerOK() { });
-            // todo: 建立玩家列表, 当玩家登录进来以后, 将其连接转入房间
-
-        }
-
-        /// <summary>
-        /// 离开房间(战斗结束)
-        /// </summary>
-        /// <param name="data"></param>
-        void On_Leave(int peerId, sSocketData data)
-        {
-            if (this.ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                peer.SendEvent(eProtocalCommand.ScMdLeaveRoom, new SC_MD_LeaveRoom() { });
-                peer.Close();
-            }
-        }
-
-        async void MsgLoop()
-        {
-            while (true)
-            {
-                var msg = await MsgChannel.Reader.ReadAsync();
-                if (callbacks.ContainsKey(msg.Value._protocallType))
-                {
-                    callbacks[msg.Value._protocallType](msg.Key, msg.Value);
-                }
-                else
-                {
-                    // 未找到消息处理逻辑
-                }
-            }
-        }
-    }
-}

+ 0 - 190
CSserver/BattleRoom/server/ServerPeer.cs

@@ -1,190 +0,0 @@
-using StackExchange.Redis;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Net.Sockets;
-using System.Threading.Channels;
-using System.Threading.Tasks;
-using ProtoDataBuff;
-using pb = global::Google.Protobuf;
-
-using MultiDup;
-namespace BattleRoom
-{
-    internal class ServerPeer
-    {
-
-        /// <summary>
-        /// socket连接
-        /// </summary>
-        public readonly Socket Sock;
-
-        public Action OnSocketDisconnected;
-        /// <summary>
-        /// 消息分发
-        /// </summary>
-        private Dictionary<eProtocalCommand, Action<sSocketData>> callbacks = new Dictionary<eProtocalCommand, Action<sSocketData>>();
-        /// <summary>
-        /// 构造函数
-        /// </summary>
-        /// <param name="sock"></param>
-        public ServerPeer(Socket sock)
-        {
-            this.Sock = sock;
-            Sock.ReceiveTimeout = 1500;                                         // 接收等待超时时间设为1.5秒 
-
-            callbacks.Add(eProtocalCommand.SsCreateBattleRoom, On_CreateBattleRoom);
-
-            var t = Task.Run(() => recv(Sock));                                 // 新建接收线程 
-            var tcs = Task.Run(WriteToClient);                                  // 向客户端发送消息线程
-            var tmsglp = Task.Run(MsgLoop);
-            OnSocketDisconnected += () => { 
-                Console.WriteLine("socket连接已断开!"); 
-                sock.Close();
-                sock = null;
-            };
-        }
-
-        #region 逻辑处理
-
-        public void On_CreateBattleRoom(sSocketData _sData)
-        {
-            var msg = SS_CreateBattleServer.Parser.ParseFrom(_sData._data);
-            RoomManager.Instance.CreateRoom(_sData);                           // 开辟一个处理对象, room, 然后后续逻辑由room对象等待连接过来. 
-            this.SendEvent(eProtocalCommand.SsCreateBattleRoomOk, new SS_CreateBattleServerOK() { });// 返回成功
-        }
-
-
-        #endregion
-
-        /// <summary>
-        /// 关闭连接
-        /// </summary>
-        public void Close()
-        {
-            this.sendDataBuffer.Reader.Completion
-                .ContinueWith(t =>
-                Task.Delay(5000).ContinueWith(t1 => Sock.Close())
-                );                                                               // 延迟5秒关闭套接字
-        }
-
-        #region 消息收发
-
-        async void MsgLoop()
-        {
-            while (true)
-            {
-                var msg = await MsgChannel.Reader.ReadAsync();
-                if (callbacks.ContainsKey(msg._protocallType))
-                {
-                    callbacks[msg._protocallType](msg);
-                }
-                else
-                {
-                    // 未找到消息处理逻辑
-                }
-            }
-        }
-        /// <summary>
-        /// 客户端消息队列
-        /// </summary>
-        public Channel<sSocketData> MsgChannel = Channel.CreateBounded<sSocketData>(1000);
-
-        /// <summary>
-        /// 向客户端发送事件
-        /// </summary>
-        public void SendEvent(eProtocalCommand msgType, pb::IMessage msg)
-        {
-            SendToClient(msgType, msg);
-        }
-
-        /// <summary>
-        /// 向客户端发送消息
-        /// </summary>
-        /// <param name="msgType"></param>
-        /// <param name="msg"></param>
-        void SendToClient(eProtocalCommand msgType, pb::IMessage msg)
-        {
-            using var ms = new MemoryStream();
-            using var os = new pb::CodedOutputStream(ms);
-            msg.WriteTo(os);
-            os.Flush();
-            ms.Seek(0, SeekOrigin.Begin);
-            var sdata = sSocketData.FromBytes(msgType, ms.ToArray());
-            sendDataBuffer.Writer.WriteAsync(sdata).AsTask().Wait();
-        }
-
-
-        /// <summary>
-        /// 向客户端写入消息
-        /// </summary>
-        async void WriteToClient()
-        {
-            while (true)
-            {
-                try
-                {
-                    var msg = await sendDataBuffer.Reader.ReadAsync();
-                    await Sock.SendAsync(new ArraySegment<byte>(msg.ToBytes()), SocketFlags.None);
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-
-            }
-            Close();
-        }
-
-
-        /// <summary>
-        /// 发送buffer
-        /// </summary>
-        private Channel<sSocketData> sendDataBuffer = Channel.CreateUnbounded<sSocketData>();
-
-        /// <summary>
-        /// 接收客户端发来的信息,客户端套接字对象
-        /// </summary>
-        /// <param name="socketclientpara"></param>    
-        async void recv(Socket socketServer)
-        {
-            var _databuffer = new DataBuffer();
-            byte[] arrServerRecMsg = new byte[4096];                                       // 创建一个内存缓冲区,其大小为4k字节  
-            while (true)
-            {
-                try
-                {
-                    var length = await socketServer.ReceiveAsync(new ArraySegment<byte>(arrServerRecMsg), SocketFlags.None);   // 将接收到的信息存入到内存缓冲区,并返回其字节数组的长度    
-                    if (length <= 0)                                                       // 视为客户端已经close连接
-                    {
-                        OnSocketDisconnected?.Invoke();
-                        break;
-
-                    }
-                    _databuffer.AddBuffer(arrServerRecMsg, length);                         //将收到的数据添加到缓存器中
-                    while (_databuffer.GetData(out sSocketData _socketData))                //取出一条完整数据,转到room的消息队列,由room统一进行逻辑处理 
-                    {
-                        Console.WriteLine(" recv: " + _socketData._protocallType);
-                        await MsgChannel.Writer.WriteAsync(_socketData);                    // 放入大厅处理队列
-                    }
-                    Array.Clear(arrServerRecMsg, 0, length);
-                }
-                catch (SocketException e)
-                {
-                    if (e.ErrorCode == 10060)                                                  // 超时的时候错误号码是10060
-                    {
-                        continue;                                                              // 继续等待  
-                    }
-                    break;
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-            }
-
-            Close();                                                                 // 关闭
-        }
-        #endregion
-    }
-}

+ 0 - 13
CSserver/BossServer/BossServer.csproj

@@ -1,13 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>net6.0</TargetFramework>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\Lib1\Lib1.csproj" />
-    <ProjectReference Include="..\PBReferens\PBReferens.csproj" />
-  </ItemGroup>
-
-</Project>

+ 0 - 64
CSserver/BossServer/Program.cs

@@ -1,64 +0,0 @@
-using BossServer.server;
-using System;
-using System.Diagnostics;
-using System.Net;
-using System.Net.Sockets;
-using System.Threading.Tasks;
-
-namespace BossServer
-{
-
-    class Program
-    {
-        static Socket SocketWatch = null;                                       // 创建一个和客户端通信的套接字 
-        const int port = 16002;                                                  // 端口号(用来监听的) 
-
-        static void Main(string[] args)
-        {
-            selfTest();
-            IPAddress ip = IPAddress.Any;
-            IPEndPoint ipe = new IPEndPoint(ip, port);                         //将IP地址和端口号绑定到网络节点point上  
-
-            //定义一个套接字用于监听客户端发来的消息,包含三个参数(IP4寻址协议,流式连接,Tcp协议)  
-            SocketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
-            SocketWatch.Bind(ipe);                                             // 监听绑定的网络节点           
-            SocketWatch.Listen(20);                                            // 将套接字的监听队列长度限制为20    
-
-            Console.WriteLine("开启监听......");
-            Console.WriteLine("ctrl + c 退出程序......");
-
-            Task.Run(WatchConnecting).Wait();                                  // 开启监听线程
-            SocketWatch.Close();                                               // 结束监听socket
-
-        }
-
-        static void selfTest()
-        {
-            var rdb = Redis.Ins.GetDatabase(1);
-            Debug.Assert(rdb.StringSet("test", "wanggang" + DateTime.Now.ToString("yyyyMMddHHmmss")), "Redis读写失败!");
-        }
-
-        /// <summary>
-        /// 监听客户端发来的请求  
-        /// </summary>
-        async static Task WatchConnecting()
-        {
-            while (true)                                                                 // 持续不断监听客户端发来的请求     
-            {
-                Socket connection;
-                try
-                {
-                    connection = await SocketWatch.AcceptAsync();
-                }
-                catch (Exception ex)
-                {
-                    Console.WriteLine(ex.Message);                                       // 提示套接字监听异常     
-                    break;
-                }
-
-                Room.Instance.AddPeer(new Peer(connection));
-            }
-        }
-
-    }
-}

+ 0 - 162
CSserver/BossServer/server/Boss.cs

@@ -1,162 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Threading.Channels;
-
-using pb = global::Google.Protobuf;
-
-namespace BossServer.server
-{
-
-    /// <summary>
-    /// Boss对象
-    /// </summary>
-    class Boss
-    {
-        /// <summary>
-        /// 当前血量
-        /// </summary>
-        public volatile int Hp;
-        /// <summary>
-        /// 最大血量
-        /// </summary>
-        public readonly int MaxHp;
-
-        public int CountDownSecs;
-
-        /// <summary>
-        /// boss ZoneID
-        /// </summary>
-        public int ZoneId;
-        /// <summary>
-        /// boss id (大小boss,现在只有1,2)
-        /// </summary>
-        public int Id;
-
-        /// <summary>
-        /// 唯一id
-        /// </summary>
-        public string UID => $"{ZoneId}-{Id}";
-
-        public Dictionary<int, Peer> Peers;
-
-        public Channel<int> DamageQueue;
-
-
-        private Action<Boss> _Settle;
-
-        private readonly Timer timer;
-
-        /// <summary>
-        /// 倒计时模块
-        /// </summary>
-        /// <param name="stateObject"></param>
-        private void OnTimer(object stateObject)
-        {
-            CountDownSecs--;
-        }
-
-        /// <summary>
-        /// 战斗结束
-        /// </summary>
-        public bool Ended { get; private set; } = false;
-
-        public Boss(int id, int zoneid, int maxHp, Action<Boss> Settle)
-        {
-            this.Id = id;
-            this.ZoneId = zoneid;
-            this.Hp = this.MaxHp = maxHp;
-            this.CountDownSecs = Config.Ins.CountDownTimes;
-            var roomName = Room.Instance.Name ?? "Room";
-            var redis_key = MemKey_Game.BossFight_Damage_byDateHour_zset(Convert.ToInt32(ZoneId), Id, roomName);
-            var rdb = Redis.Ins.GetDatabase(1);
-            rdb.KeyDelete(redis_key);
-            this.Peers = new Dictionary<int, Peer>();
-            this.DamageQueue = Channel.CreateBounded<int>(100);
-            this._Settle = Settle;
-            var t = Task.Run(Damage);
-            this.timer = new Timer(OnTimer, null, 0, 1000);       // 1秒1次
-            var end = Task.Delay(TimeSpan.FromSeconds(Config.Ins.CountDownTimes)).ContinueWith(t =>      // 10分钟结束战斗
-            {
-                this.Settle();
-            });
-        }
-
-
-
-
-
-        private async Task<int> Damage()
-        {
-            while (Hp > 0)
-            {
-                var damage = await DamageQueue.Reader.ReadAsync();
-                Hp += damage;
-                if (Hp < 0)
-                {
-                    Hp = 0;
-                }
-                CheckHp();
-            }
-            return 0;
-        }
-        public void CheckHp()
-        {
-            if (Hp > 0)
-            {
-                BroadUpdate();
-            }
-            else
-            {
-                Settle();
-            }
-        }
-
-        private void Settle()
-        {
-            if (!this.Ended)
-            {
-                this.Ended = true;
-                this.CountDownSecs = Config.Ins.CountDownTimes;
-                BroadGameOver();
-                this?._Settle(this);
-
-            }
-        }
-
-        private void BroadGameOver()
-        {
-
-            //Console.WriteLine("游戏结束1");
-            this.Broadcast(TargetType.All, eProtocalCommand.ScGameOver, new SCGameOver() { BossHp = this.Hp, CountDown = this.CountDownSecs });
-            this.Peers.Values.ToList().ForEach(p => p.Close());
-        }
-
-        private void BroadUpdate()
-        {
-            this.Broadcast(TargetType.All, eProtocalCommand.ScUpdateProperties, new SCUpdateProperties() { BossMaxHp = this.MaxHp, BossHp = this.Hp, CountDown = this.CountDownSecs });
-        }
-
-        /// <summary>
-        /// 广播消息
-        /// </summary>
-        /// <param name="targetType"></param>
-        /// <param name="msgType"></param>
-        /// <param name="msg"></param>
-        private void Broadcast(TargetType targetType, eProtocalCommand msgType, pb::IMessage msg)
-        {
-            switch (targetType)
-            {
-                case TargetType.All:
-                    this.Peers.Values.ToList().ForEach(p => p.SendEvent(msgType, msg));
-                    break;
-                case TargetType.Others:
-                    break;
-            }
-
-        }
-    }
-}

+ 0 - 163
CSserver/BossServer/server/EmailProc.cs

@@ -1,163 +0,0 @@
-
-using Newtonsoft.Json.Linq;
-using System;
-using System.Diagnostics;
-using CSharpUtil.Extensions.Time;
-
-namespace BossServer.server
-{
-    /// <summary>
-    /// 邮件类型枚举
-    /// </summary>
-    public enum EMailType
-    {
-        /// <summary>
-        /// 系统邮件
-        /// </summary>
-        SystemMail = 1,
-        /// <summary>
-        /// 好友雇佣 
-        /// </summary>
-        [Obsolete]
-        HireCoin,
-        /// <summary>
-        /// PVP阶段奖励
-        /// </summary>
-        [Obsolete]
-        PvpLeagueReward,
-        /// <summary>
-        /// pvp上榜奖励
-        /// </summary>
-        PvpRankReward,
-        /// <summary>
-        /// 公会申请被拒
-        /// </summary>
-        [Obsolete]
-        GuildApplyRefuse,
-        /// <summary>
-        /// 公会捐献结算
-        /// </summary>
-        [Obsolete]
-        GuildDonateSettle,
-        /// <summary>
-        /// 公会钻石礼包
-        /// </summary>
-        [Obsolete]
-        GuildCashGiftReward,
-        /// <summary>
-        /// 公会公告/通知邮件
-        /// </summary>
-        [Obsolete]
-        GuildNotice
-
-    }
-
-    /// <summary>
-    /// 邮件发送功能
-    /// </summary>
-    class EmailProc
-    {
-
-        /// <summary>
-        /// 邮件最大容量100封
-        /// </summary>
-        internal const int MaxMailContent = 100;
-
-        /// <summary>
-        /// 邮件最大过期时间7天
-        /// </summary>
-        internal const int MaxMailExpireTs = 604800;
-
-        /// <summary>
-        /// Mysql邮件日志表
-        /// </summary>
-        const string MailLog_TableName = "tab_mailrecord";
-        /// <summary>
-        /// 系统邮件 - 发送世界boss战奖励邮件
-        /// </summary>
-        /// <param name="zoneid"></param>
-        /// <param name="uid"></param>
-        /// <param name="index"></param>
-        /// <param name="rewardName"></param>
-        /// <param name="reward"></param>
-        public static void SendWorldBossReward(int zoneid, string uid, int index,string rewardName, string reward)
-        {
-            var mail = new Email(EMailType.SystemMail, "世界boss奖励", $"恭喜您在世界boss战斗中输出伤害排{index}名,获得{rewardName}奖励!", reward);
-            InsertMail(zoneid, uid, mail);
-        }
-        /// <summary>
-        /// 插入邮件
-        /// </summary>
-        /// <param name="zoneid"></param>
-        /// <param name="uid"></param>
-        /// <param name="mail"></param>
-        private static int InsertMail(int zoneid, string uid, Email mail)
-        {
-            var mem = Redis.Ins.GetDatabase(1);
-            var key_id = MemKey_User.Mail_CurId_int(zoneid, uid);
-            var key_queue = MemKey_User.Mail_Queue_hash(zoneid, uid);
-            mail.insertts = (int)DateTime.Now.ToUnixTimeStamp();
-            mail.mailId = (int)mem.StringIncrement(key_id);
-            if (!mem.HashSet(key_queue, mail.mailId.ToString(), mail.ToString()))
-            {                 // 重试下
-                mail.mailId = (int)mem.StringIncrement(key_id);
-                if (!mem.HashSet(key_queue, mail.mailId.ToString(), mail.ToString()))
-                {
-
-                }
-            }
-            logMail(zoneid, uid, mail);                                   // 将邮件写入Mysql中
-            return mail.mailId;
-        }
-        /// <summary>
-        /// 写邮件日志
-        /// </summary>
-        /// <param name="zoneid"></param>
-        /// <param name="uid"></param>
-        /// <param name="mail"></param>
-        private static void logMail(int zoneid, string uid, Email mail)
-        {
-            var sql = $" Insert Into {MailLog_TableName} (`mailId`, `zoneid`, `appendix`, `type`, `sender_name`, `sender_uid`, `to_uid`, `title`, `content`, `tag`) " +
-                $"values({mail.mailId},{zoneid},{mail.appendix}, {mail.type}, {mail.sender_name}, {mail.sender_uid}, {uid}, {mail.title}, {mail.content}, {mail.tag})";
-
-            var n = MysqlUtil.Ins.ExecuteSqlNonQuery(sql);
-            //Debug.Assert(n > 0, $"{sql} 执行失败!");
-        }
-
-    }
-
-    public class Email
-    {
-        public int mailId = 0;
-        public string sender_uid;
-        public string sender_name;
-        public string appendix;
-        public int type;
-        public string title;
-        public string content;
-        public object tag;
-        public int readts = 0;
-        public int drawedts = 0;
-        public int insertts = 0;
-        public bool isDrawed() => drawedts > 0;
-        public bool isExistsReward() => !string.IsNullOrEmpty(appendix);
-        public int ExpireTs() => insertts + EmailProc.MaxMailExpireTs;
-
-
-        public Email(EMailType emailType,string title, string content,string reward,string uid_sender="系统",string name_sender="系统") {
-            this.type =(int) emailType;
-            this.title = title;
-            this.content = content;
-            this.appendix = reward;
-            this.sender_uid = uid_sender;
-            this.sender_name = name_sender;
-
-
-        }
-
-        public override string ToString()
-        {
-            return new JObject(this).ToString();
-        }
-    }
-}

+ 0 - 248
CSserver/BossServer/server/Peer.cs

@@ -1,248 +0,0 @@
-using StackExchange.Redis;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Net.Sockets;
-using System.Threading.Channels;
-using System.Threading.Tasks;
-using ProtoDataBuff;
-using pb = global::Google.Protobuf;
-namespace BossServer.server
-{
-    /// <summary>
-    /// 客户端状态
-    /// </summary>
-    enum ClientState
-    {
-        /// <summary>
-        /// 已连接,未登录
-        /// </summary>
-        Connected,
-        /// <summary>
-        /// 已登录
-        /// </summary>
-        Authenticated,
-        /// <summary>
-        /// 已离开
-        /// </summary>
-        Leaved
-    }
-
-
-    /// <summary>
-    /// 一个连接对象的抽象,代表一个远端的对象
-    /// </summary>
-    class Peer
-    {
-        /// <summary>
-        /// 玩家属性字段
-        /// </summary>
-        public Dictionary<string, object> Properties = new();
-
-        /// <summary>
-        /// 客户端状态字段
-        /// </summary>
-        public ClientState CurrentState = ClientState.Connected;
-
-
-        /// <summary>
-        /// peer的唯一Id
-        /// </summary>
-        public readonly int Id;
-
-        /// <summary>
-        /// socket连接
-        /// </summary>
-        public readonly Socket Sock;
-
-        public string UID
-        {
-            get
-            {
-                if (Properties.TryGetValue(PropertyName.Uid, out var uid))
-                {
-                    return uid.ToString();
-                }
-                return "";
-            }
-        }
-        public int zoneid
-        {
-            get
-            {
-                if (Properties.TryGetValue(PropertyName.Zoneid, out var zoneid))
-                {
-                    return Convert.ToInt32(zoneid);
-                }
-                return 1;
-            }
-
-        }
-        public int bossId;
-        /// <summary>
-        /// 所属boss 的关键key
-        /// </summary>
-        public string BossKey => $"{zoneid}-{bossId}";
-
-        /// <summary>
-        /// 线程安全的peer计数器
-        /// </summary>
-        private volatile static int _UniqPeerId = 0;
-
-        /// <summary>
-        /// 构造函数
-        /// </summary>
-        /// <param name="sock"></param>
-        public Peer(Socket sock)
-        {
-            this.Sock = sock;
-            Sock.ReceiveTimeout = 1500;                                         // 接收等待超时时间设为1.5秒 
-            Id = _UniqPeerId++;
-            var t = Task.Run(() => recv(Sock));                                 // 新建接收线程 
-            var tcs = Task.Run(WriteToClient);                                  // 向客户端发送消息线程
-        }
-
-
-        public void Close()
-        {
-            this.CurrentState = ClientState.Leaved;                              // 关闭接收窗口
-            Room.Instance.RemovePeer(this);                                      // 从房间中移除自己
-            //SaveDamage();
-            this.sendDataBuffer.Reader.Completion
-                .ContinueWith(t =>
-                Task.Delay(5000).ContinueWith(t1 => Sock.Close())
-                );                                                               // 延迟5秒关闭套接字
-        }
-        public void AddDamage(int damage)
-        {
-            if (Properties.ContainsKey(PropertyName.TotalDamage))
-            {
-                var totalDamage = Convert.ToInt32(Properties[PropertyName.TotalDamage]);
-                Properties[PropertyName.TotalDamage] = damage + totalDamage;
-            }
-            else
-            {
-                Properties.Add(PropertyName.TotalDamage, damage);
-            }
-            SaveDamage(damage);
-        }
-        void SaveDamage(int damage)
-        {
-            try
-            {
-                var rdb = Redis.Ins.GetDatabase(1);
-                if (Properties.TryGetValue(PropertyName.Name, out var name)
-                    && Properties.TryGetValue(PropertyName.Zoneid, out var zoneid))
-                {
-                    var roomName = Room.Instance.Name ?? "Room";
-                    var redis_key = MemKey_Game.BossFight_Damage_byDateHour_zset(Convert.ToInt32(zoneid), bossId, roomName);
-                    var who = UID + "__" + name.ToString();
-                    rdb.SortedSetIncrement(redis_key, who, damage);
-                }
-                else
-                {
-                    //Console.WriteLine("uid/zoneid 为空.");
-                }
-            }
-            catch (RedisTimeoutException te)
-            {
-                //Console.WriteLine("redis操作超时");
-            }
-        }
-
-        /// <summary>
-        /// 向客户端发送事件
-        /// </summary>
-        public void SendEvent(eProtocalCommand msgType, pb::IMessage msg)
-        {
-            SendToClient(msgType, msg);
-        }
-
-        /// <summary>
-        /// 向客户端发送消息
-        /// </summary>
-        /// <param name="msgType"></param>
-        /// <param name="msg"></param>
-        void SendToClient(eProtocalCommand msgType, pb::IMessage msg)
-        {
-            using var ms = new MemoryStream();
-            using var os = new pb::CodedOutputStream(ms);
-            msg.WriteTo(os);
-            os.Flush();
-            ms.Seek(0, SeekOrigin.Begin);
-            var sdata = sSocketData.FromBytes(msgType, ms.ToArray());
-            sendDataBuffer.Writer.WriteAsync(sdata).AsTask().Wait();
-        }
-
-
-        /// <summary>
-        /// 向客户端写入消息
-        /// </summary>
-        async void WriteToClient()
-        {
-            while (true)
-            {
-                try
-                {
-                    var msg = await sendDataBuffer.Reader.ReadAsync();
-                    await Sock.SendAsync(new ArraySegment<byte>(msg.ToBytes()), SocketFlags.None);
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-
-            }
-            Close();
-        }
-
-
-        /// <summary>
-        /// 发送buffer
-        /// </summary>
-        private Channel<sSocketData> sendDataBuffer = Channel.CreateUnbounded<sSocketData>();
-
-        /// <summary>
-        /// 接收客户端发来的信息,客户端套接字对象
-        /// </summary>
-        /// <param name="socketclientpara"></param>    
-        async void recv(Socket socketServer)
-        {
-
-            var _databuffer = new DataBuffer();
-            byte[] arrServerRecMsg = new byte[4096];                                       // 创建一个内存缓冲区,其大小为4k字节  
-            while (true)
-            {
-                try
-                {
-                    var length = await socketServer.ReceiveAsync(new ArraySegment<byte>(arrServerRecMsg), SocketFlags.None);   // 将接收到的信息存入到内存缓冲区,并返回其字节数组的长度    
-                    if (length <= 0 || CurrentState == ClientState.Leaved)                                                     // 视为客户端已经close连接
-                    {
-                        break;
-                    }
-                    _databuffer.AddBuffer(arrServerRecMsg, length);                                  //将收到的数据添加到缓存器中
-                    while (_databuffer.GetData(out sSocketData _socketData))                         //取出一条完整数据
-                    {
-                        await Room.Instance.MsgChannel.Writer.WriteAsync(new KeyValuePair<int, sSocketData>(this.Id, _socketData));    // 放入channel
-                    }
-                    Array.Clear(arrServerRecMsg, 0, length);
-                }
-                catch (SocketException e)
-                {
-                    if (e.ErrorCode == 10060)                                          // 超时的时候错误号码是10060
-                    {
-                        continue;                                                      // 继续等待  
-                    }
-                    break;
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-            }
-
-            Close();                                                                 // 关闭
-        }
-
-    }
-}

+ 0 - 291
CSserver/BossServer/server/Room.cs

@@ -1,291 +0,0 @@
-using CSharpUtil;
-using CSharpUtil.Net;
-using ProtoDataBuff;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Channels;
-using System.Threading.Tasks;
-using static System.Console;
-
-namespace BossServer.server
-{
-    /// <summary>
-    /// 房间状态
-    /// </summary>
-    enum RoomState
-    {
-        /// <summary>
-        /// 开启状态(可以连接登入)
-        /// </summary>
-        Open,
-        /// <summary>
-        /// 已关闭(不可继续登录)
-        /// </summary>
-        Close,
-    }
-
-    enum TargetType
-    {
-        /// <summary>
-        /// 所有
-        /// </summary>
-        All,
-        /// <summary>
-        /// 其他人
-        /// </summary>
-        Others,
-
-
-    }
-    class PropertyName
-    {
-        public const string Uid = nameof(Uid);
-        public const string Name = nameof(Name);
-        public const string Zoneid = nameof(Zoneid);
-        public const string Hp = nameof(Hp);
-        public const string MaxHp = nameof(MaxHp);
-        public const string TotalDamage = nameof(TotalDamage);
-    }
-
-    /// <summary>
-    /// 房间对象
-    /// </summary>
-    class Room : Singleton<Room>
-    {
-
-        /// <summary>
-        /// 房间状态字段
-        /// </summary>
-        public RoomState CurrentState = RoomState.Close;
-
-        /// <summary>
-        /// 客户端
-        /// </summary>
-        public Dictionary<int, Peer> ClientPeers = new Dictionary<int, Peer>();
-        /// <summary>
-        /// 消息分发
-        /// </summary>
-        private Dictionary<eProtocalCommand, Action<int, sSocketData>> callbacks = new Dictionary<eProtocalCommand, Action<int, sSocketData>>();
-
-        /// <summary>
-        /// 客户端消息队列
-        /// </summary>
-        public Channel<KeyValuePair<int, sSocketData>> MsgChannel = Channel.CreateBounded<KeyValuePair<int, sSocketData>>(1000);
-
-
-        public string Name => DateTime.Now.ToString("yyyyMMddHH");
-
-        public int MaxHp => Config.GameOnline ? 100000 : 10000;       // 初始血量10w
-
-
-        /// <summary>
-        /// boss集合
-        /// </summary>
-        private Dictionary<string, Boss> Boss_dict = new();
-
-
-        /// <summary>
-        /// 构造函数
-        /// </summary> 
-        public Room()
-        {
-            //this.Name = DateTime.Now.ToString("yyyyMMddHH");
-            this.callbacks.Add(eProtocalCommand.CsLogin, On_Login);
-            this.callbacks.Add(eProtocalCommand.CsReportDamage, On_ReportDamage);
-            this.callbacks.Add(eProtocalCommand.CsLeaveRoom, On_Leave);
-            this.callbacks.Add(eProtocalCommand.CsReportUserHp, On_ReportUserHp);
-            var t = Task.Run(MsgLoop);
-            Open();
-        }
-        /// <summary>
-        /// 处理客户端上报玩家剩余血量逻辑
-        /// </summary>
-        /// <param name="peerId"></param>
-        /// <param name="data"></param>
-        void On_ReportUserHp(int peerId, sSocketData data)
-        {
-            var msg = CSReportUserHP.Parser.ParseFrom(data._data);
-            if (this.ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                if (peer.Properties.ContainsKey(PropertyName.Hp))
-                {
-                    peer.Properties[PropertyName.Hp] = msg.UserHP;
-                }
-                else
-                {
-                    peer.Properties.Add(PropertyName.Hp, msg.UserHP);
-                }
-            }
-        }
-
-        /// <summary>
-        /// 处理客户端登录请求
-        /// </summary>
-        void On_Login(int peerId, sSocketData data)
-        {
-            if (this.ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                var msg = CSEnterFight.Parser.ParseFrom(data._data);
-                peer.Properties[nameof(msg.Uid)] = msg.Uid;
-
-                peer.Properties[nameof(msg.Zoneid)] = msg.Zoneid;
-                peer.Properties[PropertyName.Name] = msg.Name;
-                peer.bossId = msg.BossId;
-                lock (Boss_dict)
-                {
-                    var bossKey = $"{msg.Zoneid}-{msg.BossId}";
-                    if (Boss_dict.TryGetValue(bossKey, out var boss))
-                    {
-                        if (boss.Ended)                                         // boss战已结束, 尚未重新开启
-                        {
-                            //WriteLine("游戏结束1");
-                            peer.SendEvent(eProtocalCommand.ScGameOver, new SCGameOver() { BossHp = boss.Hp, CountDown = boss.CountDownSecs });
-                            peer.Close();
-                        }
-                        else
-                        {
-                            var peerHp = -1;                                    // 玩家血量, -1代表未初始化
-                            var exists = boss.Peers.Where(kv => kv.Value.UID == peer.UID && kv.Value.zoneid == peer.zoneid);
-                            if (exists.Count() < 1)
-                            {
-                                boss.Peers.Add(peerId, peer);
-                            }
-                            else
-                            {                                                   // 已经进入到房间中过了
-                                var oldPeer = exists.First().Value;
-                                if (oldPeer.Properties.TryGetValue(PropertyName.Hp, out var hisHp))
-                                {
-                                    peerHp = int.Parse(hisHp.ToString());
-                                    peer.Properties[PropertyName.Hp] = peerHp;
-                                    //Console.WriteLine($" 玩家记录血量:{peerHp} ");
-                                }
-                                boss.Peers.Remove(oldPeer.Id);
-                                boss.Peers.Add(peerId, peer);
-                            }
-                            peer.SendEvent(eProtocalCommand.ScLogin, new SCEnterFight() { BossHp = boss.Hp, BossMaxHp = boss.MaxHp, UserHP = peerHp, CountDown = boss.CountDownSecs });
-                            //Console.WriteLine($"boss [{boss.ZoneId}] 已经初始化完毕, " + boss.Hp);
-                        }
-                    }
-                    else                                                      // 初始化新的boss
-                    {
-                        //Console.WriteLine($"初始化 boss [{msg.Zoneid}]");
-                        var b = new Boss(msg.BossId, msg.Zoneid, MaxHp, BossSettle);
-                        b.Peers.Add(peerId, peer);
-                        Boss_dict.Add(b.UID, b);
-                        peer.SendEvent(eProtocalCommand.ScLogin, new SCEnterFight() { BossHp = b.Hp, BossMaxHp = b.MaxHp, UserHP = -1, CountDown = b.CountDownSecs });
-                    }
-                }
-
-            }
-        }
-        void BossSettle(Boss boss)
-        {
-            //WriteLine($"结算Boss {boss.UID}");
-
-            if (Boss_dict.ContainsKey(boss.UID))
-            {
-                var data = $"zoneid={boss.ZoneId}&bossid={boss.Id}";
-                HttpHelper.Instance.Post(Config.Ins.SettleUrl, data);
-                var t = Task.Delay(TimeSpan.FromSeconds(Config.Ins.CountDownTimes)).ContinueWith(t =>
-                  {
-                      lock (Boss_dict)
-                      {
-                          Boss_dict.Remove(boss.UID);
-                      }
-                  });
-            }
-        }
-
-        /// <summary>
-        /// 处理客户端上报伤害请求
-        /// </summary>
-        void On_ReportDamage(int peerId, sSocketData data)
-        {
-
-            if (this.ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                var msg = CSFightReportDamage.Parser.ParseFrom(data._data);
-                if (Boss_dict.TryGetValue(peer.BossKey, out var boss))
-                {
-                    boss.DamageQueue.Writer.WriteAsync(msg.Damage);
-                    peer.AddDamage(msg.Damage);
-                }
-            }
-
-        }
-        /// <summary>
-        /// 离开房间(战斗结束)
-        /// </summary>
-        /// <param name="data"></param>
-        void On_Leave(int peerId, sSocketData data)
-        {
-            if (this.ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                peer.Close();
-            }
-        }
-
-        async void MsgLoop()
-        {
-            while (true)
-            {
-                var msg = await MsgChannel.Reader.ReadAsync();
-                if (callbacks.ContainsKey(msg.Value._protocallType))
-                {
-                    callbacks[msg.Value._protocallType](msg.Key, msg.Value);
-                }
-                else
-                {
-                    // 未找到消息处理逻辑
-                }
-            }
-        }
-        /// <summary>
-        /// 开启
-        /// </summary>
-        public void Open()
-        {
-            Boss_dict.Clear();
-            this.CurrentState = RoomState.Open;
-        }
-        public void Close()
-        {
-            this.CurrentState = RoomState.Close;
-            Task.Delay(TimeSpan.FromMinutes(1)).ContinueWith(t => Open());
-        }
-
-
-        private object lock_peers = new object();
-        public void AddPeer(Peer p)
-        {
-            if (CurrentState == RoomState.Open)
-            {
-                lock (lock_peers)
-                {
-                    this.ClientPeers.Add(p.Id, p);
-                }
-            }
-            else
-            {
-
-                WriteLine("游戏结束2 // 这里不应该执行到!!!");
-                p.SendEvent(eProtocalCommand.ScGameOver, new SCGameOver() { BossHp = 0, CountDown = 9999 });
-                p.Close();
-            }
-        }
-
-        public void RemovePeer(Peer p)
-        {
-            lock (lock_peers)
-            {
-                if (this.ClientPeers.ContainsKey(p.Id))
-                {
-                    this.ClientPeers.Remove(p.Id);
-                }
-            }
-        }
-
-    }
-
-}

+ 0 - 21
CSserver/DataTransfer/DataTransfer.csproj

@@ -1,21 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>net6.0</TargetFramework>
-  </PropertyGroup>
-
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
-    <DebugType>full</DebugType>
-    <DebugSymbols>true</DebugSymbols>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <PackageReference Include="NPOI" Version="2.5.4" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\Lib1\Lib1.csproj" />
-  </ItemGroup>
-
-</Project>

+ 0 - 274
CSserver/DataTransfer/Program.cs

@@ -1,274 +0,0 @@
-using System;
-using System.Threading;
-using System.Data;
-using StackExchange.Redis;
-using CSharpUtil;
-using System.Collections.Generic;
-using System.Linq;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using System.Diagnostics;
-using DataTransfer.tongji;
-
-namespace DataTransfer
-{
-    class Program
-    {
-        static void Main(string[] args)
-        {
-            Console.WriteLine("言灵数据传输开始........");
-
-            Thread t1 = new Thread(transfer);
-            t1.Start();
-
-            //dataSav();
-        }
-        public static int mask = 0;
-        public static int mask_lose = 0;
-        public static int dataSavNum = 0;
-
-        public static void dataSav()
-        {
-            Console.WriteLine("dataSav................");
-            //DataToExcelText.TargetStatistics();
-        }
-
-        public static void transfer()
-        {
-            Console.WriteLine("transfer............");
-            while (true)
-            {
-                try
-                {
-                    int hour = DateTime.Now.Hour;
-                    if (hour == 2 && mask == 0)//正式的是晚上2点进行数据传输
-                    {
-                        Console.WriteLine("数据传输的时间到了开始执行程序.......");
-                        //进行数据传输
-                        mask = 1;
-                        dataTransfer();
-                    }
-
-                    if (hour != 2 && mask != 0)
-                    {
-                        mask = 0;
-                    }
-
-                    #region------流失玩家指标分析
-                    //【解释:次日、2日、3日、4日、5日、6日、7日的流失玩家的uid和该玩家的信息统计\\redis中保存一份,execl文件也存一份】
-                    if (hour == 3 && mask_lose == 0)//正式的是晚上2点进行数据传输
-                    {
-                        Console.WriteLine("统计信息程序开始执行............");
-                        //进行数据传输
-                        mask_lose = 1;
-                        UserStatistics.DataDeal();
-                    }
-
-                    if (hour != 3 && mask_lose != 0)
-                    {
-                        mask_lose = 0;
-                    }
-                    #endregion                   
-                }
-                catch (Exception ex)
-                {
-                    Console.WriteLine(ex.Message);  // 提示套接字监听异常     
-                    break;
-                }
-            }
-        }
-
-        public static void dataTransfer()
-        {
-            Console.WriteLine("进入dataTransfer方法..............");
-
-            TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1);
-            float curday = MathF.Floor((long)ts.TotalSeconds / 24 / 60 / 60);
-            float day = curday - 1;
-            Console.WriteLine("当前天是:" + day);
-
-            var mem = Redis.Ins.GetDatabase(1);
-
-            //int zoneid = 1;//暂时先这样
-
-            HashEntry[] zoneidList = mem.HashGetAll(MemKey_Statistics.Zonelist());
-            foreach (var item in zoneidList)
-            {
-                string[] sList = item.ToString().Split(':');
-                int zoneid = int.Parse(sList[0]);
-
-                Taskprogressrecord_RedisToSql(zoneid);
-                Userbaseparams_RedisToSql(zoneid);
-
-                if (mem.KeyExists(MemKey_Statistics.GamerunLoginUser(zoneid, day)))
-                {
-                    string[] list = mem.HashKeys(MemKey_Statistics.GamerunLoginUser(zoneid, day)).ToStringArray();
-                    foreach (string k in list)
-                    {
-                        Console.WriteLine("uid:" + k);
-                        redisToSql(k, zoneid);
-                    }
-                }
-                else
-                {
-                    Console.WriteLine(day + "-没有玩家登录,以玩家为单位的数据不做传输");
-                }
-            }
-
-        }
-
-        /// <summary>
-        /// redis数据传输到mysql中
-        /// </summary>
-        /// <param name="uid"></param>
-        /// <param name="zoneid"></param>
-        public static void redisToSql(string uid, int zoneid)
-        {
-            Console.WriteLine("以玩家为单位数据传输开始..........:");
-            TaskcompleteTsrecord_RedisToSql(uid, zoneid);
-        }
-
-        const string Userbaseparams_TableName = "tab_userbaseparams";
-
-        const string TaskcompleteTsrecord_TableName = "tab_taskcompleteTsrecord";
-
-        const string Taskprogressrecord_TableName = "tab_taskprogressrecord";
-
-        /// <summary>
-        /// 界面内数值变化数据传输
-        /// </summary>
-        /// <param name="uid"></param>
-        /// <param name="zoneid"></param>
-        public static void Userbaseparams_RedisToSql(int zoneid)
-        {
-            Console.WriteLine("玩家基础数值变化方法开始.........");
-            var mem = Redis.Ins.GetDatabase(1);
-            string key = MemKey_Statistics.UserBaseParams(zoneid);
-
-            if (mem.KeyExists(key))
-            {
-                long length = mem.ListLength(key);
-                var ctxList = mem.ListRange(key, 0, length);
-
-                int num = 0;
-                foreach (var item in ctxList)
-                {
-                    num += 1;
-                    JObject dic = JObject.Parse(item.ToString());
-                    int uid = int.Parse(dic["uid"].ToString());
-                    int cmd = int.Parse(dic["cmd"].ToString());
-                    int type = int.Parse(dic["type"].ToString());
-                    string curVal = dic["curVal"].ToString();
-                    string changeVal = dic["changeVal"].ToString();
-                    string endVal = dic["endVal"].ToString();
-                    string desc = dic["desc"].ToString();
-                    //Console.WriteLine("desc..........:"+ desc);
-                    string ts = dic["ts"].ToString();
-
-                    //continue;
-
-                    var sql = $" Insert Into {Userbaseparams_TableName} (`uid`, `zoneid`, `cmd`, `type`, `curVal`, `endVal`, `changeVal`, `desc`, `ts`) " +
-                $"values('{uid}',{zoneid},{cmd},{type},'{curVal}','{endVal}','{changeVal}','{desc}','{ts}')";
-
-                    var n = MysqlUtil.Ins.ExecuteSqlNonQuery(sql);
-                    //Debug.Assert(n > 0, $"{sql} 执行失败!");
-
-                    if (num >= length)
-                    {
-                        Console.WriteLine("总共执行条数:" + num);
-                        mem.KeyDelete(key);
-                        break;
-                    }
-
-                }
-            }
-        }
-
-        /// <summary>
-        /// 个人数据 包括以下两点:
-        ///1.通过玩家ID查询指定玩家的任务进度,包括任务ID和任务STEP ID----【直接从玩家数据里取数据展示】
-        ///2.可查询玩家每日任务进度变化---【单一记录玩家自己的任务信息就可以了,每次做任务时候要记录时间,展示的时候需要以天为单位展示任务进度】
-        /// </summary>
-        /// <param name="uid"></param>
-        /// <param name="zoneid"></param>
-        public static void TaskcompleteTsrecord_RedisToSql(string uid, int zoneid)
-        {            
-            var mem = Redis.Ins.GetDatabase(1);
-            string key = MemKey_Statistics.SelfTaskDataCollect(uid, zoneid);
-
-            if (mem.KeyExists(key))
-            {
-                Console.WriteLine("玩家任务完成时间记录方法开始.........");
-                long length = mem.ListLength(key);
-                var ctxList = mem.ListRange(key, 0, length);
-
-                int num = 0;
-                foreach (var item in ctxList)
-                {
-                    num += 1;
-
-                    string[] sList = item.ToString().Split('-');
-                    string taskId = sList[0];
-                    string time = sList[1];
-
-                    var sql = $" Insert Into {TaskcompleteTsrecord_TableName} (`uid`, `zoneid`, `taskId`, `time`) " +
-                $"values('{uid}',{zoneid},'{taskId}','{time}')";
-
-                    var n = MysqlUtil.Ins.ExecuteSqlNonQuery(sql);
-                    //Debug.Assert(n > 0, $"{sql} 执行失败!");
-
-                    if (num >= length)
-                    {
-                        Console.WriteLine("总共执行条数:" + num);
-                        mem.KeyDelete(key);
-                        break;
-                    }
-
-                }
-            }
-        }
-
-        /// <summary>
-        /// 所有玩家最新主线任务id记录
-        /// </summary>
-        /// <param name="uid"></param>
-        /// <param name="zoneid"></param>
-        public static void Taskprogressrecord_RedisToSql(int zoneid)
-        {
-            Console.WriteLine("玩家任务进度方式开始......");
-            var mem = Redis.Ins.GetDatabase(1);
-            string key = MemKey_Statistics.TaskDataCollect(zoneid);
-
-            if (mem.KeyExists(key))
-            {
-                HashEntry[] ctxList = mem.HashGetAll(key);
-                int length = ctxList.Length;
-                int num = 0;
-                foreach (var item in ctxList)
-                {
-                    num += 1;
-                    string[] sList = item.ToString().Split(':');
-                    string uid = sList[0];
-                    string taskId = sList[1];
-
-                    var sql = $" Insert Into {Taskprogressrecord_TableName} (`uid`, `zoneid`, `taskId`) " +
-                $"values('{uid}',{zoneid},'{taskId}')";
-
-                    var n = MysqlUtil.Ins.ExecuteSqlNonQuery(sql);
-                    //Debug.Assert(n > 0, $"{sql} 执行失败!");
-
-                    if (num >= length)
-                    {
-                        Console.WriteLine("总共执行条数:" + num);
-                        mem.KeyDelete(key);
-                        break;
-                    }
-                }
-            }
-            else
-            {
-                Console.WriteLine("玩家任务进度redis-key不存在所以不在数据传输处理");
-            }
-        }
-    }
-}

+ 0 - 462
CSserver/DataTransfer/tongji/DataToExcelText.cs

@@ -1,462 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.IO;
-using NPOI.HSSF.UserModel;
-using StackExchange.Redis;
-using CSharpUtil;
-
-
-using Newtonsoft.Json.Linq;
-//using System.Diagnostics;
-
-namespace DataTransfer.tongji
-{
-    class DataToExcelText
-    {
-        public static void excelText(string memKey, int retain, int zoneid, float day)
-        {
-            //获取redis种的数据
-            var mem = Redis.Ins.GetDatabase(1);
-
-            HashEntry[] ctxList = mem.HashGetAll(memKey);
-            int length = ctxList.Length;
-            if (length <= 0)
-            {
-                return;
-            }
-
-            Dictionary<string, string> levelDic = new Dictionary<string, string>();
-            Dictionary<string, string> taskDic = new Dictionary<string, string>();
-            Dictionary<string, string> gateDic = new Dictionary<string, string>();
-
-            foreach (var item in ctxList)
-            {
-                string[] sList = item.ToString().Split(':');
-                string type = sList[0];
-                string num = sList[1];
-
-                string[] ctx = type.Split('-');
-                string name = ctx[0];
-                //string id = ctx[1];            
-
-                if (name == "level")
-                {
-                    levelDic[type] = num;
-                }
-                else if (name == "task")
-                {
-                    taskDic[type] = num;
-                }
-                else if (name == "gateId")
-                {
-                    gateDic[type] = num;
-                }
-            }
-
-            Dictionary<string, string> dic = levelDic.Union(taskDic).ToDictionary(k => k.Key, v => v.Value);
-            Dictionary<string, string> newdic = dic.Union(gateDic).ToDictionary(k => k.Key, v => v.Value);
-
-            HSSFWorkbook workbook = new HSSFWorkbook();
-            //创建工作表            
-            var sheet = workbook.CreateSheet("信息表");
-            var row = sheet.CreateRow(0);
-            //创建单元格
-            var cellid = row.CreateCell(0);
-            cellid.SetCellValue("指标类型");
-            var cellname = row.CreateCell(1);
-            cellname.SetCellValue("指标id");
-            var cellpwd = row.CreateCell(2);
-            cellpwd.SetCellValue("指标累计值");
-
-            int x = 1;
-            foreach (KeyValuePair<string, string> kv in newdic)
-            {
-                string[] sList = kv.Key.Split('-');
-                string name = sList[0];
-                string id = sList[1];
-
-                int num = int.Parse(kv.Value);
-
-                var rowi = sheet.CreateRow(x);
-                var cname = rowi.CreateCell(0);
-                cname.SetCellValue(name);
-
-                var cid = rowi.CreateCell(1);
-                cid.SetCellValue(id);
-
-                var cnum = rowi.CreateCell(2);
-                cnum.SetCellValue(num);
-
-                x += 1;
-            }
-
-            string txtName = "流失玩家指标累计信息表_" + "zone" + zoneid + "_" + retain + "lose_" + day;
-
-            FileStream file = new FileStream(@"F:\excel\" + txtName + ".xls", FileMode.CreateNew, FileAccess.Write);
-            workbook.Write(file);
-            file.Dispose();
-        }
-
-        /*
-        /// <summary>
-        /// 指标累计值数据转为execl表
-        /// </summary>
-        public static void TargetStatistics()
-        {
-            var mem = Redis.Ins.GetDatabase(0);
-
-            int zoneid = 1;
-            HashEntry[] ctxList = mem.HashGetAll(MemKey_Statistics.TargetStatistics(zoneid));
-            int length = ctxList.Length;
-            if (length <= 0)
-            {
-                return;
-            }
-
-
-            Dictionary<string, Dictionary<string, int>> dic = new Dictionary<string, Dictionary<string, int>>();
-
-            foreach (var item in ctxList)
-            {
-                string[] sList = item.ToString().Split(':');
-                string type = sList[0];
-                int num = int.Parse(sList[1]);
-
-                string[] clist = type.Split('-');               
-                string nType = targetType(clist[0]);
-                //Console.WriteLine("nType-----.." + nType);
-                if (dic.ContainsKey(nType))
-                {
-                    //Console.WriteLine("type-----..." + type);
-                    dic[nType].Add(type, num);
-                }
-                else
-                {
-                    Dictionary<string, int> itemDic = new Dictionary<string, int>();
-                    itemDic.Add(type, num);
-                    dic[nType] = itemDic;
-                    //Console.WriteLine("type-----..." + type);
-                }
-            }
-
-            HSSFWorkbook workbook = new HSSFWorkbook();
-                       
-            foreach (KeyValuePair<string, Dictionary<string,int>> kv in dic)
-            {
-                Dictionary<string, int> dict =  kv.Value;
-                Console.WriteLine("kv--key-----........"+kv.Key);
-
-                string tableName = "指标统计表_" + kv.Key;
-                //创建工作表            
-                var sheet = workbook.CreateSheet(tableName);
-                var row = sheet.CreateRow(0);
-                //创建单元格
-                var cellid = row.CreateCell(0);
-                cellid.SetCellValue("指标描述信息");
-                var cellname = row.CreateCell(1);
-                cellname.SetCellValue("指标类型");
-                var cellpwd = row.CreateCell(2);
-                cellpwd.SetCellValue("指标累计值");
-                int x = 1;
-                foreach (KeyValuePair<string,int>kt in dict)
-                {
-                    string type = kt.Key;
-                    int num = kt.Value;                   
-                    string desc = TargetDesc(type);
-
-                    //Console.WriteLine("ktttt--type-----........" + type);
-                    //Console.WriteLine("ktttt--name-----........" + desc);
-                
-                    var rowi = sheet.CreateRow(x);
-                    var cdesc = rowi.CreateCell(0);
-                    cdesc.SetCellValue(desc);
-
-                    var cType = rowi.CreateCell(1);
-                    cType.SetCellValue(type);
-
-                    var cnum = rowi.CreateCell(2);
-                    cnum.SetCellValue(num);
-
-                    x += 1;
-                }
-
-            }
-
-            TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1);
-            float curday = MathF.Floor((long)ts.TotalSeconds / 24 / 60 / 60);
-
-            string txtName = "指标累计信息表_" + "zone" + zoneid+"-day-"+curday;
-
-            FileStream file = new FileStream(@"F:\excel\" + txtName + ".xls", FileMode.CreateNew, FileAccess.Write);
-            workbook.Write(file);
-            file.Dispose();
-
-            Console.WriteLine("指标累计execl完成........");
-        }
-
-        public static string TargetDesc(string type)
-        {
-            string[] sList = type.Split('-');
-            var mem = Redis.Ins.GetDatabase(0);
-            string desc = "";
-            switch (sList[0])
-            {
-                case "registerUserNum":
-                    desc = "注册人数累计";
-                    break;
-                case "comNewGuideUserNum":
-                    desc = "完成新手引导人数累计";
-                    break;
-                case "unlockbuidId":                  
-                    string ctx = mem.HashGet(MemKey_Game.Build(),sList[1]);
-                    JObject ctxDic = JObject.Parse(ctx);
-                    string s = ctxDic["name"].ToString();
-                    desc = "累计解锁建筑-" + s+"的人数";
-                    break;
-                case "mainTaskId_ComUserNum"://主线任务id--完成人数
-                    desc = "完成主线任务id-" + sList[1] + "的人数";
-
-                    break;
-
-                case "shopTaskId_ComUserNum":
-                    desc = "完成悬赏任务id-" + sList[1] + "的人数";
-
-                    break;
-                case "shopTaskId_BuyUserNum":
-                    desc = "购买悬赏任务id-" + sList[1] + "的人数";
-
-                    break;
-                case "collegeTaskId_ComUserNum":
-                    desc = "完成学院任务id-" + sList[1] + "的人数";
-
-                    break;
-                case "collegeCouseId_UnlockUserNum":
-                    desc = "解锁学院课程id-" + sList[1] + "的人数";
-
-                    break;
-
-                case "dailyTaskId_ComUserNum":
-                    desc = "完成日常任务id-" + sList[1] + "的人数";
-
-                    break;
-                case "storyGateId_ComUserNum":
-                    desc = "完成剧情关卡id-" + sList[1] + "的人数";
-                    break;
-
-                case "storyGateId_BattleNum":
-                    desc = "剧情关卡id-" + sList[1] + "的挑战次数/通关次数";
-                    break;
-
-                case "HuanLingShiGateId_ComUserNum":
-                    desc = "完成副本唤灵师关卡id-" + sList[1] + "的人数";
-                    break;
-                case "HuanLingShiGateId_BattleNum":
-                    desc = "完成副本唤灵师关卡id-" + sList[1] + "的挑战次数/通关次数";
-                    break;
-                case "WeaponGateId_ComUserNum":
-                    desc = "完成副本武器关卡id-" + sList[1] + "的人数";
-                    break;
-                case "WeaponGateId_BattleNum":
-                    desc = "完成副本武器关卡id-" + sList[1] + "的挑战次数/通关次数";
-                    break;
-
-                case "YanLingGateId_ComUserNum":
-                    desc = "完成副本言灵关卡id-" + sList[1] + "的人数";
-                    break;
-                case "YanLingGateId_BattleNum":
-                    desc = "完成副本言灵关卡id-" + sList[1] + "的挑战次数/通关次数";
-                    break;
-                case "userlevel":
-                    desc = "玩家等级为" + sList[1] + "的人数";
-                    break;
-                case "newUserLotteryDraw_one":
-                    desc = "新手池抽卡单次抽奖的访问频率";
-                    break;
-                case "newUserLotteryDraw_ten":
-                    desc = "新手池抽卡十连抽的访问频率";
-                    break;
-                case "yanLingLotteryDraw_one":
-                    desc = "言灵活动祈愿奖池单次抽奖的访问频率";
-                    break;
-                case "yanLingLotteryDraw_ten":
-                    desc = "言灵活动祈愿奖池十连抽的访问频率";
-                    break;
-                case "weaponLotteryDraw_one":
-                    desc = "武器活动祈愿奖池单次抽奖的访问频率";
-                    break;
-                case "weaponLotteryDraw_ten":
-                    desc = "武器活动祈愿奖池十连抽的访问频率";
-                    break;
-
-                case "commonLotteryDraw_one":
-                    desc = "常驻祈愿奖池单次抽奖的访问频率";
-                    break;
-                case "commonLotteryDraw_ten":
-                    desc = "常驻祈愿奖池十连抽的访问频率";
-                    break;
-
-                case "HuanLingShiLevel_UserNum":
-                    desc = "唤灵师"+sList[1]+"等级为"+sList[2]+"的人数";
-                    break;
-                case "HuanLingShiId_UserNum":
-                    desc = "拥有唤灵师"+ sList[1]+"的人数";
-                    break;
-
-                case "YanLingId_UserNum":
-                    desc = "拥有言灵" + sList[1] + "的人数";
-                    break;
-                case "YanLingIdLevel_UserNum":
-                    desc = "言灵" + sList[1] + "等级为" + sList[2] + "的人数";
-                    break;
-                case "WeaponId_UserNum":
-                    desc = "拥有武器" + sList[1] + "的人数";
-                    break;
-                case "WeaponIdLevel_UserNum":
-                    desc = "武器" + sList[1] + "等级为" + sList[2] + "的人数";
-                    break;
-              
-            }
-
-
-            return desc;
-        }
-
-        public static string targetType(string t)
-        {
-            string type = "";
-            switch (t)
-            {
-                case "registerUserNum":
-                    type = "registerUserNum";
-                    break;
-                case "comNewGuideUserNum":
-                    type = "comNewGuideUserNum";
-                    break;
-                case "unlockbuidId":
-                    type = "unlockbuidId";
-                    break;
-                case "mainTaskId_ComUserNum"://主线任务id--完成人数
-                    type = "mainTask";
-
-                    break;
-
-                case "shopTaskId_ComUserNum":
-                    type = "shopTask";
-
-                    break;
-                case "shopTaskId_BuyUserNum":
-                    type = "shopTask";
-
-                    break;
-                case "collegeTaskId_ComUserNum":
-                    type = "collegeTask";
-                    break;
-                case "collegeCouseId_UnlockUserNum":
-                    type = "collegeTask";
-
-                    break;
-
-                case "dailyTaskId_ComUserNum":
-                    type = "dailyTask";
-
-                    break;
-                case "storyGateId_ComUserNum":
-                    type = "storyGate";
-                    break;
-
-                case "storyGateId_BattleNum":
-                    type = "storyGate";
-                    break;
-
-                case "HuanLingShiGateId_ComUserNum":
-                    type = "HuanLingShiGate";
-                    break;
-                case "HuanLingShiGateId_BattleNum":
-                    type = "HuanLingShiGate";
-                    break;
-                case "WeaponGateId_ComUserNum":
-                    type = "WeaponGate";
-                    break;
-                case "WeaponGateId_BattleNum":
-                    type = "WeaponGate";
-                    break;
-
-                case "YanLingGateId_ComUserNum":
-                    type = "YanLingGate";
-                    break;
-                case "YanLingGateId_BattleNum":
-                    type = "YanLingGate";
-                    break;
-                case "userlevel":
-                    type = "userlevel";
-                    break;
-                case "newUserLotteryDraw_one":
-                    type = "LotteryDraw";
-                    break;
-                case "newUserLotteryDraw_ten":
-                    type = "LotteryDraw";
-                    break;
-                case "yanLingLotteryDraw_one":
-                    type = "LotteryDraw";
-                    break;
-                case "yanLingLotteryDraw_ten":
-                    type = "LotteryDraw";
-                    break;
-                case "weaponLotteryDraw_one":
-                    type = "LotteryDraw";
-                    break;
-                case "weaponLotteryDraw_ten":
-                    type = "LotteryDraw";
-                    break;
-
-                case "commonLotteryDraw_one":
-                    type = "LotteryDraw";
-                    break;
-                case "commonLotteryDraw_ten":
-                    type = "LotteryDraw";
-                    break;
-
-                case "HuanLingShiLevel_UserNum":
-                    type = "HuanLingShi";
-                    break;
-                case "HuanLingShiId_UserNum":
-                    type = "HuanLingShi";
-                    break;
-
-                case "YanLingId_UserNum":
-                    type = "YanLing";
-                    break;
-                case "YanLingIdLevel_UserNum":
-                    type = "YanLing";
-                    break;
-                case "WeaponId_UserNum":
-                    type = "Weapon";
-                    break;
-                case "WeaponIdLevel_UserNum":
-                    type = "Weapon"; 
-                    break;
-
-            }
-
-            return type;
-        }
-        */
-    }
-
-    public class User
-    {
-        /// <summary>
-        /// 索引
-        /// </summary>
-        public int Id { get; set; }
-
-        public string Name { get; set; }
-
-        public string pwd { get; set; }
-
-        public string type { get; set; }
-    }
-}

+ 0 - 241
CSserver/DataTransfer/tongji/UserStatistics.cs

@@ -1,241 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using Newtonsoft.Json;
-using System.Threading;
-using System.Data;
-using StackExchange.Redis;
-using CSharpUtil;
-
-using Newtonsoft.Json.Linq;
-using System.Diagnostics;
-
-namespace DataTransfer.tongji
-{
-    class UserStatistics
-    {
-        public static void DataDeal()
-        {
-            LoseUserTargetCollect();
-        }
-
-        /// <summary>
-        ///  流失玩家的指标的统计
-        /// </summary>
-        public static void LoseUserTargetCollect()
-        {
-            Console.WriteLine("进入流失玩家的指标的统计方法..............");
-
-            TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1);
-            float curday = MathF.Floor((long)ts.TotalSeconds / 24 / 60 / 60);
-            float day = curday - 1;
-            //float day = MathF.Floor((long)ts.TotalSeconds / 24 / 60 / 60);
-            Console.WriteLine("当前时间day==.............."+ day);
-            var mem = Redis.Ins.GetDatabase(1);
-
-            List<int> retainedlist = new List<int>();
-            retainedlist.Add(1);
-            retainedlist.Add(2);
-            retainedlist.Add(3);
-            retainedlist.Add(4);
-            retainedlist.Add(5);
-            retainedlist.Add(6);
-            retainedlist.Add(7);
-            //retainedlist.Add(14);
-            //retainedlist.Add(30);
-
-            HashEntry[] zoneidList = mem.HashGetAll(MemKey_Statistics.Zonelist());
-            foreach (var item in zoneidList)
-            {  
-                string[] sList = item.ToString().Split(':');
-                int zoneid = int.Parse(sList[0]);//区
-                Console.WriteLine("zoneid............"+zoneid);
-
-                userNumRecord(zoneid);//统计下每天的人数uid
-
-                //下面是流失人员指标统计
-                foreach (int type in retainedlist)
-                {
-                    Console.WriteLine("type............" + type);
-                   
-                    List<string> loseUIdList = loseUserListCollect(type,zoneid,day);
-                    if (loseUIdList.Count <= 0)
-                    {
-                        continue;
-                    }     
-                    TargetCollect(loseUIdList,type,zoneid, day);                   
-                }               
-            }
-        }
-       
-        /// <summary>
-        /// 统计流失玩家uid
-        /// </summary>
-        /// <param name="type"></param>
-        /// <param name="zoneid"></param>
-        /// <param name="day"></param>
-        public static List<string> loseUserListCollect(int type,int zoneid, float day)
-        {
-            //次日留存               
-            string dayKey = MemKey_Statistics.GamerunLoginUser(zoneid, day);
-            string lastDayKey = MemKey_Statistics.GamerunLoginUser(zoneid, day - type);
-
-            List<string> loseUIdList = new List<string>();
-
-            var mem = Redis.Ins.GetDatabase(1);
-            if (!mem.KeyExists(dayKey) || !mem.KeyExists(lastDayKey))
-            {
-                return loseUIdList;
-            }
-            
-            string[] list = mem.HashKeys(dayKey).ToStringArray();
-            string[] nextDaylist = mem.HashKeys(lastDayKey).ToStringArray();
-            
-            foreach (string uid in nextDaylist)
-            {
-                if (!list.Contains(uid))
-                {
-                    Console.WriteLine("uid............" + uid);
-                    loseUIdList.Add(uid);
-                }
-            }
-            return loseUIdList;
-        }
-
-        /// <summary>
-        /// 查看次日流失玩家的指标信息
-        /// </summary>
-        /// <param name="loseUIdList"></param>
-        /// <param name="zoneid"></param>
-        /// <param name="day"></param>
-        public static void TargetCollect(List<string> loseUIdList,int type,int zoneid,float day)
-        {
-            var mem = Redis.Ins.GetDatabase(1);
-
-            foreach (string uid in loseUIdList)
-            {              
-                if (!mem.KeyExists(MemKey_User.gameInfo(uid, zoneid)))
-                {                  
-                    continue;
-                }
-              
-                #region----------玩家等级
-                //玩家等级
-                string baseInfo = mem.HashGet(MemKey_User.gameInfo(uid, zoneid), "baseInfo");
-                JObject baseInfoDic = JObject.Parse(baseInfo);
-                int level = int.Parse(baseInfoDic["level"].ToString());
-                string k = "level-" + level;
-                if (mem.HashExists(MemKey_Statistics.LoseUserKeyCount(type, zoneid, day-type), k))
-                {
-                    mem.HashIncrement(MemKey_Statistics.LoseUserKeyCount(type, zoneid, day - type), k, 1);
-                }
-                else
-                {
-                    List<HashEntry> list = new List<HashEntry>();
-                    HashEntry d = new HashEntry(k, 1);
-                    list.Add(d);
-
-                    mem.HashSet(MemKey_Statistics.LoseUserKeyCount(type, zoneid, day - type), list.ToArray());
-                }
-                #endregion
-
-                #region--------------主线任务
-                
-                //主线任务
-                string privateState = mem.HashGet(MemKey_User.gameInfo(uid, zoneid), "privateState");
-                JObject privateStateDic = JObject.Parse(privateState); //
-                JObject jtaskCardTracing = JObject.Parse(privateStateDic["taskCardTracing"].ToString());
-                string taskId = "0";
-                if (jtaskCardTracing.ContainsKey("1"))//主线
-                {
-                    taskId = jtaskCardTracing["1"].ToString();                  
-                }
-
-                string store = mem.HashGet(MemKey_User.gameInfo(uid, zoneid), "store");
-                JObject storeDic = JObject.Parse(store);
-                JObject taskcardsDic = JObject.Parse(storeDic["taskcards"].ToString());
-
-                if (taskId != "0" )
-                {
-                    JObject dict = JObject.Parse(taskcardsDic[taskId].ToString());
-                    string typeId = dict["typeId"].ToString();
-                    string taskKey = "task-" + typeId;
-                    if (mem.HashExists(MemKey_Statistics.LoseUserKeyCount(type, zoneid, day - type), taskKey))
-                    {
-                        mem.HashIncrement(MemKey_Statistics.LoseUserKeyCount(type, zoneid, day - type), taskKey, 1);
-                    }
-                    else
-                    {
-                        List<HashEntry> list = new List<HashEntry>();
-                        HashEntry d = new HashEntry(taskKey, 1);
-                        list.Add(d);
-
-                        mem.HashSet(MemKey_Statistics.LoseUserKeyCount(type, zoneid, day - type), list.ToArray());
-                    }
-                }
-                #endregion
-
-                #region--------------关卡
-                
-                string gates = mem.HashGet(MemKey_User.gameInfo(uid, zoneid), "gates");
-                JObject gatesDic = JObject.Parse(gates);
-                JObject normalsDic = JObject.Parse(gatesDic["normal"].ToString());
-                JObject lastgatesDic = JObject.Parse(normalsDic["gates"].ToString());
-                int gateId = 0;
-                foreach (KeyValuePair<string,JToken>kv in lastgatesDic)
-                {
-                    gateId = int.Parse(kv.Key);
-                }
-
-                string gateKey = "gateId-" + gateId;
-                if (mem.HashExists(MemKey_Statistics.LoseUserKeyCount(type, zoneid, day - type), gateKey))
-                {
-                    mem.HashIncrement(MemKey_Statistics.LoseUserKeyCount(type, zoneid, day - type), gateKey, 1);
-                }
-                else
-                {
-                    List<HashEntry> list = new List<HashEntry>();
-                    HashEntry d = new HashEntry(gateKey, 1);
-                    list.Add(d);
-
-                    mem.HashSet(MemKey_Statistics.LoseUserKeyCount(type, zoneid, day - type), list.ToArray());
-                }
-                #endregion
-            }
-
-            DataToExcelText.excelText(MemKey_Statistics.LoseUserKeyCount(type, zoneid, day - type),type,zoneid,day - type);
-
-        }
-
-        /// <summary>
-        /// 每天登陆人数纪录----以防刚哥记得的uid的rediskey删除
-        /// </summary>
-        /// <param name="zoneid"></param>
-        public static void userNumRecord(int zoneid)
-        {
-            TimeSpan ts = DateTime.Now.ToUniversalTime() - new DateTime(1970, 1, 1);
-            float day = MathF.Floor((long)ts.TotalSeconds / 24 / 60 / 60);
-
-
-            var mem = Redis.Ins.GetDatabase(1);
-            HashEntry[] ctxList = mem.HashGetAll(MemKey_Statistics.GamerunLoginUser(zoneid, day - 1));
-            //int length = ctxList.Length;
-
-            List<string> uidlist = new List<string>();
-            foreach (var item in ctxList)
-            {            
-                string[] sList = item.ToString().Split(':');
-                string uid = sList[0];
-                uidlist.Add(uid);
-            }
-
-            List<HashEntry> list = new List<HashEntry>();
-            HashEntry d = new HashEntry(day-1,uidlist.ToString());
-            list.Add(d);
-
-            mem.HashSet(MemKey_Statistics.userNumRecord(zoneid), list.ToArray());
-        }
-    }
-}

+ 0 - 140
CSserver/DataTransfer/tongji/loseUserDataTransfer.cs

@@ -1,140 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using NPOI.HSSF.UserModel;
-using System.IO;
-using StackExchange.Redis;
-
-
-//using System.Threading;
-//using System.Data;
-
-using CSharpUtil;
-//using Newtonsoft.Json;
-//using Newtonsoft.Json.Linq;
-//using System.Diagnostics;
-
-namespace DataTransfer.tongji
-{
-    class loseUserDataTransfer
-    {
-        
-        public static void excelText(string memKey,int retain,int zoneid,float day)
-        {
-            //获取redis种的数据
-            var mem = Redis.Ins.GetDatabase(1);
-
-            HashEntry[] ctxList = mem.HashGetAll(memKey);
-            int length = ctxList.Length;      
-            if (length <= 0)
-            {
-                return;
-            }
-
-            Dictionary<string, string> levelDic = new Dictionary<string, string>();
-            Dictionary<string, string> taskDic = new Dictionary<string, string>();
-            Dictionary<string, string> gateDic = new Dictionary<string, string>();
-
-            foreach (var item in ctxList)
-            {
-                string[] sList = item.ToString().Split(':');
-                string type = sList[0];
-                string num = sList[1];             
-
-                string[] ctx = type.Split('-');
-                string name = ctx[0];            
-                //string id = ctx[1];            
-
-                if (name == "level")
-                {
-                    levelDic[type] = num;
-                }
-                else if (name == "task")
-                {
-                    taskDic[type] = num;
-                }
-                else if (name == "gateId")
-                {
-                    gateDic[type] = num;
-                }
-            }
-
-            Dictionary<string,string> dic = levelDic.Union(taskDic).ToDictionary(k=>k.Key,v=>v.Value);
-            Dictionary<string, string> newdic = dic.Union(gateDic).ToDictionary(k => k.Key, v => v.Value);
-
-            HSSFWorkbook workbook = new HSSFWorkbook();
-            //创建工作表            
-            var sheet = workbook.CreateSheet("信息表");
-            var row = sheet.CreateRow(0);
-            //创建单元格
-            var cellid = row.CreateCell(0);
-            cellid.SetCellValue("指标类型");
-            var cellname = row.CreateCell(1);
-            cellname.SetCellValue("指标id");
-            var cellpwd = row.CreateCell(2);
-            cellpwd.SetCellValue("指标累计值");
-
-            int x = 1;
-            foreach (KeyValuePair<string,string>kv in newdic)
-            {
-                string[] sList = kv.Key.Split('-');
-                string name = sList[0];
-                string id = sList[1];
-
-                int num = int.Parse(kv.Value);
-
-                var rowi = sheet.CreateRow(x);
-                var cname = rowi.CreateCell(0);
-                cname.SetCellValue(name);
-
-                var cid = rowi.CreateCell(1);
-                cid.SetCellValue(id);
-
-                var cnum = rowi.CreateCell(2);
-                cnum.SetCellValue(num);
-                
-                x += 1;
-            }
-
-            string txtName = "流失玩家指标累计信息表_" +"zone"+zoneid+"_"+retain+"lose_" + day;       
-
-            FileStream file = new FileStream(@"F:\excel\"+txtName+".xls", FileMode.CreateNew, FileAccess.Write);
-            workbook.Write(file);
-            file.Dispose();
-        }
-
-    }
-
-    //public class User
-    //{
-    //    /// <summary>
-    //    /// 索引
-    //    /// </summary>
-    //    public int Id { get; set; }
-
-    //    public string Name { get; set; }
-
-    //    public string pwd { get; set; }
-
-    //    public string type { get; set; }
-    //}
-
-    public class Model
-    {
-        /// <summary>
-        /// 索引
-        /// </summary>
-        public int Id { get; set; }
-
-        public string Name { get; set; }
-
-        public int pwd { get; set; }
-
-        public string type { get; set; }
-    }
-
-
-
-}

+ 0 - 112
CSserver/Lib1/Config.cs

@@ -1,112 +0,0 @@
-using System.IO;
-using MySql.Data.MySqlClient;
-using StackExchange.Redis;
- 
-public class Config
-{
-
-    public const bool GameOnline = true;
-
-    public ConfigurationOptions redis;
-
-    public MySqlConnectionStringBuilder mysql;
-
-    public string mongo => GameOnline ? "mongodb://localhost:27017" : "mongodb://localhost:27017";
-
-    /// <summary>
-    /// 结束倒计时
-    /// </summary>
-    public int CountDownTimes => GameOnline ? 10 * 60 : 2 * 60;
-
-    /// <summary>
-    /// 结算地址
-    /// </summary>
-    public string SettleUrl
-    {
-        get
-        {
-            var host = "192.168.10.87";
-            if (GameOnline)
-            {
-                host = "115.159.121.129";
-            }
-            return $"http://{host}/ylsj2019/Gameserver/Amfphp/service_call/InquireApi/WorldBosSettle.php";
-        }
-    }
-
-
-    public string OutDir
-    {
-        get
-        {
-            var dir = "/data/stat_out/";
-            VerifyFolder(dir);
-            return dir;
-        }
-    }
-    /// <summary>
-    /// 确保路径存在
-    /// </summary>
-    /// <param name="dir"></param>
-    internal static void VerifyFolder(string dir)
-    {
-        if (!Directory.Exists(dir))
-        {
-            Directory.CreateDirectory(dir);
-        }
-    }
-
-    private Config() { }
-
-    static private Config _ins;
-    public static Config Ins
-    {
-        get
-        {
-
-            if (null == _ins)
-            {
-                if (GameOnline)
-                {
-                    var host = "127.0.0.1";
-                    var port = 6379;
-                    var pwd = "wanggang1985";
-                    _ins = new Config()
-                    {
-                        redis = ConfigurationOptions.Parse($"{host}:{port},password={pwd},connectTimeout=2000"),
-                        mysql = new MySqlConnectionStringBuilder
-                        {
-                            Server = "127.0.0.1",
-                            UserID = "gwang",
-                            Password = "wanggang1985",
-                            Port = 3306,
-                            Database = "ylsj2019_pay",
-                            CharacterSet = "utf8"
-                        }
-                    };
-                }
-                else
-                {
-                    var host = "192.168.10.16";
-                    var port = 6004;
-                    var pwd = "wanggang1985";
-                    _ins = new Config()
-                    {
-                        redis = ConfigurationOptions.Parse($"{host}:{port},password={pwd},connectTimeout=2000"),
-                        mysql = new MySqlConnectionStringBuilder
-                        {
-                            Server = "192.168.10.16",
-                            UserID = "gwang",
-                            Password = "wanggang1985",
-                            Port = 3306,
-                            Database = "ylsj2019_pay",
-                            CharacterSet = "utf8"
-                        }
-                    };
-                }
-            }
-            return _ins;
-        }
-    }
-
-}

+ 0 - 14
CSserver/Lib1/Lib1.csproj

@@ -1,14 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <TargetFramework>net6.0</TargetFramework>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <PackageReference Include="MongoDB.Driver" Version="2.14.1" />
-    <PackageReference Include="MySql.Data" Version="8.0.25" />
-    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
-    <PackageReference Include="StackExchange.Redis" Version="2.2.88" />
-  </ItemGroup>
-
-</Project>

+ 0 - 212
CSserver/Lib1/MemKey_User.cs

@@ -1,212 +0,0 @@
-using System.Collections.Generic;
-public class MemKey_Cfg {
-    /// <summary>
-    /// GM号列表
-    /// </summary>
-    /// <returns></returns>
-    public static readonly string GM_uids_hash = "gamecfg-GM_uids";
-    /// <summary>
-    /// 建筑配置数据
-    /// </summary>
-    public static readonly string build = "gamecfg-build";
-}
-public class MemKey_Game
-{
-    #region"   世界 Boss    "
-
-    /// <summary>
-    /// 世界boss,按照小时分场次
-    /// </summary>
-    /// <param name="zoneid"></param>
-    /// <param name="uid"></param>
-    /// <returns></returns>
-    public static string BossFight_Damage_byDateHour_zset(int zoneid,int  bossid, string dateHour)
-    {
-        return $"gamerun-BossFight-byDateHour-zone{zoneid}-boss{bossid}-{dateHour}";
-    }
-
-    #endregion
-
-    #region '   公会   '
-    /// <summary>
-    /// 公会
-    /// </summary>
-    /// <param name="zoneid"></param>
-    /// <param name="guildId"></param>
-    /// <returns></returns>
-    public static string Guild(int zoneid,int guildId) => $"guild-{guildId}-zone{zoneid}";
- 
-
-    #endregion
-}
-
-public class MemKey_User
-{
-
-    #region"    辅助方法  "
-
-    /// <summary>
-    /// 是否使用短名称
-    /// </summary>
-    /// <returns></returns>
-    private static bool bUseShort()
-    {
-        //        return true;  # 全部启用
-        return Config.GameOnline;
-    }
-
-    /// <summary>
-    /// key前缀
-    /// </summary>
-    /// <param name="zoneid"></param>
-    /// <param name="uid"></param>
-    /// <returns></returns>
-    private static string Key_(int zoneid, string uid)
-    {
-        return bUseShort() ? $"u-{uid}-{zoneid}" : $"user-{uid}-zone{zoneid}";
-    }
-
-    #endregion
-
-    #region"    Mail 邮件    "
-
-    /// <summary>
-    /// 玩家邮件 - 当前的maxid
-    /// </summary>
-    /// <param name="zoneid"></param>
-    /// <param name="uid"></param>
-    /// <returns></returns>
-    public static string Mail_CurId_int(int zoneid, string uid)
-    {
-        return Key_(zoneid, uid) + (bUseShort() ? "-m-ci" : "-mail-curid");
-    }
-
-    /// <summary>
-    /// 玩家邮件 - 已领取到的系统邮件id集合
-    /// </summary>
-    /// <param name="zoneid"></param>
-    /// <param name="uid"></param>
-    /// <returns></returns>
-    public static string Mail_SysRecord_set(int zoneid, string uid)
-    {
-        return Key_(zoneid, uid) + (bUseShort() ? "-m-s" : "-mail-sysrecord");
-    }
-
-    /// <summary>
-    /// 玩家邮件 - 邮件列表
-    /// </summary>
-    /// <param name="zoneid"></param>
-    /// <param name="uid"></param>
-    /// <returns></returns>
-    public static string Mail_Queue_hash(int zoneid, string uid)
-    {
-        return Key_(zoneid, uid) + (bUseShort() ? "-m-q" : "-mail-queue");
-    }
-
-    #endregion
-
-    #region '   公会  '
-    /// <summary>
-    /// 玩家公会信息
-    /// </summary>
-    /// <param name="uid"></param>
-    /// <param name="zoneid"></param>
-    /// <returns></returns>
-    public static string Guild(string uid, int zoneid) => $"{Key_(zoneid, uid)}-guild";
-   
-    public static string gameInfo(string uid, int zoneid)
-    {
-        return bUseShort() ? Key_(zoneid, uid) + "-g" : Key_(zoneid, uid) + "-gameinfo";
-    }
-    #endregion
-}
-
-/// <summary>
-/// 统计memkey
-/// </summary>
-public class MemKey_Statistics
-{
-    /// <summary>
-    /// 游戏所有的区
-    /// </summary>
-    /// <returns></returns>
-    public static string Zonelist()
-    {
-        return "gamecfg-zonelist";
-    }
-
-
-    /// <summary>
-    /// 经验 金币钻石统计信息
-    /// </summary>
-    /// <param name="uid"></param>
-    /// <param name="zoneid"></param>
-    /// <returns></returns>
-    public static string UserBaseParams(int zoneid)
-    {
-        return "userbaseParams-"+ zoneid;
-    }
-
-    public static string GamerunLoginUser(int zoneid,float day)
-    {
-        return "gamerun-loginUser-byUid-zone"+zoneid+"-day_"+day;
-    }
-
-    /// <summary>
-    /// 
-    /// </summary>
-    /// <param name="uid"></param>
-    /// <param name="zoneid"></param>
-    /// <returns></returns>
-    public static string SelfTaskDataCollect(string uid,int zoneid)
-    {
-        return "SelfTaskDataCollect-" + uid + "-" + zoneid;
-    }
-
-    /// <summary>
-    /// TaskDataCollect 记录本区玩家最新任务id [主线]
-    /// </summary>
-    /// <param name="zoneid"></param>
-    /// <returns></returns>
-    public static string TaskDataCollect(int zoneid)
-    {
-        return "TaskDataCollect-"+ zoneid;
-    }
-
-    /// <summary>
-    /// 流失玩家的指标的统计
-    /// </summary>
-    /// <param name="zoneid"></param>
-    /// <returns></returns>
-    public static string LoseUserKeyCount(int type,int zoneid,float day)
-    {
-        string key = "LoseUserKeyCount-" + type + "lose-" +"zone"+zoneid + "-" + day;       
-        return key;
-    }
-
-    public static string userNumRecord(int zoneid)
-    {
-        return "loginUserNum-zone" + zoneid;
-    }
-
-    public static string TargetStatistics(int zoneid)
-    {
-        return "TargetStatistics-" + zoneid;
-    }
-
-    public static List<string>  ReportedLogs() {
-        return new List<string> {
-            "stat-reported-log-e_gate",
-            "stat-reported-log-e_task",
-            "stat-reported-log-e_k_1",
-            "stat-reported-log-e_k_2",
-            "stat-reported-log-e_k_3",
-            "stat-reported-log-e_k_4",
-            "stat-reported-log-e_k_5",
-            "stat-reported-log-e_k_6",
-            "stat-reported-log-e_k_7",
-            "stat-reported-log-e_k_8",
-            "stat-reported-log-e_k_9",
-        };
-    }
-}

+ 0 - 38
CSserver/Lib1/db/Mongo.cs

@@ -1,38 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using MongoDB;
-using MongoDB.Driver;
-using MongoDB.Bson;
-
-/// <summary>
-/// MongoDB 连接
-/// </summary>
-public class Mongo
-{
-    private static MongoClient mongo;
-
-    static public MongoClient Ins
-    {
-        get
-        {
-            if (null == mongo)
-            {
-                mongo=new MongoClient(Config.Ins.mongo);
-            }
-            return mongo;
-        }
-    }
-    /// <summary>
-    /// 获取操作redis数据库的接口对象
-    /// </summary>
-    /// <param name="id">指定db的编号</param>
-    /// <returns></returns>
-    public static IMongoDatabase Mdb(string db="test")
-    {
-        return Ins.GetDatabase(db);
-    }
-}
-

+ 0 - 847
CSserver/Lib1/db/MysqlUtil.cs

@@ -1,847 +0,0 @@
-using MySql.Data.MySqlClient;
-using Newtonsoft.Json.Linq;
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Diagnostics;
-using static System.Diagnostics.Trace;
-using static System.String;
-
-
-/// <summary>
-/// MySQL操作辅助类.
-/// </summary>
-public class MysqlUtil : IDisposable
-{
-
-    /// <summary>
-    /// MySQL字段详细信息,(用于GetFiledInfo方法返回值中取信息,可以用nameof来去掉硬编码字符串以防止拼写错误)
-    /// </summary>
-    public enum EFieldInfo
-    {
-        /// <summary>
-        /// 字段类型 in .net
-        /// </summary>
-        Type,
-        /// <summary>
-        /// 是否可空
-        /// </summary>
-        Null,
-        /// <summary>
-        /// 索引类型
-        /// </summary>
-        Key,
-        /// <summary>
-        /// 默认值
-        /// </summary>
-        Default,
-        /// <summary>
-        /// 注释
-        /// </summary>
-        Comment,
-        /// <summary>
-        /// 字符集
-        /// </summary>
-        Collation,
-        /// <summary>
-        /// 额外(自增等)
-        /// </summary>
-        Extra,
-        /// <summary>
-        /// 权限
-        /// </summary>
-        Privileges
-    }
-
-    #region `    基础代码   `
-    static MysqlUtil mInst;
-    public static MysqlUtil Ins
-    {
-        get
-        {
-            if (null == mInst)
-            {
-                mInst = new MysqlUtil();
-            }
-            return mInst;
-        }
-    }
-
-    private MysqlUtil()
-    {
-        conn = new MySqlConnection(Config.Ins.mysql.ConnectionString);
-        conn.Open();
-        Assert(conn.State == ConnectionState.Open, "连接到数据库失败");
-    }
-
-    private MySqlConnection conn = null;
-    /// <summary>
-    /// 建立连接
-    /// </summary>
-    /// <param name="host"></param>
-    /// <param name="port"></param>
-    /// <param name="user"></param>
-    /// <param name="pwd"></param>
-    /// <param name="dbName"></param>
-    public void Connect(string host, string port, string user, string pwd, string dbName)
-    {
-        var connStr = string.Format(
-                          "server={0};port={1};user={2};password={3};database={4};Charset=utf8",
-                          host, port, user, pwd, dbName);
-        conn = new MySqlConnection(connStr);
-        conn.Open();
-        Assert(conn.State == ConnectionState.Open, "连接到数据库失败");
-    }
-    /// <summary>
-    /// 关闭连接
-    /// </summary>
-    public void Close()
-    {
-        conn.Close();
-    }
-    /// <summary>
-    /// 释放资源
-    /// </summary>
-    public void Dispose()
-    {
-        conn.Dispose();
-    }
-    #endregion
-
-    #region `    数据读    `
-
-    /// <summary>
-    /// 读取数据库表-数据操作部分逻辑需要参数中定义
-    /// 一般情况下,使用其余八个读取函数即可,如果需要自己定制数据结构,可以通过在此函数回调中自行遍历整个数据表.
-    /// </summary>
-    /// <param name="tableName">表名</param>
-    /// <param name="working">action to MysqlDataReader</param>
-    public void ReadTabel(string tableName, Action<MySqlDataReader> working)
-    {
-        Assert(TableExist(tableName), "表 " + tableName + " 不存在!");
-        var sql = string.Format("SELECT * FROM {0};", tableName);
-        using (var cmd = new MySqlCommand(sql, conn))
-        using (var rdr = cmd.ExecuteReader())
-        {
-            if (null != working) working.Invoke(rdr);
-        }
-    }
-
-
-    /// <summary>
-    /// 读取数据库表 -> 到一个JArray中, []
-    /// </summary>
-    /// <param name="tableName">表名</param>
-    /// /// <param name="excludeFields">排除的字段名列表</param>
-    /// <returns>JArray</returns>
-    public JArray ReadTabelToJArray(string tableName, params string[] excludeFields)
-    {
-        var ex = new List<string>(excludeFields);
-        var arr = new JArray();
-        ReadTabel(tableName, rdr =>
-        {
-            while (rdr.Read())
-            {
-                var jobj = new JObject();
-
-                for (int i = 0; i < rdr.FieldCount; i++)
-                {
-                    if (!ex.Contains(rdr.GetName(i)))
-                    {
-                        jobj.Add(rdr.GetName(i), JToken.FromObject(rdr.GetValue(i)));
-                    }
-                }
-                arr.Add(jobj);
-            }
-        });
-        return arr;
-    }
-
-    /// <summary>
-    /// 读取数据库表 -> 到一个JObject中, {}
-    /// </summary>
-    /// <param name="tableName">表名</param>
-    /// <param name="indexFieldName">用做索引的字段名</param>
-    /// <param name="excludeFields">排除的字段名列表</param>
-    /// <returns>{}</returns>
-    public JObject ReadTabelToJObject(string tableName, string indexFieldName, out bool isArray, params string[] excludeFields)
-    {
-        Assert(HasFiledInTable(tableName, indexFieldName),
-            Format("在表[{0}]中未找到key:[{1}]", tableName, indexFieldName));
-        bool _isArray = false;
-        var ex = new List<string>(excludeFields);
-        //ex.Add(indexFieldName);
-        var obj = new JObject();
-        ReadTabel(tableName, rdr =>
-        {
-            while (rdr.Read())
-            {
-                var jobj = new JObject();
-                var id = "";
-                for (int i = 0; i < rdr.FieldCount; i++)
-                {
-                    if (rdr.GetName(i) == indexFieldName)
-                    {
-                        id = rdr.GetValue(i).ToString();
-                    }
-                    if (!ex.Contains(rdr.GetName(i)))
-                    {
-                        object v = rdr.GetValue(i);
-
-                        if (DBNull.Value == v)
-                        {
-                            var t = rdr.GetFieldType(i).Name;
-                            switch (t)
-                            {
-                                case "Int32":
-                                    v = 0;
-                                    break;
-                                case "String":
-                                    v = "";
-                                    break;
-                                case "Single":
-                                    v = 0;
-                                    break;
-                            }
-                        }
-                        jobj.Add(rdr.GetName(i), JToken.FromObject(v));
-                    }
-                }
-                if (obj[id] == null)
-                {  // 这段代码智能转换多值对应为[]
-                        obj.Add(id, jobj);
-                }
-                else
-                {
-                    _isArray = true;
-                    var arr = obj[id] as JArray;
-                    if (null != arr)
-                    {
-                        arr.Add(jobj);
-                    }
-                    else
-                    {
-                        obj[id] = new JArray() { obj[id], jobj };
-                    }
-                }
-            }
-
-        });
-        if (_isArray)
-        {
-            foreach (var o in obj.Properties())
-            {
-                if (null == (o.Value as JArray))
-                {
-                    obj[o.Name] = new JArray() { o.Value };
-                }
-            }
-        }
-        isArray = _isArray;
-        return obj;
-    }
-
-    /// <summary>
-    /// 读取数据库表 -> 到一个JObject中, {k->[],k->[],...}
-    /// </summary>
-    /// <param name="tableName">表名</param>
-    /// <param name="indexFieldName">用做索引的字段名</param>
-    /// <param name="excludeFields">排除的字段名列表</param>
-    /// <returns>{}</returns>
-    public JObject ReadTabelToJObjectWithArrayValues(string tableName, string indexFieldName, params string[] excludeFields)
-    {
-        Assert(HasFiledInTable(tableName, indexFieldName),
-            Format("在表[{0}]中未找到key:[{1}]", tableName, indexFieldName));
-
-        var ex = new List<string>(excludeFields);
-        //ex.Add(indexFieldName);
-        var obj = new JObject();
-        ReadTabel(tableName, rdr =>
-        {
-            while (rdr.Read())
-            {
-                var jobj = new JObject();
-                var id = "";
-                for (int i = 0; i < rdr.FieldCount; i++)
-                {
-                    if (rdr.GetName(i) == indexFieldName)
-                    {
-                        id = rdr.GetValue(i).ToString();
-                    }
-                    if (!ex.Contains(rdr.GetName(i)))
-                    {
-                        object v = rdr.GetValue(i);
-
-                        if (DBNull.Value == v)
-                        {
-                            var t = rdr.GetFieldType(i).Name;
-                            switch (t)
-                            {
-                                case "Int32":
-                                    v = 0;
-                                    break;
-                                case "String":
-                                    v = "";
-                                    break;
-                                case "Single":
-                                    v = 0;
-                                    break;
-                            }
-                        }
-                        jobj.Add(rdr.GetName(i), JToken.FromObject(v));
-                    }
-                }
-
-                var arr = obj[id] as JArray;
-                if (null != arr)
-                {
-                    arr.Add(jobj);
-                }
-                else
-                {
-                    obj[id] = new JArray() { jobj };
-                }
-
-            }
-
-        });
-
-        return obj;
-    }
-
-    /// <summary>
-    /// 读取数据库表 -> 到一个简单的key=>value结构中. 即只取表中的两个字段
-    /// </summary>
-    /// <param name="tableName">表名</param>
-    /// <param name="keyName">用作属性名称的字段</param>
-    /// <param name="valueName">用作值的字段</param>
-    /// <returns>{k:v,k:v,...}</returns>
-    public JObject ReadTabelToSimpleJObject(string tableName, string keyName, string valueName)
-    {
-        Assert(HasFiledInTable(tableName, keyName),
-                Format("在表[{0}]中未找到key:[{1}]", tableName, keyName));
-        Assert(HasFiledInTable(tableName, valueName),
-            Format("在表[{0}]中未找到字段:[{1}]", tableName, valueName));
-        var jobj = new JObject();
-
-        ReadTabel(tableName, rdr =>
-       {
-           while (rdr.Read())
-           {
-               var key = "";
-               Object value = null;
-               for (int i = 0; i < rdr.FieldCount; i++)
-               {
-                   if (rdr.GetName(i) == keyName)
-                   {
-                       key = rdr.GetValue(i).ToString();
-                   }
-                   if (rdr.GetName(i) == valueName)
-                   {
-                       value = rdr.GetValue(i);
-                   }
-               }
-               jobj.Add(key, JToken.FromObject(value));
-           }
-       });
-
-        return jobj;
-    }
-
-    /// <summary>
-    /// 读取数据库表 -> 到一个由两个字段内容拼接成的字符串作为索引的JObject中
-    /// </summary>
-    /// <param name="tableName">表名称</param>
-    /// <param name="firstFieldName">第一个字段</param>
-    /// <param name="secondFieldName">第二个字段</param>
-    /// <param name="excludeFields">排除的字段名...</param>
-    /// <returns> {field(1)-field(2):{},...} </returns>
-    public JObject ReadTabelToJObjectWithCombinedIndex(string tableName, string firstFieldName, string secondFieldName, out bool isArray, params string[] excludeFields)
-    {
-        Assert(HasFiledInTable(tableName, firstFieldName),
-             Format("在表[{0}]中未找到字段:[{1}]", tableName, firstFieldName));
-        Assert(HasFiledInTable(tableName, secondFieldName),
-            Format("在表[{0}]中未找到字段:[{1}]", tableName, secondFieldName));
-        bool _isArray = false;
-        var ex = new List<string>(excludeFields);
-        //ex.Add(firstFieldName);
-        //ex.Add(secondFieldName);
-        var obj = new JObject();
-        ReadTabel(tableName, rdr =>
-        {
-            while (rdr.Read())
-            {
-                var jobj = new JObject();
-                var firstId = "";
-                var secondId = "";
-                for (int i = 0; i < rdr.FieldCount; i++)
-                {
-                    if (rdr.GetName(i) == firstFieldName)
-                    {
-                        firstId = rdr.GetValue(i).ToString();
-                    }
-                    if (rdr.GetName(i) == secondFieldName)
-                    {
-                        secondId = rdr.GetValue(i).ToString();
-                    }
-                    if (!ex.Contains(rdr.GetName(i)))
-                    {
-                        Object v = rdr.GetValue(i);
-                        if (DBNull.Value == v)
-                        {
-                            var t = rdr.GetFieldType(i).Name;
-                            switch (t)
-                            {
-                                case "Int32":
-                                    v = 0;
-                                    break;
-                                case "String":
-                                    v = "";
-                                    break;
-                                case "Single":
-                                    v = 0;
-                                    break;
-                            }
-                        }
-                        jobj.Add(rdr.GetName(i), JToken.FromObject(v));
-                    }
-                }
-                var key = firstId + "-" + secondId;
-                if (obj[key] == null)
-                {  // 防止重复
-                        obj.Add(key, jobj);
-                }
-                else
-                {  // 已有对象 => 智能转换多值对应为[]
-                        _isArray = true;
-                    var arr = obj[key] as JArray;
-                    if (arr != null)
-                    { // 已经是jarray
-                            arr.Add(jobj);
-                    }
-                    else
-                    {    // 创建Jarray
-                            obj[key] = new JArray() { obj[key], jobj };
-                    }
-                }
-            }
-        });
-
-        if (_isArray)
-        {
-            foreach (var o in obj.Properties())
-            {
-                if (null == (o.Value as JArray))
-                {
-                    obj[o.Name] = new JArray() { o.Value };
-                }
-            }
-        }
-        isArray = _isArray;
-        return obj;
-    }
-
-
-    /// <summary>
-    /// 读取数据库表 -> 到一个{key11:{key1_21:{},key1_22:{},...},key12:{key2_21:{},key2_22:{},...},...}结构数据中
-    /// </summary>
-    /// <param name="tableName">表名</param>
-    /// <param name="indexFieldName">用做索引的字段名</param>
-    /// <param name="secondaryIndexName">用做次级索引的字段名</param>
-    /// <param name="excludeFields">排除的字段名列表</param>
-    /// <returns>拥有二级索引的json对象,二级节点是{}</returns>
-    public JObject ReadTabelToJObjectWithSecondaryIndex(string tableName,
-        string indexFieldName, string secondaryIndexName, out bool isArray, params string[] excludeFields)
-    {
-        Assert(HasFiledInTable(tableName, indexFieldName),
-        Format("在表[{0}]中未找到字段:[{1}]", tableName, indexFieldName));
-        Assert(HasFiledInTable(tableName, secondaryIndexName),
-            Format("在表[{0}]中未找到字段:[{1}]", tableName, secondaryIndexName));
-        var _isArray = false;
-        var ex = new List<string>(excludeFields);
-        //ex.Add(indexFieldName);
-        //ex.Add(secondaryIndexName);
-        var obj = new JObject();
-        ReadTabel(tableName, rdr =>
-        {
-            while (rdr.Read())
-            {
-                var jobj = new JObject();
-                var id = "";
-                var secondId = "";
-                for (int i = 0; i < rdr.FieldCount; i++)
-                {
-                    if (rdr.GetName(i) == indexFieldName)
-                    {
-                        id = rdr.GetValue(i).ToString();
-                    }
-                    if (rdr.GetName(i) == secondaryIndexName)
-                    {
-                        secondId = rdr.GetValue(i).ToString();
-                    }
-                    if (!ex.Contains(rdr.GetName(i)))
-                    {
-                        Object v = rdr.GetValue(i);
-                        if (DBNull.Value == v)
-                        {
-                            var t = rdr.GetFieldType(i).Name;
-                            switch (t)
-                            {
-                                case "Int32":
-                                    v = 0;
-                                    break;
-                                case "String":
-                                    v = "";
-                                    break;
-                                case "Single":
-                                    v = 0;
-                                    break;
-                            }
-                        }
-                        jobj.Add(rdr.GetName(i), JToken.FromObject(v));
-                    }
-                }
-
-                if (obj[id] == null)
-                {  // 没有建立一级对象
-                        var o = new JObject();
-                    o.Add(secondId, jobj);
-                    obj.Add(id, o);
-                }
-                else
-                {  // 已有一级对象
-                        var o = obj[id] as JObject;  // 一级对象
-                        if (o[secondId] == null)
-                    {  // 添加新值
-                            o.Add(secondId, jobj);
-                    }
-                    else
-                    {    // 已有对象 => 智能转换多值对应为[]
-                            _isArray = true;
-                        var arr = o[secondId] as JArray;
-                        if (arr != null)
-                        { // 已经是jarray
-                                arr.Add(jobj);
-                        }
-                        else
-                        {    // 创建Jarray
-                                o[secondId] = new JArray() { o[secondId], jobj };
-                        }
-                    }
-                }
-            }
-        });
-        if (_isArray)
-        {
-            foreach (var o in obj.Properties())
-            {
-                foreach (var o2 in (o.Value as JObject).Properties())
-                {
-                    if (!(obj[o.Name][o2.Name] is JArray))
-                    {
-                        obj[o.Name][o2.Name] = new JArray() { obj[o.Name][o2.Name] };
-                    }
-                }
-            }
-        }
-        isArray = _isArray;
-        return obj;
-    }
-
-
-
-    /// <summary>
-    /// 读取数据库表 -> 到一个行数组[{},{}]
-    /// </summary>
-    /// <param name="tableName">表名</param>
-    /// <param name="excludeFields">排除的字段名列表</param>
-    /// <returns>普通行数组[{},{},...]</returns>
-    public Dictionary<string, object>[] ReadTabelToArray(string tableName, params string[] excludeFields)
-    {
-        var ex = new List<string>(excludeFields);
-        var arr = new List<Dictionary<string, object>>();
-        ReadTabel(tableName, rdr =>
-        {
-            while (rdr.Read())
-            {
-                var r = new Dictionary<string, object>(rdr.FieldCount - 1);
-                for (int i = 0; i < rdr.FieldCount; i++)
-                {
-                    if (!ex.Contains(rdr.GetName(i)))
-                    {
-                        r.Add(rdr.GetName(i), rdr.GetValue(i));
-                    }
-                }
-                arr.Add(r);
-            }
-        });
-        return arr.ToArray();
-    }
-
-    /// <summary>
-    /// 读取数据库表 -> 到一个dic中 {"key":{}}
-    /// </summary>
-    /// <param name="tableName">表名</param>
-    /// <param name="indexFieldName">仅限索引字段(1对多的情况暂不支持)</param>
-    /// <param name="excludeFields">排除的字段名列表</param>
-    /// <typeparam name="T">string, number</typeparam>
-    /// <returns>嵌套的dictionary:{k:{k,v},k:{k:v},...}</returns>
-    public Dictionary<T, Dictionary<string, object>> ReadTabelToDic_Dic<T>(string tableName, string indexFieldName, params string[] excludeFields)
-    {
-        Assert(HasFiledInTable(tableName, indexFieldName),
-            Format("在表[{0}]中未找到字段:[{1}]", tableName, indexFieldName));
-        var ex = new List<string>(excludeFields);
-        //ex.Add(indexFieldName);
-        var dic = new Dictionary<T, Dictionary<string, object>>();
-        ReadTabel(tableName, rdr =>
-        {
-            while (rdr.Read())
-            {
-                var r = new Dictionary<string, object>(rdr.FieldCount - 1);
-                var t = default(T);
-                for (int i = 0; i < rdr.FieldCount; i++)
-                {
-                    if (rdr.GetName(i) == indexFieldName)
-                    {
-                        t = (T)rdr.GetValue(i);
-                    }
-                    if (!ex.Contains(rdr.GetName(i)))
-                    {
-                        r.Add(rdr.GetName(i), rdr.GetValue(i));
-                    }
-                }
-                dic.Add(t, r);
-            }
-
-        });
-        return dic;
-    }
-
-    /// <summary>
-    /// 读取数据库表 -> 到一个dic中 {"key":[]}
-    /// </summary>
-    /// <param name="tableName">表名</param>
-    /// <param name="indexFieldName">索引字段名</param>
-    /// <param name="excludeFields">排除的字段名列表</param>
-    /// <typeparam name="T">string, number</typeparam>
-    /// <returns>复杂嵌套dictionary:{k:[{},{},..],k:[{},{},..]..}</returns>
-    public Dictionary<T, List<Dictionary<string, object>>> ReadTabelToDic_List<T>(string tableName, string indexFieldName, params string[] excludeFields)
-    {
-        Assert(HasFiledInTable(tableName, indexFieldName),
-            Format("在表[{0}]中未找到字段:[{1}]", tableName, indexFieldName));
-        var ex = new List<string>(excludeFields);
-        //ex.Add(indexFieldName);
-        var dic = new Dictionary<T, List<Dictionary<string, object>>>();
-        ReadTabel(tableName, rdr =>
-        {
-            while (rdr.Read())
-            {
-                var r = new Dictionary<string, object>(rdr.FieldCount - 1);
-                var t = default(T);
-                for (int i = 0; i < rdr.FieldCount; i++)
-                {
-                    if (rdr.GetName(i) == indexFieldName)
-                    {
-                        t = (T)rdr.GetValue(i);
-                    }
-                    if (!ex.Contains(rdr.GetName(i)))
-                    {
-                        r.Add(rdr.GetName(i), rdr.GetValue(i));
-                    }
-                }
-                if (dic.ContainsKey(t))
-                {
-                    dic[t].Add(r);
-                }
-                else
-                {
-                    dic.Add(t, new List<Dictionary<string, object>> { r });
-                }
-            }
-        });
-        return dic;
-    }
-
-    #endregion
-
-    #region `   数据写   `
-
-    /// <summary>
-    /// 执行非查询类的SQL语句,比如插入/更新/删除之类的.
-    /// </summary>
-    /// <param name="sql"></param>
-    /// <returns></returns>
-    public int ExecuteSqlNonQuery(string sql)
-    {
-        using var cmd = new MySqlCommand(sql, conn);
-        return cmd.ExecuteNonQuery();
-    }
-
-
-
-    #endregion
-
-    #region '    辅助方法    '
-
-    /// <summary>
-    /// 查询某表中是否存在指定字段
-    /// </summary>
-    /// <param name="tableName"></param>
-    /// <param name="fieldName"></param>
-    /// <returns></returns>
-    public bool HasFiledInTable(string tableName, string fieldName)
-    {
-        Trace.Assert(TableExist(tableName), tableName + " 未找到");
-        return GetTableFieldsInfo(tableName).ContainsKey(fieldName);
-    }
-
-    /// <summary>
-    /// 检查指定的表格是否存在
-    /// </summary>
-    /// <param name="tableName"></param>
-    /// <returns></returns>
-    public bool TableExist(string tableName)
-    {
-        try
-        {
-            new MySqlCommand("select * from " + tableName + " limit 1;", conn).ExecuteNonQuery();
-        }
-        catch (MySqlException ex)
-        {
-            switch (ex.Number)
-            {
-                case 1146:
-                    return false;
-                default:
-                    Debug.WriteLine(ex.Message);
-                    return false;
-            }
-        }
-        return true;
-    }
-
-    /// <summary>
-    /// 执行sql
-    /// </summary>
-    /// <param name="sql"></param>
-    public void Query(string sql)
-    {
-        try
-        {
-            using (var cmd = new MySqlCommand(sql, conn))
-            {
-                cmd.ExecuteNonQuery();
-            }
-        }
-        catch (MySqlException ex)
-        {
-            Debug.WriteLine(ex.Message);
-        }
-    }
-    /// <summary>
-    /// 执行sql 查询
-    /// </summary>
-    /// <param name="sqlcmd"></param>
-    /// <param name="working"></param>
-    public void QueryTable(string sqlcmd, Action<MySqlDataReader> working)
-    {
-        try
-        {
-            using (var cmd = new MySqlCommand(sqlcmd, conn))
-            using (MySqlDataReader rdr = cmd.ExecuteReader())
-            {
-
-                if (null != working)
-                {
-                    working.Invoke(rdr);
-                }
-            }
-        }
-        catch (MySqlException ex)
-        {
-            Debug.WriteLine(ex.Message);
-        }
-    }
-
-    /// <summary>
-    /// 查询表格的字段信息  FieldName :
-    ///     <Type(字段类型 in .net)>
-    ///     <Collation(字符集及排序)>
-    ///     <Null(是否可空)>
-    ///     <Key(索引类型)>
-    ///     <Default(默认值)>
-    ///     <Extra(自增)>
-    ///     <Privileges(权限)>
-    ///     <Comment(注释)>
-    /// </summary>
-    /// <param name="tableName"></param>
-    /// <returns></returns>
-    public Dictionary<string, Dictionary<string, object>> GetTableFieldsInfo(string tableName)
-    {
-        var ex = new List<string>();
-        var dic = new Dictionary<string, Dictionary<string, object>>();
-        QueryTable(string.Format("show full fields from {0}", tableName), rdr =>
-        {
-            while (rdr.Read())
-            {
-
-                var r = new Dictionary<string, object>();
-                var fieldName = rdr.GetString(0);
-                for (int i = 0; i < rdr.FieldCount; i++)
-                {
-                    if (rdr.GetName(i) == "Field")
-                    {
-                        fieldName = rdr.GetString(i);
-                    }
-                    if (!ex.Contains(rdr.GetName(i)))
-                    {
-                        r.Add(rdr.GetName(i), rdr.GetValue(i));
-                    }
-
-                }
-                dic.Add(fieldName, r);
-            }
-        });
-        ReadTabel(tableName, rdr =>               // 用。net类型替换掉myslq 类型字符串
-        {
-            for (var i = 0; i < rdr.FieldCount; i++)
-            {
-
-                var filedName = rdr.GetName(i);               // 字段名
-                    var filedType = rdr.GetFieldType(i).Name;     // 字段类型
-                    if (dic.ContainsKey(filedName))
-                {
-                    dic[filedName][nameof(EFieldInfo.Type)] = filedType;
-                }
-            }
-        });
-        return dic;
-    }
-
-    /// <summary>
-    /// 查询表格的最后修改时间
-    /// </summary>
-    /// <param name="tableName"></param>
-    /// <returns>最后修改时间或者创建时间, 异常: 返回当前时间</returns>
-    public DateTime TableLastModified(string tableName)
-    {
-        var sql = string.Format("SELECT UPDATE_TIME, CREATE_TIME " +
-                  "FROM information_schema.tables " +
-                  "where TABLE_SCHEMA='{0}' and TABLE_NAME='{1}'",
-                      this.conn.Database, tableName);
-        using (var cmd = new MySqlCommand(sql, conn))
-        using (MySqlDataReader rdr = cmd.ExecuteReader())
-        {
-            if (rdr.Read())
-            {  // 上次更新时间为null的情况下使用表的创建时间,都找不到值的情况下返回当前时间   
-                return rdr.IsDBNull(0) ? (rdr.IsDBNull(1) ? DateTime.Now : rdr.GetDateTime(1)) : rdr.GetDateTime(0);
-            }
-        }
-        throw new Exception("没有找到对应的表");
-    }
-    #endregion
-
-
-
-}
-

+ 0 - 30
CSserver/Lib1/db/Redis.cs

@@ -1,30 +0,0 @@
-using StackExchange.Redis;
-
-
-public class Redis
-{
-    private static ConnectionMultiplexer redis;
-
-    static public ConnectionMultiplexer Ins
-    {
-        get
-        {
-            if (null == redis)
-            {
-                redis = ConnectionMultiplexer.Connect(Config.Ins.redis);
-            }
-            return redis;
-        }
-    }
-    /// <summary>
-    /// 获取操作redis数据库的接口对象
-    /// </summary>
-    /// <param name="id">指定db的编号</param>
-    /// <returns></returns>
-    public static IDatabase Rdb(int id = 0)
-    {
-        return Ins.GetDatabase(id);
-    }
-
-}
-

+ 0 - 137
CSserver/Lib1/utils/CompressUtil.cs

@@ -1,137 +0,0 @@
-/*
- * 文件: CompressUtil.cs
- * 由SharpDevelop创建。
- * 作者: gwang
- * 
- * 功能: 描述
- * 版本:
- *     1.0.0 Created by gwang - 2016/5/14 16:06 
- */
-
-using System;
-using System.IO;
-using System.IO.Compression;
-using System.Linq;
-using System.Text;
-namespace CSharpUtil.Net
-{
-
-    /// <summary>
-    /// 压缩工具类- 注意:由于优化能力有限,本工具限制了待压缩数据的大小不超过1MB.
-    /// </summary>
-    /// <exception cref="DataTooLargeException"></exception>
-    public static class CompressUtil
-    {
-        /// <summary>
-        /// 自定义异常
-        /// </summary>
-        public class DataTooLargeException : Exception
-        {
-            public DataTooLargeException()
-                : base("传入的数据过大(不接受超过1M的数据)!")
-            {
-            }
-        }
-        /// <summary>
-        /// 数据最大长度不宜超过10M
-        /// </summary>
-        const int MaxDataLenght = 1024 * 1024 * 10;
-        /// <summary>
-        /// 利用deflate算法压缩字节数组
-        /// </summary>
-        /// <param name="data">字节数组(不宜超过1M)</param>
-        /// <param name="compressMode">压缩模式(压缩/解压)</param>
-        /// <exception cref="OutOfMemoryException">数据不建议超过1M</exception>
-        /// <returns></returns>
-
-        public static byte[] Deflate(byte[] data, CompressionMode compressMode = CompressionMode.Compress)
-        {
-            if (data.Length > MaxDataLenght)
-            {
-                throw new DataTooLargeException();
-            }
-            else
-            {
-                byte[] buffer = null;
-                using (var outms = new MemoryStream())
-                {
-                    using (var df = new DeflateStream(outms, compressMode, true))
-                    {
-                        df.Write(data, 0, data.Length);
-                    }
-                    outms.Position = 0;
-                    buffer = outms.ToArray();
-                }
-                return buffer;
-            }
-        }
-
-        /// <summary>
-        /// 解压deflate数据
-        /// </summary>
-        /// <param name="data">被压缩的内容</param>
-        /// <exception cref="OutOfMemoryException">数据不建议超过1M</exception>
-        /// <returns></returns>
-        public static byte[] InFlate(byte[] data)
-        {
-            // todo: 这种写法在system.io.compress模式下是支持的.
-            return Deflate(data, CompressionMode.Decompress);
-        }
-
-        /// <summary>
-        /// 解压deflate压缩的字符串数据
-        /// </summary>
-        /// <param name="data"></param>
-        /// <param name="encoder">编码</param>
-        /// <returns>还原到字符串</returns>
-        public static string InFlate(byte[] data, Encoding encoder)
-        {
-            using (var inputStream = new MemoryStream(data))
-            using (var gzip = new DeflateStream(inputStream, CompressionMode.Decompress))
-            using (var reader = new StreamReader(gzip, encoder))
-            {
-                return reader.ReadToEnd();
-            }
-        }
-        /// <summary>
-        /// 解压缩
-        /// </summary>
-        /// <param name="sm">原始文件流</param>
-        /// <returns>还原后的字节数组</returns>
-        public static byte[] InFlate(Stream sm)
-        {
-            using (var outms = new MemoryStream())
-            using (var de = new DeflateStream(sm, CompressionMode.Decompress, true))
-            {
-                var buf = new byte[1024];
-                int len;
-                while ((len = de.Read(buf, 0, buf.Length)) > 0)
-                {
-                    outms.Write(buf, 0, len);
-                }
-
-                return outms.ToArray();
-            }
-        }
-
-        /// <summary>
-        /// string=>utf8_bytes=>deflate=>base64_encode
-        /// </summary>
-        /// <param name="data"></param>
-        /// <returns></returns>
-        public static string zb64encode(string data)
-        {
-            var bytes = Encoding.UTF8.GetBytes(data);
-            return Convert.ToBase64String(Deflate(bytes));
-        }
-        /// <summary>
-        /// string=>base64_decode=>inflate=>utf8_stringfrombytes
-        /// </summary>
-        /// <param name="data"></param>
-        /// <returns></returns>
-        public static string zb64decode(string data)
-        {
-            return Encoding.UTF8.GetString(InFlate(Convert.FromBase64String(data)));
-        }
-    }
-}

+ 0 - 55
CSserver/Lib1/utils/DateTimeExtension.cs

@@ -1,55 +0,0 @@
-/*
- * 文件: DateTimeExtension.cs
- * 由SharpDevelop创建。
- * 作者: gwang
- * 
- * 功能: 描述
- * 版本:
- *     1.0.0 Created by gwang - 2016/6/25 14:44 
- */
-using System;
-
-namespace CSharpUtil.Extensions.Time
-{
-
-    /// <summary>
-    /// Description of DateTimeExtension.
-    /// </summary>
-    static public class DateTimeExtension
-    {
-        #region `    扩展DateTime功能,增加Unix时间戳扩展    `
-        /// <summary>
-        /// 从DateTime获取Unix时间戳(按照当前时区换算过了)
-        /// </summary>
-        /// <param name="dt"></param>
-        /// <returns></returns>
-        public static UInt32 ToUnixTimeStamp(this DateTime dt)
-        {
-            return (UInt32)((dt.ToUniversalTime().Ticks - 621355968000000000) / 10000000);
-        }
-        /// <summary>
-        /// Unix时间戳转DateTime(已经自动转换到当前时区了)
-        /// </summary>
-        /// <param name="dt"></param>
-        /// <param name="uiStamp"></param>
-        /// <returns></returns>
-        public static DateTime FromUnixStamp(this DateTime dt, UInt32 uiStamp)
-        {
-            return TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddSeconds(uiStamp);
-        }
-
-        /**
-      *  返回自从 Unix 纪元(格林威治时间 1970 年 1 月 1 日 00:00:00)到当前时间的天数。
-      * 检测玩家连续登录及隔天刷新操作用
-      * @param type $time 当前时间戳
-      * @return type
-      */
-        public static int tsDay(this DateTime dt)
-        {
-            return (int)((dt.ToUnixTimeStamp() + 28800) / 86400f); // 东八区前提8小时时差
-        }
-        #endregion
-    }
-
-
-}

+ 0 - 180
CSserver/Lib1/utils/HttpHelper.cs

@@ -1,180 +0,0 @@
-/*
- * 由SharpDevelop创建。
- * 用户: gwang
- * 日期: 2016/5/3
- * 时间: 17:20
- * 
- * 要改变这种模板请点击 工具|选项|代码编写|编辑标准头文件
- */
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Linq;
-using System.Net;
-using System.Text;
-//using CSharpUtil.RSA;
-namespace CSharpUtil.Net
-{
-    /// <summary>
-    /// Http辅助类.
-    /// </summary>
-    public class HttpHelper
-    {
-        /// <summary>
-        /// 自定义异常,编码不合约定(Get=>Base64,Post=>deflate)
-        /// </summary>
-        class EncodeException : Exception
-        {
-            public EncodeException()
-                : base("编码")
-            {
-
-            }
-        }
-        /// <summary>
-        /// 自定义的User-Agent
-        /// </summary>
-        const string userAgent = "WebRequest/mail@wanggangzero.cn";
-
-        private static HttpHelper mInst = mInst ?? new HttpHelper();
-        /// <summary>
-        /// 单例
-        /// </summary>
-        public static HttpHelper Instance { get => mInst; }
-
-        private IWebProxy mProxy = new WebProxy();
-        /// <summary>
-        /// 可以指定代理服务器
-        /// </summary>
-        public IWebProxy Proxy { get => mProxy; set => mProxy = value; }
-
-        public string Post(string url, string data) => mWebRequest(url, data, "POST", Encoding.UTF8);
-
-        private HttpWebRequest mGetWebRequest(string url, string method)
-        {
-            var webReq = (HttpWebRequest)WebRequest.Create(new Uri(url));
-            webReq.Method = method;
-            webReq.KeepAlive = true;
-            webReq.UserAgent = userAgent;
-            webReq.Proxy = mProxy;
-            return webReq;
-        }
-        private string mWebRequest(string url, string data, string method, Encoding encode)
-        {
-            var ret = string.Empty;
-            var getUrl = (method.ToUpper() == "GET") ? url + "?" + data : url;
-            var webReq = mGetWebRequest(getUrl, method);
-            if (method.ToUpper() == "POST")
-            {       // 写post流
-                webReq.ServicePoint.Expect100Continue = false;   // Post优化,去掉问答流程,提速,避免一些服务器不支持.		
-                try
-                {
-                    using (var nstream = webReq.GetRequestStream())
-                    {
-                        var byteArray = encode.GetBytes(data);
-                        nstream.Write(byteArray, 0, byteArray.Length);
-                    }
-                }
-                catch (Exception e)
-                {
-                    return "net fail";
-                }
-            }
-            // 读取返回值
-            using (var response = (HttpWebResponse)webReq.GetResponse())
-            using (var sr = new StreamReader(response.GetResponseStream(), encode))
-            {
-                if (response.StatusCode != HttpStatusCode.OK)
-                {
-                    return response.StatusDescription;
-                }
-                ret = sr.ReadToEnd();
-            }
-
-            return ret;
-        }
-
-        #region ` 自定义传输模式 post=>defalte,get=>base64  `
-        /// <summary>
-        /// 发送deflate
-        /// </summary>
-        /// <param name="url"></param>
-        /// <param name="data"></param>
-        /// <param name="encode"></param>
-        /// <returns></returns>
-        public string PostDeflate(string url, string data, Encoding encode) => MyWebRequest(url, data, "POST", encode);
-
-        public string GetBase64(string url, string data, Encoding encode) => MyWebRequest(url, data, "GET", encode);
-
-        private string MyWebRequest(string url, string data, string method, Encoding encode)
-        {
-            var ret = string.Empty;
-
-            var getUrl = (method.ToUpper() == "GET") ? url + "?" + Convert.ToBase64String(encode.GetBytes(data)) : url;
-
-            var webReq = (HttpWebRequest)WebRequest.Create(new Uri(getUrl));
-            webReq.Method = method;
-            webReq.KeepAlive = true;
-            webReq.UserAgent = userAgent;
-            webReq.Proxy = mProxy;
-            if (method.ToUpper() == "POST")
-            {       // 写post流
-                webReq.ContentType = "application/octet-stream";  // 注意这里不使用deflate以免中间环节意外解压
-                webReq.ServicePoint.Expect100Continue = false;   // Post优化,去掉问答流程,提速,避免一些服务器不支持.		
-                using (Stream nstream = webReq.GetRequestStream())
-                {
-                    var byteArray = CompressUtil.Deflate(encode.GetBytes(data));
-                    nstream.Write(byteArray, 0, byteArray.Length);
-                }
-            }
-            // 读取返回值
-            using (var response = (HttpWebResponse)webReq.GetResponse())
-            {
-                if (method.ToUpper() == "GET")
-                {
-                    using (var sr = new StreamReader(response.GetResponseStream(), encode))
-                    {
-                        ret = encode.GetString(Convert.FromBase64String(sr.ReadToEnd()));
-                    }
-                }
-                else
-                {
-                    ret = encode.GetString(CompressUtil.InFlate(response.GetResponseStream()));
-                }
-            }
-
-            return ret;
-        }
-
-        #endregion
-
-
-        #region `   签名   `
-        ///// <summary>
-        ///// http参数签名
-        ///// </summary>
-        ///// <param name="dic"></param>
-        ///// <param name="privKeyFileName"></param>
-        ///// <returns></returns>
-        //public static string Sign(IDictionary<string, string> dic, string privKeyFileName)
-        //{
-        //    var queryStr = getQueryString(dic);
-
-        //    return RSAUtil.RSASign(queryStr, privKeyFileName);
-
-        //}
-        /// <summary>
-        /// 将参数数组组装成URLQuerystring.
-        /// </summary>
-        /// <param name="parameters"></param>
-        /// <param name="sorted"></param>
-        /// <returns></returns>
-        public static string getQueryString(IDictionary<string, string> parameters, bool sorted = true)
-        {
-            return string.Join("&", (from kv in (sorted ? parameters.OrderBy(kv => kv.Key) : parameters.AsEnumerable()) select kv.Key + "=" + kv.Value).ToArray());
-        }
-
-        #endregion
-    }
-
-}

+ 0 - 847
CSserver/Lib1/utils/MysqlUtil.cs

@@ -1,847 +0,0 @@
-using MySql.Data.MySqlClient;
-using System;
-using System.Collections.Generic;
-using System.Data;
-using System.Diagnostics;
-using Newtonsoft.Json.Linq;
-using static System.Diagnostics.Trace;
-using static System.String;
-
-namespace CSharpUtil
-{
-    /// <summary>
-    /// MySQL操作辅助类.
-    /// </summary>
-    public class MysqlUtil : IDisposable
-    {
-
-        /// <summary>
-        /// MySQL字段详细信息,(用于GetFiledInfo方法返回值中取信息,可以用nameof来去掉硬编码字符串以防止拼写错误)
-        /// </summary>
-        public enum EFieldInfo
-        {
-            /// <summary>
-            /// 字段类型 in .net
-            /// </summary>
-            Type,
-            /// <summary>
-            /// 是否可空
-            /// </summary>
-            Null,
-            /// <summary>
-            /// 索引类型
-            /// </summary>
-            Key,
-            /// <summary>
-            /// 默认值
-            /// </summary>
-            Default,
-            /// <summary>
-            /// 注释
-            /// </summary>
-            Comment,
-            /// <summary>
-            /// 字符集
-            /// </summary>
-            Collation,
-            /// <summary>
-            /// 额外(自增等)
-            /// </summary>
-            Extra,
-            /// <summary>
-            /// 权限
-            /// </summary>
-            Privileges
-        }
-
-        #region `    基础代码   `
-        static MysqlUtil mInst;
-        public static MysqlUtil Ins
-        {
-            get
-            {
-                if (null == mInst)
-                {
-                    mInst = new MysqlUtil();
-                }
-                return mInst;
-            }
-        }
-
-        private MysqlUtil()
-        {
-            conn = new MySqlConnection(Config.Ins.mysql.ConnectionString);
-            conn.Open();
-            Assert(conn.State == ConnectionState.Open, "连接到数据库失败");
-        }
-  
-        private MySqlConnection conn = null;
-        /// <summary>
-        /// 建立连接
-        /// </summary>
-        /// <param name="host"></param>
-        /// <param name="port"></param>
-        /// <param name="user"></param>
-        /// <param name="pwd"></param>
-        /// <param name="dbName"></param>
-        public void Connect(string host, string port, string user, string pwd, string dbName)
-        {
-            var connStr = string.Format(
-                              "server={0};port={1};user={2};password={3};database={4};Charset=utf8",
-                              host, port, user, pwd, dbName);
-            conn = new MySqlConnection(connStr);
-            conn.Open();
-            Assert(conn.State == ConnectionState.Open, "连接到数据库失败");
-        }
-        /// <summary>
-        /// 关闭连接
-        /// </summary>
-        public void Close()
-        {
-            conn.Close();
-        }
-        /// <summary>
-        /// 释放资源
-        /// </summary>
-        public void Dispose()
-        {
-            conn.Dispose();
-        }
-        #endregion
-
-        #region `    数据读    `
-
-        /// <summary>
-        /// 读取数据库表-数据操作部分逻辑需要参数中定义
-        /// 一般情况下,使用其余八个读取函数即可,如果需要自己定制数据结构,可以通过在此函数回调中自行遍历整个数据表.
-        /// </summary>
-        /// <param name="tableName">表名</param>
-        /// <param name="working">action to MysqlDataReader</param>
-        public void ReadTabel(string tableName, Action<MySqlDataReader> working)
-        {
-            Assert(TableExist(tableName), "表 " + tableName + " 不存在!");
-            var sql = string.Format("SELECT * FROM {0};", tableName);
-            using (var cmd = new MySqlCommand(sql, conn))
-            using (var rdr = cmd.ExecuteReader())
-            {
-                if (null != working) working.Invoke(rdr);
-            }
-        }
-
-
-        /// <summary>
-        /// 读取数据库表 -> 到一个JArray中, []
-        /// </summary>
-        /// <param name="tableName">表名</param>
-        /// /// <param name="excludeFields">排除的字段名列表</param>
-        /// <returns>JArray</returns>
-        public JArray ReadTabelToJArray(string tableName, params string[] excludeFields)
-        {
-            var ex = new List<string>(excludeFields);
-            var arr = new JArray();
-            ReadTabel(tableName, rdr =>
-            {
-                while (rdr.Read())
-                {
-                    var jobj = new JObject();
-
-                    for (int i = 0; i < rdr.FieldCount; i++)
-                    {
-                        if (!ex.Contains(rdr.GetName(i)))
-                        {
-                            jobj.Add(rdr.GetName(i), JToken.FromObject(rdr.GetValue(i)));
-                        }
-                    }
-                    arr.Add(jobj);
-                }
-            });
-            return arr;
-        }
-
-        /// <summary>
-        /// 读取数据库表 -> 到一个JObject中, {}
-        /// </summary>
-        /// <param name="tableName">表名</param>
-        /// <param name="indexFieldName">用做索引的字段名</param>
-        /// <param name="excludeFields">排除的字段名列表</param>
-        /// <returns>{}</returns>
-        public JObject ReadTabelToJObject(string tableName, string indexFieldName, out bool isArray, params string[] excludeFields)
-        {
-            Assert(HasFiledInTable(tableName, indexFieldName),
-                Format("在表[{0}]中未找到key:[{1}]", tableName, indexFieldName));
-            bool _isArray = false;
-            var ex = new List<string>(excludeFields);
-            //ex.Add(indexFieldName);
-            var obj = new JObject();
-            ReadTabel(tableName, rdr =>
-            {
-                while (rdr.Read())
-                {
-                    var jobj = new JObject();
-                    var id = "";
-                    for (int i = 0; i < rdr.FieldCount; i++)
-                    {
-                        if (rdr.GetName(i) == indexFieldName)
-                        {
-                            id = rdr.GetValue(i).ToString();
-                        }
-                        if (!ex.Contains(rdr.GetName(i)))
-                        {
-                            object v = rdr.GetValue(i);
-
-                            if (DBNull.Value == v)
-                            {
-                                var t = rdr.GetFieldType(i).Name;
-                                switch (t)
-                                {
-                                    case "Int32":
-                                        v = 0;
-                                        break;
-                                    case "String":
-                                        v = "";
-                                        break;
-                                    case "Single":
-                                        v = 0;
-                                        break;
-                                }
-                            }
-                            jobj.Add(rdr.GetName(i), JToken.FromObject(v));
-                        }
-                    }
-                    if (obj[id] == null)
-                    {  // 这段代码智能转换多值对应为[]
-                        obj.Add(id, jobj);
-                    }
-                    else
-                    {
-                        _isArray = true;
-                        var arr = obj[id] as JArray;
-                        if (null != arr)
-                        {
-                            arr.Add(jobj);
-                        }
-                        else
-                        {
-                            obj[id] = new JArray() { obj[id], jobj };
-                        }
-                    }
-                }
-
-            });
-            if (_isArray)
-            {
-                foreach (var o in obj.Properties())
-                {
-                    if (null == (o.Value as JArray))
-                    {
-                        obj[o.Name] = new JArray() { o.Value };
-                    }
-                }
-            }
-            isArray = _isArray;
-            return obj;
-        }
-
-        /// <summary>
-        /// 读取数据库表 -> 到一个JObject中, {k->[],k->[],...}
-        /// </summary>
-        /// <param name="tableName">表名</param>
-        /// <param name="indexFieldName">用做索引的字段名</param>
-        /// <param name="excludeFields">排除的字段名列表</param>
-        /// <returns>{}</returns>
-        public JObject ReadTabelToJObjectWithArrayValues(string tableName, string indexFieldName, params string[] excludeFields)
-        {
-            Assert(HasFiledInTable(tableName, indexFieldName),
-                Format("在表[{0}]中未找到key:[{1}]", tableName, indexFieldName));
-
-            var ex = new List<string>(excludeFields);
-            //ex.Add(indexFieldName);
-            var obj = new JObject();
-            ReadTabel(tableName, rdr =>
-            {
-                while (rdr.Read())
-                {
-                    var jobj = new JObject();
-                    var id = "";
-                    for (int i = 0; i < rdr.FieldCount; i++)
-                    {
-                        if (rdr.GetName(i) == indexFieldName)
-                        {
-                            id = rdr.GetValue(i).ToString();
-                        }
-                        if (!ex.Contains(rdr.GetName(i)))
-                        {
-                            object v = rdr.GetValue(i);
-
-                            if (DBNull.Value == v)
-                            {
-                                var t = rdr.GetFieldType(i).Name;
-                                switch (t)
-                                {
-                                    case "Int32":
-                                        v = 0;
-                                        break;
-                                    case "String":
-                                        v = "";
-                                        break;
-                                    case "Single":
-                                        v = 0;
-                                        break;
-                                }
-                            }
-                            jobj.Add(rdr.GetName(i), JToken.FromObject(v));
-                        }
-                    }
-
-                    var arr = obj[id] as JArray;
-                    if (null != arr)
-                    {
-                        arr.Add(jobj);
-                    }
-                    else
-                    {
-                        obj[id] = new JArray() { jobj };
-                    }
-
-                }
-
-            });
-
-            return obj;
-        }
-
-        /// <summary>
-        /// 读取数据库表 -> 到一个简单的key=>value结构中. 即只取表中的两个字段
-        /// </summary>
-        /// <param name="tableName">表名</param>
-        /// <param name="keyName">用作属性名称的字段</param>
-        /// <param name="valueName">用作值的字段</param>
-        /// <returns>{k:v,k:v,...}</returns>
-        public JObject ReadTabelToSimpleJObject(string tableName, string keyName, string valueName)
-        {
-            Assert(HasFiledInTable(tableName, keyName),
-                    Format("在表[{0}]中未找到key:[{1}]", tableName, keyName));
-            Assert(HasFiledInTable(tableName, valueName),
-                Format("在表[{0}]中未找到字段:[{1}]", tableName, valueName));
-            var jobj = new JObject();
-
-            ReadTabel(tableName, rdr =>
-           {
-               while (rdr.Read())
-               {
-                   var key = "";
-                   Object value = null;
-                   for (int i = 0; i < rdr.FieldCount; i++)
-                   {
-                       if (rdr.GetName(i) == keyName)
-                       {
-                           key = rdr.GetValue(i).ToString();
-                       }
-                       if (rdr.GetName(i) == valueName)
-                       {
-                           value = rdr.GetValue(i);
-                       }
-                   }
-                   jobj.Add(key, JToken.FromObject(value));
-               }
-           });
-
-            return jobj;
-        }
-
-        /// <summary>
-        /// 读取数据库表 -> 到一个由两个字段内容拼接成的字符串作为索引的JObject中
-        /// </summary>
-        /// <param name="tableName">表名称</param>
-        /// <param name="firstFieldName">第一个字段</param>
-        /// <param name="secondFieldName">第二个字段</param>
-        /// <param name="excludeFields">排除的字段名...</param>
-        /// <returns> {field(1)-field(2):{},...} </returns>
-        public JObject ReadTabelToJObjectWithCombinedIndex(string tableName, string firstFieldName, string secondFieldName, out bool isArray, params string[] excludeFields)
-        {
-            Assert(HasFiledInTable(tableName, firstFieldName),
-                 Format("在表[{0}]中未找到字段:[{1}]", tableName, firstFieldName));
-            Assert(HasFiledInTable(tableName, secondFieldName),
-                Format("在表[{0}]中未找到字段:[{1}]", tableName, secondFieldName));
-            bool _isArray = false;
-            var ex = new List<string>(excludeFields);
-            //ex.Add(firstFieldName);
-            //ex.Add(secondFieldName);
-            var obj = new JObject();
-            ReadTabel(tableName, rdr =>
-            {
-                while (rdr.Read())
-                {
-                    var jobj = new JObject();
-                    var firstId = "";
-                    var secondId = "";
-                    for (int i = 0; i < rdr.FieldCount; i++)
-                    {
-                        if (rdr.GetName(i) == firstFieldName)
-                        {
-                            firstId = rdr.GetValue(i).ToString();
-                        }
-                        if (rdr.GetName(i) == secondFieldName)
-                        {
-                            secondId = rdr.GetValue(i).ToString();
-                        }
-                        if (!ex.Contains(rdr.GetName(i)))
-                        {
-                            Object v = rdr.GetValue(i);
-                            if (DBNull.Value == v)
-                            {
-                                var t = rdr.GetFieldType(i).Name;
-                                switch (t)
-                                {
-                                    case "Int32":
-                                        v = 0;
-                                        break;
-                                    case "String":
-                                        v = "";
-                                        break;
-                                    case "Single":
-                                        v = 0;
-                                        break;
-                                }
-                            }
-                            jobj.Add(rdr.GetName(i), JToken.FromObject(v));
-                        }
-                    }
-                    var key = firstId + "-" + secondId;
-                    if (obj[key] == null)
-                    {  // 防止重复
-                        obj.Add(key, jobj);
-                    }
-                    else
-                    {  // 已有对象 => 智能转换多值对应为[]
-                        _isArray = true;
-                        var arr = obj[key] as JArray;
-                        if (arr != null)
-                        { // 已经是jarray
-                            arr.Add(jobj);
-                        }
-                        else
-                        {    // 创建Jarray
-                            obj[key] = new JArray() { obj[key], jobj };
-                        }
-                    }
-                }
-            });
-
-            if (_isArray)
-            {
-                foreach (var o in obj.Properties())
-                {
-                    if (null == (o.Value as JArray))
-                    {
-                        obj[o.Name] = new JArray() { o.Value };
-                    }
-                }
-            }
-            isArray = _isArray;
-            return obj;
-        }
-
-
-        /// <summary>
-        /// 读取数据库表 -> 到一个{key11:{key1_21:{},key1_22:{},...},key12:{key2_21:{},key2_22:{},...},...}结构数据中
-        /// </summary>
-        /// <param name="tableName">表名</param>
-        /// <param name="indexFieldName">用做索引的字段名</param>
-        /// <param name="secondaryIndexName">用做次级索引的字段名</param>
-        /// <param name="excludeFields">排除的字段名列表</param>
-        /// <returns>拥有二级索引的json对象,二级节点是{}</returns>
-        public JObject ReadTabelToJObjectWithSecondaryIndex(string tableName,
-            string indexFieldName, string secondaryIndexName, out bool isArray, params string[] excludeFields)
-        {
-            Assert(HasFiledInTable(tableName, indexFieldName),
-            Format("在表[{0}]中未找到字段:[{1}]", tableName, indexFieldName));
-            Assert(HasFiledInTable(tableName, secondaryIndexName),
-                Format("在表[{0}]中未找到字段:[{1}]", tableName, secondaryIndexName));
-            var _isArray = false;
-            var ex = new List<string>(excludeFields);
-            //ex.Add(indexFieldName);
-            //ex.Add(secondaryIndexName);
-            var obj = new JObject();
-            ReadTabel(tableName, rdr =>
-            {
-                while (rdr.Read())
-                {
-                    var jobj = new JObject();
-                    var id = "";
-                    var secondId = "";
-                    for (int i = 0; i < rdr.FieldCount; i++)
-                    {
-                        if (rdr.GetName(i) == indexFieldName)
-                        {
-                            id = rdr.GetValue(i).ToString();
-                        }
-                        if (rdr.GetName(i) == secondaryIndexName)
-                        {
-                            secondId = rdr.GetValue(i).ToString();
-                        }
-                        if (!ex.Contains(rdr.GetName(i)))
-                        {
-                            Object v = rdr.GetValue(i);
-                            if (DBNull.Value == v)
-                            {
-                                var t = rdr.GetFieldType(i).Name;
-                                switch (t)
-                                {
-                                    case "Int32":
-                                        v = 0;
-                                        break;
-                                    case "String":
-                                        v = "";
-                                        break;
-                                    case "Single":
-                                        v = 0;
-                                        break;
-                                }
-                            }
-                            jobj.Add(rdr.GetName(i), JToken.FromObject(v));
-                        }
-                    }
-
-                    if (obj[id] == null)
-                    {  // 没有建立一级对象
-                        var o = new JObject();
-                        o.Add(secondId, jobj);
-                        obj.Add(id, o);
-                    }
-                    else
-                    {  // 已有一级对象
-                        var o = obj[id] as JObject;  // 一级对象
-                        if (o[secondId] == null)
-                        {  // 添加新值
-                            o.Add(secondId, jobj);
-                        }
-                        else
-                        {    // 已有对象 => 智能转换多值对应为[]
-                            _isArray = true;
-                            var arr = o[secondId] as JArray;
-                            if (arr != null)
-                            { // 已经是jarray
-                                arr.Add(jobj);
-                            }
-                            else
-                            {    // 创建Jarray
-                                o[secondId] = new JArray() { o[secondId], jobj };
-                            }
-                        }
-                    }
-                }
-            });
-            if (_isArray)
-            {
-                foreach (var o in obj.Properties())
-                {
-                    foreach (var o2 in (o.Value as JObject).Properties())
-                    {
-                        if (!(obj[o.Name][o2.Name] is JArray))
-                        {
-                            obj[o.Name][o2.Name] = new JArray() { obj[o.Name][o2.Name] };
-                        }
-                    }
-                }
-            }
-            isArray = _isArray;
-            return obj;
-        }
-
-
-
-        /// <summary>
-        /// 读取数据库表 -> 到一个行数组[{},{}]
-        /// </summary>
-        /// <param name="tableName">表名</param>
-        /// <param name="excludeFields">排除的字段名列表</param>
-        /// <returns>普通行数组[{},{},...]</returns>
-        public Dictionary<string, object>[] ReadTabelToArray(string tableName, params string[] excludeFields)
-        {
-            var ex = new List<string>(excludeFields);
-            var arr = new List<Dictionary<string, object>>();
-            ReadTabel(tableName, rdr =>
-            {
-                while (rdr.Read())
-                {
-                    var r = new Dictionary<string, object>(rdr.FieldCount - 1);
-                    for (int i = 0; i < rdr.FieldCount; i++)
-                    {
-                        if (!ex.Contains(rdr.GetName(i)))
-                        {
-                            r.Add(rdr.GetName(i), rdr.GetValue(i));
-                        }
-                    }
-                    arr.Add(r);
-                }
-            });
-            return arr.ToArray();
-        }
-
-        /// <summary>
-        /// 读取数据库表 -> 到一个dic中 {"key":{}}
-        /// </summary>
-        /// <param name="tableName">表名</param>
-        /// <param name="indexFieldName">仅限索引字段(1对多的情况暂不支持)</param>
-        /// <param name="excludeFields">排除的字段名列表</param>
-        /// <typeparam name="T">string, number</typeparam>
-        /// <returns>嵌套的dictionary:{k:{k,v},k:{k:v},...}</returns>
-        public Dictionary<T, Dictionary<string, object>> ReadTabelToDic_Dic<T>(string tableName, string indexFieldName, params string[] excludeFields)
-        {
-            Assert(HasFiledInTable(tableName, indexFieldName),
-                Format("在表[{0}]中未找到字段:[{1}]", tableName, indexFieldName));
-            var ex = new List<string>(excludeFields);
-            //ex.Add(indexFieldName);
-            var dic = new Dictionary<T, Dictionary<string, object>>();
-            ReadTabel(tableName, rdr =>
-            {
-                while (rdr.Read())
-                {
-                    var r = new Dictionary<string, object>(rdr.FieldCount - 1);
-                    var t = default(T);
-                    for (int i = 0; i < rdr.FieldCount; i++)
-                    {
-                        if (rdr.GetName(i) == indexFieldName)
-                        {
-                            t = (T)rdr.GetValue(i);
-                        }
-                        if (!ex.Contains(rdr.GetName(i)))
-                        {
-                            r.Add(rdr.GetName(i), rdr.GetValue(i));
-                        }
-                    }
-                    dic.Add(t, r);
-                }
-
-            });
-            return dic;
-        }
-
-        /// <summary>
-        /// 读取数据库表 -> 到一个dic中 {"key":[]}
-        /// </summary>
-        /// <param name="tableName">表名</param>
-        /// <param name="indexFieldName">索引字段名</param>
-        /// <param name="excludeFields">排除的字段名列表</param>
-        /// <typeparam name="T">string, number</typeparam>
-        /// <returns>复杂嵌套dictionary:{k:[{},{},..],k:[{},{},..]..}</returns>
-        public Dictionary<T, List<Dictionary<string, object>>> ReadTabelToDic_List<T>(string tableName, string indexFieldName, params string[] excludeFields)
-        {
-            Assert(HasFiledInTable(tableName, indexFieldName),
-                Format("在表[{0}]中未找到字段:[{1}]", tableName, indexFieldName));
-            var ex = new List<string>(excludeFields);
-            //ex.Add(indexFieldName);
-            var dic = new Dictionary<T, List<Dictionary<string, object>>>();
-            ReadTabel(tableName, rdr =>
-            {
-                while (rdr.Read())
-                {
-                    var r = new Dictionary<string, object>(rdr.FieldCount - 1);
-                    var t = default(T);
-                    for (int i = 0; i < rdr.FieldCount; i++)
-                    {
-                        if (rdr.GetName(i) == indexFieldName)
-                        {
-                            t = (T)rdr.GetValue(i);
-                        }
-                        if (!ex.Contains(rdr.GetName(i)))
-                        {
-                            r.Add(rdr.GetName(i), rdr.GetValue(i));
-                        }
-                    }
-                    if (dic.ContainsKey(t))
-                    {
-                        dic[t].Add(r);
-                    }
-                    else
-                    {
-                        dic.Add(t, new List<Dictionary<string, object>> { r });
-                    }
-                }
-            });
-            return dic;
-        }
-
-        #endregion
-
-        #region `   数据写   `
-
-        /// <summary>
-        /// 执行非查询类的SQL语句,比如插入/更新/删除之类的.
-        /// </summary>
-        /// <param name="sql"></param>
-        /// <returns></returns>
-        public int ExecuteSqlNonQuery(string sql) {
-            using var cmd = new MySqlCommand(sql, conn);
-            return cmd.ExecuteNonQuery();
-        }
-
-
-
-        #endregion
-
-        #region '    辅助方法    '
-
-        /// <summary>
-        /// 查询某表中是否存在指定字段
-        /// </summary>
-        /// <param name="tableName"></param>
-        /// <param name="fieldName"></param>
-        /// <returns></returns>
-        public bool HasFiledInTable(string tableName, string fieldName)
-        {
-            Trace.Assert(TableExist(tableName), tableName + " 未找到");
-            return GetTableFieldsInfo(tableName).ContainsKey(fieldName);
-        }
-
-        /// <summary>
-        /// 检查指定的表格是否存在
-        /// </summary>
-        /// <param name="tableName"></param>
-        /// <returns></returns>
-        public bool TableExist(string tableName)
-        {
-            try
-            {
-                new MySqlCommand("select * from " + tableName + " limit 1;", conn).ExecuteNonQuery();
-            }
-            catch (MySqlException ex)
-            {
-                switch (ex.Number)
-                {
-                    case 1146:
-                        return false;
-                    default:
-                        Debug.WriteLine(ex.Message);
-                        return false;
-                }
-            }
-            return true;
-        }
-
-        /// <summary>
-        /// 执行sql
-        /// </summary>
-        /// <param name="sql"></param>
-        public void Query(string sql)
-        {
-            try
-            {
-                using (var cmd = new MySqlCommand(sql, conn))
-                {
-                    cmd.ExecuteNonQuery();
-                }
-            }
-            catch (MySqlException ex)
-            {
-                Debug.WriteLine(ex.Message);
-            }
-        }
-        /// <summary>
-        /// 执行sql 查询
-        /// </summary>
-        /// <param name="sqlcmd"></param>
-        /// <param name="working"></param>
-        public void QueryTable(string sqlcmd, Action<MySqlDataReader> working)
-        {
-            try
-            {
-                using (var cmd = new MySqlCommand(sqlcmd, conn))
-                using (MySqlDataReader rdr = cmd.ExecuteReader())
-                {
-
-                    if (null != working)
-                    {
-                        working.Invoke(rdr);
-                    }
-                }
-            }
-            catch (MySqlException ex)
-            {
-                Debug.WriteLine(ex.Message);
-            }
-        }
-
-        /// <summary>
-        /// 查询表格的字段信息  FieldName :
-        ///     <Type(字段类型 in .net)>
-        ///     <Collation(字符集及排序)>
-        ///     <Null(是否可空)>
-        ///     <Key(索引类型)>
-        ///     <Default(默认值)>
-        ///     <Extra(自增)>
-        ///     <Privileges(权限)>
-        ///     <Comment(注释)>
-        /// </summary>
-        /// <param name="tableName"></param>
-        /// <returns></returns>
-        public Dictionary<string, Dictionary<string, object>> GetTableFieldsInfo(string tableName)
-        {
-            var ex = new List<string>();
-            var dic = new Dictionary<string, Dictionary<string, object>>();
-            QueryTable(string.Format("show full fields from {0}", tableName), rdr =>
-            {
-                while (rdr.Read())
-                {
-
-                    var r = new Dictionary<string, object>();
-                    var fieldName = rdr.GetString(0);
-                    for (int i = 0; i < rdr.FieldCount; i++)
-                    {
-                        if (rdr.GetName(i) == "Field")
-                        {
-                            fieldName = rdr.GetString(i);
-                        }
-                        if (!ex.Contains(rdr.GetName(i)))
-                        {
-                            r.Add(rdr.GetName(i), rdr.GetValue(i));
-                        }
-
-                    }
-                    dic.Add(fieldName, r);
-                }
-            });
-            ReadTabel(tableName, rdr =>               // 用。net类型替换掉myslq 类型字符串
-            {
-                for (var i = 0; i < rdr.FieldCount; i++)
-                {
-
-                    var filedName = rdr.GetName(i);               // 字段名
-                    var filedType = rdr.GetFieldType(i).Name;     // 字段类型
-                    if (dic.ContainsKey(filedName))
-                    {
-                        dic[filedName][nameof(EFieldInfo.Type)] = filedType;
-                    }
-                }
-            });
-            return dic;
-        }
-
-        /// <summary>
-        /// 查询表格的最后修改时间
-        /// </summary>
-        /// <param name="tableName"></param>
-        /// <returns>最后修改时间或者创建时间, 异常: 返回当前时间</returns>
-        public DateTime TableLastModified(string tableName)
-        {
-            var sql = string.Format("SELECT UPDATE_TIME, CREATE_TIME " +
-                      "FROM information_schema.tables " +
-                      "where TABLE_SCHEMA='{0}' and TABLE_NAME='{1}'",
-                          this.conn.Database, tableName);
-            using (var cmd = new MySqlCommand(sql, conn))
-            using (MySqlDataReader rdr = cmd.ExecuteReader())
-            {
-                if (rdr.Read())
-                {  // 上次更新时间为null的情况下使用表的创建时间,都找不到值的情况下返回当前时间   
-                    return rdr.IsDBNull(0) ? (rdr.IsDBNull(1) ? DateTime.Now : rdr.GetDateTime(1)) : rdr.GetDateTime(0);
-                }
-            }
-            throw new Exception("没有找到对应的表");
-        }
-        #endregion
-
-
-
-    }
-}

+ 0 - 31
CSserver/Lib1/utils/Redis.cs

@@ -1,31 +0,0 @@
-using StackExchange.Redis;
-
-namespace CSharpUtil 
-{
-   public class Redis
-    {
-        private static ConnectionMultiplexer redis;
-
-        static public ConnectionMultiplexer Ins
-        {
-            get
-            {
-                if (null == redis)
-                {
-                    redis = ConnectionMultiplexer.Connect(Config.Ins.redis);
-                }
-                return redis;
-            }
-        }
-        /// <summary>
-        /// 获取操作redis数据库的接口对象
-        /// </summary>
-        /// <param name="id">指定db的编号</param>
-        /// <returns></returns>
-        public static IDatabase Rdb(int id = 0)
-        {
-            return Ins.GetDatabase(id);
-        }
-
-    }
-}

+ 0 - 53
CSserver/Lib1/utils/Singleton.cs

@@ -1,53 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace CSharpUtil
-{
-    /// <summary>
-    /// 普通单例
-    /// </summary>
-    /// <typeparam name="T"></typeparam>
-    public class Singleton<T> where T : Singleton<T>, new()
-    {
-        /// <summary>
-        /// 单例
-        /// </summary>
-        private static T m_Instance;
-
-        /// <summary>
-        /// 实例
-        /// </summary>
-        public static T Instance
-        {
-            get
-            {
-                if (object.ReferenceEquals(Singleton<T>.m_Instance, null))
-                {
-                    var obj = new T();
-                    Singleton<T>.m_Instance = obj;
-                    Container.Add(typeof(T).Name, obj);
-                }
-                return Singleton<T>.m_Instance;
-            }
-        }
-
-
-        #region '   内部容器  ' 
-        static Dictionary<string, Object> _mC;
-        static Dictionary<string, Object> Container
-        {
-            get
-            {
-                if (null == _mC)
-                {
-                    _mC = new Dictionary<string, object>();
-                }
-                return _mC;
-            }
-        }
-        #endregion
-    }
-}

+ 0 - 26
CSserver/Lib1/utils/SocketUtils.cs

@@ -1,26 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Runtime.InteropServices;
-using System.Net.Sockets;
-
-namespace CSharpUtil.Extensions.Net
-{
-    /// <summary>
-    /// 辅助类
-    /// </summary>
-    public static  class SocketUtils
-    {
-        public static void SetKeepAlive(this Socket sock, int interval_ms)
-        {
-            uint dummy = 0;
-            byte[] inOptionValues = new byte[Marshal.SizeOf(dummy) * 3];
-            BitConverter.GetBytes((uint)1).CopyTo(inOptionValues, 0);
-            BitConverter.GetBytes((uint)interval_ms).CopyTo(inOptionValues, Marshal.SizeOf(dummy));
-            BitConverter.GetBytes((uint)interval_ms).CopyTo(inOptionValues, Marshal.SizeOf(dummy) * 2);
-            sock.IOControl(IOControlCode.KeepAliveValues, inOptionValues, null);
-        }
-    }
-}

+ 0 - 40
CSserver/Lib1/utils/TaskWaitingExtension.cs

@@ -1,40 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-
-namespace CSharpUtil.Extensions.Tasks
-{
- 
-    public static class TaskWaitingExtensions
-    {
-        public static async Task<TResult> WaitAsync<TResult>(this Task<TResult> task, TimeSpan timeout)
-        {
-            using (var timeoutCancellationTokenSource = new CancellationTokenSource())
-            {
-                var delayTask = Task.Delay(timeout, timeoutCancellationTokenSource.Token);
-                if (await Task.WhenAny(task, delayTask) == task)
-                {
-                    timeoutCancellationTokenSource.Cancel();
-                    return await task;
-                }
-                throw new TimeoutException("The operation has timed out.");
-            }
-        }
-        public static async Task WaitAsync(this Task task, TimeSpan timeout)
-        {
-            using (var timeoutCancellationTokenSource = new CancellationTokenSource())
-            {
-                var delayTask = Task.Delay(timeout, timeoutCancellationTokenSource.Token);
-                if (await Task.WhenAny(task, delayTask) == task)
-                {
-                    timeoutCancellationTokenSource.Cancel();
-                    return;
-                }
-                throw new TimeoutException("The operation has timed out.");
-            }
-        }
-    }
-}

+ 0 - 13
CSserver/MultiDup/MultiDup.csproj

@@ -1,13 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>net6.0</TargetFramework>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\Lib1\Lib1.csproj" />
-    <ProjectReference Include="..\PBReferens\PBReferens.csproj" />
-  </ItemGroup>
-
-</Project>

+ 0 - 103
CSserver/MultiDup/Program.cs

@@ -1,103 +0,0 @@
-using System;
-using System.Net;
-using System.Net.Sockets;
-using System.Threading.Tasks;
-using System.Diagnostics;
-
-
-namespace MultiDup
-{
-    internal class Program
-    {
-        const int serverport = 16005;                                            // 用于监听服务端连接的端口号
-
-        public static ServerPeer serverPeer = null;                             // 战斗server的连接
-
-        const int port = 16004;                                                  // 端口号(用来监听的) 
-        static void Main(string[] args)
-        {
-            selfTest();
-
-            Console.WriteLine("开启监听......");
-            Console.WriteLine("ctrl + c 退出程序......");
-
-            Task[] tasks = new Task[2];
-            tasks[0] = Task.Run(WatchConnecting);
-            tasks[1] = Task.Run(WatchServerPeerConnecting);
-            Task.WaitAll(tasks);                                                // 开启监听线程 
-
-        }
-
-
-        static void selfTest()
-        {
-            var rdb = Redis.Ins.GetDatabase(1);
-            Debug.Assert(rdb.StringSet("test", "wanggang" + DateTime.Now.ToString("yyyyMMddHHmmss")), "Redis读写失败!");
-        }
-
-        /// <summary>
-        /// 监听客户端发来的请求  
-        /// </summary>
-        async static Task WatchConnecting()
-        {
-            IPAddress ip = IPAddress.Any;
-            IPEndPoint ipe = new IPEndPoint(ip, port);                         //将IP地址和端口号绑定到网络节点point上  
-
-            //定义一个套接字用于监听客户端发来的消息,包含三个参数(IP4寻址协议,流式连接,Tcp协议)  
-            Socket SocketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
-            SocketWatch.Bind(ipe);                                             // 监听绑定的网络节点           
-            SocketWatch.Listen(20);                                            // 将套接字的监听队列长度限制为20    
-
-            while (true)                                                       // 持续不断监听客户端发来的请求     
-            {
-                Socket connection;
-                try
-                {
-                    connection = await SocketWatch.AcceptAsync();
-                }
-                catch (Exception ex)
-                {
-                    Console.WriteLine(ex.Message);                             // 提示套接字监听异常     
-                    break;
-                }
-
-                Lobby.Instance.OnNewPeerConnected(new Peer(connection));       // 有新客户端连入
-            }
-            SocketWatch.Close();                                               // 结束监听socket
-        }
-
-        /// <summary>
-        /// 监听服务端发来的请求  
-        /// </summary>
-        async static Task WatchServerPeerConnecting()
-        {
-            IPAddress ip = IPAddress.Any;
-            IPEndPoint ipe = new IPEndPoint(ip, serverport);                             //将IP地址和端口号绑定到网络节点point上  
-
-            //定义一个套接字用于监听客户端发来的消息,包含三个参数(IP4寻址协议,流式连接,Tcp协议)  
-            Socket SocketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
-            SocketWatch.Bind(ipe);                                                       // 监听绑定的网络节点           
-            SocketWatch.Listen(20);                                                      // 将套接字的监听队列长度限制为20    
-
-            while (true)                                                                 // 持续不断监听客户端发来的请求     
-            {
-                Socket connection;
-                try
-                {
-                    connection = await SocketWatch.AcceptAsync();
-                }
-                catch (Exception ex)
-                {
-                    Console.WriteLine(ex.Message);                                       // 提示套接字监听异常     
-                    break;
-                }
-                Console.WriteLine("server peer 连接上来了.");
-                if (null != serverPeer) { 
-                    serverPeer.Close();
-                }
-                serverPeer = new ServerPeer(connection);                                 // 建立与服务端的连接
-            }
-            SocketWatch.Close();                                                         // 结束监听socket
-        }
-    }
-}

+ 0 - 184
CSserver/MultiDup/server/Lobby.cs

@@ -1,184 +0,0 @@
-using System;
-using System.Collections.Generic;
-
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Threading.Channels;
-using ProtoDataBuff;
-
-using CSharpUtil;
-
-namespace MultiDup
-{
-
-
-    /// <summary>
-    /// 大厅 首先玩家连上来之后进入大厅, 下发当前房间列表, 可以创建/加入房间, 进入房间后归房间管
-    /// </summary>
-    internal class Lobby : Singleton<Lobby>
-    {
-
-        /// <summary>
-        /// 客户端
-        /// </summary>
-        public Dictionary<int, Peer> ClientPeers = new Dictionary<int, Peer>();
-        /// <summary>
-        /// 消息分发
-        /// </summary>
-        private Dictionary<eProtocalCommand, Action<int, sSocketData>> callbacks = new Dictionary<eProtocalCommand, Action<int, sSocketData>>();
-
-        /// <summary>
-        /// 客户端消息队列
-        /// </summary>
-        public Channel<KeyValuePair<int, sSocketData>> MsgChannel = Channel.CreateBounded<KeyValuePair<int, sSocketData>>(1000);
-
-
-        Dictionary<int, Room> roomDic = new Dictionary<int, Room>();
-
-
-        public Lobby()
-        {
-            this.callbacks.Add(eProtocalCommand.CsMdEnterLobby, On_EnterLobby);
-            this.callbacks.Add(eProtocalCommand.CsLeaveRoom, On_Leave);
-            callbacks.Add(eProtocalCommand.CsMdGetRoomList, On_GetRoomList);
-            callbacks.Add(eProtocalCommand.CsMdCreateRoom, On_CreateRoom);
-            callbacks.Add(eProtocalCommand.CsMdEnterRoom, On_EnterRoom);
-            var t = Task.Run(MsgLoop);
-
-        }
-        private object lock_peers = new object();
-        public void AddPeer(Peer p)
-        {
-            lock (lock_peers)
-            {
-                this.ClientPeers.Add(p.Id, p);
-            }
-
-        }
-        public void RemovePeer(int peerId)
-        {
-            lock (lock_peers)
-            {
-                if (this.ClientPeers.ContainsKey(peerId))
-                {
-                    this.ClientPeers.Remove(peerId);
-                }
-            }
-        }
-
-
-        public void RemoveRoom(int roomid) { 
-            roomDic.Remove(roomid);
-        }
-
-        public void OnNewPeerConnected(Peer peer)
-        {
-            AddPeer(peer);
-        }
-
-        /// <summary>
-        /// 进入大厅(登陆自己的uid)
-        /// </summary>
-        /// <param name="data"></param>
-        void On_EnterLobby(int peerId, sSocketData data)
-        {
-            var msg = CS_MD_EnterLobby.Parser.ParseFrom(data._data);
-
-            if (this.ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                peer.SendEvent(eProtocalCommand.ScMdEnterLobby, new SC_MD_EnterLobby() { });
-                peer.CurrentState = ClientState.InLobby;
-                peer.Properties.Add(PropertyName.Uid, msg.Uid);
-                peer.Properties.Add(PropertyName.Zoneid, msg.Zoneid);
-            }
-        }
-
-        /// <summary>
-        /// 查询房间列表
-        /// </summary>
-        /// <param name="data"></param>
-        void On_GetRoomList(int peerId, sSocketData data)
-        {
-
-            var msg = new SC_MD_GetRoomList() { };
-            if (this.ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                this.roomDic.Values.ToList().ForEach(r =>
-                {
-                    var info = new SC_MD_GetRoomList.Types.RoomInfo() { Battleserver =r.BattleServerIp, BattleServerPort=r.BattleServerPort, Mapid = r.mapId, RoomId = r.Id };
-                    r.ClientPeers.Values.ToList().ForEach(peer =>
-                    {
-                        info.PlayerUids.Add(peer.UID);
-                    });
-                    msg.RoomInfos.Add(info);
-                });
-
-                peer.SendEvent(eProtocalCommand.ScMdGetRoomList, msg);
-            }
-        }
-        /// <summary>
-        /// 创建一个房间(副本)
-        /// </summary>
-        /// <param name="data"></param>
-        void On_CreateRoom(int peerId, sSocketData data)
-        {
-            var msg = CS_MD_CreateRoom.Parser.ParseFrom(data._data);
-            if (this.ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                peer.SendEvent(eProtocalCommand.ScMdCreateRoom, new SC_MD_CreateRoom() { });
-                var room = new Room(msg.Mapid);
-                room.AddPeer(peer);                   // 转移进房间
-                roomDic.Add(room.Id, room);
-                 
-                //RemovePeer(peerId);                                                  // 从大厅移除
-            }
-        }
-
-        /// <summary>
-        /// 进入房间
-        /// </summary>
-        /// <param name="data"></param>
-        void On_EnterRoom(int peerId, sSocketData data)
-        {
-            var msg = CS_MD_EnterRoom.Parser.ParseFrom(data._data);
-            if (this.ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                if (roomDic.TryGetValue(msg.RoomId, out var room))
-                {
-                    room.AddPeer(peer);
-                }
-
-            }
-        }
-
-        /// <summary>
-        /// 离开房间(战斗结束)
-        /// </summary>
-        /// <param name="data"></param>
-        void On_Leave(int peerId, sSocketData data)
-        {
-            if (this.ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                peer.SendEvent(eProtocalCommand.ScMdLeaveRoom, new SC_MD_LeaveRoom() { });
-                peer.Close();
-            }
-        }
-
-        async void MsgLoop()
-        {
-            while (true)
-            {
-                var msg = await MsgChannel.Reader.ReadAsync();
-                if (callbacks.ContainsKey(msg.Value._protocallType))
-                {
-                    callbacks[msg.Value._protocallType](msg.Key, msg.Value);
-                }
-                else
-                {
-                    // 未找到消息处理逻辑
-                }
-            }
-        }
-    }
-}

+ 0 - 223
CSserver/MultiDup/server/Peer.cs

@@ -1,223 +0,0 @@
-using StackExchange.Redis;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Net.Sockets;
-using System.Threading.Channels;
-using System.Threading.Tasks;
-using ProtoDataBuff;
-using pb = global::Google.Protobuf;
-namespace MultiDup
-{
-    /// <summary>
-    /// 客户端状态
-    /// </summary>
-    enum ClientState
-    {
-        /// <summary>
-        /// 已连接,未登录
-        /// </summary>
-        Connected,
-        /// <summary>
-        /// 在大厅(已登录)
-        /// </summary>
-        InLobby,
-        /// <summary>
-        /// 在房间
-        /// </summary>
-        InRoom,
-        /// <summary>
-        /// 已开始游戏(在房间)
-        /// </summary>
-        InGame,
-        /// <summary>
-        /// 已断开
-        /// </summary>
-        Leaved
-    }
-
-
-    /// <summary>
-    /// 一个连接对象的抽象,代表一个远端的对象
-    /// </summary>
-    class Peer
-    {
-        /// <summary>
-        /// 玩家属性字段
-        /// </summary>
-        public Dictionary<string, object> Properties = new();
-
-        /// <summary>
-        /// 客户端状态字段
-        /// </summary>
-        public ClientState CurrentState = ClientState.Connected;
-
-
-        /// <summary>
-        /// peer的唯一Id
-        /// </summary>
-        public readonly int Id;
-
-        /// <summary>
-        /// socket连接
-        /// </summary>
-        public readonly Socket Sock;
-
-        public string UID => Properties.TryGetValue(PropertyName.Uid, out var uid)? uid.ToString():"";
-            
-        public int zoneid => Properties.TryGetValue(PropertyName.Zoneid, out var zoneid)?Convert.ToInt32(zoneid):1;
-
-
-        public Room room;
-
-
-        public Action OnSocketDisconnected;
-
-        /// <summary>
-        /// 线程安全的peer计数器
-        /// </summary>
-        private volatile static int _UniqPeerId = 0;
-
-        /// <summary>
-        /// 构造函数
-        /// </summary>
-        /// <param name="sock"></param>
-        public Peer(Socket sock)
-        {
-            this.Sock = sock;
-            Sock.ReceiveTimeout = 1500;                                         // 接收等待超时时间设为1.5秒 
-            Id = _UniqPeerId++;
-            var t = Task.Run(() => recv(Sock));                                 // 新建接收线程 
-            var tcs = Task.Run(WriteToClient);                                  // 向客户端发送消息线程
-             
-        }
-
-
-        public void Close()
-        {
-            this.CurrentState = ClientState.Leaved;                              // 关闭接收窗口
-            //room.RemovePeer(this);                                             // 从房间中移除自己
-            
-            this.sendDataBuffer.Reader.Completion
-                .ContinueWith(t =>
-                Task.Delay(5000).ContinueWith(t1 => Sock.Close())
-                );                                                               // 延迟5秒关闭套接字
-        }
-
-        #region 消息收发
-
-        /// <summary>
-        /// 向客户端发送事件
-        /// </summary>
-        public void SendEvent(eProtocalCommand msgType, pb::IMessage msg)
-        {
-            SendToClient(msgType, msg);
-        }
-
-        /// <summary>
-        /// 向客户端发送消息
-        /// </summary>
-        /// <param name="msgType"></param>
-        /// <param name="msg"></param>
-        void SendToClient(eProtocalCommand msgType, pb::IMessage msg)
-        {
-            using var ms = new MemoryStream();
-            using var os = new pb::CodedOutputStream(ms);
-            msg.WriteTo(os);
-            os.Flush();
-            ms.Seek(0, SeekOrigin.Begin);
-            var sdata = sSocketData.FromBytes(msgType, ms.ToArray());
-            sendDataBuffer.Writer.WriteAsync(sdata).AsTask().Wait();
-        }
-
-
-        /// <summary>
-        /// 向客户端写入消息
-        /// </summary>
-        async void WriteToClient()
-        {
-            while (true)
-            {
-                try
-                {
-                    var msg = await sendDataBuffer.Reader.ReadAsync();
-                    await Sock.SendAsync(new ArraySegment<byte>(msg.ToBytes()), SocketFlags.None);
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-
-            }
-            Close();
-        }
-
-
-        /// <summary>
-        /// 发送buffer
-        /// </summary>
-        private Channel<sSocketData> sendDataBuffer = Channel.CreateUnbounded<sSocketData>();
-
-        /// <summary>
-        /// 接收客户端发来的信息,客户端套接字对象
-        /// </summary>
-        /// <param name="socketclientpara"></param>    
-        async void recv(Socket socketServer)
-        {
-
-            var _databuffer = new DataBuffer();
-            byte[] arrServerRecMsg = new byte[4096];                                       // 创建一个内存缓冲区,其大小为4k字节  
-            while (true)
-            {
-                try
-                {
-                    var length = await socketServer.ReceiveAsync(new ArraySegment<byte>(arrServerRecMsg), SocketFlags.None);   // 将接收到的信息存入到内存缓冲区,并返回其字节数组的长度    
-                    if (length <= 0 || CurrentState == ClientState.Leaved)                                                     // 视为客户端已经close连接
-                    {
-                        OnSocketDisconnected?.Invoke();
-                        break;
-                    }
-                    _databuffer.AddBuffer(arrServerRecMsg, length);                                  //将收到的数据添加到缓存器中
-                    while (_databuffer.GetData(out sSocketData _socketData))                         //取出一条完整数据,转到room的消息队列,由room统一进行逻辑处理 
-                    {
-                        Console.WriteLine(" recv: " + _socketData._protocallType);
-                        switch (CurrentState)
-                        {
-                            case ClientState.Connected:
-                            case ClientState.InLobby:
-                                await Lobby.Instance.MsgChannel.Writer.WriteAsync(new KeyValuePair<int, sSocketData>(this.Id, _socketData)); // 放入大厅处理队列
-                                break;
-                            case ClientState.InRoom:
-                            case ClientState.InGame:
-                                if (null != room)
-                                {
-                                    await room.MsgChannel.Writer.WriteAsync(new KeyValuePair<int, sSocketData>(this.Id, _socketData));           // 放入房间channel
-                                }
-                                break;
-                            case ClientState.Leaved:
-                                break;
-                        }
-
-                    }
-                    Array.Clear(arrServerRecMsg, 0, length);
-                }
-                catch (SocketException e)
-                {
-                    if (e.ErrorCode == 10060)                                          // 超时的时候错误号码是10060
-                    {
-                        continue;                                                      // 继续等待  
-                    }
-                    break;
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-            }
-
-            Close();                                                                 // 关闭
-        }
-        #endregion
-    }
-
-}

+ 0 - 265
CSserver/MultiDup/server/Room.cs

@@ -1,265 +0,0 @@
-using CSharpUtil;
-using CSharpUtil.Net;
-using ProtoDataBuff;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Threading.Channels;
-using System.Threading.Tasks;
-using static System.Console;
-using pb = global::Google.Protobuf;
-
-namespace MultiDup
-{
-    /// <summary>
-    /// 房间状态
-    /// </summary>
-    enum RoomState
-    {
-        /// <summary>
-        /// 开启状态(可以连接登入)
-        /// </summary>
-        Open,
-        /// <summary>
-        /// 已关闭(不可继续登录)
-        /// </summary>
-        Close,
-    }
-
-    enum TargetType
-    {
-        /// <summary>
-        /// 所有
-        /// </summary>
-        All,
-        /// <summary>
-        /// 其他人
-        /// </summary>
-        Others,
-
-
-    }
-
-    class PropertyName
-    {
-        public const string Uid = nameof(Uid);
-        public const string Name = nameof(Name);
-        public const string Zoneid = nameof(Zoneid);
-        public const string Hp = nameof(Hp);
-        public const string MaxHp = nameof(MaxHp);
-        public const string TotalDamage = nameof(TotalDamage);
-    }
-
-    /// <summary>
-    /// 房间对象
-    /// </summary>
-    class Room
-    {
-
-        /// <summary>
-        /// 房间状态字段
-        /// </summary>
-        public RoomState CurrentState = RoomState.Close;
-
-        /// <summary>
-        /// 客户端
-        /// </summary>
-        public Dictionary<int, Peer> ClientPeers = new Dictionary<int, Peer>();
-
-        /// <summary>
-        /// 消息分发
-        /// </summary>
-        private Dictionary<eProtocalCommand, Action<int, sSocketData>> callbacks = new Dictionary<eProtocalCommand, Action<int, sSocketData>>();
-
-        /// <summary>
-        /// 客户端消息队列
-        /// </summary>
-        public Channel<KeyValuePair<int, sSocketData>> MsgChannel = Channel.CreateBounded<KeyValuePair<int, sSocketData>>(1000);
-
-        // 房间计数器
-        private static int _roomIdCounter = 0;
-        /// <summary>
-        /// 房间编号
-        /// </summary>
-        public int Id { get; }
-
-        public int mapId { get; }
-
-        /// <summary>
-        /// 战斗服务器端口
-        /// </summary>
-        public int BattleServerPort = 6006;
-        /// <summary>
-        /// 战斗服务器IP地址
-        /// </summary>
-        public string BattleServerIp = "192.168.10.17";
-
-        /// <summary>
-        /// 构造函数
-        /// </summary> 
-        public Room(int mapid)
-        {
-            mapId = mapid;
-            Id = _roomIdCounter++;
-
-            callbacks.Add(eProtocalCommand.CsMdBeginDup, On_Start); 
-            callbacks.Add(eProtocalCommand.CsLeaveRoom, On_Leave);
-
-            var t = Task.Run(MsgLoop);
-            Open();
-        }
-
-        /// <summary>
-        /// 开始游戏 
-        /// </summary>
-        /// <param name="data"></param>
-        void On_Start(int peerId, sSocketData data)
-        {
-            if (this.ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                if (null != Program.serverPeer)                                                      // battleServer创建对应的房间
-                {
-                    var sendmsg = new SS_CreateBattleServer() { RoomId = this.Id };
-                    this.ClientPeers.Values.ToList().ForEach(p =>
-                    {
-                        sendmsg.PlayerUids.Add(p.UID);
-                    });
-                    Program.serverPeer.SendEvent(eProtocalCommand.SsCreateBattleRoom, sendmsg);     // 向battle服务器发送创建房间的指令
-                    Console.WriteLine("发送创建房间指令");
-                }
-                else
-                {
-                    Console.WriteLine(" 没有可用的battle服务器! ");
-                }
-                Broadcast(TargetType.All, eProtocalCommand.ScMdBeginDup, new SC_MD_BeginDup() {  Mapid = this.mapId, Battleserver = this.BattleServerIp, BattleServerPort = this.BattleServerPort });
-            }
-        }
-
-
-        /// <summary>
-        /// 离开房间(战斗结束)
-        /// </summary>
-        /// <param name="data"></param>
-        void On_Leave(int peerId, sSocketData data)
-        {
-            if (this.ClientPeers.TryGetValue(peerId, out var peer))
-            {
-                Broadcast(TargetType.All, eProtocalCommand.ScMdLeaveRoom, new SC_MD_LeaveRoom() { Uid = peer.UID, Zoneid = peer.zoneid });
-                peer.Close();
-                RemovePeer(peerId);
-            }
-        }
-
-
-        #region 网络
-        async void MsgLoop()
-        {
-            while (true)
-            {
-                var msg = await MsgChannel.Reader.ReadAsync();
-                if (callbacks.ContainsKey(msg.Value._protocallType))
-                {
-                    callbacks[msg.Value._protocallType](msg.Key, msg.Value);
-                }
-                else
-                {
-                    // 未找到消息处理逻辑
-                }
-            }
-        }
-        /// <summary>
-        /// 广播消息
-        /// </summary>
-        /// <param name="targetType"></param>
-        /// <param name="msgType"></param>
-        /// <param name="msg"></param>
-        private void Broadcast(TargetType targetType, eProtocalCommand msgType, pb::IMessage msg)
-        {
-            switch (targetType)
-            {
-                case TargetType.All:
-                    this.ClientPeers.Values.ToList().ForEach(p => p.SendEvent(msgType, msg));
-                    break;
-                case TargetType.Others:
-                    break;
-            }
-
-        }
-        #endregion
-
-        /// <summary>
-        /// 开启
-        /// </summary>
-        public void Open()
-        {
-
-            this.CurrentState = RoomState.Open;
-        }
-        public void Close()
-        {
-            this.CurrentState = RoomState.Close;
-            Task.Delay(TimeSpan.FromMinutes(1)).ContinueWith(t => Open());
-            Lobby.Instance.RemoveRoom(this.Id);
-
-        }
-
-
-        private object lock_peers = new object();
-        public void AddPeer(Peer p)
-        {
-            if (CurrentState == RoomState.Open)
-            {
-                lock (lock_peers)
-                {
-                    p.CurrentState = ClientState.InRoom;
-                    p.room = this;
-                    this.ClientPeers.Add(p.Id, p);
-                }
-                var list = new SC_MD_EnterRoom() {  Ip = BattleServerIp,Port= BattleServerPort, Uid = p.UID, Zoneid = p.zoneid };
-
-                ClientPeers.Values.ToList().ForEach(c => list.PlayerUids.Add(c.UID));
-                Broadcast(TargetType.All, eProtocalCommand.ScMdEnterRoom, list);
-                p.OnSocketDisconnected = () =>
-                {
-                    Lobby.Instance.RemovePeer(p.Id);
-                    RemovePeer(p);
-                };
-                 
-            }
-            else
-            {
-
-                WriteLine("游戏结束2 // 这里不应该执行到!!!");
-                p.SendEvent(eProtocalCommand.ScGameOver, new SC_MD_EnterRoom() { });
-                p.Close();
-            }
-        }
-
-        public void RemovePeer(Peer p)
-        {
-            lock (lock_peers)
-            {
-                if (this.ClientPeers.ContainsKey(p.Id))
-                {
-                    this.ClientPeers.Remove(p.Id);
-                }
-                if (ClientPeers.Count == 0)
-                {
-                    this.Close();
-                }
-            }
-        }
-        public void RemovePeer(int peerId)
-        {
-            lock (lock_peers)
-            {
-                if (this.ClientPeers.ContainsKey(peerId))
-                {
-                    this.ClientPeers.Remove(peerId);
-                }
-            }
-        }
-
-    }
-
-}

+ 0 - 191
CSserver/MultiDup/server/ServerPeer.cs

@@ -1,191 +0,0 @@
-using StackExchange.Redis;
-using System;
-using System.Collections.Generic;
-using System.IO;
-using System.Net.Sockets;
-using System.Threading.Channels;
-using System.Threading.Tasks;
-using ProtoDataBuff;
-using pb = global::Google.Protobuf;
-
-namespace MultiDup
-{
-    internal class ServerPeer
-    {
-
-        /// <summary>
-        /// socket连接
-        /// </summary>
-        public readonly Socket Sock;
-
-        public Action OnSocketDisconnected;
-        /// <summary>
-        /// 消息分发
-        /// </summary>
-        private Dictionary<eProtocalCommand, Action<sSocketData>> callbacks = new Dictionary<eProtocalCommand, Action<sSocketData>>();
-        /// <summary>
-        /// 构造函数
-        /// </summary>
-        /// <param name="sock"></param>
-        public ServerPeer(Socket sock)
-        {
-            this.Sock = sock;
-            Sock.ReceiveTimeout = 1500;                                         // 接收等待超时时间设为1.5秒 
-
-            callbacks.Add(eProtocalCommand.SsCreateBattleRoom, On_CreateBattleRoom);
-
-            var t = Task.Run(() => recv(Sock));                                 // 新建接收线程 
-            var tcs = Task.Run(WriteToClient);                                  // 向客户端发送消息线程
-            var tmsglp = Task.Run(MsgLoop);
-            OnSocketDisconnected += () => {
-                Console.WriteLine("socket连接已断开!"); 
-                sock.Close();
-                sock = null;
-            };
-        }
-
-        #region 逻辑处理
-
-        public void On_CreateBattleRoom(sSocketData _sData)
-        {
-
-            var msg = SS_CreateBattleServer.Parser.ParseFrom(_sData._data);
-            // 开辟一个处理对象, room, 然后后续逻辑由room对象等待连接过来.    
-            Console.WriteLine("接收到创建房间指令");
-
-            // 返回成功
-            this.SendEvent(eProtocalCommand.SsCreateBattleRoomOk, new SS_CreateBattleServerOK() { });
-
-        }
-
-
-        #endregion
-
-        public void Close()
-        {
-
-            this.sendDataBuffer.Reader.Completion
-                .ContinueWith(t =>
-                Task.Delay(5000).ContinueWith(t1 => Sock.Close())
-                );                                                               // 延迟5秒关闭套接字
-        }
-
-        #region 消息收发
-
-        async void MsgLoop()
-        {
-            while (true)
-            {
-                var msg = await MsgChannel.Reader.ReadAsync();
-                if (callbacks.ContainsKey(msg._protocallType))
-                {
-                    callbacks[msg._protocallType](msg);
-                }
-                else
-                {
-                    // 未找到消息处理逻辑
-                }
-            }
-        }
-        /// <summary>
-        /// 客户端消息队列
-        /// </summary>
-        public Channel<sSocketData> MsgChannel = Channel.CreateBounded<sSocketData>(1000);
-
-        /// <summary>
-        /// 向客户端发送事件
-        /// </summary>
-        public void SendEvent(eProtocalCommand msgType, pb::IMessage msg)
-        {
-            SendToClient(msgType, msg);
-        }
-
-        /// <summary>
-        /// 向客户端发送消息
-        /// </summary>
-        /// <param name="msgType"></param>
-        /// <param name="msg"></param>
-        void SendToClient(eProtocalCommand msgType, pb::IMessage msg)
-        {
-            using var ms = new MemoryStream();
-            using var os = new pb::CodedOutputStream(ms);
-            msg.WriteTo(os);
-            os.Flush();
-            ms.Seek(0, SeekOrigin.Begin);
-            var sdata = sSocketData.FromBytes(msgType, ms.ToArray());
-            sendDataBuffer.Writer.WriteAsync(sdata).AsTask().Wait();
-        }
-
-
-        /// <summary>
-        /// 向客户端写入消息
-        /// </summary>
-        async void WriteToClient()
-        {
-            while (true)
-            {
-                try
-                {
-                    var msg = await sendDataBuffer.Reader.ReadAsync();
-                    await Sock.SendAsync(new ArraySegment<byte>(msg.ToBytes()), SocketFlags.None);
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-
-            }
-            Close();
-        }
-
-
-        /// <summary>
-        /// 发送buffer
-        /// </summary>
-        private Channel<sSocketData> sendDataBuffer = Channel.CreateUnbounded<sSocketData>();
-
-        /// <summary>
-        /// 接收客户端发来的信息,客户端套接字对象
-        /// </summary>
-        /// <param name="socketclientpara"></param>    
-        async void recv(Socket socketServer)
-        {
-            var _databuffer = new DataBuffer();
-            byte[] arrServerRecMsg = new byte[4096];                                       // 创建一个内存缓冲区,其大小为4k字节  
-            while (true)
-            {
-                try
-                {
-                    var length = await socketServer.ReceiveAsync(new ArraySegment<byte>(arrServerRecMsg), SocketFlags.None);   // 将接收到的信息存入到内存缓冲区,并返回其字节数组的长度    
-                    if (length <= 0)                                                       // 视为客户端已经close连接
-                    {
-                        OnSocketDisconnected?.Invoke();
-                        break;
-                    }
-                    _databuffer.AddBuffer(arrServerRecMsg, length);                         //将收到的数据添加到缓存器中
-                    while (_databuffer.GetData(out sSocketData _socketData))                //取出一条完整数据,转到room的消息队列,由room统一进行逻辑处理 
-                    {
-                        Console.WriteLine(" recv: " + _socketData._protocallType);
-                        await MsgChannel.Writer.WriteAsync(_socketData);                    // 放入大厅处理队列
-                    }
-                    Array.Clear(arrServerRecMsg, 0, length);
-                }
-                catch (SocketException e)
-                {
-                    if (e.ErrorCode == 10060)                                                  // 超时的时候错误号码是10060
-                    {
-                        continue;                                                              // 继续等待  
-                    }
-                    break;
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-            }
-
-            Close();                                                                 // 关闭
-        }
-        #endregion
-    }
-}

+ 0 - 174
CSserver/PBReferens/DataBuff.cs

@@ -1,174 +0,0 @@
-using System;
-using System.Net;
-
-namespace ProtoDataBuff
-{
-
-    //常量数据
-    public class Constants
-    {
-        //消息:数据总长度(4byte) + 数据类型(2byte) + 数据(N byte)
-        public static int HEAD_DATA_LEN = 4;
-        public static int HEAD_TYPE_LEN = 2;
-        public static int HEAD_LEN//6byte
-        {
-            get { return HEAD_DATA_LEN + HEAD_TYPE_LEN; }
-        }
-    }
-
-    /// <summary>
-    /// 网络数据结构
-    /// </summary>
-    [Serializable]
-    public struct sSocketData
-    {
-        public Int32 PackLen;
-        //public UInt32 TS;
-        public eProtocalCommand _protocallType;
-        public byte[] _data;
-
-        /// <summary>
-        /// 网络结构转数据
-        /// </summary>
-        /// <param name="tmpSocketData"></param>
-        /// <returns></returns>
-        public byte[] ToBytes()
-        {
-            byte[] _tmpBuff = new byte[PackLen];
-            byte[] _tmpBuffLength = BitConverter.GetBytes(IPAddress.HostToNetworkOrder(PackLen));
-            byte[] _tmpDataType = BitConverter.GetBytes(IPAddress.HostToNetworkOrder((Int16)_protocallType));
-
-            Array.Copy(_tmpBuffLength, 0, _tmpBuff, 0, Constants.HEAD_DATA_LEN);                    //缓存总长度
-            Array.Copy(_tmpDataType, 0, _tmpBuff, Constants.HEAD_DATA_LEN, Constants.HEAD_TYPE_LEN);//协议类型
-            Array.Copy(_data, 0, _tmpBuff, Constants.HEAD_LEN, DataLen());                          //协议数据
-
-            return _tmpBuff;
-        }
-
-        public int DataLen() => _data.Length;
-        /// <summary>
-        /// 数据转网络结构
-        /// </summary>
-        /// <param name="_protocalType"></param>
-        /// <param name="_data"></param>
-        /// <returns></returns>
-        public static sSocketData FromBytes(eProtocalCommand _protocalType, byte[] _data)
-        {
-            sSocketData tmpSocketData = new();
-            tmpSocketData.PackLen = Constants.HEAD_LEN + _data.Length;
-            //  tmpSocketData._dataLength = _data.Length;
-            tmpSocketData._protocallType = _protocalType;
-            tmpSocketData._data = _data;
-            return tmpSocketData;
-        }
-    }
-
-    /// <summary>
-    /// 网络数据缓存器,//自动大小数据缓存器
-    /// </summary>
-    [Serializable]
-    public class DataBuffer
-    {
-        private int _minBuffLen;
-        private byte[] _buff;
-        private int _curBuffPosition;
-        private int _buffLength = 0;
-        private int _dataLength;
-        private UInt16 _protocalType;
-
-
-        /// <summary>
-        /// 构造函数
-        /// </summary>
-        /// <param name="_minBuffLen">最小缓冲区大小</param>
-        public DataBuffer(int _minBuffLen = 1024)
-        {
-            if (_minBuffLen <= 0)
-            {
-                this._minBuffLen = 1024;
-            }
-            else
-            {
-                this._minBuffLen = _minBuffLen;
-            }
-            _buff = new byte[this._minBuffLen];
-        }
-
-        /// <summary>
-        /// 添加缓存数据
-        /// </summary>
-        /// <param name="_data"></param>
-        /// <param name="_dataLen"></param>
-        public void AddBuffer(byte[] _data, int _dataLen)
-        {
-            if (_dataLen > _buff.Length - _curBuffPosition)//超过当前缓存
-            {
-                byte[] _tmpBuff = new byte[_curBuffPosition + _dataLen];
-                Array.Copy(_buff, 0, _tmpBuff, 0, _curBuffPosition);
-                Array.Copy(_data, 0, _tmpBuff, _curBuffPosition, _dataLen);
-                _buff = _tmpBuff;
-                _tmpBuff = null;
-            }
-            else
-            {
-                Array.Copy(_data, 0, _buff, _curBuffPosition, _dataLen);
-            }
-            _curBuffPosition += _dataLen;//修改当前数据标记
-        }
-
-        /// <summary>
-        /// 更新数据长度
-        /// </summary>
-        public void UpdateDataLength()
-        {
-            if (_dataLength == 0 && _curBuffPosition >= Constants.HEAD_LEN)
-            {
-                byte[] tmpDataLen = new byte[Constants.HEAD_DATA_LEN];
-                Array.Copy(_buff, 0, tmpDataLen, 0, Constants.HEAD_DATA_LEN);
-                _buffLength =IPAddress.NetworkToHostOrder( BitConverter.ToInt32(tmpDataLen, 0));
-
-                byte[] tmpProtocalType = new byte[Constants.HEAD_TYPE_LEN];
-                Array.Copy(_buff, Constants.HEAD_DATA_LEN, tmpProtocalType, 0, Constants.HEAD_TYPE_LEN);
-                _protocalType = (ushort)IPAddress.NetworkToHostOrder( BitConverter.ToInt16(tmpProtocalType, 0));
-
-                _dataLength = _buffLength - Constants.HEAD_LEN;
-            }
-        }
-
-        /// <summary>
-        /// 获取一条可用数据,返回值标记是否有数据
-        /// </summary>
-        /// <param name="_tmpSocketData"></param>
-        /// <returns></returns>
-        public bool GetData(out sSocketData _tmpSocketData)
-        {
-            _tmpSocketData = new sSocketData();
-
-            if (_buffLength <= 0)
-            {
-                UpdateDataLength();
-            }
-
-            if (_buffLength > 0 && _curBuffPosition >= _buffLength)
-            {
-                _tmpSocketData.PackLen = _buffLength;
-                //_tmpSocketData._dataLength = _dataLength;
-                _tmpSocketData._protocallType = (eProtocalCommand)_protocalType;
-                _tmpSocketData._data = new byte[_dataLength];
-                Array.Copy(_buff, Constants.HEAD_LEN, _tmpSocketData._data, 0, _dataLength);
-                _curBuffPosition -= _buffLength;
-                byte[] _tmpBuff = new byte[_curBuffPosition < _minBuffLen ? _minBuffLen : _curBuffPosition];
-                Array.Copy(_buff, _buffLength, _tmpBuff, 0, _curBuffPosition);
-                _buff = _tmpBuff;
-
-
-                _buffLength = 0;
-                _dataLength = 0;
-                _protocalType = 0;
-                return true;
-            }
-            return false;
-        }
-
-    }
-}

+ 0 - 16
CSserver/PBReferens/PBReferens.csproj

@@ -1,16 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <TargetFramework>net6.0</TargetFramework>
-  </PropertyGroup>
-
-  <Target Name="PreBuild" BeforeTargets="PreBuildEvent">
-    <Exec Command="protoc --csharp_out=pbcs pb/*.proto&#xD;&#xA;protoc --go_out=pbgo pb/*.proto" />
-  </Target>
-
-  <ItemGroup>
-    <PackageReference Include="Google.Protobuf" Version="3.17.3" />
-    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
-  </ItemGroup>
-
-</Project>

+ 0 - 9
CSserver/PBReferens/pb/ErrCode.proto

@@ -1,9 +0,0 @@
-syntax = "proto3";
-
- // package BossServer; //暂时没有定 命名空间
- option go_package = "/pb";
-
-enum ErrCode {
-  ok = 0;
-  OpNotAllowed = 1;
-}

+ 0 - 104
CSserver/PBReferens/pb/MsgTypeEnum.proto

@@ -1,104 +0,0 @@
-syntax = "proto3";
-
- // package BossServer; //暂时没有定 命名空间
- option go_package = "/pb";
-
- // 注意不要超过65535(在socket传输时只分配了2字节 -gwang)
-enum eProtocalCommand {
-  // 无操作
-  noop = 0;
-
-  //
-  //=======  C => S  =======
-  //
-
-  // 登录()
-  CS_Login = 1;  
-  // 上报伤害输出
-  CS_ReportDamage =2;
-  // 离开房间(战斗失败结束)
-  CS_LeaveRoom =3;
-  // 上报玩家剩余血量
-  CS_ReportUserHp=4;
-
-  // 聊天, 客户端初始化
-  CS_ChatLogin = 10;
-  // 聊天, 发送消息
-  CS_ChatSendMsg = 11;
-
-  // ----多人副本----
-
-  // 多人副本,进入大厅(登录自己的uid)
-  CS_MD_EnterLobby =20; 
-
-  // 多人副本, 创建房间
-  CS_MD_CreateRoom =21;
-  // 多人副本, 申请房间(列表)
-  CS_MD_GetRoomList = 22;
-  // 多人副本, 加入房间
-  CS_MD_EnterRoom = 23;
-  // 多人副本, 离开房间
-  CS_MD_LeaveRoom =24;
-  // 多人副本, 开始游戏(创建者)
-  CS_MD_BeginDup = 25;
-
-  // 战斗服务 登录
-  CS_BT_Login=31;
-  // 战斗服务 状态同步
-  CS_BT_Status=32;
-  // 战斗服务 位置同步
-  CS_BT_Position=33;
-  // 战斗服务 广播
-  CS_BT_BroadCast =34;
-  // 战斗服务器 玩家列表更新
-  CS_BT_PeopleList =35;
-
-  //
-  //=======  S => C  =======
-  //
-
-
-  // 登录结果
-  SC_Login =100;
-  // 更新数据
-  SC_UpdateProperties =101;
-  // 游戏结束
-  SC_GameOver=102;
-
-  // 聊天, 登录成功
-  SC_ChatLogin = 110;
-  // 聊天, 新消息
-  SC_ChatNewMsg = 111;
-
-  // ---- 多人副本 ----
-  // 多人副本, 进入大厅(登录自己的uid)
-  SC_MD_EnterLobby =120;
-  // 多人副本, 创建房间
-  SC_MD_CreateRoom =121;
-  // 多人副本, 申请房间(列表)
-  SC_MD_GetRoomList = 122;
-  // 多人副本, 加入房间
-  SC_MD_EnterRoom = 123;
-  // 多人副本, 离开房间
-  SC_MD_LeaveRoom =124;
-  // 多人副本, 开始游戏(创建者)
-  SC_MD_BeginDup = 125;
-
-  // 战斗服务 登录通知
-  SC_BT_Login = 131;
-  // 战斗服务 状态同步
-  SC_BT_Status =132;
-  // 战斗服务 位置同步
-  SC_BT_Postion =133;
-  // 战斗服务 广播
-  SC_BT_BroadCast =134;
-  // 战斗服务 玩家列表更新
-  SC_BT_PeopleList =135;
-
-  //////////////   S - S    //////////////////
-  //创建战斗房间
-  SS_CreateBattleRoom =301;
-  // 创建房间OK
-  SS_CreateBattleRoomOk =302;
-
-}

+ 0 - 185
CSserver/PBReferens/pb/MultiDup.proto

@@ -1,185 +0,0 @@
-syntax = "proto3";
-// 多人副本
-package MultiDup;
-option go_package = "pb/MultiDup";
- 
-//
-// 进入大厅(注册下自己的uid)
- message CS_MD_EnterLobby{
- 	int32 Zoneid = 1;
-	string Uid = 2;
- }
-  // 多人副本, 创建房间
- message CS_MD_CreateRoom {
-	 int32 Zoneid=1;    // zoneid
-	 string Uid=2;      // 玩家id
-	 int32 Mapid=3;     // 地图id
- }
-
-
-  // 多人副本, 申请房间(列表)
- message CS_MD_GetRoomList {
-	 int32 Zoneid=1;
-	 string Uid =2;
-	 
- }
-  // 多人副本, 加入房间
- message CS_MD_EnterRoom {
-     int32 Zoneid=1;
-	 string Uid =2;
-	 int32 RoomId=3;    // 房间id
- }
-  // 多人副本, 离开房间
- message CS_MD_LeaveRoom {
- 	 int32 Zoneid=1;
-	 string Uid =2;
-	 //int32 RoomId=3;    // 房间id (理论上已经处于房间中不需要此字段)
- }
-  // 多人副本, 开始游戏(创建者)
- message CS_MD_BeginDup {
- 	 int32 Zoneid=1;
-	 string Uid =2;
-	 //int32 RoomId=3;    // 房间id (理论上已经处于房间中不需要此字段)
- }
-
- message CS_BT_Login{
- 	 int32 Zoneid=1;
-	 string Uid =2;
-	 string Msg=3;
- }
- // 查询组队列表
- message CS_BT_PeopleList{
-	 int32 Zoneid=1;
-	 string Uid =2;
- }
- message CS_BT_Status{
-	 int32 Zoneid=1;
-	 string SenderUid =2;
-	 string PropertyName=3;
-	 string Value=4;
- }
- message CS_BT_Position{
-  	 int32 Zoneid=1;
-	 string SenderUid =2;
-	 float  X =3;
-	 float  Y =4;
-	 float  Z =5;
- }
- // 战斗服务, 广播
- message CS_BT_BroadCast{
-  	 int32 Zoneid=1;
-	 string SenderUid =2;
-	 string Msg=3;
- }
-
- message CS_BT_Over{
-  	 int32 Zoneid=1;
-	 string SenderUid =2;
-	 string Msg=3;
- }
-
- // 
- // 加入房间成功
- message SC_MD_EnterLobby{
- 
- }
-
-  // 多人副本, 创建房间
- message SC_MD_CreateRoom {
-	 int32 Zoneid=1;
-	 string Uid =2;
-	 int32 Mapid=3;
-     int32 RoomId=4;    // 房间id (服务端分配)
-     
- }
-  // 多人副本, 申请房间(列表)
- message SC_MD_GetRoomList {
-	message RoomInfo{
-		int32 RoomId=1;
-		int32 Mapid=2;
-		repeated string  PlayerUids=3;  //??
-		string Battleserver =4;
-		int32 BattleServerPort =5;
-	}	 
-	repeated RoomInfo RoomInfos=1;
-
- }
-  // 多人副本, 加入房间
- message SC_MD_EnterRoom {
-     int32 Zoneid=1;
-	 string Uid =2;       // (新进id)
-	 int32 Mapid=3;
-	 string Ip=4;         // 战斗服务器ip
-	 int32 Port=5;        // 战斗服务器端口
-	 repeated string  PlayerUids=6;
-
- }
-  // 多人副本, 离开房间
- message SC_MD_LeaveRoom {
-     int32 Zoneid=1;
-	 string Uid =2;       // (离开id)
- }
-  // 多人副本, 开始游戏(创建者)
- message SC_MD_BeginDup {
-    string Battleserver =1;
-	int32  BattleServerPort =2;
-	int32  Mapid=3;
- }
-
- // 战斗服务 登录
- 
- message SC_BT_Login{
- 	 int32 Zoneid=1;
-	 string Uid =2;
-	 string Msg=3;
- }
-
- // 战斗服务器, 玩家列表更新
- message SC_BT_PeopleList{
-	 int32 Zoneid=1;
-	 string NewerUid =2;       // (新进id)
-	 repeated string  PlayerUids=3;
- }
-
- // 战斗服务 同步状态
- message SC_BT_Status{
-	 int32 Zoneid=1;
-	 string SenderUid =2;
-	 // 属性名称
-	 string PropertyName=3;
-	 // 属性值
-	 string Value=4;
- }
- // 战斗服务 同步位置
- message SC_BT_Position{
-  	 int32 Zoneid=1;
-	   // 发送者uid
-	 string SenderUid =2;
-	 float  X =3;
-	 float  Y =4;
-	 float  Z =5;
- }
- // 战斗服务 广播
- message SC_BT_BroadCast{
-  	 int32 Zoneid=1;
-	   // 发送者uid
-	 string SenderUid =2;
-	 string Msg=3;
- }
- // 战斗服务,结束
-  message SC_BT_Over{
-  	 int32 Zoneid=1;
-	 string SenderUid =2;
-	 string Msg=3;
- }
-
-
- // 多人副本在战斗服创建房间
- message SS_CreateBattleServer{
-	int32 RoomId=1;
-	repeated string PlayerUids=2;
- }
- // 多人副本,创建战斗房间OK
- message SS_CreateBattleServerOK{
-	
- }

+ 0 - 62
CSserver/PBReferens/pb/chat.proto

@@ -1,62 +0,0 @@
-syntax = "proto3";
-
-package Chat;
-option go_package = "pb/Chat";
- 
-
-// 频道
-enum ChatChannel {
-	// 系统频道
-	System = 0;
-	// 世界频道
-	World = 1;
-	// 公会频道
-	Guild =2;
-	// 密语(单独发送给某人)
-	Single =3;
-
-}
-
-// 聊天, 登录
-message CS_ChatLogin
-{
-	int32 Zoneid = 1;
-	string Uid = 2;
-	string Name =3;
-}
-
-// 聊天, 发送消息
-message CS_ChatSendMsg
-{
-	ChatChannel ToChannel = 1;
-	string  Msg = 2;
-	string ToNickName=3;
-}
-
-// 聊天, 初始化返回值
-message SC_ChatLogin
-{
-     // 错误码
-	enum ErrorCode
-	{
-	     // 成功
-		 OK = 0;
-		 // 未知的UID
-		 AccIDInvalid = 1;
-		 // 重复登入
-		 LoginRepeat = 2;
-		 // 内部错误
-		 InnerError = 3;
-	}
-	// 错误码
-	ErrorCode code = 1;
-} 
-
-// 聊天, 新的消息
-message SC_ChatNewMsg
-{ 
-	ChatChannel FromChannel = 1;
-	string Msg = 2; 
-	string SenderName = 3;
-	string SenderUid = 4;
-}

+ 0 - 55
CSserver/PBReferens/pb/fight.proto

@@ -1,55 +0,0 @@
-//import "google/protobuf/any.proto";
-syntax = "proto3";
-
-package BossServer;
-option go_package = "pb/BossServer"; 
-
-//上报伤害输出
-message CSFightReportDamage
-{
-       // 伤害输出
-	  int32 Damage = 1; 
-}
-// 上报玩家剩余血量
-message CSReportUserHP{
-	int32 UserHP = 1;
-}
-// 结束(一般情况下是玩家血量到底主动退出)
-message CSLeaveFight
-{
-	  int32 _no =1;
-}
- 
-// 从连接状态转入已经登陆状态(标记自己的uid和zoneid)
-message CSEnterFight
-{
-	int32 Zoneid = 1;
-	string Uid = 2;
-	string Name =3;
-	int32 BossId=4;
-}
-
-// 登陆完成
-message SCEnterFight
-{
-	int32 BossHp = 1;
-	int32 BossMaxHp = 2;
-	int32 UserHP = 3;
-	// 倒计时
-	int32 CountDown=4;
-	
-}
-// 更新状态数据
-message SCUpdateProperties
-{
-   int32 BossHp=1;
-   int32 BossMaxHp=2;
-   // 倒计时
-	int32 CountDown=3;
-}
-// 战斗结束
-message SCGameOver{
-	int32 BossHp=1;	
-	// 倒计时
-	int32 CountDown=2;
-}

+ 0 - 786
CSserver/PBReferens/pbcs/Chat.cs

@@ -1,786 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: pb/chat.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-namespace Chat {
-
-  /// <summary>Holder for reflection information generated from pb/chat.proto</summary>
-  public static partial class ChatReflection {
-
-    #region Descriptor
-    /// <summary>File descriptor for pb/chat.proto</summary>
-    public static pbr::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbr::FileDescriptor descriptor;
-
-    static ChatReflection() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "Cg1wYi9jaGF0LnByb3RvEgRDaGF0IjkKDENTX0NoYXRMb2dpbhIOCgZab25l",
-            "aWQYASABKAUSCwoDVWlkGAIgASgJEgwKBE5hbWUYAyABKAkiVwoOQ1NfQ2hh",
-            "dFNlbmRNc2cSJAoJVG9DaGFubmVsGAEgASgOMhEuQ2hhdC5DaGF0Q2hhbm5l",
-            "bBILCgNNc2cYAiABKAkSEgoKVG9OaWNrTmFtZRgDIAEoCSKCAQoMU0NfQ2hh",
-            "dExvZ2luEioKBGNvZGUYASABKA4yHC5DaGF0LlNDX0NoYXRMb2dpbi5FcnJv",
-            "ckNvZGUiRgoJRXJyb3JDb2RlEgYKAk9LEAASEAoMQWNjSURJbnZhbGlkEAES",
-            "DwoLTG9naW5SZXBlYXQQAhIOCgpJbm5lckVycm9yEAMiawoNU0NfQ2hhdE5l",
-            "d01zZxImCgtGcm9tQ2hhbm5lbBgBIAEoDjIRLkNoYXQuQ2hhdENoYW5uZWwS",
-            "CwoDTXNnGAIgASgJEhIKClNlbmRlck5hbWUYAyABKAkSEQoJU2VuZGVyVWlk",
-            "GAQgASgJKjsKC0NoYXRDaGFubmVsEgoKBlN5c3RlbRAAEgkKBVdvcmxkEAES",
-            "CQoFR3VpbGQQAhIKCgZTaW5nbGUQA0IJWgdwYi9DaGF0YgZwcm90bzM="));
-      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-          new pbr::FileDescriptor[] { },
-          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Chat.ChatChannel), }, new pbr::GeneratedClrTypeInfo[] {
-            new pbr::GeneratedClrTypeInfo(typeof(global::Chat.CS_ChatLogin), global::Chat.CS_ChatLogin.Parser, new[]{ "Zoneid", "Uid", "Name" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::Chat.CS_ChatSendMsg), global::Chat.CS_ChatSendMsg.Parser, new[]{ "ToChannel", "Msg", "ToNickName" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::Chat.SC_ChatLogin), global::Chat.SC_ChatLogin.Parser, new[]{ "Code" }, null, new[]{ typeof(global::Chat.SC_ChatLogin.Types.ErrorCode) }, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::Chat.SC_ChatNewMsg), global::Chat.SC_ChatNewMsg.Parser, new[]{ "FromChannel", "Msg", "SenderName", "SenderUid" }, null, null, null)
-          }));
-    }
-    #endregion
-
-  }
-  #region Enums
-  /// <summary>
-  /// 频道
-  /// </summary>
-  public enum ChatChannel {
-    /// <summary>
-    /// 系统频道
-    /// </summary>
-    [pbr::OriginalName("System")] System = 0,
-    /// <summary>
-    /// 世界频道
-    /// </summary>
-    [pbr::OriginalName("World")] World = 1,
-    /// <summary>
-    /// 公会频道
-    /// </summary>
-    [pbr::OriginalName("Guild")] Guild = 2,
-    /// <summary>
-    /// 密语(单独发送给某人)
-    /// </summary>
-    [pbr::OriginalName("Single")] Single = 3,
-  }
-
-  #endregion
-
-  #region Messages
-  /// <summary>
-  /// 聊天, 登录
-  /// </summary>
-  public sealed partial class CS_ChatLogin : pb::IMessage<CS_ChatLogin> {
-    private static readonly pb::MessageParser<CS_ChatLogin> _parser = new pb::MessageParser<CS_ChatLogin>(() => new CS_ChatLogin());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CS_ChatLogin> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::Chat.ChatReflection.Descriptor.MessageTypes[0]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_ChatLogin() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_ChatLogin(CS_ChatLogin other) : this() {
-      zoneid_ = other.zoneid_;
-      uid_ = other.uid_;
-      name_ = other.name_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_ChatLogin Clone() {
-      return new CS_ChatLogin(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Uid" field.</summary>
-    public const int UidFieldNumber = 2;
-    private string uid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Uid {
-      get { return uid_; }
-      set {
-        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "Name" field.</summary>
-    public const int NameFieldNumber = 3;
-    private string name_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Name {
-      get { return name_; }
-      set {
-        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CS_ChatLogin);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CS_ChatLogin other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (Uid != other.Uid) return false;
-      if (Name != other.Name) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
-      if (Name.Length != 0) hash ^= Name.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Uid);
-      }
-      if (Name.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(Name);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
-      }
-      if (Name.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CS_ChatLogin other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.Uid.Length != 0) {
-        Uid = other.Uid;
-      }
-      if (other.Name.Length != 0) {
-        Name = other.Name;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            Uid = input.ReadString();
-            break;
-          }
-          case 26: {
-            Name = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 聊天, 发送消息
-  /// </summary>
-  public sealed partial class CS_ChatSendMsg : pb::IMessage<CS_ChatSendMsg> {
-    private static readonly pb::MessageParser<CS_ChatSendMsg> _parser = new pb::MessageParser<CS_ChatSendMsg>(() => new CS_ChatSendMsg());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CS_ChatSendMsg> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::Chat.ChatReflection.Descriptor.MessageTypes[1]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_ChatSendMsg() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_ChatSendMsg(CS_ChatSendMsg other) : this() {
-      toChannel_ = other.toChannel_;
-      msg_ = other.msg_;
-      toNickName_ = other.toNickName_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_ChatSendMsg Clone() {
-      return new CS_ChatSendMsg(this);
-    }
-
-    /// <summary>Field number for the "ToChannel" field.</summary>
-    public const int ToChannelFieldNumber = 1;
-    private global::Chat.ChatChannel toChannel_ = 0;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public global::Chat.ChatChannel ToChannel {
-      get { return toChannel_; }
-      set {
-        toChannel_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Msg" field.</summary>
-    public const int MsgFieldNumber = 2;
-    private string msg_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Msg {
-      get { return msg_; }
-      set {
-        msg_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "ToNickName" field.</summary>
-    public const int ToNickNameFieldNumber = 3;
-    private string toNickName_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string ToNickName {
-      get { return toNickName_; }
-      set {
-        toNickName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CS_ChatSendMsg);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CS_ChatSendMsg other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (ToChannel != other.ToChannel) return false;
-      if (Msg != other.Msg) return false;
-      if (ToNickName != other.ToNickName) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (ToChannel != 0) hash ^= ToChannel.GetHashCode();
-      if (Msg.Length != 0) hash ^= Msg.GetHashCode();
-      if (ToNickName.Length != 0) hash ^= ToNickName.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (ToChannel != 0) {
-        output.WriteRawTag(8);
-        output.WriteEnum((int) ToChannel);
-      }
-      if (Msg.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Msg);
-      }
-      if (ToNickName.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(ToNickName);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (ToChannel != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ToChannel);
-      }
-      if (Msg.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Msg);
-      }
-      if (ToNickName.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(ToNickName);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CS_ChatSendMsg other) {
-      if (other == null) {
-        return;
-      }
-      if (other.ToChannel != 0) {
-        ToChannel = other.ToChannel;
-      }
-      if (other.Msg.Length != 0) {
-        Msg = other.Msg;
-      }
-      if (other.ToNickName.Length != 0) {
-        ToNickName = other.ToNickName;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            toChannel_ = (global::Chat.ChatChannel) input.ReadEnum();
-            break;
-          }
-          case 18: {
-            Msg = input.ReadString();
-            break;
-          }
-          case 26: {
-            ToNickName = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 聊天, 初始化返回值
-  /// </summary>
-  public sealed partial class SC_ChatLogin : pb::IMessage<SC_ChatLogin> {
-    private static readonly pb::MessageParser<SC_ChatLogin> _parser = new pb::MessageParser<SC_ChatLogin>(() => new SC_ChatLogin());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SC_ChatLogin> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::Chat.ChatReflection.Descriptor.MessageTypes[2]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_ChatLogin() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_ChatLogin(SC_ChatLogin other) : this() {
-      code_ = other.code_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_ChatLogin Clone() {
-      return new SC_ChatLogin(this);
-    }
-
-    /// <summary>Field number for the "code" field.</summary>
-    public const int CodeFieldNumber = 1;
-    private global::Chat.SC_ChatLogin.Types.ErrorCode code_ = 0;
-    /// <summary>
-    /// 错误码
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public global::Chat.SC_ChatLogin.Types.ErrorCode Code {
-      get { return code_; }
-      set {
-        code_ = value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SC_ChatLogin);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SC_ChatLogin other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Code != other.Code) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Code != 0) hash ^= Code.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Code != 0) {
-        output.WriteRawTag(8);
-        output.WriteEnum((int) Code);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Code != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Code);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SC_ChatLogin other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Code != 0) {
-        Code = other.Code;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            code_ = (global::Chat.SC_ChatLogin.Types.ErrorCode) input.ReadEnum();
-            break;
-          }
-        }
-      }
-    }
-
-    #region Nested types
-    /// <summary>Container for nested types declared in the SC_ChatLogin message type.</summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static partial class Types {
-      /// <summary>
-      /// 错误码
-      /// </summary>
-      public enum ErrorCode {
-        /// <summary>
-        /// 成功
-        /// </summary>
-        [pbr::OriginalName("OK")] Ok = 0,
-        /// <summary>
-        /// 未知的UID
-        /// </summary>
-        [pbr::OriginalName("AccIDInvalid")] AccIdinvalid = 1,
-        /// <summary>
-        /// 重复登入
-        /// </summary>
-        [pbr::OriginalName("LoginRepeat")] LoginRepeat = 2,
-        /// <summary>
-        /// 内部错误
-        /// </summary>
-        [pbr::OriginalName("InnerError")] InnerError = 3,
-      }
-
-    }
-    #endregion
-
-  }
-
-  /// <summary>
-  /// 聊天, 新的消息
-  /// </summary>
-  public sealed partial class SC_ChatNewMsg : pb::IMessage<SC_ChatNewMsg> {
-    private static readonly pb::MessageParser<SC_ChatNewMsg> _parser = new pb::MessageParser<SC_ChatNewMsg>(() => new SC_ChatNewMsg());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SC_ChatNewMsg> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::Chat.ChatReflection.Descriptor.MessageTypes[3]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_ChatNewMsg() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_ChatNewMsg(SC_ChatNewMsg other) : this() {
-      fromChannel_ = other.fromChannel_;
-      msg_ = other.msg_;
-      senderName_ = other.senderName_;
-      senderUid_ = other.senderUid_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_ChatNewMsg Clone() {
-      return new SC_ChatNewMsg(this);
-    }
-
-    /// <summary>Field number for the "FromChannel" field.</summary>
-    public const int FromChannelFieldNumber = 1;
-    private global::Chat.ChatChannel fromChannel_ = 0;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public global::Chat.ChatChannel FromChannel {
-      get { return fromChannel_; }
-      set {
-        fromChannel_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Msg" field.</summary>
-    public const int MsgFieldNumber = 2;
-    private string msg_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Msg {
-      get { return msg_; }
-      set {
-        msg_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "SenderName" field.</summary>
-    public const int SenderNameFieldNumber = 3;
-    private string senderName_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string SenderName {
-      get { return senderName_; }
-      set {
-        senderName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "SenderUid" field.</summary>
-    public const int SenderUidFieldNumber = 4;
-    private string senderUid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string SenderUid {
-      get { return senderUid_; }
-      set {
-        senderUid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SC_ChatNewMsg);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SC_ChatNewMsg other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (FromChannel != other.FromChannel) return false;
-      if (Msg != other.Msg) return false;
-      if (SenderName != other.SenderName) return false;
-      if (SenderUid != other.SenderUid) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (FromChannel != 0) hash ^= FromChannel.GetHashCode();
-      if (Msg.Length != 0) hash ^= Msg.GetHashCode();
-      if (SenderName.Length != 0) hash ^= SenderName.GetHashCode();
-      if (SenderUid.Length != 0) hash ^= SenderUid.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (FromChannel != 0) {
-        output.WriteRawTag(8);
-        output.WriteEnum((int) FromChannel);
-      }
-      if (Msg.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Msg);
-      }
-      if (SenderName.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(SenderName);
-      }
-      if (SenderUid.Length != 0) {
-        output.WriteRawTag(34);
-        output.WriteString(SenderUid);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (FromChannel != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FromChannel);
-      }
-      if (Msg.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Msg);
-      }
-      if (SenderName.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(SenderName);
-      }
-      if (SenderUid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(SenderUid);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SC_ChatNewMsg other) {
-      if (other == null) {
-        return;
-      }
-      if (other.FromChannel != 0) {
-        FromChannel = other.FromChannel;
-      }
-      if (other.Msg.Length != 0) {
-        Msg = other.Msg;
-      }
-      if (other.SenderName.Length != 0) {
-        SenderName = other.SenderName;
-      }
-      if (other.SenderUid.Length != 0) {
-        SenderUid = other.SenderUid;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            fromChannel_ = (global::Chat.ChatChannel) input.ReadEnum();
-            break;
-          }
-          case 18: {
-            Msg = input.ReadString();
-            break;
-          }
-          case 26: {
-            SenderName = input.ReadString();
-            break;
-          }
-          case 34: {
-            SenderUid = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 0 - 41
CSserver/PBReferens/pbcs/ErrCode.cs

@@ -1,41 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: pb/ErrCode.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-/// <summary>Holder for reflection information generated from pb/ErrCode.proto</summary>
-public static partial class ErrCodeReflection {
-
-  #region Descriptor
-  /// <summary>File descriptor for pb/ErrCode.proto</summary>
-  public static pbr::FileDescriptor Descriptor {
-    get { return descriptor; }
-  }
-  private static pbr::FileDescriptor descriptor;
-
-  static ErrCodeReflection() {
-    byte[] descriptorData = global::System.Convert.FromBase64String(
-        string.Concat(
-          "ChBwYi9FcnJDb2RlLnByb3RvKiMKB0VyckNvZGUSBgoCb2sQABIQCgxPcE5v",
-          "dEFsbG93ZWQQAUIFWgMvcGJiBnByb3RvMw=="));
-    descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-        new pbr::FileDescriptor[] { },
-        new pbr::GeneratedClrTypeInfo(new[] {typeof(global::ErrCode), }, null));
-  }
-  #endregion
-
-}
-#region Enums
-public enum ErrCode {
-  [pbr::OriginalName("ok")] Ok = 0,
-  [pbr::OriginalName("OpNotAllowed")] OpNotAllowed = 1,
-}
-
-#endregion
-
-
-#endregion Designer generated code

+ 0 - 1159
CSserver/PBReferens/pbcs/Fight.cs

@@ -1,1159 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: pb/fight.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-namespace BossServer {
-
-  /// <summary>Holder for reflection information generated from pb/fight.proto</summary>
-  public static partial class FightReflection {
-
-    #region Descriptor
-    /// <summary>File descriptor for pb/fight.proto</summary>
-    public static pbr::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbr::FileDescriptor descriptor;
-
-    static FightReflection() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "Cg5wYi9maWdodC5wcm90bxIKQm9zc1NlcnZlciIlChNDU0ZpZ2h0UmVwb3J0",
-            "RGFtYWdlEg4KBkRhbWFnZRgBIAEoBSIgCg5DU1JlcG9ydFVzZXJIUBIOCgZV",
-            "c2VySFAYASABKAUiGwoMQ1NMZWF2ZUZpZ2h0EgsKA19ubxgBIAEoBSJJCgxD",
-            "U0VudGVyRmlnaHQSDgoGWm9uZWlkGAEgASgFEgsKA1VpZBgCIAEoCRIMCgRO",
-            "YW1lGAMgASgJEg4KBkJvc3NJZBgEIAEoBSJUCgxTQ0VudGVyRmlnaHQSDgoG",
-            "Qm9zc0hwGAEgASgFEhEKCUJvc3NNYXhIcBgCIAEoBRIOCgZVc2VySFAYAyAB",
-            "KAUSEQoJQ291bnREb3duGAQgASgFIkoKElNDVXBkYXRlUHJvcGVydGllcxIO",
-            "CgZCb3NzSHAYASABKAUSEQoJQm9zc01heEhwGAIgASgFEhEKCUNvdW50RG93",
-            "bhgDIAEoBSIvCgpTQ0dhbWVPdmVyEg4KBkJvc3NIcBgBIAEoBRIRCglDb3Vu",
-            "dERvd24YAiABKAVCD1oNcGIvQm9zc1NlcnZlcmIGcHJvdG8z"));
-      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-          new pbr::FileDescriptor[] { },
-          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
-            new pbr::GeneratedClrTypeInfo(typeof(global::BossServer.CSFightReportDamage), global::BossServer.CSFightReportDamage.Parser, new[]{ "Damage" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::BossServer.CSReportUserHP), global::BossServer.CSReportUserHP.Parser, new[]{ "UserHP" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::BossServer.CSLeaveFight), global::BossServer.CSLeaveFight.Parser, new[]{ "No" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::BossServer.CSEnterFight), global::BossServer.CSEnterFight.Parser, new[]{ "Zoneid", "Uid", "Name", "BossId" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::BossServer.SCEnterFight), global::BossServer.SCEnterFight.Parser, new[]{ "BossHp", "BossMaxHp", "UserHP", "CountDown" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::BossServer.SCUpdateProperties), global::BossServer.SCUpdateProperties.Parser, new[]{ "BossHp", "BossMaxHp", "CountDown" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::BossServer.SCGameOver), global::BossServer.SCGameOver.Parser, new[]{ "BossHp", "CountDown" }, null, null, null)
-          }));
-    }
-    #endregion
-
-  }
-  #region Messages
-  /// <summary>
-  ///上报伤害输出
-  /// </summary>
-  public sealed partial class CSFightReportDamage : pb::IMessage<CSFightReportDamage> {
-    private static readonly pb::MessageParser<CSFightReportDamage> _parser = new pb::MessageParser<CSFightReportDamage>(() => new CSFightReportDamage());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CSFightReportDamage> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::BossServer.FightReflection.Descriptor.MessageTypes[0]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CSFightReportDamage() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CSFightReportDamage(CSFightReportDamage other) : this() {
-      damage_ = other.damage_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CSFightReportDamage Clone() {
-      return new CSFightReportDamage(this);
-    }
-
-    /// <summary>Field number for the "Damage" field.</summary>
-    public const int DamageFieldNumber = 1;
-    private int damage_;
-    /// <summary>
-    /// 伤害输出
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Damage {
-      get { return damage_; }
-      set {
-        damage_ = value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CSFightReportDamage);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CSFightReportDamage other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Damage != other.Damage) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Damage != 0) hash ^= Damage.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Damage != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Damage);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Damage != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Damage);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CSFightReportDamage other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Damage != 0) {
-        Damage = other.Damage;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Damage = input.ReadInt32();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 上报玩家剩余血量
-  /// </summary>
-  public sealed partial class CSReportUserHP : pb::IMessage<CSReportUserHP> {
-    private static readonly pb::MessageParser<CSReportUserHP> _parser = new pb::MessageParser<CSReportUserHP>(() => new CSReportUserHP());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CSReportUserHP> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::BossServer.FightReflection.Descriptor.MessageTypes[1]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CSReportUserHP() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CSReportUserHP(CSReportUserHP other) : this() {
-      userHP_ = other.userHP_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CSReportUserHP Clone() {
-      return new CSReportUserHP(this);
-    }
-
-    /// <summary>Field number for the "UserHP" field.</summary>
-    public const int UserHPFieldNumber = 1;
-    private int userHP_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int UserHP {
-      get { return userHP_; }
-      set {
-        userHP_ = value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CSReportUserHP);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CSReportUserHP other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (UserHP != other.UserHP) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (UserHP != 0) hash ^= UserHP.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (UserHP != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(UserHP);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (UserHP != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UserHP);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CSReportUserHP other) {
-      if (other == null) {
-        return;
-      }
-      if (other.UserHP != 0) {
-        UserHP = other.UserHP;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            UserHP = input.ReadInt32();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 结束(一般情况下是玩家血量到底主动退出)
-  /// </summary>
-  public sealed partial class CSLeaveFight : pb::IMessage<CSLeaveFight> {
-    private static readonly pb::MessageParser<CSLeaveFight> _parser = new pb::MessageParser<CSLeaveFight>(() => new CSLeaveFight());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CSLeaveFight> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::BossServer.FightReflection.Descriptor.MessageTypes[2]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CSLeaveFight() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CSLeaveFight(CSLeaveFight other) : this() {
-      No_ = other.No_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CSLeaveFight Clone() {
-      return new CSLeaveFight(this);
-    }
-
-    /// <summary>Field number for the "_no" field.</summary>
-    public const int NoFieldNumber = 1;
-    private int No_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int No {
-      get { return No_; }
-      set {
-        No_ = value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CSLeaveFight);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CSLeaveFight other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (No != other.No) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (No != 0) hash ^= No.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (No != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(No);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (No != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(No);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CSLeaveFight other) {
-      if (other == null) {
-        return;
-      }
-      if (other.No != 0) {
-        No = other.No;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            No = input.ReadInt32();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 从连接状态转入已经登陆状态(标记自己的uid和zoneid)
-  /// </summary>
-  public sealed partial class CSEnterFight : pb::IMessage<CSEnterFight> {
-    private static readonly pb::MessageParser<CSEnterFight> _parser = new pb::MessageParser<CSEnterFight>(() => new CSEnterFight());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CSEnterFight> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::BossServer.FightReflection.Descriptor.MessageTypes[3]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CSEnterFight() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CSEnterFight(CSEnterFight other) : this() {
-      zoneid_ = other.zoneid_;
-      uid_ = other.uid_;
-      name_ = other.name_;
-      bossId_ = other.bossId_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CSEnterFight Clone() {
-      return new CSEnterFight(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Uid" field.</summary>
-    public const int UidFieldNumber = 2;
-    private string uid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Uid {
-      get { return uid_; }
-      set {
-        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "Name" field.</summary>
-    public const int NameFieldNumber = 3;
-    private string name_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Name {
-      get { return name_; }
-      set {
-        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "BossId" field.</summary>
-    public const int BossIdFieldNumber = 4;
-    private int bossId_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int BossId {
-      get { return bossId_; }
-      set {
-        bossId_ = value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CSEnterFight);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CSEnterFight other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (Uid != other.Uid) return false;
-      if (Name != other.Name) return false;
-      if (BossId != other.BossId) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
-      if (Name.Length != 0) hash ^= Name.GetHashCode();
-      if (BossId != 0) hash ^= BossId.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Uid);
-      }
-      if (Name.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(Name);
-      }
-      if (BossId != 0) {
-        output.WriteRawTag(32);
-        output.WriteInt32(BossId);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
-      }
-      if (Name.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
-      }
-      if (BossId != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BossId);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CSEnterFight other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.Uid.Length != 0) {
-        Uid = other.Uid;
-      }
-      if (other.Name.Length != 0) {
-        Name = other.Name;
-      }
-      if (other.BossId != 0) {
-        BossId = other.BossId;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            Uid = input.ReadString();
-            break;
-          }
-          case 26: {
-            Name = input.ReadString();
-            break;
-          }
-          case 32: {
-            BossId = input.ReadInt32();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 登陆完成
-  /// </summary>
-  public sealed partial class SCEnterFight : pb::IMessage<SCEnterFight> {
-    private static readonly pb::MessageParser<SCEnterFight> _parser = new pb::MessageParser<SCEnterFight>(() => new SCEnterFight());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SCEnterFight> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::BossServer.FightReflection.Descriptor.MessageTypes[4]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SCEnterFight() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SCEnterFight(SCEnterFight other) : this() {
-      bossHp_ = other.bossHp_;
-      bossMaxHp_ = other.bossMaxHp_;
-      userHP_ = other.userHP_;
-      countDown_ = other.countDown_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SCEnterFight Clone() {
-      return new SCEnterFight(this);
-    }
-
-    /// <summary>Field number for the "BossHp" field.</summary>
-    public const int BossHpFieldNumber = 1;
-    private int bossHp_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int BossHp {
-      get { return bossHp_; }
-      set {
-        bossHp_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "BossMaxHp" field.</summary>
-    public const int BossMaxHpFieldNumber = 2;
-    private int bossMaxHp_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int BossMaxHp {
-      get { return bossMaxHp_; }
-      set {
-        bossMaxHp_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "UserHP" field.</summary>
-    public const int UserHPFieldNumber = 3;
-    private int userHP_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int UserHP {
-      get { return userHP_; }
-      set {
-        userHP_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "CountDown" field.</summary>
-    public const int CountDownFieldNumber = 4;
-    private int countDown_;
-    /// <summary>
-    /// 倒计时
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CountDown {
-      get { return countDown_; }
-      set {
-        countDown_ = value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SCEnterFight);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SCEnterFight other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (BossHp != other.BossHp) return false;
-      if (BossMaxHp != other.BossMaxHp) return false;
-      if (UserHP != other.UserHP) return false;
-      if (CountDown != other.CountDown) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (BossHp != 0) hash ^= BossHp.GetHashCode();
-      if (BossMaxHp != 0) hash ^= BossMaxHp.GetHashCode();
-      if (UserHP != 0) hash ^= UserHP.GetHashCode();
-      if (CountDown != 0) hash ^= CountDown.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (BossHp != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(BossHp);
-      }
-      if (BossMaxHp != 0) {
-        output.WriteRawTag(16);
-        output.WriteInt32(BossMaxHp);
-      }
-      if (UserHP != 0) {
-        output.WriteRawTag(24);
-        output.WriteInt32(UserHP);
-      }
-      if (CountDown != 0) {
-        output.WriteRawTag(32);
-        output.WriteInt32(CountDown);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (BossHp != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BossHp);
-      }
-      if (BossMaxHp != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BossMaxHp);
-      }
-      if (UserHP != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UserHP);
-      }
-      if (CountDown != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(CountDown);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SCEnterFight other) {
-      if (other == null) {
-        return;
-      }
-      if (other.BossHp != 0) {
-        BossHp = other.BossHp;
-      }
-      if (other.BossMaxHp != 0) {
-        BossMaxHp = other.BossMaxHp;
-      }
-      if (other.UserHP != 0) {
-        UserHP = other.UserHP;
-      }
-      if (other.CountDown != 0) {
-        CountDown = other.CountDown;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            BossHp = input.ReadInt32();
-            break;
-          }
-          case 16: {
-            BossMaxHp = input.ReadInt32();
-            break;
-          }
-          case 24: {
-            UserHP = input.ReadInt32();
-            break;
-          }
-          case 32: {
-            CountDown = input.ReadInt32();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 更新状态数据
-  /// </summary>
-  public sealed partial class SCUpdateProperties : pb::IMessage<SCUpdateProperties> {
-    private static readonly pb::MessageParser<SCUpdateProperties> _parser = new pb::MessageParser<SCUpdateProperties>(() => new SCUpdateProperties());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SCUpdateProperties> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::BossServer.FightReflection.Descriptor.MessageTypes[5]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SCUpdateProperties() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SCUpdateProperties(SCUpdateProperties other) : this() {
-      bossHp_ = other.bossHp_;
-      bossMaxHp_ = other.bossMaxHp_;
-      countDown_ = other.countDown_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SCUpdateProperties Clone() {
-      return new SCUpdateProperties(this);
-    }
-
-    /// <summary>Field number for the "BossHp" field.</summary>
-    public const int BossHpFieldNumber = 1;
-    private int bossHp_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int BossHp {
-      get { return bossHp_; }
-      set {
-        bossHp_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "BossMaxHp" field.</summary>
-    public const int BossMaxHpFieldNumber = 2;
-    private int bossMaxHp_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int BossMaxHp {
-      get { return bossMaxHp_; }
-      set {
-        bossMaxHp_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "CountDown" field.</summary>
-    public const int CountDownFieldNumber = 3;
-    private int countDown_;
-    /// <summary>
-    /// 倒计时
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CountDown {
-      get { return countDown_; }
-      set {
-        countDown_ = value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SCUpdateProperties);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SCUpdateProperties other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (BossHp != other.BossHp) return false;
-      if (BossMaxHp != other.BossMaxHp) return false;
-      if (CountDown != other.CountDown) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (BossHp != 0) hash ^= BossHp.GetHashCode();
-      if (BossMaxHp != 0) hash ^= BossMaxHp.GetHashCode();
-      if (CountDown != 0) hash ^= CountDown.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (BossHp != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(BossHp);
-      }
-      if (BossMaxHp != 0) {
-        output.WriteRawTag(16);
-        output.WriteInt32(BossMaxHp);
-      }
-      if (CountDown != 0) {
-        output.WriteRawTag(24);
-        output.WriteInt32(CountDown);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (BossHp != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BossHp);
-      }
-      if (BossMaxHp != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BossMaxHp);
-      }
-      if (CountDown != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(CountDown);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SCUpdateProperties other) {
-      if (other == null) {
-        return;
-      }
-      if (other.BossHp != 0) {
-        BossHp = other.BossHp;
-      }
-      if (other.BossMaxHp != 0) {
-        BossMaxHp = other.BossMaxHp;
-      }
-      if (other.CountDown != 0) {
-        CountDown = other.CountDown;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            BossHp = input.ReadInt32();
-            break;
-          }
-          case 16: {
-            BossMaxHp = input.ReadInt32();
-            break;
-          }
-          case 24: {
-            CountDown = input.ReadInt32();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 战斗结束
-  /// </summary>
-  public sealed partial class SCGameOver : pb::IMessage<SCGameOver> {
-    private static readonly pb::MessageParser<SCGameOver> _parser = new pb::MessageParser<SCGameOver>(() => new SCGameOver());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SCGameOver> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::BossServer.FightReflection.Descriptor.MessageTypes[6]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SCGameOver() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SCGameOver(SCGameOver other) : this() {
-      bossHp_ = other.bossHp_;
-      countDown_ = other.countDown_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SCGameOver Clone() {
-      return new SCGameOver(this);
-    }
-
-    /// <summary>Field number for the "BossHp" field.</summary>
-    public const int BossHpFieldNumber = 1;
-    private int bossHp_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int BossHp {
-      get { return bossHp_; }
-      set {
-        bossHp_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "CountDown" field.</summary>
-    public const int CountDownFieldNumber = 2;
-    private int countDown_;
-    /// <summary>
-    /// 倒计时
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CountDown {
-      get { return countDown_; }
-      set {
-        countDown_ = value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SCGameOver);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SCGameOver other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (BossHp != other.BossHp) return false;
-      if (CountDown != other.CountDown) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (BossHp != 0) hash ^= BossHp.GetHashCode();
-      if (CountDown != 0) hash ^= CountDown.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (BossHp != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(BossHp);
-      }
-      if (CountDown != 0) {
-        output.WriteRawTag(16);
-        output.WriteInt32(CountDown);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (BossHp != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BossHp);
-      }
-      if (CountDown != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(CountDown);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SCGameOver other) {
-      if (other == null) {
-        return;
-      }
-      if (other.BossHp != 0) {
-        BossHp = other.BossHp;
-      }
-      if (other.CountDown != 0) {
-        CountDown = other.CountDown;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            BossHp = input.ReadInt32();
-            break;
-          }
-          case 16: {
-            CountDown = input.ReadInt32();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 0 - 204
CSserver/PBReferens/pbcs/MsgTypeEnum.cs

@@ -1,204 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: pb/MsgTypeEnum.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-/// <summary>Holder for reflection information generated from pb/MsgTypeEnum.proto</summary>
-public static partial class MsgTypeEnumReflection {
-
-  #region Descriptor
-  /// <summary>File descriptor for pb/MsgTypeEnum.proto</summary>
-  public static pbr::FileDescriptor Descriptor {
-    get { return descriptor; }
-  }
-  private static pbr::FileDescriptor descriptor;
-
-  static MsgTypeEnumReflection() {
-    byte[] descriptorData = global::System.Convert.FromBase64String(
-        string.Concat(
-          "ChRwYi9Nc2dUeXBlRW51bS5wcm90byrpBQoQZVByb3RvY2FsQ29tbWFuZBII",
-          "CgRub29wEAASDAoIQ1NfTG9naW4QARITCg9DU19SZXBvcnREYW1hZ2UQAhIQ",
-          "CgxDU19MZWF2ZVJvb20QAxITCg9DU19SZXBvcnRVc2VySHAQBBIQCgxDU19D",
-          "aGF0TG9naW4QChISCg5DU19DaGF0U2VuZE1zZxALEhQKEENTX01EX0VudGVy",
-          "TG9iYnkQFBIUChBDU19NRF9DcmVhdGVSb29tEBUSFQoRQ1NfTURfR2V0Um9v",
-          "bUxpc3QQFhITCg9DU19NRF9FbnRlclJvb20QFxITCg9DU19NRF9MZWF2ZVJv",
-          "b20QGBISCg5DU19NRF9CZWdpbkR1cBAZEg8KC0NTX0JUX0xvZ2luEB8SEAoM",
-          "Q1NfQlRfU3RhdHVzECASEgoOQ1NfQlRfUG9zaXRpb24QIRITCg9DU19CVF9C",
-          "cm9hZENhc3QQIhIUChBDU19CVF9QZW9wbGVMaXN0ECMSDAoIU0NfTG9naW4Q",
-          "ZBIXChNTQ19VcGRhdGVQcm9wZXJ0aWVzEGUSDwoLU0NfR2FtZU92ZXIQZhIQ",
-          "CgxTQ19DaGF0TG9naW4QbhIRCg1TQ19DaGF0TmV3TXNnEG8SFAoQU0NfTURf",
-          "RW50ZXJMb2JieRB4EhQKEFNDX01EX0NyZWF0ZVJvb20QeRIVChFTQ19NRF9H",
-          "ZXRSb29tTGlzdBB6EhMKD1NDX01EX0VudGVyUm9vbRB7EhMKD1NDX01EX0xl",
-          "YXZlUm9vbRB8EhIKDlNDX01EX0JlZ2luRHVwEH0SEAoLU0NfQlRfTG9naW4Q",
-          "gwESEQoMU0NfQlRfU3RhdHVzEIQBEhIKDVNDX0JUX1Bvc3Rpb24QhQESFAoP",
-          "U0NfQlRfQnJvYWRDYXN0EIYBEhUKEFNDX0JUX1Blb3BsZUxpc3QQhwESGAoT",
-          "U1NfQ3JlYXRlQmF0dGxlUm9vbRCtAhIaChVTU19DcmVhdGVCYXR0bGVSb29t",
-          "T2sQrgJCBVoDL3BiYgZwcm90bzM="));
-    descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-        new pbr::FileDescriptor[] { },
-        new pbr::GeneratedClrTypeInfo(new[] {typeof(global::eProtocalCommand), }, null));
-  }
-  #endregion
-
-}
-#region Enums
-/// <summary>
-/// 注意不要超过65535(在socket传输时只分配了2字节 -gwang)
-/// </summary>
-public enum eProtocalCommand {
-  /// <summary>
-  /// 无操作
-  /// </summary>
-  [pbr::OriginalName("noop")] Noop = 0,
-  /// <summary>
-  /// 登录()
-  /// </summary>
-  [pbr::OriginalName("CS_Login")] CsLogin = 1,
-  /// <summary>
-  /// 上报伤害输出
-  /// </summary>
-  [pbr::OriginalName("CS_ReportDamage")] CsReportDamage = 2,
-  /// <summary>
-  /// 离开房间(战斗失败结束)
-  /// </summary>
-  [pbr::OriginalName("CS_LeaveRoom")] CsLeaveRoom = 3,
-  /// <summary>
-  /// 上报玩家剩余血量
-  /// </summary>
-  [pbr::OriginalName("CS_ReportUserHp")] CsReportUserHp = 4,
-  /// <summary>
-  /// 聊天, 客户端初始化
-  /// </summary>
-  [pbr::OriginalName("CS_ChatLogin")] CsChatLogin = 10,
-  /// <summary>
-  /// 聊天, 发送消息
-  /// </summary>
-  [pbr::OriginalName("CS_ChatSendMsg")] CsChatSendMsg = 11,
-  /// <summary>
-  /// 多人副本,进入大厅(登录自己的uid)
-  /// </summary>
-  [pbr::OriginalName("CS_MD_EnterLobby")] CsMdEnterLobby = 20,
-  /// <summary>
-  /// 多人副本, 创建房间
-  /// </summary>
-  [pbr::OriginalName("CS_MD_CreateRoom")] CsMdCreateRoom = 21,
-  /// <summary>
-  /// 多人副本, 申请房间(列表)
-  /// </summary>
-  [pbr::OriginalName("CS_MD_GetRoomList")] CsMdGetRoomList = 22,
-  /// <summary>
-  /// 多人副本, 加入房间
-  /// </summary>
-  [pbr::OriginalName("CS_MD_EnterRoom")] CsMdEnterRoom = 23,
-  /// <summary>
-  /// 多人副本, 离开房间
-  /// </summary>
-  [pbr::OriginalName("CS_MD_LeaveRoom")] CsMdLeaveRoom = 24,
-  /// <summary>
-  /// 多人副本, 开始游戏(创建者)
-  /// </summary>
-  [pbr::OriginalName("CS_MD_BeginDup")] CsMdBeginDup = 25,
-  /// <summary>
-  /// 战斗服务 登录
-  /// </summary>
-  [pbr::OriginalName("CS_BT_Login")] CsBtLogin = 31,
-  /// <summary>
-  /// 战斗服务 状态同步
-  /// </summary>
-  [pbr::OriginalName("CS_BT_Status")] CsBtStatus = 32,
-  /// <summary>
-  /// 战斗服务 位置同步
-  /// </summary>
-  [pbr::OriginalName("CS_BT_Position")] CsBtPosition = 33,
-  /// <summary>
-  /// 战斗服务 广播
-  /// </summary>
-  [pbr::OriginalName("CS_BT_BroadCast")] CsBtBroadCast = 34,
-  /// <summary>
-  /// 战斗服务器 玩家列表更新
-  /// </summary>
-  [pbr::OriginalName("CS_BT_PeopleList")] CsBtPeopleList = 35,
-  /// <summary>
-  /// 登录结果
-  /// </summary>
-  [pbr::OriginalName("SC_Login")] ScLogin = 100,
-  /// <summary>
-  /// 更新数据
-  /// </summary>
-  [pbr::OriginalName("SC_UpdateProperties")] ScUpdateProperties = 101,
-  /// <summary>
-  /// 游戏结束
-  /// </summary>
-  [pbr::OriginalName("SC_GameOver")] ScGameOver = 102,
-  /// <summary>
-  /// 聊天, 登录成功
-  /// </summary>
-  [pbr::OriginalName("SC_ChatLogin")] ScChatLogin = 110,
-  /// <summary>
-  /// 聊天, 新消息
-  /// </summary>
-  [pbr::OriginalName("SC_ChatNewMsg")] ScChatNewMsg = 111,
-  /// <summary>
-  /// ---- 多人副本 ----
-  /// 多人副本, 进入大厅(登录自己的uid)
-  /// </summary>
-  [pbr::OriginalName("SC_MD_EnterLobby")] ScMdEnterLobby = 120,
-  /// <summary>
-  /// 多人副本, 创建房间
-  /// </summary>
-  [pbr::OriginalName("SC_MD_CreateRoom")] ScMdCreateRoom = 121,
-  /// <summary>
-  /// 多人副本, 申请房间(列表)
-  /// </summary>
-  [pbr::OriginalName("SC_MD_GetRoomList")] ScMdGetRoomList = 122,
-  /// <summary>
-  /// 多人副本, 加入房间
-  /// </summary>
-  [pbr::OriginalName("SC_MD_EnterRoom")] ScMdEnterRoom = 123,
-  /// <summary>
-  /// 多人副本, 离开房间
-  /// </summary>
-  [pbr::OriginalName("SC_MD_LeaveRoom")] ScMdLeaveRoom = 124,
-  /// <summary>
-  /// 多人副本, 开始游戏(创建者)
-  /// </summary>
-  [pbr::OriginalName("SC_MD_BeginDup")] ScMdBeginDup = 125,
-  /// <summary>
-  /// 战斗服务 登录通知
-  /// </summary>
-  [pbr::OriginalName("SC_BT_Login")] ScBtLogin = 131,
-  /// <summary>
-  /// 战斗服务 状态同步
-  /// </summary>
-  [pbr::OriginalName("SC_BT_Status")] ScBtStatus = 132,
-  /// <summary>
-  /// 战斗服务 位置同步
-  /// </summary>
-  [pbr::OriginalName("SC_BT_Postion")] ScBtPostion = 133,
-  /// <summary>
-  /// 战斗服务 广播
-  /// </summary>
-  [pbr::OriginalName("SC_BT_BroadCast")] ScBtBroadCast = 134,
-  /// <summary>
-  /// 战斗服务 玩家列表更新
-  /// </summary>
-  [pbr::OriginalName("SC_BT_PeopleList")] ScBtPeopleList = 135,
-  /// <summary>
-  ///////////////   S - S    //////////////////
-  ///创建战斗房间
-  /// </summary>
-  [pbr::OriginalName("SS_CreateBattleRoom")] SsCreateBattleRoom = 301,
-  /// <summary>
-  /// 创建房间OK
-  /// </summary>
-  [pbr::OriginalName("SS_CreateBattleRoomOk")] SsCreateBattleRoomOk = 302,
-}
-
-#endregion
-
-
-#endregion Designer generated code

+ 0 - 4775
CSserver/PBReferens/pbcs/MultiDup.cs

@@ -1,4775 +0,0 @@
-// Generated by the protocol buffer compiler.  DO NOT EDIT!
-// source: pb/MultiDup.proto
-#pragma warning disable 1591, 0612, 3021
-#region Designer generated code
-
-using pb = global::Google.Protobuf;
-using pbc = global::Google.Protobuf.Collections;
-using pbr = global::Google.Protobuf.Reflection;
-using scg = global::System.Collections.Generic;
-namespace MultiDup {
-
-  /// <summary>Holder for reflection information generated from pb/MultiDup.proto</summary>
-  public static partial class MultiDupReflection {
-
-    #region Descriptor
-    /// <summary>File descriptor for pb/MultiDup.proto</summary>
-    public static pbr::FileDescriptor Descriptor {
-      get { return descriptor; }
-    }
-    private static pbr::FileDescriptor descriptor;
-
-    static MultiDupReflection() {
-      byte[] descriptorData = global::System.Convert.FromBase64String(
-          string.Concat(
-            "ChFwYi9NdWx0aUR1cC5wcm90bxIITXVsdGlEdXAiLwoQQ1NfTURfRW50ZXJM",
-            "b2JieRIOCgZab25laWQYASABKAUSCwoDVWlkGAIgASgJIj4KEENTX01EX0Ny",
-            "ZWF0ZVJvb20SDgoGWm9uZWlkGAEgASgFEgsKA1VpZBgCIAEoCRINCgVNYXBp",
-            "ZBgDIAEoBSIwChFDU19NRF9HZXRSb29tTGlzdBIOCgZab25laWQYASABKAUS",
-            "CwoDVWlkGAIgASgJIj4KD0NTX01EX0VudGVyUm9vbRIOCgZab25laWQYASAB",
-            "KAUSCwoDVWlkGAIgASgJEg4KBlJvb21JZBgDIAEoBSIuCg9DU19NRF9MZWF2",
-            "ZVJvb20SDgoGWm9uZWlkGAEgASgFEgsKA1VpZBgCIAEoCSItCg5DU19NRF9C",
-            "ZWdpbkR1cBIOCgZab25laWQYASABKAUSCwoDVWlkGAIgASgJIjcKC0NTX0JU",
-            "X0xvZ2luEg4KBlpvbmVpZBgBIAEoBRILCgNVaWQYAiABKAkSCwoDTXNnGAMg",
-            "ASgJIi8KEENTX0JUX1Blb3BsZUxpc3QSDgoGWm9uZWlkGAEgASgFEgsKA1Vp",
-            "ZBgCIAEoCSJWCgxDU19CVF9TdGF0dXMSDgoGWm9uZWlkGAEgASgFEhEKCVNl",
-            "bmRlclVpZBgCIAEoCRIUCgxQcm9wZXJ0eU5hbWUYAyABKAkSDQoFVmFsdWUY",
-            "BCABKAkiVAoOQ1NfQlRfUG9zaXRpb24SDgoGWm9uZWlkGAEgASgFEhEKCVNl",
-            "bmRlclVpZBgCIAEoCRIJCgFYGAMgASgCEgkKAVkYBCABKAISCQoBWhgFIAEo",
-            "AiJBCg9DU19CVF9Ccm9hZENhc3QSDgoGWm9uZWlkGAEgASgFEhEKCVNlbmRl",
-            "clVpZBgCIAEoCRILCgNNc2cYAyABKAkiPAoKQ1NfQlRfT3ZlchIOCgZab25l",
-            "aWQYASABKAUSEQoJU2VuZGVyVWlkGAIgASgJEgsKA01zZxgDIAEoCSISChBT",
-            "Q19NRF9FbnRlckxvYmJ5Ik4KEFNDX01EX0NyZWF0ZVJvb20SDgoGWm9uZWlk",
-            "GAEgASgFEgsKA1VpZBgCIAEoCRINCgVNYXBpZBgDIAEoBRIOCgZSb29tSWQY",
-            "BCABKAUiuwEKEVNDX01EX0dldFJvb21MaXN0EjcKCVJvb21JbmZvcxgBIAMo",
-            "CzIkLk11bHRpRHVwLlNDX01EX0dldFJvb21MaXN0LlJvb21JbmZvGm0KCFJv",
-            "b21JbmZvEg4KBlJvb21JZBgBIAEoBRINCgVNYXBpZBgCIAEoBRISCgpQbGF5",
-            "ZXJVaWRzGAMgAygJEhQKDEJhdHRsZXNlcnZlchgEIAEoCRIYChBCYXR0bGVT",
-            "ZXJ2ZXJQb3J0GAUgASgFImsKD1NDX01EX0VudGVyUm9vbRIOCgZab25laWQY",
-            "ASABKAUSCwoDVWlkGAIgASgJEg0KBU1hcGlkGAMgASgFEgoKAklwGAQgASgJ",
-            "EgwKBFBvcnQYBSABKAUSEgoKUGxheWVyVWlkcxgGIAMoCSIuCg9TQ19NRF9M",
-            "ZWF2ZVJvb20SDgoGWm9uZWlkGAEgASgFEgsKA1VpZBgCIAEoCSJPCg5TQ19N",
-            "RF9CZWdpbkR1cBIUCgxCYXR0bGVzZXJ2ZXIYASABKAkSGAoQQmF0dGxlU2Vy",
-            "dmVyUG9ydBgCIAEoBRINCgVNYXBpZBgDIAEoBSI3CgtTQ19CVF9Mb2dpbhIO",
-            "CgZab25laWQYASABKAUSCwoDVWlkGAIgASgJEgsKA01zZxgDIAEoCSJIChBT",
-            "Q19CVF9QZW9wbGVMaXN0Eg4KBlpvbmVpZBgBIAEoBRIQCghOZXdlclVpZBgC",
-            "IAEoCRISCgpQbGF5ZXJVaWRzGAMgAygJIlYKDFNDX0JUX1N0YXR1cxIOCgZa",
-            "b25laWQYASABKAUSEQoJU2VuZGVyVWlkGAIgASgJEhQKDFByb3BlcnR5TmFt",
-            "ZRgDIAEoCRINCgVWYWx1ZRgEIAEoCSJUCg5TQ19CVF9Qb3NpdGlvbhIOCgZa",
-            "b25laWQYASABKAUSEQoJU2VuZGVyVWlkGAIgASgJEgkKAVgYAyABKAISCQoB",
-            "WRgEIAEoAhIJCgFaGAUgASgCIkEKD1NDX0JUX0Jyb2FkQ2FzdBIOCgZab25l",
-            "aWQYASABKAUSEQoJU2VuZGVyVWlkGAIgASgJEgsKA01zZxgDIAEoCSI8CgpT",
-            "Q19CVF9PdmVyEg4KBlpvbmVpZBgBIAEoBRIRCglTZW5kZXJVaWQYAiABKAkS",
-            "CwoDTXNnGAMgASgJIjsKFVNTX0NyZWF0ZUJhdHRsZVNlcnZlchIOCgZSb29t",
-            "SWQYASABKAUSEgoKUGxheWVyVWlkcxgCIAMoCSIZChdTU19DcmVhdGVCYXR0",
-            "bGVTZXJ2ZXJPS0INWgtwYi9NdWx0aUR1cGIGcHJvdG8z"));
-      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
-          new pbr::FileDescriptor[] { },
-          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.CS_MD_EnterLobby), global::MultiDup.CS_MD_EnterLobby.Parser, new[]{ "Zoneid", "Uid" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.CS_MD_CreateRoom), global::MultiDup.CS_MD_CreateRoom.Parser, new[]{ "Zoneid", "Uid", "Mapid" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.CS_MD_GetRoomList), global::MultiDup.CS_MD_GetRoomList.Parser, new[]{ "Zoneid", "Uid" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.CS_MD_EnterRoom), global::MultiDup.CS_MD_EnterRoom.Parser, new[]{ "Zoneid", "Uid", "RoomId" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.CS_MD_LeaveRoom), global::MultiDup.CS_MD_LeaveRoom.Parser, new[]{ "Zoneid", "Uid" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.CS_MD_BeginDup), global::MultiDup.CS_MD_BeginDup.Parser, new[]{ "Zoneid", "Uid" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.CS_BT_Login), global::MultiDup.CS_BT_Login.Parser, new[]{ "Zoneid", "Uid", "Msg" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.CS_BT_PeopleList), global::MultiDup.CS_BT_PeopleList.Parser, new[]{ "Zoneid", "Uid" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.CS_BT_Status), global::MultiDup.CS_BT_Status.Parser, new[]{ "Zoneid", "SenderUid", "PropertyName", "Value" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.CS_BT_Position), global::MultiDup.CS_BT_Position.Parser, new[]{ "Zoneid", "SenderUid", "X", "Y", "Z" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.CS_BT_BroadCast), global::MultiDup.CS_BT_BroadCast.Parser, new[]{ "Zoneid", "SenderUid", "Msg" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.CS_BT_Over), global::MultiDup.CS_BT_Over.Parser, new[]{ "Zoneid", "SenderUid", "Msg" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SC_MD_EnterLobby), global::MultiDup.SC_MD_EnterLobby.Parser, null, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SC_MD_CreateRoom), global::MultiDup.SC_MD_CreateRoom.Parser, new[]{ "Zoneid", "Uid", "Mapid", "RoomId" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SC_MD_GetRoomList), global::MultiDup.SC_MD_GetRoomList.Parser, new[]{ "RoomInfos" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SC_MD_GetRoomList.Types.RoomInfo), global::MultiDup.SC_MD_GetRoomList.Types.RoomInfo.Parser, new[]{ "RoomId", "Mapid", "PlayerUids", "Battleserver", "BattleServerPort" }, null, null, null)}),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SC_MD_EnterRoom), global::MultiDup.SC_MD_EnterRoom.Parser, new[]{ "Zoneid", "Uid", "Mapid", "Ip", "Port", "PlayerUids" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SC_MD_LeaveRoom), global::MultiDup.SC_MD_LeaveRoom.Parser, new[]{ "Zoneid", "Uid" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SC_MD_BeginDup), global::MultiDup.SC_MD_BeginDup.Parser, new[]{ "Battleserver", "BattleServerPort", "Mapid" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SC_BT_Login), global::MultiDup.SC_BT_Login.Parser, new[]{ "Zoneid", "Uid", "Msg" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SC_BT_PeopleList), global::MultiDup.SC_BT_PeopleList.Parser, new[]{ "Zoneid", "NewerUid", "PlayerUids" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SC_BT_Status), global::MultiDup.SC_BT_Status.Parser, new[]{ "Zoneid", "SenderUid", "PropertyName", "Value" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SC_BT_Position), global::MultiDup.SC_BT_Position.Parser, new[]{ "Zoneid", "SenderUid", "X", "Y", "Z" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SC_BT_BroadCast), global::MultiDup.SC_BT_BroadCast.Parser, new[]{ "Zoneid", "SenderUid", "Msg" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SC_BT_Over), global::MultiDup.SC_BT_Over.Parser, new[]{ "Zoneid", "SenderUid", "Msg" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SS_CreateBattleServer), global::MultiDup.SS_CreateBattleServer.Parser, new[]{ "RoomId", "PlayerUids" }, null, null, null),
-            new pbr::GeneratedClrTypeInfo(typeof(global::MultiDup.SS_CreateBattleServerOK), global::MultiDup.SS_CreateBattleServerOK.Parser, null, null, null, null)
-          }));
-    }
-    #endregion
-
-  }
-  #region Messages
-  /// <summary>
-  ///
-  /// 进入大厅(注册下自己的uid)
-  /// </summary>
-  public sealed partial class CS_MD_EnterLobby : pb::IMessage<CS_MD_EnterLobby> {
-    private static readonly pb::MessageParser<CS_MD_EnterLobby> _parser = new pb::MessageParser<CS_MD_EnterLobby>(() => new CS_MD_EnterLobby());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CS_MD_EnterLobby> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[0]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_EnterLobby() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_EnterLobby(CS_MD_EnterLobby other) : this() {
-      zoneid_ = other.zoneid_;
-      uid_ = other.uid_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_EnterLobby Clone() {
-      return new CS_MD_EnterLobby(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Uid" field.</summary>
-    public const int UidFieldNumber = 2;
-    private string uid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Uid {
-      get { return uid_; }
-      set {
-        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CS_MD_EnterLobby);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CS_MD_EnterLobby other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (Uid != other.Uid) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Uid);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CS_MD_EnterLobby other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.Uid.Length != 0) {
-        Uid = other.Uid;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            Uid = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 多人副本, 创建房间
-  /// </summary>
-  public sealed partial class CS_MD_CreateRoom : pb::IMessage<CS_MD_CreateRoom> {
-    private static readonly pb::MessageParser<CS_MD_CreateRoom> _parser = new pb::MessageParser<CS_MD_CreateRoom>(() => new CS_MD_CreateRoom());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CS_MD_CreateRoom> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[1]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_CreateRoom() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_CreateRoom(CS_MD_CreateRoom other) : this() {
-      zoneid_ = other.zoneid_;
-      uid_ = other.uid_;
-      mapid_ = other.mapid_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_CreateRoom Clone() {
-      return new CS_MD_CreateRoom(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    /// <summary>
-    /// zoneid
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Uid" field.</summary>
-    public const int UidFieldNumber = 2;
-    private string uid_ = "";
-    /// <summary>
-    /// 玩家id
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Uid {
-      get { return uid_; }
-      set {
-        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "Mapid" field.</summary>
-    public const int MapidFieldNumber = 3;
-    private int mapid_;
-    /// <summary>
-    /// 地图id
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Mapid {
-      get { return mapid_; }
-      set {
-        mapid_ = value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CS_MD_CreateRoom);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CS_MD_CreateRoom other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (Uid != other.Uid) return false;
-      if (Mapid != other.Mapid) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
-      if (Mapid != 0) hash ^= Mapid.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Uid);
-      }
-      if (Mapid != 0) {
-        output.WriteRawTag(24);
-        output.WriteInt32(Mapid);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
-      }
-      if (Mapid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Mapid);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CS_MD_CreateRoom other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.Uid.Length != 0) {
-        Uid = other.Uid;
-      }
-      if (other.Mapid != 0) {
-        Mapid = other.Mapid;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            Uid = input.ReadString();
-            break;
-          }
-          case 24: {
-            Mapid = input.ReadInt32();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 多人副本, 申请房间(列表)
-  /// </summary>
-  public sealed partial class CS_MD_GetRoomList : pb::IMessage<CS_MD_GetRoomList> {
-    private static readonly pb::MessageParser<CS_MD_GetRoomList> _parser = new pb::MessageParser<CS_MD_GetRoomList>(() => new CS_MD_GetRoomList());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CS_MD_GetRoomList> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[2]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_GetRoomList() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_GetRoomList(CS_MD_GetRoomList other) : this() {
-      zoneid_ = other.zoneid_;
-      uid_ = other.uid_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_GetRoomList Clone() {
-      return new CS_MD_GetRoomList(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Uid" field.</summary>
-    public const int UidFieldNumber = 2;
-    private string uid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Uid {
-      get { return uid_; }
-      set {
-        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CS_MD_GetRoomList);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CS_MD_GetRoomList other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (Uid != other.Uid) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Uid);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CS_MD_GetRoomList other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.Uid.Length != 0) {
-        Uid = other.Uid;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            Uid = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 多人副本, 加入房间
-  /// </summary>
-  public sealed partial class CS_MD_EnterRoom : pb::IMessage<CS_MD_EnterRoom> {
-    private static readonly pb::MessageParser<CS_MD_EnterRoom> _parser = new pb::MessageParser<CS_MD_EnterRoom>(() => new CS_MD_EnterRoom());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CS_MD_EnterRoom> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[3]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_EnterRoom() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_EnterRoom(CS_MD_EnterRoom other) : this() {
-      zoneid_ = other.zoneid_;
-      uid_ = other.uid_;
-      roomId_ = other.roomId_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_EnterRoom Clone() {
-      return new CS_MD_EnterRoom(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Uid" field.</summary>
-    public const int UidFieldNumber = 2;
-    private string uid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Uid {
-      get { return uid_; }
-      set {
-        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "RoomId" field.</summary>
-    public const int RoomIdFieldNumber = 3;
-    private int roomId_;
-    /// <summary>
-    /// 房间id
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int RoomId {
-      get { return roomId_; }
-      set {
-        roomId_ = value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CS_MD_EnterRoom);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CS_MD_EnterRoom other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (Uid != other.Uid) return false;
-      if (RoomId != other.RoomId) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
-      if (RoomId != 0) hash ^= RoomId.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Uid);
-      }
-      if (RoomId != 0) {
-        output.WriteRawTag(24);
-        output.WriteInt32(RoomId);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
-      }
-      if (RoomId != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RoomId);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CS_MD_EnterRoom other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.Uid.Length != 0) {
-        Uid = other.Uid;
-      }
-      if (other.RoomId != 0) {
-        RoomId = other.RoomId;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            Uid = input.ReadString();
-            break;
-          }
-          case 24: {
-            RoomId = input.ReadInt32();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 多人副本, 离开房间
-  /// </summary>
-  public sealed partial class CS_MD_LeaveRoom : pb::IMessage<CS_MD_LeaveRoom> {
-    private static readonly pb::MessageParser<CS_MD_LeaveRoom> _parser = new pb::MessageParser<CS_MD_LeaveRoom>(() => new CS_MD_LeaveRoom());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CS_MD_LeaveRoom> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[4]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_LeaveRoom() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_LeaveRoom(CS_MD_LeaveRoom other) : this() {
-      zoneid_ = other.zoneid_;
-      uid_ = other.uid_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_LeaveRoom Clone() {
-      return new CS_MD_LeaveRoom(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Uid" field.</summary>
-    public const int UidFieldNumber = 2;
-    private string uid_ = "";
-    /// <summary>
-    ///int32 RoomId=3;    // 房间id (理论上已经处于房间中不需要此字段)
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Uid {
-      get { return uid_; }
-      set {
-        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CS_MD_LeaveRoom);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CS_MD_LeaveRoom other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (Uid != other.Uid) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Uid);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CS_MD_LeaveRoom other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.Uid.Length != 0) {
-        Uid = other.Uid;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            Uid = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 多人副本, 开始游戏(创建者)
-  /// </summary>
-  public sealed partial class CS_MD_BeginDup : pb::IMessage<CS_MD_BeginDup> {
-    private static readonly pb::MessageParser<CS_MD_BeginDup> _parser = new pb::MessageParser<CS_MD_BeginDup>(() => new CS_MD_BeginDup());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CS_MD_BeginDup> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[5]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_BeginDup() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_BeginDup(CS_MD_BeginDup other) : this() {
-      zoneid_ = other.zoneid_;
-      uid_ = other.uid_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_MD_BeginDup Clone() {
-      return new CS_MD_BeginDup(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Uid" field.</summary>
-    public const int UidFieldNumber = 2;
-    private string uid_ = "";
-    /// <summary>
-    ///int32 RoomId=3;    // 房间id (理论上已经处于房间中不需要此字段)
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Uid {
-      get { return uid_; }
-      set {
-        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CS_MD_BeginDup);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CS_MD_BeginDup other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (Uid != other.Uid) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Uid);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CS_MD_BeginDup other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.Uid.Length != 0) {
-        Uid = other.Uid;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            Uid = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  public sealed partial class CS_BT_Login : pb::IMessage<CS_BT_Login> {
-    private static readonly pb::MessageParser<CS_BT_Login> _parser = new pb::MessageParser<CS_BT_Login>(() => new CS_BT_Login());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CS_BT_Login> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[6]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_Login() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_Login(CS_BT_Login other) : this() {
-      zoneid_ = other.zoneid_;
-      uid_ = other.uid_;
-      msg_ = other.msg_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_Login Clone() {
-      return new CS_BT_Login(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Uid" field.</summary>
-    public const int UidFieldNumber = 2;
-    private string uid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Uid {
-      get { return uid_; }
-      set {
-        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "Msg" field.</summary>
-    public const int MsgFieldNumber = 3;
-    private string msg_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Msg {
-      get { return msg_; }
-      set {
-        msg_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CS_BT_Login);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CS_BT_Login other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (Uid != other.Uid) return false;
-      if (Msg != other.Msg) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
-      if (Msg.Length != 0) hash ^= Msg.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Uid);
-      }
-      if (Msg.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(Msg);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
-      }
-      if (Msg.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Msg);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CS_BT_Login other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.Uid.Length != 0) {
-        Uid = other.Uid;
-      }
-      if (other.Msg.Length != 0) {
-        Msg = other.Msg;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            Uid = input.ReadString();
-            break;
-          }
-          case 26: {
-            Msg = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 查询组队列表
-  /// </summary>
-  public sealed partial class CS_BT_PeopleList : pb::IMessage<CS_BT_PeopleList> {
-    private static readonly pb::MessageParser<CS_BT_PeopleList> _parser = new pb::MessageParser<CS_BT_PeopleList>(() => new CS_BT_PeopleList());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CS_BT_PeopleList> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[7]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_PeopleList() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_PeopleList(CS_BT_PeopleList other) : this() {
-      zoneid_ = other.zoneid_;
-      uid_ = other.uid_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_PeopleList Clone() {
-      return new CS_BT_PeopleList(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Uid" field.</summary>
-    public const int UidFieldNumber = 2;
-    private string uid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Uid {
-      get { return uid_; }
-      set {
-        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CS_BT_PeopleList);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CS_BT_PeopleList other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (Uid != other.Uid) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Uid);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CS_BT_PeopleList other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.Uid.Length != 0) {
-        Uid = other.Uid;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            Uid = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  public sealed partial class CS_BT_Status : pb::IMessage<CS_BT_Status> {
-    private static readonly pb::MessageParser<CS_BT_Status> _parser = new pb::MessageParser<CS_BT_Status>(() => new CS_BT_Status());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CS_BT_Status> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[8]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_Status() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_Status(CS_BT_Status other) : this() {
-      zoneid_ = other.zoneid_;
-      senderUid_ = other.senderUid_;
-      propertyName_ = other.propertyName_;
-      value_ = other.value_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_Status Clone() {
-      return new CS_BT_Status(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "SenderUid" field.</summary>
-    public const int SenderUidFieldNumber = 2;
-    private string senderUid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string SenderUid {
-      get { return senderUid_; }
-      set {
-        senderUid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "PropertyName" field.</summary>
-    public const int PropertyNameFieldNumber = 3;
-    private string propertyName_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string PropertyName {
-      get { return propertyName_; }
-      set {
-        propertyName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "Value" field.</summary>
-    public const int ValueFieldNumber = 4;
-    private string value_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Value {
-      get { return value_; }
-      set {
-        value_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CS_BT_Status);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CS_BT_Status other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (SenderUid != other.SenderUid) return false;
-      if (PropertyName != other.PropertyName) return false;
-      if (Value != other.Value) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (SenderUid.Length != 0) hash ^= SenderUid.GetHashCode();
-      if (PropertyName.Length != 0) hash ^= PropertyName.GetHashCode();
-      if (Value.Length != 0) hash ^= Value.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(SenderUid);
-      }
-      if (PropertyName.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(PropertyName);
-      }
-      if (Value.Length != 0) {
-        output.WriteRawTag(34);
-        output.WriteString(Value);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(SenderUid);
-      }
-      if (PropertyName.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(PropertyName);
-      }
-      if (Value.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Value);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CS_BT_Status other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.SenderUid.Length != 0) {
-        SenderUid = other.SenderUid;
-      }
-      if (other.PropertyName.Length != 0) {
-        PropertyName = other.PropertyName;
-      }
-      if (other.Value.Length != 0) {
-        Value = other.Value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            SenderUid = input.ReadString();
-            break;
-          }
-          case 26: {
-            PropertyName = input.ReadString();
-            break;
-          }
-          case 34: {
-            Value = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  public sealed partial class CS_BT_Position : pb::IMessage<CS_BT_Position> {
-    private static readonly pb::MessageParser<CS_BT_Position> _parser = new pb::MessageParser<CS_BT_Position>(() => new CS_BT_Position());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CS_BT_Position> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[9]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_Position() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_Position(CS_BT_Position other) : this() {
-      zoneid_ = other.zoneid_;
-      senderUid_ = other.senderUid_;
-      x_ = other.x_;
-      y_ = other.y_;
-      z_ = other.z_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_Position Clone() {
-      return new CS_BT_Position(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "SenderUid" field.</summary>
-    public const int SenderUidFieldNumber = 2;
-    private string senderUid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string SenderUid {
-      get { return senderUid_; }
-      set {
-        senderUid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "X" field.</summary>
-    public const int XFieldNumber = 3;
-    private float x_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public float X {
-      get { return x_; }
-      set {
-        x_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Y" field.</summary>
-    public const int YFieldNumber = 4;
-    private float y_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public float Y {
-      get { return y_; }
-      set {
-        y_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Z" field.</summary>
-    public const int ZFieldNumber = 5;
-    private float z_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public float Z {
-      get { return z_; }
-      set {
-        z_ = value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CS_BT_Position);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CS_BT_Position other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (SenderUid != other.SenderUid) return false;
-      if (X != other.X) return false;
-      if (Y != other.Y) return false;
-      if (Z != other.Z) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (SenderUid.Length != 0) hash ^= SenderUid.GetHashCode();
-      if (X != 0F) hash ^= X.GetHashCode();
-      if (Y != 0F) hash ^= Y.GetHashCode();
-      if (Z != 0F) hash ^= Z.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(SenderUid);
-      }
-      if (X != 0F) {
-        output.WriteRawTag(29);
-        output.WriteFloat(X);
-      }
-      if (Y != 0F) {
-        output.WriteRawTag(37);
-        output.WriteFloat(Y);
-      }
-      if (Z != 0F) {
-        output.WriteRawTag(45);
-        output.WriteFloat(Z);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(SenderUid);
-      }
-      if (X != 0F) {
-        size += 1 + 4;
-      }
-      if (Y != 0F) {
-        size += 1 + 4;
-      }
-      if (Z != 0F) {
-        size += 1 + 4;
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CS_BT_Position other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.SenderUid.Length != 0) {
-        SenderUid = other.SenderUid;
-      }
-      if (other.X != 0F) {
-        X = other.X;
-      }
-      if (other.Y != 0F) {
-        Y = other.Y;
-      }
-      if (other.Z != 0F) {
-        Z = other.Z;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            SenderUid = input.ReadString();
-            break;
-          }
-          case 29: {
-            X = input.ReadFloat();
-            break;
-          }
-          case 37: {
-            Y = input.ReadFloat();
-            break;
-          }
-          case 45: {
-            Z = input.ReadFloat();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 战斗服务, 广播
-  /// </summary>
-  public sealed partial class CS_BT_BroadCast : pb::IMessage<CS_BT_BroadCast> {
-    private static readonly pb::MessageParser<CS_BT_BroadCast> _parser = new pb::MessageParser<CS_BT_BroadCast>(() => new CS_BT_BroadCast());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CS_BT_BroadCast> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[10]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_BroadCast() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_BroadCast(CS_BT_BroadCast other) : this() {
-      zoneid_ = other.zoneid_;
-      senderUid_ = other.senderUid_;
-      msg_ = other.msg_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_BroadCast Clone() {
-      return new CS_BT_BroadCast(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "SenderUid" field.</summary>
-    public const int SenderUidFieldNumber = 2;
-    private string senderUid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string SenderUid {
-      get { return senderUid_; }
-      set {
-        senderUid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "Msg" field.</summary>
-    public const int MsgFieldNumber = 3;
-    private string msg_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Msg {
-      get { return msg_; }
-      set {
-        msg_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CS_BT_BroadCast);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CS_BT_BroadCast other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (SenderUid != other.SenderUid) return false;
-      if (Msg != other.Msg) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (SenderUid.Length != 0) hash ^= SenderUid.GetHashCode();
-      if (Msg.Length != 0) hash ^= Msg.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(SenderUid);
-      }
-      if (Msg.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(Msg);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(SenderUid);
-      }
-      if (Msg.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Msg);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CS_BT_BroadCast other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.SenderUid.Length != 0) {
-        SenderUid = other.SenderUid;
-      }
-      if (other.Msg.Length != 0) {
-        Msg = other.Msg;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            SenderUid = input.ReadString();
-            break;
-          }
-          case 26: {
-            Msg = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  public sealed partial class CS_BT_Over : pb::IMessage<CS_BT_Over> {
-    private static readonly pb::MessageParser<CS_BT_Over> _parser = new pb::MessageParser<CS_BT_Over>(() => new CS_BT_Over());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<CS_BT_Over> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[11]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_Over() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_Over(CS_BT_Over other) : this() {
-      zoneid_ = other.zoneid_;
-      senderUid_ = other.senderUid_;
-      msg_ = other.msg_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public CS_BT_Over Clone() {
-      return new CS_BT_Over(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "SenderUid" field.</summary>
-    public const int SenderUidFieldNumber = 2;
-    private string senderUid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string SenderUid {
-      get { return senderUid_; }
-      set {
-        senderUid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "Msg" field.</summary>
-    public const int MsgFieldNumber = 3;
-    private string msg_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Msg {
-      get { return msg_; }
-      set {
-        msg_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as CS_BT_Over);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(CS_BT_Over other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (SenderUid != other.SenderUid) return false;
-      if (Msg != other.Msg) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (SenderUid.Length != 0) hash ^= SenderUid.GetHashCode();
-      if (Msg.Length != 0) hash ^= Msg.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(SenderUid);
-      }
-      if (Msg.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(Msg);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(SenderUid);
-      }
-      if (Msg.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Msg);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(CS_BT_Over other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.SenderUid.Length != 0) {
-        SenderUid = other.SenderUid;
-      }
-      if (other.Msg.Length != 0) {
-        Msg = other.Msg;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            SenderUid = input.ReadString();
-            break;
-          }
-          case 26: {
-            Msg = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 
-  /// 加入房间成功
-  /// </summary>
-  public sealed partial class SC_MD_EnterLobby : pb::IMessage<SC_MD_EnterLobby> {
-    private static readonly pb::MessageParser<SC_MD_EnterLobby> _parser = new pb::MessageParser<SC_MD_EnterLobby>(() => new SC_MD_EnterLobby());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SC_MD_EnterLobby> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[12]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_EnterLobby() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_EnterLobby(SC_MD_EnterLobby other) : this() {
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_EnterLobby Clone() {
-      return new SC_MD_EnterLobby(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SC_MD_EnterLobby);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SC_MD_EnterLobby other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SC_MD_EnterLobby other) {
-      if (other == null) {
-        return;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 多人副本, 创建房间
-  /// </summary>
-  public sealed partial class SC_MD_CreateRoom : pb::IMessage<SC_MD_CreateRoom> {
-    private static readonly pb::MessageParser<SC_MD_CreateRoom> _parser = new pb::MessageParser<SC_MD_CreateRoom>(() => new SC_MD_CreateRoom());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SC_MD_CreateRoom> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[13]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_CreateRoom() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_CreateRoom(SC_MD_CreateRoom other) : this() {
-      zoneid_ = other.zoneid_;
-      uid_ = other.uid_;
-      mapid_ = other.mapid_;
-      roomId_ = other.roomId_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_CreateRoom Clone() {
-      return new SC_MD_CreateRoom(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Uid" field.</summary>
-    public const int UidFieldNumber = 2;
-    private string uid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Uid {
-      get { return uid_; }
-      set {
-        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "Mapid" field.</summary>
-    public const int MapidFieldNumber = 3;
-    private int mapid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Mapid {
-      get { return mapid_; }
-      set {
-        mapid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "RoomId" field.</summary>
-    public const int RoomIdFieldNumber = 4;
-    private int roomId_;
-    /// <summary>
-    /// 房间id (服务端分配)
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int RoomId {
-      get { return roomId_; }
-      set {
-        roomId_ = value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SC_MD_CreateRoom);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SC_MD_CreateRoom other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (Uid != other.Uid) return false;
-      if (Mapid != other.Mapid) return false;
-      if (RoomId != other.RoomId) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
-      if (Mapid != 0) hash ^= Mapid.GetHashCode();
-      if (RoomId != 0) hash ^= RoomId.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Uid);
-      }
-      if (Mapid != 0) {
-        output.WriteRawTag(24);
-        output.WriteInt32(Mapid);
-      }
-      if (RoomId != 0) {
-        output.WriteRawTag(32);
-        output.WriteInt32(RoomId);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
-      }
-      if (Mapid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Mapid);
-      }
-      if (RoomId != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RoomId);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SC_MD_CreateRoom other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.Uid.Length != 0) {
-        Uid = other.Uid;
-      }
-      if (other.Mapid != 0) {
-        Mapid = other.Mapid;
-      }
-      if (other.RoomId != 0) {
-        RoomId = other.RoomId;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            Uid = input.ReadString();
-            break;
-          }
-          case 24: {
-            Mapid = input.ReadInt32();
-            break;
-          }
-          case 32: {
-            RoomId = input.ReadInt32();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 多人副本, 申请房间(列表)
-  /// </summary>
-  public sealed partial class SC_MD_GetRoomList : pb::IMessage<SC_MD_GetRoomList> {
-    private static readonly pb::MessageParser<SC_MD_GetRoomList> _parser = new pb::MessageParser<SC_MD_GetRoomList>(() => new SC_MD_GetRoomList());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SC_MD_GetRoomList> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[14]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_GetRoomList() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_GetRoomList(SC_MD_GetRoomList other) : this() {
-      roomInfos_ = other.roomInfos_.Clone();
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_GetRoomList Clone() {
-      return new SC_MD_GetRoomList(this);
-    }
-
-    /// <summary>Field number for the "RoomInfos" field.</summary>
-    public const int RoomInfosFieldNumber = 1;
-    private static readonly pb::FieldCodec<global::MultiDup.SC_MD_GetRoomList.Types.RoomInfo> _repeated_roomInfos_codec
-        = pb::FieldCodec.ForMessage(10, global::MultiDup.SC_MD_GetRoomList.Types.RoomInfo.Parser);
-    private readonly pbc::RepeatedField<global::MultiDup.SC_MD_GetRoomList.Types.RoomInfo> roomInfos_ = new pbc::RepeatedField<global::MultiDup.SC_MD_GetRoomList.Types.RoomInfo>();
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pbc::RepeatedField<global::MultiDup.SC_MD_GetRoomList.Types.RoomInfo> RoomInfos {
-      get { return roomInfos_; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SC_MD_GetRoomList);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SC_MD_GetRoomList other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if(!roomInfos_.Equals(other.roomInfos_)) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      hash ^= roomInfos_.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      roomInfos_.WriteTo(output, _repeated_roomInfos_codec);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      size += roomInfos_.CalculateSize(_repeated_roomInfos_codec);
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SC_MD_GetRoomList other) {
-      if (other == null) {
-        return;
-      }
-      roomInfos_.Add(other.roomInfos_);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 10: {
-            roomInfos_.AddEntriesFrom(input, _repeated_roomInfos_codec);
-            break;
-          }
-        }
-      }
-    }
-
-    #region Nested types
-    /// <summary>Container for nested types declared in the SC_MD_GetRoomList message type.</summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static partial class Types {
-      public sealed partial class RoomInfo : pb::IMessage<RoomInfo> {
-        private static readonly pb::MessageParser<RoomInfo> _parser = new pb::MessageParser<RoomInfo>(() => new RoomInfo());
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pb::MessageParser<RoomInfo> Parser { get { return _parser; } }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public static pbr::MessageDescriptor Descriptor {
-          get { return global::MultiDup.SC_MD_GetRoomList.Descriptor.NestedTypes[0]; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        pbr::MessageDescriptor pb::IMessage.Descriptor {
-          get { return Descriptor; }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public RoomInfo() {
-          OnConstruction();
-        }
-
-        partial void OnConstruction();
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public RoomInfo(RoomInfo other) : this() {
-          roomId_ = other.roomId_;
-          mapid_ = other.mapid_;
-          playerUids_ = other.playerUids_.Clone();
-          battleserver_ = other.battleserver_;
-          battleServerPort_ = other.battleServerPort_;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public RoomInfo Clone() {
-          return new RoomInfo(this);
-        }
-
-        /// <summary>Field number for the "RoomId" field.</summary>
-        public const int RoomIdFieldNumber = 1;
-        private int roomId_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int RoomId {
-          get { return roomId_; }
-          set {
-            roomId_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "Mapid" field.</summary>
-        public const int MapidFieldNumber = 2;
-        private int mapid_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int Mapid {
-          get { return mapid_; }
-          set {
-            mapid_ = value;
-          }
-        }
-
-        /// <summary>Field number for the "PlayerUids" field.</summary>
-        public const int PlayerUidsFieldNumber = 3;
-        private static readonly pb::FieldCodec<string> _repeated_playerUids_codec
-            = pb::FieldCodec.ForString(26);
-        private readonly pbc::RepeatedField<string> playerUids_ = new pbc::RepeatedField<string>();
-        /// <summary>
-        ///??
-        /// </summary>
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public pbc::RepeatedField<string> PlayerUids {
-          get { return playerUids_; }
-        }
-
-        /// <summary>Field number for the "Battleserver" field.</summary>
-        public const int BattleserverFieldNumber = 4;
-        private string battleserver_ = "";
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public string Battleserver {
-          get { return battleserver_; }
-          set {
-            battleserver_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-          }
-        }
-
-        /// <summary>Field number for the "BattleServerPort" field.</summary>
-        public const int BattleServerPortFieldNumber = 5;
-        private int battleServerPort_;
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int BattleServerPort {
-          get { return battleServerPort_; }
-          set {
-            battleServerPort_ = value;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override bool Equals(object other) {
-          return Equals(other as RoomInfo);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public bool Equals(RoomInfo other) {
-          if (ReferenceEquals(other, null)) {
-            return false;
-          }
-          if (ReferenceEquals(other, this)) {
-            return true;
-          }
-          if (RoomId != other.RoomId) return false;
-          if (Mapid != other.Mapid) return false;
-          if(!playerUids_.Equals(other.playerUids_)) return false;
-          if (Battleserver != other.Battleserver) return false;
-          if (BattleServerPort != other.BattleServerPort) return false;
-          return true;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override int GetHashCode() {
-          int hash = 1;
-          if (RoomId != 0) hash ^= RoomId.GetHashCode();
-          if (Mapid != 0) hash ^= Mapid.GetHashCode();
-          hash ^= playerUids_.GetHashCode();
-          if (Battleserver.Length != 0) hash ^= Battleserver.GetHashCode();
-          if (BattleServerPort != 0) hash ^= BattleServerPort.GetHashCode();
-          return hash;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public override string ToString() {
-          return pb::JsonFormatter.ToDiagnosticString(this);
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void WriteTo(pb::CodedOutputStream output) {
-          if (RoomId != 0) {
-            output.WriteRawTag(8);
-            output.WriteInt32(RoomId);
-          }
-          if (Mapid != 0) {
-            output.WriteRawTag(16);
-            output.WriteInt32(Mapid);
-          }
-          playerUids_.WriteTo(output, _repeated_playerUids_codec);
-          if (Battleserver.Length != 0) {
-            output.WriteRawTag(34);
-            output.WriteString(Battleserver);
-          }
-          if (BattleServerPort != 0) {
-            output.WriteRawTag(40);
-            output.WriteInt32(BattleServerPort);
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public int CalculateSize() {
-          int size = 0;
-          if (RoomId != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(RoomId);
-          }
-          if (Mapid != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(Mapid);
-          }
-          size += playerUids_.CalculateSize(_repeated_playerUids_codec);
-          if (Battleserver.Length != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeStringSize(Battleserver);
-          }
-          if (BattleServerPort != 0) {
-            size += 1 + pb::CodedOutputStream.ComputeInt32Size(BattleServerPort);
-          }
-          return size;
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(RoomInfo other) {
-          if (other == null) {
-            return;
-          }
-          if (other.RoomId != 0) {
-            RoomId = other.RoomId;
-          }
-          if (other.Mapid != 0) {
-            Mapid = other.Mapid;
-          }
-          playerUids_.Add(other.playerUids_);
-          if (other.Battleserver.Length != 0) {
-            Battleserver = other.Battleserver;
-          }
-          if (other.BattleServerPort != 0) {
-            BattleServerPort = other.BattleServerPort;
-          }
-        }
-
-        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-        public void MergeFrom(pb::CodedInputStream input) {
-          uint tag;
-          while ((tag = input.ReadTag()) != 0) {
-            switch(tag) {
-              default:
-                input.SkipLastField();
-                break;
-              case 8: {
-                RoomId = input.ReadInt32();
-                break;
-              }
-              case 16: {
-                Mapid = input.ReadInt32();
-                break;
-              }
-              case 26: {
-                playerUids_.AddEntriesFrom(input, _repeated_playerUids_codec);
-                break;
-              }
-              case 34: {
-                Battleserver = input.ReadString();
-                break;
-              }
-              case 40: {
-                BattleServerPort = input.ReadInt32();
-                break;
-              }
-            }
-          }
-        }
-
-      }
-
-    }
-    #endregion
-
-  }
-
-  /// <summary>
-  /// 多人副本, 加入房间
-  /// </summary>
-  public sealed partial class SC_MD_EnterRoom : pb::IMessage<SC_MD_EnterRoom> {
-    private static readonly pb::MessageParser<SC_MD_EnterRoom> _parser = new pb::MessageParser<SC_MD_EnterRoom>(() => new SC_MD_EnterRoom());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SC_MD_EnterRoom> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[15]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_EnterRoom() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_EnterRoom(SC_MD_EnterRoom other) : this() {
-      zoneid_ = other.zoneid_;
-      uid_ = other.uid_;
-      mapid_ = other.mapid_;
-      ip_ = other.ip_;
-      port_ = other.port_;
-      playerUids_ = other.playerUids_.Clone();
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_EnterRoom Clone() {
-      return new SC_MD_EnterRoom(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Uid" field.</summary>
-    public const int UidFieldNumber = 2;
-    private string uid_ = "";
-    /// <summary>
-    /// (新进id)
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Uid {
-      get { return uid_; }
-      set {
-        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "Mapid" field.</summary>
-    public const int MapidFieldNumber = 3;
-    private int mapid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Mapid {
-      get { return mapid_; }
-      set {
-        mapid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Ip" field.</summary>
-    public const int IpFieldNumber = 4;
-    private string ip_ = "";
-    /// <summary>
-    /// 战斗服务器ip
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Ip {
-      get { return ip_; }
-      set {
-        ip_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "Port" field.</summary>
-    public const int PortFieldNumber = 5;
-    private int port_;
-    /// <summary>
-    /// 战斗服务器端口
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Port {
-      get { return port_; }
-      set {
-        port_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "PlayerUids" field.</summary>
-    public const int PlayerUidsFieldNumber = 6;
-    private static readonly pb::FieldCodec<string> _repeated_playerUids_codec
-        = pb::FieldCodec.ForString(50);
-    private readonly pbc::RepeatedField<string> playerUids_ = new pbc::RepeatedField<string>();
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pbc::RepeatedField<string> PlayerUids {
-      get { return playerUids_; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SC_MD_EnterRoom);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SC_MD_EnterRoom other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (Uid != other.Uid) return false;
-      if (Mapid != other.Mapid) return false;
-      if (Ip != other.Ip) return false;
-      if (Port != other.Port) return false;
-      if(!playerUids_.Equals(other.playerUids_)) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
-      if (Mapid != 0) hash ^= Mapid.GetHashCode();
-      if (Ip.Length != 0) hash ^= Ip.GetHashCode();
-      if (Port != 0) hash ^= Port.GetHashCode();
-      hash ^= playerUids_.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Uid);
-      }
-      if (Mapid != 0) {
-        output.WriteRawTag(24);
-        output.WriteInt32(Mapid);
-      }
-      if (Ip.Length != 0) {
-        output.WriteRawTag(34);
-        output.WriteString(Ip);
-      }
-      if (Port != 0) {
-        output.WriteRawTag(40);
-        output.WriteInt32(Port);
-      }
-      playerUids_.WriteTo(output, _repeated_playerUids_codec);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
-      }
-      if (Mapid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Mapid);
-      }
-      if (Ip.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Ip);
-      }
-      if (Port != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Port);
-      }
-      size += playerUids_.CalculateSize(_repeated_playerUids_codec);
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SC_MD_EnterRoom other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.Uid.Length != 0) {
-        Uid = other.Uid;
-      }
-      if (other.Mapid != 0) {
-        Mapid = other.Mapid;
-      }
-      if (other.Ip.Length != 0) {
-        Ip = other.Ip;
-      }
-      if (other.Port != 0) {
-        Port = other.Port;
-      }
-      playerUids_.Add(other.playerUids_);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            Uid = input.ReadString();
-            break;
-          }
-          case 24: {
-            Mapid = input.ReadInt32();
-            break;
-          }
-          case 34: {
-            Ip = input.ReadString();
-            break;
-          }
-          case 40: {
-            Port = input.ReadInt32();
-            break;
-          }
-          case 50: {
-            playerUids_.AddEntriesFrom(input, _repeated_playerUids_codec);
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 多人副本, 离开房间
-  /// </summary>
-  public sealed partial class SC_MD_LeaveRoom : pb::IMessage<SC_MD_LeaveRoom> {
-    private static readonly pb::MessageParser<SC_MD_LeaveRoom> _parser = new pb::MessageParser<SC_MD_LeaveRoom>(() => new SC_MD_LeaveRoom());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SC_MD_LeaveRoom> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[16]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_LeaveRoom() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_LeaveRoom(SC_MD_LeaveRoom other) : this() {
-      zoneid_ = other.zoneid_;
-      uid_ = other.uid_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_LeaveRoom Clone() {
-      return new SC_MD_LeaveRoom(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Uid" field.</summary>
-    public const int UidFieldNumber = 2;
-    private string uid_ = "";
-    /// <summary>
-    /// (离开id)
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Uid {
-      get { return uid_; }
-      set {
-        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SC_MD_LeaveRoom);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SC_MD_LeaveRoom other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (Uid != other.Uid) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Uid);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SC_MD_LeaveRoom other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.Uid.Length != 0) {
-        Uid = other.Uid;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            Uid = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 多人副本, 开始游戏(创建者)
-  /// </summary>
-  public sealed partial class SC_MD_BeginDup : pb::IMessage<SC_MD_BeginDup> {
-    private static readonly pb::MessageParser<SC_MD_BeginDup> _parser = new pb::MessageParser<SC_MD_BeginDup>(() => new SC_MD_BeginDup());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SC_MD_BeginDup> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[17]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_BeginDup() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_BeginDup(SC_MD_BeginDup other) : this() {
-      battleserver_ = other.battleserver_;
-      battleServerPort_ = other.battleServerPort_;
-      mapid_ = other.mapid_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_MD_BeginDup Clone() {
-      return new SC_MD_BeginDup(this);
-    }
-
-    /// <summary>Field number for the "Battleserver" field.</summary>
-    public const int BattleserverFieldNumber = 1;
-    private string battleserver_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Battleserver {
-      get { return battleserver_; }
-      set {
-        battleserver_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "BattleServerPort" field.</summary>
-    public const int BattleServerPortFieldNumber = 2;
-    private int battleServerPort_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int BattleServerPort {
-      get { return battleServerPort_; }
-      set {
-        battleServerPort_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Mapid" field.</summary>
-    public const int MapidFieldNumber = 3;
-    private int mapid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Mapid {
-      get { return mapid_; }
-      set {
-        mapid_ = value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SC_MD_BeginDup);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SC_MD_BeginDup other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Battleserver != other.Battleserver) return false;
-      if (BattleServerPort != other.BattleServerPort) return false;
-      if (Mapid != other.Mapid) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Battleserver.Length != 0) hash ^= Battleserver.GetHashCode();
-      if (BattleServerPort != 0) hash ^= BattleServerPort.GetHashCode();
-      if (Mapid != 0) hash ^= Mapid.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Battleserver.Length != 0) {
-        output.WriteRawTag(10);
-        output.WriteString(Battleserver);
-      }
-      if (BattleServerPort != 0) {
-        output.WriteRawTag(16);
-        output.WriteInt32(BattleServerPort);
-      }
-      if (Mapid != 0) {
-        output.WriteRawTag(24);
-        output.WriteInt32(Mapid);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Battleserver.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Battleserver);
-      }
-      if (BattleServerPort != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(BattleServerPort);
-      }
-      if (Mapid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Mapid);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SC_MD_BeginDup other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Battleserver.Length != 0) {
-        Battleserver = other.Battleserver;
-      }
-      if (other.BattleServerPort != 0) {
-        BattleServerPort = other.BattleServerPort;
-      }
-      if (other.Mapid != 0) {
-        Mapid = other.Mapid;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 10: {
-            Battleserver = input.ReadString();
-            break;
-          }
-          case 16: {
-            BattleServerPort = input.ReadInt32();
-            break;
-          }
-          case 24: {
-            Mapid = input.ReadInt32();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  public sealed partial class SC_BT_Login : pb::IMessage<SC_BT_Login> {
-    private static readonly pb::MessageParser<SC_BT_Login> _parser = new pb::MessageParser<SC_BT_Login>(() => new SC_BT_Login());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SC_BT_Login> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[18]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_Login() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_Login(SC_BT_Login other) : this() {
-      zoneid_ = other.zoneid_;
-      uid_ = other.uid_;
-      msg_ = other.msg_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_Login Clone() {
-      return new SC_BT_Login(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Uid" field.</summary>
-    public const int UidFieldNumber = 2;
-    private string uid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Uid {
-      get { return uid_; }
-      set {
-        uid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "Msg" field.</summary>
-    public const int MsgFieldNumber = 3;
-    private string msg_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Msg {
-      get { return msg_; }
-      set {
-        msg_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SC_BT_Login);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SC_BT_Login other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (Uid != other.Uid) return false;
-      if (Msg != other.Msg) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (Uid.Length != 0) hash ^= Uid.GetHashCode();
-      if (Msg.Length != 0) hash ^= Msg.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(Uid);
-      }
-      if (Msg.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(Msg);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (Uid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Uid);
-      }
-      if (Msg.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Msg);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SC_BT_Login other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.Uid.Length != 0) {
-        Uid = other.Uid;
-      }
-      if (other.Msg.Length != 0) {
-        Msg = other.Msg;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            Uid = input.ReadString();
-            break;
-          }
-          case 26: {
-            Msg = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 战斗服务器, 玩家列表更新
-  /// </summary>
-  public sealed partial class SC_BT_PeopleList : pb::IMessage<SC_BT_PeopleList> {
-    private static readonly pb::MessageParser<SC_BT_PeopleList> _parser = new pb::MessageParser<SC_BT_PeopleList>(() => new SC_BT_PeopleList());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SC_BT_PeopleList> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[19]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_PeopleList() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_PeopleList(SC_BT_PeopleList other) : this() {
-      zoneid_ = other.zoneid_;
-      newerUid_ = other.newerUid_;
-      playerUids_ = other.playerUids_.Clone();
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_PeopleList Clone() {
-      return new SC_BT_PeopleList(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "NewerUid" field.</summary>
-    public const int NewerUidFieldNumber = 2;
-    private string newerUid_ = "";
-    /// <summary>
-    /// (新进id)
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string NewerUid {
-      get { return newerUid_; }
-      set {
-        newerUid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "PlayerUids" field.</summary>
-    public const int PlayerUidsFieldNumber = 3;
-    private static readonly pb::FieldCodec<string> _repeated_playerUids_codec
-        = pb::FieldCodec.ForString(26);
-    private readonly pbc::RepeatedField<string> playerUids_ = new pbc::RepeatedField<string>();
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pbc::RepeatedField<string> PlayerUids {
-      get { return playerUids_; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SC_BT_PeopleList);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SC_BT_PeopleList other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (NewerUid != other.NewerUid) return false;
-      if(!playerUids_.Equals(other.playerUids_)) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (NewerUid.Length != 0) hash ^= NewerUid.GetHashCode();
-      hash ^= playerUids_.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (NewerUid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(NewerUid);
-      }
-      playerUids_.WriteTo(output, _repeated_playerUids_codec);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (NewerUid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(NewerUid);
-      }
-      size += playerUids_.CalculateSize(_repeated_playerUids_codec);
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SC_BT_PeopleList other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.NewerUid.Length != 0) {
-        NewerUid = other.NewerUid;
-      }
-      playerUids_.Add(other.playerUids_);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            NewerUid = input.ReadString();
-            break;
-          }
-          case 26: {
-            playerUids_.AddEntriesFrom(input, _repeated_playerUids_codec);
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 战斗服务 同步状态
-  /// </summary>
-  public sealed partial class SC_BT_Status : pb::IMessage<SC_BT_Status> {
-    private static readonly pb::MessageParser<SC_BT_Status> _parser = new pb::MessageParser<SC_BT_Status>(() => new SC_BT_Status());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SC_BT_Status> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[20]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_Status() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_Status(SC_BT_Status other) : this() {
-      zoneid_ = other.zoneid_;
-      senderUid_ = other.senderUid_;
-      propertyName_ = other.propertyName_;
-      value_ = other.value_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_Status Clone() {
-      return new SC_BT_Status(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "SenderUid" field.</summary>
-    public const int SenderUidFieldNumber = 2;
-    private string senderUid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string SenderUid {
-      get { return senderUid_; }
-      set {
-        senderUid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "PropertyName" field.</summary>
-    public const int PropertyNameFieldNumber = 3;
-    private string propertyName_ = "";
-    /// <summary>
-    /// 属性名称
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string PropertyName {
-      get { return propertyName_; }
-      set {
-        propertyName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "Value" field.</summary>
-    public const int ValueFieldNumber = 4;
-    private string value_ = "";
-    /// <summary>
-    /// 属性值
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Value {
-      get { return value_; }
-      set {
-        value_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SC_BT_Status);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SC_BT_Status other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (SenderUid != other.SenderUid) return false;
-      if (PropertyName != other.PropertyName) return false;
-      if (Value != other.Value) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (SenderUid.Length != 0) hash ^= SenderUid.GetHashCode();
-      if (PropertyName.Length != 0) hash ^= PropertyName.GetHashCode();
-      if (Value.Length != 0) hash ^= Value.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(SenderUid);
-      }
-      if (PropertyName.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(PropertyName);
-      }
-      if (Value.Length != 0) {
-        output.WriteRawTag(34);
-        output.WriteString(Value);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(SenderUid);
-      }
-      if (PropertyName.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(PropertyName);
-      }
-      if (Value.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Value);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SC_BT_Status other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.SenderUid.Length != 0) {
-        SenderUid = other.SenderUid;
-      }
-      if (other.PropertyName.Length != 0) {
-        PropertyName = other.PropertyName;
-      }
-      if (other.Value.Length != 0) {
-        Value = other.Value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            SenderUid = input.ReadString();
-            break;
-          }
-          case 26: {
-            PropertyName = input.ReadString();
-            break;
-          }
-          case 34: {
-            Value = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 战斗服务 同步位置
-  /// </summary>
-  public sealed partial class SC_BT_Position : pb::IMessage<SC_BT_Position> {
-    private static readonly pb::MessageParser<SC_BT_Position> _parser = new pb::MessageParser<SC_BT_Position>(() => new SC_BT_Position());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SC_BT_Position> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[21]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_Position() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_Position(SC_BT_Position other) : this() {
-      zoneid_ = other.zoneid_;
-      senderUid_ = other.senderUid_;
-      x_ = other.x_;
-      y_ = other.y_;
-      z_ = other.z_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_Position Clone() {
-      return new SC_BT_Position(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "SenderUid" field.</summary>
-    public const int SenderUidFieldNumber = 2;
-    private string senderUid_ = "";
-    /// <summary>
-    /// 发送者uid
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string SenderUid {
-      get { return senderUid_; }
-      set {
-        senderUid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "X" field.</summary>
-    public const int XFieldNumber = 3;
-    private float x_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public float X {
-      get { return x_; }
-      set {
-        x_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Y" field.</summary>
-    public const int YFieldNumber = 4;
-    private float y_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public float Y {
-      get { return y_; }
-      set {
-        y_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "Z" field.</summary>
-    public const int ZFieldNumber = 5;
-    private float z_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public float Z {
-      get { return z_; }
-      set {
-        z_ = value;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SC_BT_Position);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SC_BT_Position other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (SenderUid != other.SenderUid) return false;
-      if (X != other.X) return false;
-      if (Y != other.Y) return false;
-      if (Z != other.Z) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (SenderUid.Length != 0) hash ^= SenderUid.GetHashCode();
-      if (X != 0F) hash ^= X.GetHashCode();
-      if (Y != 0F) hash ^= Y.GetHashCode();
-      if (Z != 0F) hash ^= Z.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(SenderUid);
-      }
-      if (X != 0F) {
-        output.WriteRawTag(29);
-        output.WriteFloat(X);
-      }
-      if (Y != 0F) {
-        output.WriteRawTag(37);
-        output.WriteFloat(Y);
-      }
-      if (Z != 0F) {
-        output.WriteRawTag(45);
-        output.WriteFloat(Z);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(SenderUid);
-      }
-      if (X != 0F) {
-        size += 1 + 4;
-      }
-      if (Y != 0F) {
-        size += 1 + 4;
-      }
-      if (Z != 0F) {
-        size += 1 + 4;
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SC_BT_Position other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.SenderUid.Length != 0) {
-        SenderUid = other.SenderUid;
-      }
-      if (other.X != 0F) {
-        X = other.X;
-      }
-      if (other.Y != 0F) {
-        Y = other.Y;
-      }
-      if (other.Z != 0F) {
-        Z = other.Z;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            SenderUid = input.ReadString();
-            break;
-          }
-          case 29: {
-            X = input.ReadFloat();
-            break;
-          }
-          case 37: {
-            Y = input.ReadFloat();
-            break;
-          }
-          case 45: {
-            Z = input.ReadFloat();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 战斗服务 广播
-  /// </summary>
-  public sealed partial class SC_BT_BroadCast : pb::IMessage<SC_BT_BroadCast> {
-    private static readonly pb::MessageParser<SC_BT_BroadCast> _parser = new pb::MessageParser<SC_BT_BroadCast>(() => new SC_BT_BroadCast());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SC_BT_BroadCast> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[22]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_BroadCast() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_BroadCast(SC_BT_BroadCast other) : this() {
-      zoneid_ = other.zoneid_;
-      senderUid_ = other.senderUid_;
-      msg_ = other.msg_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_BroadCast Clone() {
-      return new SC_BT_BroadCast(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "SenderUid" field.</summary>
-    public const int SenderUidFieldNumber = 2;
-    private string senderUid_ = "";
-    /// <summary>
-    /// 发送者uid
-    /// </summary>
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string SenderUid {
-      get { return senderUid_; }
-      set {
-        senderUid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "Msg" field.</summary>
-    public const int MsgFieldNumber = 3;
-    private string msg_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Msg {
-      get { return msg_; }
-      set {
-        msg_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SC_BT_BroadCast);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SC_BT_BroadCast other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (SenderUid != other.SenderUid) return false;
-      if (Msg != other.Msg) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (SenderUid.Length != 0) hash ^= SenderUid.GetHashCode();
-      if (Msg.Length != 0) hash ^= Msg.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(SenderUid);
-      }
-      if (Msg.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(Msg);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(SenderUid);
-      }
-      if (Msg.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Msg);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SC_BT_BroadCast other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.SenderUid.Length != 0) {
-        SenderUid = other.SenderUid;
-      }
-      if (other.Msg.Length != 0) {
-        Msg = other.Msg;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            SenderUid = input.ReadString();
-            break;
-          }
-          case 26: {
-            Msg = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 战斗服务,结束
-  /// </summary>
-  public sealed partial class SC_BT_Over : pb::IMessage<SC_BT_Over> {
-    private static readonly pb::MessageParser<SC_BT_Over> _parser = new pb::MessageParser<SC_BT_Over>(() => new SC_BT_Over());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SC_BT_Over> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[23]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_Over() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_Over(SC_BT_Over other) : this() {
-      zoneid_ = other.zoneid_;
-      senderUid_ = other.senderUid_;
-      msg_ = other.msg_;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SC_BT_Over Clone() {
-      return new SC_BT_Over(this);
-    }
-
-    /// <summary>Field number for the "Zoneid" field.</summary>
-    public const int ZoneidFieldNumber = 1;
-    private int zoneid_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int Zoneid {
-      get { return zoneid_; }
-      set {
-        zoneid_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "SenderUid" field.</summary>
-    public const int SenderUidFieldNumber = 2;
-    private string senderUid_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string SenderUid {
-      get { return senderUid_; }
-      set {
-        senderUid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    /// <summary>Field number for the "Msg" field.</summary>
-    public const int MsgFieldNumber = 3;
-    private string msg_ = "";
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public string Msg {
-      get { return msg_; }
-      set {
-        msg_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SC_BT_Over);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SC_BT_Over other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (Zoneid != other.Zoneid) return false;
-      if (SenderUid != other.SenderUid) return false;
-      if (Msg != other.Msg) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (Zoneid != 0) hash ^= Zoneid.GetHashCode();
-      if (SenderUid.Length != 0) hash ^= SenderUid.GetHashCode();
-      if (Msg.Length != 0) hash ^= Msg.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (Zoneid != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        output.WriteRawTag(18);
-        output.WriteString(SenderUid);
-      }
-      if (Msg.Length != 0) {
-        output.WriteRawTag(26);
-        output.WriteString(Msg);
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (Zoneid != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Zoneid);
-      }
-      if (SenderUid.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(SenderUid);
-      }
-      if (Msg.Length != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeStringSize(Msg);
-      }
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SC_BT_Over other) {
-      if (other == null) {
-        return;
-      }
-      if (other.Zoneid != 0) {
-        Zoneid = other.Zoneid;
-      }
-      if (other.SenderUid.Length != 0) {
-        SenderUid = other.SenderUid;
-      }
-      if (other.Msg.Length != 0) {
-        Msg = other.Msg;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            Zoneid = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            SenderUid = input.ReadString();
-            break;
-          }
-          case 26: {
-            Msg = input.ReadString();
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 多人副本在战斗服创建房间
-  /// </summary>
-  public sealed partial class SS_CreateBattleServer : pb::IMessage<SS_CreateBattleServer> {
-    private static readonly pb::MessageParser<SS_CreateBattleServer> _parser = new pb::MessageParser<SS_CreateBattleServer>(() => new SS_CreateBattleServer());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SS_CreateBattleServer> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[24]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SS_CreateBattleServer() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SS_CreateBattleServer(SS_CreateBattleServer other) : this() {
-      roomId_ = other.roomId_;
-      playerUids_ = other.playerUids_.Clone();
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SS_CreateBattleServer Clone() {
-      return new SS_CreateBattleServer(this);
-    }
-
-    /// <summary>Field number for the "RoomId" field.</summary>
-    public const int RoomIdFieldNumber = 1;
-    private int roomId_;
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int RoomId {
-      get { return roomId_; }
-      set {
-        roomId_ = value;
-      }
-    }
-
-    /// <summary>Field number for the "PlayerUids" field.</summary>
-    public const int PlayerUidsFieldNumber = 2;
-    private static readonly pb::FieldCodec<string> _repeated_playerUids_codec
-        = pb::FieldCodec.ForString(18);
-    private readonly pbc::RepeatedField<string> playerUids_ = new pbc::RepeatedField<string>();
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public pbc::RepeatedField<string> PlayerUids {
-      get { return playerUids_; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SS_CreateBattleServer);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SS_CreateBattleServer other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      if (RoomId != other.RoomId) return false;
-      if(!playerUids_.Equals(other.playerUids_)) return false;
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      if (RoomId != 0) hash ^= RoomId.GetHashCode();
-      hash ^= playerUids_.GetHashCode();
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-      if (RoomId != 0) {
-        output.WriteRawTag(8);
-        output.WriteInt32(RoomId);
-      }
-      playerUids_.WriteTo(output, _repeated_playerUids_codec);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      if (RoomId != 0) {
-        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RoomId);
-      }
-      size += playerUids_.CalculateSize(_repeated_playerUids_codec);
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SS_CreateBattleServer other) {
-      if (other == null) {
-        return;
-      }
-      if (other.RoomId != 0) {
-        RoomId = other.RoomId;
-      }
-      playerUids_.Add(other.playerUids_);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-          case 8: {
-            RoomId = input.ReadInt32();
-            break;
-          }
-          case 18: {
-            playerUids_.AddEntriesFrom(input, _repeated_playerUids_codec);
-            break;
-          }
-        }
-      }
-    }
-
-  }
-
-  /// <summary>
-  /// 多人副本,创建战斗房间OK
-  /// </summary>
-  public sealed partial class SS_CreateBattleServerOK : pb::IMessage<SS_CreateBattleServerOK> {
-    private static readonly pb::MessageParser<SS_CreateBattleServerOK> _parser = new pb::MessageParser<SS_CreateBattleServerOK>(() => new SS_CreateBattleServerOK());
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pb::MessageParser<SS_CreateBattleServerOK> Parser { get { return _parser; } }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public static pbr::MessageDescriptor Descriptor {
-      get { return global::MultiDup.MultiDupReflection.Descriptor.MessageTypes[25]; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    pbr::MessageDescriptor pb::IMessage.Descriptor {
-      get { return Descriptor; }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SS_CreateBattleServerOK() {
-      OnConstruction();
-    }
-
-    partial void OnConstruction();
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SS_CreateBattleServerOK(SS_CreateBattleServerOK other) : this() {
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public SS_CreateBattleServerOK Clone() {
-      return new SS_CreateBattleServerOK(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override bool Equals(object other) {
-      return Equals(other as SS_CreateBattleServerOK);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public bool Equals(SS_CreateBattleServerOK other) {
-      if (ReferenceEquals(other, null)) {
-        return false;
-      }
-      if (ReferenceEquals(other, this)) {
-        return true;
-      }
-      return true;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override int GetHashCode() {
-      int hash = 1;
-      return hash;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public override string ToString() {
-      return pb::JsonFormatter.ToDiagnosticString(this);
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void WriteTo(pb::CodedOutputStream output) {
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public int CalculateSize() {
-      int size = 0;
-      return size;
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(SS_CreateBattleServerOK other) {
-      if (other == null) {
-        return;
-      }
-    }
-
-    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
-    public void MergeFrom(pb::CodedInputStream input) {
-      uint tag;
-      while ((tag = input.ReadTag()) != 0) {
-        switch(tag) {
-          default:
-            input.SkipLastField();
-            break;
-        }
-      }
-    }
-
-  }
-
-  #endregion
-
-}
-
-#endregion Designer generated code

+ 0 - 617
CSserver/PBReferens/pbgo/pb/BossServer/fight.pb.go

@@ -1,617 +0,0 @@
-//import "google/protobuf/any.proto";
-
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// 	protoc-gen-go v1.27.1
-// 	protoc        v3.3.0
-// source: pb/fight.proto
-
-package BossServer
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-const (
-	// Verify that this generated code is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
-	// Verify that runtime/protoimpl is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-//上报伤害输出
-type CSFightReportDamage struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// 伤害输出
-	Damage int32 `protobuf:"varint,1,opt,name=Damage,proto3" json:"Damage,omitempty"`
-}
-
-func (x *CSFightReportDamage) Reset() {
-	*x = CSFightReportDamage{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_fight_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CSFightReportDamage) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CSFightReportDamage) ProtoMessage() {}
-
-func (x *CSFightReportDamage) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_fight_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CSFightReportDamage.ProtoReflect.Descriptor instead.
-func (*CSFightReportDamage) Descriptor() ([]byte, []int) {
-	return file_pb_fight_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *CSFightReportDamage) GetDamage() int32 {
-	if x != nil {
-		return x.Damage
-	}
-	return 0
-}
-
-// 上报玩家剩余血量
-type CSReportUserHP struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	UserHP int32 `protobuf:"varint,1,opt,name=UserHP,proto3" json:"UserHP,omitempty"`
-}
-
-func (x *CSReportUserHP) Reset() {
-	*x = CSReportUserHP{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_fight_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CSReportUserHP) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CSReportUserHP) ProtoMessage() {}
-
-func (x *CSReportUserHP) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_fight_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CSReportUserHP.ProtoReflect.Descriptor instead.
-func (*CSReportUserHP) Descriptor() ([]byte, []int) {
-	return file_pb_fight_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *CSReportUserHP) GetUserHP() int32 {
-	if x != nil {
-		return x.UserHP
-	}
-	return 0
-}
-
-// 结束(一般情况下是玩家血量到底主动退出)
-type CSLeaveFight struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	XNo int32 `protobuf:"varint,1,opt,name=_no,json=No,proto3" json:"_no,omitempty"`
-}
-
-func (x *CSLeaveFight) Reset() {
-	*x = CSLeaveFight{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_fight_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CSLeaveFight) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CSLeaveFight) ProtoMessage() {}
-
-func (x *CSLeaveFight) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_fight_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CSLeaveFight.ProtoReflect.Descriptor instead.
-func (*CSLeaveFight) Descriptor() ([]byte, []int) {
-	return file_pb_fight_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *CSLeaveFight) GetXNo() int32 {
-	if x != nil {
-		return x.XNo
-	}
-	return 0
-}
-
-// 从连接状态转入已经登陆状态(标记自己的uid和zoneid)
-type CSEnterFight struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	Uid    string `protobuf:"bytes,2,opt,name=Uid,proto3" json:"Uid,omitempty"`
-	Name   string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"`
-	BossId int32  `protobuf:"varint,4,opt,name=BossId,proto3" json:"BossId,omitempty"`
-}
-
-func (x *CSEnterFight) Reset() {
-	*x = CSEnterFight{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_fight_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CSEnterFight) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CSEnterFight) ProtoMessage() {}
-
-func (x *CSEnterFight) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_fight_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CSEnterFight.ProtoReflect.Descriptor instead.
-func (*CSEnterFight) Descriptor() ([]byte, []int) {
-	return file_pb_fight_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *CSEnterFight) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *CSEnterFight) GetUid() string {
-	if x != nil {
-		return x.Uid
-	}
-	return ""
-}
-
-func (x *CSEnterFight) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-func (x *CSEnterFight) GetBossId() int32 {
-	if x != nil {
-		return x.BossId
-	}
-	return 0
-}
-
-// 登陆完成
-type SCEnterFight struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BossHp    int32 `protobuf:"varint,1,opt,name=BossHp,proto3" json:"BossHp,omitempty"`
-	BossMaxHp int32 `protobuf:"varint,2,opt,name=BossMaxHp,proto3" json:"BossMaxHp,omitempty"`
-	UserHP    int32 `protobuf:"varint,3,opt,name=UserHP,proto3" json:"UserHP,omitempty"`
-	// 倒计时
-	CountDown int32 `protobuf:"varint,4,opt,name=CountDown,proto3" json:"CountDown,omitempty"`
-}
-
-func (x *SCEnterFight) Reset() {
-	*x = SCEnterFight{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_fight_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SCEnterFight) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SCEnterFight) ProtoMessage() {}
-
-func (x *SCEnterFight) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_fight_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SCEnterFight.ProtoReflect.Descriptor instead.
-func (*SCEnterFight) Descriptor() ([]byte, []int) {
-	return file_pb_fight_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *SCEnterFight) GetBossHp() int32 {
-	if x != nil {
-		return x.BossHp
-	}
-	return 0
-}
-
-func (x *SCEnterFight) GetBossMaxHp() int32 {
-	if x != nil {
-		return x.BossMaxHp
-	}
-	return 0
-}
-
-func (x *SCEnterFight) GetUserHP() int32 {
-	if x != nil {
-		return x.UserHP
-	}
-	return 0
-}
-
-func (x *SCEnterFight) GetCountDown() int32 {
-	if x != nil {
-		return x.CountDown
-	}
-	return 0
-}
-
-// 更新状态数据
-type SCUpdateProperties struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BossHp    int32 `protobuf:"varint,1,opt,name=BossHp,proto3" json:"BossHp,omitempty"`
-	BossMaxHp int32 `protobuf:"varint,2,opt,name=BossMaxHp,proto3" json:"BossMaxHp,omitempty"`
-	// 倒计时
-	CountDown int32 `protobuf:"varint,3,opt,name=CountDown,proto3" json:"CountDown,omitempty"`
-}
-
-func (x *SCUpdateProperties) Reset() {
-	*x = SCUpdateProperties{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_fight_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SCUpdateProperties) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SCUpdateProperties) ProtoMessage() {}
-
-func (x *SCUpdateProperties) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_fight_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SCUpdateProperties.ProtoReflect.Descriptor instead.
-func (*SCUpdateProperties) Descriptor() ([]byte, []int) {
-	return file_pb_fight_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *SCUpdateProperties) GetBossHp() int32 {
-	if x != nil {
-		return x.BossHp
-	}
-	return 0
-}
-
-func (x *SCUpdateProperties) GetBossMaxHp() int32 {
-	if x != nil {
-		return x.BossMaxHp
-	}
-	return 0
-}
-
-func (x *SCUpdateProperties) GetCountDown() int32 {
-	if x != nil {
-		return x.CountDown
-	}
-	return 0
-}
-
-// 战斗结束
-type SCGameOver struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	BossHp int32 `protobuf:"varint,1,opt,name=BossHp,proto3" json:"BossHp,omitempty"`
-	// 倒计时
-	CountDown int32 `protobuf:"varint,2,opt,name=CountDown,proto3" json:"CountDown,omitempty"`
-}
-
-func (x *SCGameOver) Reset() {
-	*x = SCGameOver{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_fight_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SCGameOver) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SCGameOver) ProtoMessage() {}
-
-func (x *SCGameOver) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_fight_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SCGameOver.ProtoReflect.Descriptor instead.
-func (*SCGameOver) Descriptor() ([]byte, []int) {
-	return file_pb_fight_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *SCGameOver) GetBossHp() int32 {
-	if x != nil {
-		return x.BossHp
-	}
-	return 0
-}
-
-func (x *SCGameOver) GetCountDown() int32 {
-	if x != nil {
-		return x.CountDown
-	}
-	return 0
-}
-
-var File_pb_fight_proto protoreflect.FileDescriptor
-
-var file_pb_fight_proto_rawDesc = []byte{
-	0x0a, 0x0e, 0x70, 0x62, 0x2f, 0x66, 0x69, 0x67, 0x68, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x12, 0x0a, 0x42, 0x6f, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x2d, 0x0a, 0x13,
-	0x43, 0x53, 0x46, 0x69, 0x67, 0x68, 0x74, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x44, 0x61, 0x6d,
-	0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x06, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x28, 0x0a, 0x0e, 0x43,
-	0x53, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, 0x48, 0x50, 0x12, 0x16, 0x0a,
-	0x06, 0x55, 0x73, 0x65, 0x72, 0x48, 0x50, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x55,
-	0x73, 0x65, 0x72, 0x48, 0x50, 0x22, 0x1f, 0x0a, 0x0c, 0x43, 0x53, 0x4c, 0x65, 0x61, 0x76, 0x65,
-	0x46, 0x69, 0x67, 0x68, 0x74, 0x12, 0x0f, 0x0a, 0x03, 0x5f, 0x6e, 0x6f, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x02, 0x4e, 0x6f, 0x22, 0x64, 0x0a, 0x0c, 0x43, 0x53, 0x45, 0x6e, 0x74, 0x65,
-	0x72, 0x46, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x10,
-	0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x69, 0x64,
-	0x12, 0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04,
-	0x4e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x49, 0x64, 0x18, 0x04,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x49, 0x64, 0x22, 0x7a, 0x0a, 0x0c,
-	0x53, 0x43, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x46, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06,
-	0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x42, 0x6f,
-	0x73, 0x73, 0x48, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x6f, 0x73, 0x73, 0x4d, 0x61, 0x78, 0x48,
-	0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x6f, 0x73, 0x73, 0x4d, 0x61, 0x78,
-	0x48, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x55, 0x73, 0x65, 0x72, 0x48, 0x50, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x06, 0x55, 0x73, 0x65, 0x72, 0x48, 0x50, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f,
-	0x75, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43,
-	0x6f, 0x75, 0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x22, 0x68, 0x0a, 0x12, 0x53, 0x43, 0x55, 0x70,
-	0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x12, 0x16,
-	0x0a, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06,
-	0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x42, 0x6f, 0x73, 0x73, 0x4d, 0x61,
-	0x78, 0x48, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x42, 0x6f, 0x73, 0x73, 0x4d,
-	0x61, 0x78, 0x48, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x6f, 0x77,
-	0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x44, 0x6f,
-	0x77, 0x6e, 0x22, 0x42, 0x0a, 0x0a, 0x53, 0x43, 0x47, 0x61, 0x6d, 0x65, 0x4f, 0x76, 0x65, 0x72,
-	0x12, 0x16, 0x0a, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x06, 0x42, 0x6f, 0x73, 0x73, 0x48, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x43, 0x6f, 0x75, 0x6e,
-	0x74, 0x44, 0x6f, 0x77, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x43, 0x6f, 0x75,
-	0x6e, 0x74, 0x44, 0x6f, 0x77, 0x6e, 0x42, 0x0f, 0x5a, 0x0d, 0x70, 0x62, 0x2f, 0x42, 0x6f, 0x73,
-	0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_pb_fight_proto_rawDescOnce sync.Once
-	file_pb_fight_proto_rawDescData = file_pb_fight_proto_rawDesc
-)
-
-func file_pb_fight_proto_rawDescGZIP() []byte {
-	file_pb_fight_proto_rawDescOnce.Do(func() {
-		file_pb_fight_proto_rawDescData = protoimpl.X.CompressGZIP(file_pb_fight_proto_rawDescData)
-	})
-	return file_pb_fight_proto_rawDescData
-}
-
-var file_pb_fight_proto_msgTypes = make([]protoimpl.MessageInfo, 7)
-var file_pb_fight_proto_goTypes = []interface{}{
-	(*CSFightReportDamage)(nil), // 0: BossServer.CSFightReportDamage
-	(*CSReportUserHP)(nil),      // 1: BossServer.CSReportUserHP
-	(*CSLeaveFight)(nil),        // 2: BossServer.CSLeaveFight
-	(*CSEnterFight)(nil),        // 3: BossServer.CSEnterFight
-	(*SCEnterFight)(nil),        // 4: BossServer.SCEnterFight
-	(*SCUpdateProperties)(nil),  // 5: BossServer.SCUpdateProperties
-	(*SCGameOver)(nil),          // 6: BossServer.SCGameOver
-}
-var file_pb_fight_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_pb_fight_proto_init() }
-func file_pb_fight_proto_init() {
-	if File_pb_fight_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_pb_fight_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CSFightReportDamage); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_fight_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CSReportUserHP); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_fight_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CSLeaveFight); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_fight_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CSEnterFight); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_fight_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SCEnterFight); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_fight_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SCUpdateProperties); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_fight_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SCGameOver); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_pb_fight_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   7,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_pb_fight_proto_goTypes,
-		DependencyIndexes: file_pb_fight_proto_depIdxs,
-		MessageInfos:      file_pb_fight_proto_msgTypes,
-	}.Build()
-	File_pb_fight_proto = out.File
-	file_pb_fight_proto_rawDesc = nil
-	file_pb_fight_proto_goTypes = nil
-	file_pb_fight_proto_depIdxs = nil
-}

+ 0 - 535
CSserver/PBReferens/pbgo/pb/Chat/chat.pb.go

@@ -1,535 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// 	protoc-gen-go v1.27.1
-// 	protoc        v3.3.0
-// source: pb/chat.proto
-
-package Chat
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-const (
-	// Verify that this generated code is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
-	// Verify that runtime/protoimpl is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// 频道
-type ChatChannel int32
-
-const (
-	// 系统频道
-	ChatChannel_System ChatChannel = 0
-	// 世界频道
-	ChatChannel_World ChatChannel = 1
-	// 公会频道
-	ChatChannel_Guild ChatChannel = 2
-	// 密语(单独发送给某人)
-	ChatChannel_Single ChatChannel = 3
-)
-
-// Enum value maps for ChatChannel.
-var (
-	ChatChannel_name = map[int32]string{
-		0: "System",
-		1: "World",
-		2: "Guild",
-		3: "Single",
-	}
-	ChatChannel_value = map[string]int32{
-		"System": 0,
-		"World":  1,
-		"Guild":  2,
-		"Single": 3,
-	}
-)
-
-func (x ChatChannel) Enum() *ChatChannel {
-	p := new(ChatChannel)
-	*p = x
-	return p
-}
-
-func (x ChatChannel) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ChatChannel) Descriptor() protoreflect.EnumDescriptor {
-	return file_pb_chat_proto_enumTypes[0].Descriptor()
-}
-
-func (ChatChannel) Type() protoreflect.EnumType {
-	return &file_pb_chat_proto_enumTypes[0]
-}
-
-func (x ChatChannel) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ChatChannel.Descriptor instead.
-func (ChatChannel) EnumDescriptor() ([]byte, []int) {
-	return file_pb_chat_proto_rawDescGZIP(), []int{0}
-}
-
-// 错误码
-type SC_ChatLogin_ErrorCode int32
-
-const (
-	// 成功
-	SC_ChatLogin_OK SC_ChatLogin_ErrorCode = 0
-	// 未知的UID
-	SC_ChatLogin_AccIDInvalid SC_ChatLogin_ErrorCode = 1
-	// 重复登入
-	SC_ChatLogin_LoginRepeat SC_ChatLogin_ErrorCode = 2
-	// 内部错误
-	SC_ChatLogin_InnerError SC_ChatLogin_ErrorCode = 3
-)
-
-// Enum value maps for SC_ChatLogin_ErrorCode.
-var (
-	SC_ChatLogin_ErrorCode_name = map[int32]string{
-		0: "OK",
-		1: "AccIDInvalid",
-		2: "LoginRepeat",
-		3: "InnerError",
-	}
-	SC_ChatLogin_ErrorCode_value = map[string]int32{
-		"OK":           0,
-		"AccIDInvalid": 1,
-		"LoginRepeat":  2,
-		"InnerError":   3,
-	}
-)
-
-func (x SC_ChatLogin_ErrorCode) Enum() *SC_ChatLogin_ErrorCode {
-	p := new(SC_ChatLogin_ErrorCode)
-	*p = x
-	return p
-}
-
-func (x SC_ChatLogin_ErrorCode) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (SC_ChatLogin_ErrorCode) Descriptor() protoreflect.EnumDescriptor {
-	return file_pb_chat_proto_enumTypes[1].Descriptor()
-}
-
-func (SC_ChatLogin_ErrorCode) Type() protoreflect.EnumType {
-	return &file_pb_chat_proto_enumTypes[1]
-}
-
-func (x SC_ChatLogin_ErrorCode) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use SC_ChatLogin_ErrorCode.Descriptor instead.
-func (SC_ChatLogin_ErrorCode) EnumDescriptor() ([]byte, []int) {
-	return file_pb_chat_proto_rawDescGZIP(), []int{2, 0}
-}
-
-// 聊天, 登录
-type CS_ChatLogin struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	Uid    string `protobuf:"bytes,2,opt,name=Uid,proto3" json:"Uid,omitempty"`
-	Name   string `protobuf:"bytes,3,opt,name=Name,proto3" json:"Name,omitempty"`
-}
-
-func (x *CS_ChatLogin) Reset() {
-	*x = CS_ChatLogin{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_chat_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CS_ChatLogin) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CS_ChatLogin) ProtoMessage() {}
-
-func (x *CS_ChatLogin) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_chat_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CS_ChatLogin.ProtoReflect.Descriptor instead.
-func (*CS_ChatLogin) Descriptor() ([]byte, []int) {
-	return file_pb_chat_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *CS_ChatLogin) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *CS_ChatLogin) GetUid() string {
-	if x != nil {
-		return x.Uid
-	}
-	return ""
-}
-
-func (x *CS_ChatLogin) GetName() string {
-	if x != nil {
-		return x.Name
-	}
-	return ""
-}
-
-// 聊天, 发送消息
-type CS_ChatSendMsg struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	ToChannel  ChatChannel `protobuf:"varint,1,opt,name=ToChannel,proto3,enum=Chat.ChatChannel" json:"ToChannel,omitempty"`
-	Msg        string      `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"`
-	ToNickName string      `protobuf:"bytes,3,opt,name=ToNickName,proto3" json:"ToNickName,omitempty"`
-}
-
-func (x *CS_ChatSendMsg) Reset() {
-	*x = CS_ChatSendMsg{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_chat_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CS_ChatSendMsg) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CS_ChatSendMsg) ProtoMessage() {}
-
-func (x *CS_ChatSendMsg) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_chat_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CS_ChatSendMsg.ProtoReflect.Descriptor instead.
-func (*CS_ChatSendMsg) Descriptor() ([]byte, []int) {
-	return file_pb_chat_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *CS_ChatSendMsg) GetToChannel() ChatChannel {
-	if x != nil {
-		return x.ToChannel
-	}
-	return ChatChannel_System
-}
-
-func (x *CS_ChatSendMsg) GetMsg() string {
-	if x != nil {
-		return x.Msg
-	}
-	return ""
-}
-
-func (x *CS_ChatSendMsg) GetToNickName() string {
-	if x != nil {
-		return x.ToNickName
-	}
-	return ""
-}
-
-// 聊天, 初始化返回值
-type SC_ChatLogin struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	// 错误码
-	Code SC_ChatLogin_ErrorCode `protobuf:"varint,1,opt,name=code,proto3,enum=Chat.SC_ChatLogin_ErrorCode" json:"code,omitempty"`
-}
-
-func (x *SC_ChatLogin) Reset() {
-	*x = SC_ChatLogin{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_chat_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_ChatLogin) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_ChatLogin) ProtoMessage() {}
-
-func (x *SC_ChatLogin) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_chat_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_ChatLogin.ProtoReflect.Descriptor instead.
-func (*SC_ChatLogin) Descriptor() ([]byte, []int) {
-	return file_pb_chat_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *SC_ChatLogin) GetCode() SC_ChatLogin_ErrorCode {
-	if x != nil {
-		return x.Code
-	}
-	return SC_ChatLogin_OK
-}
-
-// 聊天, 新的消息
-type SC_ChatNewMsg struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	FromChannel ChatChannel `protobuf:"varint,1,opt,name=FromChannel,proto3,enum=Chat.ChatChannel" json:"FromChannel,omitempty"`
-	Msg         string      `protobuf:"bytes,2,opt,name=Msg,proto3" json:"Msg,omitempty"`
-	SenderName  string      `protobuf:"bytes,3,opt,name=SenderName,proto3" json:"SenderName,omitempty"`
-	SenderUid   string      `protobuf:"bytes,4,opt,name=SenderUid,proto3" json:"SenderUid,omitempty"`
-}
-
-func (x *SC_ChatNewMsg) Reset() {
-	*x = SC_ChatNewMsg{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_chat_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_ChatNewMsg) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_ChatNewMsg) ProtoMessage() {}
-
-func (x *SC_ChatNewMsg) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_chat_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_ChatNewMsg.ProtoReflect.Descriptor instead.
-func (*SC_ChatNewMsg) Descriptor() ([]byte, []int) {
-	return file_pb_chat_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *SC_ChatNewMsg) GetFromChannel() ChatChannel {
-	if x != nil {
-		return x.FromChannel
-	}
-	return ChatChannel_System
-}
-
-func (x *SC_ChatNewMsg) GetMsg() string {
-	if x != nil {
-		return x.Msg
-	}
-	return ""
-}
-
-func (x *SC_ChatNewMsg) GetSenderName() string {
-	if x != nil {
-		return x.SenderName
-	}
-	return ""
-}
-
-func (x *SC_ChatNewMsg) GetSenderUid() string {
-	if x != nil {
-		return x.SenderUid
-	}
-	return ""
-}
-
-var File_pb_chat_proto protoreflect.FileDescriptor
-
-var file_pb_chat_proto_rawDesc = []byte{
-	0x0a, 0x0d, 0x70, 0x62, 0x2f, 0x63, 0x68, 0x61, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
-	0x04, 0x43, 0x68, 0x61, 0x74, 0x22, 0x4c, 0x0a, 0x0c, 0x43, 0x53, 0x5f, 0x43, 0x68, 0x61, 0x74,
-	0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x10, 0x0a,
-	0x03, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12,
-	0x12, 0x0a, 0x04, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x4e,
-	0x61, 0x6d, 0x65, 0x22, 0x73, 0x0a, 0x0e, 0x43, 0x53, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x53, 0x65,
-	0x6e, 0x64, 0x4d, 0x73, 0x67, 0x12, 0x2f, 0x0a, 0x09, 0x54, 0x6f, 0x43, 0x68, 0x61, 0x6e, 0x6e,
-	0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x2e,
-	0x43, 0x68, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x09, 0x54, 0x6f, 0x43,
-	0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x4e, 0x69,
-	0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x54, 0x6f,
-	0x4e, 0x69, 0x63, 0x6b, 0x4e, 0x61, 0x6d, 0x65, 0x22, 0x88, 0x01, 0x0a, 0x0c, 0x53, 0x43, 0x5f,
-	0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x04, 0x63, 0x6f, 0x64,
-	0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x2e, 0x53,
-	0x43, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x2e, 0x45, 0x72, 0x72, 0x6f,
-	0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x22, 0x46, 0x0a, 0x09, 0x45,
-	0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a, 0x02, 0x4f, 0x4b, 0x10, 0x00,
-	0x12, 0x10, 0x0a, 0x0c, 0x41, 0x63, 0x63, 0x49, 0x44, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64,
-	0x10, 0x01, 0x12, 0x0f, 0x0a, 0x0b, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x52, 0x65, 0x70, 0x65, 0x61,
-	0x74, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x6e, 0x6e, 0x65, 0x72, 0x45, 0x72, 0x72, 0x6f,
-	0x72, 0x10, 0x03, 0x22, 0x94, 0x01, 0x0a, 0x0d, 0x53, 0x43, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x4e,
-	0x65, 0x77, 0x4d, 0x73, 0x67, 0x12, 0x33, 0x0a, 0x0b, 0x46, 0x72, 0x6f, 0x6d, 0x43, 0x68, 0x61,
-	0x6e, 0x6e, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x43, 0x68, 0x61,
-	0x74, 0x2e, 0x43, 0x68, 0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x52, 0x0b, 0x46,
-	0x72, 0x6f, 0x6d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73,
-	0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x12, 0x1e, 0x0a, 0x0a,
-	0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x0a, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1c, 0x0a, 0x09,
-	0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x55, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52,
-	0x09, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x55, 0x69, 0x64, 0x2a, 0x3b, 0x0a, 0x0b, 0x43, 0x68,
-	0x61, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x79, 0x73,
-	0x74, 0x65, 0x6d, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x10, 0x01,
-	0x12, 0x09, 0x0a, 0x05, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x10, 0x02, 0x12, 0x0a, 0x0a, 0x06, 0x53,
-	0x69, 0x6e, 0x67, 0x6c, 0x65, 0x10, 0x03, 0x42, 0x09, 0x5a, 0x07, 0x70, 0x62, 0x2f, 0x43, 0x68,
-	0x61, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_pb_chat_proto_rawDescOnce sync.Once
-	file_pb_chat_proto_rawDescData = file_pb_chat_proto_rawDesc
-)
-
-func file_pb_chat_proto_rawDescGZIP() []byte {
-	file_pb_chat_proto_rawDescOnce.Do(func() {
-		file_pb_chat_proto_rawDescData = protoimpl.X.CompressGZIP(file_pb_chat_proto_rawDescData)
-	})
-	return file_pb_chat_proto_rawDescData
-}
-
-var file_pb_chat_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
-var file_pb_chat_proto_msgTypes = make([]protoimpl.MessageInfo, 4)
-var file_pb_chat_proto_goTypes = []interface{}{
-	(ChatChannel)(0),            // 0: Chat.ChatChannel
-	(SC_ChatLogin_ErrorCode)(0), // 1: Chat.SC_ChatLogin.ErrorCode
-	(*CS_ChatLogin)(nil),        // 2: Chat.CS_ChatLogin
-	(*CS_ChatSendMsg)(nil),      // 3: Chat.CS_ChatSendMsg
-	(*SC_ChatLogin)(nil),        // 4: Chat.SC_ChatLogin
-	(*SC_ChatNewMsg)(nil),       // 5: Chat.SC_ChatNewMsg
-}
-var file_pb_chat_proto_depIdxs = []int32{
-	0, // 0: Chat.CS_ChatSendMsg.ToChannel:type_name -> Chat.ChatChannel
-	1, // 1: Chat.SC_ChatLogin.code:type_name -> Chat.SC_ChatLogin.ErrorCode
-	0, // 2: Chat.SC_ChatNewMsg.FromChannel:type_name -> Chat.ChatChannel
-	3, // [3:3] is the sub-list for method output_type
-	3, // [3:3] is the sub-list for method input_type
-	3, // [3:3] is the sub-list for extension type_name
-	3, // [3:3] is the sub-list for extension extendee
-	0, // [0:3] is the sub-list for field type_name
-}
-
-func init() { file_pb_chat_proto_init() }
-func file_pb_chat_proto_init() {
-	if File_pb_chat_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_pb_chat_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CS_ChatLogin); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_chat_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CS_ChatSendMsg); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_chat_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_ChatLogin); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_chat_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_ChatNewMsg); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_pb_chat_proto_rawDesc,
-			NumEnums:      2,
-			NumMessages:   4,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_pb_chat_proto_goTypes,
-		DependencyIndexes: file_pb_chat_proto_depIdxs,
-		EnumInfos:         file_pb_chat_proto_enumTypes,
-		MessageInfos:      file_pb_chat_proto_msgTypes,
-	}.Build()
-	File_pb_chat_proto = out.File
-	file_pb_chat_proto_rawDesc = nil
-	file_pb_chat_proto_goTypes = nil
-	file_pb_chat_proto_depIdxs = nil
-}

+ 0 - 126
CSserver/PBReferens/pbgo/pb/ErrCode.pb.go

@@ -1,126 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// 	protoc-gen-go v1.27.1
-// 	protoc        v3.3.0
-// source: pb/ErrCode.proto
-
-package pb
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-const (
-	// Verify that this generated code is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
-	// Verify that runtime/protoimpl is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-type ErrCode int32
-
-const (
-	ErrCode_ok           ErrCode = 0
-	ErrCode_OpNotAllowed ErrCode = 1
-)
-
-// Enum value maps for ErrCode.
-var (
-	ErrCode_name = map[int32]string{
-		0: "ok",
-		1: "OpNotAllowed",
-	}
-	ErrCode_value = map[string]int32{
-		"ok":           0,
-		"OpNotAllowed": 1,
-	}
-)
-
-func (x ErrCode) Enum() *ErrCode {
-	p := new(ErrCode)
-	*p = x
-	return p
-}
-
-func (x ErrCode) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (ErrCode) Descriptor() protoreflect.EnumDescriptor {
-	return file_pb_ErrCode_proto_enumTypes[0].Descriptor()
-}
-
-func (ErrCode) Type() protoreflect.EnumType {
-	return &file_pb_ErrCode_proto_enumTypes[0]
-}
-
-func (x ErrCode) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use ErrCode.Descriptor instead.
-func (ErrCode) EnumDescriptor() ([]byte, []int) {
-	return file_pb_ErrCode_proto_rawDescGZIP(), []int{0}
-}
-
-var File_pb_ErrCode_proto protoreflect.FileDescriptor
-
-var file_pb_ErrCode_proto_rawDesc = []byte{
-	0x0a, 0x10, 0x70, 0x62, 0x2f, 0x45, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x2a, 0x23, 0x0a, 0x07, 0x45, 0x72, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x06, 0x0a,
-	0x02, 0x6f, 0x6b, 0x10, 0x00, 0x12, 0x10, 0x0a, 0x0c, 0x4f, 0x70, 0x4e, 0x6f, 0x74, 0x41, 0x6c,
-	0x6c, 0x6f, 0x77, 0x65, 0x64, 0x10, 0x01, 0x42, 0x05, 0x5a, 0x03, 0x2f, 0x70, 0x62, 0x62, 0x06,
-	0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
-}
-
-var (
-	file_pb_ErrCode_proto_rawDescOnce sync.Once
-	file_pb_ErrCode_proto_rawDescData = file_pb_ErrCode_proto_rawDesc
-)
-
-func file_pb_ErrCode_proto_rawDescGZIP() []byte {
-	file_pb_ErrCode_proto_rawDescOnce.Do(func() {
-		file_pb_ErrCode_proto_rawDescData = protoimpl.X.CompressGZIP(file_pb_ErrCode_proto_rawDescData)
-	})
-	return file_pb_ErrCode_proto_rawDescData
-}
-
-var file_pb_ErrCode_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_pb_ErrCode_proto_goTypes = []interface{}{
-	(ErrCode)(0), // 0: ErrCode
-}
-var file_pb_ErrCode_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_pb_ErrCode_proto_init() }
-func file_pb_ErrCode_proto_init() {
-	if File_pb_ErrCode_proto != nil {
-		return
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_pb_ErrCode_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   0,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_pb_ErrCode_proto_goTypes,
-		DependencyIndexes: file_pb_ErrCode_proto_depIdxs,
-		EnumInfos:         file_pb_ErrCode_proto_enumTypes,
-	}.Build()
-	File_pb_ErrCode_proto = out.File
-	file_pb_ErrCode_proto_rawDesc = nil
-	file_pb_ErrCode_proto_goTypes = nil
-	file_pb_ErrCode_proto_depIdxs = nil
-}

+ 0 - 312
CSserver/PBReferens/pbgo/pb/MsgTypeEnum.pb.go

@@ -1,312 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// 	protoc-gen-go v1.27.1
-// 	protoc        v3.3.0
-// source: pb/MsgTypeEnum.proto
-
-package pb
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-const (
-	// Verify that this generated code is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
-	// Verify that runtime/protoimpl is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-// 注意不要超过65535(在socket传输时只分配了2字节 -gwang)
-type EProtocalCommand int32
-
-const (
-	// 无操作
-	EProtocalCommand_noop EProtocalCommand = 0
-	// 登录()
-	EProtocalCommand_CS_Login EProtocalCommand = 1
-	// 上报伤害输出
-	EProtocalCommand_CS_ReportDamage EProtocalCommand = 2
-	// 离开房间(战斗失败结束)
-	EProtocalCommand_CS_LeaveRoom EProtocalCommand = 3
-	// 上报玩家剩余血量
-	EProtocalCommand_CS_ReportUserHp EProtocalCommand = 4
-	// 聊天, 客户端初始化
-	EProtocalCommand_CS_ChatLogin EProtocalCommand = 10
-	// 聊天, 发送消息
-	EProtocalCommand_CS_ChatSendMsg EProtocalCommand = 11
-	// 多人副本,进入大厅(登录自己的uid)
-	EProtocalCommand_CS_MD_EnterLobby EProtocalCommand = 20
-	// 多人副本, 创建房间
-	EProtocalCommand_CS_MD_CreateRoom EProtocalCommand = 21
-	// 多人副本, 申请房间(列表)
-	EProtocalCommand_CS_MD_GetRoomList EProtocalCommand = 22
-	// 多人副本, 加入房间
-	EProtocalCommand_CS_MD_EnterRoom EProtocalCommand = 23
-	// 多人副本, 离开房间
-	EProtocalCommand_CS_MD_LeaveRoom EProtocalCommand = 24
-	// 多人副本, 开始游戏(创建者)
-	EProtocalCommand_CS_MD_BeginDup EProtocalCommand = 25
-	// 战斗服务 登录
-	EProtocalCommand_CS_BT_Login EProtocalCommand = 31
-	// 战斗服务 状态同步
-	EProtocalCommand_CS_BT_Status EProtocalCommand = 32
-	// 战斗服务 位置同步
-	EProtocalCommand_CS_BT_Position EProtocalCommand = 33
-	// 战斗服务 广播
-	EProtocalCommand_CS_BT_BroadCast EProtocalCommand = 34
-	// 战斗服务器 玩家列表更新
-	EProtocalCommand_CS_BT_PeopleList EProtocalCommand = 35
-	// 登录结果
-	EProtocalCommand_SC_Login EProtocalCommand = 100
-	// 更新数据
-	EProtocalCommand_SC_UpdateProperties EProtocalCommand = 101
-	// 游戏结束
-	EProtocalCommand_SC_GameOver EProtocalCommand = 102
-	// 聊天, 登录成功
-	EProtocalCommand_SC_ChatLogin EProtocalCommand = 110
-	// 聊天, 新消息
-	EProtocalCommand_SC_ChatNewMsg EProtocalCommand = 111
-	// ---- 多人副本 ----
-	// 多人副本, 进入大厅(登录自己的uid)
-	EProtocalCommand_SC_MD_EnterLobby EProtocalCommand = 120
-	// 多人副本, 创建房间
-	EProtocalCommand_SC_MD_CreateRoom EProtocalCommand = 121
-	// 多人副本, 申请房间(列表)
-	EProtocalCommand_SC_MD_GetRoomList EProtocalCommand = 122
-	// 多人副本, 加入房间
-	EProtocalCommand_SC_MD_EnterRoom EProtocalCommand = 123
-	// 多人副本, 离开房间
-	EProtocalCommand_SC_MD_LeaveRoom EProtocalCommand = 124
-	// 多人副本, 开始游戏(创建者)
-	EProtocalCommand_SC_MD_BeginDup EProtocalCommand = 125
-	// 战斗服务 登录通知
-	EProtocalCommand_SC_BT_Login EProtocalCommand = 131
-	// 战斗服务 状态同步
-	EProtocalCommand_SC_BT_Status EProtocalCommand = 132
-	// 战斗服务 位置同步
-	EProtocalCommand_SC_BT_Postion EProtocalCommand = 133
-	// 战斗服务 广播
-	EProtocalCommand_SC_BT_BroadCast EProtocalCommand = 134
-	// 战斗服务 玩家列表更新
-	EProtocalCommand_SC_BT_PeopleList EProtocalCommand = 135
-	//////////////   S - S    //////////////////
-	//创建战斗房间
-	EProtocalCommand_SS_CreateBattleRoom EProtocalCommand = 301
-	// 创建房间OK
-	EProtocalCommand_SS_CreateBattleRoomOk EProtocalCommand = 302
-)
-
-// Enum value maps for EProtocalCommand.
-var (
-	EProtocalCommand_name = map[int32]string{
-		0:   "noop",
-		1:   "CS_Login",
-		2:   "CS_ReportDamage",
-		3:   "CS_LeaveRoom",
-		4:   "CS_ReportUserHp",
-		10:  "CS_ChatLogin",
-		11:  "CS_ChatSendMsg",
-		20:  "CS_MD_EnterLobby",
-		21:  "CS_MD_CreateRoom",
-		22:  "CS_MD_GetRoomList",
-		23:  "CS_MD_EnterRoom",
-		24:  "CS_MD_LeaveRoom",
-		25:  "CS_MD_BeginDup",
-		31:  "CS_BT_Login",
-		32:  "CS_BT_Status",
-		33:  "CS_BT_Position",
-		34:  "CS_BT_BroadCast",
-		35:  "CS_BT_PeopleList",
-		100: "SC_Login",
-		101: "SC_UpdateProperties",
-		102: "SC_GameOver",
-		110: "SC_ChatLogin",
-		111: "SC_ChatNewMsg",
-		120: "SC_MD_EnterLobby",
-		121: "SC_MD_CreateRoom",
-		122: "SC_MD_GetRoomList",
-		123: "SC_MD_EnterRoom",
-		124: "SC_MD_LeaveRoom",
-		125: "SC_MD_BeginDup",
-		131: "SC_BT_Login",
-		132: "SC_BT_Status",
-		133: "SC_BT_Postion",
-		134: "SC_BT_BroadCast",
-		135: "SC_BT_PeopleList",
-		301: "SS_CreateBattleRoom",
-		302: "SS_CreateBattleRoomOk",
-	}
-	EProtocalCommand_value = map[string]int32{
-		"noop":                  0,
-		"CS_Login":              1,
-		"CS_ReportDamage":       2,
-		"CS_LeaveRoom":          3,
-		"CS_ReportUserHp":       4,
-		"CS_ChatLogin":          10,
-		"CS_ChatSendMsg":        11,
-		"CS_MD_EnterLobby":      20,
-		"CS_MD_CreateRoom":      21,
-		"CS_MD_GetRoomList":     22,
-		"CS_MD_EnterRoom":       23,
-		"CS_MD_LeaveRoom":       24,
-		"CS_MD_BeginDup":        25,
-		"CS_BT_Login":           31,
-		"CS_BT_Status":          32,
-		"CS_BT_Position":        33,
-		"CS_BT_BroadCast":       34,
-		"CS_BT_PeopleList":      35,
-		"SC_Login":              100,
-		"SC_UpdateProperties":   101,
-		"SC_GameOver":           102,
-		"SC_ChatLogin":          110,
-		"SC_ChatNewMsg":         111,
-		"SC_MD_EnterLobby":      120,
-		"SC_MD_CreateRoom":      121,
-		"SC_MD_GetRoomList":     122,
-		"SC_MD_EnterRoom":       123,
-		"SC_MD_LeaveRoom":       124,
-		"SC_MD_BeginDup":        125,
-		"SC_BT_Login":           131,
-		"SC_BT_Status":          132,
-		"SC_BT_Postion":         133,
-		"SC_BT_BroadCast":       134,
-		"SC_BT_PeopleList":      135,
-		"SS_CreateBattleRoom":   301,
-		"SS_CreateBattleRoomOk": 302,
-	}
-)
-
-func (x EProtocalCommand) Enum() *EProtocalCommand {
-	p := new(EProtocalCommand)
-	*p = x
-	return p
-}
-
-func (x EProtocalCommand) String() string {
-	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
-}
-
-func (EProtocalCommand) Descriptor() protoreflect.EnumDescriptor {
-	return file_pb_MsgTypeEnum_proto_enumTypes[0].Descriptor()
-}
-
-func (EProtocalCommand) Type() protoreflect.EnumType {
-	return &file_pb_MsgTypeEnum_proto_enumTypes[0]
-}
-
-func (x EProtocalCommand) Number() protoreflect.EnumNumber {
-	return protoreflect.EnumNumber(x)
-}
-
-// Deprecated: Use EProtocalCommand.Descriptor instead.
-func (EProtocalCommand) EnumDescriptor() ([]byte, []int) {
-	return file_pb_MsgTypeEnum_proto_rawDescGZIP(), []int{0}
-}
-
-var File_pb_MsgTypeEnum_proto protoreflect.FileDescriptor
-
-var file_pb_MsgTypeEnum_proto_rawDesc = []byte{
-	0x0a, 0x14, 0x70, 0x62, 0x2f, 0x4d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d,
-	0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2a, 0xe9, 0x05, 0x0a, 0x10, 0x65, 0x50, 0x72, 0x6f, 0x74,
-	0x6f, 0x63, 0x61, 0x6c, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x08, 0x0a, 0x04, 0x6e,
-	0x6f, 0x6f, 0x70, 0x10, 0x00, 0x12, 0x0c, 0x0a, 0x08, 0x43, 0x53, 0x5f, 0x4c, 0x6f, 0x67, 0x69,
-	0x6e, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x53, 0x5f, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74,
-	0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x10, 0x02, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x53, 0x5f, 0x4c,
-	0x65, 0x61, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x10, 0x03, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x53,
-	0x5f, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x55, 0x73, 0x65, 0x72, 0x48, 0x70, 0x10, 0x04, 0x12,
-	0x10, 0x0a, 0x0c, 0x43, 0x53, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x10,
-	0x0a, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x53, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x53, 0x65, 0x6e, 0x64,
-	0x4d, 0x73, 0x67, 0x10, 0x0b, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x53, 0x5f, 0x4d, 0x44, 0x5f, 0x45,
-	0x6e, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x62, 0x62, 0x79, 0x10, 0x14, 0x12, 0x14, 0x0a, 0x10, 0x43,
-	0x53, 0x5f, 0x4d, 0x44, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x10,
-	0x15, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x53, 0x5f, 0x4d, 0x44, 0x5f, 0x47, 0x65, 0x74, 0x52, 0x6f,
-	0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x16, 0x12, 0x13, 0x0a, 0x0f, 0x43, 0x53, 0x5f, 0x4d,
-	0x44, 0x5f, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6f, 0x6d, 0x10, 0x17, 0x12, 0x13, 0x0a,
-	0x0f, 0x43, 0x53, 0x5f, 0x4d, 0x44, 0x5f, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x6d,
-	0x10, 0x18, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x53, 0x5f, 0x4d, 0x44, 0x5f, 0x42, 0x65, 0x67, 0x69,
-	0x6e, 0x44, 0x75, 0x70, 0x10, 0x19, 0x12, 0x0f, 0x0a, 0x0b, 0x43, 0x53, 0x5f, 0x42, 0x54, 0x5f,
-	0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x10, 0x1f, 0x12, 0x10, 0x0a, 0x0c, 0x43, 0x53, 0x5f, 0x42, 0x54,
-	0x5f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x20, 0x12, 0x12, 0x0a, 0x0e, 0x43, 0x53, 0x5f,
-	0x42, 0x54, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x21, 0x12, 0x13, 0x0a,
-	0x0f, 0x43, 0x53, 0x5f, 0x42, 0x54, 0x5f, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x73, 0x74,
-	0x10, 0x22, 0x12, 0x14, 0x0a, 0x10, 0x43, 0x53, 0x5f, 0x42, 0x54, 0x5f, 0x50, 0x65, 0x6f, 0x70,
-	0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x23, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x43, 0x5f, 0x4c,
-	0x6f, 0x67, 0x69, 0x6e, 0x10, 0x64, 0x12, 0x17, 0x0a, 0x13, 0x53, 0x43, 0x5f, 0x55, 0x70, 0x64,
-	0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x69, 0x65, 0x73, 0x10, 0x65, 0x12,
-	0x0f, 0x0a, 0x0b, 0x53, 0x43, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x4f, 0x76, 0x65, 0x72, 0x10, 0x66,
-	0x12, 0x10, 0x0a, 0x0c, 0x53, 0x43, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x69, 0x6e,
-	0x10, 0x6e, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x43, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x4e, 0x65, 0x77,
-	0x4d, 0x73, 0x67, 0x10, 0x6f, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x43, 0x5f, 0x4d, 0x44, 0x5f, 0x45,
-	0x6e, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x62, 0x62, 0x79, 0x10, 0x78, 0x12, 0x14, 0x0a, 0x10, 0x53,
-	0x43, 0x5f, 0x4d, 0x44, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x10,
-	0x79, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x43, 0x5f, 0x4d, 0x44, 0x5f, 0x47, 0x65, 0x74, 0x52, 0x6f,
-	0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x7a, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x43, 0x5f, 0x4d,
-	0x44, 0x5f, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6f, 0x6d, 0x10, 0x7b, 0x12, 0x13, 0x0a,
-	0x0f, 0x53, 0x43, 0x5f, 0x4d, 0x44, 0x5f, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x6d,
-	0x10, 0x7c, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x43, 0x5f, 0x4d, 0x44, 0x5f, 0x42, 0x65, 0x67, 0x69,
-	0x6e, 0x44, 0x75, 0x70, 0x10, 0x7d, 0x12, 0x10, 0x0a, 0x0b, 0x53, 0x43, 0x5f, 0x42, 0x54, 0x5f,
-	0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x10, 0x83, 0x01, 0x12, 0x11, 0x0a, 0x0c, 0x53, 0x43, 0x5f, 0x42,
-	0x54, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0x84, 0x01, 0x12, 0x12, 0x0a, 0x0d, 0x53,
-	0x43, 0x5f, 0x42, 0x54, 0x5f, 0x50, 0x6f, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x85, 0x01, 0x12,
-	0x14, 0x0a, 0x0f, 0x53, 0x43, 0x5f, 0x42, 0x54, 0x5f, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x43, 0x61,
-	0x73, 0x74, 0x10, 0x86, 0x01, 0x12, 0x15, 0x0a, 0x10, 0x53, 0x43, 0x5f, 0x42, 0x54, 0x5f, 0x50,
-	0x65, 0x6f, 0x70, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x10, 0x87, 0x01, 0x12, 0x18, 0x0a, 0x13,
-	0x53, 0x53, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52,
-	0x6f, 0x6f, 0x6d, 0x10, 0xad, 0x02, 0x12, 0x1a, 0x0a, 0x15, 0x53, 0x53, 0x5f, 0x43, 0x72, 0x65,
-	0x61, 0x74, 0x65, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x4f, 0x6b, 0x10,
-	0xae, 0x02, 0x42, 0x05, 0x5a, 0x03, 0x2f, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-	0x33,
-}
-
-var (
-	file_pb_MsgTypeEnum_proto_rawDescOnce sync.Once
-	file_pb_MsgTypeEnum_proto_rawDescData = file_pb_MsgTypeEnum_proto_rawDesc
-)
-
-func file_pb_MsgTypeEnum_proto_rawDescGZIP() []byte {
-	file_pb_MsgTypeEnum_proto_rawDescOnce.Do(func() {
-		file_pb_MsgTypeEnum_proto_rawDescData = protoimpl.X.CompressGZIP(file_pb_MsgTypeEnum_proto_rawDescData)
-	})
-	return file_pb_MsgTypeEnum_proto_rawDescData
-}
-
-var file_pb_MsgTypeEnum_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
-var file_pb_MsgTypeEnum_proto_goTypes = []interface{}{
-	(EProtocalCommand)(0), // 0: eProtocalCommand
-}
-var file_pb_MsgTypeEnum_proto_depIdxs = []int32{
-	0, // [0:0] is the sub-list for method output_type
-	0, // [0:0] is the sub-list for method input_type
-	0, // [0:0] is the sub-list for extension type_name
-	0, // [0:0] is the sub-list for extension extendee
-	0, // [0:0] is the sub-list for field type_name
-}
-
-func init() { file_pb_MsgTypeEnum_proto_init() }
-func file_pb_MsgTypeEnum_proto_init() {
-	if File_pb_MsgTypeEnum_proto != nil {
-		return
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_pb_MsgTypeEnum_proto_rawDesc,
-			NumEnums:      1,
-			NumMessages:   0,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_pb_MsgTypeEnum_proto_goTypes,
-		DependencyIndexes: file_pb_MsgTypeEnum_proto_depIdxs,
-		EnumInfos:         file_pb_MsgTypeEnum_proto_enumTypes,
-	}.Build()
-	File_pb_MsgTypeEnum_proto = out.File
-	file_pb_MsgTypeEnum_proto_rawDesc = nil
-	file_pb_MsgTypeEnum_proto_goTypes = nil
-	file_pb_MsgTypeEnum_proto_depIdxs = nil
-}

+ 0 - 2286
CSserver/PBReferens/pbgo/pb/MultiDup/MultiDup.pb.go

@@ -1,2286 +0,0 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
-// versions:
-// 	protoc-gen-go v1.27.1
-// 	protoc        v3.3.0
-// source: pb/MultiDup.proto
-
-// 多人副本
-
-package MultiDup
-
-import (
-	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
-	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
-	reflect "reflect"
-	sync "sync"
-)
-
-const (
-	// Verify that this generated code is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
-	// Verify that runtime/protoimpl is sufficiently up-to-date.
-	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
-)
-
-//
-// 进入大厅(注册下自己的uid)
-type CS_MD_EnterLobby struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	Uid    string `protobuf:"bytes,2,opt,name=Uid,proto3" json:"Uid,omitempty"`
-}
-
-func (x *CS_MD_EnterLobby) Reset() {
-	*x = CS_MD_EnterLobby{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[0]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CS_MD_EnterLobby) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CS_MD_EnterLobby) ProtoMessage() {}
-
-func (x *CS_MD_EnterLobby) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[0]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CS_MD_EnterLobby.ProtoReflect.Descriptor instead.
-func (*CS_MD_EnterLobby) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{0}
-}
-
-func (x *CS_MD_EnterLobby) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *CS_MD_EnterLobby) GetUid() string {
-	if x != nil {
-		return x.Uid
-	}
-	return ""
-}
-
-// 多人副本, 创建房间
-type CS_MD_CreateRoom struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"` // zoneid
-	Uid    string `protobuf:"bytes,2,opt,name=Uid,proto3" json:"Uid,omitempty"`        // 玩家id
-	Mapid  int32  `protobuf:"varint,3,opt,name=Mapid,proto3" json:"Mapid,omitempty"`   // 地图id
-}
-
-func (x *CS_MD_CreateRoom) Reset() {
-	*x = CS_MD_CreateRoom{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[1]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CS_MD_CreateRoom) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CS_MD_CreateRoom) ProtoMessage() {}
-
-func (x *CS_MD_CreateRoom) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[1]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CS_MD_CreateRoom.ProtoReflect.Descriptor instead.
-func (*CS_MD_CreateRoom) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{1}
-}
-
-func (x *CS_MD_CreateRoom) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *CS_MD_CreateRoom) GetUid() string {
-	if x != nil {
-		return x.Uid
-	}
-	return ""
-}
-
-func (x *CS_MD_CreateRoom) GetMapid() int32 {
-	if x != nil {
-		return x.Mapid
-	}
-	return 0
-}
-
-// 多人副本, 申请房间(列表)
-type CS_MD_GetRoomList struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	Uid    string `protobuf:"bytes,2,opt,name=Uid,proto3" json:"Uid,omitempty"`
-}
-
-func (x *CS_MD_GetRoomList) Reset() {
-	*x = CS_MD_GetRoomList{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[2]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CS_MD_GetRoomList) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CS_MD_GetRoomList) ProtoMessage() {}
-
-func (x *CS_MD_GetRoomList) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[2]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CS_MD_GetRoomList.ProtoReflect.Descriptor instead.
-func (*CS_MD_GetRoomList) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{2}
-}
-
-func (x *CS_MD_GetRoomList) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *CS_MD_GetRoomList) GetUid() string {
-	if x != nil {
-		return x.Uid
-	}
-	return ""
-}
-
-// 多人副本, 加入房间
-type CS_MD_EnterRoom struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	Uid    string `protobuf:"bytes,2,opt,name=Uid,proto3" json:"Uid,omitempty"`
-	RoomId int32  `protobuf:"varint,3,opt,name=RoomId,proto3" json:"RoomId,omitempty"` // 房间id
-}
-
-func (x *CS_MD_EnterRoom) Reset() {
-	*x = CS_MD_EnterRoom{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[3]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CS_MD_EnterRoom) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CS_MD_EnterRoom) ProtoMessage() {}
-
-func (x *CS_MD_EnterRoom) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[3]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CS_MD_EnterRoom.ProtoReflect.Descriptor instead.
-func (*CS_MD_EnterRoom) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{3}
-}
-
-func (x *CS_MD_EnterRoom) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *CS_MD_EnterRoom) GetUid() string {
-	if x != nil {
-		return x.Uid
-	}
-	return ""
-}
-
-func (x *CS_MD_EnterRoom) GetRoomId() int32 {
-	if x != nil {
-		return x.RoomId
-	}
-	return 0
-}
-
-// 多人副本, 离开房间
-type CS_MD_LeaveRoom struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	Uid    string `protobuf:"bytes,2,opt,name=Uid,proto3" json:"Uid,omitempty"` //int32 RoomId=3;    // 房间id (理论上已经处于房间中不需要此字段)
-}
-
-func (x *CS_MD_LeaveRoom) Reset() {
-	*x = CS_MD_LeaveRoom{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[4]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CS_MD_LeaveRoom) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CS_MD_LeaveRoom) ProtoMessage() {}
-
-func (x *CS_MD_LeaveRoom) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[4]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CS_MD_LeaveRoom.ProtoReflect.Descriptor instead.
-func (*CS_MD_LeaveRoom) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{4}
-}
-
-func (x *CS_MD_LeaveRoom) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *CS_MD_LeaveRoom) GetUid() string {
-	if x != nil {
-		return x.Uid
-	}
-	return ""
-}
-
-// 多人副本, 开始游戏(创建者)
-type CS_MD_BeginDup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	Uid    string `protobuf:"bytes,2,opt,name=Uid,proto3" json:"Uid,omitempty"` //int32 RoomId=3;    // 房间id (理论上已经处于房间中不需要此字段)
-}
-
-func (x *CS_MD_BeginDup) Reset() {
-	*x = CS_MD_BeginDup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[5]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CS_MD_BeginDup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CS_MD_BeginDup) ProtoMessage() {}
-
-func (x *CS_MD_BeginDup) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[5]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CS_MD_BeginDup.ProtoReflect.Descriptor instead.
-func (*CS_MD_BeginDup) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{5}
-}
-
-func (x *CS_MD_BeginDup) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *CS_MD_BeginDup) GetUid() string {
-	if x != nil {
-		return x.Uid
-	}
-	return ""
-}
-
-type CS_BT_Login struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	Uid    string `protobuf:"bytes,2,opt,name=Uid,proto3" json:"Uid,omitempty"`
-	Msg    string `protobuf:"bytes,3,opt,name=Msg,proto3" json:"Msg,omitempty"`
-}
-
-func (x *CS_BT_Login) Reset() {
-	*x = CS_BT_Login{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[6]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CS_BT_Login) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CS_BT_Login) ProtoMessage() {}
-
-func (x *CS_BT_Login) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[6]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CS_BT_Login.ProtoReflect.Descriptor instead.
-func (*CS_BT_Login) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{6}
-}
-
-func (x *CS_BT_Login) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *CS_BT_Login) GetUid() string {
-	if x != nil {
-		return x.Uid
-	}
-	return ""
-}
-
-func (x *CS_BT_Login) GetMsg() string {
-	if x != nil {
-		return x.Msg
-	}
-	return ""
-}
-
-// 查询组队列表
-type CS_BT_PeopleList struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	Uid    string `protobuf:"bytes,2,opt,name=Uid,proto3" json:"Uid,omitempty"`
-}
-
-func (x *CS_BT_PeopleList) Reset() {
-	*x = CS_BT_PeopleList{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[7]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CS_BT_PeopleList) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CS_BT_PeopleList) ProtoMessage() {}
-
-func (x *CS_BT_PeopleList) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[7]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CS_BT_PeopleList.ProtoReflect.Descriptor instead.
-func (*CS_BT_PeopleList) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{7}
-}
-
-func (x *CS_BT_PeopleList) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *CS_BT_PeopleList) GetUid() string {
-	if x != nil {
-		return x.Uid
-	}
-	return ""
-}
-
-type CS_BT_Status struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid       int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	SenderUid    string `protobuf:"bytes,2,opt,name=SenderUid,proto3" json:"SenderUid,omitempty"`
-	PropertyName string `protobuf:"bytes,3,opt,name=PropertyName,proto3" json:"PropertyName,omitempty"`
-	Value        string `protobuf:"bytes,4,opt,name=Value,proto3" json:"Value,omitempty"`
-}
-
-func (x *CS_BT_Status) Reset() {
-	*x = CS_BT_Status{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[8]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CS_BT_Status) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CS_BT_Status) ProtoMessage() {}
-
-func (x *CS_BT_Status) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[8]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CS_BT_Status.ProtoReflect.Descriptor instead.
-func (*CS_BT_Status) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{8}
-}
-
-func (x *CS_BT_Status) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *CS_BT_Status) GetSenderUid() string {
-	if x != nil {
-		return x.SenderUid
-	}
-	return ""
-}
-
-func (x *CS_BT_Status) GetPropertyName() string {
-	if x != nil {
-		return x.PropertyName
-	}
-	return ""
-}
-
-func (x *CS_BT_Status) GetValue() string {
-	if x != nil {
-		return x.Value
-	}
-	return ""
-}
-
-type CS_BT_Position struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid    int32   `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	SenderUid string  `protobuf:"bytes,2,opt,name=SenderUid,proto3" json:"SenderUid,omitempty"`
-	X         float32 `protobuf:"fixed32,3,opt,name=X,proto3" json:"X,omitempty"`
-	Y         float32 `protobuf:"fixed32,4,opt,name=Y,proto3" json:"Y,omitempty"`
-	Z         float32 `protobuf:"fixed32,5,opt,name=Z,proto3" json:"Z,omitempty"`
-}
-
-func (x *CS_BT_Position) Reset() {
-	*x = CS_BT_Position{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[9]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CS_BT_Position) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CS_BT_Position) ProtoMessage() {}
-
-func (x *CS_BT_Position) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[9]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CS_BT_Position.ProtoReflect.Descriptor instead.
-func (*CS_BT_Position) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{9}
-}
-
-func (x *CS_BT_Position) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *CS_BT_Position) GetSenderUid() string {
-	if x != nil {
-		return x.SenderUid
-	}
-	return ""
-}
-
-func (x *CS_BT_Position) GetX() float32 {
-	if x != nil {
-		return x.X
-	}
-	return 0
-}
-
-func (x *CS_BT_Position) GetY() float32 {
-	if x != nil {
-		return x.Y
-	}
-	return 0
-}
-
-func (x *CS_BT_Position) GetZ() float32 {
-	if x != nil {
-		return x.Z
-	}
-	return 0
-}
-
-// 战斗服务, 广播
-type CS_BT_BroadCast struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid    int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	SenderUid string `protobuf:"bytes,2,opt,name=SenderUid,proto3" json:"SenderUid,omitempty"`
-	Msg       string `protobuf:"bytes,3,opt,name=Msg,proto3" json:"Msg,omitempty"`
-}
-
-func (x *CS_BT_BroadCast) Reset() {
-	*x = CS_BT_BroadCast{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[10]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CS_BT_BroadCast) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CS_BT_BroadCast) ProtoMessage() {}
-
-func (x *CS_BT_BroadCast) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[10]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CS_BT_BroadCast.ProtoReflect.Descriptor instead.
-func (*CS_BT_BroadCast) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{10}
-}
-
-func (x *CS_BT_BroadCast) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *CS_BT_BroadCast) GetSenderUid() string {
-	if x != nil {
-		return x.SenderUid
-	}
-	return ""
-}
-
-func (x *CS_BT_BroadCast) GetMsg() string {
-	if x != nil {
-		return x.Msg
-	}
-	return ""
-}
-
-type CS_BT_Over struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid    int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	SenderUid string `protobuf:"bytes,2,opt,name=SenderUid,proto3" json:"SenderUid,omitempty"`
-	Msg       string `protobuf:"bytes,3,opt,name=Msg,proto3" json:"Msg,omitempty"`
-}
-
-func (x *CS_BT_Over) Reset() {
-	*x = CS_BT_Over{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[11]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *CS_BT_Over) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*CS_BT_Over) ProtoMessage() {}
-
-func (x *CS_BT_Over) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[11]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use CS_BT_Over.ProtoReflect.Descriptor instead.
-func (*CS_BT_Over) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{11}
-}
-
-func (x *CS_BT_Over) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *CS_BT_Over) GetSenderUid() string {
-	if x != nil {
-		return x.SenderUid
-	}
-	return ""
-}
-
-func (x *CS_BT_Over) GetMsg() string {
-	if x != nil {
-		return x.Msg
-	}
-	return ""
-}
-
-//
-// 加入房间成功
-type SC_MD_EnterLobby struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *SC_MD_EnterLobby) Reset() {
-	*x = SC_MD_EnterLobby{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[12]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_MD_EnterLobby) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_MD_EnterLobby) ProtoMessage() {}
-
-func (x *SC_MD_EnterLobby) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[12]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_MD_EnterLobby.ProtoReflect.Descriptor instead.
-func (*SC_MD_EnterLobby) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{12}
-}
-
-// 多人副本, 创建房间
-type SC_MD_CreateRoom struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	Uid    string `protobuf:"bytes,2,opt,name=Uid,proto3" json:"Uid,omitempty"`
-	Mapid  int32  `protobuf:"varint,3,opt,name=Mapid,proto3" json:"Mapid,omitempty"`
-	RoomId int32  `protobuf:"varint,4,opt,name=RoomId,proto3" json:"RoomId,omitempty"` // 房间id (服务端分配)
-}
-
-func (x *SC_MD_CreateRoom) Reset() {
-	*x = SC_MD_CreateRoom{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[13]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_MD_CreateRoom) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_MD_CreateRoom) ProtoMessage() {}
-
-func (x *SC_MD_CreateRoom) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[13]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_MD_CreateRoom.ProtoReflect.Descriptor instead.
-func (*SC_MD_CreateRoom) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{13}
-}
-
-func (x *SC_MD_CreateRoom) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *SC_MD_CreateRoom) GetUid() string {
-	if x != nil {
-		return x.Uid
-	}
-	return ""
-}
-
-func (x *SC_MD_CreateRoom) GetMapid() int32 {
-	if x != nil {
-		return x.Mapid
-	}
-	return 0
-}
-
-func (x *SC_MD_CreateRoom) GetRoomId() int32 {
-	if x != nil {
-		return x.RoomId
-	}
-	return 0
-}
-
-// 多人副本, 申请房间(列表)
-type SC_MD_GetRoomList struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	RoomInfos []*SC_MD_GetRoomList_RoomInfo `protobuf:"bytes,1,rep,name=RoomInfos,proto3" json:"RoomInfos,omitempty"`
-}
-
-func (x *SC_MD_GetRoomList) Reset() {
-	*x = SC_MD_GetRoomList{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[14]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_MD_GetRoomList) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_MD_GetRoomList) ProtoMessage() {}
-
-func (x *SC_MD_GetRoomList) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[14]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_MD_GetRoomList.ProtoReflect.Descriptor instead.
-func (*SC_MD_GetRoomList) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{14}
-}
-
-func (x *SC_MD_GetRoomList) GetRoomInfos() []*SC_MD_GetRoomList_RoomInfo {
-	if x != nil {
-		return x.RoomInfos
-	}
-	return nil
-}
-
-// 多人副本, 加入房间
-type SC_MD_EnterRoom struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid     int32    `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	Uid        string   `protobuf:"bytes,2,opt,name=Uid,proto3" json:"Uid,omitempty"` // (新进id)
-	Mapid      int32    `protobuf:"varint,3,opt,name=Mapid,proto3" json:"Mapid,omitempty"`
-	Ip         string   `protobuf:"bytes,4,opt,name=Ip,proto3" json:"Ip,omitempty"`      // 战斗服务器ip
-	Port       int32    `protobuf:"varint,5,opt,name=Port,proto3" json:"Port,omitempty"` // 战斗服务器端口
-	PlayerUids []string `protobuf:"bytes,6,rep,name=PlayerUids,proto3" json:"PlayerUids,omitempty"`
-}
-
-func (x *SC_MD_EnterRoom) Reset() {
-	*x = SC_MD_EnterRoom{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[15]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_MD_EnterRoom) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_MD_EnterRoom) ProtoMessage() {}
-
-func (x *SC_MD_EnterRoom) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[15]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_MD_EnterRoom.ProtoReflect.Descriptor instead.
-func (*SC_MD_EnterRoom) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{15}
-}
-
-func (x *SC_MD_EnterRoom) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *SC_MD_EnterRoom) GetUid() string {
-	if x != nil {
-		return x.Uid
-	}
-	return ""
-}
-
-func (x *SC_MD_EnterRoom) GetMapid() int32 {
-	if x != nil {
-		return x.Mapid
-	}
-	return 0
-}
-
-func (x *SC_MD_EnterRoom) GetIp() string {
-	if x != nil {
-		return x.Ip
-	}
-	return ""
-}
-
-func (x *SC_MD_EnterRoom) GetPort() int32 {
-	if x != nil {
-		return x.Port
-	}
-	return 0
-}
-
-func (x *SC_MD_EnterRoom) GetPlayerUids() []string {
-	if x != nil {
-		return x.PlayerUids
-	}
-	return nil
-}
-
-// 多人副本, 离开房间
-type SC_MD_LeaveRoom struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	Uid    string `protobuf:"bytes,2,opt,name=Uid,proto3" json:"Uid,omitempty"` // (离开id)
-}
-
-func (x *SC_MD_LeaveRoom) Reset() {
-	*x = SC_MD_LeaveRoom{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[16]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_MD_LeaveRoom) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_MD_LeaveRoom) ProtoMessage() {}
-
-func (x *SC_MD_LeaveRoom) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[16]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_MD_LeaveRoom.ProtoReflect.Descriptor instead.
-func (*SC_MD_LeaveRoom) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{16}
-}
-
-func (x *SC_MD_LeaveRoom) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *SC_MD_LeaveRoom) GetUid() string {
-	if x != nil {
-		return x.Uid
-	}
-	return ""
-}
-
-// 多人副本, 开始游戏(创建者)
-type SC_MD_BeginDup struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Battleserver     string `protobuf:"bytes,1,opt,name=Battleserver,proto3" json:"Battleserver,omitempty"`
-	BattleServerPort int32  `protobuf:"varint,2,opt,name=BattleServerPort,proto3" json:"BattleServerPort,omitempty"`
-	Mapid            int32  `protobuf:"varint,3,opt,name=Mapid,proto3" json:"Mapid,omitempty"`
-}
-
-func (x *SC_MD_BeginDup) Reset() {
-	*x = SC_MD_BeginDup{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[17]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_MD_BeginDup) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_MD_BeginDup) ProtoMessage() {}
-
-func (x *SC_MD_BeginDup) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[17]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_MD_BeginDup.ProtoReflect.Descriptor instead.
-func (*SC_MD_BeginDup) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{17}
-}
-
-func (x *SC_MD_BeginDup) GetBattleserver() string {
-	if x != nil {
-		return x.Battleserver
-	}
-	return ""
-}
-
-func (x *SC_MD_BeginDup) GetBattleServerPort() int32 {
-	if x != nil {
-		return x.BattleServerPort
-	}
-	return 0
-}
-
-func (x *SC_MD_BeginDup) GetMapid() int32 {
-	if x != nil {
-		return x.Mapid
-	}
-	return 0
-}
-
-type SC_BT_Login struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	Uid    string `protobuf:"bytes,2,opt,name=Uid,proto3" json:"Uid,omitempty"`
-	Msg    string `protobuf:"bytes,3,opt,name=Msg,proto3" json:"Msg,omitempty"`
-}
-
-func (x *SC_BT_Login) Reset() {
-	*x = SC_BT_Login{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[18]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_BT_Login) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_BT_Login) ProtoMessage() {}
-
-func (x *SC_BT_Login) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[18]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_BT_Login.ProtoReflect.Descriptor instead.
-func (*SC_BT_Login) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{18}
-}
-
-func (x *SC_BT_Login) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *SC_BT_Login) GetUid() string {
-	if x != nil {
-		return x.Uid
-	}
-	return ""
-}
-
-func (x *SC_BT_Login) GetMsg() string {
-	if x != nil {
-		return x.Msg
-	}
-	return ""
-}
-
-// 战斗服务器, 玩家列表更新
-type SC_BT_PeopleList struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid     int32    `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	NewerUid   string   `protobuf:"bytes,2,opt,name=NewerUid,proto3" json:"NewerUid,omitempty"` // (新进id)
-	PlayerUids []string `protobuf:"bytes,3,rep,name=PlayerUids,proto3" json:"PlayerUids,omitempty"`
-}
-
-func (x *SC_BT_PeopleList) Reset() {
-	*x = SC_BT_PeopleList{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[19]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_BT_PeopleList) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_BT_PeopleList) ProtoMessage() {}
-
-func (x *SC_BT_PeopleList) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[19]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_BT_PeopleList.ProtoReflect.Descriptor instead.
-func (*SC_BT_PeopleList) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{19}
-}
-
-func (x *SC_BT_PeopleList) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *SC_BT_PeopleList) GetNewerUid() string {
-	if x != nil {
-		return x.NewerUid
-	}
-	return ""
-}
-
-func (x *SC_BT_PeopleList) GetPlayerUids() []string {
-	if x != nil {
-		return x.PlayerUids
-	}
-	return nil
-}
-
-// 战斗服务 同步状态
-type SC_BT_Status struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid    int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	SenderUid string `protobuf:"bytes,2,opt,name=SenderUid,proto3" json:"SenderUid,omitempty"`
-	// 属性名称
-	PropertyName string `protobuf:"bytes,3,opt,name=PropertyName,proto3" json:"PropertyName,omitempty"`
-	// 属性值
-	Value string `protobuf:"bytes,4,opt,name=Value,proto3" json:"Value,omitempty"`
-}
-
-func (x *SC_BT_Status) Reset() {
-	*x = SC_BT_Status{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[20]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_BT_Status) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_BT_Status) ProtoMessage() {}
-
-func (x *SC_BT_Status) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[20]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_BT_Status.ProtoReflect.Descriptor instead.
-func (*SC_BT_Status) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{20}
-}
-
-func (x *SC_BT_Status) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *SC_BT_Status) GetSenderUid() string {
-	if x != nil {
-		return x.SenderUid
-	}
-	return ""
-}
-
-func (x *SC_BT_Status) GetPropertyName() string {
-	if x != nil {
-		return x.PropertyName
-	}
-	return ""
-}
-
-func (x *SC_BT_Status) GetValue() string {
-	if x != nil {
-		return x.Value
-	}
-	return ""
-}
-
-// 战斗服务 同步位置
-type SC_BT_Position struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32 `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	// 发送者uid
-	SenderUid string  `protobuf:"bytes,2,opt,name=SenderUid,proto3" json:"SenderUid,omitempty"`
-	X         float32 `protobuf:"fixed32,3,opt,name=X,proto3" json:"X,omitempty"`
-	Y         float32 `protobuf:"fixed32,4,opt,name=Y,proto3" json:"Y,omitempty"`
-	Z         float32 `protobuf:"fixed32,5,opt,name=Z,proto3" json:"Z,omitempty"`
-}
-
-func (x *SC_BT_Position) Reset() {
-	*x = SC_BT_Position{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[21]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_BT_Position) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_BT_Position) ProtoMessage() {}
-
-func (x *SC_BT_Position) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[21]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_BT_Position.ProtoReflect.Descriptor instead.
-func (*SC_BT_Position) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{21}
-}
-
-func (x *SC_BT_Position) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *SC_BT_Position) GetSenderUid() string {
-	if x != nil {
-		return x.SenderUid
-	}
-	return ""
-}
-
-func (x *SC_BT_Position) GetX() float32 {
-	if x != nil {
-		return x.X
-	}
-	return 0
-}
-
-func (x *SC_BT_Position) GetY() float32 {
-	if x != nil {
-		return x.Y
-	}
-	return 0
-}
-
-func (x *SC_BT_Position) GetZ() float32 {
-	if x != nil {
-		return x.Z
-	}
-	return 0
-}
-
-// 战斗服务 广播
-type SC_BT_BroadCast struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid int32 `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	// 发送者uid
-	SenderUid string `protobuf:"bytes,2,opt,name=SenderUid,proto3" json:"SenderUid,omitempty"`
-	Msg       string `protobuf:"bytes,3,opt,name=Msg,proto3" json:"Msg,omitempty"`
-}
-
-func (x *SC_BT_BroadCast) Reset() {
-	*x = SC_BT_BroadCast{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[22]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_BT_BroadCast) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_BT_BroadCast) ProtoMessage() {}
-
-func (x *SC_BT_BroadCast) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[22]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_BT_BroadCast.ProtoReflect.Descriptor instead.
-func (*SC_BT_BroadCast) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{22}
-}
-
-func (x *SC_BT_BroadCast) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *SC_BT_BroadCast) GetSenderUid() string {
-	if x != nil {
-		return x.SenderUid
-	}
-	return ""
-}
-
-func (x *SC_BT_BroadCast) GetMsg() string {
-	if x != nil {
-		return x.Msg
-	}
-	return ""
-}
-
-// 战斗服务,结束
-type SC_BT_Over struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	Zoneid    int32  `protobuf:"varint,1,opt,name=Zoneid,proto3" json:"Zoneid,omitempty"`
-	SenderUid string `protobuf:"bytes,2,opt,name=SenderUid,proto3" json:"SenderUid,omitempty"`
-	Msg       string `protobuf:"bytes,3,opt,name=Msg,proto3" json:"Msg,omitempty"`
-}
-
-func (x *SC_BT_Over) Reset() {
-	*x = SC_BT_Over{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[23]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_BT_Over) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_BT_Over) ProtoMessage() {}
-
-func (x *SC_BT_Over) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[23]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_BT_Over.ProtoReflect.Descriptor instead.
-func (*SC_BT_Over) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{23}
-}
-
-func (x *SC_BT_Over) GetZoneid() int32 {
-	if x != nil {
-		return x.Zoneid
-	}
-	return 0
-}
-
-func (x *SC_BT_Over) GetSenderUid() string {
-	if x != nil {
-		return x.SenderUid
-	}
-	return ""
-}
-
-func (x *SC_BT_Over) GetMsg() string {
-	if x != nil {
-		return x.Msg
-	}
-	return ""
-}
-
-// 多人副本在战斗服创建房间
-type SS_CreateBattleServer struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	RoomId     int32    `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"`
-	PlayerUids []string `protobuf:"bytes,2,rep,name=PlayerUids,proto3" json:"PlayerUids,omitempty"`
-}
-
-func (x *SS_CreateBattleServer) Reset() {
-	*x = SS_CreateBattleServer{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[24]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SS_CreateBattleServer) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SS_CreateBattleServer) ProtoMessage() {}
-
-func (x *SS_CreateBattleServer) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[24]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SS_CreateBattleServer.ProtoReflect.Descriptor instead.
-func (*SS_CreateBattleServer) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{24}
-}
-
-func (x *SS_CreateBattleServer) GetRoomId() int32 {
-	if x != nil {
-		return x.RoomId
-	}
-	return 0
-}
-
-func (x *SS_CreateBattleServer) GetPlayerUids() []string {
-	if x != nil {
-		return x.PlayerUids
-	}
-	return nil
-}
-
-// 多人副本,创建战斗房间OK
-type SS_CreateBattleServerOK struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-}
-
-func (x *SS_CreateBattleServerOK) Reset() {
-	*x = SS_CreateBattleServerOK{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[25]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SS_CreateBattleServerOK) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SS_CreateBattleServerOK) ProtoMessage() {}
-
-func (x *SS_CreateBattleServerOK) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[25]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SS_CreateBattleServerOK.ProtoReflect.Descriptor instead.
-func (*SS_CreateBattleServerOK) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{25}
-}
-
-type SC_MD_GetRoomList_RoomInfo struct {
-	state         protoimpl.MessageState
-	sizeCache     protoimpl.SizeCache
-	unknownFields protoimpl.UnknownFields
-
-	RoomId           int32    `protobuf:"varint,1,opt,name=RoomId,proto3" json:"RoomId,omitempty"`
-	Mapid            int32    `protobuf:"varint,2,opt,name=Mapid,proto3" json:"Mapid,omitempty"`
-	PlayerUids       []string `protobuf:"bytes,3,rep,name=PlayerUids,proto3" json:"PlayerUids,omitempty"` //??
-	Battleserver     string   `protobuf:"bytes,4,opt,name=Battleserver,proto3" json:"Battleserver,omitempty"`
-	BattleServerPort int32    `protobuf:"varint,5,opt,name=BattleServerPort,proto3" json:"BattleServerPort,omitempty"`
-}
-
-func (x *SC_MD_GetRoomList_RoomInfo) Reset() {
-	*x = SC_MD_GetRoomList_RoomInfo{}
-	if protoimpl.UnsafeEnabled {
-		mi := &file_pb_MultiDup_proto_msgTypes[26]
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		ms.StoreMessageInfo(mi)
-	}
-}
-
-func (x *SC_MD_GetRoomList_RoomInfo) String() string {
-	return protoimpl.X.MessageStringOf(x)
-}
-
-func (*SC_MD_GetRoomList_RoomInfo) ProtoMessage() {}
-
-func (x *SC_MD_GetRoomList_RoomInfo) ProtoReflect() protoreflect.Message {
-	mi := &file_pb_MultiDup_proto_msgTypes[26]
-	if protoimpl.UnsafeEnabled && x != nil {
-		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
-		if ms.LoadMessageInfo() == nil {
-			ms.StoreMessageInfo(mi)
-		}
-		return ms
-	}
-	return mi.MessageOf(x)
-}
-
-// Deprecated: Use SC_MD_GetRoomList_RoomInfo.ProtoReflect.Descriptor instead.
-func (*SC_MD_GetRoomList_RoomInfo) Descriptor() ([]byte, []int) {
-	return file_pb_MultiDup_proto_rawDescGZIP(), []int{14, 0}
-}
-
-func (x *SC_MD_GetRoomList_RoomInfo) GetRoomId() int32 {
-	if x != nil {
-		return x.RoomId
-	}
-	return 0
-}
-
-func (x *SC_MD_GetRoomList_RoomInfo) GetMapid() int32 {
-	if x != nil {
-		return x.Mapid
-	}
-	return 0
-}
-
-func (x *SC_MD_GetRoomList_RoomInfo) GetPlayerUids() []string {
-	if x != nil {
-		return x.PlayerUids
-	}
-	return nil
-}
-
-func (x *SC_MD_GetRoomList_RoomInfo) GetBattleserver() string {
-	if x != nil {
-		return x.Battleserver
-	}
-	return ""
-}
-
-func (x *SC_MD_GetRoomList_RoomInfo) GetBattleServerPort() int32 {
-	if x != nil {
-		return x.BattleServerPort
-	}
-	return 0
-}
-
-var File_pb_MultiDup_proto protoreflect.FileDescriptor
-
-var file_pb_MultiDup_proto_rawDesc = []byte{
-	0x0a, 0x11, 0x70, 0x62, 0x2f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x75, 0x70, 0x2e, 0x70, 0x72,
-	0x6f, 0x74, 0x6f, 0x12, 0x08, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x75, 0x70, 0x22, 0x3c, 0x0a,
-	0x10, 0x43, 0x53, 0x5f, 0x4d, 0x44, 0x5f, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x62, 0x62,
-	0x79, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x52, 0x0a, 0x10, 0x43,
-	0x53, 0x5f, 0x4d, 0x44, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12,
-	0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x02,
-	0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x61, 0x70,
-	0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x61, 0x70, 0x69, 0x64, 0x22,
-	0x3d, 0x0a, 0x11, 0x43, 0x53, 0x5f, 0x4d, 0x44, 0x5f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x6d,
-	0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01,
-	0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03,
-	0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x53,
-	0x0a, 0x0f, 0x43, 0x53, 0x5f, 0x4d, 0x44, 0x5f, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6f,
-	0x6d, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x52,
-	0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f,
-	0x6d, 0x49, 0x64, 0x22, 0x3b, 0x0a, 0x0f, 0x43, 0x53, 0x5f, 0x4d, 0x44, 0x5f, 0x4c, 0x65, 0x61,
-	0x76, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64,
-	0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x10,
-	0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x69, 0x64,
-	0x22, 0x3a, 0x0a, 0x0e, 0x43, 0x53, 0x5f, 0x4d, 0x44, 0x5f, 0x42, 0x65, 0x67, 0x69, 0x6e, 0x44,
-	0x75, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69,
-	0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x49, 0x0a, 0x0b,
-	0x43, 0x53, 0x5f, 0x42, 0x54, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x5a,
-	0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e,
-	0x65, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x3c, 0x0a, 0x10, 0x43, 0x53, 0x5f, 0x42, 0x54,
-	0x5f, 0x50, 0x65, 0x6f, 0x70, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x5a,
-	0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e,
-	0x65, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x03, 0x55, 0x69, 0x64, 0x22, 0x7e, 0x0a, 0x0c, 0x43, 0x53, 0x5f, 0x42, 0x54, 0x5f, 0x53,
-	0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18,
-	0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x1c, 0x0a,
-	0x09, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x09, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x50,
-	0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28,
-	0x09, 0x52, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12,
-	0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05,
-	0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x70, 0x0a, 0x0e, 0x43, 0x53, 0x5f, 0x42, 0x54, 0x5f, 0x50,
-	0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69,
-	0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12,
-	0x1c, 0x0a, 0x09, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x09, 0x52, 0x09, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x0c, 0x0a,
-	0x01, 0x58, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x01, 0x58, 0x12, 0x0c, 0x0a, 0x01, 0x59,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x01, 0x59, 0x12, 0x0c, 0x0a, 0x01, 0x5a, 0x18, 0x05,
-	0x20, 0x01, 0x28, 0x02, 0x52, 0x01, 0x5a, 0x22, 0x59, 0x0a, 0x0f, 0x43, 0x53, 0x5f, 0x42, 0x54,
-	0x5f, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x43, 0x61, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f,
-	0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65,
-	0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x55, 0x69, 0x64, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x55, 0x69, 0x64,
-	0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d,
-	0x73, 0x67, 0x22, 0x54, 0x0a, 0x0a, 0x43, 0x53, 0x5f, 0x42, 0x54, 0x5f, 0x4f, 0x76, 0x65, 0x72,
-	0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x65, 0x6e, 0x64,
-	0x65, 0x72, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x65, 0x6e,
-	0x64, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x12, 0x0a, 0x10, 0x53, 0x43, 0x5f, 0x4d,
-	0x44, 0x5f, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x4c, 0x6f, 0x62, 0x62, 0x79, 0x22, 0x6a, 0x0a, 0x10,
-	0x53, 0x43, 0x5f, 0x4d, 0x44, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6f, 0x6d,
-	0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18,
-	0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x61,
-	0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x61, 0x70, 0x69, 0x64,
-	0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05,
-	0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x22, 0x82, 0x02, 0x0a, 0x11, 0x53, 0x43, 0x5f,
-	0x4d, 0x44, 0x5f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x42,
-	0x0a, 0x09, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
-	0x0b, 0x32, 0x24, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x75, 0x70, 0x2e, 0x53, 0x43, 0x5f,
-	0x4d, 0x44, 0x5f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6f, 0x6d, 0x4c, 0x69, 0x73, 0x74, 0x2e, 0x52,
-	0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x09, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66,
-	0x6f, 0x73, 0x1a, 0xa8, 0x01, 0x0a, 0x08, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12,
-	0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x61, 0x70, 0x69, 0x64,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x61, 0x70, 0x69, 0x64, 0x12, 0x1e, 0x0a,
-	0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x69, 0x64, 0x73, 0x12, 0x22, 0x0a,
-	0x0c, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x0c, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65,
-	0x72, 0x12, 0x2a, 0x0a, 0x10, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65,
-	0x72, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x42, 0x61, 0x74,
-	0x74, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x22, 0x95, 0x01,
-	0x0a, 0x0f, 0x53, 0x43, 0x5f, 0x4d, 0x44, 0x5f, 0x45, 0x6e, 0x74, 0x65, 0x72, 0x52, 0x6f, 0x6f,
-	0x6d, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28,
-	0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64,
-	0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x4d,
-	0x61, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x61, 0x70, 0x69,
-	0x64, 0x12, 0x0e, 0x0a, 0x02, 0x49, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x49,
-	0x70, 0x12, 0x12, 0x0a, 0x04, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x04, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55,
-	0x69, 0x64, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65,
-	0x72, 0x55, 0x69, 0x64, 0x73, 0x22, 0x3b, 0x0a, 0x0f, 0x53, 0x43, 0x5f, 0x4d, 0x44, 0x5f, 0x4c,
-	0x65, 0x61, 0x76, 0x65, 0x52, 0x6f, 0x6f, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65,
-	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64,
-	0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x55,
-	0x69, 0x64, 0x22, 0x76, 0x0a, 0x0e, 0x53, 0x43, 0x5f, 0x4d, 0x44, 0x5f, 0x42, 0x65, 0x67, 0x69,
-	0x6e, 0x44, 0x75, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x73, 0x65,
-	0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x42, 0x61, 0x74, 0x74,
-	0x6c, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x2a, 0x0a, 0x10, 0x42, 0x61, 0x74, 0x74,
-	0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x10, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72,
-	0x50, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x4d, 0x61, 0x70, 0x69, 0x64, 0x18, 0x03, 0x20,
-	0x01, 0x28, 0x05, 0x52, 0x05, 0x4d, 0x61, 0x70, 0x69, 0x64, 0x22, 0x49, 0x0a, 0x0b, 0x53, 0x43,
-	0x5f, 0x42, 0x54, 0x5f, 0x4c, 0x6f, 0x67, 0x69, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e,
-	0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69,
-	0x64, 0x12, 0x10, 0x0a, 0x03, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03,
-	0x55, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09,
-	0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x66, 0x0a, 0x10, 0x53, 0x43, 0x5f, 0x42, 0x54, 0x5f, 0x50,
-	0x65, 0x6f, 0x70, 0x6c, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e,
-	0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69,
-	0x64, 0x12, 0x1a, 0x0a, 0x08, 0x4e, 0x65, 0x77, 0x65, 0x72, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x08, 0x4e, 0x65, 0x77, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x1e, 0x0a,
-	0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28,
-	0x09, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x69, 0x64, 0x73, 0x22, 0x7e, 0x0a,
-	0x0c, 0x53, 0x43, 0x5f, 0x42, 0x54, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x16, 0x0a,
-	0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a,
-	0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x55,
-	0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72,
-	0x55, 0x69, 0x64, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x65, 0x72, 0x74, 0x79, 0x4e,
-	0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x65,
-	0x72, 0x74, 0x79, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65,
-	0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x70, 0x0a,
-	0x0e, 0x53, 0x43, 0x5f, 0x42, 0x54, 0x5f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12,
-	0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
-	0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x65, 0x6e, 0x64, 0x65,
-	0x72, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x65, 0x6e, 0x64,
-	0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x0c, 0x0a, 0x01, 0x58, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02,
-	0x52, 0x01, 0x58, 0x12, 0x0c, 0x0a, 0x01, 0x59, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x01,
-	0x59, 0x12, 0x0c, 0x0a, 0x01, 0x5a, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x01, 0x5a, 0x22,
-	0x59, 0x0a, 0x0f, 0x53, 0x43, 0x5f, 0x42, 0x54, 0x5f, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x43, 0x61,
-	0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01,
-	0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x53, 0x65,
-	0x6e, 0x64, 0x65, 0x72, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x53,
-	0x65, 0x6e, 0x64, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18,
-	0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67, 0x22, 0x54, 0x0a, 0x0a, 0x53, 0x43,
-	0x5f, 0x42, 0x54, 0x5f, 0x4f, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x5a, 0x6f, 0x6e, 0x65,
-	0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x5a, 0x6f, 0x6e, 0x65, 0x69, 0x64,
-	0x12, 0x1c, 0x0a, 0x09, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x55, 0x69, 0x64, 0x18, 0x02, 0x20,
-	0x01, 0x28, 0x09, 0x52, 0x09, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x55, 0x69, 0x64, 0x12, 0x10,
-	0x0a, 0x03, 0x4d, 0x73, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x4d, 0x73, 0x67,
-	0x22, 0x4f, 0x0a, 0x15, 0x53, 0x53, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61, 0x74,
-	0x74, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x16, 0x0a, 0x06, 0x52, 0x6f, 0x6f,
-	0x6d, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x52, 0x6f, 0x6f, 0x6d, 0x49,
-	0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x69, 0x64, 0x73, 0x18,
-	0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x69, 0x64,
-	0x73, 0x22, 0x19, 0x0a, 0x17, 0x53, 0x53, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x42, 0x61,
-	0x74, 0x74, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x4f, 0x4b, 0x42, 0x0d, 0x5a, 0x0b,
-	0x70, 0x62, 0x2f, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x44, 0x75, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f,
-	0x74, 0x6f, 0x33,
-}
-
-var (
-	file_pb_MultiDup_proto_rawDescOnce sync.Once
-	file_pb_MultiDup_proto_rawDescData = file_pb_MultiDup_proto_rawDesc
-)
-
-func file_pb_MultiDup_proto_rawDescGZIP() []byte {
-	file_pb_MultiDup_proto_rawDescOnce.Do(func() {
-		file_pb_MultiDup_proto_rawDescData = protoimpl.X.CompressGZIP(file_pb_MultiDup_proto_rawDescData)
-	})
-	return file_pb_MultiDup_proto_rawDescData
-}
-
-var file_pb_MultiDup_proto_msgTypes = make([]protoimpl.MessageInfo, 27)
-var file_pb_MultiDup_proto_goTypes = []interface{}{
-	(*CS_MD_EnterLobby)(nil),           // 0: MultiDup.CS_MD_EnterLobby
-	(*CS_MD_CreateRoom)(nil),           // 1: MultiDup.CS_MD_CreateRoom
-	(*CS_MD_GetRoomList)(nil),          // 2: MultiDup.CS_MD_GetRoomList
-	(*CS_MD_EnterRoom)(nil),            // 3: MultiDup.CS_MD_EnterRoom
-	(*CS_MD_LeaveRoom)(nil),            // 4: MultiDup.CS_MD_LeaveRoom
-	(*CS_MD_BeginDup)(nil),             // 5: MultiDup.CS_MD_BeginDup
-	(*CS_BT_Login)(nil),                // 6: MultiDup.CS_BT_Login
-	(*CS_BT_PeopleList)(nil),           // 7: MultiDup.CS_BT_PeopleList
-	(*CS_BT_Status)(nil),               // 8: MultiDup.CS_BT_Status
-	(*CS_BT_Position)(nil),             // 9: MultiDup.CS_BT_Position
-	(*CS_BT_BroadCast)(nil),            // 10: MultiDup.CS_BT_BroadCast
-	(*CS_BT_Over)(nil),                 // 11: MultiDup.CS_BT_Over
-	(*SC_MD_EnterLobby)(nil),           // 12: MultiDup.SC_MD_EnterLobby
-	(*SC_MD_CreateRoom)(nil),           // 13: MultiDup.SC_MD_CreateRoom
-	(*SC_MD_GetRoomList)(nil),          // 14: MultiDup.SC_MD_GetRoomList
-	(*SC_MD_EnterRoom)(nil),            // 15: MultiDup.SC_MD_EnterRoom
-	(*SC_MD_LeaveRoom)(nil),            // 16: MultiDup.SC_MD_LeaveRoom
-	(*SC_MD_BeginDup)(nil),             // 17: MultiDup.SC_MD_BeginDup
-	(*SC_BT_Login)(nil),                // 18: MultiDup.SC_BT_Login
-	(*SC_BT_PeopleList)(nil),           // 19: MultiDup.SC_BT_PeopleList
-	(*SC_BT_Status)(nil),               // 20: MultiDup.SC_BT_Status
-	(*SC_BT_Position)(nil),             // 21: MultiDup.SC_BT_Position
-	(*SC_BT_BroadCast)(nil),            // 22: MultiDup.SC_BT_BroadCast
-	(*SC_BT_Over)(nil),                 // 23: MultiDup.SC_BT_Over
-	(*SS_CreateBattleServer)(nil),      // 24: MultiDup.SS_CreateBattleServer
-	(*SS_CreateBattleServerOK)(nil),    // 25: MultiDup.SS_CreateBattleServerOK
-	(*SC_MD_GetRoomList_RoomInfo)(nil), // 26: MultiDup.SC_MD_GetRoomList.RoomInfo
-}
-var file_pb_MultiDup_proto_depIdxs = []int32{
-	26, // 0: MultiDup.SC_MD_GetRoomList.RoomInfos:type_name -> MultiDup.SC_MD_GetRoomList.RoomInfo
-	1,  // [1:1] is the sub-list for method output_type
-	1,  // [1:1] is the sub-list for method input_type
-	1,  // [1:1] is the sub-list for extension type_name
-	1,  // [1:1] is the sub-list for extension extendee
-	0,  // [0:1] is the sub-list for field type_name
-}
-
-func init() { file_pb_MultiDup_proto_init() }
-func file_pb_MultiDup_proto_init() {
-	if File_pb_MultiDup_proto != nil {
-		return
-	}
-	if !protoimpl.UnsafeEnabled {
-		file_pb_MultiDup_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CS_MD_EnterLobby); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CS_MD_CreateRoom); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CS_MD_GetRoomList); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CS_MD_EnterRoom); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CS_MD_LeaveRoom); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CS_MD_BeginDup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CS_BT_Login); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CS_BT_PeopleList); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CS_BT_Status); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CS_BT_Position); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CS_BT_BroadCast); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*CS_BT_Over); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_MD_EnterLobby); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_MD_CreateRoom); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_MD_GetRoomList); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_MD_EnterRoom); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_MD_LeaveRoom); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_MD_BeginDup); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_BT_Login); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_BT_PeopleList); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_BT_Status); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_BT_Position); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_BT_BroadCast); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_BT_Over); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SS_CreateBattleServer); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SS_CreateBattleServerOK); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-		file_pb_MultiDup_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} {
-			switch v := v.(*SC_MD_GetRoomList_RoomInfo); i {
-			case 0:
-				return &v.state
-			case 1:
-				return &v.sizeCache
-			case 2:
-				return &v.unknownFields
-			default:
-				return nil
-			}
-		}
-	}
-	type x struct{}
-	out := protoimpl.TypeBuilder{
-		File: protoimpl.DescBuilder{
-			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
-			RawDescriptor: file_pb_MultiDup_proto_rawDesc,
-			NumEnums:      0,
-			NumMessages:   27,
-			NumExtensions: 0,
-			NumServices:   0,
-		},
-		GoTypes:           file_pb_MultiDup_proto_goTypes,
-		DependencyIndexes: file_pb_MultiDup_proto_depIdxs,
-		MessageInfos:      file_pb_MultiDup_proto_msgTypes,
-	}.Build()
-	File_pb_MultiDup_proto = out.File
-	file_pb_MultiDup_proto_rawDesc = nil
-	file_pb_MultiDup_proto_goTypes = nil
-	file_pb_MultiDup_proto_depIdxs = nil
-}

+ 0 - 13
CSserver/RedisTransfer/ITransfer.cs

@@ -1,13 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace RedisTransfer
-{
-    internal interface ITransfer
-    {
-        void Trans(int db=0);
-    }
-}

+ 0 - 10
CSserver/RedisTransfer/Program.cs

@@ -1,10 +0,0 @@
-using RedisTransfer;
-
-  
-
-//var jsonTransfer = new Trans2Json();
-//jsonTransfer.Trans();
-
-var mongo = new Trans2MongoDB();
-
-mongo.Trans();

+ 0 - 20
CSserver/RedisTransfer/RedisTransfer.csproj

@@ -1,20 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>net6.0</TargetFramework>
-    <ImplicitUsings>enable</ImplicitUsings>
-    <Nullable>enable</Nullable>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\Lib1\Lib1.csproj" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <None Update="keys.txt">
-      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
-    </None>
-  </ItemGroup>
-
-</Project>

+ 0 - 75
CSserver/RedisTransfer/Trans2Json.cs

@@ -1,75 +0,0 @@
-using System;
-using System.IO;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-//using CSharpUtil;
-using StackExchange.Redis;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-
-namespace RedisTransfer
-{
-    internal class Trans2Json : ITransfer
-    {
-        public void Trans(int db = 0)
-        {
-            var redis = Redis.Rdb(db); 
-            Console.WriteLine("{");
-            var s = File.ReadAllLines("keys.txt");
-            s.ToList().ForEach(x =>
-            {
-                var t = redis.KeyType(x);
-                switch (t)
-                {
-                    case RedisType.String:
-                        Console.WriteLine(new JProperty(x, (string)redis.StringGet(x)).ToString() + ",");
-                        break;
-                    case RedisType.Hash:
-                        {
-                            var jo = new JObject();
-                            redis.HashGetAll(x).ToList().ForEach(x => jo.Add(x.Name, x.Value.ToString()));
-                            Console.WriteLine(new JProperty(x, jo).ToString() + ",");
-                            break;
-                        }
-                    case RedisType.List:
-                        {
-                            var ja = new JArray();
-                            foreach (var r in redis.ListRange(x, 0, -1))
-                            {
-                                ja.Add(r.ToString());
-                            }
-                            Console.WriteLine(new JProperty(x, ja).ToString() + ",");
-                            break;
-                        }
-                    case RedisType.Set:
-                        {
-                            var ja = new JArray();
-                            foreach (var r in redis.SetMembers(x))
-                            {
-                                ja.Add(r.ToString());
-                            }
-                            Console.WriteLine(new JProperty(x, ja).ToString() + ",");
-                            break;
-                        }
-                    case RedisType.SortedSet:
-                        {
-                            var ja = new JArray(); 
-                            foreach (var r in redis.SortedSetRangeByScoreWithScores(x))
-                            {
-                                ja.Add(r.ToString());
-                            }
-                            Console.WriteLine(new JProperty(x, ja).ToString()+",");
-                            break;
-                        }
-                    default:
-                        Console.WriteLine("不支持的redis数据类型");
-                        break;
-
-                } 
-            });
-            Console.WriteLine("}");
-        }
-    }
-}

+ 0 - 140
CSserver/RedisTransfer/Trans2MongoDB.cs

@@ -1,140 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using CSharpUtil;
-using StackExchange.Redis;
-using MongoDB;
-using MongoDB.Bson;
-using MongoDB.Driver;
-using MongoDB.Bson.Serialization;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-
-namespace RedisTransfer
-{
-    internal class Trans2MongoDB : ITransfer
-    {
-
-        public void Trans(int db = 0)
-        {
-            var redis = Redis.Rdb(db);
-            var mdb = Mongo.Mdb();
-
-            var collection = mdb.GetCollection<BsonDocument>("ylsj2019taptap");
-
-            Console.WriteLine("start");
-            var s = File.ReadAllLines("keys.txt");
-            s.ToList().ForEach(x =>
-            {
-                var t = redis.KeyType(x);
-                switch (t)
-                {
-                    case RedisType.String:
-                        {
-                            var v = redis.StringGet(x).ToString();
-                            var bson = new BsonDocument("key",x); // (x, BsonDocument.Parse());
-                            if (BsonDocument.TryParse(v, out var bo))
-                            {
-                                bson.Add("value", bo);
-                            }
-                            else
-                            {
-                                bson.Add("value", v);
-                            }
-
-                            collection.InsertOne(bson);
-                            break;
-                        }
-                    case RedisType.Hash:
-                        {
-                            var jo = new BsonDocument();
-                            redis.HashGetAll(x).ToList().ForEach(x =>
-                            {
-                                if (BsonDocument.TryParse(x.Value.ToString(), out var bo))
-                                {
-                                    jo.Add(x.Name, bo);
-                                }
-                                else
-                                {
-                                    jo.Add(x.Name, x.Value.ToString());
-                                }
-                                //jo.Add(x.Name, BsonDocument.Parse(x.Value.ToString()))
-                            }
-                            );
-                            var bson = new BsonDocument("key", x);
-                            bson.Add("value", jo); 
-                            collection.InsertOne(bson);
-                            break;
-                        }
-                    case RedisType.List:
-                        {
-                            var ja = new BsonArray();
-                            foreach (var r in redis.ListRange(x, 0, -1))
-                            {
-                                if (BsonDocument.TryParse(r.ToString(), out var bo))
-                                {
-                                    ja.Add(bo);
-                                }
-                                else
-                                {
-                                    ja.Add(r.ToString());
-                                }
-                            }
-                            var bson = new BsonDocument("key", x);
-                            bson.Add("value", ja);
-                            collection.InsertOne(bson);
-                            break;
-                        }
-                    case RedisType.Set:
-                        {
-                            var ja = new BsonArray();
-                            foreach (var r in redis.SetMembers(x))
-                            {
-                                if (BsonDocument.TryParse(r.ToString(), out var bo))
-                                {
-                                    ja.Add(bo);
-                                }
-                                else
-                                {
-                                    ja.Add(r.ToString());
-                                }
-                            }
-                            var bson = new BsonDocument("key", x);
-                            bson.Add("value", ja);
-                            collection.InsertOne(bson);
-                            //Console.WriteLine(new JProperty(x, ja).ToString() + ",");
-                            break;
-                        }
-                    case RedisType.SortedSet:
-                        {
-                            var ja = new BsonArray();
-                            foreach (var r in redis.SortedSetRangeByScoreWithScores(x))
-                            {
-                                if (BsonDocument.TryParse(r.ToString(), out var bo))
-                                {
-                                    ja.Add(bo);
-                                }
-                                else
-                                {
-                                    ja.Add(r.ToString());
-                                }
-                            }
-                            var bson = new BsonDocument("key", x);
-                            bson.Add("value", ja);
-                            collection.InsertOne(bson);
-                            //Console.WriteLine(new JProperty(x, ja).ToString() + ",");
-                            break;
-                        }
-                    default:
-                        Console.WriteLine("不支持的redis数据类型");
-                        break;
-
-                }
-            });
-            Console.WriteLine("end");
-        }
-
-    }
-}

+ 0 - 3209
CSserver/RedisTransfer/keys.txt

@@ -1,3209 +0,0 @@
-userbaseParams-DF6AC70DCA0258612E63F4B793F2ED99-1
-u-1ZDy9hpj08ENji4AfOgKKA==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_18955-lvl_16
-userbaseParams-E05C29D7766EB79A56A41BFE1BD74BA3-1
-u-KTi+lLPxDhnSMkXub0sjMQ==-1-m-q
-u-5Bw7QLaq3oVwErJUQn7mTg==-1-m-s
-u-Oe5DQ7vJgxJD9JySk8wlgg==-1-g
-u-9leTN+xP8P4PlGYp2u2l1A==-z
-u-k4P0UNFEkjWkYYgVgucMMg==-1-g
-userbaseParams-EF7EBAA01E4B53CBA09B978D2E7847D4-1
-SelfTaskDataCollect-8yhk5jbWid0isnRUWiOGyg==-1
-SelfTaskDataCollect-0G/UpDVZP9MJI6r97HLB7Q==-1
-SelfTaskDataCollect-42019A3C83D3023C62A2EFC264CF847F-1
-u-LTBHJgwOFktT/RURV7tc4A==-1-s-cp
-u-37oD8uTeTk6S5+vwGe+Pog==-z
-userbaseParams-Lw1MRiBzasWfOrd0FRTxAg==-1
-u-vGHUHN5nAbA0qUMoxIMvjQ==-z
-u-DPwB0rOwK2g2n2CT+FtY1Q==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_19004
-u-t2/wl7k8k3m8show6brrgA==-z
-u-gnVmrGt/N9RF2YN9u15D4g==-1-s-cp
-gamerun-BossFight-byDateHour-zone1-boss2-2021102001
-u-9TwVdyGWiLvoFWxMxsZYdg==-1-m-s
-u-OPvcDNNCuq+sAA8S8+lIug==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_18971-lvl_15
-u-KV/g+Q7ZscI8NJdkT2eF1w==-z
-u-nkomZP8gE2lCZ55V39V8zA==-1-g
-u-KTi+lLPxDhnSMkXub0sjMQ==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_19007-lvl_1
-u-0hKv/dcvUHlHlAzbGiAHXQ==-1-m-q
-userbaseParams-EF63F6B97DA5FC2B2ADC6794A8D38A63-1
-userbaseParams-01DAC853A713988FF0501B021661EEE1-1
-gamerun-loginUser-byLevel-zone1-day_19002-lvl_1
-SelfTaskDataCollect-940E63F110F601449DC9EC813F3870A3-1
-userbaseParams-E147DFF17CD48753E484101B1ED6D4B9-1
-gamerun-loginUser-byLevel-zone1-day_18922-lvl_7
-userbaseParams-ZcdvOGmNMdblwhbbt95c0w==-1
-u-aF3B9amDlVZ5k+lFRWV19Q==-1-g
-u-mYScbAC5kZ9TZiYK2wwZqQ==-1-s-cp
-userbaseParams-176DA53B40B95D4D42E8E5C98403849A-1
-u-741A02BD75DC1A51E515AA3C9697A0EA-1-m-s
-gamecfg-shop_limit_type
-gamerun-loginUser-byLevel-zone1-day_18962-lvl_1
-SelfTaskDataCollect-EF7EBAA01E4B53CBA09B978D2E7847D4-1
-u-9FjrQJSMQsfgw8KN+f6qFg==-1-m-q
-u-pifU+4b5BnkXa116cN8hbw==-z
-u-GSHQWLqasJ7eFpE0i6dRKQ==-z
-u-clV9hTIWKGCld8c0hBhCKw==-1-m-s
-gamecfg-rankreward_fpower
-u-PiygwRTmPRef2TCzz5U74Q==-1-m-ci
-gamecfg-expandStoreNum
-u-onCsrwGW4bxNOZuB2aBo8A==-1-g
-userbaseParams-9q3yMbDiGPLotYQCm+Nwiw==-1
-u-AACC562B64D7942DF231ACF42D78A74C-1-s-cp
-u-LTBHJgwOFktT/RURV7tc4A==-1-m-ci
-u-XWcYhQdqttaG0wtyqsJEyw==-1-m-ci
-SelfTaskDataCollect-A297C296BDCC8F704F16BA839AD64617-1
-gamerun-loginUser-byLevel-zone1-day_19013-lvl_8
-SelfTaskDataCollect-ThP4sBclr3EuHHQEa+niSw==-1
-u-J1QBz5ByvH5KB6Fcci8scg==-1-m-s
-userbaseParams-F3ED11760A3E4289684951A48480685D-1
-u-jnkyCOR+6tniYyYsjhQUMA==-1-s-cp
-u-YkbyEOHrDEGTy8udWAm7HQ==-1-g
-u-zOb+bdJZtZcENYsd9xlI3w==-1-m-s
-gamerun-BossFight-byDateHour-zone1-boss2-2022020703
-u-ThP4sBclr3EuHHQEa+niSw==-z
-userbaseParams-A57E36F73A1BCEE0F37BC78DF8E22C24-1
-u-2eBIdAMzt1XzOrE4vO9Hng==-1-g
-u-SAPRxtl32vQSBRpJP/02Pw==-1-m-ci
-u-ZLYnnXx2uNLWtB3ZET3jNA==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_18922-lvl_3
-SelfTaskDataCollect-l2UAFiftXTkFyOzuFf/k7A==-1
-SelfTaskDataCollect-751DC2071647B31DE8212364357DF5D8-1
-userbaseParams-ZLYnnXx2uNLWtB3ZET3jNA==-1
-u-kLxrc6BM2ezeXj4jI8WtzA==-1-m-s
-u-3xAkyAtWlLHYGHQtpMxs1g==-1-g
-u-7UI/Pe3jTdFTjyldkdaAlg==-z
-u-qYinnr1KUJYbQAbMeeXh2g==-1-m-ci
-u-iaU3wefEvfaE4LIvhh/E4A==-1-m-s
-u-ym/YaQqAGhpYj2pInUfqng==-1-g
-userbaseParams-3857F75DB400A5309808B8183EA096E0-1
-u-SAPRxtl32vQSBRpJP/02Pw==-1-m-s
-u-1WPMPyjxNy02xw3+eZsWvg==-1-m-s
-SelfTaskDataCollect-2r6TJEmiwdzbIEsT/pfvIg==-1
-u-mX4i+OpWJBt6oElbLfC2hw==-1-m-s
-u-Oe5DQ7vJgxJD9JySk8wlgg==-1-m-q
-SelfTaskDataCollect-b8A4Sg4Sdj8zC25J8Ej7zg==-1
-u-d+pL5g3p1MQVLakGPONoWg==-1-m-ci
-u-clV9hTIWKGCld8c0hBhCKw==-1-g
-u-z0UheVRSVvjmBnHGd2QtGg==-z
-SelfTaskDataCollect-Wl0q/Zf+wHnNkhbrxgk2Ag==-1
-userbaseParams-D49A1DFC0E7F1CD5D4C000799CD09353-1
-u-6o00NrA9PZZ+Dx/76feUyw==-1-m-s
-userbaseParams-DE9BBD57E926971ED98A717A330D1AB8-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021102906
-u-wmJfxTuJ85Wo7jULJhlplg==-1-m-ci
-SelfTaskDataCollect-39C4D7E559DB5CA4ABA4CE7AD5C77EB6-1
-u-QNywSBJdgteWz4rvrgvaUg==-1-m-ci
-u-Z7nnIWmsL3tO06qmFsMDPg==-1-s-cp
-u-MkkHV64zgPEUXF9bbP6AgQ==-1-g
-userbaseParams-196A03C23D7942161D535A4CC6B19563-1
-u-NECpVJ2b8JTRHhEzTKUyPw==-1-m-q
-SelfTaskDataCollect-CB9EAE0780D9C42A30F7E39BBD463DA0-1
-userbaseParams-A91A1491B60BCDA42E44C9F7535CA2FC-1
-u-xNFJ1mxAjZgxldJHkZiMJA==-z
-u-ay2UCE+9U/Zf5Id58kEwAQ==-z
-u-l2UAFiftXTkFyOzuFf/k7A==-1-g
-u-tsOAmC68t2ekelEqW43izg==-z
-userbaseParams-6BEED5783EFEFB5FA6C59FE14EE93EE0-1
-u-pifU+4b5BnkXa116cN8hbw==-1-m-ci
-u-udn0HKTEHlkvSVKnu/T2gg==-1-g
-u-ayYI4ZlkQfVP7MkTJR7oSA==-1-m-q
-userbaseParams-6D7F5097998384D7EF9A6ACAD35BA848-1
-u-n5F6XP6zpFnO1za6tYpIog==-1-g
-userbaseParams-F641E422145C2DAF597F4CD7AA41BEA3-1
-userbaseParams-08F756E225A710CBAF205CF025E904EB-1
-u-ij9pY+Clt5vlsupQ4CVEnA==-1-m-s
-SelfTaskDataCollect-4D84A9206219667CF87C196DDFF577B5-1
-userbaseParams-1CA95FB81D592185513F251EAAB3357D-1
-SelfTaskDataCollect-D49A1DFC0E7F1CD5D4C000799CD09353-1
-gamerun-loginUser-byLevel-zone1-day_19033-lvl_1
-u-9leTN+xP8P4PlGYp2u2l1A==-1-m-ci
-u-qc8fEtVio7h16eL/kvO6gA==-z
-gamecfg-errmsg
-gamecfg-course
-gamecfg-shop_limitTs
-u-w8qBeTaWzznrjSjXS7Rdwg==-1-g
-userbaseParams-CA775C98E2819CF2847A25F14B1BE5AB-1
-userbaseParams-7F4992C2EA39C2B61187A926C741F050-1
-SelfTaskDataCollect-wvIzx+ND9/7G32s3sWPchA==-1
-u-+/TRL/jresq5sVDmSuGlXA==-1-m-ci
-u-mrGaPvKOlX4POcCSa7oIXQ==-1-m-ci
-SelfTaskDataCollect-9FEC8BD3859F1B92A1B6E4E9CFD62370-1
-u-UQp+foexZOgCvOY5tIqfrw==-1-m-q
-userbaseParams-58AD69076326E5F791E78AA3D90BA804-1
-u-mrGaPvKOlX4POcCSa7oIXQ==-1-m-s
-u-JUmTimmn7PYEAtfFtBJxvQ==-1-m-s
-u-bnC04nNXDNLNQSsYlFgHWA==-1-m-q
-userbaseParams-4B78658CB1CCCBE83CFBBB5D17395F07-1
-userbaseParams-AFB00E38D47CDEF5EAAB823C339D3CD0-1
-u-+4ul94P1VGb9IsX+y6Ebdg==-z
-u-R2xSfQf5GzcQVgybWAL/sg==-1-m-q
-SelfTaskDataCollect-O+ESGfWyAvYQoADybrGAug==-1
-u-8Kkx99rfFjy97uwica+TQA==-1-g
-SelfTaskDataCollect-A08D1B6C1B8E8F844F587603407BCD5C-1
-userbaseParams-9TwVdyGWiLvoFWxMxsZYdg==-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021113011
-userbaseParams-7C7173A1A9FD70E238544701E86063B1-1
-u-4CfVxFhgerAefWz/wk5Ifg==-1-g
-u-Dek+/UfGgAVOJlc3FxiHgA==-1-m-s
-userbaseParams-794662A18C7DEB74698C561E9E8B0CAD-1
-u-kfAk3CTelaPhC50ktRX5Cw==-1-m-s
-SelfTaskDataCollect-OPvcDNNCuq+sAA8S8+lIug==-1
-gamerun-BossFight-byDateHour-zone1-boss1-2021102403
-u-nDycZEQUMraLQX0CKeBX3Q==-1-m-q
-u-l1/stGfX2QFeFoEdBFOLFA==-1-m-s
-u-ThP4sBclr3EuHHQEa+niSw==-1-m-q
-u-741A02BD75DC1A51E515AA3C9697A0EA-1-m-ci
-u-W2XAs1PfTWnBxIw9a1a1VA==-1-m-ci
-u-tot2ksrkH4EmVddpCx5I1w==-z
-u-8yhk5jbWid0isnRUWiOGyg==-1-m-s
-u-cx8AHSDLHGe0Joij/o7lzA==-1-m-ci
-u-0hKv/dcvUHlHlAzbGiAHXQ==-1-m-ci
-userbaseParams-DFF2F1AA8622ACC49B2877C250CEB6FD-1
-u-PprlXa/k/ypCsaRqxYjaSw==-1-m-ci
-SelfTaskDataCollect-AE9F390D2303C6514F4E264445555382-1
-u-kfAk3CTelaPhC50ktRX5Cw==-z
-u-ribbAMapbKgu5FzWCkyO4Q==-1-m-q
-userbaseParams-aqvPZwjUX6HxLSwcle9Efw==-1
-u-wvIzx+ND9/7G32s3sWPchA==-1-m-ci
-u-W2sWgQ86gNSJJflVTStQ7w==-1-g
-SelfTaskDataCollect-1D2C90EC77E31C82F53A679426A99F94-1
-u-HEFO1ANMmJ8vDV7mNr74+g==-1-m-ci
-SelfTaskDataCollect-0ZZu52FKfPLSxSFkfokmyA==-1
-u-YkbyEOHrDEGTy8udWAm7HQ==-z
-userbaseParams-E0B2BBDF82FB322EC2A1999CACE73329-1
-u-YD5/dKVM2rmVeqA4frMwXQ==-z
-u-UQp+foexZOgCvOY5tIqfrw==-1-g
-u-tm5tMtswi8KLa9Jvp7K0AQ==-1-s-cp
-u-SAPRxtl32vQSBRpJP/02Pw==-z
-userbaseParams-CFD72F0931596FB8E496B543D40C8791-1
-gamecfg-item_base
-u-121C35E4E79ECD4400721829378565CA-z
-u-19NCegHaMGsfBGlDi/6wBA==-1-m-s
-u-aPlyx+OvTXQkpn0o/smMhA==-1-s-cp
-gamerun-BossFight-byDateHour-zone1-boss2-2021111117
-userbaseParams-6AF9C9B644833B278F80FA512DAE98B0-1
-u-3D119C22C0DD36A0BA269AA41AE243DB-z
-u-s69Gt57wzLgvcTpt96F5Gw==-1-m-s
-gamecfg-task_step
-u-997K35ioRJvNEzQlFt/C9Q==-1-g
-gamerun-loginUser-byLevel-zone1-day_18987-lvl_13
-userbaseParams-F97118A6DB6A53101192EA61B388CF1E-1
-userbaseParams-7C4EA646771F21681D503BD5436D329B-1
-u-Id28jDn1EdTEnDGV7xBVXA==-z
-u-z0UheVRSVvjmBnHGd2QtGg==-1-m-s
-userbaseParams-DTubNlAbSTRdrYC2xX3Zkw==-1
-gamerun-loginUser-byUid-zone1-day_18938
-u-SNBVsqqZ2ZZ5Y776fULJfA==-1-g
-u-HodjNBz2XZNUHGQXleBxVQ==-1-m-s
-SelfTaskDataCollect-E147DFF17CD48753E484101B1ED6D4B9-1
-u-JHm3OZgsUrVwouVQms+h2A==-1-m-q
-SelfTaskDataCollect-F37CCF88D2F03407641D28B462586ADD-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021102201
-userbaseParams-02292503316BA2C7A2014CF9B1ECFB36-1
-userbaseParams-E802C7DB529CF13C6A81C7451B389469-1
-gamerun-loginUser-byUid-zone1-day_18976
-SelfTaskDataCollect-9aWr5pidEog+2yGISeSOEg==-1
-gamerun-BossFight-byDateHour-zone1-boss2-2022020122
-u-TneySddMA9RKLvPu6mbkDw==-1-g
-u-1WPMPyjxNy02xw3+eZsWvg==-1-m-ci
-u-/1EHzOG+FJAt+MAUUI/AJw==-1-g
-SelfTaskDataCollect-C206270CC8F341114F63379D49696573-1
-TaskDataCollect-1
-gamerun-BossFight-byDateHour-zone1-boss2-2022012809
-gamerun-BossFight-byDateHour-zone1-boss1-2021110813
-gamerun-loginUser-byUid-zone1-day_19016
-gamerun-BossFight-byDateHour-zone1-boss2-2021120703
-u-AiVh0bUjOt8ScpUl5sfPgw==-z
-u-SlWx6E4qNAbxll6U6aEhqg==-1-m-s
-u-mrGaPvKOlX4POcCSa7oIXQ==-1-m-q
-userbaseParams-5Amxn56RorDYx9Wx6lg43A==-1
-u-MBhAEu1HhdwqVSzh93Q29g==-1-g
-u-MIvMeiWCv2gDBs6RrLyI4w==-1-m-ci
-userbaseParams-79B317B3A4DE57768B351C42832E57F1-1
-u-9FjrQJSMQsfgw8KN+f6qFg==-z
-u-BE068CA272CF007D2FC83B98C4675B12-1-g
-userbaseParams-1CA5C7E736D643539C0AB0AFEE807D27-1
-gamerun-loginUser-byLevel-zone1-day_19012-lvl_1
-u-cCUbi1u+cSkFtnoErxd7jA==-1-m-s
-u-KF+sSUjbtwlcyOrp59yuWw==-1-g
-u-FOqKL+d0IsOKrkVu0k8E4g==-1-m-s
-u-tlD5f8zc2DQ5d6gJR0TtLg==-1-m-q
-u-wKlu4EtGDqbwGNoyut8dxw==-1-m-s
-u-Li8eZodrYbr/sv89kvKeIg==-1-m-q
-u-2FyS23Oop2Nw19tWSFn3ag==-1-m-ci
-u-ay2UCE+9U/Zf5Id58kEwAQ==-1-m-ci
-u-qYinnr1KUJYbQAbMeeXh2g==-1-g
-gamerun-loginUser-byLevel-zone1-day_19013-lvl_4
-u-Iu/VTwa/fGfb7VzhHyjCZg==-z
-u-6o00NrA9PZZ+Dx/76feUyw==-1-m-ci
-SelfTaskDataCollect-D78010A99216233F6A5E541FCE95CD54-1
-gamerun-loginUser-byLevel-zone1-day_19013-lvl_1
-gamerun-loginUser-byLevel-zone1-day_18956-lvl_4
-u-9OZEclIfg+PGyg1x3UVO/Q==-1-m-s
-userbaseParams-CBDCEFF85A61218AA19B7D4B1000BD60-1
-SelfTaskDataCollect-DB2E2CB0838084E57FA4D58B75C9EFC2-1
-u-V9EhOYpB/ZHlWrV52TGojw==-1-m-s
-u-19NCegHaMGsfBGlDi/6wBA==-1-s-cp
-u-JUmTimmn7PYEAtfFtBJxvQ==-1-s-cp
-u-9TwVdyGWiLvoFWxMxsZYdg==-1-m-q
-SelfTaskDataCollect-ACBC2C72A3515A2C87B11E136BC34397-1
-u-fZphkLry0PCKlYnuo6pvdg==-1-g
-userbaseParams-0C9313586E5244CA68C48E3FCB9C8413-1
-SelfTaskDataCollect-W2sWgQ86gNSJJflVTStQ7w==-1
-userbaseParams-A309126494EA6B425719B3365F82804F-1
-gamerun-BossFight-byDateHour-zone1-boss1-2021120623
-u-szzKjs5B+qM/aL9e1TlXxQ==-1-m-s
-u-DSe7TPGBXFxj/QFYtf/75A==-1-m-q
-u-OcN70ne7TNX3fHTDyei27g==-1-g
-u-9aWr5pidEog+2yGISeSOEg==-1-g
-u-4lSoetN0A9vA3Dh/tLGm1A==-1-m-ci
-gamecfg-recharge
-u-szzKjs5B+qM/aL9e1TlXxQ==-1-g
-u-ZrsRPaL6aU8X9sicKMuFaw==-1-g
-u-p0CSTp7ZgaDWBBAibI465w==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_18977
-u-+LfPNbUrUE4cgXGiFax4+A==-1-m-s
-u-tsOAmC68t2ekelEqW43izg==-1-s-cp
-u-ETJG8YC7nUNVxdKV1+FXeg==-1-g
-gamerun-BossFight-byDateHour-zone1-boss2-2021112921
-u-xNFJ1mxAjZgxldJHkZiMJA==-1-m-ci
-SelfTaskDataCollect-CCCB42A5C32B11B9C92437DE0A25F89D-1
-gamerun-loginUser-byUid-zone1-day_19012
-u-YD5/dKVM2rmVeqA4frMwXQ==-1-m-s
-userbaseParams-DE0E343D1275BAA06ABBA16F95D6F9CA-1
-u-JZk1qvyrdPOMR8d5k7+5aQ==-1-g
-SelfTaskDataCollect-TneySddMA9RKLvPu6mbkDw==-1
-u-zK2G79FtrluCvJ170wnZZg==-1-m-ci
-u-V9EhOYpB/ZHlWrV52TGojw==-1-m-ci
-u-onCsrwGW4bxNOZuB2aBo8A==-z
-u-9sdvBxCeIN82jaunYoPYmA==-1-g
-SelfTaskDataCollect-4FB05441621148CB0D85607DC64B8EA3-1
-u-PprlXa/k/ypCsaRqxYjaSw==-1-g
-u-HEFO1ANMmJ8vDV7mNr74+g==-1-m-s
-userbaseParams-wNaTLQe8pfJ+reBBi1Tz5A==-1
-u-1AK+a1KUFZfTDnHkrBhPkw==-z
-gamerun-BossFight-byDateHour-zone1-boss2-2021121902
-stat-reported-log-e_k_8
-SelfTaskDataCollect-tsDHE71bzBWcA4pWd9/TIA==-1
-u-dZ0xjVZRe4TVMgW7q/qT0A==-1-g
-u-aOx+NkS1096cv2D879ZfZA==-1-m-s
-userbaseParams-1M1LYo4/Dq//YbEk9HO+8Q==-1
-u-HuqH7U7vV6c6oEdeoaXAKg==-1-m-ci
-u-n1Z68uCipSA2+XyaYGpXQg==-1-m-s
-userbaseParams-2605EE9B52314D123F3F3B815AFBF0E2-1
-userbaseParams-rgiU2/MGPvJFePJIIcdwRw==-1
-userbaseParams-6BBBD068729FAD5F9FCA819B9E017620-1
-userbaseParams-C72475672B2FEA3307D63CF8646D87EA-1
-u-37oD8uTeTk6S5+vwGe+Pog==-1-m-ci
-u-q9gZqncQmt1BUZbXBUIcNg==-1-m-q
-gamecfg-drop
-u-4lSoetN0A9vA3Dh/tLGm1A==-1-g
-userbaseParams-XfDKbemX21q8YADIt5FeCg==-1
-gamerun-loginUser-byLevel-zone1-day_19030-lvl_1
-u-yrs9OzHFRlgXNM/reK7OmQ==-1-m-ci
-u-MkrHhUYYtXi9WCYCtX4nVQ==-1-m-q
-gamerun-rank-passgate-zone1
-u-xFYHEs1QDNT78zCk11zYdw==-1-guild
-u-741A02BD75DC1A51E515AA3C9697A0EA-z
-u-MWvDK5wVi5UnPqebcLmnig==-z
-userbaseParams-643CB7705CE5DB3E3A059A9A3434C768-1
-u-ij9pY+Clt5vlsupQ4CVEnA==-z
-u-8VX8DGOjHndQeEbIGw+mwQ==-1-m-q
-SelfTaskDataCollect-2651FE0674819A069897118234095ED8-1
-u-lAwZYSK10jEVdWL0M2GKXA==-z
-userbaseParams-D83562E2A6AB89CFE9B2C0AB8F9BCC32-1
-u-EaZLs6BWLXoMQxd2Xm7bTA==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_18989-lvl_3
-u-HodjNBz2XZNUHGQXleBxVQ==-1-m-ci
-u-9OZEclIfg+PGyg1x3UVO/Q==-1-g
-u-2c6COTf2GnOHJpqATZATQg==-1-g
-u-d+pL5g3p1MQVLakGPONoWg==-1-m-q
-gamerun-BossFight-byDateHour-zone1-boss2-2021112823
-u-OcN70ne7TNX3fHTDyei27g==-1-s-cp
-u-2FyS23Oop2Nw19tWSFn3ag==-1-g
-u-TnqLdLtwl5eBKpFWjBNigQ==-1-m-q
-u-jZFh/wwTMUL7W9Rfhl5+zQ==-z
-SelfTaskDataCollect-28F44BB8AED5E24A59B20CF9B7F8BA10-1
-userbaseParams-DSe7TPGBXFxj/QFYtf/75A==-1
-userbaseParams-3AB19CEA0A639074EFBF81A67DFC957F-1
-userbaseParams-5F330A6DD9B37E7503CEB163A9019D42-1
-u-MaMq51xW/xDxrV0iee3Low==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_18960-lvl_7
-gamerun-loginUser-byUid-zone1-day_18952
-u-NF30nkaJUkOTSi2tcZC6FQ==-z
-SelfTaskDataCollect-FBE3CD1AD380DD419343215BE0EAD182-1
-gamecfg-pvp_rankreward
-u-L/t1ZuZ98zo/ydZsdz9kkg==-1-m-s
-u-JDwD7HxT+o/oFHUloCW9QA==-1-m-ci
-u-JZk1qvyrdPOMR8d5k7+5aQ==-1-s-cp
-u-kQdUrd9ju35umNXJLva3jg==-1-m-ci
-userbaseParams-om3ehqNja3wlvi857jL54g==-1
-userbaseParams-1C77E1AD9771787BBA3DC1A0E129B2B2-1
-u-jZFh/wwTMUL7W9Rfhl5+zQ==-1-m-ci
-u-XKrUOsqY1VCZdItpBZ3+CQ==-1-m-s
-gamerun-loginUser-byUid-zone1-day_18989
-u-tKv7Ua1sxEQMe38LnNAPeg==-1-m-ci
-u-cx8AHSDLHGe0Joij/o7lzA==-z
-gamerun-BossFight-byDateHour-zone1-boss2-2022012714
-gamerun-loginUser-byLevel-zone1-day_18974-lvl_15
-u-VfZPw3LaHOF9PfanwvvUAQ==-z
-u-1M1LYo4/Dq//YbEk9HO+8Q==-1-g
-u-Lp09gWphD9ocQOJrN67w6A==-1-s-cp
-userbaseParams-H9neYid2ZQrTYaSckYFkKg==-1
-stat-reported-log-e_k_9
-u-W2sWgQ86gNSJJflVTStQ7w==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_19023
-userbaseParams-EAFAD5AE3C9DB9EC65FCD059FA176640-1
-gamerun-loginUser-byUid-zone1-day_19033
-gamerun-BossFight-byDateHour-zone1-boss2-2022012610
-u-+LfPNbUrUE4cgXGiFax4+A==-1-m-ci
-u-8Kkx99rfFjy97uwica+TQA==-1-m-q
-SelfTaskDataCollect-BD2663585A9EE6CB7E62011E20FF1E67-1
-u-L/t1ZuZ98zo/ydZsdz9kkg==-z
-u-DSe7TPGBXFxj/QFYtf/75A==-1-g
-u-Bfd5E/d16244Z+Bb7DeVNg==-1-m-s
-gamerun-BossFight-byDateHour-zone1-boss1-2021120700
-gamecfg-guilddonatereward
-u-tsDHE71bzBWcA4pWd9/TIA==-1-m-ci
-SelfTaskDataCollect-moEJufjEW1j6WRFlZBE7XA==-1
-u-d+pL5g3p1MQVLakGPONoWg==-1-m-s
-u-RD26BLc9W+89j8bfKrk5NA==-1-s-cp
-u-MFCtadHxTkcytK840rJHSw==-z
-gamerun-BossFight-byDateHour-zone1-boss2-2022012106
-u-VfZPw3LaHOF9PfanwvvUAQ==-1-m-s
-userbaseParams-lTZ3gDxXUSwypr8gfFaPRA==-1
-u-tlD5f8zc2DQ5d6gJR0TtLg==-1-m-ci
-userbaseParams-89ACCAB0CE2CEC4ADD000694C853BF9E-1
-u-2r6TJEmiwdzbIEsT/pfvIg==-1-m-ci
-u-4DGLonP9NGMqnuneAzJkHQ==-1-s-cp
-SelfTaskDataCollect-AF344839BBF0AE35B171DFB85EEC0B0B-1
-userbaseParams-926C2ED26BFB6A28F42861C7740DBF3A-1
-userbaseParams-758A56324B99CB0F0913A3A56B0834E0-1
-u-19NCegHaMGsfBGlDi/6wBA==-1-g
-u-9TwVdyGWiLvoFWxMxsZYdg==-1-s-cp
-u-DnnJUgM+jppgUx6bNU5swQ==-1-s-cp
-gamerun-loginUser-byLevel-zone1-day_19005-lvl_9
-u-TneySddMA9RKLvPu6mbkDw==-1-s-cp
-gamerun-loginUser-byUid-zone1-day_18953
-gamerun-loginUser-byLevel-zone1-day_18998-lvl_15
-SelfTaskDataCollect-B44A4C4ACD22DD3E439727152BE007F7-1
-SelfTaskDataCollect-0F698D5CC184A30D333C7D14220877B9-1
-userbaseParams-40FB2DF94813FAC28A198233F0455E16-1
-u-nDycZEQUMraLQX0CKeBX3Q==-1-m-ci
-stat-reported-log-e_k_5
-u-hh2F7ruHiv6F/44mDNolqg==-1-m-ci
-u-kfAk3CTelaPhC50ktRX5Cw==-1-m-q
-u-B10Zc0KqgOWVnLP7wHyhVQ==-1-m-ci
-userbaseParams-A61CBEB7AAE8ADE056C76D54B01F2975-1
-gamerun-loginUser-byLevel-zone1-day_18918-lvl_9
-u-jXXDHASoFuAWGBxQ4fr2zA==-1-m-q
-u-DE0E343D1275BAA06ABBA16F95D6F9CA-1-m-ci
-SelfTaskDataCollect-4AB77A9A6B65C9257E9C6A47773A5AC9-1
-u-nDycZEQUMraLQX0CKeBX3Q==-1-m-s
-gamerun-BossFight-byDateHour-zone1-boss2-2022020219
-u-EC85374FB86FEADA0D09533B7587036B-1-m-q
-gamerun-BossFight-byDateHour-zone1-boss1-2021110716
-u-nkomZP8gE2lCZ55V39V8zA==-1-m-q
-userbaseParams-gfDchI64HK+rV4I3ziEvwA==-1
-u-Pca85n5ohw4RvSlULPbetg==-1-m-ci
-u-lTZ3gDxXUSwypr8gfFaPRA==-z
-u-j2olmPookhCpAmEoVXa3pw==-z
-gamerun-loginUser-byUid-zone1-day_18949
-u-n5F6XP6zpFnO1za6tYpIog==-z
-userbaseParams-0127F3148C823A6EA48A084264ED01F2-1
-u-+4ul94P1VGb9IsX+y6Ebdg==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_18972-lvl_12
-u-DTubNlAbSTRdrYC2xX3Zkw==-z
-SelfTaskDataCollect-F481DAD409674CA6428FC322398BF5B6-1
-u-8VX8DGOjHndQeEbIGw+mwQ==-1-g
-u-aqvPZwjUX6HxLSwcle9Efw==-1-m-q
-u-ZQh8vdoyYoL4xQyCOzAn0Q==-1-s-cp
-gamerun-loginUser-byLevel-zone1-day_18955-lvl_3
-u-TTzLOc8lsoZKUorjQ448IQ==-1-g
-SelfTaskDataCollect-iaU3wefEvfaE4LIvhh/E4A==-1
-u-8Kkx99rfFjy97uwica+TQA==-1-s-cp
-gamerun-BossFight-byDateHour-zone1-boss2-2022012923
-u-9zkpFTOPud983SMIegzuIw==-z
-gamerun-loginUser-byLevel-zone1-day_19035-lvl_17
-gamerun-loginUser-byLevel-zone1-day_19030-lvl_16
-u-gg6On5qbR959wt6S+mk5hQ==-1-g
-gamerun-loginUser-byLevel-zone1-day_19017-lvl_5
-gamecfg-gem_formula
-userbaseParams-7B17436B8DA0FA92502893B08889B613-1
-u-PiygwRTmPRef2TCzz5U74Q==-1-m-s
-gamerun-BossFight-byDateHour-zone1-boss2-2021102619
-u-X0ASXqfhgf2wklV5ydZaVg==-1-m-s
-gamerun-BossFight-byDateHour-zone1-boss2-2022020610
-u-nuAuYk+BmREIdk0585ULOg==-1-m-ci
-u-tlD5f8zc2DQ5d6gJR0TtLg==-1-g
-u-A27E34AAC08DB08ECD0D6C8BF164B7DE-1-m-ci
-u-9sdvBxCeIN82jaunYoPYmA==-1-m-s
-gamerun-loginUser-byUid-zone1-day_18932
-SelfTaskDataCollect-D7B662EF2463384DDAE42F22EF4FCE37-1
-gamerun-BossFight-byDateHour-zone1-boss2-2022012811
-u-jnkyCOR+6tniYyYsjhQUMA==-z
-SelfTaskDataCollect-XfDKbemX21q8YADIt5FeCg==-1
-gamerun-BossFight-byDateHour-zone1-boss2-2022012615
-SelfTaskDataCollect-0BDD534CCDF6920D16219009792D79EE-1
-u-n5F6XP6zpFnO1za6tYpIog==-1-s-cp
-userbaseParams-zK2G79FtrluCvJ170wnZZg==-1
-u-fZphkLry0PCKlYnuo6pvdg==-1-s-cp
-u-5Uq4QnmdsojNuLfGxv1GzA==-1-s-cp
-u-OPvcDNNCuq+sAA8S8+lIug==-1-g
-u-wmJfxTuJ85Wo7jULJhlplg==-1-s-cp
-SelfTaskDataCollect-FOqKL+d0IsOKrkVu0k8E4g==-1
-SelfTaskDataCollect-49313EBE31B4A1CB2651240DCD775A44-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021110209
-u-oMnUcDcbhdw94omoMbLjCg==-z
-userbaseParams-E9C6846D34B30A2CC698279902E377E5-1
-u-a512PzWA0FWsGNNKnCmslA==-1-m-ci
-u-CwGc7/3mBfRkGGbtIdHPSw==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_18963-lvl_1
-SelfTaskDataCollect-+/TRL/jresq5sVDmSuGlXA==-1
-SelfTaskDataCollect-HuqH7U7vV6c6oEdeoaXAKg==-1
-u-Q12nzHLzNXbY9HG10p09hg==-z
-SelfTaskDataCollect-9OZEclIfg+PGyg1x3UVO/Q==-1
-SelfTaskDataCollect-EE38F62772A9E7E470683D4EB6286424-1
-gamerun-loginUser-byUid-zone1-day_18939
-SelfTaskDataCollect-fYqtP/ma4sTZ25BcdRQDyA==-1
-gamerun-loginUser-byLevel-zone1-day_18919-lvl_9
-gamerun-loginUser-byLevel-zone1-day_18982-lvl_4
-u-72eHzmeU8TYOYXIk2dnFeg==-1-g
-u-XWcYhQdqttaG0wtyqsJEyw==-z
-u-SAPRxtl32vQSBRpJP/02Pw==-1-g
-userbaseParams-1309B410A4F21ACB018131772FB67AB4-1
-gamerun-loginUser-byUid-zone1-day_18966
-gamerun-BossFight-byDateHour-zone1-boss2-2021110621
-u-VKafg044KDQhMlbyFhot4g==-1-m-q
-u-LkY7oRPUoO0FVfr7QHcpQw==-1-m-s
-u-039PvrQw7OogvZRmPovwzA==-1-m-s
-gamecfg-service_schedule
-userbaseParams-UQp+foexZOgCvOY5tIqfrw==-1
-userbaseParams-9FDA6BF577FA90CBC3ADA050016B5095-1
-gamerun-loginUser-byLevel-zone1-day_19024-lvl_17
-gamerun-loginUser-byLevel-zone1-day_19025-lvl_18
-u-SUMBtfg3G8+uByIyipEcNQ==-1-g
-gamerun-loginUser-byLevel-zone1-day_18965-lvl_6
-u-j2sZ5k9tMaPL69GtPO+cGw==-1-m-ci
-u-JZk1qvyrdPOMR8d5k7+5aQ==-1-m-q
-SelfTaskDataCollect-5Bw7QLaq3oVwErJUQn7mTg==-1
-u-0G/UpDVZP9MJI6r97HLB7Q==-1-m-ci
-u-Znh6Ev8q3sssVP/uuTo3Wg==-z
-u-l2UAFiftXTkFyOzuFf/k7A==-z
-userbaseParams-40E84229932EDC4902D469322EAA2541-1
-SelfTaskDataCollect-326A8CF83896DD2E630778B55333D070-1
-u-nudUAOGaNvJEvkK96UX4XQ==-1-m-ci
-gamerun-BossFight-byDateHour-zone1-boss2-2021102123
-gamerun-BossFight-byDateHour-zone1-boss2-2021120700
-gamerun-loginUser-byLevel-zone1-day_19008-lvl_1
-gamecfg-item
-u-Wl0q/Zf+wHnNkhbrxgk2Ag==-1-m-ci
-u-ubY8fO6EiqJSXBrIHVhzRg==-1-m-s
-userbaseParams-t2/wl7k8k3m8show6brrgA==-1
-u-nEMZ7Q1OYZ1DeWWvYfP61A==-1-g
-SelfTaskDataCollect-B48A1458D1C4FFE77D280EF506B711A9-1
-SelfTaskDataCollect-Li8eZodrYbr/sv89kvKeIg==-1
-u-eqlfzmHjE9aHn6Y84dhjYQ==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_18970
-gamerun-loginUser-byUid-zone1-day_18956
-SelfTaskDataCollect-C335ED920C30020F4BBDC20B9194C2AC-1
-u-Li8eZodrYbr/sv89kvKeIg==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_18995-lvl_15
-SelfTaskDataCollect-422F96A1FA11E439B4515543C6DCABA4-1
-u-OJhK11YcJs00jwH2qKN0Aw==-1-m-s
-userbaseParams-lX1nmQyZ2ejlz2QSsLs8OA==-1
-u-1ZDy9hpj08ENji4AfOgKKA==-1-m-ci
-u-A27E34AAC08DB08ECD0D6C8BF164B7DE-1-m-s
-u-KCcNvFOrAMok3qSvpE4g/Q==-1-m-ci
-SelfTaskDataCollect-ayYI4ZlkQfVP7MkTJR7oSA==-1
-userbaseParams-F481DAD409674CA6428FC322398BF5B6-1
-gamerun-loginUser-byLevel-zone1-day_18982-lvl_9
-SelfTaskDataCollect-5627095923E27A2D911D2139AB1E9191-1
-SelfTaskDataCollect-9ADFA33D89C4417B1DD18332A19517A0-1
-u-XfDKbemX21q8YADIt5FeCg==-z
-userbaseParams-440DA5410F6830B59493A07154BC66BE-1
-u-wvIzx+ND9/7G32s3sWPchA==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_18976-lvl_1
-u-/ySDglrsMRf6Y4yepSsL9w==-1-g
-u-997K35ioRJvNEzQlFt/C9Q==-1-m-ci
-SelfTaskDataCollect-3953487A590DC66B7E02A874989D9444-1
-u-ribbAMapbKgu5FzWCkyO4Q==-1-m-ci
-userbaseParams-62917FD989862996FD23BB1C98219EE5-1
-SelfTaskDataCollect-A0F82C3656E8EF6E2FCDBF92160A6536-1
-SelfTaskDataCollect-gJaoc4v835VtfaAQy5186A==-1
-userbaseParams-D51D63CA040982E406BDE9898AD757AE-1
-u-Im3MkfDu4X3pz6GsO7yyjQ==-1-s-cp
-SelfTaskDataCollect-A9FE1F854D4DFD5B7D946CC24D7E7380-1
-userbaseParams-nuAuYk+BmREIdk0585ULOg==-1
-u-xTJRRRJTR7o5+CRf4q6uOw==-1-m-ci
-u-qYinnr1KUJYbQAbMeeXh2g==-1-m-q
-userbaseParams-OcN70ne7TNX3fHTDyei27g==-1
-userbaseParams-83EBD878AE7259A64B60BF51D4855EE2-1
-u-Pca85n5ohw4RvSlULPbetg==-1-m-s
-gamecfg-heroextra_level_tupo
-u-KV/g+Q7ZscI8NJdkT2eF1w==-1-m-q
-gamerun-BossFight-byDateHour-zone1-boss2-2021110812
-u-JDwD7HxT+o/oFHUloCW9QA==-1-m-s
-userbaseParams-A27E34AAC08DB08ECD0D6C8BF164B7DE-1
-u-R2xSfQf5GzcQVgybWAL/sg==-1-m-ci
-gamerun-BossFight-byDateHour-zone1-boss2-2021110716
-u-lAwZYSK10jEVdWL0M2GKXA==-1-m-s
-u-+fWV7fh7vRsN2HobiLe2pw==-z
-userbaseParams-0D78FAAF174890472479B44D266D11DA-1
-u-xTJRRRJTR7o5+CRf4q6uOw==-1-g
-u-2eBIdAMzt1XzOrE4vO9Hng==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_18959-lvl_1
-userbaseParams-q34K4oTknzb/Zq1hlLXxhQ==-1
-u-ribbAMapbKgu5FzWCkyO4Q==-1-m-s
-SelfTaskDataCollect-587F2DD95142005A2C3AA725B1914691-1
-SelfTaskDataCollect-q34K4oTknzb/Zq1hlLXxhQ==-1
-userbaseParams-59C558D629AD87402D7A57F7A7B3F76D-1
-u-osDSZi3fTO6qODkFL5XTMQ==-1-m-ci
-u-nuAuYk+BmREIdk0585ULOg==-z
-u-ij9pY+Clt5vlsupQ4CVEnA==-1-m-ci
-userbaseParams-DB2E2CB0838084E57FA4D58B75C9EFC2-1
-SelfTaskDataCollect-6329A6299BED0E67F9E886371E081ED4-1
-gamerun-loginUser-byLevel-zone1-day_18983-lvl_1
-u-9+Ccx7Mg84b5UPGbbNEajQ==-z
-u-ZcdvOGmNMdblwhbbt95c0w==-1-g
-u-7idR+xSanhICp1v+VJlnsQ==-1-g
-gamecfg-taskcard_shop
-gamerun-loginUser-byLevel-zone1-day_18928-lvl_15
-userbaseParams-28F44BB8AED5E24A59B20CF9B7F8BA10-1
-u-TGNy549wH41BZvlUGzOn7g==-z
-u-BE068CA272CF007D2FC83B98C4675B12-z
-u-u/heB8I+0wqCnVHJZA8VhQ==-1-m-s
-u-MIvMeiWCv2gDBs6RrLyI4w==-1-m-q
-u-9v8DlSYbYKQUqZ34M8AxLA==-z
-u-tm5tMtswi8KLa9Jvp7K0AQ==-1-m-q
-u-AQFcl4m+sZMytOl72OjHJg==-1-g
-u-PyOwVEdBVQ5cNFFI4nMl0w==-1-m-q
-u-HuqH7U7vV6c6oEdeoaXAKg==-z
-u-ez5BDluBMHfuQgfEPfDx2Q==-1-g
-gamerun-loginUser-byLevel-zone1-day_18978-lvl_1
-SelfTaskDataCollect-1450A97DDE178972038B36271ABA0655-1
-u-ay2UCE+9U/Zf5Id58kEwAQ==-1-s-cp
-userbaseParams-C9CC01C1D49EAEBD4C0967A599A90171-1
-u-jnkyCOR+6tniYyYsjhQUMA==-1-m-ci
-u-DQTnmIwHgPcP+v5YiNUJZA==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_19006-lvl_5
-userbaseParams-41037CEBEBB0D974DA8A273896A6EDEF-1
-u-8VX8DGOjHndQeEbIGw+mwQ==-1-m-ci
-u-MkkHV64zgPEUXF9bbP6AgQ==-z
-userbaseParams-9D61F5D00481AB4DCC40A993DDBC3652-1
-u-j2olmPookhCpAmEoVXa3pw==-1-g
-userbaseParams-+4ul94P1VGb9IsX+y6Ebdg==-1
-u-yrs9OzHFRlgXNM/reK7OmQ==-z
-gamerun-BossFight-byDateHour-zone1-boss1-2021110623
-u-LkY7oRPUoO0FVfr7QHcpQw==-1-m-q
-gamerun-BossFight-byDateHour-zone1-boss2-2021112217
-u-JDwD7HxT+o/oFHUloCW9QA==-1-m-q
-u-vctxguKByCLCga1Vbk8zAQ==-z
-u-osDSZi3fTO6qODkFL5XTMQ==-z
-userbaseParams-SAPRxtl32vQSBRpJP/02Pw==-1
-userbaseParams-17A28354B63FAB91861ACE2F58BED642-1
-u-FXfH60R7e6bHs98blu8yWw==-1-m-ci
-gamerun-BossFight-byDateHour-zone1-boss1-2021103123
-u-jdCo1id1fr+e4wZ3Llol4w==-1-g
-userbaseParams-1D2C90EC77E31C82F53A679426A99F94-1
-userbaseParams-CAAD039D3935F10661006BC4078C411C-1
-u-MaMq51xW/xDxrV0iee3Low==-1-g
-u-jXXDHASoFuAWGBxQ4fr2zA==-1-m-s
-u-0z/R9XK3KzBe7KJgomzDUQ==-z
-gamecfg-segment
-u-ZrsRPaL6aU8X9sicKMuFaw==-1-m-ci
-u-gfDchI64HK+rV4I3ziEvwA==-1-g
-gamerun-BossFight-byDateHour-zone1-boss2-2021112308
-u-XWcYhQdqttaG0wtyqsJEyw==-1-m-q
-userbaseParams-D32593A01BD775BC34390C81DDCC0EEC-1
-userbaseParams-39847FDA00452FF5939C523233094253-1
-gamecfg-heroextra_dengjie
-u-0z/R9XK3KzBe7KJgomzDUQ==-1-g
-u-KF+sSUjbtwlcyOrp59yuWw==-1-s-cp
-u-vctxguKByCLCga1Vbk8zAQ==-1-m-ci
-userbaseParams-0AA7023BF891A6D68BE6A79AB8D9DDD1-1
-u-D51D63CA040982E406BDE9898AD757AE-z
-userbaseParams-8A51761F8AACDF52A066CF433C7FBC0E-1
-gamerun-loginUser-byLevel-zone1-day_18969-lvl_11
-u-EC85374FB86FEADA0D09533B7587036B-1-g
-u-NBzEWjT1CWPbp2qaQJ7Rgw==-z
-userbaseParams-B9C7CA47E379817B03D2F385B6469328-1
-u-TGNy549wH41BZvlUGzOn7g==-1-s-cp
-u-EjhxcQqX4Su4pZVyIsOS0Q==-1-m-ci
-u-C7l1xRCW7E2dAOXc1YdumA==-1-g
-u-0G/UpDVZP9MJI6r97HLB7Q==-1-s-cp
-gamerun-loginUser-byUid-zone1-day_18929
-u-sQTZeHRbnkRRSD/RCT8esg==-1-m-q
-SelfTaskDataCollect-d+pL5g3p1MQVLakGPONoWg==-1
-u-o/zAyO/cKDtA0899ZDPyqA==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_19013-lvl_5
-u-GSHQWLqasJ7eFpE0i6dRKQ==-1-g
-SelfTaskDataCollect-57ABF53E322FF2803B9DFBD45CD68EF1-1
-userbaseParams-2r6TJEmiwdzbIEsT/pfvIg==-1
-u-PiygwRTmPRef2TCzz5U74Q==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18981-lvl_15
-userbaseParams-A67B08458C0FEC0880172347F52ECC8B-1
-userbaseParams-30ED702A62ECFBC275B9EE57E1086E91-1
-userbaseParams-798D00E357876091CB8D57F921005528-1
-userbaseParams-E7B5892C7F00F41C4C2FCBBAAF3647C7-1
-gamecfg-primordial_data
-u-5Bw7QLaq3oVwErJUQn7mTg==-1-s-cp
-gamerun-loginUser-byLevel-zone1-day_18989-lvl_6
-userbaseParams-FXfH60R7e6bHs98blu8yWw==-1
-u-tsOAmC68t2ekelEqW43izg==-1-g
-u-d+pL5g3p1MQVLakGPONoWg==-1-g
-u-VKafg044KDQhMlbyFhot4g==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_18983
-u-gJaoc4v835VtfaAQy5186A==-1-m-q
-userbaseParams-D0738671EC9E5C83179FC7B8FC137ADF-1
-u-hh2F7ruHiv6F/44mDNolqg==-1-m-q
-userbaseParams-2651FE0674819A069897118234095ED8-1
-gamerun-BossFight-byDateHour-zone1-boss2-2022020603
-userbaseParams-pVcXKlnI8nNY1tclkEOIyQ==-1
-u-o2ejX8X7my6iEDHGB5t8TQ==-z
-gamerun-loginUser-byLevel-zone1-day_18934-lvl_3
-SelfTaskDataCollect-40EA9FE6F02BAA2FEFFBD85E1BAB3790-1
-SelfTaskDataCollect-DnnJUgM+jppgUx6bNU5swQ==-1
-gamerun-loginUser-byUid-zone1-day_18965
-u-NFn8ZNgpyBUvdSt+RvW1UQ==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_18968-lvl_1
-SelfTaskDataCollect-qYinnr1KUJYbQAbMeeXh2g==-1
-u-wKlu4EtGDqbwGNoyut8dxw==-1-m-ci
-u-mYScbAC5kZ9TZiYK2wwZqQ==-z
-u-9OZEclIfg+PGyg1x3UVO/Q==-1-m-q
-gamerun-loginUser-byUid-zone1-day_18963
-userbaseParams-DDCBEC1A093AF5A5A03212928B848B2A-1
-gamerun-loginUser-byUid-zone1-day_18995
-SelfTaskDataCollect-2740AF7779A1D13A7CBF6EFEEC650496-1
-u-JHm3OZgsUrVwouVQms+h2A==-1-m-s
-u-TTzLOc8lsoZKUorjQ448IQ==-1-m-q
-userbaseParams-8D5B0279ECB727BEF6C7F71BC80DF4EB-1
-userbaseParams-27A8130661D26D35CA79638FF08F8EC6-1
-gamecfg-item_taskcard
-gamerun-BossFight-byDateHour-zone1-boss2-2021110917
-u-ZDoOc1Oou26Sa8TvwlIJkQ==-1-m-q
-gamecfg-yanling_upgrade
-u-MWvDK5wVi5UnPqebcLmnig==-1-m-ci
-u-4DGLonP9NGMqnuneAzJkHQ==-1-g
-SelfTaskDataCollect-6BA062FA981A92503835FC6E843FEABE-1
-SelfTaskDataCollect-DD995AAA56B9BEBA0FC7D7E49B8D89F4-1
-u-TTzLOc8lsoZKUorjQ448IQ==-z
-u-Dek+/UfGgAVOJlc3FxiHgA==-1-m-q
-u-nuAuYk+BmREIdk0585ULOg==-1-m-q
-SelfTaskDataCollect-BB95375CA5B22018126527538A934DB9-1
-u-6o00NrA9PZZ+Dx/76feUyw==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18941-lvl_3
-u-EA74E58DCEB076ACC2D824684499CDA2-z
-SelfTaskDataCollect-1AD3A012D3BD244BEFC08B5D15E007AC-1
-u-NF30nkaJUkOTSi2tcZC6FQ==-1-m-ci
-u-fYqtP/ma4sTZ25BcdRQDyA==-z
-gamerun-BossFight-byDateHour-zone1-boss2-2021121101
-gamerun-BossFight-byDateHour-zone1-boss2-2021111500
-u-f3+0IGZAgflf04LQGRq9Lg==-1-m-ci
-gamecfg-yanlingLevel_type
-gamecfg-gatelevel
-gamerun-loginUser-byLevel-zone1-day_18938-lvl_18
-userbaseParams-1157EBC9B9FE127F2FB7C50515A3DB07-1
-u-5Uq4QnmdsojNuLfGxv1GzA==-z
-u-o/zAyO/cKDtA0899ZDPyqA==-1-s-cp
-SelfTaskDataCollect-nDycZEQUMraLQX0CKeBX3Q==-1
-gamerun-BossFight-byDateHour-zone1-boss2-2022011815
-u-ZLYnnXx2uNLWtB3ZET3jNA==-1-m-q
-gamerun-BossFight-byDateHour-zone1-boss2-2021110918
-u-o773tgeZRFG0UA0KdQp3Xw==-1-m-s
-userbaseParams-udn0HKTEHlkvSVKnu/T2gg==-1
-u-osDSZi3fTO6qODkFL5XTMQ==-1-m-q
-SelfTaskDataCollect-8U9ObTnCGkVD5TCSx69syQ==-1
-userbaseParams-BFAA357AD0F74C02EC8CE771DC2803C8-1
-u-FXfH60R7e6bHs98blu8yWw==-1-s-cp
-u-j2sZ5k9tMaPL69GtPO+cGw==-1-m-q
-u-nEMZ7Q1OYZ1DeWWvYfP61A==-z
-u-72eHzmeU8TYOYXIk2dnFeg==-1-m-s
-userbaseParams-51B0C835B445681458A4A03470378EE1-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021101814
-userbaseParams-EaZLs6BWLXoMQxd2Xm7bTA==-1
-u-EcXFOI49fmaiqsb6a8K2Fw==-1-g
-u-cr4V5XiL38ZQb1JjnmcBog==-z
-u-6OTeueUgK/0ElTl+XX5KHA==-1-g
-u-Tm9gvRxkVKg6hFRApPCD3A==-z
-userbaseParams-B11EBA09A42AEBF542C032D78A49CEF2-1
-u-o773tgeZRFG0UA0KdQp3Xw==-1-m-q
-u-Im3MkfDu4X3pz6GsO7yyjQ==-1-g
-u-B10Zc0KqgOWVnLP7wHyhVQ==-1-g
-SelfTaskDataCollect-Tm9gvRxkVKg6hFRApPCD3A==-1
-u-ayYI4ZlkQfVP7MkTJR7oSA==-1-g
-u-Im3MkfDu4X3pz6GsO7yyjQ==-1-m-ci
-userbaseParams-b8A4Sg4Sdj8zC25J8Ej7zg==-1
-gamecfg-college
-u-1ZDy9hpj08ENji4AfOgKKA==-z
-SelfTaskDataCollect-3xAkyAtWlLHYGHQtpMxs1g==-1
-gamerun-loginUser-byLevel-zone1-day_18943-lvl_1
-u-u/heB8I+0wqCnVHJZA8VhQ==-1-m-q
-userbaseParams-255365A016C3A372DF4CFEB093163672-1
-u-MkrHhUYYtXi9WCYCtX4nVQ==-z
-SelfTaskDataCollect-0F58AD090F80A5DF50E9627885311AFE-1
-gamerun-loginUser-byLevel-zone1-day_18955-lvl_1
-userbaseParams-07A98CC70483D87541E2B4371733A960-1
-u-G+MdR2//C8Jq8KbHXyzYxg==-1-s-cp
-gamerun-loginUser-byLevel-zone1-day_19026-lvl_1
-u-pifU+4b5BnkXa116cN8hbw==-1-m-q
-u-urGme20Pzt1IzBIiQw5GTg==-z
-u-93GQrz7rBRkyz2Gb5MF8tA==-z
-u-mNR4NMbwICJp8QiYDULGrA==-z
-u-9v8DlSYbYKQUqZ34M8AxLA==-1-m-q
-userbaseParams-B19E2C7193A72296FD963E94358EFFD5-1
-userbaseParams-0aiCK//5ZR3bJ3ZAJBiKgA==-1
-SelfTaskDataCollect-UQp+foexZOgCvOY5tIqfrw==-1
-u-R2xSfQf5GzcQVgybWAL/sg==-1-g
-u-9v8DlSYbYKQUqZ34M8AxLA==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_18981
-u-1q4VDAnsj0c48+08Yge71Q==-z
-gamerun-loginUser-byLevel-zone1-day_18971-lvl_1
-u-KscJC3uMJpW61K5h4MYDcg==-1-m-ci
-u-3bS2D5sM05mQUpfcuahRaA==-1-m-ci
-u-ubY8fO6EiqJSXBrIHVhzRg==-z
-u-7idR+xSanhICp1v+VJlnsQ==-1-m-s
-userbaseParams-ACBC2C72A3515A2C87B11E136BC34397-1
-u-VfZPw3LaHOF9PfanwvvUAQ==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_19016-lvl_4
-gamerun-loginUser-byLevel-zone1-day_19023-lvl_8
-SelfTaskDataCollect-B50B15F3342FA637790C1050C15D10EA-1
-gamerun-loginUser-byLevel-zone1-day_19034-lvl_11
-u-Lp09gWphD9ocQOJrN67w6A==-1-g
-u-B10Zc0KqgOWVnLP7wHyhVQ==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_19014-lvl_6
-gamecfg-gate_starreward
-gamerun-loginUser-byLevel-zone1-day_19030-lvl_13
-u-72eHzmeU8TYOYXIk2dnFeg==-1-m-ci
-u-MN//ZIiAW628KaKWTFxuQA==-1-s-cp
-gamerun-loginUser-byUid-zone1-day_18972
-gamerun-loginUser-byLevel-zone1-day_18931-lvl_1
-u-3D119C22C0DD36A0BA269AA41AE243DB-1-g
-userbaseParams-A9FE1F854D4DFD5B7D946CC24D7E7380-1
-gamerun-loginUser-byLevel-zone1-day_19018-lvl_8
-u-MkrHhUYYtXi9WCYCtX4nVQ==-1-m-s
-u-1WPMPyjxNy02xw3+eZsWvg==-1-s-cp
-userbaseParams-YD5/dKVM2rmVeqA4frMwXQ==-1
-SelfTaskDataCollect-741A02BD75DC1A51E515AA3C9697A0EA-1
-SelfTaskDataCollect-7BD11C64C978F44C9A39007FD85958FA-1
-u-TnqLdLtwl5eBKpFWjBNigQ==-1-g
-u-DnnJUgM+jppgUx6bNU5swQ==-1-m-ci
-u-cr4V5XiL38ZQb1JjnmcBog==-1-g
-userbaseParams-+t+YqyHGZ7NL+BIRGpKDBQ==-1
-u-k4P0UNFEkjWkYYgVgucMMg==-1-m-ci
-u-FOqKL+d0IsOKrkVu0k8E4g==-z
-gamerun-loginUser-byLevel-zone1-day_18930-lvl_1
-userbaseParams-A45AA48FAC171E3D6506FC2156973145-1
-userbaseParams-19NCegHaMGsfBGlDi/6wBA==-1
-gamerun-BossFight-byDateHour-zone1-boss2-2022020520
-u-ydW1PrMki5ta+X8euz9JaQ==-1-s-cp
-u-aF3B9amDlVZ5k+lFRWV19Q==-z
-u-XKrUOsqY1VCZdItpBZ3+CQ==-z
-u-w24OYozyPAgbPXstS/99Wg==-1-g
-gamerun-loginUser-byUid-zone1-day_18951
-userbaseParams-DA2C68AA45E19B39D41505AEE2F52373-1
-u-ZrsRPaL6aU8X9sicKMuFaw==-1-s-cp
-u-P2i10bUPlA3O1akfQM4bCA==-z
-SelfTaskDataCollect-CFFEACDF01912C5A8A5C802B6E7A68F2-1
-u-Im3MkfDu4X3pz6GsO7yyjQ==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_19018-lvl_80
-u-1WPMPyjxNy02xw3+eZsWvg==-1-g
-gamerun-loginUser-byUid-zone1-day_18987
-u-GBFf01qU++xXwPq5Crsc7g==-1-g
-userbaseParams-053B3F10B46DC063C4690671BF4D6982-1
-u-5o/RlsWk7zJlEWeV8f1oug==-1-m-s
-u-1XOdqrLN9KEV1e3L6emTOw==-1-g
-u-DTubNlAbSTRdrYC2xX3Zkw==-1-s-cp
-gamerun-loginUser-byLevel-zone1-day_18952-lvl_1
-u-mX4i+OpWJBt6oElbLfC2hw==-1-g
-u-gg6On5qbR959wt6S+mk5hQ==-1-s-cp
-u-ZrsRPaL6aU8X9sicKMuFaw==-z
-u-0hKv/dcvUHlHlAzbGiAHXQ==-1-m-s
-userbaseParams-A3B24892491378D6598803F13A10448B-1
-userbaseParams-185841175D77D8CBF88B1FED1D8032BD-1
-u-1AK+a1KUFZfTDnHkrBhPkw==-1-g
-SelfTaskDataCollect-6OTeueUgK/0ElTl+XX5KHA==-1
-gamecfg-item_package
-u-ribbAMapbKgu5FzWCkyO4Q==-z
-u-8Xo3yqqCHblWPNrhxPf6Cg==-1-m-q
-u-1WPMPyjxNy02xw3+eZsWvg==-z
-gamecfg-item_additional
-userbaseParams-NF30nkaJUkOTSi2tcZC6FQ==-1
-u-1XOdqrLN9KEV1e3L6emTOw==-z
-SelfTaskDataCollect-296904C05F1E4EE8EF81C220773D8227-1
-userbaseParams-HodjNBz2XZNUHGQXleBxVQ==-1
-u-+LfPNbUrUE4cgXGiFax4+A==-1-m-q
-u-NRwhfvDYUzmRw+FU2/+jwA==-1-s-cp
-gamerun-loginUser-byUid-zone1-day_18946
-u-XWcYhQdqttaG0wtyqsJEyw==-1-g
-userbaseParams-228EFEA1F97A591678B3D6A690BF29B7-1
-u-EC85374FB86FEADA0D09533B7587036B-1-s-cp
-u-EA74E58DCEB076ACC2D824684499CDA2-1-s-cp
-SelfTaskDataCollect-8A1C2BFC4DDA4115F56B2BBC53A61471-1
-SelfTaskDataCollect-6FB628B37A968FCC83FD0F9A6FF47A9A-1
-userbaseParams-MN//ZIiAW628KaKWTFxuQA==-1
-gamerun-loginUser-byLevel-zone1-day_18920-lvl_7
-gamerun-loginUser-byLevel-zone1-day_18939-lvl_15
-SelfTaskDataCollect-5A4036214AFCA7A11120C5AFCB151913-1
-userbaseParams-F9411C47B2C6AAE692F3542D6371E3D5-1
-userbaseParams-SlWx6E4qNAbxll6U6aEhqg==-1
-userbaseParams-DF6AECE5C1483BA1852A60C216B2887E-1
-u-rgiU2/MGPvJFePJIIcdwRw==-z
-gamerun-loginUser-byLevel-zone1-day_18945-lvl_1
-gamerun-loginUser-byUid-zone1-day_18934
-u-JHm3OZgsUrVwouVQms+h2A==-z
-gamerun-loginUser-byUid-zone1-day_18975
-u-4Lblb3ZUytyaUUklAYmYwQ==-1-g
-u-bnC04nNXDNLNQSsYlFgHWA==-1-m-s
-u-5+RNi5sZahUsb3niCHTuBQ==-1-m-s
-u-STsdxXdwrqa4AEqEqAVjCg==-z
-u-6OTeueUgK/0ElTl+XX5KHA==-z
-u-u/heB8I+0wqCnVHJZA8VhQ==-1-m-ci
-gamerun-BossFight-byDateHour-zone1-boss2-2022021203
-u-k4P0UNFEkjWkYYgVgucMMg==-1-m-s
-u-jEbfatDTuOhvTglJUaAkUQ==-1-m-ci
-u-xXnz2KJLqEDaMQvWheDD7g==-z
-gamerun-loginUser-byLevel-zone1-day_18934-lvl_18
-userbaseParams-ZrsRPaL6aU8X9sicKMuFaw==-1
-gamerun-loginUser-byLevel-zone1-day_18983-lvl_6
-userbaseParams-75C9503381F2DE06F660DBC20A8ECF38-1
-u-+t+YqyHGZ7NL+BIRGpKDBQ==-1-m-s
-u-5yw8awbTYsfeS98682N6Hg==-z
-gamerun-loginUser-byLevel-zone1-day_18953-lvl_1
-SelfTaskDataCollect-6F691F066599F709F085AA3EB3F2858B-1
-u-MdYqyhz3dlmKBH+VYhimFA==-1-s-cp
-userbaseParams-81BE7773B5FBFA572FC4CC8791D0917D-1
-u-XKrUOsqY1VCZdItpBZ3+CQ==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_19013-lvl_3
-u-jdCo1id1fr+e4wZ3Llol4w==-1-m-q
-userbaseParams-52644BDFAD3D87F3F416D37DE4CADA18-1
-u-KCcNvFOrAMok3qSvpE4g/Q==-z
-u-Im3MkfDu4X3pz6GsO7yyjQ==-z
-userbaseParams-ay2UCE+9U/Zf5Id58kEwAQ==-1
-userbaseParams-C7CFDC281EABCCF6C428957CC16FD086-1
-gamerun-BossFight-byDateHour-zone1-boss1-2021112420
-gamerun-BossFight-byDateHour-zone1-boss2-2021102402
-SelfTaskDataCollect-6BBBD068729FAD5F9FCA819B9E017620-1
-userbaseParams-E7580265523B9F61D7DFC38DB578C122-1
-u-Hwmz+f+0nPPXy4rrpjRtjw==-1-m-s
-SelfTaskDataCollect-0DE1511152B2141649ABA0DC385E8FC6-1
-gamerun-loginUser-byUid-zone1-day_19032
-SelfTaskDataCollect-F3ED11760A3E4289684951A48480685D-1
-gamerun-BossFight-byDateHour-zone1-boss2-2022012415
-u-8Xo3yqqCHblWPNrhxPf6Cg==-1-m-ci
-u-5Uq4QnmdsojNuLfGxv1GzA==-1-m-q
-userbaseParams-NWMCQ9aVi/6YVProRNcd/g==-1
-u-9OZEclIfg+PGyg1x3UVO/Q==-z
-u-TGNy549wH41BZvlUGzOn7g==-1-m-ci
-userbaseParams-/ySDglrsMRf6Y4yepSsL9w==-1
-stat-totalUserNum-zone1
-SelfTaskDataCollect-81BE7773B5FBFA572FC4CC8791D0917D-1
-SelfTaskDataCollect-CwGc7/3mBfRkGGbtIdHPSw==-1
-userbaseParams-C7CD5FDEADF398075231EF79081D1FA8-1
-u-n1Z68uCipSA2+XyaYGpXQg==-1-s-cp
-gamecfg-endless_tower
-u-KTi+lLPxDhnSMkXub0sjMQ==-1-m-ci
-u-TAiKPeSlj1YARW215IlOmg==-1-m-ci
-userbaseParams-9FEC8BD3859F1B92A1B6E4E9CFD62370-1
-u-1q4VDAnsj0c48+08Yge71Q==-1-g
-userbaseParams-C73AC0DC42D3C1AAFC1BF8D5192A1545-1
-userbaseParams-24477C03D3990421389AD19B0F00ABA2-1
-u-DH3ziEKN4S09aXOMJxoBFw==-1-m-s
-gamerun-loginUser-byUid-zone1-day_19036
-u-OJhK11YcJs00jwH2qKN0Aw==-z
-SelfTaskDataCollect-F6F99DFDAE85450F7817CFDC3A7F138A-1
-u-qc8fEtVio7h16eL/kvO6gA==-1-m-s
-stat-reported-log-e_task
-u-TGNy549wH41BZvlUGzOn7g==-1-g
-u-+fWV7fh7vRsN2HobiLe2pw==-1-m-s
-u-301ctjvGmk3qO9uWzUZkKA==-1-m-s
-SelfTaskDataCollect-BF61E773AB8087FAA7F12FBCAEF872E5-1
-gamerun-loginUser-byUid-zone1-day_19018
-u-TneySddMA9RKLvPu6mbkDw==-1-m-ci
-userbaseParams-n1Z68uCipSA2+XyaYGpXQg==-1
-u-NYsPUhxNl1kKC7mQ2N/01g==-1-m-ci
-u-LkY7oRPUoO0FVfr7QHcpQw==-z
-u-wmJfxTuJ85Wo7jULJhlplg==-1-m-s
-u-301ctjvGmk3qO9uWzUZkKA==-1-m-ci
-u-ThP4sBclr3EuHHQEa+niSw==-1-m-ci
-u-KCcNvFOrAMok3qSvpE4g/Q==-1-g
-u-q34K4oTknzb/Zq1hlLXxhQ==-1-g
-u-q9gZqncQmt1BUZbXBUIcNg==-1-m-ci
-u-EjhxcQqX4Su4pZVyIsOS0Q==-1-m-q
-gamerun-loginUser-byUid-zone1-day_18969
-SelfTaskDataCollect-1309B410A4F21ACB018131772FB67AB4-1
-gamerun-loginUser-byLevel-zone1-day_19017-lvl_9
-userbaseParams-90ACF4D7731D2E80773F763E8896B276-1
-gamecfg-heroextra_skill_lv_limit
-SelfTaskDataCollect-0E2BA1CB1F33AAB4A4C078FD56DAB17A-1
-u-KCcNvFOrAMok3qSvpE4g/Q==-1-m-s
-SelfTaskDataCollect-44266338E61A2E134540F691F3A576A5-1
-u-iaU3wefEvfaE4LIvhh/E4A==-z
-userbaseParams-F23D47FEA49E388C73A83AB2683B596B-1
-u-bnC04nNXDNLNQSsYlFgHWA==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_18985
-SelfTaskDataCollect-AACC562B64D7942DF231ACF42D78A74C-1
-u-hh2F7ruHiv6F/44mDNolqg==-z
-u-SAPRxtl32vQSBRpJP/02Pw==-1-m-q
-u-Oe5DQ7vJgxJD9JySk8wlgg==-1-m-s
-SelfTaskDataCollect-54AA5FF65F159DF36B142123D01A35B1-1
-u-5Bw7QLaq3oVwErJUQn7mTg==-1-m-ci
-gamecfg-skill_cross
-u-3xAkyAtWlLHYGHQtpMxs1g==-1-m-s
-SelfTaskDataCollect-CF8578C1DB2AA0AA63D17FBD85938F32-1
-gamerun-loginUser-byLevel-zone1-day_19033-lvl_11
-u-9aWr5pidEog+2yGISeSOEg==-1-m-ci
-SelfTaskDataCollect-190DE02CD6647857D0DC64F9879C9309-1
-userbaseParams-DAA351C52B716CF190A162D71849CC79-1
-userbaseParams-4CfVxFhgerAefWz/wk5Ifg==-1
-u-o/zAyO/cKDtA0899ZDPyqA==-1-m-s
-u-SNBVsqqZ2ZZ5Y776fULJfA==-1-m-ci
-u-Q12nzHLzNXbY9HG10p09hg==-1-m-s
-userbaseParams-tot2ksrkH4EmVddpCx5I1w==-1
-SelfTaskDataCollect-437D568AB3D1D350E8002F99223B1449-1
-u-a97EPP7m3cqfXv/RG3M36g==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_19020-lvl_12
-u-8U9ObTnCGkVD5TCSx69syQ==-1-s-cp
-u-l2UAFiftXTkFyOzuFf/k7A==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_19028-lvl_1
-u-hGUAgUGxH9NfjjckcLINnw==-1-g
-gamerun-loginUser-byLevel-zone1-day_19017-lvl_4
-userbaseParams-8FFC66F465444AC1EA6C584BF2A4973A-1
-u-MIvMeiWCv2gDBs6RrLyI4w==-1-g
-userbaseParams-A1BDDA478DDE9BF707EC2A26D8478A47-1
-u-9v8DlSYbYKQUqZ34M8AxLA==-1-m-s
-u-wKlu4EtGDqbwGNoyut8dxw==-1-m-q
-u-cCUbi1u+cSkFtnoErxd7jA==-1-g
-userbaseParams-7EFB3A4EF5662AB67C6BCDA2AF6AC0E4-1
-u-urGme20Pzt1IzBIiQw5GTg==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_19016-lvl_5
-u-urGme20Pzt1IzBIiQw5GTg==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_19030-lvl_12
-gamerun-loginUser-byUid-zone1-day_18945
-u-G+MdR2//C8Jq8KbHXyzYxg==-z
-u-hGUAgUGxH9NfjjckcLINnw==-1-m-s
-gamerun-loginUser-byUid-zone1-day_19013
-u-xXnz2KJLqEDaMQvWheDD7g==-1-m-q
-userbaseParams-FF64A8E54F4025703DDDD932591431D9-1
-u-pVcXKlnI8nNY1tclkEOIyQ==-z
-u-ubY8fO6EiqJSXBrIHVhzRg==-1-m-ci
-u-+fWV7fh7vRsN2HobiLe2pw==-1-s-cp
-gamerun-loginUser-byUid-zone1-day_18961
-u-8yhk5jbWid0isnRUWiOGyg==-1-m-ci
-u-SNBVsqqZ2ZZ5Y776fULJfA==-z
-u-+4ul94P1VGb9IsX+y6Ebdg==-1-m-s
-u-9q3yMbDiGPLotYQCm+Nwiw==-z
-SelfTaskDataCollect-C7CD5FDEADF398075231EF79081D1FA8-1
-userbaseParams-C064C78BBCC88B54B2B82E7D0EB31475-1
-u-MFCtadHxTkcytK840rJHSw==-1-g
-gamerun-loginUser-byLevel-zone1-day_18985-lvl_1
-u-K42bbRyEX24rJZD8Bq0yeA==-1-m-s
-userbaseParams-CF7B9AA371BFFFB2FD02C4161C6A3C91-1
-u-zOb+bdJZtZcENYsd9xlI3w==-z
-u-B1cuw5vbtWgnoWe2vrcX7Q==-1-g
-u-SNBVsqqZ2ZZ5Y776fULJfA==-1-m-q
-u-8Kkx99rfFjy97uwica+TQA==-z
-userbaseParams-FF4E6F08B89635C5AC77FADD5157AE76-1
-userbaseParams-319F14571DCE7876F418AEFCAB1C534F-1
-SelfTaskDataCollect-JHm3OZgsUrVwouVQms+h2A==-1
-userbaseParams-BD2663585A9EE6CB7E62011E20FF1E67-1
-u-kQdUrd9ju35umNXJLva3jg==-1-g
-gamerun-loginUser-byUid-zone1-day_19014
-userbaseParams-8Xo3yqqCHblWPNrhxPf6Cg==-1
-u-7UI/Pe3jTdFTjyldkdaAlg==-1-m-s
-u-9sdvBxCeIN82jaunYoPYmA==-1-s-cp
-userbaseParams-CFFEACDF01912C5A8A5C802B6E7A68F2-1
-u-98gr6/L9cADTzSfHq0/UYg==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_19036-lvl_1
-u-l2UAFiftXTkFyOzuFf/k7A==-1-s-cp
-u-lAwZYSK10jEVdWL0M2GKXA==-1-m-q
-gamerun-loginUser-byUid-zone1-day_18978
-userbaseParams-7BD11C64C978F44C9A39007FD85958FA-1
-u-bKozOLZHDSoN6SWenTpS7g==-z
-u-19NCegHaMGsfBGlDi/6wBA==-1-m-ci
-u-xNFJ1mxAjZgxldJHkZiMJA==-1-m-q
-u-H5VGLhYtAC2VLTRDLcW80Q==-1-m-q
-u-xNFJ1mxAjZgxldJHkZiMJA==-1-m-s
-u-2r6TJEmiwdzbIEsT/pfvIg==-1-g
-u-tot2ksrkH4EmVddpCx5I1w==-1-m-s
-gamerun-BossFight-byDateHour-zone1-boss2-2021102422
-userbaseParams-DBD45585C757B1C0553F0970D00AEE47-1
-u-ZrsRPaL6aU8X9sicKMuFaw==-1-m-s
-userbaseParams-B502CE97A61CEE5C904B83973C96919C-1
-gamecfg-shenmiaoTypeList
-u-Ou4x+BI6rh8PXl52PzFeNQ==-1-m-s
-u-Id28jDn1EdTEnDGV7xBVXA==-1-m-ci
-u-9leTN+xP8P4PlGYp2u2l1A==-1-m-s
-gamecfg-item_taskcard_type
-SelfTaskDataCollect-40FB2DF94813FAC28A198233F0455E16-1
-u-PeFkh+iWridOaF6CQ8iKAQ==-z
-u-B1cuw5vbtWgnoWe2vrcX7Q==-1-m-ci
-userbaseParams-MXZo0VBl2y3AEK2GxUl12Q==-1
-SelfTaskDataCollect-C064C78BBCC88B54B2B82E7D0EB31475-1
-u-AACC562B64D7942DF231ACF42D78A74C-1-m-q
-u-6ZTCAIv3hUat6SZR8wl2jg==-1-g
-userbaseParams-8E147B43DCF4B57A6CC7F94CE3F86554-1
-u-MFCtadHxTkcytK840rJHSw==-1-m-ci
-u-k4P0UNFEkjWkYYgVgucMMg==-z
-u-MBhAEu1HhdwqVSzh93Q29g==-1-m-ci
-SelfTaskDataCollect-3J49pL2tTKGGM+LC1+OVHQ==-1
-SelfTaskDataCollect-40E84229932EDC4902D469322EAA2541-1
-userbaseParams-2740AF7779A1D13A7CBF6EFEEC650496-1
-u-ZrsRPaL6aU8X9sicKMuFaw==-1-m-q
-u-nyA8gPINDhmuo9O6gIwFPQ==-1-m-s
-u-MkrHhUYYtXi9WCYCtX4nVQ==-1-m-ci
-gamecfg-GM_uids
-userbaseParams-9420F6CF6942C141F0B5648F405AE3F4-1
-u-lAwZYSK10jEVdWL0M2GKXA==-1-m-ci
-userbaseParams-302BF6B1971C1B0698CB8A17C7F050DF-1
-u-MdYqyhz3dlmKBH+VYhimFA==-1-m-ci
-userbaseParams-OPvcDNNCuq+sAA8S8+lIug==-1
-userbaseParams-BD46F1C09F1A5ADDB10CBC628EECC8EC-1
-u-moEJufjEW1j6WRFlZBE7XA==-1-m-ci
-userbaseParams-7ADF26FB52DB4557C7BD3A4FB48B032B-1
-u-740Nw+Q/tpWv68kv4NtQ/A==-1-m-ci
-u-w8qBeTaWzznrjSjXS7Rdwg==-1-m-s
-u-NRwhfvDYUzmRw+FU2/+jwA==-z
-SelfTaskDataCollect-0hKv/dcvUHlHlAzbGiAHXQ==-1
-u-osDSZi3fTO6qODkFL5XTMQ==-1-g
-u-bKozOLZHDSoN6SWenTpS7g==-1-m-s
-gamecfg-rechargeRebate
-userbaseParams-MdYqyhz3dlmKBH+VYhimFA==-1
-u-DH3ziEKN4S09aXOMJxoBFw==-1-m-ci
-SelfTaskDataCollect-ribbAMapbKgu5FzWCkyO4Q==-1
-SelfTaskDataCollect-DA2C68AA45E19B39D41505AEE2F52373-1
-gamecfg-client
-gamerun-loginUser-byLevel-zone1-day_19018-lvl_1
-gamerun-loginUser-byLevel-zone1-day_19004-lvl_6
-u-H5VGLhYtAC2VLTRDLcW80Q==-z
-userbaseParams-02367E94327576F06DC9D180EF85C635-1
-userbaseParams-1B607FC3C642288BEFD33537956B3542-1
-userbaseParams-DB72494E86D08DD89E3905D7C0514911-1
-userbaseParams-j2olmPookhCpAmEoVXa3pw==-1
-userbaseParams-F763C73EBFA820450C377D5F2C3035B9-1
-SelfTaskDataCollect-382563BFD1148467484C0BF8783885A1-1
-SelfTaskDataCollect-DF6AECE5C1483BA1852A60C216B2887E-1
-u-EjhxcQqX4Su4pZVyIsOS0Q==-1-g
-SelfTaskDataCollect-62441A3CABC3650CB43D5E60FE8B657E-1
-u-ubY8fO6EiqJSXBrIHVhzRg==-1-g
-u-zOb+bdJZtZcENYsd9xlI3w==-1-m-ci
-SelfTaskDataCollect-YD5/dKVM2rmVeqA4frMwXQ==-1
-u-ZxLauD6uwqh09ollSB0qrQ==-1-m-s
-userbaseParams-AE79F01333157B2C4A3E0932DBBA1CB9-1
-userbaseParams-2eBIdAMzt1XzOrE4vO9Hng==-1
-userbaseParams-4AB77A9A6B65C9257E9C6A47773A5AC9-1
-SelfTaskDataCollect-4F138317437FB145DB8EE1A17B7FB0F8-1
-gamerun-loginUser-byLevel-zone1-day_19001-lvl_15
-userbaseParams-A257EDE3F2FFFD5805A65BAF4ADB026D-1
-u-kQdUrd9ju35umNXJLva3jg==-1-m-q
-u-6gofp4BAXKjUefS4iwpOnw==-1-m-s
-gamecfg-activity
-u-p0CSTp7ZgaDWBBAibI465w==-1-m-s
-userbaseParams-95C1FB646B8518336AC1D6EF985A0156-1
-SelfTaskDataCollect-F763C73EBFA820450C377D5F2C3035B9-1
-u-J1QBz5ByvH5KB6Fcci8scg==-1-m-ci
-gamecfg-secretshop_typeId
-gamerun-loginUser-byLevel-zone1-day_18954-lvl_1
-gamerun-BossFight-byDateHour-zone1-boss2-2021122715
-gamerun-loginUser-byLevel-zone1-day_18947-lvl_1
-u-tm5tMtswi8KLa9Jvp7K0AQ==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_18940
-SelfTaskDataCollect-27AE9DBA3E6A7E20153AA967FF6DF3F2-1
-u-wKlu4EtGDqbwGNoyut8dxw==-z
-gamerun-loginUser-byLevel-zone1-day_19019-lvl_12
-SelfTaskDataCollect-lCr+biIlvaZJB/Yx8MTUCw==-1
-userbaseParams-o/zAyO/cKDtA0899ZDPyqA==-1
-u-fmnHE43N47Mdxz8ASTUcOQ==-1-m-s
-userbaseParams-B50B15F3342FA637790C1050C15D10EA-1
-SelfTaskDataCollect-mrGaPvKOlX4POcCSa7oIXQ==-1
-SelfTaskDataCollect-FF4E6F08B89635C5AC77FADD5157AE76-1
-userbaseParams-3114D6589AD8BD431AA833CF4476E36E-1
-gamecfg-hero_levelexp
-u-Sx240hHi9qnPpyYyJkHDeQ==-z
-u-301ctjvGmk3qO9uWzUZkKA==-z
-u-iaU3wefEvfaE4LIvhh/E4A==-1-m-q
-SelfTaskDataCollect-AC757F0921DB76A6646DD35A19A912F9-1
-u-93GQrz7rBRkyz2Gb5MF8tA==-1-g
-u-PeFkh+iWridOaF6CQ8iKAQ==-1-m-s
-userbaseParams-1AD3A012D3BD244BEFC08B5D15E007AC-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021121317
-u-D51D63CA040982E406BDE9898AD757AE-1-m-ci
-gamecfg-build
-u-kMeqzZ7Oi/GoYVYW+brMQQ==-1-m-s
-userbaseParams-SrqXwLeVCA0tH6knra4Q7A==-1
-SelfTaskDataCollect-V9EhOYpB/ZHlWrV52TGojw==-1
-u-gnVmrGt/N9RF2YN9u15D4g==-z
-u-kQdUrd9ju35umNXJLva3jg==-1-m-s
-SelfTaskDataCollect-ECK2QdwkgBiQkNfqqgGD7w==-1
-u-mYScbAC5kZ9TZiYK2wwZqQ==-1-g
-userbaseParams-B4515064FE9C153449127EC946B30867-1
-u-J1QBz5ByvH5KB6Fcci8scg==-z
-u-9q3yMbDiGPLotYQCm+Nwiw==-1-s-cp
-u-b8A4Sg4Sdj8zC25J8Ej7zg==-1-m-q
-u-6gofp4BAXKjUefS4iwpOnw==-1-g
-SelfTaskDataCollect-SAPRxtl32vQSBRpJP/02Pw==-1
-u-lX1nmQyZ2ejlz2QSsLs8OA==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_19024-lvl_1
-u-0aiCK//5ZR3bJ3ZAJBiKgA==-1-g
-gamerun-BossFight-byDateHour-zone1-boss1-2021101617
-u-qc8fEtVio7h16eL/kvO6gA==-1-m-q
-u-cx8AHSDLHGe0Joij/o7lzA==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18975-lvl_1
-SelfTaskDataCollect-BE5157BE388F96401E0B369B62AA0004-1
-gamerun-loginUser-byLevel-zone1-day_18968-lvl_19
-userbaseParams-gg6On5qbR959wt6S+mk5hQ==-1
-SelfTaskDataCollect-D51D63CA040982E406BDE9898AD757AE-1
-u-oAfSaJ2CId42Y/hgbjZ4xA==-1-g
-gamerun-loginUser-byLevel-zone1-day_19019-lvl_5
-userbaseParams-tsOAmC68t2ekelEqW43izg==-1
-u-zK2G79FtrluCvJ170wnZZg==-1-g
-stat-reported-log-e_gate
-u-ZcdvOGmNMdblwhbbt95c0w==-1-m-ci
-userbaseParams-EA74E58DCEB076ACC2D824684499CDA2-1
-u-jgzcy5hBwKPaNZdFHN5IHg==-z
-u-Iu/VTwa/fGfb7VzhHyjCZg==-1-m-s
-u-9q3yMbDiGPLotYQCm+Nwiw==-1-m-s
-u-tLS68sxOe80/+UA2THhbAw==-1-g
-gamecfg-secretshop_refresh
-SelfTaskDataCollect-59C558D629AD87402D7A57F7A7B3F76D-1
-u-2r6TJEmiwdzbIEsT/pfvIg==-1-s-cp
-u-6OTeueUgK/0ElTl+XX5KHA==-1-m-ci
-userbaseParams-285FE141C42ED0ED608F3BE15D62EE92-1
-u-4DGLonP9NGMqnuneAzJkHQ==-z
-SelfTaskDataCollect-FD23BEC32570C88C2A3E6003F6CC9D1C-1
-userbaseParams-9leTN+xP8P4PlGYp2u2l1A==-1
-SelfTaskDataCollect-XWcYhQdqttaG0wtyqsJEyw==-1
-u-MBhAEu1HhdwqVSzh93Q29g==-1-m-s
-gamerun-BossFight-byDateHour-zone1-boss2-2021112420
-u-kKjLbxh8JVOiZkjR10tPXQ==-1-s-cp
-u-ipR9CPCS0Scshk1TmFO7iA==-1-m-ci
-u-3xAkyAtWlLHYGHQtpMxs1g==-1-m-q
-userbaseParams-0F698D5CC184A30D333C7D14220877B9-1
-u-ECK2QdwkgBiQkNfqqgGD7w==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_18993
-u-om3ehqNja3wlvi857jL54g==-1-m-ci
-u-3IYGcKIZE79UvIG7QoScDQ==-1-m-ci
-u-xNFJ1mxAjZgxldJHkZiMJA==-1-g
-u-MkkHV64zgPEUXF9bbP6AgQ==-1-s-cp
-u-+/TRL/jresq5sVDmSuGlXA==-1-s-cp
-gamecfg-item_box
-SelfTaskDataCollect-s69Gt57wzLgvcTpt96F5Gw==-1
-u-wnVYczNauXLve8WiGU/M3w==-1-m-ci
-userbaseParams-8B46FA7AB913D6C0BC3D1D5D60D9CBB8-1
-userbaseParams-414E19BC4B4C7C7013BF9A573B91A701-1
-u-PprlXa/k/ypCsaRqxYjaSw==-z
-userbaseParams-p0CSTp7ZgaDWBBAibI465w==-1
-u-Tm9gvRxkVKg6hFRApPCD3A==-1-m-ci
-userbaseParams-616B642E8BC8A2DD148179F640C34A85-1
-gamecfg-guildlevel
-SelfTaskDataCollect-nyA8gPINDhmuo9O6gIwFPQ==-1
-u-4DGLonP9NGMqnuneAzJkHQ==-1-m-ci
-u-9aWr5pidEog+2yGISeSOEg==-1-m-q
-userbaseParams-6gofp4BAXKjUefS4iwpOnw==-1
-SelfTaskDataCollect-K42bbRyEX24rJZD8Bq0yeA==-1
-userbaseParams-231E8F2F5A10CA68F284DD87E5F90F32-1
-u-Sx240hHi9qnPpyYyJkHDeQ==-1-guild
-u-/1EHzOG+FJAt+MAUUI/AJw==-1-m-ci
-u-Bfd5E/d16244Z+Bb7DeVNg==-1-m-ci
-SelfTaskDataCollect-D56B10DC952CD1A5C9BB90ECA9B67CE6-1
-u-aqvPZwjUX6HxLSwcle9Efw==-1-m-ci
-u-3IYGcKIZE79UvIG7QoScDQ==-1-g
-u-MIvMeiWCv2gDBs6RrLyI4w==-z
-SelfTaskDataCollect-1123CBE9B30EB03F28B288990124132E-1
-SelfTaskDataCollect-0AC35C1A0C448D4EF9271476E2F7E7E4-1
-userbaseParams-3DD56FA8C60F071DD6B5AA37A431CDCD-1
-u-+t+YqyHGZ7NL+BIRGpKDBQ==-1-m-q
-u-J1QBz5ByvH5KB6Fcci8scg==-1-g
-userbaseParams-CDA915E5D8DC4306E4CE28DB9BA67FB4-1
-userbaseParams-6BEC9439797876DC38E923584DE61A8F-1
-u-5jkOYSvp+MzOBABhAn5/Rg==-1-g
-u-Li8eZodrYbr/sv89kvKeIg==-z
-SelfTaskDataCollect-SlWx6E4qNAbxll6U6aEhqg==-1
-SelfTaskDataCollect-B625E96D1646F639602E38CD06505B78-1
-u-98gr6/L9cADTzSfHq0/UYg==-1-m-q
-u-JZk1qvyrdPOMR8d5k7+5aQ==-1-m-ci
-gamerun-BossFight-byDateHour-zone1-boss1-2021110622
-u-XfDKbemX21q8YADIt5FeCg==-1-m-s
-userbaseParams-4Lblb3ZUytyaUUklAYmYwQ==-1
-SelfTaskDataCollect-6gofp4BAXKjUefS4iwpOnw==-1
-u-FOqKL+d0IsOKrkVu0k8E4g==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_19016-lvl_1
-userbaseParams-6F5BBA7DBE9403882056A37514BA61F5-1
-gamerun-loginUser-byLevel-zone1-day_18932-lvl_1
-u-6o00NrA9PZZ+Dx/76feUyw==-1-g
-u-3J49pL2tTKGGM+LC1+OVHQ==-1-m-q
-userbaseParams-1A6BFE0BAE76F96EDE82D8357FCA253E-1
-gamerun-loginUser-byLevel-zone1-day_18920-lvl_10
-gamerun-BossFight-byDateHour-zone1-boss2-2021101617
-gamerun-loginUser-byUid-zone1-day_19011
-gamerun-BossFight-byDateHour-zone1-boss2-2021103113
-SelfTaskDataCollect-CB0A8BA1D438A1FFD7540A454585A82A-1
-gamerun-loginUser-byLevel-zone1-day_18981-lvl_9
-u-TneySddMA9RKLvPu6mbkDw==-1-m-s
-userbaseParams-7BCBAFEAA49A56CFD27DD4DB3D8262AD-1
-u-OJhK11YcJs00jwH2qKN0Aw==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_18931
-SelfTaskDataCollect-p0CSTp7ZgaDWBBAibI465w==-1
-userbaseParams-55B3D4987A5DC11166A6E4EE9EBDE0E6-1
-gamecfg-gemProperty
-gamerun-loginUser-byUid-zone1-day_19006
-SelfTaskDataCollect-tKv7Ua1sxEQMe38LnNAPeg==-1
-u-ydW1PrMki5ta+X8euz9JaQ==-z
-userbaseParams-B48A1458D1C4FFE77D280EF506B711A9-1
-u-z0UheVRSVvjmBnHGd2QtGg==-1-g
-userbaseParams-AC757F0921DB76A6646DD35A19A912F9-1
-SelfTaskDataCollect-97B4B096E9F035B59D34AB835796EA22-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021121106
-gamerun-loginUser-byLevel-zone1-day_18996-lvl_15
-u-mX4i+OpWJBt6oElbLfC2hw==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_18989-lvl_13
-u-VKafg044KDQhMlbyFhot4g==-1-m-s
-gamerun-loginUser-byUid-zone1-day_18948
-userbaseParams-3A8DEBF7281CD7976D1EB9FD6CD16E8E-1
-SelfTaskDataCollect-49AEAA58ED4953E928A1251359CE0513-1
-userbaseParams-5+RNi5sZahUsb3niCHTuBQ==-1
-u-/1EHzOG+FJAt+MAUUI/AJw==-z
-u-ZLYnnXx2uNLWtB3ZET3jNA==-z
-userbaseParams-FC9B2638D6DA4E679BCAF59823F27474-1
-u-tlD5f8zc2DQ5d6gJR0TtLg==-z
-u-mrGaPvKOlX4POcCSa7oIXQ==-z
-u-NYsPUhxNl1kKC7mQ2N/01g==-z
-u-QNywSBJdgteWz4rvrgvaUg==-1-g
-u-aOx+NkS1096cv2D879ZfZA==-1-g
-u-6OTeueUgK/0ElTl+XX5KHA==-1-m-s
-u-Tm9gvRxkVKg6hFRApPCD3A==-1-m-s
-userbaseParams-1F7A7B33404DCCEB40FDC99E332B07CA-1
-u-s69Gt57wzLgvcTpt96F5Gw==-1-m-q
-u-PeFkh+iWridOaF6CQ8iKAQ==-1-m-q
-userbaseParams-3bS2D5sM05mQUpfcuahRaA==-1
-u-CwGc7/3mBfRkGGbtIdHPSw==-1-m-q
-u-9FjrQJSMQsfgw8KN+f6qFg==-1-m-ci
-u-tsDHE71bzBWcA4pWd9/TIA==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18963-lvl_12
-gamerun-loginUser-byLevel-zone1-day_18966-lvl_1
-u-QNywSBJdgteWz4rvrgvaUg==-1-m-q
-userbaseParams-LTBHJgwOFktT/RURV7tc4A==-1
-u-OPvcDNNCuq+sAA8S8+lIug==-1-m-ci
-u-Id28jDn1EdTEnDGV7xBVXA==-1-m-s
-u-nDycZEQUMraLQX0CKeBX3Q==-1-g
-userbaseParams-CCCB42A5C32B11B9C92437DE0A25F89D-1
-gamerun-loginUser-byUid-zone1-day_18960
-u-kLxrc6BM2ezeXj4jI8WtzA==-1-m-q
-u-ECK2QdwkgBiQkNfqqgGD7w==-1-m-q
-gamerun-BossFight-byDateHour-zone1-boss2-2021122420
-u-u/heB8I+0wqCnVHJZA8VhQ==-1-g
-userbaseParams-066C2EBA1140A91FE0628B1800A90166-1
-gamerun-loginUser-byLevel-zone1-day_19009-lvl_1
-u-yrs9OzHFRlgXNM/reK7OmQ==-1-g
-u-KscJC3uMJpW61K5h4MYDcg==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18980-lvl_1
-u-+LfPNbUrUE4cgXGiFax4+A==-1-g
-userbaseParams-HuqH7U7vV6c6oEdeoaXAKg==-1
-gamerun-loginUser-byLevel-zone1-day_18950-lvl_1
-u-Se0AWitZ7Pv7otJSfN+PDQ==-1-g
-gamerun-loginUser-byLevel-zone1-day_19011-lvl_1
-u-+/j+VctEv8e/I2yFvihT9w==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_18988-lvl_15
-gamerun-loginUser-byUid-zone1-day_19019
-u-xFYHEs1QDNT78zCk11zYdw==-1-s-cp
-userbaseParams-7D879E57B2D0E230CE433E59DA7EEEE6-1
-SelfTaskDataCollect-9A652AD3C9181A53737829BBFCD42907-1
-gamerun-rank-passgate-breaklog-zone1
-u-w24OYozyPAgbPXstS/99Wg==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_18946-lvl_1
-gamerun-loginUser-byLevel-zone1-day_18973-lvl_15
-gamerun-BossFight-byDateHour-zone1-boss1-2022012715
-SelfTaskDataCollect-8AF402C8C3AD8E02B3835C387AE6FDCE-1
-u-kMeqzZ7Oi/GoYVYW+brMQQ==-1-m-ci
-u-TAiKPeSlj1YARW215IlOmg==-1-g
-SelfTaskDataCollect-EA74E58DCEB076ACC2D824684499CDA2-1
-u-DSe7TPGBXFxj/QFYtf/75A==-1-m-s
-userbaseParams-B487C3833AF753734565BEF301CD85F2-1
-userbaseParams-6BA062FA981A92503835FC6E843FEABE-1
-u-0aiCK//5ZR3bJ3ZAJBiKgA==-1-m-s
-userbaseParams-9929592746FC26F80C8F9512BB803A25-1
-userbaseParams-6E0CA00E54D4605A680EC956859F2FF1-1
-u-Wl0q/Zf+wHnNkhbrxgk2Ag==-z
-u-XWcYhQdqttaG0wtyqsJEyw==-1-m-s
-u-0ZZu52FKfPLSxSFkfokmyA==-1-s-cp
-u-XKrUOsqY1VCZdItpBZ3+CQ==-1-m-ci
-gamerun-BossFight-byDateHour-zone1-boss1-2021110621
-gamerun-loginUser-byLevel-zone1-day_18993-lvl_15
-userbaseParams-58A18CA2B0E300C509BCE5B9625B8F3F-1
-userbaseParams-Im3MkfDu4X3pz6GsO7yyjQ==-1
-userbaseParams-a512PzWA0FWsGNNKnCmslA==-1
-SelfTaskDataCollect-98gr6/L9cADTzSfHq0/UYg==-1
-u-HM5YKR08jiZpJtzfkEP9tQ==-1-m-s
-u-741A02BD75DC1A51E515AA3C9697A0EA-1-m-q
-SelfTaskDataCollect-3AB19CEA0A639074EFBF81A67DFC957F-1
-u-l1/stGfX2QFeFoEdBFOLFA==-1-m-ci
-u-w24OYozyPAgbPXstS/99Wg==-z
-u-KF+sSUjbtwlcyOrp59yuWw==-1-m-s
-userbaseParams-B1cuw5vbtWgnoWe2vrcX7Q==-1
-u-ZLYnnXx2uNLWtB3ZET3jNA==-1-m-ci
-userbaseParams-E652F50586A6116F1F5701B5FB8BBA92-1
-u-0aiCK//5ZR3bJ3ZAJBiKgA==-z
-SelfTaskDataCollect-C44E6E30D8F3A0CFD56284026354B7C7-1
-u-9aWr5pidEog+2yGISeSOEg==-1-s-cp
-SelfTaskDataCollect-A309126494EA6B425719B3365F82804F-1
-SelfTaskDataCollect-B502CE97A61CEE5C904B83973C96919C-1
-u-Ou4x+BI6rh8PXl52PzFeNQ==-1-s-cp
-gamerun-loginUser-byUid-zone1-day_18943
-gamerun-BossFight-byDateHour-zone1-boss2-2021102020
-userbaseParams-E63B09B795275CF42F1D7D63691A014F-1
-u-a512PzWA0FWsGNNKnCmslA==-1-m-q
-SelfTaskDataCollect-039PvrQw7OogvZRmPovwzA==-1
-SelfTaskDataCollect-9BB044BF9B23D32420EAD55D5588CBD2-1
-userbaseParams-9BB044BF9B23D32420EAD55D5588CBD2-1
-SelfTaskDataCollect-30ED702A62ECFBC275B9EE57E1086E91-1
-u-O+ESGfWyAvYQoADybrGAug==-z
-u-W2sWgQ86gNSJJflVTStQ7w==-z
-userbaseParams-AC535E77F8D90E2BBAE17CC66F557432-1
-userbaseParams-AQFcl4m+sZMytOl72OjHJg==-1
-u-FOqKL+d0IsOKrkVu0k8E4g==-1-g
-gamerun-loginUser-byLevel-zone1-day_19010-lvl_1
-SelfTaskDataCollect-ZcdvOGmNMdblwhbbt95c0w==-1
-u-DnnJUgM+jppgUx6bNU5swQ==-z
-u-MaMq51xW/xDxrV0iee3Low==-1-m-q
-u-szzKjs5B+qM/aL9e1TlXxQ==-z
-u-9aWr5pidEog+2yGISeSOEg==-1-m-s
-u-PyOwVEdBVQ5cNFFI4nMl0w==-1-m-s
-u-Sx240hHi9qnPpyYyJkHDeQ==-1-m-q
-gamerun-BossFight-byDateHour-zone1-boss2-2022012511
-u-19NCegHaMGsfBGlDi/6wBA==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18955-lvl_17
-userbaseParams-D85B3BCA26DD83F62DD4B5EA4C115A34-1
-userbaseParams-B06DFC377E0E9ACF831EBB6FD25261CD-1
-u-Se0AWitZ7Pv7otJSfN+PDQ==-1-m-q
-u-k4P0UNFEkjWkYYgVgucMMg==-1-m-q
-gamerun-loginUser-byUid-zone1-day_18964
-gamerun-loginUser-byLevel-zone1-day_18968-lvl_4
-u-7idR+xSanhICp1v+VJlnsQ==-1-m-q
-u-+t+YqyHGZ7NL+BIRGpKDBQ==-z
-u-Sx240hHi9qnPpyYyJkHDeQ==-1-m-s
-userbaseParams-16DF07618A17B6D4FAEBB2CB9CCF4F45-1
-SelfTaskDataCollect-3A8DEBF7281CD7976D1EB9FD6CD16E8E-1
-userbaseParams-PeFkh+iWridOaF6CQ8iKAQ==-1
-gamerun-loginUser-byLevel-zone1-day_18987-lvl_9
-u-Lw1MRiBzasWfOrd0FRTxAg==-z
-u-+IRSrF74gIyGWcs+xZ9h4A==-1-m-s
-u-MXZo0VBl2y3AEK2GxUl12Q==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_19015
-gamerun-BossFight-byDateHour-zone1-boss2-2022021315
-u-XfDKbemX21q8YADIt5FeCg==-1-m-q
-u-gnVmrGt/N9RF2YN9u15D4g==-1-g
-SelfTaskDataCollect-414E19BC4B4C7C7013BF9A573B91A701-1
-gamerun-loginUser-byUid-zone1-day_18936
-gamerun-loginUser-byLevel-zone1-day_18935-lvl_1
-SelfTaskDataCollect-725B9EC578F2E23503FBE67F43BEED8E-1
-userbaseParams-FA3ACC5073F002C36D4A36B773B47E52-1
-u-LOgiyvl5x8kljcTXwMuGGA==-1-m-ci
-userbaseParams-5EB2CC61D7793740CFD68AE81AC0B499-1
-userbaseParams-3D119C22C0DD36A0BA269AA41AE243DB-1
-userbaseParams-mX4i+OpWJBt6oElbLfC2hw==-1
-gamerun-loginUser-byLevel-zone1-day_19025-lvl_1
-gamerun-loginUser-byLevel-zone1-day_18997-lvl_1
-u-0ZZu52FKfPLSxSFkfokmyA==-1-g
-SelfTaskDataCollect-w8qBeTaWzznrjSjXS7Rdwg==-1
-u-HOvLHcCBSeva0wwWMSfrkg==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_19024
-u-ez5BDluBMHfuQgfEPfDx2Q==-z
-gamecfg-item_stones_type
-SelfTaskDataCollect-79B317B3A4DE57768B351C42832E57F1-1
-u-moEJufjEW1j6WRFlZBE7XA==-1-s-cp
-u-8U9ObTnCGkVD5TCSx69syQ==-z
-u-+/TRL/jresq5sVDmSuGlXA==-1-g
-u-EC85374FB86FEADA0D09533B7587036B-z
-u-997K35ioRJvNEzQlFt/C9Q==-z
-userbaseParams-9F3587682AA097FB0E1EB18A0C9D9E53-1
-u-Hwmz+f+0nPPXy4rrpjRtjw==-1-g
-u-98gr6/L9cADTzSfHq0/UYg==-1-s-cp
-u-Lp09gWphD9ocQOJrN67w6A==-1-m-q
-log-Err
-u-b8A4Sg4Sdj8zC25J8Ej7zg==-1-g
-u-8Kkx99rfFjy97uwica+TQA==-1-m-s
-u-AQFcl4m+sZMytOl72OjHJg==-z
-u-121C35E4E79ECD4400721829378565CA-1-m-q
-u-jKYNme7bRzZbBvOP9kGx8A==-z
-gamerun-loginUser-byUid-zone1-day_18937
-userbaseParams-4C2C31E420007DBBE68585ACC69FD1D4-1
-u-KF+sSUjbtwlcyOrp59yuWw==-z
-u-+IRSrF74gIyGWcs+xZ9h4A==-1-g
-u-NRwhfvDYUzmRw+FU2/+jwA==-1-m-s
-gamerun-BossFight-byDateHour-zone1-boss2-2021110105
-u-aPlyx+OvTXQkpn0o/smMhA==-1-g
-u-2eBIdAMzt1XzOrE4vO9Hng==-1-s-cp
-gamerun-rank-passgate-count-zone1
-u-Id28jDn1EdTEnDGV7xBVXA==-1-g
-SelfTaskDataCollect-A3B24892491378D6598803F13A10448B-1
-u-HEFO1ANMmJ8vDV7mNr74+g==-z
-u-a512PzWA0FWsGNNKnCmslA==-z
-u-G+MdR2//C8Jq8KbHXyzYxg==-1-g
-gamerun-loginUser-byLevel-zone1-day_19020-lvl_15
-u-oH4H5RHRaBhAL401PdTy+A==-z
-gamerun-BossFight-byDateHour-zone1-boss2-2021110811
-u-PiygwRTmPRef2TCzz5U74Q==-1-g
-gamerun-loginUser-byLevel-zone1-day_18936-lvl_1
-SelfTaskDataCollect-xNFJ1mxAjZgxldJHkZiMJA==-1
-gamerun-loginUser-byLevel-zone1-day_18955-lvl_5
-SelfTaskDataCollect-5yw8awbTYsfeS98682N6Hg==-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021102907
-userbaseParams-121C35E4E79ECD4400721829378565CA-1
-userbaseParams-6A31DD7139601AABEFC9E52DAB3F8B67-1
-u-9+Ccx7Mg84b5UPGbbNEajQ==-1-g
-gamerun-BossFight-byDateHour-zone1-boss2-2021110323
-u-onCsrwGW4bxNOZuB2aBo8A==-1-m-s
-u-X0ASXqfhgf2wklV5ydZaVg==-1-m-ci
-u-xXnz2KJLqEDaMQvWheDD7g==-1-m-ci
-u-MaMq51xW/xDxrV0iee3Low==-1-m-ci
-u-kfAk3CTelaPhC50ktRX5Cw==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_19018-lvl_10
-u-09kl29J0gx6x1yAgIVLOdg==-1-m-ci
-u-oAfSaJ2CId42Y/hgbjZ4xA==-1-m-ci
-userbaseParams-DQTnmIwHgPcP+v5YiNUJZA==-1
-u-FXfH60R7e6bHs98blu8yWw==-z
-u-09kl29J0gx6x1yAgIVLOdg==-1-g
-userbaseParams-6F691F066599F709F085AA3EB3F2858B-1
-gamerun-loginUser-byLevel-zone1-day_18974-lvl_1
-userbaseParams-ABACE9D48399D5C5041529489BDA3C50-1
-u-wnVYczNauXLve8WiGU/M3w==-1-m-q
-SelfTaskDataCollect-Iu/VTwa/fGfb7VzhHyjCZg==-1
-u-MXZo0VBl2y3AEK2GxUl12Q==-z
-u-lCr+biIlvaZJB/Yx8MTUCw==-1-m-q
-userbaseParams-l2UAFiftXTkFyOzuFf/k7A==-1
-userbaseParams-ydW1PrMki5ta+X8euz9JaQ==-1
-u-En7YKw/9IrLD4MZtPo6tUg==-1-g
-SelfTaskDataCollect-DFF2F1AA8622ACC49B2877C250CEB6FD-1
-gamerun-loginUser-byLevel-zone1-day_18997-lvl_17
-u-YD5/dKVM2rmVeqA4frMwXQ==-1-s-cp
-u-6gofp4BAXKjUefS4iwpOnw==-1-m-ci
-u-1XOdqrLN9KEV1e3L6emTOw==-1-m-q
-u-nuAuYk+BmREIdk0585ULOg==-1-s-cp
-u-nyA8gPINDhmuo9O6gIwFPQ==-1-m-q
-u-i116Xcru76wNAZJP9evDUQ==-z
-u-9FjrQJSMQsfgw8KN+f6qFg==-1-m-s
-u-EaZLs6BWLXoMQxd2Xm7bTA==-1-m-s
-u-JDwD7HxT+o/oFHUloCW9QA==-1-g
-userbaseParams-F6F99DFDAE85450F7817CFDC3A7F138A-1
-u-jdCo1id1fr+e4wZ3Llol4w==-1-m-s
-u-37oD8uTeTk6S5+vwGe+Pog==-1-m-s
-u-3J49pL2tTKGGM+LC1+OVHQ==-1-g
-u-xFYHEs1QDNT78zCk11zYdw==-1-m-s
-u-FpERDEhs1ch93RvTfaCDtA==-1-g
-SelfTaskDataCollect-B05267391F678BDB025B1987B432BBDA-1
-u-oMnUcDcbhdw94omoMbLjCg==-1-s-cp
-gamerun-loginUser-byLevel-zone1-day_19005-lvl_1
-userbaseParams-9795CBE73C4E6F3AB43F816E786E853F-1
-gamerun-loginUser-byUid-zone1-day_19005
-SelfTaskDataCollect-740Nw+Q/tpWv68kv4NtQ/A==-1
-SelfTaskDataCollect-B5AA6CBACE66E9B9EB03932440D81428-1
-u-nyA8gPINDhmuo9O6gIwFPQ==-1-g
-u-Iu/VTwa/fGfb7VzhHyjCZg==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18999-lvl_1
-gamerun-loginUser-byLevel-zone1-day_18938-lvl_8
-userbaseParams-JUmTimmn7PYEAtfFtBJxvQ==-1
-u-9FjrQJSMQsfgw8KN+f6qFg==-1-g
-u-xFYHEs1QDNT78zCk11zYdw==-1-m-q
-SelfTaskDataCollect-clV9hTIWKGCld8c0hBhCKw==-1
-u-Sx240hHi9qnPpyYyJkHDeQ==-1-m-ci
-u-wNaTLQe8pfJ+reBBi1Tz5A==-1-m-q
-SelfTaskDataCollect-Q12nzHLzNXbY9HG10p09hg==-1
-SelfTaskDataCollect-E9C6846D34B30A2CC698279902E377E5-1
-u-09kl29J0gx6x1yAgIVLOdg==-1-m-q
-userbaseParams-E80D63FC7CE245E21B2A11A8247FDF72-1
-u-ij9pY+Clt5vlsupQ4CVEnA==-1-g
-SelfTaskDataCollect-9FjrQJSMQsfgw8KN+f6qFg==-1
-u-HEFO1ANMmJ8vDV7mNr74+g==-1-g
-userbaseParams-4FB05441621148CB0D85607DC64B8EA3-1
-u-HodjNBz2XZNUHGQXleBxVQ==-z
-u-6OTeueUgK/0ElTl+XX5KHA==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_19021-lvl_1
-u-Oe5DQ7vJgxJD9JySk8wlgg==-1-m-ci
-u-9OZEclIfg+PGyg1x3UVO/Q==-1-m-ci
-userbaseParams-62441A3CABC3650CB43D5E60FE8B657E-1
-u-t2/wl7k8k3m8show6brrgA==-1-g
-u-clV9hTIWKGCld8c0hBhCKw==-1-m-ci
-u-MN//ZIiAW628KaKWTFxuQA==-1-m-s
-SelfTaskDataCollect-X0ASXqfhgf2wklV5ydZaVg==-1
-u-0aiCK//5ZR3bJ3ZAJBiKgA==-1-s-cp
-u-LTBHJgwOFktT/RURV7tc4A==-1-g
-u-wmJfxTuJ85Wo7jULJhlplg==-z
-u-Lp09gWphD9ocQOJrN67w6A==-1-m-s
-u-1WPMPyjxNy02xw3+eZsWvg==-1-m-q
-gamerun-BossFight-byDateHour-zone1-boss1-2022020215
-u-4Lblb3ZUytyaUUklAYmYwQ==-z
-SelfTaskDataCollect-f3+0IGZAgflf04LQGRq9Lg==-1
-u-n5F6XP6zpFnO1za6tYpIog==-1-m-ci
-gamecfg-activity_onlinegift
-userbaseParams-BFBF6DE10C5C7AB1771A798BA72091FC-1
-userbaseParams-1834B8A4C2C80D5218AB4D843C4D9FAC-1
-u-ydW1PrMki5ta+X8euz9JaQ==-1-g
-u-Lw1MRiBzasWfOrd0FRTxAg==-1-m-ci
-u-98gr6/L9cADTzSfHq0/UYg==-1-m-s
-u-gg6On5qbR959wt6S+mk5hQ==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_18970-lvl_12
-u-72eHzmeU8TYOYXIk2dnFeg==-1-m-q
-u-9+Ccx7Mg84b5UPGbbNEajQ==-1-m-ci
-u-jZFh/wwTMUL7W9Rfhl5+zQ==-1-m-q
-u-t2/wl7k8k3m8show6brrgA==-1-m-ci
-u-3D119C22C0DD36A0BA269AA41AE243DB-1-m-s
-u-C7l1xRCW7E2dAOXc1YdumA==-1-m-ci
-SelfTaskDataCollect-7C3667A4425495FAC60186972C564C2E-1
-u-XKrUOsqY1VCZdItpBZ3+CQ==-1-g
-u-Qp1hm1HmAo54RNpZXYeoJg==-1-m-ci
-u-w8qBeTaWzznrjSjXS7Rdwg==-z
-userbaseParams-1WPMPyjxNy02xw3+eZsWvg==-1
-u-MXZo0VBl2y3AEK2GxUl12Q==-1-g
-gamerun-loginUser-byUid-zone1-day_19029
-gamerun-loginUser-byLevel-zone1-day_18994-lvl_15
-gamecfg-globalsettings
-u-qYinnr1KUJYbQAbMeeXh2g==-1-m-s
-SelfTaskDataCollect-gnVmrGt/N9RF2YN9u15D4g==-1
-userbaseParams-Ou4x+BI6rh8PXl52PzFeNQ==-1
-u-4DGLonP9NGMqnuneAzJkHQ==-1-m-q
-userbaseParams-3BFE309778D19CE2F3DC72E0C36DAFA8-1
-u-tKv7Ua1sxEQMe38LnNAPeg==-1-g
-u-aPlyx+OvTXQkpn0o/smMhA==-1-m-s
-userbaseParams-42019A3C83D3023C62A2EFC264CF847F-1
-u-szzKjs5B+qM/aL9e1TlXxQ==-1-m-ci
-u-JDwD7HxT+o/oFHUloCW9QA==-z
-gamerun-BossFight-byDateHour-zone1-boss2-2021120123
-u-ThP4sBclr3EuHHQEa+niSw==-1-g
-u-LTBHJgwOFktT/RURV7tc4A==-1-m-s
-u-ydW1PrMki5ta+X8euz9JaQ==-1-m-s
-u-D2F65E54B617A98304ECD1FC4D1B50BA-1-g
-u-A27E34AAC08DB08ECD0D6C8BF164B7DE-1-g
-gamecfg-shenmiao
-u-ipR9CPCS0Scshk1TmFO7iA==-1-m-q
-SelfTaskDataCollect-255365A016C3A372DF4CFEB093163672-1
-stat-reported-log-e_k_4
-gamerun-loginUser-byUid-zone1-day_19009
-SelfTaskDataCollect-4B78658CB1CCCBE83CFBBB5D17395F07-1
-u-+fWV7fh7vRsN2HobiLe2pw==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_18930
-u-cCUbi1u+cSkFtnoErxd7jA==-1-m-q
-u-8VX8DGOjHndQeEbIGw+mwQ==-z
-u-NYsPUhxNl1kKC7mQ2N/01g==-1-g
-u-DQTnmIwHgPcP+v5YiNUJZA==-z
-SelfTaskDataCollect-38EE3734F413870A58E4496E5BBF88E6-1
-u-s69Gt57wzLgvcTpt96F5Gw==-1-g
-userbaseParams-EC60E1BD7959F88BA57274A9DCDA20A6-1
-gamerun-loginUser-byLevel-zone1-day_18933-lvl_1
-gamerun-BossFight-byDateHour-zone1-boss2-2021112517
-userbaseParams-AAF9AF1B117592BB255667AAB659E11C-1
-u-q9gZqncQmt1BUZbXBUIcNg==-1-g
-u-om3ehqNja3wlvi857jL54g==-1-guild
-userbaseParams-B5AA6CBACE66E9B9EB03932440D81428-1
-u-5yw8awbTYsfeS98682N6Hg==-1-m-s
-userbaseParams-DD995AAA56B9BEBA0FC7D7E49B8D89F4-1
-u-awSmPZIUgdJOC3L5dYjfGg==-z
-u-EC85374FB86FEADA0D09533B7587036B-1-m-s
-u-ZLYnnXx2uNLWtB3ZET3jNA==-1-g
-u-x5buUBO41svoEvRjsXpT8Q==-1-g
-SelfTaskDataCollect-87C754754F0664807806F56B564DD941-1
-SelfTaskDataCollect-t2/wl7k8k3m8show6brrgA==-1
-gamerun-loginUser-byUid-zone1-day_18992
-u-Hwmz+f+0nPPXy4rrpjRtjw==-1-m-ci
-u-DE0E343D1275BAA06ABBA16F95D6F9CA-1-m-s
-u-wKlu4EtGDqbwGNoyut8dxw==-1-g
-u-mX4i+OpWJBt6oElbLfC2hw==-z
-gamerun-BossFight-byDateHour-zone1-boss2-2021103114
-u-Se0AWitZ7Pv7otJSfN+PDQ==-z
-u-u7oQGUevhjxjMXBIs5u+HA==-1-g
-u-fYqtP/ma4sTZ25BcdRQDyA==-1-m-ci
-u-5Uq4QnmdsojNuLfGxv1GzA==-1-m-s
-u-YD5/dKVM2rmVeqA4frMwXQ==-1-m-ci
-u-HuqH7U7vV6c6oEdeoaXAKg==-1-g
-gamerun-loginUser-byUid-zone1-day_18971
-u-NBzEWjT1CWPbp2qaQJ7Rgw==-1-m-q
-userbaseParams-23B2FD8D83DC007E68120D817097BBD0-1
-u-LkY7oRPUoO0FVfr7QHcpQw==-1-g
-userbaseParams-NBzEWjT1CWPbp2qaQJ7Rgw==-1
-u-5o/RlsWk7zJlEWeV8f1oug==-z
-SelfTaskDataCollect-n1Z68uCipSA2+XyaYGpXQg==-1
-u-Bfd5E/d16244Z+Bb7DeVNg==-1-m-q
-userbaseParams-fmnHE43N47Mdxz8ASTUcOQ==-1
-u-5yw8awbTYsfeS98682N6Hg==-1-m-q
-gamerun-loginUser-byUid-zone1-day_19034
-u-jgzcy5hBwKPaNZdFHN5IHg==-1-m-s
-SelfTaskDataCollect-7C243AB0E1AD6B0D7C5E2E635F83C79F-1
-gamecfg-score
-userbaseParams-97B4B096E9F035B59D34AB835796EA22-1
-SelfTaskDataCollect-MkrHhUYYtXi9WCYCtX4nVQ==-1
-u-KV/g+Q7ZscI8NJdkT2eF1w==-1-m-s
-u-Q12nzHLzNXbY9HG10p09hg==-1-g
-u-HOvLHcCBSeva0wwWMSfrkg==-z
-userbaseParams-D32A168BA559998249383BD1CD759C95-1
-u-1M1LYo4/Dq//YbEk9HO+8Q==-1-m-q
-u-2c6COTf2GnOHJpqATZATQg==-z
-userbaseParams-9zkpFTOPud983SMIegzuIw==-1
-u-x5buUBO41svoEvRjsXpT8Q==-z
-u-+fWV7fh7vRsN2HobiLe2pw==-1-g
-SelfTaskDataCollect-DE9BBD57E926971ED98A717A330D1AB8-1
-gamerun-loginUser-byLevel-zone1-day_19032-lvl_1
-userbaseParams-0C396D40564EA4E3CA1CE64CE2A12998-1
-userbaseParams-MkkHV64zgPEUXF9bbP6AgQ==-1
-u-EcXFOI49fmaiqsb6a8K2Fw==-z
-u-cCUbi1u+cSkFtnoErxd7jA==-z
-userbaseParams-DBsBne1bCZ0g8AOrQccHHw==-1
-gamerun-loginUser-byLevel-zone1-day_18961-lvl_14
-u-apTtdHdDe0V867fQFn0IqA==-1-g
-u-19NCegHaMGsfBGlDi/6wBA==-z
-userbaseParams-0BDD534CCDF6920D16219009792D79EE-1
-u-VKafg044KDQhMlbyFhot4g==-1-g
-u-ipR9CPCS0Scshk1TmFO7iA==-1-m-s
-u-ZDoOc1Oou26Sa8TvwlIJkQ==-1-m-s
-u-1ZDy9hpj08ENji4AfOgKKA==-1-m-q
-u-mX4i+OpWJBt6oElbLfC2hw==-1-s-cp
-u-nuAuYk+BmREIdk0585ULOg==-1-m-s
-u-L/t1ZuZ98zo/ydZsdz9kkg==-1-g
-u-ZG6Nu2RcGAFuiwMCVASQIA==-z
-userbaseParams-aF3B9amDlVZ5k+lFRWV19Q==-1
-gamerun-loginUser-byLevel-zone1-day_18922-lvl_15
-u-onCsrwGW4bxNOZuB2aBo8A==-1-m-ci
-u-NRwhfvDYUzmRw+FU2/+jwA==-1-m-ci
-SelfTaskDataCollect-Hwmz+f+0nPPXy4rrpjRtjw==-1
-u-DTubNlAbSTRdrYC2xX3Zkw==-1-m-s
-u-urGme20Pzt1IzBIiQw5GTg==-1-s-cp
-userbaseParams-A89F9AB140D3C4472BB4EB372C983FC6-1
-gamerun-loginUser-byLevel-zone1-day_18971-lvl_4
-SelfTaskDataCollect-EcXFOI49fmaiqsb6a8K2Fw==-1
-gamecfg-hero
-u-aF3B9amDlVZ5k+lFRWV19Q==-1-s-cp
-u-MdYqyhz3dlmKBH+VYhimFA==-1-m-s
-u-udn0HKTEHlkvSVKnu/T2gg==-1-m-ci
-u-En7YKw/9IrLD4MZtPo6tUg==-z
-u-Se0AWitZ7Pv7otJSfN+PDQ==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_18940-lvl_4
-gamecfg-activity_day7
-userbaseParams-25626E3BCB585C6DDB7626C51A2839DA-1
-u-Wl0q/Zf+wHnNkhbrxgk2Ag==-1-g
-u-R53eh8kqRyYD88iwh7VY8A==-1-m-q
-userbaseParams-ADAF04D7952401372C20EE41F0C6CA89-1
-u-9sdvBxCeIN82jaunYoPYmA==-z
-u-NECpVJ2b8JTRHhEzTKUyPw==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_18997-lvl_15
-u-Iu/VTwa/fGfb7VzhHyjCZg==-1-guild
-u-i116Xcru76wNAZJP9evDUQ==-1-g
-auction-user-itemlist-zone1
-u-iVjiMlcM5amrDs9X38v2fQ==-z
-SelfTaskDataCollect-6FD52DA57E90CC7A4BD157AA16A62D89-1
-u-jEbfatDTuOhvTglJUaAkUQ==-1-g
-u-H9neYid2ZQrTYaSckYFkKg==-z
-u-997K35ioRJvNEzQlFt/C9Q==-1-m-q
-u-NRwhfvDYUzmRw+FU2/+jwA==-1-m-q
-u-8U9ObTnCGkVD5TCSx69syQ==-1-m-s
-u-DPwB0rOwK2g2n2CT+FtY1Q==-1-g
-u-iaU3wefEvfaE4LIvhh/E4A==-1-m-ci
-u-f3+0IGZAgflf04LQGRq9Lg==-1-m-q
-gamerun-loginUser-byUid-zone1-day_18942
-u-zK2G79FtrluCvJ170wnZZg==-1-s-cp
-u-MN//ZIiAW628KaKWTFxuQA==-1-m-q
-gamerun-BossFight-byDateHour-zone1-boss2-2021110316
-SelfTaskDataCollect-8E147B43DCF4B57A6CC7F94CE3F86554-1
-u-NRwhfvDYUzmRw+FU2/+jwA==-1-g
-gamerun-loginUser-byUid-zone1-day_19031
-userbaseParams-RD26BLc9W+89j8bfKrk5NA==-1
-u-RD26BLc9W+89j8bfKrk5NA==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18961-lvl_6
-gamerun-BossFight-byDateHour-zone1-boss2-2021120315
-u-AiVh0bUjOt8ScpUl5sfPgw==-1-m-q
-u-DE0E343D1275BAA06ABBA16F95D6F9CA-z
-u-O+ESGfWyAvYQoADybrGAug==-1-g
-u-aPlyx+OvTXQkpn0o/smMhA==-1-m-q
-u-wnVYczNauXLve8WiGU/M3w==-1-g
-userbaseParams-4584B4A85F3D8012F0132129C254991C-1
-userbaseParams-43D71DEA6287926C97E6ABFFAAE89171-1
-userbaseParams-jgzcy5hBwKPaNZdFHN5IHg==-1
-u-DSe7TPGBXFxj/QFYtf/75A==-1-m-ci
-u-Dek+/UfGgAVOJlc3FxiHgA==-1-g
-userbaseParams-4DFA1C69BEC5538DBCD91CDE7CD38099-1
-SelfTaskDataCollect-34CEC134436EE11EB1634ED929C29047-1
-u-om3ehqNja3wlvi857jL54g==-1-m-s
-gamerun-BossFight-byDateHour-zone1-boss1-2021102402
-userbaseParams-067507C048D3BFCC00560816722E676F-1
-userbaseParams-B05267391F678BDB025B1987B432BBDA-1
-SelfTaskDataCollect-0127F3148C823A6EA48A084264ED01F2-1
-u-aqvPZwjUX6HxLSwcle9Efw==-1-m-s
-u-urGme20Pzt1IzBIiQw5GTg==-1-m-s
-u-3bS2D5sM05mQUpfcuahRaA==-1-g
-u-0z/R9XK3KzBe7KJgomzDUQ==-1-m-ci
-userbaseParams-A97A02E0BD99D0D56748AF6FBB14D517-1
-userbaseParams-11793D0DC3137DB86EF7B080650FE684-1
-u-+/j+VctEv8e/I2yFvihT9w==-1-g
-gamerun-loginUser-byLevel-zone1-day_18981-lvl_1
-u-o773tgeZRFG0UA0KdQp3Xw==-1-g
-userbaseParams-C580F925748DD591B3B993CE07AEDE2B-1
-userbaseParams-6E760F257F345C80804753C56E80B1A4-1
-u-oMnUcDcbhdw94omoMbLjCg==-1-g
-userbaseParams-93A8B86116EDB39DDAE01200A8B7E1BE-1
-u-93GQrz7rBRkyz2Gb5MF8tA==-1-m-ci
-u-PyOwVEdBVQ5cNFFI4nMl0w==-z
-u-nkomZP8gE2lCZ55V39V8zA==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_18991
-u-5Bw7QLaq3oVwErJUQn7mTg==-1-g
-u-EjhxcQqX4Su4pZVyIsOS0Q==-1-m-s
-u-gg6On5qbR959wt6S+mk5hQ==-1-m-q
-userbaseParams-40EA9FE6F02BAA2FEFFBD85E1BAB3790-1
-u-SNBVsqqZ2ZZ5Y776fULJfA==-1-m-s
-gamecfg-hero_levelexp_costitem
-userbaseParams-D72DC4A46A7EF1B01C3825887542DAE2-1
-u-pVcXKlnI8nNY1tclkEOIyQ==-1-g
-userbaseParams-DnnJUgM+jppgUx6bNU5swQ==-1
-u-741A02BD75DC1A51E515AA3C9697A0EA-1-s-cp
-u-98gr6/L9cADTzSfHq0/UYg==-z
-SelfTaskDataCollect-E5916977C1C19887A1D06FF609042EAA-1
-userbaseParams-4192A5DD36841AFF136FEF8296A7B4D3-1
-userbaseParams-EE38F62772A9E7E470683D4EB6286424-1
-u-lp97dRXwhtCJ4wnW1X23Yg==-z
-u-tKv7Ua1sxEQMe38LnNAPeg==-1-m-s
-gamerun-loginUser-byUid-zone1-day_19025
-u-Ou4x+BI6rh8PXl52PzFeNQ==-1-m-ci
-u-sQTZeHRbnkRRSD/RCT8esg==-z
-userbaseParams-jXXDHASoFuAWGBxQ4fr2zA==-1
-u-EaZLs6BWLXoMQxd2Xm7bTA==-1-m-q
-u-3IYGcKIZE79UvIG7QoScDQ==-1-m-s
-gamecfg-tokenGift
-SelfTaskDataCollect-B1cuw5vbtWgnoWe2vrcX7Q==-1
-gamerun-loginUser-byLevel-zone1-day_19031-lvl_1
-userbaseParams-725B9EC578F2E23503FBE67F43BEED8E-1
-gamerun-loginUser-byLevel-zone1-day_18956-lvl_1
-u-fmnHE43N47Mdxz8ASTUcOQ==-1-m-ci
-userbaseParams-FCD0EDD4E8F6FAC7BF8AEE041FC0B2E9-1
-SelfTaskDataCollect-1B607FC3C642288BEFD33537956B3542-1
-userbaseParams-NRwhfvDYUzmRw+FU2/+jwA==-1
-gamerun-loginUser-byUid-zone1-day_19017
-u-lCr+biIlvaZJB/Yx8MTUCw==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_19010-lvl_6
-SelfTaskDataCollect-PeFkh+iWridOaF6CQ8iKAQ==-1
-userbaseParams-C52F2FF41F8B3C7C3ECFA02E20034495-1
-userbaseParams-4D18C818EC8F39CE3DE0CFD5850DDD85-1
-gamerun-loginUser-byLevel-zone1-day_19013-lvl_9
-userbaseParams-mNR4NMbwICJp8QiYDULGrA==-1
-gamerun-loginUser-byLevel-zone1-day_18981-lvl_4
-u-xTJRRRJTR7o5+CRf4q6uOw==-1-m-q
-u-ez5BDluBMHfuQgfEPfDx2Q==-1-m-ci
-u-wNaTLQe8pfJ+reBBi1Tz5A==-1-m-s
-u-Z7nnIWmsL3tO06qmFsMDPg==-1-g
-SelfTaskDataCollect-FD0B2312B17D7BBEDD840A9B8C8BF348-1
-u-tKv7Ua1sxEQMe38LnNAPeg==-z
-u-LTBHJgwOFktT/RURV7tc4A==-1-m-q
-u-4T+lYb6LeC8+P+AXJ4CBKQ==-z
-u-f3+0IGZAgflf04LQGRq9Lg==-z
-u-5Uq4QnmdsojNuLfGxv1GzA==-1-m-ci
-SelfTaskDataCollect-2605EE9B52314D123F3F3B815AFBF0E2-1
-u-P2i10bUPlA3O1akfQM4bCA==-1-m-ci
-u-MdYqyhz3dlmKBH+VYhimFA==-z
-SelfTaskDataCollect-54A97F129B21015032D98173A04F0735-1
-u-DnnJUgM+jppgUx6bNU5swQ==-1-m-q
-userbaseParams-D7B662EF2463384DDAE42F22EF4FCE37-1
-u-Iu/VTwa/fGfb7VzhHyjCZg==-1-m-ci
-u-kKjLbxh8JVOiZkjR10tPXQ==-1-m-ci
-u-jZFh/wwTMUL7W9Rfhl5+zQ==-1-m-s
-u-rgiU2/MGPvJFePJIIcdwRw==-1-g
-u-EA74E58DCEB076ACC2D824684499CDA2-1-m-ci
-u-HM5YKR08jiZpJtzfkEP9tQ==-z
-SelfTaskDataCollect-w24OYozyPAgbPXstS/99Wg==-1
-gamerun-loginUser-byUid-zone1-day_18955
-u-9+Ccx7Mg84b5UPGbbNEajQ==-1-m-q
-userbaseParams-4lSoetN0A9vA3Dh/tLGm1A==-1
-SelfTaskDataCollect-5+RNi5sZahUsb3niCHTuBQ==-1
-u-NWMCQ9aVi/6YVProRNcd/g==-1-g
-u-740Nw+Q/tpWv68kv4NtQ/A==-1-m-s
-userbaseParams-X0ASXqfhgf2wklV5ydZaVg==-1
-u-8Xo3yqqCHblWPNrhxPf6Cg==-1-s-cp
-SelfTaskDataCollect-AiVh0bUjOt8ScpUl5sfPgw==-1
-u-p0CSTp7ZgaDWBBAibI465w==-1-g
-SelfTaskDataCollect-7ADF26FB52DB4557C7BD3A4FB48B032B-1
-SelfTaskDataCollect-NYsPUhxNl1kKC7mQ2N/01g==-1
-u-yrs9OzHFRlgXNM/reK7OmQ==-1-m-s
-u-+t+YqyHGZ7NL+BIRGpKDBQ==-1-m-ci
-u-DBsBne1bCZ0g8AOrQccHHw==-1-g
-u-5Uq4QnmdsojNuLfGxv1GzA==-1-g
-u-tm5tMtswi8KLa9Jvp7K0AQ==-z
-gamecfg-heroextra_level
-userbaseParams-6F11FF2FFF00C06638BD91D755CFDE93-1
-u-wmJfxTuJ85Wo7jULJhlplg==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18933-lvl_7
-u-clV9hTIWKGCld8c0hBhCKw==-z
-userbaseParams-845BE9729EDE2AEFF7DCD744FFF47AC9-1
-gamerun-loginUser-byLevel-zone1-day_18923-lvl_15
-u-XfDKbemX21q8YADIt5FeCg==-1-m-ci
-u-09kl29J0gx6x1yAgIVLOdg==-z
-gamecfg-pvp_shop
-u-3IYGcKIZE79UvIG7QoScDQ==-1-m-q
-SelfTaskDataCollect-KF+sSUjbtwlcyOrp59yuWw==-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021113019
-userbaseParams-CB9EAE0780D9C42A30F7E39BBD463DA0-1
-u-EcXFOI49fmaiqsb6a8K2Fw==-1-m-q
-gamerun-loginUser-byUid-zone1-day_18999
-userbaseParams-Li8eZodrYbr/sv89kvKeIg==-1
-u-f3+0IGZAgflf04LQGRq9Lg==-1-g
-userbaseParams-D56B10DC952CD1A5C9BB90ECA9B67CE6-1
-u-4DGLonP9NGMqnuneAzJkHQ==-1-m-s
-userbaseParams-536F57015EBC59B7D621AFA4DC77B809-1
-u-W2sWgQ86gNSJJflVTStQ7w==-1-m-s
-u-jEbfatDTuOhvTglJUaAkUQ==-1-m-q
-userbaseParams-8FE05DE202F3427132C415661BA7ED5B-1
-u-SrqXwLeVCA0tH6knra4Q7A==-1-m-s
-u-7UI/Pe3jTdFTjyldkdaAlg==-1-m-ci
-u-mNR4NMbwICJp8QiYDULGrA==-1-s-cp
-userbaseParams-FD70ECBC78CBC2898B9AB44CE9F7A416-1
-u-741A02BD75DC1A51E515AA3C9697A0EA-1-g
-SelfTaskDataCollect-285FE141C42ED0ED608F3BE15D62EE92-1
-u-iaU3wefEvfaE4LIvhh/E4A==-1-s-cp
-u-rgiU2/MGPvJFePJIIcdwRw==-1-m-ci
-u-moEJufjEW1j6WRFlZBE7XA==-z
-u-+IRSrF74gIyGWcs+xZ9h4A==-z
-u-vctxguKByCLCga1Vbk8zAQ==-1-m-q
-u-Lw1MRiBzasWfOrd0FRTxAg==-1-m-s
-u-kLxrc6BM2ezeXj4jI8WtzA==-z
-u-9TwVdyGWiLvoFWxMxsZYdg==-1-m-ci
-u-l1/stGfX2QFeFoEdBFOLFA==-z
-userbaseParams-A7914526AEEABF2348B359DC1483AB2E-1
-SelfTaskDataCollect-699901C641528FEE270119110DA786A2-1
-SelfTaskDataCollect-944A2B6146BFBFE39571D124D4A8FBA2-1
-userbaseParams-5AB717C07304CB56AE881FE0F663B6EA-1
-SelfTaskDataCollect-kKjLbxh8JVOiZkjR10tPXQ==-1
-userbaseParams-422F96A1FA11E439B4515543C6DCABA4-1
-u-gg6On5qbR959wt6S+mk5hQ==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_18949-lvl_1
-SelfTaskDataCollect-5Amxn56RorDYx9Wx6lg43A==-1
-u-Wl0q/Zf+wHnNkhbrxgk2Ag==-1-m-s
-u-pVcXKlnI8nNY1tclkEOIyQ==-1-m-q
-u-5yw8awbTYsfeS98682N6Hg==-1-g
-SelfTaskDataCollect-zOb+bdJZtZcENYsd9xlI3w==-1
-userbaseParams-o2ejX8X7my6iEDHGB5t8TQ==-1
-u-1XOdqrLN9KEV1e3L6emTOw==-1-m-ci
-u-5o/RlsWk7zJlEWeV8f1oug==-1-m-q
-SelfTaskDataCollect-HEFO1ANMmJ8vDV7mNr74+g==-1
-u-D51D63CA040982E406BDE9898AD757AE-1-s-cp
-SelfTaskDataCollect-D9B0B8B111970BB40208204B79E7E883-1
-u-2eBIdAMzt1XzOrE4vO9Hng==-1-m-q
-u-ETJG8YC7nUNVxdKV1+FXeg==-1-s-cp
-cache-guild-list-zone11
-u-R2xSfQf5GzcQVgybWAL/sg==-z
-userbaseParams-+/TRL/jresq5sVDmSuGlXA==-1
-gamecfg-shenmiaoActiveIdTs
-gamerun-loginUser-byLevel-zone1-day_18934-lvl_4
-u-L/t1ZuZ98zo/ydZsdz9kkg==-1-m-ci
-SelfTaskDataCollect-8Xo3yqqCHblWPNrhxPf6Cg==-1
-gamerun-loginUser-byUid-zone1-day_18990
-gamerun-loginUser-byUid-zone1-day_18958
-gamerun-loginUser-byLevel-zone1-day_18960-lvl_1
-u-9leTN+xP8P4PlGYp2u2l1A==-1-g
-gamecfg-item_yanlingbook
-u-u7oQGUevhjxjMXBIs5u+HA==-z
-gamerun-loginUser-byLevel-zone1-day_18988-lvl_1
-stat-reported-log-e_k_7
-gamerun-BossFight-byDateHour-zone1-boss2-2021113009
-gamerun-loginUser-byUid-zone1-day_19028
-u-EA74E58DCEB076ACC2D824684499CDA2-1-m-s
-u-awSmPZIUgdJOC3L5dYjfGg==-1-g
-gamerun-BossFight-byDateHour-zone1-boss2-2021102719
-u-H5VGLhYtAC2VLTRDLcW80Q==-1-m-s
-u-iVjiMlcM5amrDs9X38v2fQ==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_19023-lvl_17
-u-lCr+biIlvaZJB/Yx8MTUCw==-1-m-s
-userbaseParams-39C4D7E559DB5CA4ABA4CE7AD5C77EB6-1
-SelfTaskDataCollect-3114D6589AD8BD431AA833CF4476E36E-1
-userbaseParams-LkY7oRPUoO0FVfr7QHcpQw==-1
-gamerun-loginUser-byLevel-zone1-day_18995-lvl_1
-SelfTaskDataCollect-ydW1PrMki5ta+X8euz9JaQ==-1
-gamerun-BossFight-byDateHour-zone1-boss2-2022020200
-gamerun-loginUser-byUid-zone1-day_18988
-SelfTaskDataCollect-cx8AHSDLHGe0Joij/o7lzA==-1
-u-LOgiyvl5x8kljcTXwMuGGA==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_19003-lvl_1
-userbaseParams-E06E391BCEB5680A3D386AC28F5B9394-1
-u-TnqLdLtwl5eBKpFWjBNigQ==-z
-u-ipR9CPCS0Scshk1TmFO7iA==-1-g
-SelfTaskDataCollect-+t+YqyHGZ7NL+BIRGpKDBQ==-1
-u-ZxLauD6uwqh09ollSB0qrQ==-1-g
-u-hGUAgUGxH9NfjjckcLINnw==-1-m-ci
-userbaseParams-BF9A0B1A57C30A25D88DD1F2AB233BE0-1
-u-9sdvBxCeIN82jaunYoPYmA==-1-m-q
-userbaseParams-C07FEBF723A14E78565FD44E8F997B61-1
-u-CwGc7/3mBfRkGGbtIdHPSw==-z
-u-a97EPP7m3cqfXv/RG3M36g==-1-m-ci
-u-6ZTCAIv3hUat6SZR8wl2jg==-z
-gamerun-loginUser-byUid-zone1-day_18984
-gamerun-loginUser-byLevel-zone1-day_18929-lvl_17
-u-aF3B9amDlVZ5k+lFRWV19Q==-1-m-q
-u-KTi+lLPxDhnSMkXub0sjMQ==-z
-userbaseParams-a97EPP7m3cqfXv/RG3M36g==-1
-userbaseParams-B02B2360A16B223C731223C8E7790440-1
-userbaseParams-ZxLauD6uwqh09ollSB0qrQ==-1
-u-eqlfzmHjE9aHn6Y84dhjYQ==-1-m-q
-u-5Amxn56RorDYx9Wx6lg43A==-1-m-s
-u-Q12nzHLzNXbY9HG10p09hg==-1-s-cp
-u-D51D63CA040982E406BDE9898AD757AE-1-m-s
-u-cCUbi1u+cSkFtnoErxd7jA==-1-m-ci
-unlockGate-1
-gamerun-loginUser-byLevel-zone1-day_18990-lvl_15
-u-nEMZ7Q1OYZ1DeWWvYfP61A==-1-m-q
-userbaseParams-44266338E61A2E134540F691F3A576A5-1
-u-lCr+biIlvaZJB/Yx8MTUCw==-1-g
-userbaseParams-E1CD4967178CA78B8DDD1B87B4C86183-1
-userbaseParams-61BA8CFE2187C1FA2D2D4C7F4E61BE6C-1
-SelfTaskDataCollect-F3DA4EA26A21557DAD1152E4A127231F-1
-gamerun-loginUser-byLevel-zone1-day_18988-lvl_8
-gamecfg-weapon_levelexp
-SelfTaskDataCollect-6A31DD7139601AABEFC9E52DAB3F8B67-1
-u-kKjLbxh8JVOiZkjR10tPXQ==-1-g
-gamerun-loginUser-byLevel-zone1-day_18943-lvl_3
-u-X0ASXqfhgf2wklV5ydZaVg==-1-g
-userbaseParams-B61870A46E86B81251082CA5ABCC0EC5-1
-u-mX4i+OpWJBt6oElbLfC2hw==-1-m-q
-u-ETJG8YC7nUNVxdKV1+FXeg==-z
-userbaseParams-C709FEE904A18BF6F057A70BE93B26BE-1
-SelfTaskDataCollect-Se0AWitZ7Pv7otJSfN+PDQ==-1
-SelfTaskDataCollect-053B3F10B46DC063C4690671BF4D6982-1
-userbaseParams-3587C08CE2D95E08C5259F476AA8E49C-1
-u-2r6TJEmiwdzbIEsT/pfvIg==-z
-u-NF30nkaJUkOTSi2tcZC6FQ==-1-g
-u-ayYI4ZlkQfVP7MkTJR7oSA==-1-m-s
-u-DBsBne1bCZ0g8AOrQccHHw==-z
-u-AACC562B64D7942DF231ACF42D78A74C-1-m-s
-u-SlWx6E4qNAbxll6U6aEhqg==-1-g
-gamerun-loginUser-byLevel-zone1-day_19019-lvl_7
-u-DPwB0rOwK2g2n2CT+FtY1Q==-1-m-q
-u-MN//ZIiAW628KaKWTFxuQA==-z
-SelfTaskDataCollect-/1EHzOG+FJAt+MAUUI/AJw==-1
-userbaseParams-oMnUcDcbhdw94omoMbLjCg==-1
-gamerun-loginUser-byLevel-zone1-day_19014-lvl_1
-u-tsOAmC68t2ekelEqW43izg==-1-m-s
-userbaseParams-61323C71660FA2A9C133A28762B05265-1
-userbaseParams-A9CEFD5FE95F2832B778EB801B74E478-1
-u-n5F6XP6zpFnO1za6tYpIog==-1-m-q
-u-tsOAmC68t2ekelEqW43izg==-1-m-q
-u-FXfH60R7e6bHs98blu8yWw==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18965-lvl_1
-u-6gofp4BAXKjUefS4iwpOnw==-z
-u-o773tgeZRFG0UA0KdQp3Xw==-1-s-cp
-u-q34K4oTknzb/Zq1hlLXxhQ==-1-m-ci
-u-LkY7oRPUoO0FVfr7QHcpQw==-1-m-ci
-SelfTaskDataCollect-5jkOYSvp+MzOBABhAn5/Rg==-1
-u-oH4H5RHRaBhAL401PdTy+A==-1-g
-userbaseParams-Dek+/UfGgAVOJlc3FxiHgA==-1
-u-fYqtP/ma4sTZ25BcdRQDyA==-1-m-s
-u-HM5YKR08jiZpJtzfkEP9tQ==-1-m-q
-u-o773tgeZRFG0UA0KdQp3Xw==-z
-u-3J49pL2tTKGGM+LC1+OVHQ==-z
-u-b8A4Sg4Sdj8zC25J8Ej7zg==-1-m-ci
-SelfTaskDataCollect-1C77E1AD9771787BBA3DC1A0E129B2B2-1
-u-fmnHE43N47Mdxz8ASTUcOQ==-z
-u-UQp+foexZOgCvOY5tIqfrw==-1-m-s
-gamecfg-task_daily
-gamecfg-yanlingLeve
-u-lp97dRXwhtCJ4wnW1X23Yg==-1-m-s
-u-6ZTCAIv3hUat6SZR8wl2jg==-1-m-ci
-u-iVjiMlcM5amrDs9X38v2fQ==-1-m-ci
-SelfTaskDataCollect-93GQrz7rBRkyz2Gb5MF8tA==-1
-u-wnVYczNauXLve8WiGU/M3w==-1-m-s
-u-0aiCK//5ZR3bJ3ZAJBiKgA==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_18973-lvl_1
-userbaseParams-301ctjvGmk3qO9uWzUZkKA==-1
-u-93GQrz7rBRkyz2Gb5MF8tA==-1-m-q
-u-NWMCQ9aVi/6YVProRNcd/g==-z
-u-jXXDHASoFuAWGBxQ4fr2zA==-1-g
-SelfTaskDataCollect-4lSoetN0A9vA3Dh/tLGm1A==-1
-userbaseParams-5176EC049E87D4FAB6F8D03286946814-1
-userbaseParams-6329A6299BED0E67F9E886371E081ED4-1
-u-FOqKL+d0IsOKrkVu0k8E4g==-1-m-ci
-u-4CfVxFhgerAefWz/wk5Ifg==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_19027-lvl_1
-SelfTaskDataCollect-02709071D3A1127BE3AF0551D8CE2594-1
-u-ribbAMapbKgu5FzWCkyO4Q==-1-g
-gamerun-rank-fpower-zone1
-u-W2XAs1PfTWnBxIw9a1a1VA==-1-g
-userbaseParams-F53397E6D138965C5AA49134746E9F89-1
-SelfTaskDataCollect-oMnUcDcbhdw94omoMbLjCg==-1
-u-9leTN+xP8P4PlGYp2u2l1A==-1-m-q
-gamerun-loginUser-byUid-zone1-day_18997
-SelfTaskDataCollect-7D879E57B2D0E230CE433E59DA7EEEE6-1
-gamerun-loginUser-byLevel-zone1-day_18941-lvl_1
-u-KscJC3uMJpW61K5h4MYDcg==-1-m-s
-u-DE0E343D1275BAA06ABBA16F95D6F9CA-1-m-q
-u-gnVmrGt/N9RF2YN9u15D4g==-1-m-s
-u-+IRSrF74gIyGWcs+xZ9h4A==-1-m-q
-SelfTaskDataCollect-E7B5892C7F00F41C4C2FCBBAAF3647C7-1
-u-w8qBeTaWzznrjSjXS7Rdwg==-1-m-ci
-SelfTaskDataCollect-wKlu4EtGDqbwGNoyut8dxw==-1
-u-EC85374FB86FEADA0D09533B7587036B-1-m-ci
-u-h+r5l3lbhp3FDx2xWyipCA==-z
-userbaseParams-3E11300370FA15B0A6E96894277D67E7-1
-userbaseParams-E56975CCBC0459C00BEC22E802D84E00-1
-u-lX1nmQyZ2ejlz2QSsLs8OA==-1-m-ci
-u-Ou4x+BI6rh8PXl52PzFeNQ==-1-m-q
-u-Qp1hm1HmAo54RNpZXYeoJg==-1-m-q
-SelfTaskDataCollect-9FDA6BF577FA90CBC3ADA050016B5095-1
-u-7UI/Pe3jTdFTjyldkdaAlg==-1-m-q
-SelfTaskDataCollect-ubY8fO6EiqJSXBrIHVhzRg==-1
-userbaseParams-HEFO1ANMmJ8vDV7mNr74+g==-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021112911
-userbaseParams-D503C27DBB1AE0595CEC50481A481909-1
-SelfTaskDataCollect-sQTZeHRbnkRRSD/RCT8esg==-1
-u-KV/g+Q7ZscI8NJdkT2eF1w==-1-m-ci
-u-pifU+4b5BnkXa116cN8hbw==-1-m-s
-userbaseParams-F95E2822040994CE887FDC05106F4CA7-1
-userbaseParams-KV/g+Q7ZscI8NJdkT2eF1w==-1
-u-kMeqzZ7Oi/GoYVYW+brMQQ==-1-g
-u-SUMBtfg3G8+uByIyipEcNQ==-z
-userbaseParams-AB53DA6E8AC2A6D510291A596812C3E2-1
-u-a97EPP7m3cqfXv/RG3M36g==-z
-userbaseParams-5D9AB19FB97A5C3F72D8C6DBD83DF990-1
-SelfTaskDataCollect-MdYqyhz3dlmKBH+VYhimFA==-1
-SelfTaskDataCollect-1A6BFE0BAE76F96EDE82D8357FCA253E-1
-gamerun-loginUser-byLevel-zone1-day_19019-lvl_10
-u-DPwB0rOwK2g2n2CT+FtY1Q==-z
-u-DPwB0rOwK2g2n2CT+FtY1Q==-1-s-cp
-u-nDycZEQUMraLQX0CKeBX3Q==-1-s-cp
-SelfTaskDataCollect-DDCBEC1A093AF5A5A03212928B848B2A-1
-SelfTaskDataCollect-Lp09gWphD9ocQOJrN67w6A==-1
-userbaseParams-54A97F129B21015032D98173A04F0735-1
-gamecfg-worldboss_rankreward
-u-9zkpFTOPud983SMIegzuIw==-1-s-cp
-userbaseParams-6FB628B37A968FCC83FD0F9A6FF47A9A-1
-SelfTaskDataCollect-3BFE309778D19CE2F3DC72E0C36DAFA8-1
-userbaseParams-587F2DD95142005A2C3AA725B1914691-1
-u-2FyS23Oop2Nw19tWSFn3ag==-1-m-s
-userbaseParams-ECF0D9259A493EB5572235855A05CA16-1
-gamerun-loginUser-byLevel-zone1-day_18964-lvl_1
-userbaseParams-9A652AD3C9181A53737829BBFCD42907-1
-u-Pca85n5ohw4RvSlULPbetg==-z
-u-3D119C22C0DD36A0BA269AA41AE243DB-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_18984-lvl_1
-userbaseParams-F37CCF88D2F03407641D28B462586ADD-1
-gamecfg-gate
-gamecfg-playerlevel
-gamerun-BossFight-byDateHour-zone1-boss2-2022011919
-userbaseParams-zOb+bdJZtZcENYsd9xlI3w==-1
-gamerun-loginUser-byUid-zone1-day_18941
-gamerun-loginUser-byUid-zone1-day_18973
-u-MXZo0VBl2y3AEK2GxUl12Q==-1-s-cp
-u-KTi+lLPxDhnSMkXub0sjMQ==-1-g
-userbaseParams-17B3F3863D628A84CBCA83A4161693A4-1
-u-9v8DlSYbYKQUqZ34M8AxLA==-1-g
-u-ZcdvOGmNMdblwhbbt95c0w==-z
-u-2c6COTf2GnOHJpqATZATQg==-1-m-ci
-userbaseParams-49AEAA58ED4953E928A1251359CE0513-1
-gamerun-loginUser-byLevel-zone1-day_18970-lvl_1
-SelfTaskDataCollect-DAA351C52B716CF190A162D71849CC79-1
-u-AACC562B64D7942DF231ACF42D78A74C-1-g
-gamerun-loginUser-byLevel-zone1-day_19003-lvl_17
-gamecfg-item_buffcard
-u-2eBIdAMzt1XzOrE4vO9Hng==-z
-u-s69Gt57wzLgvcTpt96F5Gw==-1-s-cp
-gamerun-loginUser-byUid-zone1-day_19010
-u-xXnz2KJLqEDaMQvWheDD7g==-1-m-s
-SelfTaskDataCollect-urGme20Pzt1IzBIiQw5GTg==-1
-SelfTaskDataCollect-1157EBC9B9FE127F2FB7C50515A3DB07-1
-SelfTaskDataCollect-8FFC66F465444AC1EA6C584BF2A4973A-1
-u-ij9pY+Clt5vlsupQ4CVEnA==-1-s-cp
-userbaseParams-fYqtP/ma4sTZ25BcdRQDyA==-1
-gamerun-loginUser-byUid-zone1-day_18947
-u-+IRSrF74gIyGWcs+xZ9h4A==-1-m-ci
-u-OPvcDNNCuq+sAA8S8+lIug==-z
-u-C7l1xRCW7E2dAOXc1YdumA==-1-m-q
-gamecfg-guildlibao
-u-Znh6Ev8q3sssVP/uuTo3Wg==-1-g
-gamerun-loginUser-byLevel-zone1-day_18942-lvl_1
-u-JUmTimmn7PYEAtfFtBJxvQ==-z
-u-8U9ObTnCGkVD5TCSx69syQ==-1-m-ci
-u-MWvDK5wVi5UnPqebcLmnig==-1-m-q
-u-yrs9OzHFRlgXNM/reK7OmQ==-1-m-q
-userbaseParams-87C754754F0664807806F56B564DD941-1
-u-1M1LYo4/Dq//YbEk9HO+8Q==-1-m-ci
-u-8Kkx99rfFjy97uwica+TQA==-1-m-ci
-u-pVcXKlnI8nNY1tclkEOIyQ==-1-m-ci
-userbaseParams-3953487A590DC66B7E02A874989D9444-1
-userbaseParams-0z/R9XK3KzBe7KJgomzDUQ==-1
-u-5o/RlsWk7zJlEWeV8f1oug==-1-g
-u-EjhxcQqX4Su4pZVyIsOS0Q==-z
-u-udn0HKTEHlkvSVKnu/T2gg==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_19025-lvl_3
-gamerun-BossFight-byDateHour-zone1-boss2-2021101521
-u-5Amxn56RorDYx9Wx6lg43A==-z
-gamerun-loginUser-byLevel-zone1-day_18938-lvl_1
-gamerun-BossFight-byDateHour-zone1-boss2-2021111609
-u-P2i10bUPlA3O1akfQM4bCA==-1-m-s
-u-w24OYozyPAgbPXstS/99Wg==-1-m-q
-userbaseParams-8760CB471CB7EF63641395FF627CA207-1
-u-MWvDK5wVi5UnPqebcLmnig==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_19015-lvl_1
-u-ym/YaQqAGhpYj2pInUfqng==-z
-SelfTaskDataCollect-QNywSBJdgteWz4rvrgvaUg==-1
-gamerun-loginUser-byLevel-zone1-day_18986-lvl_1
-SelfTaskDataCollect-DTubNlAbSTRdrYC2xX3Zkw==-1
-u-tot2ksrkH4EmVddpCx5I1w==-1-m-ci
-u-2FyS23Oop2Nw19tWSFn3ag==-z
-SelfTaskDataCollect-3857F75DB400A5309808B8183EA096E0-1
-userbaseParams-FD23BEC32570C88C2A3E6003F6CC9D1C-1
-gamerun-loginUser-byUid-zone1-day_18980
-userbaseParams-0F58AD090F80A5DF50E9627885311AFE-1
-gamecfg-guide_trigger
-u-jXXDHASoFuAWGBxQ4fr2zA==-z
-u-q34K4oTknzb/Zq1hlLXxhQ==-1-m-s
-gamecfg-zonelist
-userbaseParams-FAA58414F441F423DF09FE9011BA48DF-1
-u-nEMZ7Q1OYZ1DeWWvYfP61A==-1-m-ci
-SelfTaskDataCollect-PyOwVEdBVQ5cNFFI4nMl0w==-1
-u-tKv7Ua1sxEQMe38LnNAPeg==-1-m-q
-u-Bfd5E/d16244Z+Bb7DeVNg==-z
-u-4CfVxFhgerAefWz/wk5Ifg==-1-m-q
-SelfTaskDataCollect-A9CEFD5FE95F2832B778EB801B74E478-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021102112
-u-IV3o5fnv44dv7nx122rRVA==-1-m-q
-SelfTaskDataCollect-8Kkx99rfFjy97uwica+TQA==-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021121313
-u-JHm3OZgsUrVwouVQms+h2A==-1-m-ci
-SelfTaskDataCollect-B487C3833AF753734565BEF301CD85F2-1
-u-gfDchI64HK+rV4I3ziEvwA==-z
-gamerun-loginUser-byLevel-zone1-day_18989-lvl_4
-u-AQFcl4m+sZMytOl72OjHJg==-1-s-cp
-u-lTZ3gDxXUSwypr8gfFaPRA==-1-g
-u-AiVh0bUjOt8ScpUl5sfPgw==-1-m-s
-SelfTaskDataCollect-rgiU2/MGPvJFePJIIcdwRw==-1
-u-Tm9gvRxkVKg6hFRApPCD3A==-1-g
-userbaseParams-F3DA4EA26A21557DAD1152E4A127231F-1
-userbaseParams-FCAFF69C58E8520945A76E6CE75D453E-1
-u-SlWx6E4qNAbxll6U6aEhqg==-1-s-cp
-u-6ZTCAIv3hUat6SZR8wl2jg==-1-m-s
-SelfTaskDataCollect-9sdvBxCeIN82jaunYoPYmA==-1
-u-tot2ksrkH4EmVddpCx5I1w==-1-g
-gamecfg-attack_relation
-userbaseParams-9ADFA33D89C4417B1DD18332A19517A0-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021101618
-u-D51D63CA040982E406BDE9898AD757AE-1-g
-u-hGUAgUGxH9NfjjckcLINnw==-1-m-q
-u-ThP4sBclr3EuHHQEa+niSw==-1-m-s
-userbaseParams-DE086A8F010700DB725DF89894C01CA4-1
-SelfTaskDataCollect-A41440912073BE7FC466165AE4B3CFA3-1
-userbaseParams-6349BB70017D64AF18E926F065B9D9D1-1
-gamecfg-shenmiaoActiveTs
-u-KF+sSUjbtwlcyOrp59yuWw==-1-m-ci
-gamerun-BossFight-byDateHour-zone1-boss2-2021102401
-SelfTaskDataCollect-MIvMeiWCv2gDBs6RrLyI4w==-1
-SelfTaskDataCollect-616B642E8BC8A2DD148179F640C34A85-1
-u-OcN70ne7TNX3fHTDyei27g==-z
-u-Znh6Ev8q3sssVP/uuTo3Wg==-1-m-ci
-u-CwGc7/3mBfRkGGbtIdHPSw==-1-m-s
-u-STsdxXdwrqa4AEqEqAVjCg==-1-g
-SelfTaskDataCollect-A89F9AB140D3C4472BB4EB372C983FC6-1
-u-8Xo3yqqCHblWPNrhxPf6Cg==-1-g
-u-H5VGLhYtAC2VLTRDLcW80Q==-1-g
-u-xFYHEs1QDNT78zCk11zYdw==-z
-u-NBzEWjT1CWPbp2qaQJ7Rgw==-1-g
-gamerun-loginUser-byUid-zone1-day_19022
-u-K42bbRyEX24rJZD8Bq0yeA==-1-g
-u-039PvrQw7OogvZRmPovwzA==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_19014-lvl_7
-userbaseParams-19446A80FE1382DEDAC70B5EDEF4EA9F-1
-u-EcXFOI49fmaiqsb6a8K2Fw==-1-m-ci
-userbaseParams-KCcNvFOrAMok3qSvpE4g/Q==-1
-u-9+Ccx7Mg84b5UPGbbNEajQ==-1-m-s
-u-gnVmrGt/N9RF2YN9u15D4g==-1-m-ci
-userbaseParams-382563BFD1148467484C0BF8783885A1-1
-gamerun-loginUser-byLevel-zone1-day_18921-lvl_12
-userbaseParams-C44E6E30D8F3A0CFD56284026354B7C7-1
-u-8VX8DGOjHndQeEbIGw+mwQ==-1-m-s
-u-+4ul94P1VGb9IsX+y6Ebdg==-1-g
-gamerun-loginUser-byUid-zone1-day_18950
-gamerun-loginUser-byUid-zone1-day_19000
-userbaseParams-E3E67417B85B9A037BAFEE888C935DBD-1
-userbaseParams-vctxguKByCLCga1Vbk8zAQ==-1
-log-flush
-u-MaMq51xW/xDxrV0iee3Low==-z
-u-iaU3wefEvfaE4LIvhh/E4A==-1-g
-userbaseParams-03441DA57F432C42B9B791F4ACF51726-1
-SelfTaskDataCollect-7UI/Pe3jTdFTjyldkdaAlg==-1
-u-ay2UCE+9U/Zf5Id58kEwAQ==-1-m-s
-userbaseParams-KF+sSUjbtwlcyOrp59yuWw==-1
-u-72eHzmeU8TYOYXIk2dnFeg==-z
-u-0ZZu52FKfPLSxSFkfokmyA==-z
-u-RD26BLc9W+89j8bfKrk5NA==-1-m-ci
-userbaseParams-FDF7D870F0E930E0EAF5771AD18AA097-1
-u-jKYNme7bRzZbBvOP9kGx8A==-1-m-s
-u-w24OYozyPAgbPXstS/99Wg==-1-m-s
-gamerun-loginUser-byUid-zone1-day_19035
-u-d+pL5g3p1MQVLakGPONoWg==-z
-u-h9+Cxjz4d5q+kT3+d2h4fg==-z
-userbaseParams-0DE1511152B2141649ABA0DC385E8FC6-1
-SelfTaskDataCollect-0z/R9XK3KzBe7KJgomzDUQ==-1
-u-FXfH60R7e6bHs98blu8yWw==-1-g
-u-FXfH60R7e6bHs98blu8yWw==-1-m-s
-stat-reported-log-e_k_6
-u-HEFO1ANMmJ8vDV7mNr74+g==-1-s-cp
-u-osDSZi3fTO6qODkFL5XTMQ==-1-s-cp
-userbaseParams-0AC35C1A0C448D4EF9271476E2F7E7E4-1
-u-MkkHV64zgPEUXF9bbP6AgQ==-1-m-s
-u-urGme20Pzt1IzBIiQw5GTg==-1-g
-u-+4ul94P1VGb9IsX+y6Ebdg==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18996-lvl_1
-u-TTzLOc8lsoZKUorjQ448IQ==-1-m-s
-u-NYsPUhxNl1kKC7mQ2N/01g==-1-m-s
-SelfTaskDataCollect-5176EC049E87D4FAB6F8D03286946814-1
-u-VKafg044KDQhMlbyFhot4g==-z
-userbaseParams-5627095923E27A2D911D2139AB1E9191-1
-u-jnkyCOR+6tniYyYsjhQUMA==-1-m-s
-u-NECpVJ2b8JTRHhEzTKUyPw==-1-s-cp
-u-740Nw+Q/tpWv68kv4NtQ/A==-z
-u-B1cuw5vbtWgnoWe2vrcX7Q==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_18992-lvl_8
-u-+fWV7fh7vRsN2HobiLe2pw==-1-m-q
-u-NFn8ZNgpyBUvdSt+RvW1UQ==-1-m-q
-SelfTaskDataCollect-E3E67417B85B9A037BAFEE888C935DBD-1
-SelfTaskDataCollect-3587C08CE2D95E08C5259F476AA8E49C-1
-u-p0CSTp7ZgaDWBBAibI465w==-z
-gamecfg-activity_reggift
-u-nyA8gPINDhmuo9O6gIwFPQ==-z
-SelfTaskDataCollect-EjhxcQqX4Su4pZVyIsOS0Q==-1
-u-nkomZP8gE2lCZ55V39V8zA==-1-m-s
-u-0z/R9XK3KzBe7KJgomzDUQ==-1-m-q
-u-PprlXa/k/ypCsaRqxYjaSw==-1-m-q
-userbaseParams-A08D1B6C1B8E8F844F587603407BCD5C-1
-gamerun-loginUser-byLevel-zone1-day_18944-lvl_1
-u-MFCtadHxTkcytK840rJHSw==-1-m-s
-gamecfg-item_pills
-u-ECK2QdwkgBiQkNfqqgGD7w==-1-g
-u-xTJRRRJTR7o5+CRf4q6uOw==-z
-u-z0UheVRSVvjmBnHGd2QtGg==-1-m-q
-gamerun-BossFight-byDateHour-zone1-boss2-2022012812
-userbaseParams-7016DD8A6F3F12E8EC67454F08B6CC64-1
-SelfTaskDataCollect-B19E2C7193A72296FD963E94358EFFD5-1
-userbaseParams-AE9F390D2303C6514F4E264445555382-1
-gamerun-loginUser-byLevel-zone1-day_18993-lvl_1
-u-9OZEclIfg+PGyg1x3UVO/Q==-1-s-cp
-u-DE0E343D1275BAA06ABBA16F95D6F9CA-1-g
-SelfTaskDataCollect-95C1FB646B8518336AC1D6EF985A0156-1
-u-D2F65E54B617A98304ECD1FC4D1B50BA-z
-u-TAiKPeSlj1YARW215IlOmg==-z
-u-YD5/dKVM2rmVeqA4frMwXQ==-1-m-q
-userbaseParams-86BDF7973C8C726D211840F54C50E005-1
-gamecfg-task_node
-u-xXnz2KJLqEDaMQvWheDD7g==-1-g
-userbaseParams-Sx240hHi9qnPpyYyJkHDeQ==-1
-userbaseParams-8yhk5jbWid0isnRUWiOGyg==-1
-u-kKjLbxh8JVOiZkjR10tPXQ==-z
-u-039PvrQw7OogvZRmPovwzA==-1-g
-gamerun-loginUser-byLevel-zone1-day_18958-lvl_1
-u-5Bw7QLaq3oVwErJUQn7mTg==-z
-u-o/zAyO/cKDtA0899ZDPyqA==-1-g
-u-n5F6XP6zpFnO1za6tYpIog==-1-m-s
-u-lX1nmQyZ2ejlz2QSsLs8OA==-z
-u-KscJC3uMJpW61K5h4MYDcg==-1-s-cp
-gamerun-loginUser-byUid-zone1-day_18998
-SelfTaskDataCollect-jnkyCOR+6tniYyYsjhQUMA==-1
-userbaseParams-EC85374FB86FEADA0D09533B7587036B-1
-u-PprlXa/k/ypCsaRqxYjaSw==-1-m-s
-u-K42bbRyEX24rJZD8Bq0yeA==-1-m-ci
-u-Se0AWitZ7Pv7otJSfN+PDQ==-1-m-s
-gamecfg-shop_limit
-u-wmJfxTuJ85Wo7jULJhlplg==-1-g
-u-ayYI4ZlkQfVP7MkTJR7oSA==-z
-gamerun-loginUser-byLevel-zone1-day_18929-lvl_1
-u-Lp09gWphD9ocQOJrN67w6A==-z
-userbaseParams-9aWr5pidEog+2yGISeSOEg==-1
-SelfTaskDataCollect-+4ul94P1VGb9IsX+y6Ebdg==-1
-u-8yhk5jbWid0isnRUWiOGyg==-z
-u-YD5/dKVM2rmVeqA4frMwXQ==-1-g
-gamecfg-eventAction
-gamerun-loginUser-byLevel-zone1-day_19001-lvl_1
-userbaseParams-437D568AB3D1D350E8002F99223B1449-1
-gamerun-loginUser-byLevel-zone1-day_18947-lvl_16
-userbaseParams-619FE9934E2F89239641DD442C7F52FA-1
-u-W2XAs1PfTWnBxIw9a1a1VA==-1-m-s
-u-8yhk5jbWid0isnRUWiOGyg==-1-g
-userbaseParams-14E1E48F52D3C4CBDB8663216E8B01C0-1
-userbaseParams-6FD52DA57E90CC7A4BD157AA16A62D89-1
-userbaseParams-8AF402C8C3AD8E02B3835C387AE6FDCE-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021102900
-u-3IYGcKIZE79UvIG7QoScDQ==-z
-u-NYsPUhxNl1kKC7mQ2N/01g==-1-s-cp
-SelfTaskDataCollect-ZLYnnXx2uNLWtB3ZET3jNA==-1
-u-hh2F7ruHiv6F/44mDNolqg==-1-g
-gamerun-loginUser-byLevel-zone1-day_18937-lvl_1
-u-n1Z68uCipSA2+XyaYGpXQg==-1-m-ci
-u-ZDoOc1Oou26Sa8TvwlIJkQ==-z
-u-aF3B9amDlVZ5k+lFRWV19Q==-1-m-s
-u-nyA8gPINDhmuo9O6gIwFPQ==-1-m-ci
-u-SrqXwLeVCA0tH6knra4Q7A==-z
-u-R53eh8kqRyYD88iwh7VY8A==-1-m-s
-gamecfg-segment_byPinzhi
-userbaseParams-534F0B7F71A965FA24A04A1581D868CC-1
-userbaseParams-z0UheVRSVvjmBnHGd2QtGg==-1
-gamecfg-gem_researchlevel
-u-EaZLs6BWLXoMQxd2Xm7bTA==-z
-SelfTaskDataCollect-BFAA357AD0F74C02EC8CE771DC2803C8-1
-gamerun-BossFight-byDateHour-zone1-boss2-2022011915
-u-R53eh8kqRyYD88iwh7VY8A==-1-g
-u-h9+Cxjz4d5q+kT3+d2h4fg==-1-g
-SelfTaskDataCollect-6o00NrA9PZZ+Dx/76feUyw==-1
-u-pifU+4b5BnkXa116cN8hbw==-1-s-cp
-userbaseParams-039PvrQw7OogvZRmPovwzA==-1
-gamerun-loginUser-byLevel-zone1-day_19020-lvl_1
-gamerun-loginUser-byLevel-zone1-day_18990-lvl_1
-u-p0CSTp7ZgaDWBBAibI465w==-1-s-cp
-u-gJaoc4v835VtfaAQy5186A==-1-m-ci
-userbaseParams-276AAB094AFB0915654ECB6E514D722A-1
-u-tLS68sxOe80/+UA2THhbAw==-z
-u-a97EPP7m3cqfXv/RG3M36g==-1-g
-userbaseParams-5A4036214AFCA7A11120C5AFCB151913-1
-u-X0ASXqfhgf2wklV5ydZaVg==-z
-userbaseParams-251C1DD5692156B289271670ADC689F0-1
-userbaseParams-0CB82585D9BF255998EAA45DB01C3915-1
-u-mNR4NMbwICJp8QiYDULGrA==-1-g
-u-ez5BDluBMHfuQgfEPfDx2Q==-1-m-q
-gamerun-loginUser-byUid-zone1-day_18994
-userbaseParams-E4405942D4544AE000148CC042F7FC48-1
-u-C7l1xRCW7E2dAOXc1YdumA==-z
-u-kMeqzZ7Oi/GoYVYW+brMQQ==-z
-gamerun-loginUser-byUid-zone1-day_19001
-u-Dek+/UfGgAVOJlc3FxiHgA==-1-m-ci
-userbaseParams-5yw8awbTYsfeS98682N6Hg==-1
-SelfTaskDataCollect-CDA915E5D8DC4306E4CE28DB9BA67FB4-1
-gamecfg-gate_combat
-u-jgzcy5hBwKPaNZdFHN5IHg==-1-m-ci
-u-pifU+4b5BnkXa116cN8hbw==-1-g
-SelfTaskDataCollect-16AB1D797ECF9D6B9F9ECDC26CD1B80F-1
-u-udn0HKTEHlkvSVKnu/T2gg==-z
-userbaseParams-DB9FD65863ACB86A803622CE6F93B647-1
-userbaseParams-B90B6DF0487E2E2C37FB7DAD5114F234-1
-u-LOgiyvl5x8kljcTXwMuGGA==-1-g
-u-nudUAOGaNvJEvkK96UX4XQ==-z
-u-DH3ziEKN4S09aXOMJxoBFw==-1-m-q
-userbaseParams-5jkOYSvp+MzOBABhAn5/Rg==-1
-u-nudUAOGaNvJEvkK96UX4XQ==-1-m-s
-u-V9EhOYpB/ZHlWrV52TGojw==-z
-u-121C35E4E79ECD4400721829378565CA-1-m-ci
-u-2eBIdAMzt1XzOrE4vO9Hng==-1-m-ci
-u-A27E34AAC08DB08ECD0D6C8BF164B7DE-1-m-q
-gamecfg-clientVersionHistory
-u-wNaTLQe8pfJ+reBBi1Tz5A==-1-g
-u-t2/wl7k8k3m8show6brrgA==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18923-lvl_4
-u-lp97dRXwhtCJ4wnW1X23Yg==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_19018-lvl_7
-SelfTaskDataCollect-HOvLHcCBSeva0wwWMSfrkg==-1
-gamerun-BossFight-byDateHour-zone1-boss2-2022021314
-u-ThP4sBclr3EuHHQEa+niSw==-1-s-cp
-u-2c6COTf2GnOHJpqATZATQg==-1-m-s
-SelfTaskDataCollect-758A56324B99CB0F0913A3A56B0834E0-1
-SelfTaskDataCollect-02367E94327576F06DC9D180EF85C635-1
-userbaseParams-B60C89D6E9FDC1FA02BD08B21C38D048-1
-userbaseParams-wmJfxTuJ85Wo7jULJhlplg==-1
-u-+/TRL/jresq5sVDmSuGlXA==-z
-u-Iu/VTwa/fGfb7VzhHyjCZg==-1-g
-gamerun-BossFight-byDateHour-zone1-boss2-2022020214
-u-7idR+xSanhICp1v+VJlnsQ==-1-m-ci
-userbaseParams-7C243AB0E1AD6B0D7C5E2E635F83C79F-1
-gamerun-BossFight-byDateHour-zone1-boss1-2021102922
-userbaseParams-onCsrwGW4bxNOZuB2aBo8A==-1
-u-1ZDy9hpj08ENji4AfOgKKA==-1-g
-u-jdCo1id1fr+e4wZ3Llol4w==-1-m-ci
-u-ydW1PrMki5ta+X8euz9JaQ==-1-m-ci
-gamecfg-ver
-userbaseParams-34CEC134436EE11EB1634ED929C29047-1
-u-MkkHV64zgPEUXF9bbP6AgQ==-1-m-ci
-u-z0UheVRSVvjmBnHGd2QtGg==-1-m-ci
-userbaseParams-AF344839BBF0AE35B171DFB85EEC0B0B-1
-userbaseParams-clV9hTIWKGCld8c0hBhCKw==-1
-SelfTaskDataCollect-Qp1hm1HmAo54RNpZXYeoJg==-1
-gamerun-loginUser-byUid-zone1-day_18933
-u-0ZZu52FKfPLSxSFkfokmyA==-1-m-ci
-u-zK2G79FtrluCvJ170wnZZg==-1-m-q
-SelfTaskDataCollect-C72475672B2FEA3307D63CF8646D87EA-1
-SelfTaskDataCollect-DE0E343D1275BAA06ABBA16F95D6F9CA-1
-gamecfg-itemlevel
-u-ECK2QdwkgBiQkNfqqgGD7w==-z
-u-Pca85n5ohw4RvSlULPbetg==-1-g
-u-Sx240hHi9qnPpyYyJkHDeQ==-1-g
-gamerun-BossFight-byDateHour-zone1-boss2-2021101910
-SelfTaskDataCollect-3IYGcKIZE79UvIG7QoScDQ==-1
-u-Bfd5E/d16244Z+Bb7DeVNg==-1-g
-gamerun-loginUser-byLevel-zone1-day_19017-lvl_1
-u-aPlyx+OvTXQkpn0o/smMhA==-z
-u-P2i10bUPlA3O1akfQM4bCA==-1-g
-u-QNywSBJdgteWz4rvrgvaUg==-1-m-s
-u-DSe7TPGBXFxj/QFYtf/75A==-z
-SelfTaskDataCollect-4584B4A85F3D8012F0132129C254991C-1
-userbaseParams-190DE02CD6647857D0DC64F9879C9309-1
-SelfTaskDataCollect-FXfH60R7e6bHs98blu8yWw==-1
-u-Q12nzHLzNXbY9HG10p09hg==-1-m-ci
-u-kLxrc6BM2ezeXj4jI8WtzA==-1-m-ci
-userbaseParams-D9B0B8B111970BB40208204B79E7E883-1
-u-L/t1ZuZ98zo/ydZsdz9kkg==-1-m-q
-u-aOx+NkS1096cv2D879ZfZA==-z
-u-4CfVxFhgerAefWz/wk5Ifg==-1-m-s
-u-apTtdHdDe0V867fQFn0IqA==-z
-u-A27E34AAC08DB08ECD0D6C8BF164B7DE-z
-gamerun-loginUser-byLevel-zone1-day_18985-lvl_9
-gamerun-loginUser-byLevel-zone1-day_18992-lvl_15
-SelfTaskDataCollect-xFYHEs1QDNT78zCk11zYdw==-1
-u-gJaoc4v835VtfaAQy5186A==-z
-gamerun-loginUser-byUid-zone1-day_19007
-u-5jkOYSvp+MzOBABhAn5/Rg==-1-m-ci
-u-D2F65E54B617A98304ECD1FC4D1B50BA-1-s-cp
-u-a512PzWA0FWsGNNKnCmslA==-1-g
-u-pVcXKlnI8nNY1tclkEOIyQ==-1-m-s
-userbaseParams-27AE9DBA3E6A7E20153AA967FF6DF3F2-1
-SelfTaskDataCollect-4DFA1C69BEC5538DBCD91CDE7CD38099-1
-u-jZFh/wwTMUL7W9Rfhl5+zQ==-1-g
-u-LOgiyvl5x8kljcTXwMuGGA==-1-m-q
-u-FOqKL+d0IsOKrkVu0k8E4g==-1-s-cp
-userbaseParams-F62784CB9483E51270E6E884CF213981-1
-u-Bfd5E/d16244Z+Bb7DeVNg==-1-s-cp
-u-1M1LYo4/Dq//YbEk9HO+8Q==-z
-u-121C35E4E79ECD4400721829378565CA-1-m-s
-u-PyOwVEdBVQ5cNFFI4nMl0w==-1-g
-userbaseParams-33C01FA651C360C45251398FC5147381-1
-userbaseParams-16AB1D797ECF9D6B9F9ECDC26CD1B80F-1
-u-MBhAEu1HhdwqVSzh93Q29g==-1-m-q
-u-wvIzx+ND9/7G32s3sWPchA==-z
-SelfTaskDataCollect-C9CC01C1D49EAEBD4C0967A599A90171-1
-u-EaZLs6BWLXoMQxd2Xm7bTA==-1-g
-userbaseParams-E245CEFA9DCD158BF199FCD0C97A632F-1
-u-9q3yMbDiGPLotYQCm+Nwiw==-1-g
-u-hGUAgUGxH9NfjjckcLINnw==-z
-u-Wl0q/Zf+wHnNkhbrxgk2Ag==-1-m-q
-userbaseParams-7idR+xSanhICp1v+VJlnsQ==-1
-SelfTaskDataCollect-0D78FAAF174890472479B44D266D11DA-1
-u-TnqLdLtwl5eBKpFWjBNigQ==-1-m-ci
-u-aOx+NkS1096cv2D879ZfZA==-1-m-ci
-userbaseParams-69977E4130305018755158E3C14492DA-1
-u-DQTnmIwHgPcP+v5YiNUJZA==-1-g
-SelfTaskDataCollect-9795CBE73C4E6F3AB43F816E786E853F-1
-u-R53eh8kqRyYD88iwh7VY8A==-z
-userbaseParams-AACC562B64D7942DF231ACF42D78A74C-1
-gamerun-loginUser-byLevel-zone1-day_18974-lvl_3
-gamerun-loginUser-byLevel-zone1-day_18934-lvl_1
-userbaseParams-BE5157BE388F96401E0B369B62AA0004-1
-u-98gr6/L9cADTzSfHq0/UYg==-1-g
-SelfTaskDataCollect-FE6BF89792EA741BD1E2F95D43851ED0-1
-userbaseParams-D78010A99216233F6A5E541FCE95CD54-1
-gamecfg-secretshop_goodsType
-u-AiVh0bUjOt8ScpUl5sfPgw==-1-m-ci
-u-ubY8fO6EiqJSXBrIHVhzRg==-1-m-q
-userbaseParams-54879B6B348576CCE318C6DFDCB6007C-1
-u-lAwZYSK10jEVdWL0M2GKXA==-1-g
-gamecfg-sysmail
-u-RD26BLc9W+89j8bfKrk5NA==-1-g
-userbaseParams-Hwmz+f+0nPPXy4rrpjRtjw==-1
-SelfTaskDataCollect-55B3D4987A5DC11166A6E4EE9EBDE0E6-1
-u-IV3o5fnv44dv7nx122rRVA==-1-g
-u-3J49pL2tTKGGM+LC1+OVHQ==-1-m-s
-userbaseParams-J1QBz5ByvH5KB6Fcci8scg==-1
-u-RD26BLc9W+89j8bfKrk5NA==-z
-userbaseParams-6ECBFF658A884BD86B705990CE92ED06-1
-u-+/j+VctEv8e/I2yFvihT9w==-1-m-s
-SelfTaskDataCollect-89ACCAB0CE2CEC4ADD000694C853BF9E-1
-u-MIvMeiWCv2gDBs6RrLyI4w==-1-m-s
-u-Ou4x+BI6rh8PXl52PzFeNQ==-1-g
-gamerun-BossFight-byDateHour-zone1-boss2-2022013000
-u-NECpVJ2b8JTRHhEzTKUyPw==-1-m-ci
-u-AiVh0bUjOt8ScpUl5sfPgw==-1-g
-SelfTaskDataCollect-403DF78F6D1B361FBF1CA4F465924F16-1
-userbaseParams-IV3o5fnv44dv7nx122rRVA==-1
-u-9zkpFTOPud983SMIegzuIw==-1-g
-u-VfZPw3LaHOF9PfanwvvUAQ==-1-g
-u-fZphkLry0PCKlYnuo6pvdg==-z
-u-NFn8ZNgpyBUvdSt+RvW1UQ==-z
-u-W2sWgQ86gNSJJflVTStQ7w==-1-m-q
-gamerun-BossFight-byDateHour-zone1-boss1-2021103114
-u-gfDchI64HK+rV4I3ziEvwA==-1-s-cp
-userbaseParams-068527365E990C2F181821A024E52676-1
-u-Znh6Ev8q3sssVP/uuTo3Wg==-1-m-q
-userbaseParams-3BA68AC65D98147B6E0FEFD9306F107E-1
-u-onCsrwGW4bxNOZuB2aBo8A==-1-m-q
-u-kQdUrd9ju35umNXJLva3jg==-z
-u-9leTN+xP8P4PlGYp2u2l1A==-1-s-cp
-u-HOvLHcCBSeva0wwWMSfrkg==-1-m-q
-SelfTaskDataCollect-BEFEEADF127AF08AD8EE0BBD5F289C7C-1
-userbaseParams-52B7AD90AB9DB7F500650B6F7506E61F-1
-u-4lSoetN0A9vA3Dh/tLGm1A==-1-m-s
-gamecfg-item_weapon
-gamerun-loginUser-byLevel-zone1-day_19004-lvl_1
-gamerun-BossFight-byDateHour-zone1-boss2-2022020604
-gamerun-loginUser-byUid-zone1-day_18986
-u-mNR4NMbwICJp8QiYDULGrA==-1-m-s
-userbaseParams-68BB9E1B624D527D0278D869C059D44C-1
-u-oAfSaJ2CId42Y/hgbjZ4xA==-z
-gamerun-loginUser-byLevel-zone1-day_18971-lvl_10
-u-xFYHEs1QDNT78zCk11zYdw==-1-m-ci
-gamerun-BossFight-byDateHour-zone1-boss2-2021102919
-u-hh2F7ruHiv6F/44mDNolqg==-1-s-cp
-userbaseParams-2CE4C292874AC2AC664586445856A0CA-1
-gamecfg-worldboss_rankreward2
-u-ZxLauD6uwqh09ollSB0qrQ==-z
-userbaseParams-686DCCBF8886C74DD50A010679EA2A69-1
-userbaseParams-96D130141C837E1922F2B2E8CC20A8FB-1
-u-9TwVdyGWiLvoFWxMxsZYdg==-z
-userbaseParams-7B61D091AED4A466BBF4706BCF124216-1
-userbaseParams-A0F82C3656E8EF6E2FCDBF92160A6536-1
-SelfTaskDataCollect-A365F6792363CEBDA33B0D9A607088C1-1
-SelfTaskDataCollect-E552BEB34096ABECA7163C03EEDB93CE-1
-userbaseParams-49313EBE31B4A1CB2651240DCD775A44-1
-u-sQTZeHRbnkRRSD/RCT8esg==-1-m-s
-gamerun-loginUser-byUid-zone1-day_18968
-u-GBFf01qU++xXwPq5Crsc7g==-z
-SelfTaskDataCollect-121C35E4E79ECD4400721829378565CA-1
-TaskDataCollectOther-1
-userbaseParams-FD0B2312B17D7BBEDD840A9B8C8BF348-1
-userbaseParams-7850B961AB9B129E8EE6E51C178FD687-1
-gamerun-loginUser-byUid-zone1-day_18944
-gamerun-loginUser-byLevel-zone1-day_19016-lvl_9
-u-2c6COTf2GnOHJpqATZATQg==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_19000-lvl_1
-userbaseParams-2F912CDD8AF159CB86A29B37FA7E3B56-1
-u-qc8fEtVio7h16eL/kvO6gA==-1-m-ci
-u-nudUAOGaNvJEvkK96UX4XQ==-1-m-q
-userbaseParams-urGme20Pzt1IzBIiQw5GTg==-1
-gamerun-loginUser-byLevel-zone1-day_18961-lvl_17
-u-b8A4Sg4Sdj8zC25J8Ej7zg==-1-m-s
-u-q9gZqncQmt1BUZbXBUIcNg==-1-m-s
-u-ECK2QdwkgBiQkNfqqgGD7w==-1-m-s
-u-Qp1hm1HmAo54RNpZXYeoJg==-1-g
-u-LTBHJgwOFktT/RURV7tc4A==-z
-u-5o/RlsWk7zJlEWeV8f1oug==-1-m-ci
-u-D2F65E54B617A98304ECD1FC4D1B50BA-1-m-s
-u-8Xo3yqqCHblWPNrhxPf6Cg==-1-m-s
-userbaseParams-oAfSaJ2CId42Y/hgbjZ4xA==-1
-u-0hKv/dcvUHlHlAzbGiAHXQ==-z
-u-lX1nmQyZ2ejlz2QSsLs8OA==-1-m-q
-u-NFn8ZNgpyBUvdSt+RvW1UQ==-1-g
-u-0ZZu52FKfPLSxSFkfokmyA==-1-guild
-SelfTaskDataCollect-08F756E225A710CBAF205CF025E904EB-1
-u-xFYHEs1QDNT78zCk11zYdw==-1-g
-userbaseParams-TTzLOc8lsoZKUorjQ448IQ==-1
-userbaseParams-lAwZYSK10jEVdWL0M2GKXA==-1
-userbaseParams-9OZEclIfg+PGyg1x3UVO/Q==-1
-u-H5VGLhYtAC2VLTRDLcW80Q==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_18996-lvl_6
-u-5+RNi5sZahUsb3niCHTuBQ==-z
-u-bKozOLZHDSoN6SWenTpS7g==-1-m-ci
-SelfTaskDataCollect-0C396D40564EA4E3CA1CE64CE2A12998-1
-u-a512PzWA0FWsGNNKnCmslA==-1-s-cp
-userbaseParams-296904C05F1E4EE8EF81C220773D8227-1
-SelfTaskDataCollect-276AAB094AFB0915654ECB6E514D722A-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021120623
-userbaseParams-B0CFC7DCD6A372D18F184F8447EA95ED-1
-u-jgzcy5hBwKPaNZdFHN5IHg==-1-g
-gamerun-loginUser-byLevel-zone1-day_19019-lvl_80
-u-j2sZ5k9tMaPL69GtPO+cGw==-1-g
-u-Q12nzHLzNXbY9HG10p09hg==-1-m-q
-SelfTaskDataCollect-yrs9OzHFRlgXNM/reK7OmQ==-1
-u-HodjNBz2XZNUHGQXleBxVQ==-1-g
-u-nudUAOGaNvJEvkK96UX4XQ==-1-g
-u-iVjiMlcM5amrDs9X38v2fQ==-1-m-q
-u-D2F65E54B617A98304ECD1FC4D1B50BA-1-m-ci
-userbaseParams-BEFEEADF127AF08AD8EE0BBD5F289C7C-1
-u-ij9pY+Clt5vlsupQ4CVEnA==-1-m-q
-u-MXZo0VBl2y3AEK2GxUl12Q==-1-m-s
-SelfTaskDataCollect-0AA7023BF891A6D68BE6A79AB8D9DDD1-1
-gamecfg-shop_limitTs_Type
-u-sQTZeHRbnkRRSD/RCT8esg==-1-s-cp
-u-hh2F7ruHiv6F/44mDNolqg==-1-m-s
-u-om3ehqNja3wlvi857jL54g==-z
-gamerun-loginUser-byLevel-zone1-day_18952-lvl_4
-u-DPwB0rOwK2g2n2CT+FtY1Q==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_18971-lvl_8
-u-Znh6Ev8q3sssVP/uuTo3Wg==-1-m-s
-u-HEFO1ANMmJ8vDV7mNr74+g==-1-m-q
-gamerun-BossFight-byDateHour-zone1-boss2-2021102816
-gamerun-loginUser-byLevel-zone1-day_18922-lvl_14
-u-IV3o5fnv44dv7nx122rRVA==-1-m-ci
-u-dZ0xjVZRe4TVMgW7q/qT0A==-z
-gamerun-BossFight-byDateHour-zone1-boss2-2021112408
-userbaseParams-MFCtadHxTkcytK840rJHSw==-1
-SelfTaskDataCollect-322E52697C7898D07566829C568429F8-1
-u-8U9ObTnCGkVD5TCSx69syQ==-1-g
-u-3J49pL2tTKGGM+LC1+OVHQ==-1-m-ci
-SelfTaskDataCollect-D83562E2A6AB89CFE9B2C0AB8F9BCC32-1
-userbaseParams-4CC8506592E203B265880CC8E3899160-1
-u-3D119C22C0DD36A0BA269AA41AE243DB-1-m-q
-u-s69Gt57wzLgvcTpt96F5Gw==-z
-u-8U9ObTnCGkVD5TCSx69syQ==-1-m-q
-u-Qp1hm1HmAo54RNpZXYeoJg==-z
-gamerun-loginUser-byLevel-zone1-day_19022-lvl_1
-u-tsDHE71bzBWcA4pWd9/TIA==-1-g
-SelfTaskDataCollect-BF0101A690C01A22851B1F9CB5AD453D-1
-u-wNaTLQe8pfJ+reBBi1Tz5A==-1-m-ci
-u-NFn8ZNgpyBUvdSt+RvW1UQ==-1-m-ci
-u-+/TRL/jresq5sVDmSuGlXA==-1-m-s
-u-mNR4NMbwICJp8QiYDULGrA==-1-m-ci
-gamerun-loginUser-byLevel-zone1-day_18951-lvl_1
-u-jEbfatDTuOhvTglJUaAkUQ==-1-m-s
-u-a97EPP7m3cqfXv/RG3M36g==-1-m-s
-u-wvIzx+ND9/7G32s3sWPchA==-1-g
-u-3bS2D5sM05mQUpfcuahRaA==-1-m-s
-userbaseParams-5Uq4QnmdsojNuLfGxv1GzA==-1
-SelfTaskDataCollect-92F8F270B61F47165E0E8C5442913527-1
-u-5jkOYSvp+MzOBABhAn5/Rg==-1-m-s
-u-l2UAFiftXTkFyOzuFf/k7A==-1-m-ci
-u-o/zAyO/cKDtA0899ZDPyqA==-z
-u-zK2G79FtrluCvJ170wnZZg==-z
-gamecfg-plot
-u-HuqH7U7vV6c6oEdeoaXAKg==-1-m-s
-u-5I5U6DYzjwiVOz1CglopLg==-1-s-cp
-userbaseParams-E5916977C1C19887A1D06FF609042EAA-1
-gamerun-loginUser-byLevel-zone1-day_18979-lvl_1
-u-+t+YqyHGZ7NL+BIRGpKDBQ==-1-g
-SelfTaskDataCollect-9A1B07778783C22AC6C484BF7862EC73-1
-userbaseParams-xXnz2KJLqEDaMQvWheDD7g==-1
-u-TAiKPeSlj1YARW215IlOmg==-1-m-s
-gamecfg-gate_passCondition
-gamerun-loginUser-byLevel-zone1-day_19032-lvl_16
-SelfTaskDataCollect-ez5BDluBMHfuQgfEPfDx2Q==-1
-u-7UI/Pe3jTdFTjyldkdaAlg==-1-g
-userbaseParams-BF0101A690C01A22851B1F9CB5AD453D-1
-gamerun-BossFight-byDateHour-zone1-boss2-2021120612
-u-rgiU2/MGPvJFePJIIcdwRw==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_18948-lvl_1
-u-MN//ZIiAW628KaKWTFxuQA==-1-m-ci
-u-bKozOLZHDSoN6SWenTpS7g==-1-g
-u-nuAuYk+BmREIdk0585ULOg==-1-g
-gamerun-loginUser-byLevel-zone1-day_18991-lvl_1
-u-R53eh8kqRyYD88iwh7VY8A==-1-m-ci
-SelfTaskDataCollect-OcN70ne7TNX3fHTDyei27g==-1
-u-997K35ioRJvNEzQlFt/C9Q==-1-m-s
-SelfTaskDataCollect-6ZTCAIv3hUat6SZR8wl2jg==-1
-u-tsDHE71bzBWcA4pWd9/TIA==-z
-u-om3ehqNja3wlvi857jL54g==-1-s-cp
-gamerun-loginUser-byLevel-zone1-day_18974-lvl_10
-u-9q3yMbDiGPLotYQCm+Nwiw==-1-m-ci
-TargetStatistics-1
-u-iVjiMlcM5amrDs9X38v2fQ==-1-g
-u-TTzLOc8lsoZKUorjQ448IQ==-1-m-ci
-u-OcN70ne7TNX3fHTDyei27g==-1-m-ci
-userbaseParams-B55A8BDAD43ACF945206D48245EBF780-1
-u-70Y9OovebY9nEFfc2DK4iQ==-z
-gamecfg-gate_zone
-u-jnkyCOR+6tniYyYsjhQUMA==-1-m-q
-userbaseParams-CF8578C1DB2AA0AA63D17FBD85938F32-1
-u-W2XAs1PfTWnBxIw9a1a1VA==-z
-userbaseParams-W2XAs1PfTWnBxIw9a1a1VA==-1
-gamerun-loginUser-byUid-zone1-day_18979
-gamerun-loginUser-byUid-zone1-day_19003
-u-gJaoc4v835VtfaAQy5186A==-1-g
-u-ZLYnnXx2uNLWtB3ZET3jNA==-1-s-cp
-u-l1/stGfX2QFeFoEdBFOLFA==-1-g
-u-j2sZ5k9tMaPL69GtPO+cGw==-1-m-s
-u-HuqH7U7vV6c6oEdeoaXAKg==-1-m-q
-u-Ou4x+BI6rh8PXl52PzFeNQ==-z
-userbaseParams-08A9DAE57691C7202F60A1014D456DB7-1
-SelfTaskDataCollect-B1BC1EB90A78339702CFF1ACF3B39B6D-1
-SelfTaskDataCollect-MXZo0VBl2y3AEK2GxUl12Q==-1
-gamecfg-gate_mainland
-u-ZDoOc1Oou26Sa8TvwlIJkQ==-1-m-ci
-u-vGHUHN5nAbA0qUMoxIMvjQ==-1-g
-u-3D119C22C0DD36A0BA269AA41AE243DB-1-s-cp
-u-5Bw7QLaq3oVwErJUQn7mTg==-1-m-q
-userbaseParams-pifU+4b5BnkXa116cN8hbw==-1
-u-JZk1qvyrdPOMR8d5k7+5aQ==-z
-userbaseParams-699901C641528FEE270119110DA786A2-1
-SelfTaskDataCollect-1CA5C7E736D643539C0AB0AFEE807D27-1
-u-eqlfzmHjE9aHn6Y84dhjYQ==-1-m-s
-u-5yw8awbTYsfeS98682N6Hg==-1-m-ci
-userbaseParams-q9gZqncQmt1BUZbXBUIcNg==-1
-userbaseParams-j2sZ5k9tMaPL69GtPO+cGw==-1
-gamecfg-item_stones
-gamerun-loginUser-byLevel-zone1-day_19029-lvl_1
-u-LOgiyvl5x8kljcTXwMuGGA==-z
-userbaseParams-8058D344FC6923E57E563A8B9185C3EE-1
-u-vGHUHN5nAbA0qUMoxIMvjQ==-1-s-cp
-gamerun-BossFight-byDateHour-zone1-boss2-2021102111
-u-l2UAFiftXTkFyOzuFf/k7A==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_19019-lvl_1
-userbaseParams-741A02BD75DC1A51E515AA3C9697A0EA-1
-u-NBzEWjT1CWPbp2qaQJ7Rgw==-1-m-ci
-u-X0ASXqfhgf2wklV5ydZaVg==-1-m-q
-u-OJhK11YcJs00jwH2qKN0Aw==-1-g
-userbaseParams-16FE328817A46DF05164777D2975C25B-1
-u-DH3ziEKN4S09aXOMJxoBFw==-1-g
-gamerun-loginUser-byLevel-zone1-day_18992-lvl_1
-u-DH3ziEKN4S09aXOMJxoBFw==-z
-userbaseParams-1450A97DDE178972038B36271ABA0655-1
-gamerun-loginUser-byUid-zone1-day_18935
-u-jnkyCOR+6tniYyYsjhQUMA==-1-g
-u-70Y9OovebY9nEFfc2DK4iQ==-1-g
-u-eqlfzmHjE9aHn6Y84dhjYQ==-1-g
-u-jEbfatDTuOhvTglJUaAkUQ==-z
-u-rgiU2/MGPvJFePJIIcdwRw==-1-s-cp
-gamerun-BossFight-byDateHour-zone1-boss2-2022021016
-u-09kl29J0gx6x1yAgIVLOdg==-1-m-s
-userbaseParams-740Nw+Q/tpWv68kv4NtQ/A==-1
-u-o2ejX8X7my6iEDHGB5t8TQ==-1-g
-u-0G/UpDVZP9MJI6r97HLB7Q==-1-m-s
-u-tsOAmC68t2ekelEqW43izg==-1-m-ci
-u-TAiKPeSlj1YARW215IlOmg==-1-m-q
-u-sQTZeHRbnkRRSD/RCT8esg==-1-g
-userbaseParams-7732C6F2E075ED2A54F61331273DA351-1
-userbaseParams-706970092917E6F2E154AC735FCB030F-1
-u-Wl0q/Zf+wHnNkhbrxgk2Ag==-1-s-cp
-gamecfg-item_yanling
-u-TnqLdLtwl5eBKpFWjBNigQ==-1-m-s
-u-NECpVJ2b8JTRHhEzTKUyPw==-z
-gamerun-BossFight-byDateHour-zone1-boss2-2021110622
-gamecfg-item_segment
-u-MdYqyhz3dlmKBH+VYhimFA==-1-g
-u-0z/R9XK3KzBe7KJgomzDUQ==-1-m-s
-u-wnVYczNauXLve8WiGU/M3w==-z
-userbaseParams-05E2D3D15B619F171DF5A661C4EF1FEC-1
-u-ZxLauD6uwqh09ollSB0qrQ==-1-m-ci
-u-j2sZ5k9tMaPL69GtPO+cGw==-1-s-cp
-u-JZk1qvyrdPOMR8d5k7+5aQ==-1-m-s
-u-5+RNi5sZahUsb3niCHTuBQ==-1-m-q
-SelfTaskDataCollect-nudUAOGaNvJEvkK96UX4XQ==-1
-u-TGNy549wH41BZvlUGzOn7g==-1-m-s
-userbaseParams-146384A4640DCE44F7CF9D683D662468-1
-u-SrqXwLeVCA0tH6knra4Q7A==-1-g
-userbaseParams-F41D7862D2A723C77913E78133C8B88D-1
-u-HOvLHcCBSeva0wwWMSfrkg==-1-g
-userbaseParams-D2F65E54B617A98304ECD1FC4D1B50BA-1
-userbaseParams-326A8CF83896DD2E630778B55333D070-1
-gamerun-loginUser-byLevel-zone1-day_18996-lvl_17
-u-EA74E58DCEB076ACC2D824684499CDA2-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18982-lvl_1
-u-2FyS23Oop2Nw19tWSFn3ag==-1-m-q
-userbaseParams-C742181526B12966BB833BDD852F68B6-1
-userbaseParams-VfZPw3LaHOF9PfanwvvUAQ==-1
-gamerun-loginUser-byLevel-zone1-day_18979-lvl_4
-u-6ZTCAIv3hUat6SZR8wl2jg==-1-m-q
-userbaseParams-A297C296BDCC8F704F16BA839AD64617-1
-gamerun-loginUser-byLevel-zone1-day_18960-lvl_9
-gamerun-BossFight-byDateHour-zone1-boss2-2021102018
-u-sVNA4BzGPi15iMzIOY0+Sg==-z
-gamerun-BossFight-byDateHour-zone1-boss2-2022020704
-gamerun-loginUser-byUid-zone1-day_19026
-u-5jkOYSvp+MzOBABhAn5/Rg==-1-s-cp
-u-MN//ZIiAW628KaKWTFxuQA==-1-g
-u-wvIzx+ND9/7G32s3sWPchA==-1-m-q
-u-j2sZ5k9tMaPL69GtPO+cGw==-z
-SelfTaskDataCollect-kfAk3CTelaPhC50ktRX5Cw==-1
-u-gJaoc4v835VtfaAQy5186A==-1-m-s
-userbaseParams-4DGLonP9NGMqnuneAzJkHQ==-1
-SelfTaskDataCollect-B02B2360A16B223C731223C8E7790440-1
-gamerun-loginUser-byLevel-zone1-day_18957-lvl_1
-u-oMnUcDcbhdw94omoMbLjCg==-1-m-ci
-gamerun-loginUser-byUid-zone1-day_19008
-u-3xAkyAtWlLHYGHQtpMxs1g==-z
-userbaseParams-322E52697C7898D07566829C568429F8-1
-SelfTaskDataCollect-J1QBz5ByvH5KB6Fcci8scg==-1
-u-ipR9CPCS0Scshk1TmFO7iA==-z
-u-3bS2D5sM05mQUpfcuahRaA==-z
-gamerun-loginUser-byLevel-zone1-day_18987-lvl_1
-gamerun-loginUser-byLevel-zone1-day_19017-lvl_7
-u-C7l1xRCW7E2dAOXc1YdumA==-1-m-s
-userbaseParams-403DF78F6D1B361FBF1CA4F465924F16-1
-userbaseParams-9460414178AE2822A1959BB4660B0A5D-1
-u-Oe5DQ7vJgxJD9JySk8wlgg==-z
-SelfTaskDataCollect-A91A1491B60BCDA42E44C9F7535CA2FC-1
-SelfTaskDataCollect-DB72494E86D08DD89E3905D7C0514911-1
-userbaseParams-3E39B9624B1D68D1EC7A62CABC42E59A-1
-SelfTaskDataCollect-44DB5DED6F7D046B8E3D5D22EE12A806-1
-SelfTaskDataCollect-om3ehqNja3wlvi857jL54g==-1
-u-V9EhOYpB/ZHlWrV52TGojw==-1-m-q
-u-fYqtP/ma4sTZ25BcdRQDyA==-1-s-cp
-u-moEJufjEW1j6WRFlZBE7XA==-1-m-s
-u-MBhAEu1HhdwqVSzh93Q29g==-z
-u-Hwmz+f+0nPPXy4rrpjRtjw==-z
-u-MkkHV64zgPEUXF9bbP6AgQ==-1-m-q
-userbaseParams-751DC2071647B31DE8212364357DF5D8-1
-userbaseParams-JDwD7HxT+o/oFHUloCW9QA==-1
-gamerun-loginUser-byUid-zone1-day_19020
-SelfTaskDataCollect-6F11FF2FFF00C06638BD91D755CFDE93-1
-SelfTaskDataCollect-B10Zc0KqgOWVnLP7wHyhVQ==-1
-u-4T+lYb6LeC8+P+AXJ4CBKQ==-1-g
-u-YkbyEOHrDEGTy8udWAm7HQ==-1-s-cp
-u-lp97dRXwhtCJ4wnW1X23Yg==-1-g
-gamerun-loginUser-byUid-zone1-day_19027
-userbaseParams-E552BEB34096ABECA7163C03EEDB93CE-1
-u-Li8eZodrYbr/sv89kvKeIg==-1-m-s
-u-KscJC3uMJpW61K5h4MYDcg==-z
-gamerun-loginUser-byUid-zone1-day_18957
-u-moEJufjEW1j6WRFlZBE7XA==-1-m-q
-gamerun-BossFight-byDateHour-zone1-boss2-2022012715
-u-QNywSBJdgteWz4rvrgvaUg==-z
-userbaseParams-8A1C2BFC4DDA4115F56B2BBC53A61471-1
-u-EcXFOI49fmaiqsb6a8K2Fw==-1-m-s
-u-0G/UpDVZP9MJI6r97HLB7Q==-z
-u-tm5tMtswi8KLa9Jvp7K0AQ==-1-m-s
-userbaseParams-CB0A8BA1D438A1FFD7540A454585A82A-1
-SelfTaskDataCollect-33C01FA651C360C45251398FC5147381-1
-userbaseParams-1
-userbaseParams-37oD8uTeTk6S5+vwGe+Pog==-1
-u-gg6On5qbR959wt6S+mk5hQ==-z
-u-121C35E4E79ECD4400721829378565CA-1-g
-gamerun-loginUser-byLevel-zone1-day_18939-lvl_1
-gamecfg-task_active_reward
-u-/ySDglrsMRf6Y4yepSsL9w==-z
-SelfTaskDataCollect-07A98CC70483D87541E2B4371733A960-1
-userbaseParams-57ABF53E322FF2803B9DFBD45CD68EF1-1
-u-ez5BDluBMHfuQgfEPfDx2Q==-1-m-s
-gamerun-loginUser-byUid-zone1-day_19002
-u-+/j+VctEv8e/I2yFvihT9w==-z
-userbaseParams-38EE3734F413870A58E4496E5BBF88E6-1
-u-IV3o5fnv44dv7nx122rRVA==-z
-u-jZFh/wwTMUL7W9Rfhl5+zQ==-1-s-cp
-gamecfg-subSkill
-SelfTaskDataCollect-6E0CA00E54D4605A680EC956859F2FF1-1
-u-HOvLHcCBSeva0wwWMSfrkg==-1-m-s
-gamecfg-rankreward_passgate
-u-ZQh8vdoyYoL4xQyCOzAn0Q==-1-g
-u-fYqtP/ma4sTZ25BcdRQDyA==-1-g
-u-rgiU2/MGPvJFePJIIcdwRw==-1-m-q
-SelfTaskDataCollect-7F4992C2EA39C2B61187A926C741F050-1
-u-q34K4oTknzb/Zq1hlLXxhQ==-z
-u-AACC562B64D7942DF231ACF42D78A74C-1-m-ci
-u-JHm3OZgsUrVwouVQms+h2A==-1-g
-userbaseParams-936C4D713A29F5410F1EE2737943879A-1
-gamerun-loginUser-byUid-zone1-day_18962
-SelfTaskDataCollect-6AF9C9B644833B278F80FA512DAE98B0-1
-u-h+r5l3lbhp3FDx2xWyipCA==-1-g
-gamerun-loginUser-byLevel-zone1-day_18989-lvl_15
-u-tot2ksrkH4EmVddpCx5I1w==-1-m-q
-u-bnC04nNXDNLNQSsYlFgHWA==-z
-u-xTJRRRJTR7o5+CRf4q6uOw==-1-m-s
-u-nEMZ7Q1OYZ1DeWWvYfP61A==-1-m-s
-gamerun-loginUser-byUid-zone1-day_18967
-u-Tm9gvRxkVKg6hFRApPCD3A==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_19006-lvl_1
-userbaseParams-A365F6792363CEBDA33B0D9A607088C1-1
-u-aqvPZwjUX6HxLSwcle9Efw==-1-g
-userbaseParams-944A2B6146BFBFE39571D124D4A8FBA2-1
-userbaseParams-moEJufjEW1j6WRFlZBE7XA==-1
-SelfTaskDataCollect-DCEF7AFED158FFCDBCE3139E6692FF7A-1
-SelfTaskDataCollect-4AF5672CD527284A06DB906C27F678F6-1
-u-VfZPw3LaHOF9PfanwvvUAQ==-1-m-q
-u-0G/UpDVZP9MJI6r97HLB7Q==-1-m-q
-SelfTaskDataCollect-1WPMPyjxNy02xw3+eZsWvg==-1
-userbaseParams-0E3C2466DD9B247E8E84A631E7380299-1
-SelfTaskDataCollect-B90B6DF0487E2E2C37FB7DAD5114F234-1
-u-B1cuw5vbtWgnoWe2vrcX7Q==-z
-u-PeFkh+iWridOaF6CQ8iKAQ==-1-g
-u-lp97dRXwhtCJ4wnW1X23Yg==-1-m-q
-u-IV3o5fnv44dv7nx122rRVA==-1-m-s
-u-Im3MkfDu4X3pz6GsO7yyjQ==-1-m-s
-SelfTaskDataCollect-DB8065CA6E7FE3846556EC6E0B808CDD-1
-gamerun-loginUser-byLevel-zone1-day_19019-lvl_8
-u-qc8fEtVio7h16eL/kvO6gA==-1-g
-u-6gofp4BAXKjUefS4iwpOnw==-1-m-q
-userbaseParams-BB95375CA5B22018126527538A934DB9-1
-SelfTaskDataCollect-8760CB471CB7EF63641395FF627CA207-1
-u-NECpVJ2b8JTRHhEzTKUyPw==-1-g
-userbaseParams-54AA5FF65F159DF36B142123D01A35B1-1
-userbaseParams-B625E96D1646F639602E38CD06505B78-1
-u-eqlfzmHjE9aHn6Y84dhjYQ==-z
-u-JUmTimmn7PYEAtfFtBJxvQ==-1-g
-u-DTubNlAbSTRdrYC2xX3Zkw==-1-g
-userbaseParams-l1/stGfX2QFeFoEdBFOLFA==-1
-u-tsDHE71bzBWcA4pWd9/TIA==-1-m-s
-u-PiygwRTmPRef2TCzz5U74Q==-z
-u-NBzEWjT1CWPbp2qaQJ7Rgw==-1-m-s
-u-K42bbRyEX24rJZD8Bq0yeA==-1-m-q
-u-sQTZeHRbnkRRSD/RCT8esg==-1-m-ci
-u-9sdvBxCeIN82jaunYoPYmA==-1-m-ci
-gamecfg-shop
-u-PyOwVEdBVQ5cNFFI4nMl0w==-1-m-ci
-SelfTaskDataCollect-5EB2CC61D7793740CFD68AE81AC0B499-1
-u-1XOdqrLN9KEV1e3L6emTOw==-1-m-s
-u-XfDKbemX21q8YADIt5FeCg==-1-g
-u-aPlyx+OvTXQkpn0o/smMhA==-1-m-ci
-SelfTaskDataCollect-o773tgeZRFG0UA0KdQp3Xw==-1
-SelfTaskDataCollect-3bS2D5sM05mQUpfcuahRaA==-1
-u-B10Zc0KqgOWVnLP7wHyhVQ==-z
-SelfTaskDataCollect-ay2UCE+9U/Zf5Id58kEwAQ==-1
-SelfTaskDataCollect-3D119C22C0DD36A0BA269AA41AE243DB-1
-u-TneySddMA9RKLvPu6mbkDw==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18994-lvl_1
-u-8Kkx99rfFjy97uwica+TQA==-1-guild
-SelfTaskDataCollect-7B61D091AED4A466BBF4706BCF124216-1
-u-SlWx6E4qNAbxll6U6aEhqg==-z
-u-KCcNvFOrAMok3qSvpE4g/Q==-1-m-q
-userbaseParams-035E209F766B0C5A017FD87D0E1FF304-1
-userbaseParams-Q12nzHLzNXbY9HG10p09hg==-1
-userbaseParams-4AF5672CD527284A06DB906C27F678F6-1
-gamerun-loginUser-byUid-zone1-day_18954
-SelfTaskDataCollect-W2XAs1PfTWnBxIw9a1a1VA==-1
-u-t2/wl7k8k3m8show6brrgA==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_19034-lvl_1
-gamerun-loginUser-byLevel-zone1-day_19020-lvl_19
-userbaseParams-DB8065CA6E7FE3846556EC6E0B808CDD-1
-u-9zkpFTOPud983SMIegzuIw==-1-m-ci
-u-kKjLbxh8JVOiZkjR10tPXQ==-1-m-q
-SelfTaskDataCollect-MN//ZIiAW628KaKWTFxuQA==-1
-userbaseParams-ThP4sBclr3EuHHQEa+niSw==-1
-u-q9gZqncQmt1BUZbXBUIcNg==-z
-SelfTaskDataCollect-Ou4x+BI6rh8PXl52PzFeNQ==-1
-SelfTaskDataCollect-P2i10bUPlA3O1akfQM4bCA==-1
-u-ZDoOc1Oou26Sa8TvwlIJkQ==-1-g
-u-37oD8uTeTk6S5+vwGe+Pog==-1-g
-u-0ZZu52FKfPLSxSFkfokmyA==-1-m-s
-u-aOx+NkS1096cv2D879ZfZA==-1-m-q
-u-kLxrc6BM2ezeXj4jI8WtzA==-1-g
-u-SrqXwLeVCA0tH6knra4Q7A==-1-s-cp
-u-MWvDK5wVi5UnPqebcLmnig==-1-g
-u-UQp+foexZOgCvOY5tIqfrw==-1-m-ci
-u-301ctjvGmk3qO9uWzUZkKA==-1-g
-gamerun-BossFight-byDateHour-zone1-boss2-2021111819
-userbaseParams-tm5tMtswi8KLa9Jvp7K0AQ==-1
-u-+LfPNbUrUE4cgXGiFax4+A==-z
-u-W2sWgQ86gNSJJflVTStQ7w==-1-s-cp
-u-PeFkh+iWridOaF6CQ8iKAQ==-1-s-cp
-u-5Amxn56RorDYx9Wx6lg43A==-1-m-ci
-userbaseParams-92F8F270B61F47165E0E8C5442913527-1
-userbaseParams-02709071D3A1127BE3AF0551D8CE2594-1
-gamerun-loginUser-byLevel-zone1-day_19035-lvl_1
-u-OJhK11YcJs00jwH2qKN0Aw==-1-m-q
-userbaseParams-jEbfatDTuOhvTglJUaAkUQ==-1
-u-D2F65E54B617A98304ECD1FC4D1B50BA-1-m-q
-u-SlWx6E4qNAbxll6U6aEhqg==-1-m-ci
-gamecfg-shop_monthVIP
-u-H9neYid2ZQrTYaSckYFkKg==-1-g
-u-DTubNlAbSTRdrYC2xX3Zkw==-1-m-ci
-u-4CfVxFhgerAefWz/wk5Ifg==-z
-u-HM5YKR08jiZpJtzfkEP9tQ==-1-m-ci
-userbaseParams-DCEF7AFED158FFCDBCE3139E6692FF7A-1
-u-UQp+foexZOgCvOY5tIqfrw==-z
-u-oAfSaJ2CId42Y/hgbjZ4xA==-1-m-s
-u-301ctjvGmk3qO9uWzUZkKA==-1-m-q
-userbaseParams-940E63F110F601449DC9EC813F3870A3-1
-userbaseParams-439918D1F6E0ECE817DB7234BE22CDE5-1
-SelfTaskDataCollect-A27E34AAC08DB08ECD0D6C8BF164B7DE-1
-SelfTaskDataCollect-aF3B9amDlVZ5k+lFRWV19Q==-1
-userbaseParams-7F04E64CDD2F90A434B683F064817864-1
-u-DE0E343D1275BAA06ABBA16F95D6F9CA-1-s-cp
-u-n1Z68uCipSA2+XyaYGpXQg==-z
-u-Li8eZodrYbr/sv89kvKeIg==-1-g
-u-P2i10bUPlA3O1akfQM4bCA==-1-m-q
-u-O+ESGfWyAvYQoADybrGAug==-1-m-s
-SelfTaskDataCollect-FCD0EDD4E8F6FAC7BF8AEE041FC0B2E9-1
-userbaseParams-GSHQWLqasJ7eFpE0i6dRKQ==-1
-u-5jkOYSvp+MzOBABhAn5/Rg==-1-m-q
-userbaseParams-9A1B07778783C22AC6C484BF7862EC73-1
-u-vctxguKByCLCga1Vbk8zAQ==-1-g
-u-aF3B9amDlVZ5k+lFRWV19Q==-1-m-ci
-u-ZG6Nu2RcGAFuiwMCVASQIA==-1-g
-u-vctxguKByCLCga1Vbk8zAQ==-1-m-s
-u-R2xSfQf5GzcQVgybWAL/sg==-1-m-s
-u-u/heB8I+0wqCnVHJZA8VhQ==-z
-userbaseParams-EB62712F84AC1DACF45A142D9C785272-1
-SelfTaskDataCollect-+fWV7fh7vRsN2HobiLe2pw==-1
-u-nkomZP8gE2lCZ55V39V8zA==-z
-gamecfg-task
-SelfTaskDataCollect-Sx240hHi9qnPpyYyJkHDeQ==-1
-u-OcN70ne7TNX3fHTDyei27g==-1-m-s
-u-Dek+/UfGgAVOJlc3FxiHgA==-z
-u-ay2UCE+9U/Zf5Id58kEwAQ==-1-g
-u-6o00NrA9PZZ+Dx/76feUyw==-z
-u-V9EhOYpB/ZHlWrV52TGojw==-1-g
-userbaseParams-kMeqzZ7Oi/GoYVYW+brMQQ==-1
-u-7idR+xSanhICp1v+VJlnsQ==-z
-SelfTaskDataCollect-54879B6B348576CCE318C6DFDCB6007C-1
-u-2r6TJEmiwdzbIEsT/pfvIg==-1-m-s
-u-DQTnmIwHgPcP+v5YiNUJZA==-1-m-s
-userbaseParams-240CCF121CB04B8A0C3A252B078DBA15-1
-userbaseParams-220FB8B8826F8EC3399C947031571641-1
-u-RD26BLc9W+89j8bfKrk5NA==-1-m-s
-u-q34K4oTknzb/Zq1hlLXxhQ==-1-m-q
-SelfTaskDataCollect-LkY7oRPUoO0FVfr7QHcpQw==-1
-SelfTaskDataCollect-3E11300370FA15B0A6E96894277D67E7-1
-userbaseParams-AAF5AE8760424985FC7FE4C7312075D7-1
-u-93GQrz7rBRkyz2Gb5MF8tA==-1-m-s
-gamerun-loginUser-byUid-zone1-day_19030
-SelfTaskDataCollect-A45AA48FAC171E3D6506FC2156973145-1
-u-lX1nmQyZ2ejlz2QSsLs8OA==-1-g
-gamerun-loginUser-byLevel-zone1-day_18967-lvl_1
-u-3xAkyAtWlLHYGHQtpMxs1g==-1-m-ci
-SelfTaskDataCollect-798D00E357876091CB8D57F921005528-1
-u-s69Gt57wzLgvcTpt96F5Gw==-1-m-ci
-u-wNaTLQe8pfJ+reBBi1Tz5A==-z
-u-B10Zc0KqgOWVnLP7wHyhVQ==-1-m-q
-u-9TwVdyGWiLvoFWxMxsZYdg==-1-g
-u-b8A4Sg4Sdj8zC25J8Ej7zg==-z
-u-kKjLbxh8JVOiZkjR10tPXQ==-1-m-s
-u-5I5U6DYzjwiVOz1CglopLg==-1-g
-u-bnC04nNXDNLNQSsYlFgHWA==-1-g
-u-osDSZi3fTO6qODkFL5XTMQ==-1-m-s
-u-5jkOYSvp+MzOBABhAn5/Rg==-z
-u-mrGaPvKOlX4POcCSa7oIXQ==-1-g
-SelfTaskDataCollect-9zkpFTOPud983SMIegzuIw==-1
-gamerun-loginUser-byLevel-zone1-day_18961-lvl_1
-gamerun-loginUser-byLevel-zone1-day_18977-lvl_1
-u-zOb+bdJZtZcENYsd9xlI3w==-1-g
-u-oMnUcDcbhdw94omoMbLjCg==-1-m-s
-u-jdCo1id1fr+e4wZ3Llol4w==-z
-u-clV9hTIWKGCld8c0hBhCKw==-1-m-q
-u-jKYNme7bRzZbBvOP9kGx8A==-1-m-ci
-SelfTaskDataCollect-DBD45585C757B1C0553F0970D00AEE47-1
-userbaseParams-B1BC1EB90A78339702CFF1ACF3B39B6D-1
-u-sVNA4BzGPi15iMzIOY0+Sg==-1-g
-SelfTaskDataCollect-FDF7D870F0E930E0EAF5771AD18AA097-1
-u-Qp1hm1HmAo54RNpZXYeoJg==-1-m-s
-userbaseParams-C95E3CD3B95680DDDD87D6E2FE80CC5F-1
-u-bnC04nNXDNLNQSsYlFgHWA==-1-s-cp
-SelfTaskDataCollect-NF30nkaJUkOTSi2tcZC6FQ==-1
-u-PeFkh+iWridOaF6CQ8iKAQ==-1-m-ci
-gamecfg-guide_module
-u-fmnHE43N47Mdxz8ASTUcOQ==-1-g
-u-f3+0IGZAgflf04LQGRq9Lg==-1-m-s
-userbaseParams-64051D55799349BAD392EC3B918B0041-1
-SelfTaskDataCollect-05E2D3D15B619F171DF5A661C4EF1FEC-1
-u-tot2ksrkH4EmVddpCx5I1w==-1-s-cp
-SelfTaskDataCollect-64051D55799349BAD392EC3B918B0041-1
-u-HM5YKR08jiZpJtzfkEP9tQ==-1-g
-SelfTaskDataCollect-0aiCK//5ZR3bJ3ZAJBiKgA==-1
-gamerun-loginUser-byLevel-zone1-day_19030-lvl_80
-u-n1Z68uCipSA2+XyaYGpXQg==-1-g
-SelfTaskDataCollect-H5VGLhYtAC2VLTRDLcW80Q==-1
-u-TGNy549wH41BZvlUGzOn7g==-1-m-q
-u-+/j+VctEv8e/I2yFvihT9w==-1-m-q
-userbaseParams-5E6DF67A5F6BF607D574A31959389A4B-1
-gamerun-loginUser-byLevel-zone1-day_19025-lvl_17
-u-9aWr5pidEog+2yGISeSOEg==-z
-u-cx8AHSDLHGe0Joij/o7lzA==-1-m-s
-u-5yw8awbTYsfeS98682N6Hg==-1-s-cp
-userbaseParams-44DB5DED6F7D046B8E3D5D22EE12A806-1
-u-/1EHzOG+FJAt+MAUUI/AJw==-1-m-q
-SelfTaskDataCollect-9+Ccx7Mg84b5UPGbbNEajQ==-1
-gamerun-BossFight-byDateHour-zone1-boss2-2022020709
-gamerun-loginUser-byLevel-zone1-day_18940-lvl_1
-u-a97EPP7m3cqfXv/RG3M36g==-1-s-cp
-userbaseParams-126E596B9F89926BA0CE01C0796EDAEF-1
-gamerun-loginUser-byUid-zone1-day_18982
-u-o773tgeZRFG0UA0KdQp3Xw==-1-m-ci
-u-MkrHhUYYtXi9WCYCtX4nVQ==-1-g
-SelfTaskDataCollect-17A28354B63FAB91861ACE2F58BED642-1
-userbaseParams-1123CBE9B30EB03F28B288990124132E-1
-SelfTaskDataCollect-01DAC853A713988FF0501B021661EEE1-1
-u-O+ESGfWyAvYQoADybrGAug==-1-m-ci
-u-nudUAOGaNvJEvkK96UX4XQ==-1-s-cp
-SelfTaskDataCollect-D72DC4A46A7EF1B01C3825887542DAE2-1
-u-/1EHzOG+FJAt+MAUUI/AJw==-1-m-s
-gamerun-loginUser-byLevel-zone1-day_18952-lvl_3
-userbaseParams-FBE3CD1AD380DD419343215BE0EAD182-1
-u-MXZo0VBl2y3AEK2GxUl12Q==-1-m-q
-SelfTaskDataCollect-VKafg044KDQhMlbyFhot4g==-1
-u-zK2G79FtrluCvJ170wnZZg==-1-m-s
-gamecfg-npc
-gamerun-BossFight-byDateHour-zone1-boss2-2021112917
-SelfTaskDataCollect-Znh6Ev8q3sssVP/uuTo3Wg==-1
-SelfTaskDataCollect-E80D63FC7CE245E21B2A11A8247FDF72-1
-u-tlD5f8zc2DQ5d6gJR0TtLg==-1-m-s
-SelfTaskDataCollect-5Uq4QnmdsojNuLfGxv1GzA==-1
-userbaseParams-BF61E773AB8087FAA7F12FBCAEF872E5-1
-SelfTaskDataCollect-CAAD039D3935F10661006BC4078C411C-1
-u-DQTnmIwHgPcP+v5YiNUJZA==-1-m-ci
-u-om3ehqNja3wlvi857jL54g==-1-g
-u-KscJC3uMJpW61K5h4MYDcg==-1-g
-u-CwGc7/3mBfRkGGbtIdHPSw==-1-g
-gamerun-loginUser-byLevel-zone1-day_18997-lvl_8
-u-039PvrQw7OogvZRmPovwzA==-z
-userbaseParams-C206270CC8F341114F63379D49696573-1
-userbaseParams-Id28jDn1EdTEnDGV7xBVXA==-1
-SelfTaskDataCollect-11793D0DC3137DB86EF7B080650FE684-1
-gamerun-BossFight-byDateHour-zone1-boss1-2021101916
-SelfTaskDataCollect-NECpVJ2b8JTRHhEzTKUyPw==-1
-gamerun-loginUser-byLevel-zone1-day_19018-lvl_5
-u-kfAk3CTelaPhC50ktRX5Cw==-1-g
-gamerun-loginUser-byLevel-zone1-day_18954-lvl_10
-userbaseParams-7C3667A4425495FAC60186972C564C2E-1
-userbaseParams-L/t1ZuZ98zo/ydZsdz9kkg==-1
-userbaseParams-A52C3DFEE4C96897D4900B57E371C344-1
-SelfTaskDataCollect-xTJRRRJTR7o5+CRf4q6uOw==-1
-gamerun-loginUser-byUid-zone1-day_18959
-u-0G/UpDVZP9MJI6r97HLB7Q==-1-g
-SelfTaskDataCollect-jZFh/wwTMUL7W9Rfhl5+zQ==-1
-u-7UI/Pe3jTdFTjyldkdaAlg==-1-s-cp
-userbaseParams-BE068CA272CF007D2FC83B98C4675B12-1
-userbaseParams-C335ED920C30020F4BBDC20B9194C2AC-1
-SelfTaskDataCollect-BE068CA272CF007D2FC83B98C4675B12-1
-u-szzKjs5B+qM/aL9e1TlXxQ==-1-m-q
-u-Lw1MRiBzasWfOrd0FRTxAg==-1-g
-u-aqvPZwjUX6HxLSwcle9Efw==-z
-u-ZcdvOGmNMdblwhbbt95c0w==-1-m-s
-gamerun-loginUser-byUid-zone1-day_18974
-u-moEJufjEW1j6WRFlZBE7XA==-1-g
-u-5Amxn56RorDYx9Wx6lg43A==-1-g
-u-qYinnr1KUJYbQAbMeeXh2g==-z
-u-a512PzWA0FWsGNNKnCmslA==-1-m-s
-gamerun-loginUser-byUid-zone1-day_18996
-userbaseParams-4913878A7E4B9097E1EB75822E122B10-1
-u-lTZ3gDxXUSwypr8gfFaPRA==-1-s-cp
-u-Lp09gWphD9ocQOJrN67w6A==-1-m-ci
-SelfTaskDataCollect-7BCBAFEAA49A56CFD27DD4DB3D8262AD-1
-u-ayYI4ZlkQfVP7MkTJR7oSA==-1-m-ci
-userbaseParams-ED6FF31F121DC563C36113D1B2E2B452-1
-gamerun-loginUser-byLevel-zone1-day_18998-lvl_1
-u-0ZZu52FKfPLSxSFkfokmyA==-1-m-q
-u-KV/g+Q7ZscI8NJdkT2eF1w==-1-g
-u-5+RNi5sZahUsb3niCHTuBQ==-1-m-ci
-userbaseParams-1CA69812B5CFE6D3EDB5C103E856BCC3-1
-userbaseParams-4F138317437FB145DB8EE1A17B7FB0F8-1
-u-121C35E4E79ECD4400721829378565CA-1-s-cp
-u-O+ESGfWyAvYQoADybrGAug==-1-m-q
-gamecfg-weaponextra_level
-u-nDycZEQUMraLQX0CKeBX3Q==-z
-u-9zkpFTOPud983SMIegzuIw==-1-m-s
-gamerun-BossFight-byDateHour-zone1-boss2-2021111619
-u-Pca85n5ohw4RvSlULPbetg==-1-m-q
-u-740Nw+Q/tpWv68kv4NtQ/A==-1-m-q
-u-Hwmz+f+0nPPXy4rrpjRtjw==-1-s-cp
-u-JUmTimmn7PYEAtfFtBJxvQ==-1-m-ci
-u-jKYNme7bRzZbBvOP9kGx8A==-1-g
-gamerun-rank-fpower-breaklog-zone1
-gamerun-BossFight-byDateHour-zone1-boss2-2022020215
-u-DnnJUgM+jppgUx6bNU5swQ==-1-m-s
-userbaseParams-+fWV7fh7vRsN2HobiLe2pw==-1
-u-FpERDEhs1ch93RvTfaCDtA==-z
-u-w8qBeTaWzznrjSjXS7Rdwg==-1-m-q
-u-cx8AHSDLHGe0Joij/o7lzA==-1-g
-gamerun-loginUser-byLevel-zone1-day_18969-lvl_1
-gamerun-loginUser-byLevel-zone1-day_18920-lvl_3
-u-bKozOLZHDSoN6SWenTpS7g==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_18972-lvl_1
-u-Z7nnIWmsL3tO06qmFsMDPg==-z
-userbaseParams-A56327D23C64DA27FC7C1EDD843F77F5-1
-userbaseParams-o773tgeZRFG0UA0KdQp3Xw==-1
-userbaseParams-n5F6XP6zpFnO1za6tYpIog==-1
-userbaseParams-0E2BA1CB1F33AAB4A4C078FD56DAB17A-1
-u-AACC562B64D7942DF231ACF42D78A74C-z
-SelfTaskDataCollect-4DGLonP9NGMqnuneAzJkHQ==-1
-u-jXXDHASoFuAWGBxQ4fr2zA==-1-m-ci
-u-5+RNi5sZahUsb3niCHTuBQ==-1-g
-u-ZQh8vdoyYoL4xQyCOzAn0Q==-z
-u-DnnJUgM+jppgUx6bNU5swQ==-1-g
-u-jKYNme7bRzZbBvOP9kGx8A==-1-m-q
-u-4lSoetN0A9vA3Dh/tLGm1A==-z
-userbaseParams-4D84A9206219667CF87C196DDFF577B5-1
-u-l1/stGfX2QFeFoEdBFOLFA==-1-m-q
-u-CwGc7/3mBfRkGGbtIdHPSw==-1-s-cp
-gamerun-loginUser-byLevel-zone1-day_18969-lvl_6
-userbaseParams-ipR9CPCS0Scshk1TmFO7iA==-1
-u-lCr+biIlvaZJB/Yx8MTUCw==-z
-u-tm5tMtswi8KLa9Jvp7K0AQ==-1-g
-u-0hKv/dcvUHlHlAzbGiAHXQ==-1-g
-u-K42bbRyEX24rJZD8Bq0yeA==-z
-userbaseParams-TnqLdLtwl5eBKpFWjBNigQ==-1
-u-8Xo3yqqCHblWPNrhxPf6Cg==-z
-u-SrqXwLeVCA0tH6knra4Q7A==-1-m-ci
-SelfTaskDataCollect-aPlyx+OvTXQkpn0o/smMhA==-1
-u-Id28jDn1EdTEnDGV7xBVXA==-1-s-cp
-u-kMeqzZ7Oi/GoYVYW+brMQQ==-1-m-q
-gamerun-loginUser-byLevel-zone1-day_19023-lvl_1
-gamecfg-yanlingextra_level
-userbaseParams-A41440912073BE7FC466165AE4B3CFA3-1
-userbaseParams-FE6BF89792EA741BD1E2F95D43851ED0-1
-u-740Nw+Q/tpWv68kv4NtQ/A==-1-g
-gamerun-loginUser-byUid-zone1-day_19021
-userbaseParams-834A26A20EF718A073ED6A74BF2B8ED1-1
-u-gnVmrGt/N9RF2YN9u15D4g==-1-m-q
-userbaseParams-B44A4C4ACD22DD3E439727152BE007F7-1
-u-TneySddMA9RKLvPu6mbkDw==-z
-u-1M1LYo4/Dq//YbEk9HO+8Q==-1-m-s
-u-5I5U6DYzjwiVOz1CglopLg==-z
-u-NF30nkaJUkOTSi2tcZC6FQ==-1-m-s

+ 0 - 29
CSserver/StatisticsTransfer/Program.cs

@@ -1,29 +0,0 @@
-//using System.Collections.Generic;
-//using System.Linq;
-//using Newtonsoft.Json;
-//using Newtonsoft.Json.Linq;
-//using System.Diagnostics;
-using StatisticsTransfer.tongji;
-
-namespace StatisticsTransfer {
-
-    class Program
-    {
-        static void Main(string[] args)
-        {
-            Console.WriteLine("统计信息从redis---execl文件........");
-            FunDistribute();          
-        }
-
-        public static void FunDistribute()
-        {
-            Console.WriteLine("FunDistribute................");
-
-            TargetStatistics.TargetValToExecl();                     // 统计数据
-            ReportedLogs.TransLog();                                 // 客户端埋点日志  
-        }
-    }
-
-}
-
-

+ 0 - 18
CSserver/StatisticsTransfer/StatisticsTransfer.csproj

@@ -1,18 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>net6.0</TargetFramework>
-    <ImplicitUsings>enable</ImplicitUsings>
-    <Nullable>enable</Nullable>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <PackageReference Include="NPOI" Version="2.5.5" />
-  </ItemGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\Lib1\Lib1.csproj" />
-  </ItemGroup>
-
-</Project>

+ 0 - 25
CSserver/StatisticsTransfer/StatisticsTransfer.sln

@@ -1,25 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.0.31903.59
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StatisticsTransfer", "StatisticsTransfer.csproj", "{A9FB8ED8-4FDD-49EC-AEE8-0EDDDD564E7F}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{A9FB8ED8-4FDD-49EC-AEE8-0EDDDD564E7F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{A9FB8ED8-4FDD-49EC-AEE8-0EDDDD564E7F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{A9FB8ED8-4FDD-49EC-AEE8-0EDDDD564E7F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{A9FB8ED8-4FDD-49EC-AEE8-0EDDDD564E7F}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {E95C2920-F100-4367-A5C5-61B4237705AB}
-	EndGlobalSection
-EndGlobal

+ 0 - 119
CSserver/StatisticsTransfer/tongji/ReportedLogs.cs

@@ -1,119 +0,0 @@
-//using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using NPOI.HSSF.UserModel;
-using StackExchange.Redis;
-using Newtonsoft.Json.Linq;
-
-namespace StatisticsTransfer.tongji
-{
-    internal class ReportedLogs
-    {
-
-        const int OneTransMaxItem = 1000;
-        /// <summary>
-        /// 导出客户端埋点日志
-        /// </summary>
-        public static void TransLog()
-        {
-
-            var workbook = new HSSFWorkbook();
-            var mem = Redis.Ins.GetDatabase(0);
-
-            MemKey_Statistics.ReportedLogs().ForEach(k =>
-            {
-
-                var sheet = workbook.CreateSheet(GetSheetName(k));                // 创建工作表            
-                var rowInfo = mem.ListRange(k, 0, 0);
-                if (rowInfo.Length > 0)
-                {
-                    var strJS = rowInfo[0].ToString() ?? "{}";
-                    Console.WriteLine(strJS);
-                    var json = JObject.Parse(strJS);
-                    int i = 0, y = 0;
-                    var head_row = sheet.CreateRow(y++);                            // 标题行   
-                    foreach (var kv in json)
-                    {
-                        head_row.CreateCell(i++).SetCellValue(kv.Key);              // 设置标题
-                    }
-                    var start = 0L;
-                    var end = 0L;
-                    while (mem.ListLength(k) > 0 && end < mem.ListLength(k))
-                    {
-                        if (OneTransMaxItem < mem.ListLength(k) - start)
-                        {
-                            end = start + OneTransMaxItem - 1;
-                        }
-                        else
-                        {
-                            end = mem.ListLength(k);
-                        }
-
-                        var arr = mem.ListRange(k, start, end);
-                        arr.ToList().ForEach(x =>
-                        {
-                            var row = sheet.CreateRow(y++);
-                            var strJS = x.ToString() ?? "{}";
-                            var json = JObject.Parse(strJS);
-                            i = 0;                                                 // 重置索引
-                            foreach (var kv in json)
-                            {
-                                var v = kv.Value?.ToString() ?? "-";
-                                row.CreateCell(i++).SetCellValue(v);               // 设置列值 
-                            }
-
-                        });
-                        start = end;
-                        //  mem.ListTrim(k, OneTransMaxItem - 1, mem.ListLength(k) - OneTransMaxItem); // 清除已导数据
-                    }
-                }
-                 
-            });                                                                   // 遍历日志
-
-            OutPut(workbook);                                                     // 保存到文件
-            Console.WriteLine("客户端埋点日志转存完毕!");
-        }
-        /// <summary>
-        /// 将excel写入文件
-        /// </summary>
-        /// <param name="workbook"></param>
-        private static void OutPut(HSSFWorkbook workbook)
-        {
-
-            string txtName = "客户端埋点上报日志表_" + DateTime.Now.ToString("yyyyMMdd");
-
-            string filename = Config.Ins.OutDir + txtName + ".xls";
-            if (File.Exists(filename))
-            {
-                File.Delete(filename);
-            }
-            using var file = new FileStream(filename, FileMode.CreateNew, FileAccess.Write);
-            workbook.Write(file);
-
-        }
-        /// <summary>
-        /// redis中的key到 中文工作表名称的映射
-        /// </summary>
-        /// <param name="k"></param>
-        /// <returns></returns>
-        private static string GetSheetName(string k) => k switch
-        {
-            "stat-reported-log-e_gate" => "关卡记录",
-            "stat-reported-log-e_task" => "任务记录",
-            "stat-reported-log-e_k_1" => "资源更新完毕",
-            "stat-reported-log-e_k_2" => "手机号注册完毕(龙游)",
-            "stat-reported-log-e_k_3" => "实名认证完毕(龙游)",
-            "stat-reported-log-e_k_4" => "用户登录完成(已加载对应区的玩家数据)",
-            "stat-reported-log-e_k_5" => "进入新手引导场景",
-            "stat-reported-log-e_k_6" => "离开新手引导场景",
-            "stat-reported-log-e_k_7" => "接取了第一个主线剧情(任务)",
-            "stat-reported-log-e_k_8" => "e_k_8-不知道",
-            "stat-reported-log-e_k_9" => "e_k_9-不知道",
-            _ => "-"                                                           // 默认值
-        };
-
-
-    }
-}

+ 0 - 359
CSserver/StatisticsTransfer/tongji/TargetStatistics.cs

@@ -1,359 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using NPOI.HSSF.UserModel;
-using StackExchange.Redis;
-using Newtonsoft.Json.Linq;
-using System.IO;
-using CSharpUtil;
-
-namespace StatisticsTransfer.tongji
-{
-    class TargetStatistics
-    {
-        /// <summary>
-        /// 指标累计值数据转为execl表
-        /// </summary>
-        public static void TargetValToExecl()
-        {
-            var mem = Redis.Ins.GetDatabase(1);
-
-            int zoneid = 1;
-            HashEntry[] ctxList = mem.HashGetAll(MemKey_Statistics.TargetStatistics(zoneid));
-            int length = ctxList.Length;
-            if (length <= 0)
-            {
-                return;
-            }
-
-
-            Dictionary<string, Dictionary<string, int>> dic = new Dictionary<string, Dictionary<string, int>>();
-
-            foreach (var item in ctxList)
-            {
-                string type = item.Name;
-                int num = int.Parse(item.Value);
-                string[] clist = type.Split('-');
-                string nType = targetType(clist[0]);
-
-                if (dic.ContainsKey(nType))
-                {
-                    dic[nType].Add(type, num);
-                }
-                else
-                {
-                    var itemDic = new Dictionary<string, int> { { type, num } };
-                    dic[nType] = itemDic;
-                }
-            }
-
-            HSSFWorkbook workbook = new HSSFWorkbook();
-
-            foreach (KeyValuePair<string, Dictionary<string, int>> kv in dic)
-            {
-                Dictionary<string, int> dict = kv.Value;
-                Console.WriteLine("kv--key-----........" + kv.Key);
-
-                string tableName = "指标统计表_" + kv.Key;
-                //创建工作表            
-                var sheet = workbook.CreateSheet(tableName);
-                var row = sheet.CreateRow(0);
-                //创建单元格
-                var cellid = row.CreateCell(0);
-                cellid.SetCellValue("指标描述信息");
-                var cellname = row.CreateCell(1);
-                cellname.SetCellValue("指标类型");
-                var cellpwd = row.CreateCell(2);
-                cellpwd.SetCellValue("指标累计值");
-                int x = 1;
-                foreach (KeyValuePair<string, int> kt in dict)
-                {
-                    string type = kt.Key;
-                    int num = kt.Value;
-                    string desc = TargetDesc(type);
-
-                    //Console.WriteLine("ktttt--type-----........" + type);
-                    //Console.WriteLine("ktttt--name-----........" + desc);
-
-                    var rowi = sheet.CreateRow(x);
-                    var cdesc = rowi.CreateCell(0);
-                    cdesc.SetCellValue(desc);
-
-                    var cType = rowi.CreateCell(1);
-                    cType.SetCellValue(type);
-
-                    var cnum = rowi.CreateCell(2);
-                    cnum.SetCellValue(num);
-
-                    x += 1;
-                }
-
-            }
-
-            string txtName = "指标累计信息表_" + "zone" + zoneid + "-day-" + DateTime.Now.ToString("yyyyMMdd");
-
-            string filename = Config.Ins.OutDir + txtName + ".xls";
-            if (File.Exists(filename))
-            {
-                File.Delete(filename);
-            }
-            FileStream file = new FileStream(filename, FileMode.CreateNew, FileAccess.Write);
-            workbook.Write(file);
-            file.Dispose();
-
-            Console.WriteLine("指标累计execl完成........");
-        }
-
-        public static string TargetDesc(string type)
-        {
-            string[] sList = type.Split('-');
-            var mem = Redis.Ins.GetDatabase(1);
-            string desc = "";
-            switch (sList[0])
-            {
-                case "registerUserNum":
-                    desc = "注册人数累计";
-                    break;
-                case "comNewGuideUserNum":
-                    desc = "完成新手引导人数累计";
-                    break;
-                case "unlockbuidId":
-                    string ctx = mem.HashGet(MemKey_Cfg.build, sList[1]);
-                    JObject ctxDic = JObject.Parse(ctx);
-                    string s = ctxDic["name"].ToString();
-                    desc = "累计解锁建筑-" + s + "的人数";
-                    break;
-                case "mainTaskId_ComUserNum"://主线任务id--完成人数
-                    desc = "完成主线任务id-" + sList[1] + "的人数";
-
-                    break;
-
-                case "shopTaskId_ComUserNum":
-                    desc = "完成悬赏任务id-" + sList[1] + "的人数";
-
-                    break;
-                case "shopTaskId_BuyUserNum":
-                    desc = "购买悬赏任务id-" + sList[1] + "的人数";
-
-                    break;
-                case "collegeTaskId_ComUserNum":
-                    desc = "完成学院任务id-" + sList[1] + "的人数";
-
-                    break;
-                case "collegeCouseId_UnlockUserNum":
-                    desc = "解锁学院课程id-" + sList[1] + "的人数";
-
-                    break;
-
-                case "dailyTaskId_ComUserNum":
-                    desc = "完成日常任务id-" + sList[1] + "的人数";
-
-                    break;
-                case "storyGateId_ComUserNum":
-                    desc = "完成剧情关卡id-" + sList[1] + "的人数";
-                    break;
-
-                case "storyGateId_BattleNum":
-                    desc = "剧情关卡id-" + sList[1] + "的挑战次数/通关次数";
-                    break;
-
-                case "HuanLingShiGateId_ComUserNum":
-                    desc = "完成副本唤灵师关卡id-" + sList[1] + "的人数";
-                    break;
-                case "HuanLingShiGateId_BattleNum":
-                    desc = "完成副本唤灵师关卡id-" + sList[1] + "的挑战次数/通关次数";
-                    break;
-                case "WeaponGateId_ComUserNum":
-                    desc = "完成副本武器关卡id-" + sList[1] + "的人数";
-                    break;
-                case "WeaponGateId_BattleNum":
-                    desc = "完成副本武器关卡id-" + sList[1] + "的挑战次数/通关次数";
-                    break;
-
-                case "YanLingGateId_ComUserNum":
-                    desc = "完成副本言灵关卡id-" + sList[1] + "的人数";
-                    break;
-                case "YanLingGateId_BattleNum":
-                    desc = "完成副本言灵关卡id-" + sList[1] + "的挑战次数/通关次数";
-                    break;
-                case "userlevel":
-                    desc = "玩家等级为" + sList[1] + "的人数";
-                    break;
-                case "newUserLotteryDraw_one":
-                    desc = "新手池抽卡单次抽奖的访问频率";
-                    break;
-                case "newUserLotteryDraw_ten":
-                    desc = "新手池抽卡十连抽的访问频率";
-                    break;
-                case "yanLingLotteryDraw_one":
-                    desc = "言灵活动祈愿奖池单次抽奖的访问频率";
-                    break;
-                case "yanLingLotteryDraw_ten":
-                    desc = "言灵活动祈愿奖池十连抽的访问频率";
-                    break;
-                case "weaponLotteryDraw_one":
-                    desc = "武器活动祈愿奖池单次抽奖的访问频率";
-                    break;
-                case "weaponLotteryDraw_ten":
-                    desc = "武器活动祈愿奖池十连抽的访问频率";
-                    break;
-
-                case "commonLotteryDraw_one":
-                    desc = "常驻祈愿奖池单次抽奖的访问频率";
-                    break;
-                case "commonLotteryDraw_ten":
-                    desc = "常驻祈愿奖池十连抽的访问频率";
-                    break;
-
-                case "HuanLingShiLevel_UserNum":
-                    desc = "唤灵师" + sList[1] + "等级为" + sList[2] + "的人数";
-                    break;
-                case "HuanLingShiId_UserNum":
-                    desc = "拥有唤灵师" + sList[1] + "的人数";
-                    break;
-
-                case "YanLingId_UserNum":
-                    desc = "拥有言灵" + sList[1] + "的人数";
-                    break;
-                case "YanLingIdLevel_UserNum":
-                    desc = "言灵" + sList[1] + "等级为" + sList[2] + "的人数";
-                    break;
-                case "WeaponId_UserNum":
-                    desc = "拥有武器" + sList[1] + "的人数";
-                    break;
-                case "WeaponIdLevel_UserNum":
-                    desc = "武器" + sList[1] + "等级为" + sList[2] + "的人数";
-                    break;
-
-            }
-
-
-            return desc;
-        }
-
-        public static string targetType(string t)
-        {
-            string type = "";
-            switch (t)
-            {
-                case "registerUserNum":
-                    type = "registerUserNum";
-                    break;
-                case "comNewGuideUserNum":
-                    type = "comNewGuideUserNum";
-                    break;
-                case "unlockbuidId":
-                    type = "unlockbuidId";
-                    break;
-                case "mainTaskId_ComUserNum"://主线任务id--完成人数
-                    type = "mainTask";
-
-                    break;
-
-                case "shopTaskId_ComUserNum":
-                    type = "shopTask";
-
-                    break;
-                case "shopTaskId_BuyUserNum":
-                    type = "shopTask";
-
-                    break;
-                case "collegeTaskId_ComUserNum":
-                    type = "collegeTask";
-                    break;
-                case "collegeCouseId_UnlockUserNum":
-                    type = "collegeTask";
-
-                    break;
-
-                case "dailyTaskId_ComUserNum":
-                    type = "dailyTask";
-
-                    break;
-                case "storyGateId_ComUserNum":
-                    type = "storyGate";
-                    break;
-
-                case "storyGateId_BattleNum":
-                    type = "storyGate";
-                    break;
-
-                case "HuanLingShiGateId_ComUserNum":
-                    type = "HuanLingShiGate";
-                    break;
-                case "HuanLingShiGateId_BattleNum":
-                    type = "HuanLingShiGate";
-                    break;
-                case "WeaponGateId_ComUserNum":
-                    type = "WeaponGate";
-                    break;
-                case "WeaponGateId_BattleNum":
-                    type = "WeaponGate";
-                    break;
-
-                case "YanLingGateId_ComUserNum":
-                    type = "YanLingGate";
-                    break;
-                case "YanLingGateId_BattleNum":
-                    type = "YanLingGate";
-                    break;
-                case "userlevel":
-                    type = "userlevel";
-                    break;
-                case "newUserLotteryDraw_one":
-                    type = "LotteryDraw";
-                    break;
-                case "newUserLotteryDraw_ten":
-                    type = "LotteryDraw";
-                    break;
-                case "yanLingLotteryDraw_one":
-                    type = "LotteryDraw";
-                    break;
-                case "yanLingLotteryDraw_ten":
-                    type = "LotteryDraw";
-                    break;
-                case "weaponLotteryDraw_one":
-                    type = "LotteryDraw";
-                    break;
-                case "weaponLotteryDraw_ten":
-                    type = "LotteryDraw";
-                    break;
-
-                case "commonLotteryDraw_one":
-                    type = "LotteryDraw";
-                    break;
-                case "commonLotteryDraw_ten":
-                    type = "LotteryDraw";
-                    break;
-
-                case "HuanLingShiLevel_UserNum":
-                    type = "HuanLingShi";
-                    break;
-                case "HuanLingShiId_UserNum":
-                    type = "HuanLingShi";
-                    break;
-
-                case "YanLingId_UserNum":
-                    type = "YanLing";
-                    break;
-                case "YanLingIdLevel_UserNum":
-                    type = "YanLing";
-                    break;
-                case "WeaponId_UserNum":
-                    type = "Weapon";
-                    break;
-                case "WeaponIdLevel_UserNum":
-                    type = "Weapon";
-                    break;
-
-            }
-
-            return type;
-        }
-
-
-
-    }
-}

+ 0 - 252
CSserver/clientTest/Program.cs

@@ -1,252 +0,0 @@
-using System;
-using System.IO;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Threading.Channels;
-using System.Linq;
-using System.Net.Http;
-using System.Collections.Generic;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using System.Net;
-using System.Net.Sockets;
-using System.Diagnostics;
-using ProtoDataBuff;
-using BossServer;
-using pb = global::Google.Protobuf;
-
-namespace clientTest.bossfight
-{
-    
-    class Program
-    {
-        static readonly Random r = new Random();
-
-        /// <summary>
-        /// 消息分发
-        /// </summary>
-        static private Dictionary<eProtocalCommand, Action<sSocketData>> callbacks = new Dictionary<eProtocalCommand, Action<sSocketData>>();
-        static void Main(string[] args)
-        {
-
-            callbacks.Add(eProtocalCommand.ScUpdateProperties, On_update);
-            callbacks.Add(eProtocalCommand.ScGameOver, On_GameOver);
-            var n = 1;
-            var list = new Task[n];
-            for (int i = 0; i < n; i++)
-            {
-                list[i] = Task.Run(async () => await send());
-            }
-            Task.Run(Dispatch);
-
-            Task.WaitAll(list);
-        }
-
-        /// <summary>
-        /// 处理客户端上报伤害请求
-        /// </summary>
-        static void On_update(sSocketData data)
-        {
-            var msg = SCUpdateProperties.Parser.ParseFrom(data._data);
-
-            Console.WriteLine("最新HP: " + msg.BossHp);
-        }
-
-        /// <summary>
-        /// 处理客户端上报伤害请求
-        /// </summary>
-        static void On_GameOver(sSocketData data)
-        {
-            var msg = SCGameOver.Parser.ParseFrom(data._data);
-            Console.WriteLine("战斗结束: " + msg.BossHp);
-            Task.Delay(3000).ContinueWith(t => Environment.Exit(0));
-        }
-        static async Task send()
-        {
-
-            var port = 6002;
-            var endPoint = new IPEndPoint(IPAddress.Parse("192.168.10.86"), port);
-            //var endPoint = new IPEndPoint(IPAddress.Parse("115.159.121.129"), port);
-
-            using (var client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
-            {
-                try
-                {
-                  await  client.ConnectAsync(endPoint);
-                }
-                catch (Exception ee)
-                {
-                    Debug.WriteLine(ee.Message);
-                }
-                var t = Task.Run(() => recv(client));
-                await login(client);
-                while (true)
-                {
-                    try
-                    {
-                        await ReportDamage(client);
-                        Thread.Sleep(r.Next(1000, 3000));
-                    }
-                    catch (Exception e)
-                    {
-                        client.Close();
-                        break;
-                    }
-                }
-            }
-        }
-
-        async static Task login(Socket Sock)
-        {
-            try
-            {
-                var msg = new CSEnterFight() { Uid = Guid.NewGuid().ToString(), Zoneid = 1 };
-                var data = SocketDataToBytes(BytesToSocketData(eProtocalCommand.CsLogin, IMsg2Bytes(msg)));
-                await Sock.SendAsync(new ArraySegment<byte>(data), SocketFlags.None);
-            }
-            catch (Exception e)
-            {
-                Sock.Close();
-            }
-        }
-
-        async static Task ReportDamage(Socket sock)
-        {
-            var msg = new CSFightReportDamage() { Damage = r.Next(-320, 0) };
-
-            var data = SocketDataToBytes(BytesToSocketData(eProtocalCommand.CsReportDamage, IMsg2Bytes(msg)));
-            await sock.SendAsync(new ArraySegment<byte>(data), SocketFlags.None);
-        }
-
-        static byte[] IMsg2Bytes(pb::IMessage msg)
-        {
-            using var ms = new MemoryStream();
-            using var goutstream = new pb::CodedOutputStream(ms);
-            msg.WriteTo(goutstream);
-            goutstream.Flush();
-            ms.Seek(0, SeekOrigin.Begin);
-            return ms.ToArray();
-        }
-
-
-
-        static async void Dispatch()
-        {
-            while (true)
-            {
-                var msg = await recvDataBuffer.Reader.ReadAsync();
-                if (callbacks.ContainsKey(msg._protocallType))
-                {
-                    callbacks[msg._protocallType](msg);
-                }
-                else
-                {
-                    // 未找到消息处理逻辑
-                    Console.WriteLine("未识别的消息类型:" + msg._protocallType.ToString());
-                }
-            }
-        }
-
-        /// <summary>
-        /// 向客户端写入消息
-        /// </summary>
-        static async void WriteToserver(Socket Sock)
-        {
-            while (true)
-            {
-                var msg = await sendDataBuffer.Reader.ReadAsync();
-                var data = SocketDataToBytes(msg);
-                await Sock.SendAsync(new ArraySegment<byte>(data), SocketFlags.None);
-            }
-        }
-        /// <summary>
-        /// 网络结构转数据
-        /// </summary>
-        /// <param name="tmpSocketData"></param>
-        /// <returns></returns>
-        static private byte[] SocketDataToBytes(sSocketData tmpSocketData)
-        {
-            byte[] _tmpBuff = new byte[tmpSocketData.PackLen];
-            byte[] _tmpBuffLength = BitConverter.GetBytes(IPAddress.HostToNetworkOrder(tmpSocketData.PackLen));
-            byte[] _tmpDataLenght = BitConverter.GetBytes(IPAddress.HostToNetworkOrder((Int16)tmpSocketData._protocallType));
-
-            Array.Copy(_tmpBuffLength, 0, _tmpBuff, 0, Constants.HEAD_DATA_LEN);//缓存总长度
-            Array.Copy(_tmpDataLenght, 0, _tmpBuff, Constants.HEAD_DATA_LEN, Constants.HEAD_TYPE_LEN);//协议类型
-            Array.Copy(tmpSocketData._data, 0, _tmpBuff, Constants.HEAD_LEN, tmpSocketData.DataLen());//协议数据
-
-            return _tmpBuff;
-        }
-
-
-        /// <summary>
-        /// 数据转网络结构
-        /// </summary>
-        /// <param name="_protocalType"></param>
-        /// <param name="_data"></param>
-        /// <returns></returns>
-        static private sSocketData BytesToSocketData(eProtocalCommand _protocalType, byte[] _data)
-        {
-            sSocketData tmpSocketData = new sSocketData();
-            tmpSocketData.PackLen = Constants.HEAD_LEN + _data.Length;
-            // tmpSocketData._dataLength = _data.Length;
-            tmpSocketData._protocallType = _protocalType;
-            tmpSocketData._data = _data;
-            return tmpSocketData;
-        }
-
-
-        /// <summary>
-        /// 接收buffer
-        /// </summary>
-        static private Channel<sSocketData> recvDataBuffer = Channel.CreateUnbounded<sSocketData>();
-        /// <summary>
-        /// 发送buffer
-        /// </summary>
-        static private Channel<sSocketData> sendDataBuffer = Channel.CreateUnbounded<sSocketData>();
-
-        /// <summary>
-        /// 接收客户端发来的信息,客户端套接字对象
-        /// </summary>
-        /// <param name="socketclientpara"></param>    
-        static async void recv(Socket socketServer)
-        {
-            socketServer.ReceiveTimeout = 800;                                             // 接收等待超时时间设为800毫秒
-            var _databuffer = new DataBuffer();
-            byte[] arrServerRecMsg = new byte[4096];                                       // 创建一个内存缓冲区,其大小为4k字节  
-            while (true)
-            {
-                try
-                {
-                    var length = await socketServer.ReceiveAsync(new ArraySegment<byte>(arrServerRecMsg), SocketFlags.None);   // 将接收到的信息存入到内存缓冲区,并返回其字节数组的长度    
-                    if (length <= 0)                                                      // 视为客户端已经close连接
-                    {
-                        break;
-                    }
-                    _databuffer.AddBuffer(arrServerRecMsg, length);                        //将收到的数据添加到缓存器中
-                    while (_databuffer.GetData(out sSocketData _socketData))                         //取出一条完整数据
-                    {
-                        await recvDataBuffer.Writer.WriteAsync(_socketData);                 // 放入channel
-                    }
-                    Array.Clear(arrServerRecMsg, 0, length);
-                }
-                catch (SocketException e)
-                {
-                    if (e.ErrorCode == 10060)                                          // 超时的时候错误号码是10060
-                    {
-                        continue;                                                      // 继续等待  
-                    }
-                    break;
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-            }
-
-            socketServer.Close();                                                     // 关闭之前accept出来的和客户端进行通信的套接字 
-        }
-    }
-
-
-}

+ 0 - 268
CSserver/clientTest/Program_Chat.cs

@@ -1,268 +0,0 @@
-using System;
-using System.IO;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Threading.Channels;
-using System.Linq;
-using System.Net.Http;
-using System.Collections.Generic;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using System.Net;
-using System.Net.Sockets;
-using System.Diagnostics;
-using ProtoDataBuff;
-using Chat;
-using pb = global::Google.Protobuf;
-
-namespace clientTest.chat
-{
-    public static class TaskWaitingExtensions
-    {
-        public static async Task<TResult> WaitAsync<TResult>(this Task<TResult> task, TimeSpan timeout)
-        {
-            using (var timeoutCancellationTokenSource = new CancellationTokenSource())
-            {
-                var delayTask = Task.Delay(timeout, timeoutCancellationTokenSource.Token);
-                if (await Task.WhenAny(task, delayTask) == task)
-                {
-                    timeoutCancellationTokenSource.Cancel();
-                    return await task;
-                }
-                throw new TimeoutException("The operation has timed out.");
-            }
-        }
-        public static async Task WaitAsync(this Task task, TimeSpan timeout)
-        {
-            using (var timeoutCancellationTokenSource = new CancellationTokenSource())
-            {
-                var delayTask = Task.Delay(timeout, timeoutCancellationTokenSource.Token);
-                if (await Task.WhenAny(task, delayTask) == task)
-                {
-                    timeoutCancellationTokenSource.Cancel();
-                    return;
-                }
-                throw new TimeoutException("The operation has timed out.");
-            }
-        }
-    }
-    class Program
-    {
-        static readonly string[] names = new string[] { "你猜(尼采)", "黑哥儿(黑格尔)", "孟德四舅" };
-        static readonly string[] texts = new string[] {
-            "一个人可以失败很多次,但是只要他没有开始责怪旁人,他还不是一个失败者。",
-            "这个世界既不是有钱人的世界,也不是有权人的世界,它是有心人的世界。",
-            "伟人之所以伟大,是因为他与别人共处逆境时,别人失去了信心,他却下决心实现自己的目标。",
-            "世上没有绝望的处境,只有对处境绝望的人。 ",
-            "时间就像一张网,你撒在哪里,收获就在哪里。",
-            "心若计较,处处都是怨言;心不计较,时时都是晴天。",
-            "能使我们感觉快乐的,不是环境,而是态度。",
-            "学问是用来实践的,不是拿来用嘴说的。",
-            "自己打败自己是最可悲的失败,自己战胜自己是最可贵的胜利。",
-            "我们得成功,其实成功有一条很简单的定律:“只要站起来的次数比被击倒的次数多一次就行。",
-            " 弱者坐待良机,强者创造时机。",
-            " 没有不会做的事, 只有不想做的事。",
-            "任何的限制, 都是从自己内心开始的。",
-            "只要还有明天, 今日就永远是起跑线。",
-            "既然认准一条道路, 何必去打听要走多久。",
-            "现在站在什么地方不重要,重要的是你往什么方向移动?",
-            "如果什么都想要,只会什么都得不到。"
-
-        };
-        static readonly Random r = new Random();
-
-        /// <summary>
-        /// 消息分发
-        /// </summary>
-        static private Dictionary<eProtocalCommand, Action<sSocketData>> callbacks = new Dictionary<eProtocalCommand, Action<sSocketData>>();
-        static void Main(string[] args)
-        {
-
-            callbacks.Add(eProtocalCommand.ScChatNewMsg, On_update);
-            callbacks.Add(eProtocalCommand.ScChatLogin, On_LoginOver);
-            var n = 1;
-            var list = new Task[n];
-            for (int i = 0; i < n; i++)
-            {
-                list[i] = Task.Run(async () => await send());
-            }
-            Task.Run(Dispatch);
-
-            Task.WaitAll(list);
-        }
-
-        static string ChannelName(ChatChannel c) => c switch
-        {
-            ChatChannel.System => "系统",
-            ChatChannel.World => "世界",
-            ChatChannel.Guild => "公会",
-            _ => "x",
-        };
-
-        /// <summary>
-        /// 处理客户端上报伤害请求
-        /// </summary>
-        static void On_update(sSocketData data)
-        {
-            var msg = SC_ChatNewMsg.Parser.ParseFrom(data._data);
-
-            Console.WriteLine($"[{ChannelName(msg.FromChannel)}]-[{msg.SenderName}] : " + msg.Msg);
-        }
-
-        /// <summary>
-        /// 处理客户端上报伤害请求
-        /// </summary>
-        static void On_LoginOver(sSocketData data)
-        {
-            var msg = SC_ChatLogin.Parser.ParseFrom(data._data);
-            Console.WriteLine("登录结果: " + msg.Code);
-            //Task.Delay(3000).ContinueWith(t => Environment.Exit(0));
-        }
-        static async Task send()
-        {
-
-            var port = 16000;
-
-          //  var endPoint = new IPEndPoint(IPAddress.Parse("192.168.10.17"), port);
-            //var endPoint = new IPEndPoint(IPAddress.Loopback, port);
-            var endPoint = new IPEndPoint(IPAddress.Parse("115.159.121.129"), port);
-
-            using (var client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
-            {
-                try
-                {
-                    await client.ConnectAsync(endPoint);
-                }
-                catch (Exception ee)
-                {
-                    Debug.WriteLine(ee.Message);
-                }
-                var t = Task.Run(() => recv(client));
-                await login(client);
-                var i = 0;
-                while (i++ < 10)
-                {
-                    try
-                    {
-                       
-                        await sendMsg(client);
-                        Thread.Sleep(r.Next(1000, 1100));
-                    }
-                    catch (Exception e)
-                    {
-                        client.Close();
-                        break;
-                    }
-                }
-            }
-        }
-
-        async static Task login(Socket Sock)
-        {
-            try
-            {
-                var msg = new CS_ChatLogin() { Uid = Guid.NewGuid().ToString(), Zoneid = 1, Name = names[r.Next(0, 3)] + r.Next() };
-                var data = sSocketData.FromBytes(eProtocalCommand.CsChatLogin, IMsg2Bytes(msg)).ToBytes();
-                await Sock.SendAsync(new ArraySegment<byte>(data), SocketFlags.None);
-            }
-            catch (Exception e)
-            {
-                Sock.Close();
-            }
-        }
-
-        async static Task sendMsg(Socket sock)
-        {
-            var c = (ChatChannel)r.Next(0, 3);
-
-            var info = texts[r.Next(0, texts.Length)];
-            var msg = new CS_ChatSendMsg() { ToChannel = c, Msg = info };
-            Console.WriteLine($"发送消息{info}");
-            var data = sSocketData.FromBytes(eProtocalCommand.CsChatSendMsg, IMsg2Bytes(msg)).ToBytes();
-            await sock.SendAsync(new ArraySegment<byte>(data), SocketFlags.None);
-        }
-
-        static byte[] IMsg2Bytes(pb::IMessage msg)
-        {
-            
-            using var ms = new MemoryStream();
-            using var goutstream = new pb::CodedOutputStream(ms);
-            msg.WriteTo(goutstream);
-            goutstream.Flush();
-            ms.Seek(0, SeekOrigin.Begin);
-            return ms.ToArray();
-        }
-
-
-
-        static async void Dispatch()
-        {
-            while (true)
-            {
-                var msg = await recvDataBuffer.Reader.ReadAsync();
-                if (callbacks.ContainsKey(msg._protocallType))
-                {
-                    callbacks[msg._protocallType](msg);
-                }
-                else
-                {
-                    // 未找到消息处理逻辑
-                    Console.WriteLine("未识别的消息类型:" + msg._protocallType.ToString());
-                }
-            }
-        }
-
- 
-
-        /// <summary>
-        /// 接收buffer
-        /// </summary>
-        static private Channel<sSocketData> recvDataBuffer = Channel.CreateUnbounded<sSocketData>();
-       
-
-        /// <summary>
-        /// 接收客户端发来的信息,客户端套接字对象
-        /// </summary>
-        /// <param name="socketclientpara"></param>    
-        static async void recv(Socket socketServer)
-        {
-            socketServer.ReceiveTimeout = 800;                                             // 接收等待超时时间设为800毫秒
-            var _databuffer = new DataBuffer();
-            byte[] arrServerRecMsg = new byte[4096];                                       // 创建一个内存缓冲区,其大小为4k字节  
-            while (true)
-            {
-                try
-                {
-                    var length = await socketServer.ReceiveAsync(new ArraySegment<byte>(arrServerRecMsg), SocketFlags.None);   // 将接收到的信息存入到内存缓冲区,并返回其字节数组的长度    
-                    if (length <= 0)                                                      // 视为客户端已经close连接
-                    {
-                        break;
-                    }
-                    _databuffer.AddBuffer(arrServerRecMsg, length);                        //将收到的数据添加到缓存器中
-                    while (_databuffer.GetData(out sSocketData _socketData))                         //取出一条完整数据
-                    {
-                        await recvDataBuffer.Writer.WriteAsync(_socketData);                 // 放入channel
-                    }
-                    Array.Clear(arrServerRecMsg, 0, length);
-                }
-                catch (SocketException e)
-                {
-                    if (e.ErrorCode == 10060)                                          // 超时的时候错误号码是10060
-                    {
-                        continue;                                                      // 继续等待  
-                    }
-                    break;
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-            }
-
-            socketServer.Close();                                                     // 关闭之前accept出来的和客户端进行通信的套接字 
-        }
-    }
-
-
-}

+ 0 - 393
CSserver/clientTest/Program_MultiDup.cs

@@ -1,393 +0,0 @@
-using System;
-using System.IO;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Threading.Channels;
-using System.Linq;
-using System.Net.Http;
-using System.Collections.Generic;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using System.Net;
-using System.Net.Sockets;
-using System.Diagnostics;
-using ProtoDataBuff;
-using MultiDup;
-using pb = global::Google.Protobuf;
-
-namespace clientTest.multiDup
-
-{
-
-    class Program
-    {
-        static readonly Random r = new Random();
-
-        /// <summary>
-        /// 消息分发
-        /// </summary>
-        static private Dictionary<eProtocalCommand, Action<sSocketData>> callbacks = new Dictionary<eProtocalCommand, Action<sSocketData>>();
-        static void Main(string[] args)
-        {
-
-            callbacks.Add(eProtocalCommand.ScMdGetRoomList, On_update);
-            callbacks.Add(eProtocalCommand.ScMdEnterRoom, On_enter);
-            callbacks.Add(eProtocalCommand.ScMdBeginDup, On_begin);
-            callbacks.Add(eProtocalCommand.ScMdLeaveRoom, On_GameOver);
-            callbacks.Add(eProtocalCommand.ScMdCreateRoom, On_CreateRoom);
-            var n = 1;
-            var list = new Task[n];
-            for (int i = 0; i < n; i++)
-            {
-                list[i] = Task.Run(async () => await send());
-            }
-            Task.Run(Dispatch);
-
-            Task.WaitAll(list);
-        }
-
-
-        #region 收到消息处理
-        /// <summary>
-        /// 更新房间列表
-        /// </summary>
-        static void On_update(sSocketData data)
-        {
-            Console.WriteLine("最新房间列表: {}");
-        }
-        /// <summary>
-        /// 客户端进入房间
-        /// </summary>
-        static void On_CreateRoom(sSocketData data)
-        {
-            Console.WriteLine("xxx创建了房间.");
-        }
-        /// <summary>
-        /// 客户端进入房间
-        /// </summary>
-        static void On_begin(sSocketData data)
-        {
-            var msg = SC_MD_BeginDup.Parser.ParseFrom(data._data);
-
-            Console.WriteLine("xxx开始了游戏.");
-            Console.WriteLine($"正在连接{msg.Battleserver}:{msg.BattleServerPort}");
-
-            var endPoint = new IPEndPoint(IPAddress.Parse(msg.Battleserver), msg.BattleServerPort);
-            //var endPoint = new IPEndPoint(IPAddress.Loopback, port);
-            //var endPoint = new IPEndPoint(IPAddress.Parse("115.159.121.129"), port);
-
-            using (var client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
-            {
-                try
-                {
-                    client.ConnectAsync(endPoint).Wait();
-                }
-                catch (Exception ee)
-                {
-                    Debug.WriteLine(ee.Message);
-                }
-
-                if (client.Connected)
-                {
-                    Thread.Sleep(2000);
-                    var t = Task.Run(() => recv(client));                    // 开启recv监听协程
-                    try
-                    {
-                        BtLogIn(client).Wait();
-                        // 连上来之后, 创建房间, 开始游戏, 退出房间
-                        BtBroadCast(client).Wait();
-                        BtBroadCast(client).Wait();
-                        BtBroadCast(client).Wait();
-                        Console.WriteLine("已经广播3次,exiting.");
-                    }
-                    catch (Exception e)
-                    {
-                        client.Close();
-                    }
-                    finally
-                    {
-                        client.Close();
-                    }
-
-                }
-                else {
-                    Console.WriteLine("连接失败!");
-                }
-
-            }
-
-        }
-        /// <summary>
-        /// 客户端进入房间
-        /// </summary>
-        static void On_enter(sSocketData data)
-        {
-            Console.WriteLine("xx进入了房间.");
-        }
-        /// <summary>
-        /// 处理客户端上报伤害请求
-        /// </summary>
-        static void On_GameOver(sSocketData data)
-        {
-            Console.WriteLine("xx已离开房间! ");
-            //Task.Delay(3000).ContinueWith(t => Environment.Exit(0));
-        }
-
-        #endregion
-
-
-        async static Task BtLogIn(Socket sock)
-        {
-            try
-            {
-                var msg = new CS_BT_Login() { Msg = $"来自客户端{Environment.UserDomainName}的登录,{DateTime.Now.ToString()}", Uid = Environment.MachineName, Zoneid = 1 };
-                var data = SocketDataToBytes(BytesToSocketData(eProtocalCommand.CsBtLogin, IMsg2Bytes(msg)));
-                await sock.SendAsync(new ArraySegment<byte>(data), SocketFlags.None);
-            }
-            catch (Exception e)
-            {
-                sock.Close();
-            }
-        }
-
-        async static Task BtBroadCast(Socket sock)
-        {
-            try
-            {
-                var msg = new CS_BT_BroadCast() { Msg = $"来自客户端{Environment.UserDomainName}的广播,{DateTime.Now.ToString()}", SenderUid = Environment.MachineName, Zoneid = 1 };
-                var data = SocketDataToBytes(BytesToSocketData(eProtocalCommand.CsBtBroadCast, IMsg2Bytes(msg)));
-                await sock.SendAsync(new ArraySegment<byte>(data), SocketFlags.None);
-            }
-            catch (Exception e)
-            {
-                sock.Close();
-            }
-        }
-
-        static async Task send()
-        {
-
-            var port = 6004;
-
-            var endPoint = new IPEndPoint(IPAddress.Parse("192.168.10.17"), port);
-            //var endPoint = new IPEndPoint(IPAddress.Loopback, port);
-            //var endPoint = new IPEndPoint(IPAddress.Parse("115.159.121.129"), port);
-
-            using (var client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
-            {
-                try
-                {
-                    await client.ConnectAsync(endPoint);
-                }
-                catch (Exception ee)
-                {
-                    Debug.WriteLine(ee.Message);
-                }
-
-
-                var t = Task.Run(() => recv(client));                    // 开启recv监听协程
-                try
-                {
-                    // 连上来之后, 创建房间, 开始游戏, 退出房间
-                    CreateRoom(client).Wait();
-                    Thread.Sleep(r.Next(1000, 3000));
-                    await BeginGame(client);
-                    Thread.Sleep(r.Next(1000, 3000));
-                    Console.ReadKey();
-                    await LeaveGame(client);
-                    Thread.Sleep(r.Next(1000, 3000));
-                }
-                catch (Exception e)
-                {
-                    client.Close();
-                }
-                finally
-                {
-                    client.Close();
-                }
-
-            }
-        }
-        /// <summary>
-        /// 创建房间
-        /// </summary>
-        /// <param name="Sock"></param>
-        /// <returns></returns>
-        async static Task CreateRoom(Socket Sock)
-        {
-            try
-            {
-                var msg = new CS_MD_CreateRoom() { Uid = Environment.MachineName, Zoneid = 1 };
-                var data = SocketDataToBytes(BytesToSocketData(eProtocalCommand.CsMdCreateRoom, IMsg2Bytes(msg)));
-                await Sock.SendAsync(new ArraySegment<byte>(data), SocketFlags.None);
-            }
-            catch (Exception e)
-            {
-                Sock.Close();
-            }
-        }
-        /// <summary>
-        /// 开始游戏
-        /// </summary>
-        /// <param name="sock"></param>
-        /// <returns></returns>
-        async static Task BeginGame(Socket sock)
-        {
-            var msg = new CS_MD_BeginDup() { Uid = Environment.MachineName, Zoneid = 1 };
-
-            var data = SocketDataToBytes(BytesToSocketData(eProtocalCommand.CsMdBeginDup, IMsg2Bytes(msg)));
-            await sock.SendAsync(new ArraySegment<byte>(data), SocketFlags.None);
-        }
-
-        /// <summary>
-        /// 离开游戏
-        /// </summary>
-        /// <param name="sock"></param>
-        /// <returns></returns>
-        async static Task LeaveGame(Socket sock)
-        {
-            var msg = new CS_MD_LeaveRoom() { Uid = Environment.MachineName, Zoneid = 1 };
-
-            var data = SocketDataToBytes(BytesToSocketData(eProtocalCommand.CsMdLeaveRoom, IMsg2Bytes(msg)));
-            await sock.SendAsync(new ArraySegment<byte>(data), SocketFlags.None);
-        }
-
-
-        #region 消息收发
-
-        static byte[] IMsg2Bytes(pb::IMessage msg)
-        {
-            using var ms = new MemoryStream();
-            using var goutstream = new pb::CodedOutputStream(ms);
-            msg.WriteTo(goutstream);
-            goutstream.Flush();
-            ms.Seek(0, SeekOrigin.Begin);
-            return ms.ToArray();
-        }
-
-
-
-        static async void Dispatch()
-        {
-            while (true)
-            {
-                var msg = await recvDataBuffer.Reader.ReadAsync();
-                if (callbacks.ContainsKey(msg._protocallType))
-                {
-                    callbacks[msg._protocallType](msg);
-                }
-                else
-                {
-                    // 未找到消息处理逻辑
-                    Console.WriteLine("未识别的消息类型:" + msg._protocallType.ToString());
-                }
-            }
-            Console.WriteLine("dispatch 已退出");
-        }
-
-        /// <summary>
-        /// 向客户端写入消息
-        /// </summary>
-        static async void WriteToserver(Socket Sock)
-        {
-            while (true)
-            {
-                var msg = await sendDataBuffer.Reader.ReadAsync();
-                var data = SocketDataToBytes(msg);
-                await Sock.SendAsync(new ArraySegment<byte>(data), SocketFlags.None);
-            }
-        }
-        /// <summary>
-        /// 网络结构转数据
-        /// </summary>
-        /// <param name="tmpSocketData"></param>
-        /// <returns></returns>
-        static private byte[] SocketDataToBytes(sSocketData tmpSocketData)
-        {
-            byte[] _tmpBuff = new byte[tmpSocketData.PackLen];
-            byte[] _tmpBuffLength = BitConverter.GetBytes(IPAddress.HostToNetworkOrder(tmpSocketData.PackLen));
-            byte[] _tmpDataLenght = BitConverter.GetBytes(IPAddress.HostToNetworkOrder((Int16)tmpSocketData._protocallType));
-
-            Array.Copy(_tmpBuffLength, 0, _tmpBuff, 0, Constants.HEAD_DATA_LEN);//缓存总长度
-            Array.Copy(_tmpDataLenght, 0, _tmpBuff, Constants.HEAD_DATA_LEN, Constants.HEAD_TYPE_LEN);//协议类型
-            Array.Copy(tmpSocketData._data, 0, _tmpBuff, Constants.HEAD_LEN, tmpSocketData.DataLen());//协议数据
-
-            return _tmpBuff;
-        }
-
-
-        /// <summary>
-        /// 数据转网络结构
-        /// </summary>
-        /// <param name="_protocalType"></param>
-        /// <param name="_data"></param>
-        /// <returns></returns>
-        static private sSocketData BytesToSocketData(eProtocalCommand _protocalType, byte[] _data)
-        {
-            sSocketData tmpSocketData = new sSocketData();
-            tmpSocketData.PackLen = Constants.HEAD_LEN + _data.Length;
-            //tmpSocketData._dataLength = _data.Length;
-            tmpSocketData._protocallType = _protocalType;
-            tmpSocketData._data = _data;
-            return tmpSocketData;
-        }
-
-
-        /// <summary>
-        /// 接收buffer
-        /// </summary>
-        static private Channel<sSocketData> recvDataBuffer = Channel.CreateUnbounded<sSocketData>();
-        /// <summary>
-        /// 发送buffer
-        /// </summary>
-        static private Channel<sSocketData> sendDataBuffer = Channel.CreateUnbounded<sSocketData>();
-
-        /// <summary>
-        /// 接收客户端发来的信息,客户端套接字对象
-        /// </summary>
-        /// <param name="socketclientpara"></param>    
-        static async void recv(Socket socketServer)
-        {
-            socketServer.ReceiveTimeout = 800;                                             // 接收等待超时时间设为800毫秒
-            var _databuffer = new DataBuffer();
-            byte[] arrServerRecMsg = new byte[4096];                                       // 创建一个内存缓冲区,其大小为4k字节  
-            while (true)
-            {
-                try
-                {
-                    var length = await socketServer.ReceiveAsync(new ArraySegment<byte>(arrServerRecMsg), SocketFlags.None);   // 将接收到的信息存入到内存缓冲区,并返回其字节数组的长度    
-                    if (length <= 0)                                                      // 视为客户端已经close连接
-                    {
-                        break;
-                    }
-                    _databuffer.AddBuffer(arrServerRecMsg, length);                        //将收到的数据添加到缓存器中
-                    while (_databuffer.GetData(out sSocketData _socketData))                         //取出一条完整数据
-                    {
-                        Console.WriteLine(socketServer.GetHashCode().ToString() + " recv: " + _socketData._protocallType);
-                        await recvDataBuffer.Writer.WriteAsync(_socketData);                 // 放入channel
-                    }
-                    Array.Clear(arrServerRecMsg, 0, length);
-                }
-                catch (SocketException e)
-                {
-                    if (e.ErrorCode == 10060)                                          // 超时的时候错误号码是10060
-                    {
-                        continue;                                                      // 继续等待  
-                    }
-                    break;
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-            }
-            Console.WriteLine(socketServer.GetHashCode().ToString() + "recv 已退出");
-            socketServer.Close();                                                     // 关闭之前accept出来的和客户端进行通信的套接字 
-        }
-
-        #endregion
-    }
-
-
-}

+ 0 - 18
CSserver/clientTest/clientTest.csproj

@@ -1,18 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>net6.0</TargetFramework>
-    <StartupObject>clientTest.chat.Program</StartupObject>
-  </PropertyGroup>
-
-  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
-    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\Lib1\Lib1.csproj" />
-    <ProjectReference Include="..\PBReferens\PBReferens.csproj" />
-  </ItemGroup>
-
-</Project>

+ 0 - 85
CSserver/csserver.sln

@@ -1,85 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.0.31825.309
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ChatServer", "csserver\ChatServer.csproj", "{ADB21DA6-E0B4-4218-85F4-59351E635488}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BossServer", "BossServer\BossServer.csproj", "{005AEE5F-3437-4285-9BAA-5B056D07AB5B}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "clientTest", "clientTest\clientTest.csproj", "{5FB5814B-6E21-402C-98F3-2E2DA96A8772}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PBReferens", "PBReferens\PBReferens.csproj", "{03F69CA0-352E-4F6B-A683-5C395F29A3EE}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lib1", "Lib1\Lib1.csproj", "{D49EB2E3-949C-48AF-BFCA-E07B171E2715}"
-EndProject
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Libs", "Libs", "{02C64572-AF0B-4AE0-8685-3836A0FD1C1E}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataTransfer", "DataTransfer\DataTransfer.csproj", "{201B65E5-35B6-4AF0-B4DF-8334484BC804}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "MultiDup", "MultiDup\MultiDup.csproj", "{25F90738-ECAE-40CC-883F-86A75E6C253B}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BattleRoom", "BattleRoom\BattleRoom.csproj", "{B5253393-934B-4481-B7E3-5B9F4715EC00}"
-EndProject
-Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StatisticsTransfer", "StatisticsTransfer\StatisticsTransfer.csproj", "{110B13DC-8B5F-4114-8B08-029D9EADF149}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RedisTransfer", "RedisTransfer\RedisTransfer.csproj", "{72014351-F8BC-4D84-90A9-095C414D36B5}"
-EndProject
-Global
-	GlobalSection(SolutionConfigurationPlatforms) = preSolution
-		Debug|Any CPU = Debug|Any CPU
-		Release|Any CPU = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(ProjectConfigurationPlatforms) = postSolution
-		{ADB21DA6-E0B4-4218-85F4-59351E635488}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{ADB21DA6-E0B4-4218-85F4-59351E635488}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{ADB21DA6-E0B4-4218-85F4-59351E635488}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{ADB21DA6-E0B4-4218-85F4-59351E635488}.Release|Any CPU.Build.0 = Release|Any CPU
-		{005AEE5F-3437-4285-9BAA-5B056D07AB5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{005AEE5F-3437-4285-9BAA-5B056D07AB5B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{005AEE5F-3437-4285-9BAA-5B056D07AB5B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{005AEE5F-3437-4285-9BAA-5B056D07AB5B}.Release|Any CPU.Build.0 = Release|Any CPU
-		{5FB5814B-6E21-402C-98F3-2E2DA96A8772}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{5FB5814B-6E21-402C-98F3-2E2DA96A8772}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{5FB5814B-6E21-402C-98F3-2E2DA96A8772}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{5FB5814B-6E21-402C-98F3-2E2DA96A8772}.Release|Any CPU.Build.0 = Release|Any CPU
-		{03F69CA0-352E-4F6B-A683-5C395F29A3EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{03F69CA0-352E-4F6B-A683-5C395F29A3EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{03F69CA0-352E-4F6B-A683-5C395F29A3EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{03F69CA0-352E-4F6B-A683-5C395F29A3EE}.Release|Any CPU.Build.0 = Release|Any CPU
-		{D49EB2E3-949C-48AF-BFCA-E07B171E2715}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{D49EB2E3-949C-48AF-BFCA-E07B171E2715}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{D49EB2E3-949C-48AF-BFCA-E07B171E2715}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{D49EB2E3-949C-48AF-BFCA-E07B171E2715}.Release|Any CPU.Build.0 = Release|Any CPU
-		{201B65E5-35B6-4AF0-B4DF-8334484BC804}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{201B65E5-35B6-4AF0-B4DF-8334484BC804}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{201B65E5-35B6-4AF0-B4DF-8334484BC804}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{201B65E5-35B6-4AF0-B4DF-8334484BC804}.Release|Any CPU.Build.0 = Release|Any CPU
-		{25F90738-ECAE-40CC-883F-86A75E6C253B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{25F90738-ECAE-40CC-883F-86A75E6C253B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{25F90738-ECAE-40CC-883F-86A75E6C253B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{25F90738-ECAE-40CC-883F-86A75E6C253B}.Release|Any CPU.Build.0 = Release|Any CPU
-		{B5253393-934B-4481-B7E3-5B9F4715EC00}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{B5253393-934B-4481-B7E3-5B9F4715EC00}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{B5253393-934B-4481-B7E3-5B9F4715EC00}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{B5253393-934B-4481-B7E3-5B9F4715EC00}.Release|Any CPU.Build.0 = Release|Any CPU
-		{110B13DC-8B5F-4114-8B08-029D9EADF149}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{110B13DC-8B5F-4114-8B08-029D9EADF149}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{110B13DC-8B5F-4114-8B08-029D9EADF149}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{110B13DC-8B5F-4114-8B08-029D9EADF149}.Release|Any CPU.Build.0 = Release|Any CPU
-		{72014351-F8BC-4D84-90A9-095C414D36B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{72014351-F8BC-4D84-90A9-095C414D36B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{72014351-F8BC-4D84-90A9-095C414D36B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{72014351-F8BC-4D84-90A9-095C414D36B5}.Release|Any CPU.Build.0 = Release|Any CPU
-	EndGlobalSection
-	GlobalSection(SolutionProperties) = preSolution
-		HideSolutionNode = FALSE
-	EndGlobalSection
-	GlobalSection(NestedProjects) = preSolution
-		{03F69CA0-352E-4F6B-A683-5C395F29A3EE} = {02C64572-AF0B-4AE0-8685-3836A0FD1C1E}
-		{D49EB2E3-949C-48AF-BFCA-E07B171E2715} = {02C64572-AF0B-4AE0-8685-3836A0FD1C1E}
-	EndGlobalSection
-	GlobalSection(ExtensibilityGlobals) = postSolution
-		SolutionGuid = {C4A6CBBD-8341-4284-B0F8-D6CEC4B9B603}
-	EndGlobalSection
-EndGlobal

+ 0 - 13
CSserver/csserver/ChatServer.csproj

@@ -1,13 +0,0 @@
-<Project Sdk="Microsoft.NET.Sdk">
-
-  <PropertyGroup>
-    <OutputType>Exe</OutputType>
-    <TargetFramework>net6.0</TargetFramework>
-  </PropertyGroup>
-
-  <ItemGroup>
-    <ProjectReference Include="..\Lib1\Lib1.csproj" />
-    <ProjectReference Include="..\PBReferens\PBReferens.csproj" />
-  </ItemGroup>
-
-</Project>

+ 0 - 179
CSserver/csserver/Program.cs

@@ -1,179 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Net.Sockets;
-using System.Text;
-using System.Threading;
-using System.Threading.Tasks;
-using System.Threading.Channels;
-using Newtonsoft.Json;
-using Newtonsoft.Json.Linq;
-using ProtoDataBuff;
-using ChatServer.server;
-using Chat;
-namespace ChatServer
-{
-    class Program
-    {
-        const int port = 16000;                                                  // 端口号(用来监听的)
-        static Socket SocketWatch = null;                                       // 创建一个和客户端通信的套接字
-        /// <summary>
-        /// peer管理集合
-        /// </summary>
-        static public Dictionary<string, Peer> Peers = new Dictionary<string, Peer>();
-        /// <summary>
-        /// 消息分发
-        /// </summary>
-        private static Dictionary<eProtocalCommand, Action<string, sSocketData>> callbacks = new Dictionary<eProtocalCommand, Action<string, sSocketData>>();
-        static void Main(string[] args)
-        {
-            IPAddress ip = IPAddress.Any;
-            IPEndPoint ipe = new IPEndPoint(ip, port);                         //将IP地址和端口号绑定到网络节点point上  
-
-            //  callbacks.Add(eProtocalCommand.CsChatLogin, On_Login);             // 绑定处理逻辑
-            callbacks.Add(eProtocalCommand.CsChatSendMsg, On_SendMessage);     // 绑定处理逻辑
-
-            //定义一个套接字用于监听客户端发来的消息,包含三个参数(IP4寻址协议,流式连接,Tcp协议)  
-            SocketWatch = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
-            SocketWatch.Bind(ipe);                                             // 监听绑定的网络节点           
-            SocketWatch.Listen(20);                                            // 将套接字的监听队列长度限制为20    
-
-            Console.WriteLine("开启监听......");
-            Console.WriteLine("ctrl + c 退出程序......");
-            Task.Run(MsgLoop);
-            Task.Run(WatchConnecting).Wait();
-            Console.ReadLine();
-            SocketWatch.Close();
-        }
-
-        internal static void AddPeer(Peer p)
-        {
-            lock (Peers)
-            {
-                Peers.Add(p.Key, p);
-            }
-        }
-        internal static void RemovePeer(string key)
-        {
-            lock (Peers)
-            {
-                Peers.Remove(key);
-            }
-        }
-
-
-        /// <summary>
-        /// 发送消息
-        /// </summary>
-        /// <param name="peerId"></param>
-        /// <param name="data"></param>
-        static void On_SendMessage(string peerKey, sSocketData data)
-        {
-            if (Peers.TryGetValue(peerKey, out Peer p))
-            {
-                var msg = CS_ChatSendMsg.Parser.ParseFrom(data._data);
-                if (null != msg &&  msg.Msg.Trim().Length>0)
-                {
-                    var rdb = Redis.Ins.GetDatabase(1);
-                    var sd = new SC_ChatNewMsg() { FromChannel = msg.ToChannel, SenderName = p.Name, Msg = msg.Msg, SenderUid = p.UID };
-                    switch (msg.ToChannel)
-                    {
-                        case ChatChannel.System:    // 这个一般是客户端生成的, 除非是GM号,一般人发送这种消息拒绝转发.
-                            if (rdb.HashExists(MemKey_Cfg.GM_uids_hash, p.UID))
-                            {
-                                Peers.Values.ToList().ForEach(_p => _p.SendEvent(eProtocalCommand.ScChatNewMsg, sd));
-                            }
-                            else
-                            {
-                                Console.WriteLine($"非GM用户({p.UID})发送了系统消息转发请求!");
-                            }
-                            break;
-                        case ChatChannel.World:
-                            Peers.Values.ToList().ForEach(_p => _p.SendEvent(eProtocalCommand.ScChatNewMsg, sd));
-                            break;
-                        case ChatChannel.Guild:
-                            if (rdb.HashExists(MemKey_User.Guild(p.UID, p.zoneid), "guildId"))
-                            {
-                                var a = rdb.HashGet(MemKey_User.Guild(p.UID, p.zoneid), "guildId").ToString();
-                                var guildId = int.Parse(a);
-                                if (guildId > 0)
-                                {
-                                    JArray jArray = JArray.Parse(rdb.HashGet(MemKey_Game.Guild(p.zoneid, guildId), "members").ToString());
-                                    if (jArray.Count > 0)
-                                    {
-                                        var keys = from j in jArray select j.ToString() + ":" + p.zoneid;
-                                        Peers.Where(kv => keys.Contains(kv.Key)).ToList().ForEach(kv => kv.Value.SendEvent(eProtocalCommand.ScChatNewMsg, sd));
-                                    }
-
-                                }
-                                else
-                                {
-                                    Console.WriteLine($"找不到用户({p.UID})的公会信息");
-                                }
-                            }
-                            else
-                            {
-                                Console.WriteLine($"找不到用户({p.UID})的公会信息");
-                            }
-
-                            break;
-
-                        case ChatChannel.Single:
-                            Peers.Values.Where(peer =>peer.Name == msg.ToNickName).ToList().ForEach(_p => _p.SendEvent(eProtocalCommand.ScChatNewMsg, sd));
-                            break;
-                        default:
-                            Console.WriteLine("chat:未知的发送目标");
-                            break;
-                    }
-                }
-            }
-        }
-
-        /// <summary>
-        /// 监听客户端发来的请求  
-        /// </summary>
-        async static Task WatchConnecting()
-        {
-            while (true)                                                                 // 持续不断监听客户端发来的请求     
-            {
-                Socket connection;
-                try
-                {
-                    connection = await SocketWatch.AcceptAsync();
-                }
-                catch (Exception ex)
-                {
-                    Console.WriteLine(ex.Message);                                       // 提示套接字监听异常     
-                    break;
-                }
-
-                var p = new Peer(connection);
-
-            }
-        }
-
-
-
-        /// <summary>
-        /// 客户端消息队列
-        /// </summary>
-        public static Channel<KeyValuePair<string, sSocketData>> MsgChannel = Channel.CreateBounded<KeyValuePair<string, sSocketData>>(1000);
-
-        static async void MsgLoop()
-        {
-            while (true)
-            {
-                var msg = await MsgChannel.Reader.ReadAsync();
-                if (callbacks.ContainsKey(msg.Value._protocallType))
-                {
-                    callbacks[msg.Value._protocallType](msg.Key, msg.Value);
-                }
-                else
-                {
-                    // 未找到消息处理逻辑
-                }
-            }
-        }
-    }
-}

+ 0 - 197
CSserver/csserver/server/Peer.cs

@@ -1,197 +0,0 @@
-using ProtoDataBuff;
-using System;
-using System.IO;
-using System.Collections.Generic;
-using System.Net.Sockets;
-using System.Threading.Channels;
-using System.Threading.Tasks;
-using Chat;
-using pb = global::Google.Protobuf;
-namespace ChatServer.server
-{
-    /// <summary>
-    /// 客户端状态
-    /// </summary>
-    enum ClientState
-    {
-        /// <summary>
-        /// 已连接,未登录
-        /// </summary>
-        Connected,
-        /// <summary>
-        /// 已登录
-        /// </summary>
-        Logined,
-        /// <summary>
-        /// 已离开
-        /// </summary>
-        Leaved
-    }
-    class Peer
-    {
-        /// <summary>
-        /// 客户端状态字段
-        /// </summary>
-        public ClientState CurrentState = ClientState.Connected;
-
-        /// <summary>
-        /// peer的唯一Id
-        /// </summary>
-        public readonly int Id;
-
-        /// <summary>
-        /// socket连接
-        /// </summary>
-        public readonly Socket Sock;
-        /// <summary>
-        /// 玩家ID
-        /// </summary>
-        public string UID { get; private set; } = "";
-        /// <summary>
-        /// 分区id
-        /// </summary>
-        public int zoneid { get; private set; } = 0;
-        public string Name { get; private set; } = "";
-        /// <summary>
-        /// 线程安全的peer计数器
-        /// </summary>
-        private volatile static int _UniqPeerId = 0;
-        /// <summary>
-        /// 构造函数
-        /// </summary>
-        /// <param name="sock"></param>
-        public Peer(Socket sock)
-        {
-            this.Sock = sock;
-            Sock.ReceiveTimeout = 1500;                                         // 接收等待超时时间设为1.5秒 
-            Id = _UniqPeerId++;
-            var t = Task.Run(() => recv(Sock));                                 // 新建接收线程 
-            var tcs = Task.Run(WriteToClient);                                  // 向客户端发送消息线程 
-        }
-
-        public string Key => UID + ":" + zoneid;
-        public void OnLogin(sSocketData data)
-        {
-            var msg = CS_ChatLogin.Parser.ParseFrom(data._data);
-            if (msg != null)
-            {
-                this.UID = msg.Uid;
-                this.zoneid = msg.Zoneid;
-                this.Name = msg.Name;
-                Program.AddPeer(this);
-                this.SendEvent(eProtocalCommand.ScChatLogin, new SC_ChatLogin() { Code = SC_ChatLogin.Types.ErrorCode.Ok });
-            }
-        }
-        public void Close()
-        {
-            this.CurrentState = ClientState.Leaved;                              // 关闭接收窗口
-            Program.RemovePeer(this.Key);                                      // 从房间中移除自己 
-            this.sendDataBuffer.Reader.Completion
-                .ContinueWith(t =>
-                Task.Delay(5000).ContinueWith(t1 => Sock.Close())
-                );                                                               // 延迟5秒关闭套接字
-        }
-
-
-        /// <summary>
-        /// 向客户端发送事件
-        /// </summary>
-        public void SendEvent(eProtocalCommand msgType, pb::IMessage msg)
-        {
-            SendToClient(msgType, msg);
-        }
-
-        /// <summary>
-        /// 向客户端发送消息
-        /// </summary>
-        /// <param name="msgType"></param>
-        /// <param name="msg"></param>
-        void SendToClient(eProtocalCommand msgType, pb::IMessage msg)
-        {
-            using var ms = new MemoryStream();
-            using var os = new pb::CodedOutputStream(ms);
-            msg.WriteTo(os);
-            os.Flush();
-            ms.Seek(0, SeekOrigin.Begin);
-            var sdata = sSocketData.FromBytes(msgType, ms.ToArray());
-            sendDataBuffer.Writer.WriteAsync(sdata).AsTask().Wait();
-        }
-
-
-        /// <summary>
-        /// 向客户端写入消息
-        /// </summary>
-        async void WriteToClient()
-        {
-            while (true)
-            {
-                try
-                {
-                    var msg = await sendDataBuffer.Reader.ReadAsync();
-                    await Sock.SendAsync(new ArraySegment<byte>(msg.ToBytes()), SocketFlags.None);
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-
-            }
-            Close();
-        }
-
-
-        /// <summary>
-        /// 发送buffer
-        /// </summary>
-        private Channel<sSocketData> sendDataBuffer = Channel.CreateUnbounded<sSocketData>();
-
-
-        /// <summary>
-        /// 接收客户端发来的信息,客户端套接字对象
-        /// </summary>
-        /// <param name="socketclientpara"></param>    
-        async void recv(Socket socketServer)
-        {
-
-            var _databuffer = new DataBuffer();
-            byte[] arrServerRecMsg = new byte[4096];                                       // 创建一个内存缓冲区,其大小为4k字节  
-            while (true)
-            {
-                try
-                {
-                    var length = await socketServer.ReceiveAsync(new ArraySegment<byte>(arrServerRecMsg), SocketFlags.None);   // 将接收到的信息存入到内存缓冲区,并返回其字节数组的长度    
-                    if (length <= 0 || CurrentState == ClientState.Leaved)                                                     // 视为客户端已经close连接
-                    {
-                        break;
-                    }
-                    _databuffer.AddBuffer(arrServerRecMsg, length);                                  //将收到的数据添加到缓存器中
-                    while (_databuffer.GetData(out sSocketData _socketData))                         //取出一条完整数据
-                    {
-                        if (eProtocalCommand.CsChatLogin == _socketData._protocallType)
-                        {
-                            OnLogin(_socketData);
-                            continue;
-                        }
-                        await Program.MsgChannel.Writer.WriteAsync(new KeyValuePair<string, sSocketData>(this.Key, _socketData));    // 放入channel
-                    }
-                    Array.Clear(arrServerRecMsg, 0, length);
-                }
-                catch (SocketException e)
-                {
-                    if (e.ErrorCode == 10060)                                          // 超时的时候错误号码是10060
-                    {
-                        continue;                                                      // 继续等待  
-                    }
-                    break;
-                }
-                catch (Exception)
-                {
-                    break;
-                }
-            }
-
-            Close();                                                                  // 关闭
-        }
-
-    }
-}