Пример #1
0
        private void handlePublicChat(Player player, Packet packet)
        {
            int colour = packet.readByte();
            int effects = packet.readByte();
            byte[] packedChatData = packet.getRemainingData();
            string unpacked = Misc.textUnpack(packedChatData);
            ChatMessage message;

            if (unpacked.StartsWith("/") && player.getClan() != null)
            {
                packedChatData = Misc.textPack(unpacked.Substring(1));
                message = new ChatMessage(colour, unpacked.Substring(1), effects, player, packedChatData);
                Server.getClanManager().newClanMessage(player.getClan(), message);
                return;
            }
            message = new ChatMessage(colour, unpacked, effects, player, packedChatData);
            player.setLastChatMessage(message);
        }
Пример #2
0
 public void enterChannel(Player p, string owner)
 {
     if (p.getClan() != null)
     {
         return;
     }
     p.getPackets().sendMessage("Attempting to join channel...:clan:");
     if (owner.Equals(p.getLoginDetails().getUsername()))
     {
         Clan newClan = new Clan(p, owner, owner);
         addChannel(newClan);
     }
     Event enterChannelEvent = new Event(700);
     enterChannelEvent.setAction(() =>
     {
         enterChannelEvent.stop();
         foreach (Clan c in clans)
         {
             if (c != null)
             {
                 if (c.getClanOwner().Equals(owner))
                 {
                     if (c.getUserList().Count >= 100)
                     {
                         p.getPackets().sendMessage("The channel is full.");
                         return;
                     }
                     if (!owner.Equals(p.getLoginDetails().getUsername()))
                     {
                         if (c.getEnterRights() != Clan.ClanRank.NO_RANK)
                         {
                             if (c.getEnterRights() == Clan.ClanRank.FRIEND)
                             {
                                 if (!c.isFriendOfOwner(p) && !c.userHasRank(p.getLoginDetails().getUsername()))
                                 {
                                     p.getPackets().sendMessage("You do not have a high enough rank to enter this clan chat.");
                                     return;
                                 }
                             }
                             else
                             {
                                 bool canEnter = true;
                                 foreach (KeyValuePair<string, Clan.ClanRank> u in c.getUsersWithRank())
                                 {
                                     if (u.Key.Equals(p.getLoginDetails().getUsername()))
                                     {
                                         if (u.Value < c.getEnterRights())
                                         {
                                             canEnter = false;
                                             break;
                                         }
                                     }
                                 }
                                 if (!canEnter)
                                 {
                                     p.getPackets().sendMessage("You do not have a high enough rank to enter this clan chat.");
                                     return;
                                 }
                             }
                         }
                     }
                     c.addUser(p);
                     updateClan(c);
                     p.getPackets().sendMessage("Now talking in channel : " + Misc.formatPlayerNameForDisplay(c.getClanName() + ":clan:"));
                     p.getPackets().sendMessage("To talk, start each line of chat with the / symbol. :clan:");
                     return;
                 }
             }
         }
         p.getPackets().sendMessage("The channel you tried to join does not exist. :clan:");
     });
     Server.registerEvent(enterChannelEvent);
 }