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(); } }
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); } }