criss28282

Untitled

Jun 2nd, 2020
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.64 KB | None | 0 0
  1. package custom.EnchantA;
  2.  
  3. import java.util.logging.Logger;
  4.  
  5. import l2r.gameserver.model.actor.L2Npc;
  6. import l2r.gameserver.model.actor.instance.L2PcInstance;
  7. import l2r.gameserver.model.itemcontainer.Inventory;
  8. import l2r.gameserver.model.items.instance.L2ItemInstance;
  9. import l2r.gameserver.model.entity.olympiad.OlympiadManager;
  10. import l2r.gameserver.model.quest.Quest;
  11. import l2r.gameserver.model.quest.QuestState;
  12. import l2r.gameserver.network.serverpackets.CharInfo;
  13. import l2r.gameserver.network.serverpackets.ExBrExtraUserInfo;
  14. import l2r.gameserver.network.serverpackets.InventoryUpdate;
  15. import l2r.gameserver.network.serverpackets.UserInfo;
  16.  
  17. public class Enchant extends Quest
  18. {
  19. public static final Logger _log = Logger.getLogger(Enchant.class.getName());
  20.  
  21. int npcId = 10001;
  22.  
  23. // Item required to enchant armor +1
  24. int itemRequiredArmor = 6391;
  25. int itemRequiredArmorCount = 1000;
  26.  
  27.  
  28. // Item required to enchant jewels +1
  29. int itemRequiredJewels = 6391;
  30. int itemRequiredJewelsCount = 1000;
  31.  
  32. // Item required to enchant weapon +1
  33. int itemRequiredWeapon = 6391;
  34. int itemRequiredWeaponCount = 1000;
  35.  
  36. // Item required to enchant belt/shirt +1
  37. int itemRequiredBeltShirt = 6391;
  38. int itemRequiredBeltShirtCount = 1000;
  39.  
  40. public Enchant(int questId, String name, String descr)
  41. {
  42. super(questId, name, descr);
  43.  
  44. addStartNpc(npcId);
  45. addFirstTalkId(npcId);
  46. addTalkId(npcId);
  47. }
  48.  
  49. public static void main(String[] args)
  50. {
  51. new EnchantA(-1, EnchantA.class.getSimpleName(), "custom");
  52. }
  53.  
  54. public String onFirstTalk(L2Npc npc, L2PcInstance player)
  55. {
  56. String enchantType = "Enchant.htm";
  57.  
  58. if (player.getQuestState(getName()) == null)
  59. {
  60. newQuestState(player);
  61. }
  62. else if (player.isInCombat())
  63. {
  64. return drawHtml("You are in combat", "Don't fight if you want to talk with me!", enchantType);
  65. }
  66. else if (player.getPvpFlag() == 1)
  67. {
  68. return drawHtml("You are flagged", "Don't fight if you want to talk with me!", enchantType);
  69. }
  70. else if (player.getKarma() != 0)
  71. {
  72. return drawHtml("You are in chaotic state", "Don't fight if you want to talk with me!", enchantType);
  73. }
  74. else if (OlympiadManager.getInstance().isRegistered(player))
  75. {
  76. return drawHtml("You are registered for Olympiad", "You can't use my services<br1>while playing the Olympiad.", enchantType);
  77. }
  78.  
  79. return "Enchant.htm";
  80. }
  81.  
  82. public String onAdvEvent(String event, L2Npc npc, L2PcInstance player)
  83. {
  84. String htmlText = event;
  85.  
  86. String enchantType = "Enchant.htm";
  87.  
  88. int armorType = -1;
  89.  
  90. // Armor parts
  91. if (event.equals("enchantHelmet"))
  92. {
  93. armorType = Inventory.PAPERDOLL_HEAD;
  94. enchantType = "EnchantArmor.htm";
  95.  
  96. htmlText = enchant(enchantType, player, armorType, itemRequiredArmor, itemRequiredArmorCount);
  97. }
  98. else if (event.equals("enchantChest"))
  99. {
  100. armorType = Inventory.PAPERDOLL_CHEST;
  101. enchantType = "EnchantArmor.htm";
  102.  
  103. htmlText = enchant(enchantType, player, armorType, itemRequiredArmor, itemRequiredArmorCount);
  104. }
  105. else if (event.equals("enchantLeggings"))
  106. {
  107. armorType = Inventory.PAPERDOLL_LEGS;
  108. enchantType = "EnchantArmor.htm";
  109.  
  110. htmlText = enchant(enchantType, player, armorType, itemRequiredArmor, itemRequiredArmorCount);
  111. }
  112. else if (event.equals("enchantGloves"))
  113. {
  114. armorType = Inventory.PAPERDOLL_GLOVES;
  115. enchantType = "EnchantArmor.htm";
  116.  
  117. htmlText = enchant(enchantType, player, armorType, itemRequiredArmor, itemRequiredArmorCount);
  118. }
  119. else if (event.equals("enchantBoots"))
  120. {
  121. armorType = Inventory.PAPERDOLL_FEET;
  122. enchantType = "EnchantArmor.htm";
  123.  
  124. htmlText = enchant(enchantType, player, armorType, itemRequiredArmor, itemRequiredArmorCount);
  125. }
  126. else if (event.equals("enchantShieldOrSigil"))
  127. {
  128. armorType = Inventory.PAPERDOLL_LHAND;
  129. enchantType = "EnchantArmor.htm";
  130.  
  131. htmlText = enchant(enchantType, player, armorType, itemRequiredArmor, itemRequiredArmorCount);
  132. }
  133. // Jewels
  134. else if (event.equals("enchantUpperEarring"))
  135. {
  136. armorType = Inventory.PAPERDOLL_LEAR;
  137. enchantType = "EnchantJewels.htm";
  138.  
  139. htmlText = enchant(enchantType, player, armorType, itemRequiredJewels, itemRequiredJewelsCount);
  140. }
  141. else if (event.equals("enchantLowerEarring"))
  142. {
  143. armorType = Inventory.PAPERDOLL_REAR;
  144. enchantType = "EnchantJewels.htm";
  145.  
  146. htmlText = enchant(enchantType, player, armorType, itemRequiredJewels, itemRequiredJewelsCount);
  147. }
  148. else if (event.equals("enchantNecklace"))
  149. {
  150. armorType = Inventory.PAPERDOLL_NECK;
  151. enchantType = "EnchantJewels.htm";
  152.  
  153. htmlText = enchant(enchantType, player, armorType, itemRequiredJewels, itemRequiredJewelsCount);
  154. }
  155. else if (event.equals("enchantUpperRing"))
  156. {
  157. armorType = Inventory.PAPERDOLL_LFINGER;
  158. enchantType = "EnchantJewels.htm";
  159.  
  160. htmlText = enchant(enchantType, player, armorType, itemRequiredJewels, itemRequiredJewelsCount);
  161. }
  162. else if (event.equals("enchantLowerRing"))
  163. {
  164. armorType = Inventory.PAPERDOLL_RFINGER;
  165. enchantType = "EnchantJewels.htm";
  166.  
  167. htmlText = enchant(enchantType, player, armorType, itemRequiredJewels, itemRequiredJewelsCount);
  168. }
  169. // Belt/Shirt
  170. else if (event.equals("enchantBelt"))
  171. {
  172. armorType = Inventory.PAPERDOLL_BELT;
  173. enchantType = "EnchantBeltShirt.htm";
  174.  
  175. htmlText = enchant(enchantType, player, armorType, itemRequiredBeltShirt, itemRequiredBeltShirtCount);
  176. }
  177. else if (event.equals("enchantShirt"))
  178. {
  179. armorType = Inventory.PAPERDOLL_UNDER;
  180. enchantType = "EnchantBeltShirt.htm";
  181.  
  182. htmlText = enchant(enchantType, player, armorType, itemRequiredBeltShirt, itemRequiredBeltShirtCount);
  183. }
  184. // Weapon
  185. else if (event.equals("enchantWeapon"))
  186. {
  187. armorType = Inventory.PAPERDOLL_RHAND;
  188. enchantType = "EnchantWeapon.htm";
  189.  
  190. htmlText = enchant(enchantType, player, armorType, itemRequiredWeapon, itemRequiredWeaponCount);
  191. }
  192.  
  193. return htmlText;
  194. }
  195.  
  196. private String enchant(String enchantType, L2PcInstance player, int armorType, int itemRequired, int itemRequiredCount)
  197. {
  198. QuestState st = player.getQuestState(getName());
  199.  
  200. int currentEnchant = 0;
  201. int newEnchantLevel = 0;
  202.  
  203. if (st.getQuestItemsCount(itemRequired) >= itemRequiredCount)
  204. {
  205. try
  206. {
  207. L2ItemInstance item = getItemToEnchant(player, armorType);
  208.  
  209. if (item != null)
  210. {
  211. currentEnchant = item.getEnchantLevel();
  212.  
  213. if ( currentEnchant < 25 )
  214. {
  215. newEnchantLevel = setEnchant(player, item, currentEnchant+5, armorType);
  216.  
  217. if ( newEnchantLevel > 0 )
  218. {
  219. st.takeItems(itemRequired, itemRequiredCount);
  220. player.sendMessage("You successfully enchanted your " + item.getItem().getName() +" from +" + currentEnchant + " to +" + newEnchantLevel + "!");
  221.  
  222. String htmlContent = "<center>You successfully enchanted your:<br>"+
  223. "<font color=\"FF7200\">" + item.getItem().getName() + "</font><br>"+
  224. "From: <font color=\"AEFF00\">+" + currentEnchant + "</font> to <font color=\"AEFF00\">+" + newEnchantLevel + "</font>"+
  225. "</center>";
  226.  
  227. return drawHtml("Congratulations!", htmlContent, enchantType);
  228. }
  229. }
  230. else
  231. {
  232. player.sendMessage("Your " + item.getItem().getName() + " is already +20!");
  233. return drawHtml("It's already +20", "<center>Your <font color=\"FF7200\">" + item.getItem().getName() +"</font> is already +20!</center>", enchantType);
  234. }
  235. }
  236. }
  237. catch (StringIndexOutOfBoundsException e)
  238. {
  239. player.sendMessage("Something went wrong. Are equiped with the item?");
  240. return drawHtml("Error Enchant", "<center>Something went wrong.<br>Are equiped with the item?</center>", enchantType);
  241. }
  242. catch (NumberFormatException e)
  243. {
  244. player.sendMessage("Something went wrong. Are equiped with the item?");
  245. return drawHtml("Error Enchant", "<center>Something went wrong.<br>Are equiped with the item?</center>", enchantType);
  246. }
  247.  
  248.  
  249. player.sendMessage("Something went wrong. Are equiped with the item?");
  250. return drawHtml("Error Enchant", "<center>Something went wrong.<br>Are equiped with the item?</center>", enchantType);
  251. }
  252. else
  253. {
  254. String content = "<center>"+
  255. "Not enough <font color=\"FF7200\">Event - Glitering Medals</font>!<br>";
  256.  
  257. if ( st.getQuestItemsCount(itemRequired) > 0 )
  258. {
  259. content += "You have " + st.getQuestItemsCount(itemRequired) + " Glittering Medals,<br1>"+
  260. "Need " + (itemRequiredCount - st.getQuestItemsCount(itemRequired)) + " more.";
  261. }
  262. else
  263. {
  264. content += "You need <font color=\"FF7200\">" + itemRequiredCount + " Event - Glitering Medals</font>!";
  265. }
  266.  
  267. content += "</center>";
  268.  
  269. return drawHtml("Not Enough Items", content, enchantType);
  270. }
  271. }
  272.  
  273. private L2ItemInstance getItemToEnchant(L2PcInstance player, int armorType)
  274. {
  275. L2ItemInstance itemInstance = null;
  276. L2ItemInstance parmorInstance = player.getInventory().getPaperdollItem(armorType);
  277.  
  278. if ((parmorInstance != null) && (parmorInstance.getLocationSlot() == armorType))
  279. {
  280. itemInstance = parmorInstance;
  281.  
  282. if (itemInstance != null)
  283. {
  284. return itemInstance;
  285. }
  286. }
  287.  
  288. return null;
  289. }
  290.  
  291. private int setEnchant(L2PcInstance player, L2ItemInstance item, int newEnchantLevel, int armorType)
  292. {
  293. if (item != null)
  294. {
  295. // set enchant value
  296. player.getInventory().unEquipItemInSlot(armorType);
  297. item.setEnchantLevel(newEnchantLevel);
  298. player.getInventory().equipItem(item);
  299.  
  300. // send packets
  301. InventoryUpdate iu = new InventoryUpdate();
  302. iu.addModifiedItem(item);
  303. player.sendPacket(iu);
  304. player.broadcastPacket(new CharInfo(player));
  305. player.sendPacket(new UserInfo(player));
  306. player.broadcastPacket(new ExBrExtraUserInfo(player));
  307.  
  308. return newEnchantLevel;
  309. }
  310.  
  311. return -1;
  312. }
  313.  
  314. public String drawHtml(String title, String content, String enchantType)
  315. {
  316. String html = "<html>"+
  317. "<title>L2Mondial Enchanter</title>"+
  318. "<body>"+
  319. "<center><img src=\"L2UI_CH3.herotower_deco\" width=256 height=32><br>"+
  320. "<font color=\"FF9900\">" + title + "</font></center><br>"+
  321. content +
  322. "<br><br>"+
  323. "<center><a action=\"bypass -h Quest Enchant " + enchantType + "\">Go Back</a></center>"+
  324. "</body>"+
  325. "</html>";
  326.  
  327. return html;
  328. }
  329. }
Add Comment
Please, Sign In to add comment