Exemplo n.º 1
0
        public static void CreateNewParty(Client leader)
        {
            PacketHitList hitlist = null;

            PacketHitList.MethodStart(ref hitlist);
            List <string> partyIDs = new List <string>();

            using (DatabaseConnection dbConnection = new DatabaseConnection(DatabaseID.Players))
            {
                partyIDs = LoadPartyIDList(dbConnection.Database);
            }

            if (leader.Player.PartyID == null)
            {
                string partyID = null;
                rwLock.EnterWriteLock();
                try
                {
                    while (true)
                    {
                        string tempID = Security.PasswordGen.Generate(10, 15);
                        if (partyIDs.Contains(tempID) == false)
                        {
                            partyID = tempID;
                            break;
                        }
                    }
                    Party party = new Party(partyID, leader);
                    leader.Player.PartyID = partyID;
                    parties.Add(partyID, party);
                }
                finally
                {
                    rwLock.ExitWriteLock();
                }
                leader.Player.AddExpKitModule(new AvailableExpKitModule(Enums.ExpKitModules.Party, true));
                PacketBuilder.AppendPartyMemberDataFor(leader, hitlist, 0);
                hitlist.AddPacket(leader, PacketBuilder.CreateChatMsg("You have created a new party!", Text.BrightGreen));
            }
            else
            {
                hitlist.AddPacket(leader, PacketBuilder.CreateChatMsg("You are already in a party!", Text.BrightRed));
            }

            PacketHitList.MethodEnded(ref hitlist);
        }
Exemplo n.º 2
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.º 3
0
        public static void OnMapLoaded(Client client, IMap map, PacketHitList packetList)
        {
            PacketHitList.MethodStart(ref packetList);
            if (IsInTower(map))
            {
                // Prevent others from entering until finished. Spoiler prevention!

                if (Ranks.IsDisallowed(client, Enums.Rank.Scripter))
                {
                    packetList.HitList.Clear(); // Remove the warp packets to cancel the map load
                    Messenger.PlayerWarp(client, 1015, 25, 25);
                    if (Ranks.IsAllowed(client, Enums.Rank.Moniter))
                    {
                        Messenger.PlayerMsg(client, "Sorry, you can't go here! ~Pikachu", Text.BrightRed);
                    }
                    else
                    {
                        Messenger.PlayerMsg(client, "Sorry, you can't go here!", Text.BrightRed);
                    }
                }
                else
                {
                    if (VerifyMapKeyTiles(client, map, packetList))
                    {
                        packetList.AddPacket(client, PacketBuilder.CreateBattleMsg("An electrolock has been opened nearby!", Text.BrightGreen));
                    }
                    CheckForSublevelGoal(client, packetList);
                    VerifyMapSublevelTriggerTiles(client, map, packetList);
                }
            }
            else
            {
                ResetPlayer(client);
            }
            PacketHitList.MethodEnded(ref packetList);
        }