All passes correctly, except that the GS grumbles a little :
Unclosed connection! Trace: com.l2jserver.gameserver.model.actor.instance.L2PcInstance.restoreVisualArmors(L2PcInstance.java:17365)
java.lang.RuntimeException at com.l2jserver.L2DatabaseFactory.getConnection(L2DatabaseFactory.java:273)
at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.restoreVisualArmors(L2PcInstance.java:17365)
at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.restore(L2PcInstance.java:7999)
at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.load(L2PcInstance.java:1316)
at com.l2jserver.gameserver.network.L2GameClient.loadCharFromDisk(L2GameClient.java:581)
at com.l2jserver.gameserver.network.clientpackets.CharacterSelect.runImpl(CharacterSelect.java:133)
at com.l2jserver.gameserver.network.clientpackets.L2GameClientPacket.run(L2GameClientPacket.java:70)
at com.l2jserver.gameserver.network.L2GameClient.run(L2GameClient.java:1092)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Unclosed connection! Trace: com.l2jserver.gameserver.model.actor.instance.L2PcInstance.storeVisualArmors(L2PcInstance.java:17424)
java.lang.RuntimeException
at com.l2jserver.L2DatabaseFactory.getConnection(L2DatabaseFactory.java:273)
at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.storeVisualArmors(L2PcInstance.java:17424)
at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.store(L2PcInstance.java:8276)
at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.store(L2PcInstance.java:9115)
at com.l2jserver.gameserver.network.L2GameClient.saveCharToDisk(L2GameClient.java:376)
at com.l2jserver.gameserver.network.L2GameClient$AutoSaveTask.run(L2GameClient.java:901)
at com.l2jserver.gameserver.ThreadPoolManager$RunnableWrapper.run(ThreadPoolManager.java:93)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Unclosed connection! Trace: com.l2jserver.gameserver.model.actor.instance.L2PcInstance.checkIfExist(L2PcInstance.java:17397)
java.lang.RuntimeException
at com.l2jserver.L2DatabaseFactory.getConnection(L2DatabaseFactory.java:273)
at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.checkIfExist(L2PcInstance.java:17397)
at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.storeVisualArmors(L2PcInstance.java:17417)
at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.store(L2PcInstance.java:8276)
at com.l2jserver.gameserver.model.actor.instance.L2PcInstance.store(L2PcInstance.java:9115)
at com.l2jserver.gameserver.network.L2GameClient.saveCharToDisk(L2GameClient.java:376)
at com.l2jserver.gameserver.network.L2GameClient$AutoSaveTask.run(L2GameClient.java:901)
at com.l2jserver.gameserver.ThreadPoolManager$RunnableWrapper.run(ThreadPoolManager.java:93)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRunAndReset(Unknown Source)
at java.util.concurrent.FutureTask.runAndReset(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(Unknown Source)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
L2Elixir – Patch 4 Is Live!
We’re working non-stop, day and night, to deliver the best possible quality and bring back what made L2Elixir special. This project is built with passion, not shortcuts — for the old-school players who remember, and the new ones who want to experience it properly. Thank you for being part of the journey. Together, we’re making L2Elixir great again ❤️ The legends never fade.
⚙️ General
Enabled Class Change service (same class type only)
ALT + B → Services → Character Development
Enabled Shift + Click on Treasure Chests Players can now identify real chests (Adena, scroll drops) and use Key / Unlock
Event deaths now cancel only debuffs, All self buffs are preserved, fixes issues with Root and similar effects
Bladedancer class can now log in even when Max Clients (2) is reached. Since an active Bladedancer is not available for every damage dealer and some players tried to abuse this via VPN or a second PC, this feature was added to keep things fair. protections applies, requires testing!
🎒 Items
Crystallizing enchanted items now gives the correct increased crystal amount (retail-like behavior)
Removed Agathion Seal Bracelet: Rudolph from Santa rewards (Gracia Final item)
Added Dualsword Craft Stamp into Milestone Exchange list
🧙 Skills
Fixed Banish Undead lethal chance
Hot Springs Malaria and similar effects now level up faster while being attacked
Warning: This guy is a big scammer, trying to sell everything, advertising for servers etc.
That's his mail address evgesha.nrnr@gmail.com , stay away!
@Atom @Celestine
Warning: This guy is a big scammer, trying to sell everything, advertising for servers etc.
That's his mail address evgesha.nrnr@gmail.com , stay away!
@Celestine
@Atom
Question
Kzah
Hello,
After the installation of Dressme : http://pastebin.com/5AYHVPit
All passes correctly, except that the GS grumbles a little :
Here are the concerned codes :
private void restoreVisualArmors() { try { Connection con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("SELECT * FROM character_visual_armors WHERE charId=?"); statement.setInt(1, getObjectId()); ResultSet rset = statement.executeQuery(); if (rset.next()) { isUsingVisualArmors(rset.getBoolean("isUsingVisual")); setVisualArmor(VisualArmors.Armor, rset.getInt("armor")); setVisualArmor(VisualArmors.Legs, rset.getInt("leggings")); setVisualArmor(VisualArmors.Feet, rset.getInt("feet")); setVisualArmor(VisualArmors.Gloves, rset.getInt("gloves")); setVisualArmor(VisualArmors.LHand, rset.getInt("lHand")); setVisualArmor(VisualArmors.Sword, rset.getInt("sword")); setVisualArmor(VisualArmors.Bow, rset.getInt("bow")); setVisualArmor(VisualArmors.Pole, rset.getInt("pole")); setVisualArmor(VisualArmors.Dual, rset.getInt("dualWeapons")); setVisualArmor(VisualArmors.BigSword, rset.getInt("bigSword")); } rset.close(); statement.close(); } catch (Exception e) { _log.log(Level.WARNING, "Could not restore " + getObjectId() + " visual armors data " + e.getMessage(), e); } }private void storeVisualArmors() { if (!checkIfExist()) { insertVisualArmors(); } // UPDATE characters SET vitality_points=?,language=? WHERE charId=?"; try { Connection con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("UPDATE character_visual_armors SET isUsingVisual=?,armor=?,leggings=?,feet=?,gloves=?,sword=?,bow=?,pole=?,dualWeapons=?,bigSword=?,lHand=? WHERE charId=?"); statement.setInt(1, isUsingVisualArmors() ? 1 : 0); statement.setInt(2, getVisualArmor(VisualArmors.Armor, true) == null ? 0 : getVisualArmor(VisualArmors.Armor, true).getItemId()); statement.setInt(3, getVisualArmor(VisualArmors.Legs, true) == null ? 0 : getVisualArmor(VisualArmors.Legs, true).getItemId()); statement.setInt(4, getVisualArmor(VisualArmors.Feet, true) == null ? 0 : getVisualArmor(VisualArmors.Feet, true).getItemId()); statement.setInt(5, getVisualArmor(VisualArmors.Gloves, true) == null ? 0 : getVisualArmor(VisualArmors.Gloves, true).getItemId()); statement.setInt(6, getVisualArmor(VisualArmors.Sword, true) == null ? 0 : getVisualArmor(VisualArmors.Sword, true).getItemId()); statement.setInt(7, getVisualArmor(VisualArmors.Bow, true) == null ? 0 : getVisualArmor(VisualArmors.Bow, true).getItemId()); statement.setInt(8, getVisualArmor(VisualArmors.Pole, true) == null ? 0 : getVisualArmor(VisualArmors.Pole, true).getItemId()); statement.setInt(9, getVisualArmor(VisualArmors.Dual, true) == null ? 0 : getVisualArmor(VisualArmors.Dual, true).getItemId()); statement.setInt(10, getVisualArmor(VisualArmors.BigSword, true) == null ? 0 : getVisualArmor(VisualArmors.BigSword, true).getItemId()); statement.setInt(11, getVisualArmor(VisualArmors.LHand, true) == null ? 0 : getVisualArmor(VisualArmors.LHand, true).getItemId()); statement.setInt(12, getObjectId()); statement.execute(); } catch (Exception e) { _log.log(Level.WARNING, "Could not store character " + getObjectId() + " visual armors data: ", e); } }private boolean checkIfExist() { try { Connection con = L2DatabaseFactory.getInstance().getConnection(); PreparedStatement statement = con.prepareStatement("SELECT charId FROM character_visual_armors WHERE charId=?"); statement.setInt(1, getObjectId()); try (ResultSet rset = statement.executeQuery()) { if (rset.next()) { return true; } } } catch (Exception e) { _log.log(Level.WARNING, "Could not restore " + getObjectId() + " visual armors data " + e.getMessage(), e); } return false; }How to solve these problems?
Thank You.
4 answers to this question
Recommended Posts