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