Jump to content
  • 0

Problem With Custom Donator/hero System


Question

Posted
Hi, i am using L2jFrozen and i tried to use this system but it seems that i cant get it to work :/


 

The donator item was causing troubles but i aplied the fix suggested on this topic and it solved the problem.

 

Now the problem is with hero item, let me explain...

if i use hero coin i get hero status etc just fine and i see the database update my hero end date as it should

when i relog i am no longer a hero BUT in database i can still see hero value 1 and my remaining time

also if i try to use hero coin again then donator coin in some point the data in DB get messed up, it set hero 0 and updates the donator end time and the opposit....

 

Did anyone have this problem or have any idea what can be the issue??

 

Thanks in advance!

3 answers to this question

Recommended Posts

  • 0
Posted (edited)

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 :)

Edited by satanoula

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...