コード例 #1
0
  /**
   * Method saveData.
   *
   * @param cw CursedWeapon
   */
  private void saveData(CursedWeapon cw) {
    Connection con = null;
    PreparedStatement statement = null;

    try {
      con = DatabaseFactory.getInstance().getConnection();
      statement = con.prepareStatement("DELETE FROM cursed_weapons WHERE item_id = ?");
      statement.setInt(1, cw.getItemId());
      statement.executeUpdate();

      if (cw.isActive()) {
        DbUtils.close(statement);
        statement =
            con.prepareStatement(
                "REPLACE INTO cursed_weapons (item_id, player_id, player_karma, player_pkkills, nb_kills, x, y, z, end_time) VALUES (?,?,?,?,?,?,?,?,?)");
        statement.setInt(1, cw.getItemId());
        statement.setInt(2, cw.getPlayerId());
        statement.setInt(3, cw.getPlayerKarma());
        statement.setInt(4, cw.getPlayerPkKills());
        statement.setInt(5, cw.getNbKills());
        statement.setInt(6, cw.getLoc().getX());
        statement.setInt(7, cw.getLoc().getY());
        statement.setInt(8, cw.getLoc().getZ());
        statement.setLong(9, cw.getEndTime() / 1000);
        statement.executeUpdate();
      }
    } catch (SQLException e) {
      _log.error("CursedWeapon: Failed to save data: " + e);
    } finally {
      DbUtils.closeQuietly(con, statement);
    }
  }
コード例 #2
0
  /**
   * Method emptyPlayerCursedWeapon.
   *
   * @param playerId int
   * @param itemId int
   * @param cw CursedWeapon
   */
  private void emptyPlayerCursedWeapon(int playerId, int itemId, CursedWeapon cw) {
    Connection con = null;
    PreparedStatement statement = null;

    try {
      con = DatabaseFactory.getInstance().getConnection();
      statement = con.prepareStatement("DELETE FROM items WHERE owner_id=? AND item_id=?");
      statement.setInt(1, playerId);
      statement.setInt(2, itemId);
      statement.executeUpdate();
      DbUtils.close(statement);
      statement = con.prepareStatement("UPDATE characters SET karma=?, pkkills=? WHERE obj_id=?");
      statement.setInt(1, cw.getPlayerKarma());
      statement.setInt(2, cw.getPlayerPkKills());
      statement.setInt(3, playerId);

      if (statement.executeUpdate() != 1) {
        _log.warn("Error while updating karma & pkkills for userId " + cw.getPlayerId());
      }

      removeFromDb(itemId);
    } catch (SQLException e) {
      _log.error("", e);
    } finally {
      DbUtils.closeQuietly(con, statement);
    }
  }
コード例 #3
0
  /**
   * Method endOfLife.
   *
   * @param cw CursedWeapon
   */
  public void endOfLife(CursedWeapon cw) {
    if (cw.isActivated()) {
      Player player = cw.getOnlineOwner();

      if (player != null) {
        _log.info(
            "CursedWeaponsManager: " + cw.getName() + " being removed online from " + player + ".");
        player.abortAttack(true, true);
        player.setKarma(cw.getPlayerKarma());
        player.setPkKills(cw.getPlayerPkKills());
        player.setCursedWeaponEquippedId(0);
        player.setTransformation(0);
        player.setTransformationName(null);
        player.removeSkill(
            SkillTable.getInstance()
                .getInfo(cw.getSkillId(), player.getSkillLevel(cw.getSkillId())),
            false);
        player.getInventory().destroyItemByItemId(cw.getItemId(), 1L);
        player.broadcastCharInfo();
      } else {
        _log.info("CursedWeaponsManager: " + cw.getName() + " being removed offline.");
        Connection con = null;
        PreparedStatement statement = null;

        try {
          con = DatabaseFactory.getInstance().getConnection();
          statement = con.prepareStatement("DELETE FROM items WHERE owner_id=? AND item_id=?");
          statement.setInt(1, cw.getPlayerId());
          statement.setInt(2, cw.getItemId());
          statement.executeUpdate();
          DbUtils.close(statement);
          statement =
              con.prepareStatement(
                  "DELETE FROM character_skills WHERE char_obj_id=? AND skill_id=?");
          statement.setInt(1, cw.getPlayerId());
          statement.setInt(2, cw.getSkillId());
          statement.executeUpdate();
          DbUtils.close(statement);
          statement =
              con.prepareStatement("UPDATE characters SET karma=?, pkkills=? WHERE obj_Id=?");
          statement.setInt(1, cw.getPlayerKarma());
          statement.setInt(2, cw.getPlayerPkKills());
          statement.setInt(3, cw.getPlayerId());
          statement.executeUpdate();
        } catch (SQLException e) {
          _log.warn("CursedWeaponsManager: Could not delete : " + e);
        } finally {
          DbUtils.closeQuietly(con, statement);
        }
      }
    } else if ((cw.getPlayer() != null)
        && (cw.getPlayer().getInventory().getItemByItemId(cw.getItemId()) != null)) {
      Player player = cw.getPlayer();

      if (!cw.getPlayer().getInventory().destroyItemByItemId(cw.getItemId(), 1)) {
        _log.info("CursedWeaponsManager[453]: Error! Cursed weapon not found!!!");
      }

      player.sendChanges();
      player.broadcastUserInfo();
    } else if (cw.getItem() != null) {
      cw.getItem().deleteMe();
      cw.getItem().delete();
      _log.info("CursedWeaponsManager: " + cw.getName() + " item has been removed from World.");
    }

    cw.initWeapon();
    removeFromDb(cw.getItemId());
    announce(new SystemMessage(SystemMessage.S1_HAS_DISAPPEARED_CW).addString(cw.getName()));
  }