Ejemplo n.º 1
0
        public ClanKick(Client User, XmlDocument Packet)
            : base(User, Packet)
        {
            long num = long.Parse(this.Query.Attributes["profile_id"].InnerText);

            if (User.Player.Clan == null || User.Player.ClanPlayer.ClanRole != Clan.CLAN_ROLE.LEADER)
            {
                throw new StanzaException(User, Packet, 4);
            }
            Client client = ArrayList.OnlineUsers.Find((Predicate <Client>)(Attribute => Attribute.Player.UserID == long.Parse(this.Query.Attributes["profile_id"].InnerText)));

            if (client != null)
            {
                User.Player.Clan.RemovePlayer(client.Player);
                client.Player.Clan       = new Clan();
                client.Player.ClanPlayer = new ClanProperties();
                client.ShowMessage("@clans_you_was_kicked", false);
                client.Player.Save();
                if (client.Player.RoomPlayer.Room != null)
                {
                    if (client.Player.RoomPlayer.Room.Core.RoomType == (byte)4)
                    {
                        GameRoom_OnKicked gameRoomOnKicked = new GameRoom_OnKicked(client.Player.RoomPlayer.Room.Players.Users.ToList <Client>().Find((Predicate <Client>)(Attribute => Attribute.Player.UserID == client.Player.UserID)), GameRoom_OnKicked.Reason.KickedByUser);
                    }
                    else
                    {
                        client.Player.RoomPlayer.Room.Sync((Client)null);
                    }
                }
                ClanInfo clanInfo = new ClanInfo(client, (XmlDocument)null);
            }
            else
            {
                client        = new Client();
                client.Player = new Player()
                {
                    UserID = num
                };
                User.Player.Clan.RemovePlayer(client.Player);
                if (!client.Player.Load(true).Result)
                {
                    throw new StanzaException(User, Packet, 4);
                }
                client.Player.ClanPlayer = new ClanProperties();
                client.Player.Clan       = new Clan();
                client.Player.AddCustomMessage("@clans_you_was_kicked");
                client.Player.Save();
            }
            foreach (XElement xelement in User.Player.Clan.ClanMembers.Elements((XName)"clan_member_info").ToList <XElement>())
            {
                XElement clanMember = xelement;
                Client   User1      = ArrayList.OnlineUsers.Find((Predicate <Client>)(x => x.Player.UserID == long.Parse(clanMember.Attribute((XName)"profile_id").Value)));
                if (User1 != null)
                {
                    ClanInfo clanInfo = new ClanInfo(User1, (XmlDocument)null);
                }
            }
            this.Process();
        }
Ejemplo n.º 2
0
        public ClanSetMemberRole(Client User, XmlDocument Packet)
            : base(User, Packet)
        {
            if (this.Type == "result")
            {
                return;
            }
            long TargetID = long.Parse(this.Query.Attributes["profile_id"].InnerText);

            Clan.CLAN_ROLE clanRole = (Clan.CLAN_ROLE) byte.Parse(this.Query.Attributes["role"].InnerText);
            if (!Enum.IsDefined(typeof(Clan.CLAN_ROLE), (object)clanRole) || User.Player.Clan == null || User.Player.ClanPlayer.ClanRole != Clan.CLAN_ROLE.LEADER)
            {
                throw new StanzaException(User, Packet, 7);
            }
            Client client = ArrayList.OnlineUsers.Find((Predicate <Client>)(Attribute => Attribute.Player.UserID == TargetID));

            client.Player.ClanPlayer.ClanRole = clanRole;
            switch (clanRole - 1)
            {
            case Clan.CLAN_ROLE.NOT_IN_CLAN:
                client.ShowMessage("@clans_you_are_promoted_to_master", false);
                break;

            case Clan.CLAN_ROLE.LEADER:
                client.ShowMessage("@clans_you_are_promoted_to_officer", false);
                break;

            case Clan.CLAN_ROLE.CO_LEADER:
                client.ShowMessage("@clans_you_are_demoted_to_regular", false);
                break;
            }
            if (clanRole == Clan.CLAN_ROLE.LEADER)
            {
                User.Player.ClanPlayer.ClanRole = Clan.CLAN_ROLE.CO_LEADER;
                User.Player.Clan.UpdatePlayer(User.Player);
            }
            User.Player.Clan.UpdatePlayer(client.Player);
            foreach (XElement xelement in User.Player.Clan.ClanMembers.Elements((XName)"clan_member_info").ToList <XElement>())
            {
                XElement clanMember = xelement;
                Client   User1      = ArrayList.OnlineUsers.Find((Predicate <Client>)(x => x.Player.UserID == long.Parse(clanMember.Attribute((XName)"profile_id").Value)));
                if (User1 != null)
                {
                    ClanInfo clanInfo = new ClanInfo(User1, (XmlDocument)null);
                }
            }
            this.Process();
        }
Ejemplo n.º 3
0
 public ConfirmNotification(Client User, XmlDocument Packet)
     : base(User, Packet)
 {
     foreach (XmlNode childNode1 in this.Query.ChildNodes)
     {
         foreach (XmlNode childNode2 in User.Player.Notifications["notifications"].ChildNodes)
         {
             if (childNode2.Attributes["id"].InnerText == childNode1.Attributes["id"].InnerText)
             {
                 if (childNode2.Attributes["type"].InnerText == "16")
                 {
                     string ReceivedUser = childNode2["invitation"].Attributes["initiator"].InnerText;
                     Client User1        = ArrayList.OnlineUsers.Find((Predicate <Client>)(Attribute => Attribute.Player.Nickname == ReceivedUser));
                     if (User1 != null && User.Player.Clan.ID == 0L && User1.Player.Clan.ClanMembers.Elements().Count <XElement>() < 50)
                     {
                         User1.Player.AddResultNotification(User.Player.UserID, User.JID, User.Player.Nickname, User.Status, childNode1["confirmation"].Attributes["location"].InnerText, User.Player.Experience, childNode1["confirmation"].Attributes["result"].InnerText, true);
                         new SyncNotification(User1, (XmlDocument)null).Process();
                         if (childNode1["confirmation"].Attributes["result"].InnerText == "0")
                         {
                             User.Player.Clan = User1.Player.Clan;
                             User.Player.ClanPlayer.InvitationDate = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
                             User.Player.ClanPlayer.ClanRole       = Clan.CLAN_ROLE.DEFAULT;
                             User1.Player.Clan.AddPlayer(User.Player);
                             foreach (XElement xelement in User.Player.Clan.ClanMembers.Elements((XName)"clan_member_info").ToList <XElement>())
                             {
                                 XElement clanMember = xelement;
                                 Client   User2      = ArrayList.OnlineUsers.Find((Predicate <Client>)(x => x.Player.UserID == long.Parse(clanMember.Attribute((XName)"profile_id").Value)));
                                 if (User2 != null)
                                 {
                                     ClanInfo clanInfo = new ClanInfo(User2, (XmlDocument)null);
                                 }
                             }
                             User.Player.Save();
                         }
                     }
                 }
                 if (childNode2.Attributes["type"].InnerText == "64")
                 {
                     string ReceivedUser2 = childNode2["invitation"].Attributes["initiator"].InnerText;
                     Client User1         = ArrayList.OnlineUsers.Find((Predicate <Client>)(Attribute => Attribute.Player.Nickname == ReceivedUser2));
                     if (User1 != null)
                     {
                         if (childNode1["confirmation"].Attributes["result"].InnerText == "0")
                         {
                             User.Player.AddFriend(User1.Player.UserID.ToString());
                             User1.Player.AddFriend(User.Player.UserID.ToString());
                             User.Player.AddResultNotification(User1.Player.UserID, User1.JID, User1.Player.Nickname, User1.Status, User1.Location, User.Player.Experience, childNode1["confirmation"].Attributes["result"].InnerText, false);
                             new SyncNotification(User, (XmlDocument)null).Process();
                         }
                         User1.Player.AddResultNotification(User.Player.UserID, User.JID, User.Player.Nickname, User.Status, childNode1["confirmation"].Attributes["location"].InnerText, User.Player.Experience, childNode1["confirmation"].Attributes["result"].InnerText, false);
                         new SyncNotification(User1, (XmlDocument)null).Process();
                     }
                     else
                     {
                         Player player = new Player()
                         {
                             Nickname = ReceivedUser2
                         };
                         player.Load(true);
                         if (childNode1["confirmation"].Attributes["result"].InnerText == "0")
                         {
                             User.Player.AddFriend(player.UserID.ToString());
                             player.AddFriend(User.Player.UserID.ToString());
                             User.Player.AddResultNotification(player.UserID, "", player.Nickname, 0, "", player.Experience, childNode1["confirmation"].Attributes["result"].InnerText, false);
                             new SyncNotification(User, (XmlDocument)null).Process();
                         }
                         player.AddResultNotification(User.Player.UserID, User.JID, User.Player.Nickname, User.Status, childNode1["confirmation"].Attributes["location"].InnerText, User.Player.Experience, childNode1["confirmation"].Attributes["result"].InnerText, false);
                         player.Save();
                     }
                 }
                 User.Player.Notifications["notifications"].RemoveChild(childNode2);
                 User.Player.Save();
                 FriendList friendList = new FriendList(User, (XmlDocument)null);
             }
         }
     }
     User.Player.Save();
     this.Process();
 }
Ejemplo n.º 4
0
        public ClanLeave(Client User, XmlDocument Packet = null)
            : base(User, Packet)
        {
            if (User.Player.Clan == null)
            {
                throw new StanzaException(User, Packet, 2);
            }
            User.Player.Clan.RemovePlayer(User.Player);
            if (User.Player.Clan.ClanMembers.Elements((XName)"clan_member_info").Count <XElement>() == 0)
            {
                User.Player.Clan.DeleteClan();
            }
            else if (User.Player.ClanPlayer.ClanRole == Clan.CLAN_ROLE.LEADER)
            {
                XElement new_leader = User.Player.Clan.ClanMembers.Descendants((XName)"clan_member_info").ToList <XElement>().First <XElement>();
                Client   client     = ArrayList.OnlineUsers.Find((Predicate <Client>)(Attribute => Attribute.Player.UserID == Convert.ToInt64(new_leader.Attribute((XName)"profile_id").Value)));
                if (client != null)
                {
                    client.Player.Clan                = User.Player.Clan;
                    client.Player.Clan.LeaderName     = client.Player.Nickname;
                    client.Player.ClanPlayer.ClanRole = Clan.CLAN_ROLE.LEADER;
                    client.ShowMessage("@clans_you_are_promoted_to_master", false);
                    User.Player.Clan.UpdatePlayer(client.Player);
                }
                else
                {
                    Player player = new Player()
                    {
                        UserID = Convert.ToInt64(new_leader.Attribute((XName)"profile_id").Value)
                    };
                    player.Clan.ID = User.Player.Clan.ID;
                    if (player.Load(true).Result)
                    {
                        player.Clan = User.Player.Clan;
                        player.ClanPlayer.ClanRole = Clan.CLAN_ROLE.LEADER;
                        player.Clan.LeaderName     = player.Nickname;
                        player.Save();
                        User.Player.Clan.UpdatePlayer(player);
                    }
                }
            }
            foreach (XElement xelement in User.Player.Clan.ClanMembers.Elements((XName)"clan_member_info").ToList <XElement>())
            {
                XElement clanMember = xelement;
                Client   User1      = ArrayList.OnlineUsers.Find((Predicate <Client>)(x => x.Player.UserID == long.Parse(clanMember.Attribute((XName)"profile_id").Value)));
                if (User1 != null)
                {
                    ClanInfo clanInfo = new ClanInfo(User1, (XmlDocument)null);
                }
            }
            User.Player.ClanPlayer = new ClanProperties();
            User.Player.Clan       = new Clan();
            ClanInfo clanInfo1 = new ClanInfo(User, (XmlDocument)null);

            if (User.Player.RoomPlayer.Room != null)
            {
                if (User.Player.RoomPlayer.Room.Core.RoomType == (byte)4)
                {
                    GameRoom_OnKicked gameRoomOnKicked = new GameRoom_OnKicked(User.Player.RoomPlayer.Room.Players.Users.ToList <Client>().Find((Predicate <Client>)(Attribute => Attribute.Player.UserID == User.Player.UserID)), GameRoom_OnKicked.Reason.KickedByUser);
                }
                else
                {
                    User.Player.RoomPlayer.Room.Sync((Client)null);
                }
            }
            User.Player.Save();
            this.Process();
        }
Ejemplo n.º 5
0
        public SetRewardsInfo(Client User, XmlDocument Packet)
            : base(User, Packet)
        {
            string innerText = this.Query.Attributes["winning_team_id"].InnerText;
            int    int32     = Convert.ToInt32(Math.Round(double.Parse(this.Query.Attributes["session_time"].InnerText, (IFormatProvider)CultureInfo.InvariantCulture)));

            foreach (XmlNode childNode1 in this.Query.ChildNodes)
            {
                if (childNode1.Name == "team")
                {
                    double num1 = 0.0;
                    foreach (XmlElement childNode2 in childNode1.ChildNodes)
                    {
                        XmlElement PlayerEl = childNode2;
                        try
                        {
                            Client client = ArrayList.OnlineUsers.Find((Predicate <Client>)(Attribute => Attribute.Player != null && Attribute.Player.UserID == long.Parse(PlayerEl.Attributes["profile_id"].InnerText)));
                            if (client != null)
                            {
                                this.BcastReceivers.Add(client);
                                if (PlayerEl.Attributes["in_session_from_start"].InnerText == "0")
                                {
                                    int32 /= 2;
                                }
                                double num2 = 0.0;
                                double num3 = 0.0;
                                double num4 = 0.0;
                                double num5 = ((double)int32 / (childNode1.Attributes["id"].InnerText == innerText ? 2.61 : 3.1) + num1) * 5.0 * 2.0;
                                double num6 = ((double)int32 / (childNode1.Attributes["id"].InnerText == innerText ? 3.31 : 3.68) + num1) * 5.0 * 2.0;
                                double num7 = ((double)int32 / (childNode1.Attributes["id"].InnerText == innerText ? 2.97 : 3.45) + num1) * 5.0 * 2.0;
                                if (User.Player.RoomPlayer.Room.Mission.Mode != "ffa" && User.Player.RoomPlayer.Room.Mission.Mode != "hnt")
                                {
                                    if (childNode1.Attributes["id"].InnerText == innerText)
                                    {
                                        client.Player.StatMgr.IncrementDifficultyModePlayerStat("", "PVP", "player_sessions_won", 1L);
                                        num5 *= 1.5;
                                        num6 *= 1.5;
                                        num7 *= 1.5;
                                    }
                                    else
                                    {
                                        client.Player.StatMgr.IncrementDifficultyModePlayerStat("", "PVP", "player_sessions_lost", 1L);
                                    }
                                }
                                foreach (Item obj in client.Player.Items)
                                {
                                    if (obj.Name == "booster_02" && obj.SecondsLeft > 0L)
                                    {
                                        ++num3;
                                        num2 += 0.5;
                                        num4 += 0.75;
                                    }
                                    else if (obj.Name == "booster_11" && obj.SecondsLeft > 0L)
                                    {
                                        num3 += 1.79999995231628;
                                        num2 += 1.29999995231628;
                                        num4 += 1.64999997615814;
                                    }
                                    else if (obj.Name == "booster_01" && obj.SecondsLeft > 0L)
                                    {
                                        num4 += 0.150000005960464;
                                    }
                                    else if (obj.Name == "booster_03" && obj.SecondsLeft > 0L)
                                    {
                                        num3 += 0.150000005960464;
                                    }
                                    else if (obj.Name == "booster_04" && obj.SecondsLeft > 0L)
                                    {
                                        num2 += 0.150000005960464;
                                    }
                                }
                                if (num2 != 0.0)
                                {
                                    num7 *= num2;
                                }
                                if (num4 != 0.0)
                                {
                                    num6 *= num4;
                                }
                                if (num3 != 0.0)
                                {
                                    num5 *= num3;
                                }
                                if (client.Player.Experience < 28856000)
                                {
                                    client.Player.Experience += (int)num5;
                                }
                                else
                                {
                                    num5 = 0.0;
                                    client.Player.Experience = 28856000;
                                }
                                client.Player.GameMoney  += (int)num6;
                                client.Player.CrownMoney += 50;
                                if (client.Player.StatMgr.GetPlayerStat("player_max_session_time") < (long)(int32 * 10))
                                {
                                    client.Player.StatMgr.IncrementPlayerStat("player_max_session_time", (long)(int32 * 10));
                                }
                                client.Player.StatMgr.IncrementPlayerStat("player_online_time", (long)(int32 * 10));
                                client.Player.StatMgr.IncrementPlayerStat("player_gained_money", (long)(int)num6);
                                XElement xelement1 = new XElement((XName)"player_result");
                                xelement1.Add((object)new XAttribute((XName)"nickname", (object)client.Player.Nickname));
                                xelement1.Add((object)new XAttribute((XName)"experience", (object)(int)num5));
                                xelement1.Add((object)new XAttribute((XName)"sponsor_points", (object)(int)num7));
                                xelement1.Add((object)new XAttribute((XName)"money", (object)(int)num6));
                                xelement1.Add((object)new XAttribute((XName)"bonus_money", (object)0));
                                xelement1.Add((object)new XAttribute((XName)"gained_crown_money", (object)0));
                                xelement1.Add((object)new XAttribute((XName)"bonus_experience", (object)0));
                                xelement1.Add((object)new XAttribute((XName)"bonus_sponsor_points", (object)0));
                                xelement1.Add((object)new XAttribute((XName)"completed_stages", (object)""));
                                xelement1.Add((object)new XAttribute((XName)"money_boost", (object)0));
                                xelement1.Add((object)new XAttribute((XName)"experience_boost", (object)0));
                                xelement1.Add((object)new XAttribute((XName)"sponsor_points_boost", (object)0));
                                xelement1.Add((object)new XAttribute((XName)"experience_boost_percent", (object)num3));
                                xelement1.Add((object)new XAttribute((XName)"money_boost_percent", (object)num4));
                                xelement1.Add((object)new XAttribute((XName)"sponsor_points_boost_percent", (object)num2));
                                xelement1.Add((object)new XAttribute((XName)"is_vip", (object)(num3 != 0.0 || num2 != 0.0 || num4 != 0.0 ? 1 : 0)));
                                xelement1.Add((object)new XAttribute((XName)"score", (object)client.Player.Nickname));
                                xelement1.Add((object)new XAttribute((XName)"no_crown_rewards", (object)0));
                                xelement1.Add((object)new XAttribute((XName)"dynamic_multipliers_info", (object)0));
                                this.Results.Add(xelement1);
                                if (client.Player.Clan.ID != 0L)
                                {
                                    if (User.Player.RoomPlayer.Room.Core.RoomType == (byte)4)
                                    {
                                        if (childNode1.Attributes["id"].InnerText == innerText)
                                        {
                                            client.Player.ClanPlayer.Points += Convert.ToInt32((double)int32 * 1.5);
                                        }
                                        else
                                        {
                                            client.Player.ClanPlayer.Points += Convert.ToInt32((double)int32 / 1.5);
                                        }
                                    }
                                    else
                                    {
                                        client.Player.ClanPlayer.Points += Convert.ToInt32(int32 / 3);
                                    }
                                    client.Player.Clan.UpdatePlayer(client.Player);
                                    foreach (XElement xelement2 in client.Player.Clan.ClanMembers.Elements((XName)"clan_member_info").ToList <XElement>())
                                    {
                                        XElement clanMember = xelement2;
                                        Client   User1      = ArrayList.OnlineUsers.Find((Predicate <Client>)(x => x.Player.UserID == long.Parse(clanMember.Attribute((XName)"profile_id").Value)));
                                        if (User1 != null)
                                        {
                                            ClanInfo clanInfo = new ClanInfo(User1, (XmlDocument)null);
                                        }
                                    }
                                }
                                client.Player.Save();
                            }
                        }
                        catch
                        {
                        }
                    }
                }
            }
            foreach (Client bcastReceiver in this.BcastReceivers)
            {
                new BroadcastSessionResults(bcastReceiver, this.Results).Process();
            }
            this.Process();
        }