Advertisement
Guest User

Untitled

a guest
Dec 20th, 2016
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.98 KB | None | 0 0
  1. package com.l2jfrozen.gameserver.model.actor.instance;
  2.  
  3. import java.util.StringTokenizer;
  4.  
  5. import com.l2jfrozen.Config;
  6. import com.l2jfrozen.gameserver.datatables.sql.ItemTable;
  7. import com.l2jfrozen.gameserver.model.Inventory;
  8. import com.l2jfrozen.gameserver.model.Item;
  9. import com.l2jfrozen.gameserver.network.SystemMessageId;
  10. import com.l2jfrozen.gameserver.network.serverpackets.ActionFailed;
  11. import com.l2jfrozen.gameserver.network.serverpackets.EnchantResult;
  12. import com.l2jfrozen.gameserver.network.serverpackets.ItemList;
  13. import com.l2jfrozen.gameserver.network.serverpackets.MyTargetSelected;
  14. import com.l2jfrozen.gameserver.network.serverpackets.NpcHtmlMessage;
  15. import com.l2jfrozen.gameserver.network.serverpackets.StatusUpdate;
  16. import com.l2jfrozen.gameserver.network.serverpackets.SystemMessage;
  17. import com.l2jfrozen.gameserver.network.serverpackets.ValidateLocation;
  18. import com.l2jfrozen.gameserver.templates.L2Item;
  19. import com.l2jfrozen.gameserver.templates.L2NpcTemplate;
  20. import com.l2jfrozen.util.random.Rnd;
  21.  
  22. @SuppressWarnings("unused")
  23. public class L2EnchantNpcInstance extends L2NpcInstance
  24. {
  25.  
  26. /* Menu NPC *//** @formatter:off */
  27. private final String HTML_MEMU = "<html><title>Enchant NPC</title><body>"
  28.  
  29. + "<center><font color=\"00FF00\"><br><img src=\"l2font-e.replay_logo-e\" width=250 height=78></font><br1>"
  30. + "<img src=\"L2UI.SquareGray\" width=300 height=1>"
  31. + " <table bgcolor=000000 width=319>"
  32. + "<tr>"
  33. + "<td><center><font color=\"ae9988\">Hello, player you can Enchant Items Here</font> <font color=\"FFFFFF\"></font></center></td>"
  34. + "</tr>"
  35. + "</table><br><br>"
  36. + "<center><font color=\"00FF00\">Hello there. I wanna present new system</font><br1>"
  37. + "<center><font color=\"00FF00\">You can here Enchant your items +40</font><br1>"
  38. + "<center><font color=\"ff0000\">One ++ enchant Cost Donate Coin</font><br1>"
  39. + "<center><font color=\"ffff00\">You can get Donate Coin:</font><br1>"
  40. + "<center><font color=\"ffff00\">1.Admin events</font><br1>"
  41. + "<center><font color=\"ffff00\">2.You can buy in Gm shop Admin event Box </font><br><br><br>"
  42. + "<button value=\"Enchant your items\" action=\"bypass -h npc_%objectId%_showewindow\" width=135 height=21 back=\"L2UI_CH3.bigbutton3\" fore=\"L2UI_CH3.bigbutton3_over\"><br><br><br><br><br>"
  43. + "<table width=300 height=30 bgcolor=000000 border=0 cellspacing=0 cellpadding=0>"
  44. + "<tr>"
  45. + "<td align=center>"
  46. + "Visit us <font color=\"LEVEL\">www.L2Might.eu</font>"
  47. + "</td>"
  48. + "</tr>"
  49. + "</table>"
  50. + "</body></html>";
  51. /** @formatter:on */
  52.  
  53. /* Prices */
  54. private final int EnchantItemId = Config.ITEM_NEEDED_FOR_ENCH; // ID of the item needed
  55. private final int EnchantItemCount = Config.AM_ITEM_NEEDED_FOR_ENCH; // Amount of it
  56. private final String EnchantItemName = ItemTable.getInstance().getTemplate(Config.ITEM_NEEDED_FOR_ENCH).getName(); // name displayed
  57.  
  58. /* enchaning options */
  59. private final int MAX_ENCHANT_LEVEL = Config.MAX_ENCH_FOR_NPC; // Enchant max
  60. private final int ENCHNAT_ADD = Config.ENCH_ADDITION; // ++ added on enchant
  61. private final int ENCHNAT_FAIL = Config.ENCH_FAIL_LVL; // item enchant when it fails
  62. private final int ENCHANT_SAFE_MAX = Config.ENCH_SAFE_NPC; // safe of enchanting
  63. private int ENCHANT_CHANCE_ARMOR = Config.ENCHANT_CHANCE_ARM_NPC; // armor enchant chance
  64. private int ENCHANT_CHANCE_WEAPON = Config.ENCHANT_CHANCE_WEAP_NPC; // weapon enchant chance
  65. private int ENCHANT_CHANCE_JEWELERY = Config.ENCHANT_CHANCE_JEWELERY_NPC; // jewel enchant
  66.  
  67. /* Other */
  68. private final boolean shEnchantWindowAfterSelect = true;
  69.  
  70. SystemMessage sm;
  71.  
  72. public L2EnchantNpcInstance(int objectId, L2NpcTemplate template)
  73. {
  74. super(objectId, template);
  75. }
  76.  
  77. @Override
  78. public void onAction(L2PcInstance player)
  79. {
  80.  
  81. if (this != player.getTarget())
  82. {
  83. player.setTarget(this);
  84. MyTargetSelected my = new MyTargetSelected(getObjectId(), 0);
  85. player.sendPacket(my);
  86. player.sendPacket(new ValidateLocation(this));
  87. }
  88. else
  89. {
  90. if (!canInteract(player))
  91. {
  92.  
  93. }
  94. else
  95. {
  96. NpcHtmlMessage html = new NpcHtmlMessage(1);
  97. html.setHtml(HTML_MEMU);
  98. sendHtmlMessage(player, html);
  99. }
  100. }
  101. player.sendPacket(ActionFailed.STATIC_PACKET);
  102. }
  103.  
  104. @Override
  105. public void onBypassFeedback(L2PcInstance player, String command)
  106. {
  107. StringTokenizer st = new StringTokenizer(command, " ");
  108. String cCommand = st.nextToken();
  109. if (cCommand.startsWith("showewindow"))
  110. {
  111. showEnchantWindow(player);
  112. }
  113. else if (cCommand.startsWith("showmwindow"))
  114. {
  115. NpcHtmlMessage html = new NpcHtmlMessage(1);
  116. html.setHtml(HTML_MEMU);
  117. sendHtmlMessage(player, html);
  118. }
  119. else if (cCommand.startsWith("doenchant"))
  120. {
  121. doEnchnat(player, Integer.parseInt(st.nextToken()));
  122. }
  123. }
  124.  
  125. private void sendHtmlMessage(L2PcInstance player, NpcHtmlMessage html)
  126. {
  127. html.replace("%objectId%", String.valueOf(getObjectId()));
  128. html.replace("%npcId%", String.valueOf(getNpcId()));
  129. player.sendPacket(html);
  130. }
  131.  
  132. public void showEnchantWindow(L2PcInstance player)
  133. {
  134. StringBuilder tb = new StringBuilder();
  135. tb.append("<html><title>Enchant Items</title><body><center>");
  136. tb.append("Here you can enchant items.<br>Enchant that will be added: +" + "<font color=\"LEVEL\">" + ENCHNAT_ADD + "</font>.<br> Select item to be enchanted.<br></center>");
  137. tb.append("<img src=\"l2ui_ch3.herotower_deco\" width=256 height=32 align=center>");
  138. tb.append("<center><font color=\"LEVEL\">Armor</font></center>");
  139. tb.append("<table width=\"300\" align=\"center\">");
  140. tb.append("<tr><td align=center><img src=\"icon.armor_helmet_i00\" width=32 height=32></td><td align=center><img src=\"icon.armor_t88_u_i00\" width=32 height=32></td><td align=center><img src=\"icon.armor_t88_l_i00\" width=32 height=32></td><td align=center><img src=\"icon.armor_t88_g_i00\" width=32 height=32></td><td align=center><img src=\"icon.armor_t88_b_i00\" width=32 height=32></td></tr>");
  141. tb.append("<tr><td align=center>" + eLink("Helmet", 0) + "</td><td align=center>" + eLink("Upper", 1) + "</td><td align=center>" + eLink("Lower", 2) + "</td><td align=center>" + eLink("Gloves", 3) + "</td><td align=center>" + eLink("Boots", 4) + "</td></tr>");
  142. tb.append("</table><br>");
  143. tb.append("<center><font color=\"LEVEL\">Weapon</font></center>");
  144. tb.append("<center><font color=\"LEVEL\">Jewels</font></center>");
  145. tb.append("<table width=\"300\" align=\"center\">");
  146. tb.append("<tr><td align=center><img src=\"icon.accessory_tateossian_necklace_i00\" width=32 height=32></td><td align=center><img src=\"icon.accessory_tateossian_earring_i00\" width=32 height=32></td><td align=center><img src=\"icon.accessory_tateossian_earring_i00\" width=32 height=32></td><td align=center><img src=\"icon.accessory_tateossian_ring_i00\" width=32 height=32></td><td align=center><img src=\"icon.accessory_tateossian_ring_i00\" width=32 height=32></td></tr>");
  147. tb.append("<tr><td align=center>" + eLink("Necklace", 7) + "</td><td align=center>" + eLink("L Earring", 8) + "</td><td align=center>" + eLink("R Earring", 9) + "</td><td align=center>" + eLink("L Ring", 10) + "</td><td align=center>" + eLink("R Ring", 11) + "</td></tr>");
  148. tb.append("</table><br>");
  149. tb.append("<center><font color=\"LEVEL\">Other</font></center>");
  150. tb.append("<table width=\"300\" align=\"center\">");
  151. tb.append("<tr><td align=center><img src=\"icon.weapon_forgotten_blade_i00\" width=32 height=32></td><td align=center><img src=\"icon.shield_imperial_crusader_shield_i00\" width=32 height=32></td><td align=center><img src=\"icon.weapon_voodoo_doll_i00\" width=32 height=32></td></tr>");
  152. tb.append("<tr><td align=center>" + eLink("Weapon", 5) + "</td><td align=center>" + eLink("Shield", 6) + "</td><td align=center>" + eLink("Tattoo", 12) + "</td></tr>");
  153. tb.append("</table><br><br>");
  154. tb.append("<center>Price: <font color=\"LEVEL\">" + EnchantItemCount + " " + EnchantItemName + "</font><br><br>");
  155. tb.append("<img src=\"l2ui_ch3.herotower_deco\" width=256 height=32 align=center>");
  156. tb.append("<a action=\"bypass -h npc_%objectId%_showmwindow\">Back</a><br>");
  157. tb.append("</center></body></html>");
  158. NpcHtmlMessage html = new NpcHtmlMessage(1);
  159. html.setHtml(tb.toString());
  160. sendHtmlMessage(player, html);
  161. }
  162.  
  163. private void doEnchnat(L2PcInstance player, int type)
  164. {
  165. int item_type = -1;
  166. int chance = 0;
  167. switch (type)
  168. {
  169. case 0:
  170. item_type = Inventory.PAPERDOLL_HEAD;
  171. break;
  172. case 1:
  173. item_type = Inventory.PAPERDOLL_CHEST;
  174. break;
  175. case 2:
  176. item_type = Inventory.PAPERDOLL_LEGS;
  177. break;
  178. case 3:
  179. item_type = Inventory.PAPERDOLL_GLOVES;
  180. break;
  181. case 4:
  182. item_type = Inventory.PAPERDOLL_FEET;
  183. break;
  184. case 5:
  185. item_type = Inventory.PAPERDOLL_RHAND;
  186. break;
  187. case 6:
  188. item_type = Inventory.PAPERDOLL_LHAND;
  189. break;
  190. case 7:
  191. item_type = Inventory.PAPERDOLL_NECK;
  192. break;
  193. case 8:
  194. item_type = Inventory.PAPERDOLL_LEAR;
  195. break;
  196. case 9:
  197. item_type = Inventory.PAPERDOLL_REAR;
  198. break;
  199. case 10:
  200. item_type = Inventory.PAPERDOLL_LFINGER;
  201. break;
  202. case 11:
  203. item_type = Inventory.PAPERDOLL_RFINGER;
  204. break;
  205. case 12:
  206. item_type = Inventory.PAPERDOLL_UNDER;
  207. break;
  208.  
  209. }
  210. L2ItemInstance item = player.getInventory().getPaperdollItem(item_type);
  211. if (item != null)
  212. {
  213. int rndValue = Rnd.get(100);
  214. if (item.getEnchantLevel() >= MAX_ENCHANT_LEVEL && MAX_ENCHANT_LEVEL != 0)
  215. {
  216. player.sendMessage("You Can't enchant anymore");
  217. return;
  218. }
  219. if (player.getInventory().getItemByItemId(EnchantItemId) == null || player.getInventory().getItemByItemId(EnchantItemId).getCount() < EnchantItemCount)
  220. {
  221. player.sendMessage("You don't have enough items.");
  222. return;
  223. }
  224. player.destroyItemByItemId("Consume", EnchantItemId, EnchantItemCount, player, false);
  225. if (item.getItem().getType2() == L2Item.TYPE2_WEAPON)
  226. {
  227. chance = ENCHANT_CHANCE_WEAPON;
  228. }
  229. if (item.getItem().getType2() == L2Item.TYPE2_SHIELD_ARMOR)
  230. {
  231. chance = ENCHANT_CHANCE_ARMOR;
  232. }
  233. if (item.getItem().getType2() == L2Item.TYPE2_ACCESSORY)
  234. {
  235. chance = ENCHANT_CHANCE_JEWELERY;
  236. }
  237. if (item.getEnchantLevel() < ENCHANT_SAFE_MAX)
  238. {
  239. chance = 100;
  240. }
  241. if (rndValue < chance)
  242. {
  243. if (item.getOwnerId() != player.getObjectId() || item.getEnchantLevel() >= MAX_ENCHANT_LEVEL && MAX_ENCHANT_LEVEL != 0)
  244. {
  245. player.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION);
  246. return;
  247. }
  248. if (item.getLocation() != L2ItemInstance.ItemLocation.PAPERDOLL)
  249. {
  250. player.sendPacket(SystemMessageId.INAPPROPRIATE_ENCHANT_CONDITION);
  251. return;
  252. }
  253. if (item.getEnchantLevel() == 0)
  254. {
  255. sm = SystemMessage.getSystemMessage(SystemMessageId.S1_SUCCESSFULLY_ENCHANTED);
  256. sm.addItemName(item.getItemId());
  257. player.sendPacket(sm);
  258. }
  259. else
  260. {
  261. sm = SystemMessage.getSystemMessage(SystemMessageId.S1_S2_SUCCESSFULLY_ENCHANTED);
  262. sm.addNumber(item.getEnchantLevel());
  263. sm.addItemName(item.getItemId());
  264. player.sendPacket(sm);
  265. }
  266. item.setEnchantLevel(item.getEnchantLevel() + ENCHNAT_ADD);
  267. item.updateDatabase();
  268. }
  269. else
  270. {
  271. sm = SystemMessage.getSystemMessage(SystemMessageId.BLESSED_ENCHANT_FAILED);
  272. player.sendPacket(sm);
  273. item.setEnchantLevel(ENCHNAT_FAIL);
  274. item.updateDatabase();
  275. }
  276. sm = null;
  277. StatusUpdate su = new StatusUpdate(player);
  278. su.addAttribute(StatusUpdate.CUR_LOAD, player.getCurrentLoad());
  279. player.sendPacket(su);
  280. su = null;
  281. player.sendMessage("You Can't enchant anymore");
  282. player.sendPacket(new ItemList(player, false));
  283. player.broadcastUserInfo();
  284. }
  285. else
  286. {
  287. player.sendMessage("Nothing is equipped in that slot.");
  288. }
  289. if (shEnchantWindowAfterSelect)
  290. {
  291. showEnchantWindow(player);
  292. }
  293. }
  294.  
  295. private static String eLink(String arg0, int arg1)
  296. {
  297. return "<a action=\"bypass -h npc_%objectId%_doenchant " + arg1 + "\">" + arg0 + "</a>";
  298. }
  299. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement