Exemplo n.º 1
0
  @Override
  public void processPacket(Player player, int packetType, int packetSize) {
    switch (packetType) {
      case ADD_FRIEND:
        player.friendUpdate = true;
        long friendToAdd = player.getInStream().readQWord();
        boolean canAdd = true;

        for (int i1 = 0; i1 < player.friends.length; i1++) {
          if (player.friends[i1] != 0 && player.friends[i1] == friendToAdd) {
            canAdd = false;
            player.sendMessage(friendToAdd + " is already on your friends list.");
          }
        }
        if (canAdd == true) {
          for (int i1 = 0; i1 < player.friends.length; i1++) {
            if (player.friends[i1] == 0) {
              player.friends[i1] = friendToAdd;
              for (int i2 = 1; i2 < Config.MAX_PLAYERS; i2++) {
                if (player.getGame().getPlayerHandler().players[i2] != null
                    && player.getGame().getPlayerHandler().players[i2].isActive
                    && Misc.playerNameToInt64(
                            player.getGame().getPlayerHandler().players[i2].playerName)
                        == friendToAdd) {
                  Player o = player.getGame().getPlayerHandler().players[i2];
                  if (o != null) {
                    if (player.getGame().getPlayerHandler().players[i2].privateChat == 0
                        || (player.getGame().getPlayerHandler().players[i2].privateChat == 1
                            && o.getPA().isInPM(Misc.playerNameToInt64(player.playerName)))) {
                      player.getPA().loadPM(friendToAdd, 1);
                      break;
                    }
                  }
                }
              }
              break;
            }
          }
        }
        break;

      case SEND_PM:
        long sendMessageToFriendId = player.getInStream().readQWord();
        byte pmchatText[] = new byte[100];
        int pmchatTextSize = (byte) (packetSize - 8);
        player.getInStream().readBytes(pmchatText, pmchatTextSize, 0);
        if (ConnectionDetails.isMuted(player)) break;
        for (int i1 = 0; i1 < player.friends.length; i1++) {
          if (player.friends[i1] == sendMessageToFriendId) {
            boolean pmSent = false;

            for (int i2 = 1; i2 < Config.MAX_PLAYERS; i2++) {
              if (player.getGame().getPlayerHandler().players[i2] != null
                  && player.getGame().getPlayerHandler().players[i2].isActive
                  && Misc.playerNameToInt64(
                          player.getGame().getPlayerHandler().players[i2].playerName)
                      == sendMessageToFriendId) {
                Player o = player.getGame().getPlayerHandler().players[i2];
                if (o != null) {
                  if (player.getGame().getPlayerHandler().players[i2].privateChat == 0
                      || (player.getGame().getPlayerHandler().players[i2].privateChat == 1
                          && o.getPA().isInPM(Misc.playerNameToInt64(player.playerName)))) {
                    o.getPA()
                        .sendPM(
                            Misc.playerNameToInt64(player.playerName),
                            player.playerRights,
                            pmchatText,
                            pmchatTextSize);
                    pmSent = true;
                  }
                }
                break;
              }
            }
            if (!pmSent) {
              player.sendMessage("That player is currently offline.");
              break;
            }
          }
        }
        break;

      case REMOVE_FRIEND:
        player.friendUpdate = true;
        long friendToRemove = player.getInStream().readQWord();

        for (int i1 = 0; i1 < player.friends.length; i1++) {
          if (player.friends[i1] == friendToRemove) {
            for (int i2 = 1; i2 < Config.MAX_PLAYERS; i2++) {
              Player o = player.getGame().getPlayerHandler().players[i2];
              if (o != null) {
                if (player.friends[i1]
                    == Misc.playerNameToInt64(
                        player.getGame().getPlayerHandler().players[i2].playerName)) {
                  o.getPA().updatePM(player.playerId, 0);
                  break;
                }
              }
            }
            player.friends[i1] = 0;
            break;
          }
        }
        break;

      case REMOVE_IGNORE:
        int i = player.getInStream().readDWord();
        int i2 = player.getInStream().readDWord();
        int i3 = player.getInStream().readDWord();
        break;

      case CHANGE_PM_STATUS:
        int tradeAndCompete = player.getInStream().readUnsignedByte();
        player.privateChat = player.getInStream().readUnsignedByte();
        int publicChat = player.getInStream().readUnsignedByte();
        for (int i1 = 1; i1 < Config.MAX_PLAYERS; i1++) {
          if (player.getGame().getPlayerHandler().players[i1] != null
              && player.getGame().getPlayerHandler().players[i1].isActive == true) {
            Player o = player.getGame().getPlayerHandler().players[i1];
            if (o != null) {
              o.getPA().updatePM(player.playerId, 1);
            }
          }
        }
        break;

      case ADD_IGNORE:
        //
        break;
    }
  }