Exemplo n.º 1
0
        /// <summary>
        /// 查找按钮点击响应
        /// </summary>
        protected void findButton_Click(object sender, EventArgs e)
        {
            Server server = Session["Server"] as Server;

            if (server == null)
            {
                this.resultLabel.Text = "错误:无法获取服务器";
                return;
            }

            Dictionary <int, object[]> userDictionary = new Dictionary <int, object[]>();

            DatabaseAssistant.Execute
            (
                reader =>
            {
                while (reader.Read())
                {
                    int uid   = reader.GetInt32(0);
                    int level = reader.GetInt32(1);

                    if (level < 3)
                    {
                        continue;
                    }

                    byte[]  buffer = new byte[reader.GetBytes(2, 0, null, 0, int.MaxValue)];

                    reader.GetBytes(2, 0, buffer, 0, buffer.Length);

                    using (MemoryStream stream = new MemoryStream(buffer))
                    {
                        try
                        {
                            mw.OtherInfo othern = ProtoSerializer.Instance.Deserialize(stream, null, typeof(mw.OtherInfo)) as mw.OtherInfo;

                            if (othern == null ||
                                othern.roleexInfo == null ||
                                othern.roleexInfo.user_data == null)
                            {
                                continue;
                            }

                            string[] dataSet = othern.roleexInfo.user_data.Split(';');

                            if (dataSet.Length > 10 &&
                                (dataSet[8] == "0" ||
                                 dataSet[9] == "0" ||
                                 dataSet[10] == "0"))
                            {
                                userDictionary.Add(uid, new object[] { reader.GetString(3), level });
                            }
                        }

                        catch (Exception exception)
                        {
                            continue;
                        }
                    }
                }
            },
                server.DatabaseAddress,
                server.DatabasePort,
                server.DatabaseCharSet,
                server.GameDatabase,
                server.DatabaseUserId,
                server.DatabasePassword,
                "SELECT `other_info`.`uid`,`card_package`.`team_level`,`other_info`.`other_data`,`user`.`uname` FROM `other_info`,`user`,`card_package` WHERE `other_info`.`uid`=`user`.`uid` && `other_info`.`uid`=`card_package`.`uid`;"
            );

            if (userDictionary.Count == 0)
            {
                this.resultLabel.Text = "没有找到";
            }
            else
            {
                StringBuilder buider = new StringBuilder(string.Format("找到 {0} 个新手引导错误玩家", userDictionary.Count));

                foreach (var pair in userDictionary)
                {
                    buider.Append("<br>");
                    buider.Append(pair.Key);
                    buider.Append(" ");
                    buider.Append(pair.Value[0]);
                    buider.Append(" 等级:");
                    buider.Append(pair.Value[1]);
                }

                this.resultLabel.Text = buider.ToString();
            }
        }
        /// <summary>
        /// 显示信息按钮点击响应
        /// </summary>
        protected void informationButton_Click(object sender, EventArgs e)
        {
            this.idLabel.Text = "";
            uint playerId = this.GetPlayerId();

            if (playerId != 0)
            {
                gmt.Server    server  = gmt.Server.GetServer(this.selectListBox.Items[0].ToString());
                StringBuilder builder = new StringBuilder();
                if (string.IsNullOrEmpty(server.GameDatabase))
                {
                    return;
                }

                //记录各项信息的字符串
                string vipLevel = ""
                , teamLevel     = ""
                , yuanbao_all   = ""
                , yuanbao       = ""
                , money         = ""
                , energy        = ""
                , lingyu        = ""
                , registerTime  = ""
                , heroCount     = ""
                , fuben         = ""
                , guildName     = ""
                , onlinetime    = ""
                , smallMonth    = ""
                , bigMonth      = ""
                , lastSaveTime  = "";

                #region VIP等级、金钱、元宝、体力、在线时长、充值元宝总数、灵玉、最后登录时间
                DatabaseAssistant.Execute(
                    reader =>
                {
                    if (reader.Read())
                    {
                        vipLevel = reader.GetInt32(0).ToString();
                        money    = reader.GetInt32(1).ToString();
                        yuanbao  = reader.GetInt32(2).ToString();
                        energy   = reader.GetInt32(3).ToString();

                        onlinetime  = reader.GetInt32(4) / 3600 + TableManager.GetGMTText(741);
                        onlinetime += (reader.GetInt32(4) % 3600) / 60 + TableManager.GetGMTText(742);
                        onlinetime += reader.GetInt32(4) % 60 + TableManager.GetGMTText(94);

                        yuanbao_all = reader.GetInt32(5).ToString();
                        lingyu      = reader.GetInt32(6).ToString();

                        lastSaveTime = reader.GetDateTime(7).ToString();
                    }
                },
                    server.DatabaseAddress,
                    server.DatabasePort,
                    server.DatabaseCharSet,
                    server.GameDatabase,
                    server.DatabaseUserId,
                    server.DatabasePassword,
                    "SELECT `vip_level`,`money`,`yuanbao`,`energy`,`online_time`,`yuanbao_all`,`hero_soul_ex`,`last_save_time` FROM `user_info` WHERE `uid`={0};",
                    playerId);
                #endregion

                #region 副本进度、帮派名称
                DatabaseAssistant.Execute(
                    reader =>
                {
                    if (reader.Read())
                    {
                        byte[] buffer = new byte[reader.GetBytes(0, 0, null, 0, int.MaxValue)];
                        reader.GetBytes(0, 0, buffer, 0, buffer.Length);
                        using (MemoryStream stream = new MemoryStream(buffer))
                        {
                            mw.OtherInfo othern = ProtoSerializer.Instance.Deserialize(stream, null, typeof(mw.OtherInfo)) as mw.OtherInfo;
                            fuben     = othern.instanceInfo.comm_instance.ToString();
                            guildName = othern.guildInfo.name;
                            if (string.IsNullOrEmpty(guildName))
                            {
                                guildName = TableManager.GetGMTText(743);
                            }
                        }
                    }
                },
                    server.DatabaseAddress,
                    server.DatabasePort,
                    server.DatabaseCharSet,
                    server.GameDatabase,
                    server.DatabaseUserId,
                    server.DatabasePassword,
                    "SELECT `other_data` FROM `other_info` WHERE `uid`={0};",
                    playerId);
                #endregion

                #region 创建时间
                int      dayidx       = 0; //记录创建时间是一年中的第几天
                DateTime registertime = DateTime.Now;
                //角色创建时间
                DatabaseAssistant.Execute(reader =>
                {
                    registerTime = TableManager.GetGMTText(719);
                    if (reader.Read())
                    {
                        DateTime datetime = reader.GetDateTime(0);
                        registerTime      = datetime.ToString();
                        dayidx            = reader.GetDateTime(0).DayOfYear;
                        registertime      = reader.GetDateTime(0);
                    }
                },
                                          server.DatabaseAddress,
                                          server.DatabasePort,
                                          server.DatabaseCharSet,
                                          server.GameDatabase,
                                          server.DatabaseUserId,
                                          server.DatabasePassword,
                                          "SELECT `register_time` FROM `user` WHERE `uid`={0};",
                                          playerId);
                #endregion

                #region 团队等级、武将数量
                DatabaseAssistant.Execute(
                    reader =>
                {
                    if (reader.Read())
                    {
                        byte[] buffer = new byte[reader.GetBytes(0, 0, null, 0, int.MaxValue)];
                        reader.GetBytes(0, 0, buffer, 0, buffer.Length);
                        using (MemoryStream stream = new MemoryStream(buffer))
                        {
                            mw.HeroPackage heroPackage = ProtoSerializer.Instance.Deserialize(stream, null, typeof(mw.HeroPackage)) as mw.HeroPackage;
                            teamLevel = heroPackage.level.ToString();
                            heroCount = heroPackage.heroInfos.Count.ToString();
                        }
                    }
                },
                    server.DatabaseAddress,
                    server.DatabasePort,
                    server.DatabaseCharSet,
                    server.GameDatabase,
                    server.DatabaseUserId,
                    server.DatabasePassword,
                    "SELECT `card_data` FROM `card_package` WHERE `uid`={0};",
                    playerId);
                #endregion

                #region 月卡
                //小月卡=超值月卡
                DatabaseAssistant.Execute(
                    reader =>
                {
                    smallMonth = TableManager.GetGMTText(743);
                    if (reader.Read())
                    {
                        DateTime datetime = reader.GetDateTime(0);
                        smallMonth        = datetime.ToString();
                    }
                },
                    server.DatabaseAddress,
                    server.DatabasePort,
                    server.DatabaseCharSet,
                    server.GameDatabase,
                    server.DatabaseUserId,
                    server.DatabasePassword,
                    "SELECT `s_month_time` FROM `user_info` WHERE `uid`={0};",
                    playerId);

                //大月卡=至尊卡
                DatabaseAssistant.Execute(
                    reader =>
                {
                    bigMonth = TableManager.GetGMTText(744);
                    if (reader.Read())
                    {
                        if (reader.GetInt32(0) == 1)
                        {
                            bigMonth = TableManager.GetGMTText(745);
                        }
                    }
                },
                    server.DatabaseAddress,
                    server.DatabasePort,
                    server.DatabaseCharSet,
                    server.GameDatabase,
                    server.DatabaseUserId,
                    server.DatabasePassword,
                    "SELECT `ex_month_time` FROM `user_info` WHERE `uid`={0};",
                    playerId);
                #endregion

                #region 显示

                if (vipLevel == "")
                {
                    vipLevel = "0";
                }
                if (teamLevel == "")
                {
                    teamLevel = "0";
                }
                if (yuanbao_all == "")
                {
                    yuanbao_all = "0";
                }
                if (yuanbao == "")
                {
                    yuanbao = "0";
                }
                if (money == "")
                {
                    money = "0";
                }
                if (energy == "")
                {
                    energy = "0";
                }
                if (lingyu == "")
                {
                    lingyu = "0";
                }
                if (heroCount == "")
                {
                    heroCount = "0";
                }
                if (fuben == "")
                {
                    fuben = TableManager.GetGMTText(743);
                }
                if (guildName == "")
                {
                    guildName = TableManager.GetGMTText(743);
                }
                if (onlinetime == "")
                {
                    onlinetime = "0";
                }

                builder.Append("<table><tr><td colspan='8'>" + TableManager.GetGMTText(57) + "</td></tr>");
                builder.Append("<tr><td colspan='2'>" + TableManager.GetGMTText(58) + ":").Append(playerId);
                builder.Append("</td><td colspan='2'>" + TableManager.GetGMTText(59) + ":").Append(GetPlayerStatus(playerId));
                builder.Append("</td><td colspan='2'>" + TableManager.GetGMTText(60) + ":").Append(vipLevel);
                builder.Append("</td><td colspan='2'>" + TableManager.GetGMTText(61) + ":").Append(teamLevel);
                builder.Append("</td></tr><tr><td colspan='2'>" + TableManager.GetGMTText(62) + ":").Append(yuanbao_all);
                builder.Append("</td><td colspan='2'>" + TableManager.GetGMTText(63) + ":").Append(yuanbao);
                builder.Append("</td><td colspan='2'>" + TableManager.GetGMTText(64) + ":").Append(money);
                builder.Append("</td><td colspan='2'>" + TableManager.GetGMTText(65) + ":").Append(energy);
                builder.Append("</td></tr><tr><td colspan='2'>" + TableManager.GetGMTText(66) + ":").Append(lingyu);
                builder.Append("</td><td colspan='2'>" + TableManager.GetGMTText(67) + ":").Append(heroCount);
                builder.Append("</td><td colspan='2'>" + TableManager.GetGMTText(68) + ":").Append(fuben);
                builder.Append("</td><td colspan='2'>" + TableManager.GetGMTText(69) + ":").Append(guildName);
                builder.Append("</td></tr><tr><td colspan='4'>" + TableManager.GetGMTText(70) + ":").Append(registerTime);
                builder.Append("</td><td colspan='4'>" + TableManager.GetGMTText(71) + ":").Append(lastSaveTime);
                builder.Append("</td></tr><tr><td colspan='2'>" + TableManager.GetGMTText(72) + ":").Append(onlinetime);
                builder.Append("</td><td colspan='4'>" + TableManager.GetGMTText(746) + ":").Append(smallMonth);
                builder.Append("</td></tr><tr><td colspan='2'>" + TableManager.GetGMTText(74) + ":").Append(bigMonth);
                builder.Append("</td></tr></table>");

                this.idLabel.Text = builder.ToString();

                #endregion
            }
        }