Exemplo n.º 1
0
        public static void DisbandParty(Party party)
        {
            rwLock.EnterWriteLock();
            try
            {
                int partyIndex = parties.IndexOfValue(party);
                if (partyIndex > -1)
                {
                    parties.RemoveAt(partyIndex);
                }
            }
            finally
            {
                rwLock.ExitWriteLock();
            }

            foreach (Client client in party.GetOnlineMemberClients())
            {
                if (client.IsPlaying())
                {
                    client.Player.RemoveExpKitModule(Enums.ExpKitModules.Party);
                    client.Player.PartyID = null;
                    Messenger.SendDisbandPartyTo(client);
                    Messenger.PlayerMsg(client, "Your party has been disbanded!", Text.BrightRed);
                }
            }
        }
Exemplo n.º 2
0
        public static bool AttemptPartyWarp(Client client, PlayerWarpAction action)
        {
            if (client.Player.PartyID == null)
            {
                action(client);
                return(true);
            }
            else
            {
                bool  warp      = true;
                IMap  sourceMap = client.Player.Map;
                Party party     = PartyManager.FindPlayerParty(client);
                foreach (Client member in party.GetOnlineMemberClients())
                {
                    if (/*!member.Player.Dead &&*/ member.Player.MapID == client.Player.MapID && (member.Player.X != client.Player.X || member.Player.Y != client.Player.Y))
                    {
                        warp = false;
                    }
                }

                if (warp)
                {
                    foreach (Client member in party.GetOnlineMemberClients())
                    {
                        if (member.Player.Map != sourceMap)
                        {
                            continue;
                        }

                        action(member);
                    }
                }
                else
                {
                    Messenger.PlayerMsg(client, "All surviving players on the floor must be on the goal in order to continue.", Text.WhiteSmoke);
                }
                return(warp);
            }
        }
Exemplo n.º 3
0
        public static void JoinParty(Party party, Client client)
        {
            PacketHitList hitlist = null;

            PacketHitList.MethodStart(ref hitlist);

            if (party != null)
            {
                Client leader = party.GetLeader();
                if (Combat.MoveProcessor.IsInAreaRange(1, client.Player.X, client.Player.Y, leader.Player.X, leader.Player.Y))
                {
                    if (party.AddToParty(client))
                    {
                        client.Player.PartyID = party.PartyID;
                        client.Player.AddExpKitModule(new AvailableExpKitModule(Enums.ExpKitModules.Party, true));
                        hitlist.AddPacket(client, PacketBuilder.CreateChatMsg("You have joined the party!", Text.BrightGreen));
                        //PartyMember member = party.FindMember(client.Player.CharID);
                        int slot = party.GetMemberSlot(client.Player.CharID);
                        //Messenger.SendPartyMemberData(client, member, slot);
                        foreach (Client i in party.GetOnlineMemberClients())
                        {
                            if (i.IsPlaying() && i != client)
                            {
                                //PartyMember teamMember = party.Members.FindMember(i.Player.CharID);
                                //int teamMemberSlot = party.Members.GetMemberSlot(i.Player.CharID);
                                //Messenger.SendPartyMemberData(client, teamMember, teamMemberSlot);
                                //Messenger.SendPartyMemberData(i, member, slot);
                                hitlist.AddPacket(i, PacketBuilder.CreateChatMsg(client.Player.Name + " has joined the party!", Text.BrightGreen));
                            }
                            PacketBuilder.AppendPartyMemberData(i, hitlist, slot);
                        }
                    }
                    else
                    {
                        hitlist.AddPacket(client, PacketBuilder.CreateChatMsg("You couldn't join the party!", Text.BrightRed));
                    }
                }
                else
                {
                    Messenger.PlayerMsg(client, "You need to stand next to the leader to join the party!", Text.BrightRed);
                }
            }

            PacketHitList.MethodEnded(ref hitlist);
        }
Exemplo n.º 4
0
        public static void HandleMemberLogout(string partyID, string leavingChar)
        {
            Party party         = FindParty(partyID);
            int   onlineClients = 0;

            if (party != null)
            {
                foreach (Client client in party.GetOnlineMemberClients())
                {
                    if (client.Player.CharID != leavingChar)
                    {
                        onlineClients++;
                    }
                }
                if (onlineClients <= 0)
                {
                    parties.RemoveAtKey(partyID);
                }
            }
        }
Exemplo n.º 5
0
 public static void PartyMsg(Party party, string msg, Color color)
 {
     foreach (Client i in party.GetOnlineMemberClients()) {
         if (i.IsPlaying()) {
             Messenger.PlayerMsg(i, msg, color);
         }
     }
 }
Exemplo n.º 6
0
        public static void JoinParty(Party party, Client client)
        {
            PacketHitList hitlist = null;
            PacketHitList.MethodStart(ref hitlist);

            if (party != null) {
                Client leader = party.GetLeader();
                if (Combat.MoveProcessor.IsInAreaRange(1, client.Player.X, client.Player.Y, leader.Player.X, leader.Player.Y)) {
                    if (party.AddToParty(client)) {
                        client.Player.PartyID = party.PartyID;
                        client.Player.AddExpKitModule(new AvailableExpKitModule(Enums.ExpKitModules.Party, true));
                        hitlist.AddPacket(client, PacketBuilder.CreateChatMsg("You have joined the party!", Text.BrightGreen));
                        //PartyMember member = party.FindMember(client.Player.CharID);
                        int slot = party.GetMemberSlot(client.Player.CharID);
                        //Messenger.SendPartyMemberData(client, member, slot);
                        foreach (Client i in party.GetOnlineMemberClients()) {
                            if (i.IsPlaying() && i != client) {
                                //PartyMember teamMember = party.Members.FindMember(i.Player.CharID);
                                //int teamMemberSlot = party.Members.GetMemberSlot(i.Player.CharID);
                                //Messenger.SendPartyMemberData(client, teamMember, teamMemberSlot);
                                //Messenger.SendPartyMemberData(i, member, slot);
                                hitlist.AddPacket(i, PacketBuilder.CreateChatMsg(client.Player.Name + " has joined the party!", Text.BrightGreen));
                            }
                            PacketBuilder.AppendPartyMemberData(i, hitlist, slot);
                        }
                    } else {
                        hitlist.AddPacket(client, PacketBuilder.CreateChatMsg("You couldn't join the party!", Text.BrightRed));
                    }
                } else {
                    Messenger.PlayerMsg(client, "You need to stand next to the leader to join the party!", Text.BrightRed);
                }
            }

            PacketHitList.MethodEnded(ref hitlist);
        }
Exemplo n.º 7
0
        public static void DisbandParty(Party party)
        {
            rwLock.EnterWriteLock();
            try {
                int partyIndex = parties.IndexOfValue(party);
                if (partyIndex > -1) {
                    parties.RemoveAt(partyIndex);
                }
            } finally {
                rwLock.ExitWriteLock();
            }

            foreach (Client client in party.GetOnlineMemberClients()) {
                if (client.IsPlaying()) {
                    client.Player.RemoveExpKitModule(Enums.ExpKitModules.Party);
                    client.Player.PartyID = null;
                    Messenger.SendDisbandPartyTo(client);
                    Messenger.PlayerMsg(client, "Your party has been disbanded!", Text.BrightRed);
                }
            }
        }