I didnt touch enterworld at all.
Plus that if hero_end_date is 0 (witch is forever) the character logs in as a hero normally no problem.
maybe there is something wrong here?
HeroCustomItem.java
if(player == null)
return;
- con = L2DatabaseFactory.getInstance().getConnection(false);
- PreparedStatement stmt = con.prepareStatement(INSERT_DATA);
-
+ con = L2DatabaseFactory.getInstance().getConnection(false);
+
+ PreparedStatement stmt = con.prepareStatement(INSERT_DATA);
+
stmt.setInt(1, player.getObjectId());
stmt.setString(2, player.getName());
stmt.setInt(3, 1);
stmt.setInt(4, player.isNoble() ? 1 : 0);
stmt.setInt(5, player.isDonator() ? 1 : 0);
- stmt.setLong(6, heroTime == 0 ? 0 : System.currentTimeMillis() + heroTime);
+
+ if (player.isHero())
+ {
+ stmt.setLong(6, player.getHeroDate(player.getObjectId()) + heroTime);
+ }
+ else
+ {
+ stmt.setLong(6, heroTime == 0 ? 0 : System.currentTimeMillis() + heroTime);
+ }
+
+ stmt.setLong(7, player.isDonator() ? 0 : player.getDonatorDate(player.getObjectId()));
stmt.execute();
stmt.close();
stmt = null;
and here is the part for L2PcInstance.java
+
/**
+ * Gets Hero end time
+ *
+ * @return time, 0 if time is infinitive, or -1 if error
+ */
+
+ public long getHeroDate(int obj_Id)
+ {
+ Connection con = null;
+ int out = -1;
+
+ try
+ {
+ con = L2DatabaseFactory.getInstance().getConnection(false);
+ PreparedStatement stmt = con.prepareStatement("SELECT hero_end_date FROM characters_custom_data WHERE obj_Id=" + obj_Id);
+ ResultSet rs = stmt.executeQuery();
+ if (rs.next())
+ {
+ out = rs.getInt(1);
+ }
+ rs.close();
+ rs = null;
+ stmt.close();
+ stmt = null;
+ }
+ catch (Exception e) {
+ if(Config.ENABLE_ALL_EXCEPTIONS)
+ e.printStackTrace();
+
+ _log.log(Level.SEVERE, "Error: could not get hero_end_date from database: ", e);
+ }
+ finally {
+ CloseUtil.close(con);
+ con = null;
+ }
+ return out;
+ }
+
+ /**
btw thanks for ur interest in this :)