public void deleteSpawn(L2Spawn spawn, boolean updateDb) { if (!_spawntable.remove(spawn)) return; if (updateDb) { try (Connection con = L2DatabaseFactory.getInstance().getConnection()) { PreparedStatement statement = con.prepareStatement( "DELETE FROM spawnlist WHERE locx=? AND locy=? AND locz=? AND npc_templateid=? AND heading=?"); statement.setInt(1, spawn.getLocx()); statement.setInt(2, spawn.getLocy()); statement.setInt(3, spawn.getLocz()); statement.setInt(4, spawn.getNpcId()); statement.setInt(5, spawn.getHeading()); statement.execute(); statement.close(); } catch (Exception e) { // problem with deleting spawn _log.warning("SpawnTable: Spawn " + spawn + " could not be removed from DB: " + e); } } }
public void addNewSpawn(L2Spawn spawn, boolean storeInDb) { _spawntable.add(spawn); if (storeInDb) { try (Connection con = L2DatabaseFactory.getInstance().getConnection()) { PreparedStatement statement = con.prepareStatement( "INSERT INTO spawnlist (npc_templateid,locx,locy,locz,heading,respawn_delay) values(?,?,?,?,?,?)"); statement.setInt(1, spawn.getNpcId()); statement.setInt(2, spawn.getLocx()); statement.setInt(3, spawn.getLocy()); statement.setInt(4, spawn.getLocz()); statement.setInt(5, spawn.getHeading()); statement.setInt(6, spawn.getRespawnDelay() / 1000); statement.execute(); statement.close(); } catch (Exception e) { // problem with storing spawn _log.warning("SpawnTable: Could not store spawn in the DB:" + e); } } }
public void addNewSpawn( L2Spawn spawnDat, long respawnTime, double currentHP, double currentMP, boolean storeInDb) { if (spawnDat == null) return; final int bossId = spawnDat.getNpcId(); if (_spawns.containsKey(bossId)) return; final long time = Calendar.getInstance().getTimeInMillis(); SpawnTable.getInstance().addNewSpawn(spawnDat, false); if (respawnTime == 0L || (time > respawnTime)) { L2RaidBossInstance raidboss = null; if (bossId == 25328) raidboss = DayNightSpawnManager.getInstance().handleBoss(spawnDat); else raidboss = (L2RaidBossInstance) spawnDat.doSpawn(); if (raidboss != null) { currentHP = (currentHP == 0) ? raidboss.getMaxHp() : currentHP; currentMP = (currentMP == 0) ? raidboss.getMaxMp() : currentMP; raidboss.setCurrentHp(currentHP); raidboss.setCurrentMp(currentMP); raidboss.setRaidStatus(StatusEnum.ALIVE); _bosses.put(bossId, raidboss); final StatsSet info = new StatsSet(); info.set("currentHP", currentHP); info.set("currentMP", currentMP); info.set("respawnTime", 0L); _storedInfo.put(bossId, info); } } else { long spawnTime = respawnTime - Calendar.getInstance().getTimeInMillis(); _schedules.put( bossId, ThreadPoolManager.getInstance().scheduleGeneral(new spawnSchedule(bossId), spawnTime)); } _spawns.put(bossId, spawnDat); if (storeInDb) { try (Connection con = L2DatabaseFactory.getInstance().getConnection()) { PreparedStatement statement = con.prepareStatement( "INSERT INTO raidboss_spawnlist (boss_id,loc_x,loc_y,loc_z,heading,respawn_time,currentHp,currentMp) values(?,?,?,?,?,?,?,?)"); statement.setInt(1, spawnDat.getNpcId()); statement.setInt(2, spawnDat.getLocx()); statement.setInt(3, spawnDat.getLocy()); statement.setInt(4, spawnDat.getLocz()); statement.setInt(5, spawnDat.getHeading()); statement.setLong(6, respawnTime); statement.setDouble(7, currentHP); statement.setDouble(8, currentMP); statement.execute(); statement.close(); } catch (Exception e) { // problem with storing spawn _log.log( Level.WARNING, "RaidBossSpawnManager: Could not store raidboss #" + bossId + " in the DB:" + e.getMessage(), e); } } }