Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ### Eclipse Workspace Patch 1.0
- #P L2J_Server
- Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
- ===================================================================
- --- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (revision 5563)
- +++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java (working copy)
- @@ -7466,6 +7466,7 @@
- player.restoreUISettings();
- player.restoreZoneRestartLimitTime();
- + player.restoreVisualArmors();
- }
- catch (Exception e)
- {
- @@ -7728,6 +7729,7 @@
- storeCharSub();
- storeEffect(storeActiveEffects);
- storeItemReuseDelay();
- + storeVisualArmors();
- transformInsertInfo();
- if(Config.STORE_RECIPE_SHOPLIST)
- storeRecipeShopList();
- @@ -15471,4 +15473,300 @@
- {
- globalProfessionChangeListeners.remove(listener);
- }
- +
- + 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"));
- + }
- + }
- + catch (Exception e)
- + {
- + _log.log(Level.WARNING, "Could not restore " + getObjectId() + " visual armors data " + e.getMessage(), 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;
- + }
- +
- + 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 insertVisualArmors()
- + {
- + try
- + {
- + Connection con = L2DatabaseFactory.getInstance().getConnection();
- + PreparedStatement statement = con.prepareStatement("INSERT INTO character_visual_armors (charId) values (?)");
- + statement.setInt(1, getObjectId());
- + statement.executeUpdate();
- + }
- + catch (Exception e)
- + {
- + _log.log(Level.SEVERE, "Could not insert character " + getObjectId() + " visual armors data: " + e.getMessage(), e);
- + return false;
- + }
- + return true;
- + }
- +
- + boolean isUsingVisualArmors = false;
- +
- + public boolean isUsingVisualArmors() {
- + return isUsingVisualArmors;
- + }
- +
- + public void isUsingVisualArmors(boolean _isUsingVisualArmors) {
- + isUsingVisualArmors = _isUsingVisualArmors;
- + }
- +
- + public enum VisualArmors {
- + Sword,
- + Bow,
- + Pole,
- + Dual,
- + BigSword,
- + RHand,
- + LHand,
- + Armor,
- + Legs,
- + Feet,
- + Gloves,
- + Cloak
- + }
- +
- + int visualArmors[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
- +
- + public void setVisualArmor(VisualArmors position, int itemId) {
- + visualArmors[position.ordinal()] = itemId;
- + }
- +
- + public L2Item getVisualArmor(VisualArmors position, boolean forceShow) {
- + switch (position) {
- + case Sword:
- + if (visualArmors[VisualArmors.Sword.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Sword.ordinal()]);
- + if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) != null)
- + switch (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getWeaponItem().getItemType()) {
- + case SWORD:
- + case BLUNT:
- + case DAGGER:
- + case ETC:
- + case FIST:
- + case RAPIER:
- + return getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItem();
- + }
- + return null;
- + case Bow:
- + if (visualArmors[VisualArmors.Bow.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Bow.ordinal()]);
- + if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) != null)
- + switch (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getWeaponItem().getItemType()) {
- + case BOW:
- + case CROSSBOW:
- + return getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItem();
- + }
- + return null;
- + case Pole:
- + if (visualArmors[VisualArmors.Pole.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Pole.ordinal()]);
- + if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) != null)
- + switch (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getWeaponItem().getItemType()) {
- + case POLE:
- + return getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItem();
- + }
- + return null;
- + case BigSword:
- + if (visualArmors[VisualArmors.BigSword.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.BigSword.ordinal()]);
- + if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) != null)
- + switch (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getWeaponItem().getItemType()) {
- + case ANCIENTSWORD:
- + case BIGBLUNT:
- + case BIGSWORD:
- + return getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItem();
- + }
- + return null;
- + case Dual:
- + if (visualArmors[VisualArmors.Dual.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Dual.ordinal()]);
- + if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) != null)
- + switch (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getWeaponItem().getItemType()) {
- + case DUAL:
- + case DUALFIST:
- + case DUALDAGGER:
- + return getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItem();
- + }
- + return null;
- + case RHand:
- + if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) == null && !forceShow)
- + return null;
- + else if (isUsingVisualArmors() || forceShow) {
- + switch (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getWeaponItem().getItemType()) {
- + case SWORD:
- + case BLUNT:
- + case DAGGER:
- + case ETC:
- + case FIST:
- + case RAPIER:
- + if (visualArmors[VisualArmors.Sword.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Sword.ordinal()]);
- + break;
- + case BOW:
- + case CROSSBOW:
- + if (visualArmors[VisualArmors.Bow.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Bow.ordinal()]);
- + break;
- + case POLE:
- + if (visualArmors[VisualArmors.Pole.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Pole.ordinal()]);
- + break;
- + case DUAL:
- + case DUALFIST:
- + case DUALDAGGER:
- + if (visualArmors[VisualArmors.Dual.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Dual.ordinal()]);
- + break;
- + case ANCIENTSWORD:
- + case BIGBLUNT:
- + case BIGSWORD:
- + if (visualArmors[VisualArmors.BigSword.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.BigSword.ordinal()]);
- + break;
- + default:
- + return getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItem();
- + }
- + }
- + return getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItem();
- + case LHand:
- + if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND) == null) {
- + if (visualArmors[position.ordinal()] > 0 && forceShow)
- + return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
- + return null;
- + }
- + else if ((isUsingVisualArmors() || forceShow) && visualArmors[position.ordinal()] > 0) {
- + L2Item item = ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
- + if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND).isArmor() && item instanceof L2Armor)
- + return item;
- + return null;
- + }
- + else
- + return getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND).getItem();
- + case Armor:
- + if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST) == null) {
- + if (visualArmors[position.ordinal()] > 0 && forceShow)
- + return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
- + return null;
- + }
- + else if ((isUsingVisualArmors() || forceShow) && visualArmors[position.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
- + else
- + return getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST).getItem();
- + case Legs:
- + if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS) == null) {
- + if (visualArmors[position.ordinal()] > 0 && forceShow)
- + return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
- + return null;
- + }
- + else if (isUsingVisualArmors() || forceShow) {
- + L2Item armor = getVisualArmor(VisualArmors.Armor, true);
- + if (armor.getBodyPart() == L2Item.SLOT_FULL_ARMOR)
- + return null;
- + if (visualArmors[position.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
- + return getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS).getItem();
- + }
- + else
- + return getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS).getItem();
- + case Feet:
- + if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET) == null) {
- + if (visualArmors[position.ordinal()] > 0 && forceShow)
- + return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
- + return null;
- + }
- + else if ((isUsingVisualArmors() || forceShow) && visualArmors[position.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
- + else
- + return getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET).getItem();
- + case Gloves:
- + if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES) == null) {
- + if (visualArmors[position.ordinal()] > 0 && forceShow)
- + return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
- + return null;
- + }
- + else if ((isUsingVisualArmors() || forceShow) && visualArmors[position.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
- + else
- + return getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES).getItem();
- + case Cloak:
- + if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_CLOAK) == null) {
- + if (visualArmors[position.ordinal()] > 0 && forceShow)
- + return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
- + return null;
- + }
- + else if ((isUsingVisualArmors() || forceShow) && visualArmors[position.ordinal()] > 0)
- + return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
- + else
- + return getInventory().getPaperdollItem(Inventory.PAPERDOLL_CLOAK).getItem();
- + }
- + return null;
- + }
- }
- \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement