예제 #1
0
 public ChannelOperation(Client User, XmlDocument Packet)
     : base(User, Packet)
 {
     if (User.Channel != null)
     {
         ChannelLogout channelLogout = new ChannelLogout(User, (XmlDocument)null);
     }
     if ((bool)App.Default["UseOldMode"])
     {
         this.Resource = this.To.Split(new string[1]
         {
             "masterserver@warface/"
         }, StringSplitOptions.RemoveEmptyEntries)[0];
     }
     else
     {
         this.Resource = this.Query.Attributes["resource"].InnerText;
     }
     this.BuildType = this.Query.Attributes["build_type"].InnerText;
     User.Channel   = !(bool)App.Default["UseOldMode"] ? ArrayList.Channels.Find((Predicate <Channel>)(Attribute => Attribute.Resource == this.Resource)) : ArrayList.Channels.Find((Predicate <Channel>)(Attribute => Attribute.Resource == this.To.Split(new string[1]
     {
         "masterserver@warface/"
     }, StringSplitOptions.RemoveEmptyEntries)[0]));
     if ((int)User.Channel.MinRank >= (int)User.Player.Rank && (int)User.Channel.MaxRank <= (int)User.Player.Rank)
     {
         this.ErrorCode = ChannelOperation.Error.FULL_CHANNEL;
     }
     else
     {
         User.Channel.Users.Add(User);
         if (this.Query.Name == "create_profile" && !User.Player.ProfileCreated)
         {
             string s = new MySqlCommand("SELECT id FROM tickets WHERE nickname = '" + User.Player.Nickname + "'", SQL.Handler).ExecuteScalar().ToString();
             new MySqlCommand("INSERT INTO players (ID, Experience, Avatar, Items, Settings, Achievements, Notifications, Stats, Friends, RandomBox, LastActivity, PrivilegieId, BanType, UnbanTime ) VALUES (" + s + ", 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 )", SQL.Handler).ExecuteScalar();
             User.Player = new Player()
             {
                 TicketId = User.Player.TicketId,
                 Nickname = User.Player.Nickname,
                 UserID   = long.Parse(s),
                 Head     = this.Query.Attributes["head"].InnerText.StartsWith("default_head_") ? this.Query.Attributes["head"].InnerText : "default_head_04"
             };
             Program.WriteLine(string.Format("Игрок {0} создал профиль с ником: {1}, ИД: {2}", (object)User.Player.Nickname, (object)User.Player.Nickname, (object)User.Player.UserID), ConsoleColor.Magenta);
             new MySqlCommand(string.Format("UPDATE tickets SET profileid='{0}', nickname='{1}' WHERE id='{2}';", (object)User.Player.UserID, (object)User.Player.Nickname, (object)User.Player.TicketId), SQL.Handler).ExecuteScalar();
             User.Player.Save();
         }
         this.Process();
         Program.WriteLine(string.Format("Игрок {0} присоединился к каналу {1} (На канале: {2} игроков)", (object)User.Player.Nickname, (object)User.Channel.Resource, (object)User.Channel.Online), ConsoleColor.Yellow);
         int num = User.IPAddress == "127.0.0.1" ? 1 : 0;
         new FriendList(User, (XmlDocument)null).Process();
     }
 }
예제 #2
0
        public ChannelOperation(Client User, XmlDocument Packet)
            : base(User, Packet)
        {
            if (User.Channel != null)
            {
                ChannelLogout channelLogout = new ChannelLogout(User, (XmlDocument)null);
            }
            this.Resource  = this.Query.Attributes["resource"].InnerText;
            this.BuildType = this.Query.Attributes["build_type"].InnerText;
            Version        = Query.Attributes["version"].InnerText;
            if (Version != "1.15000.124.34300")
            {
                this.ErrorCode = ChannelOperation.Error.INVALID_GAMEVERSION;
            }
            User.Channel = ArrayList.Channels.Find((Predicate <Channel>)(Attribute => Attribute.Resource == this.Resource));
            if ((int)User.Channel.MinRank >= (int)User.Player.Rank && (int)User.Channel.MaxRank <= (int)User.Player.Rank)
            {
                this.ErrorCode = ChannelOperation.Error.FULL_CHANNEL;
            }
            else
            {
                User.Channel.Users.Add(User);
                if (this.Query.Name == "create_profile" && !User.Player.ProfileCreated)
                {
                    using (MySqlConnection result = SQL.GetConnection().GetAwaiter().GetResult())
                    {
                        MySqlCommand сmd = new MySqlCommand();
                        сmd.Connection = result;
                        сmd.Prepare();
                        string s = сmd.CommandText = "SELECT id FROM users WHERE nickname = @nickname";
                        сmd.Parameters.AddWithValue("@nickname", User.Player.Nickname);
                        s = сmd.ExecuteScalar().ToString();
                        сmd.CommandText = "INSERT INTO players (ID, Experience, Avatar, Items, Settings, Achievements, Notifications, Stats, Friends, RandomBox, LastActivity, PrivilegieId, BanType, UnbanTime) VALUES (" + s + ", @Experience, @Avatar, @Items, @Settings, @Achievements, @Notifications, @Stats, @Friends, @RandomBox, @LastActivity, @PrivilegieId, @BanType, @UnbanTime)";
                        сmd.Parameters.AddWithValue("@Experience", 0);
                        сmd.Parameters.AddWithValue("@Avatar", 0);
                        сmd.Parameters.AddWithValue("@Items", 0);
                        сmd.Parameters.AddWithValue("@Settings", 0);
                        сmd.Parameters.AddWithValue("@Achievements", 0);
                        сmd.Parameters.AddWithValue("@Notifications", 0);
                        сmd.Parameters.AddWithValue("@Stats", 0);
                        сmd.Parameters.AddWithValue("@Friends", 0);
                        сmd.Parameters.AddWithValue("@RandomBox", 0);
                        сmd.Parameters.AddWithValue("@LastActivity", 0);
                        сmd.Parameters.AddWithValue("@PrivilegieId", 0);
                        сmd.Parameters.AddWithValue("@BanType", 0);
                        сmd.Parameters.AddWithValue("@UnbanTime", 0);
                        сmd.ExecuteScalar();

                        User.Player = new Player()
                        {
                            TicketId = User.Player.TicketId,
                            Nickname = User.Player.Nickname,
                            UserID   = long.Parse(s),
                            Head     = this.Query.Attributes["head"].InnerText.StartsWith("default_head_4") ? this.Query.Attributes["head"].InnerText : "default_head_04"
                        };
                        Console.WriteLine(string.Format("{0:0000}", (object)User.Player.UserID) + " >> created profile");
                        new MySqlCommand(string.Format("UPDATE users SET profileid='{0}', nickname='{1}' WHERE id='{2}';", User.Player.UserID, User.Player.Nickname, User.Player.TicketId), result).ExecuteScalar();
                        User.Player.Save();
                        result.Close();
                    }
                }
                this.Process();
                if (this.Query.Name != "switch_channel")
                {
                    new FriendList(User, (XmlDocument)null).Process();
                    User.Player.Clan.Find(User);
                    User.Player.CheckDailyBonus();
                }
                User.Status = 3;
                User.ShowMessage("Добро пожаловать!) Приятной вам игры)", true);
            }
        }