Advertisement
Guest User

Update for L2PcInstance DressMe Command.

a guest
Aug 29th, 2012
748
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 13.76 KB | None | 0 0
  1. ### Eclipse Workspace Patch 1.0
  2. #P L2J_Server
  3. Index: java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java
  4. ===================================================================
  5. --- java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java    (revision 5563)
  6. +++ java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java    (working copy)
  7. @@ -7466,6 +7466,7 @@
  8.                 player.restoreUISettings();
  9.            
  10.             player.restoreZoneRestartLimitTime();
  11. +           player.restoreVisualArmors();
  12.         }
  13.         catch (Exception e)
  14.         {
  15. @@ -7728,6 +7729,7 @@
  16.         storeCharSub();
  17.         storeEffect(storeActiveEffects);
  18.         storeItemReuseDelay();
  19. +       storeVisualArmors();
  20.         transformInsertInfo();
  21.         if(Config.STORE_RECIPE_SHOPLIST)
  22.             storeRecipeShopList();
  23. @@ -15471,4 +15473,300 @@
  24.     {
  25.         globalProfessionChangeListeners.remove(listener);
  26.     }
  27. +
  28. +   private void restoreVisualArmors()
  29. +   {
  30. +       try
  31. +       {
  32. +           Connection con = L2DatabaseFactory.getInstance().getConnection();
  33. +           PreparedStatement statement = con.prepareStatement("SELECT * FROM character_visual_armors WHERE charId=?");
  34. +           statement.setInt(1, getObjectId());
  35. +           ResultSet rset = statement.executeQuery();
  36. +           if (rset.next())
  37. +           {
  38. +               isUsingVisualArmors(rset.getBoolean("isUsingVisual"));
  39. +               setVisualArmor(VisualArmors.Armor, rset.getInt("armor"));
  40. +               setVisualArmor(VisualArmors.Legs, rset.getInt("leggings"));
  41. +               setVisualArmor(VisualArmors.Feet, rset.getInt("feet"));
  42. +               setVisualArmor(VisualArmors.Gloves, rset.getInt("gloves"));
  43. +               setVisualArmor(VisualArmors.LHand, rset.getInt("lHand"));
  44. +               setVisualArmor(VisualArmors.Sword, rset.getInt("sword"));
  45. +               setVisualArmor(VisualArmors.Bow, rset.getInt("bow"));
  46. +               setVisualArmor(VisualArmors.Pole, rset.getInt("pole"));
  47. +               setVisualArmor(VisualArmors.Dual, rset.getInt("dualWeapons"));
  48. +               setVisualArmor(VisualArmors.BigSword, rset.getInt("bigSword"));
  49. +           }
  50. +       }
  51. +       catch (Exception e)
  52. +       {
  53. +           _log.log(Level.WARNING, "Could not restore " + getObjectId() + " visual armors data " + e.getMessage(), e);
  54. +       }
  55. +   }
  56. +  
  57. +   private boolean checkIfExist()
  58. +   {
  59. +       try
  60. +       {
  61. +           Connection con = L2DatabaseFactory.getInstance().getConnection();
  62. +           PreparedStatement statement = con.prepareStatement("SELECT charId FROM character_visual_armors WHERE charId=?");
  63. +           statement.setInt(1, getObjectId());
  64. +           try (ResultSet rset = statement.executeQuery()) {
  65. +               if (rset.next())
  66. +                   return true;
  67. +           }
  68. +       }
  69. +       catch (Exception e)
  70. +       {
  71. +           _log.log(Level.WARNING, "Could not restore " + getObjectId() + " visual armors data " + e.getMessage(), e);
  72. +       }
  73. +       return false;
  74. +   }
  75. +  
  76. +   private void storeVisualArmors()
  77. +   {
  78. +       if (!checkIfExist())
  79. +           insertVisualArmors();
  80. +       //UPDATE characters SET vitality_points=?,language=? WHERE charId=?";
  81. +       try
  82. +       {
  83. +           Connection con = L2DatabaseFactory.getInstance().getConnection();
  84. +           PreparedStatement statement = con.prepareStatement("UPDATE character_visual_armors SET isUsingVisual=?,armor=?,leggings=?,feet=?,gloves=?,sword=?,bow=?,pole=?,dualWeapons=?,bigSword=?,lHand=? WHERE charId=?");
  85. +           statement.setInt(1, isUsingVisualArmors() ? 1 : 0);
  86. +           statement.setInt(2, getVisualArmor(VisualArmors.Armor, true) == null ? 0 : getVisualArmor(VisualArmors.Armor, true).getItemId());
  87. +           statement.setInt(3, getVisualArmor(VisualArmors.Legs, true) == null ? 0 : getVisualArmor(VisualArmors.Legs, true).getItemId());
  88. +           statement.setInt(4, getVisualArmor(VisualArmors.Feet, true) == null ? 0 : getVisualArmor(VisualArmors.Feet, true).getItemId());
  89. +           statement.setInt(5, getVisualArmor(VisualArmors.Gloves, true) == null ? 0 : getVisualArmor(VisualArmors.Gloves, true).getItemId());
  90. +           statement.setInt(6, getVisualArmor(VisualArmors.Sword, true) == null ? 0 : getVisualArmor(VisualArmors.Sword, true).getItemId());
  91. +           statement.setInt(7, getVisualArmor(VisualArmors.Bow, true) == null ? 0 : getVisualArmor(VisualArmors.Bow, true).getItemId());
  92. +           statement.setInt(8, getVisualArmor(VisualArmors.Pole, true) == null ? 0 : getVisualArmor(VisualArmors.Pole, true).getItemId());
  93. +           statement.setInt(9, getVisualArmor(VisualArmors.Dual, true) == null ? 0 : getVisualArmor(VisualArmors.Dual, true).getItemId());
  94. +           statement.setInt(10, getVisualArmor(VisualArmors.BigSword, true) == null ? 0 : getVisualArmor(VisualArmors.BigSword, true).getItemId());
  95. +           statement.setInt(11, getVisualArmor(VisualArmors.LHand, true) == null ? 0 : getVisualArmor(VisualArmors.LHand, true).getItemId());
  96. +           statement.setInt(12, getObjectId());
  97. +           statement.execute();
  98. +       }
  99. +       catch (Exception e)
  100. +       {
  101. +           _log.log(Level.WARNING, "Could not store character " + getObjectId() + " visual armors data: ", e);
  102. +       }
  103. +   }
  104. +
  105. +   private boolean insertVisualArmors()
  106. +   {
  107. +       try
  108. +       {
  109. +           Connection con = L2DatabaseFactory.getInstance().getConnection();
  110. +           PreparedStatement statement = con.prepareStatement("INSERT INTO character_visual_armors (charId) values (?)");
  111. +           statement.setInt(1, getObjectId());
  112. +           statement.executeUpdate();
  113. +       }
  114. +       catch (Exception e)
  115. +       {
  116. +           _log.log(Level.SEVERE, "Could not insert character " + getObjectId() + " visual armors data: " + e.getMessage(), e);
  117. +           return false;
  118. +       }
  119. +       return true;
  120. +   }
  121. +  
  122. +   boolean isUsingVisualArmors = false;
  123. +
  124. +   public boolean isUsingVisualArmors() {
  125. +       return isUsingVisualArmors;
  126. +   }
  127. +
  128. +   public void isUsingVisualArmors(boolean _isUsingVisualArmors) {
  129. +       isUsingVisualArmors = _isUsingVisualArmors;
  130. +   }
  131. +
  132. +   public enum VisualArmors {
  133. +       Sword,
  134. +       Bow,
  135. +       Pole,
  136. +       Dual,
  137. +       BigSword,
  138. +       RHand,
  139. +       LHand,
  140. +       Armor,
  141. +       Legs,
  142. +       Feet,
  143. +       Gloves,
  144. +       Cloak
  145. +   }
  146. +
  147. +   int visualArmors[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
  148. +
  149. +   public void setVisualArmor(VisualArmors position, int itemId) {
  150. +       visualArmors[position.ordinal()] = itemId;
  151. +   }
  152. +
  153. +   public L2Item getVisualArmor(VisualArmors position, boolean forceShow) {
  154. +       switch (position) {
  155. +           case Sword:
  156. +               if (visualArmors[VisualArmors.Sword.ordinal()] > 0)
  157. +                   return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Sword.ordinal()]);
  158. +               if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) != null)
  159. +                   switch (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getWeaponItem().getItemType()) {
  160. +                       case SWORD:
  161. +                       case BLUNT:
  162. +                       case DAGGER:
  163. +                       case ETC:
  164. +                       case FIST:
  165. +                       case RAPIER:
  166. +                           return getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItem();
  167. +                   }
  168. +               return null;
  169. +           case Bow:
  170. +               if (visualArmors[VisualArmors.Bow.ordinal()] > 0)
  171. +                   return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Bow.ordinal()]);
  172. +               if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) != null)
  173. +                   switch (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getWeaponItem().getItemType()) {
  174. +                       case BOW:
  175. +                       case CROSSBOW:
  176. +                           return getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItem();
  177. +                   }
  178. +               return null;
  179. +           case Pole:
  180. +               if (visualArmors[VisualArmors.Pole.ordinal()] > 0)
  181. +                   return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Pole.ordinal()]);
  182. +               if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) != null)
  183. +                   switch (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getWeaponItem().getItemType()) {
  184. +                       case POLE:
  185. +                           return getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItem();
  186. +                   }
  187. +               return null;
  188. +           case BigSword:
  189. +               if (visualArmors[VisualArmors.BigSword.ordinal()] > 0)
  190. +                   return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.BigSword.ordinal()]);
  191. +               if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) != null)
  192. +                   switch (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getWeaponItem().getItemType()) {
  193. +                       case ANCIENTSWORD:
  194. +                       case BIGBLUNT:
  195. +                       case BIGSWORD:
  196. +                           return getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItem();
  197. +                   }
  198. +               return null;
  199. +           case Dual:
  200. +               if (visualArmors[VisualArmors.Dual.ordinal()] > 0)
  201. +                   return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Dual.ordinal()]);
  202. +               if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) != null)
  203. +                   switch (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getWeaponItem().getItemType()) {
  204. +                       case DUAL:
  205. +                       case DUALFIST:
  206. +                       case DUALDAGGER:
  207. +                           return getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItem();
  208. +                   }
  209. +               return null;
  210. +           case RHand:
  211. +               if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND) == null && !forceShow)
  212. +                   return null;
  213. +               else if (isUsingVisualArmors() || forceShow) {
  214. +                   switch (getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getWeaponItem().getItemType()) {
  215. +                       case SWORD:
  216. +                       case BLUNT:
  217. +                       case DAGGER:
  218. +                       case ETC:
  219. +                       case FIST:
  220. +                       case RAPIER:
  221. +                           if (visualArmors[VisualArmors.Sword.ordinal()] > 0)
  222. +                               return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Sword.ordinal()]);
  223. +                           break;
  224. +                       case BOW:
  225. +                       case CROSSBOW:
  226. +                           if (visualArmors[VisualArmors.Bow.ordinal()] > 0)
  227. +                               return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Bow.ordinal()]);
  228. +                           break;
  229. +                       case POLE:
  230. +                           if (visualArmors[VisualArmors.Pole.ordinal()] > 0)
  231. +                               return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Pole.ordinal()]);
  232. +                           break;
  233. +                       case DUAL:
  234. +                       case DUALFIST:
  235. +                       case DUALDAGGER:
  236. +                           if (visualArmors[VisualArmors.Dual.ordinal()] > 0)
  237. +                               return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.Dual.ordinal()]);
  238. +                           break;
  239. +                       case ANCIENTSWORD:
  240. +                       case BIGBLUNT:
  241. +                       case BIGSWORD:
  242. +                           if (visualArmors[VisualArmors.BigSword.ordinal()] > 0)
  243. +                               return ItemTable.getInstance().getTemplate(visualArmors[VisualArmors.BigSword.ordinal()]);
  244. +                           break;
  245. +                       default:
  246. +                           return getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItem();
  247. +                   }
  248. +               }
  249. +               return getInventory().getPaperdollItem(Inventory.PAPERDOLL_RHAND).getItem();
  250. +           case LHand:
  251. +               if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND) == null) {
  252. +                   if (visualArmors[position.ordinal()] > 0 && forceShow)
  253. +                       return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
  254. +                   return null;
  255. +               }
  256. +               else if ((isUsingVisualArmors() || forceShow) && visualArmors[position.ordinal()] > 0) {
  257. +                   L2Item item = ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
  258. +                   if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND).isArmor() && item instanceof L2Armor)
  259. +                       return item;
  260. +                   return null;
  261. +               }
  262. +               else
  263. +                   return getInventory().getPaperdollItem(Inventory.PAPERDOLL_LHAND).getItem();
  264. +           case Armor:
  265. +               if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST) == null) {
  266. +                   if (visualArmors[position.ordinal()] > 0 && forceShow)
  267. +                       return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
  268. +                   return null;
  269. +               }
  270. +               else if ((isUsingVisualArmors() || forceShow) && visualArmors[position.ordinal()] > 0)
  271. +                   return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
  272. +               else
  273. +                   return getInventory().getPaperdollItem(Inventory.PAPERDOLL_CHEST).getItem();
  274. +           case Legs:
  275. +               if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS) == null) {
  276. +                   if (visualArmors[position.ordinal()] > 0 && forceShow)
  277. +                       return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
  278. +                   return null;
  279. +               }
  280. +               else if (isUsingVisualArmors() || forceShow) {
  281. +                   L2Item armor = getVisualArmor(VisualArmors.Armor, true);
  282. +                   if (armor.getBodyPart() == L2Item.SLOT_FULL_ARMOR)
  283. +                       return null;
  284. +                   if (visualArmors[position.ordinal()] > 0)
  285. +                       return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
  286. +                   return getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS).getItem();
  287. +               }
  288. +               else
  289. +                   return getInventory().getPaperdollItem(Inventory.PAPERDOLL_LEGS).getItem();
  290. +           case Feet:
  291. +               if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET) == null) {
  292. +                   if (visualArmors[position.ordinal()] > 0 && forceShow)
  293. +                       return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
  294. +                   return null;
  295. +               }
  296. +               else if ((isUsingVisualArmors() || forceShow) && visualArmors[position.ordinal()] > 0)
  297. +                   return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
  298. +               else
  299. +                   return getInventory().getPaperdollItem(Inventory.PAPERDOLL_FEET).getItem();
  300. +           case Gloves:
  301. +               if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES) == null) {
  302. +                   if (visualArmors[position.ordinal()] > 0 && forceShow)
  303. +                       return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
  304. +                   return null;
  305. +               }
  306. +               else if ((isUsingVisualArmors() || forceShow) && visualArmors[position.ordinal()] > 0)
  307. +                   return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
  308. +               else
  309. +                   return getInventory().getPaperdollItem(Inventory.PAPERDOLL_GLOVES).getItem();
  310. +           case Cloak:
  311. +               if (getInventory().getPaperdollItem(Inventory.PAPERDOLL_CLOAK) == null) {
  312. +                   if (visualArmors[position.ordinal()] > 0 && forceShow)
  313. +                       return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
  314. +                   return null;
  315. +               }
  316. +               else if ((isUsingVisualArmors() || forceShow) && visualArmors[position.ordinal()] > 0)
  317. +                   return ItemTable.getInstance().getTemplate(visualArmors[position.ordinal()]);
  318. +               else
  319. +                   return getInventory().getPaperdollItem(Inventory.PAPERDOLL_CLOAK).getItem();
  320. +       }
  321. +       return null;
  322. +   }
  323.  }
  324. \ No newline at end of file
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement