Пример #1
0
  public void removeFromTrunk(int id, int qua, Player player) {
    if (player.getCurTrunk().getId() != this.getId()) return;

    Object object = World.data.getObject(id);

    if (object == null) return;

    // Si le joueur n'a pas l'item dans son coffre
    if (this.getObjects().get(id) == null) {
      Log.addToLog(
          "Le joueur "
              + player.getName()
              + " a tenter de retirer un objet dans un coffre qu'il n'avait pas.");
      return;
    }

    Object object2 = player.getSimilarItem(object);

    String str = "";

    int newQua = object.getQuantity() - qua;

    if (object2 == null) {
      // S'il ne reste rien dans le coffre
      if (newQua <= 0) {
        // On retire l'item du coffre
        this.getObjects().remove(id);
        // On l'ajoute au joueur
        player.getItems().put(id, object);

        // On envoie les packets
        SocketManager.GAME_SEND_OAKO_PACKET(player, object);
        str = "O-" + id;

      } else {
        // On crée une copy de l'item dans le coffre
        object2 = Object.getClone(object, qua);
        // On l'ajoute au monde
        World.data.addObject(object2, true);
        // On retire X objet du coffre
        object.setQuantity(newQua);
        // On l'ajoute au joueur
        player.getItems().put(object2.getId(), object2);
        // On envoie les packets
        SocketManager.GAME_SEND_OAKO_PACKET(player, object2);
        str =
            "O+"
                + object.getId()
                + "|"
                + object.getQuantity()
                + "|"
                + object.getTemplate().getId()
                + "|"
                + object.parseStatsString();
      }
    } else {
      // S'il ne reste rien dans le coffre
      if (newQua <= 0) {
        // On retire l'item du coffre
        this.getObjects().remove(object.getId());
        World.data.removeObject(object.getId());
        // On Modifie la quantité de l'item du sac du joueur
        object2.setQuantity(object2.getQuantity() + object.getQuantity());
        // On envoie les packets
        SocketManager.GAME_SEND_OBJECT_QUANTITY_PACKET(player, object2);
        str = "O-" + id;
      } else { // S'il reste des objets dans le coffre
        // On retire X objet du coffre
        object.setQuantity(newQua);
        // On ajoute X objets au joueurs
        object2.setQuantity(object2.getQuantity() + qua);
        // On envoie les packets
        SocketManager.GAME_SEND_OBJECT_QUANTITY_PACKET(player, object2);
        str =
            "O+"
                + object.getId()
                + "|"
                + object.getQuantity()
                + "|"
                + object.getTemplate().getId()
                + "|"
                + object.parseStatsString();
      }
    }

    for (Player p : player.getMap().getPlayers())
      if (p.getCurTrunk() != null && getId() == p.getCurTrunk().getId())
        SocketManager.GAME_SEND_EsK_PACKET(p, str);

    SocketManager.GAME_SEND_Ow_PACKET(player);
    World.database.getTrunkData().update(this);
  }
Пример #2
0
  public void addInTrunk(int id, int qua, Player player) {
    if (player.getCurTrunk().getId() != this.getId()) return;

    if (this.getObjects().size()
        >= 80) { // Le plus grand c'est pour si un admin ajoute des objets via la bdd...
      SocketManager.GAME_SEND_MESSAGE(
          player,
          "Le nombre d'objets maximal de ce coffre à été atteint !",
          Server.config.getMotdColor());
      return;
    }

    Object object = World.data.getObject(id);

    if (object == null) return;

    if (player.getItems().get(id) == null) {
      Log.addToLog(
          "Le joueur "
              + player.getName()
              + " a tenter d'ajouter un objet dans un coffre qu'il n'avait pas.");
      return;
    }

    String str = "";

    // Si c'est un item équipé ...
    if (object.getPosition() != ObjectPosition.NO_EQUIPED) return;

    Object TrunkObj = this.getSimilarTrunkItem(object);
    int newQua = object.getQuantity() - qua;

    if (TrunkObj == null) { // S'il n'y pas d'item du meme Template
      // S'il ne reste pas d'item dans le sac
      if (newQua <= 0) {
        // On enleve l'objet du sac du joueur
        player.removeItem(object.getId());
        // On met l'objet du sac dans le coffre, avec la meme quantité
        this.getObjects().put(object.getId(), object);
        str =
            "O+"
                + object.getId()
                + "|"
                + object.getQuantity()
                + "|"
                + object.getTemplate().getId()
                + "|"
                + object.parseStatsString();
        SocketManager.GAME_SEND_REMOVE_ITEM_PACKET(player, id);

      } else { // S'il reste des objets au joueur
        // on modifie la quantité d'item du sac
        object.setQuantity(newQua);
        // On ajoute l'objet au coffre et au monde
        TrunkObj = Object.getClone(object, qua);
        World.data.addObject(TrunkObj, true);
        this.getObjects().put(TrunkObj.getId(), TrunkObj);

        // Envoie des packets
        str =
            "O+"
                + TrunkObj.getId()
                + "|"
                + TrunkObj.getQuantity()
                + "|"
                + TrunkObj.getTemplate().getId()
                + "|"
                + TrunkObj.parseStatsString();
        SocketManager.GAME_SEND_OBJECT_QUANTITY_PACKET(player, object);
      }
    } else { // S'il y avait un item du meme template
      // S'il ne reste pas d'item dans le sac
      if (newQua <= 0) {
        // On enleve l'objet du sac du joueur
        player.removeItem(object.getId());
        // On enleve l'objet du monde
        World.data.removeObject(object.getId());
        // On ajoute la quantité a l'objet dans le coffre
        TrunkObj.setQuantity(TrunkObj.getQuantity() + object.getQuantity());
        // on envoie l'ajout au coffre de l'objet
        str =
            "O+"
                + TrunkObj.getId()
                + "|"
                + TrunkObj.getQuantity()
                + "|"
                + TrunkObj.getTemplate().getId()
                + "|"
                + TrunkObj.parseStatsString();
        // on envoie la supression de l'objet du sac au joueur
        SocketManager.GAME_SEND_REMOVE_ITEM_PACKET(player, id);

      } else { // S'il restait des objets
        // on modifie la quantité d'item du sac
        object.setQuantity(newQua);
        TrunkObj.setQuantity(TrunkObj.getQuantity() + qua);
        str =
            "O+"
                + TrunkObj.getId()
                + "|"
                + TrunkObj.getQuantity()
                + "|"
                + TrunkObj.getTemplate().getId()
                + "|"
                + TrunkObj.parseStatsString();
        SocketManager.GAME_SEND_OBJECT_QUANTITY_PACKET(player, object);
      }
    }

    for (Player perso : player.getMap().getPlayers())
      if (perso.getCurTrunk() != null && getId() == perso.getCurTrunk().getId())
        SocketManager.GAME_SEND_EsK_PACKET(perso, str);

    SocketManager.GAME_SEND_Ow_PACKET(player);
    World.database.getTrunkData().update(this);
  }