Axelut

Auto Potion

May 10th, 2023
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Index: net.sf.l2j;Config.java
  2. ===================================================================
  3. --- net.sf.l2j;Config.java (revision 84)
  4. +++ net.sf.l2j;Config.java (working copy)
  5.  
  6. +   /** Auto potions settings */
  7. +   public static Map<Integer, Integer> AUTO_POTIONS = new HashMap<>();
  8. +   public static Map<Integer, String[]> AUTO_POTIONS_LIMITS = new HashMap<>();
  9.  
  10.  
  11.  
  12. +   String ap = player.getProperty("AutoPotions", "");
  13. +   String[] ap_split = ap.split(";");
  14. +   for (String s : ap_split)
  15. +   {
  16. +       String[] ss = s.split(",");
  17. +       AUTO_POTIONS.put(Integer.parseInt(ss[0]), Integer.parseInt(ss[1]));
  18. +   }
  19. +   String apl = player.getProperty("AutoPotionsLimits", "");
  20. +   String[] apl_split = apl.split(";");
  21. +   for (String s : apl_split)
  22. +   {
  23. +       String[] ss = s.split(",");
  24. +       AUTO_POTIONS_LIMITS.put(Integer.parseInt(ss[0]), new String[] { ss[1], ss[2] });
  25. +   }
  26.        
  27.  
  28. Index: net.sf.l2j.gameserver.ban;AutoPotionTask.java
  29. ===================================================================
  30. --- net.sf.l2j.gameserver.ban;AutoPotionTask.java (revision 84)
  31. +++ net.sf.l2j.gameserver.l2jban.autopotion;AutoPotionTask.java (working copy)
  32.  
  33.  
  34. +   package net.sf.l2j.gameserver.l2jban.autopotion;
  35. +  
  36. +   import net.sf.l2j.Config;
  37. +   import net.sf.l2j.gameserver.model.L2Skill;
  38. +   import net.sf.l2j.gameserver.model.actor.instance.Player;
  39. +   import net.sf.l2j.gameserver.model.holder.IntIntHolder;
  40. +  
  41. +   public class AutoPotionTask implements Runnable
  42. +   {
  43. +       private int itemId;
  44. +       private Player player;
  45. +      
  46. +       public AutoPotionTask(int itemId, Player player)
  47. +       {
  48. +           this.itemId = itemId;
  49. +           this.player = player;
  50. +       }
  51. +      
  52. +       @Override
  53. +       public void run()
  54. +       {
  55. +           if (!player.isOnline())
  56. +           {
  57. +               player.stopAutoPotion(itemId);
  58. +               return;
  59. +           }
  60. +           if (player.isInOlympiadMode())
  61. +           {
  62. +               player.sendMessage("You cannot that in olympiad mode.");
  63. +               player.stopAutoPotion(itemId);
  64. +               return;
  65. +           }
  66. +          
  67. +           if (Config.AUTO_POTIONS_LIMITS.containsKey(itemId))
  68. +           {
  69. +               String type = Config.AUTO_POTIONS_LIMITS.get(itemId)[0];
  70. +               int val = Integer.parseInt(Config.AUTO_POTIONS_LIMITS.get(itemId)[1]);
  71. +              
  72. +               switch (type)
  73. +               {
  74. +                   case "CP":
  75. +                   {
  76. +                       if ((player.getCurrentCp() / player.getMaxCp()) * 100 > val)
  77. +                           return;
  78. +                       break;
  79. +                   }
  80. +                   case "HP":
  81. +                   {
  82. +                       if ((player.getCurrentHp() / player.getMaxHp()) * 100 > val)
  83. +                           return;
  84. +                       break;
  85. +                   }
  86. +                   case "MP":
  87. +                   {
  88. +                       if ((player.getCurrentMp() / player.getMaxMp()) * 100 > val)
  89. +                           return;
  90. +                       break;
  91. +                   }
  92. +               }
  93. +           }
  94. +          
  95. +           if (!player.destroyItemByItemId("auto potion use", itemId, 1, null, true))
  96. +           {
  97. +               player.stopAutoPotion(itemId);
  98. +               player.sendMessage("Incorrect item count.");
  99. +               return;
  100. +           }
  101. +          
  102. +           if (player.getInventory().getItemByItemId(itemId) == null)
  103. +           {
  104. +               player.stopAutoPotion(itemId);
  105. +               return;
  106. +           }
  107. +           IntIntHolder[] skills = player.getInventory().getItemByItemId(itemId).getEtcItem().getSkills();
  108. +           if (skills == null)
  109. +               return;
  110. +          
  111. +           for (IntIntHolder skill : skills)
  112. +           {
  113. +               if (skill == null)
  114. +                   continue;
  115. +              
  116. +               L2Skill sk = skill.getSkill();
  117. +               if (sk == null)
  118. +                   continue;
  119. +              
  120. +               player.doSimultaneousCast(sk);
  121. +           }
  122. +       }
  123. +      
  124. +       public int getItemId()
  125. +       {
  126. +           return itemId;
  127. +       }
  128. +   }
  129.    
  130. Index: net.sf.l2j.gameserver.model.actor;player.java
  131. ===================================================================
  132. --- net.sf.l2j.gameserver.model.actor;player.java (revision 84)
  133. +++ net.sf.l2j.gameserver.model.actor;player.java (working copy)
  134.  
  135.  
  136. -   import net.sf.l2j.gameserver.geoengine.GeoEngine;
  137. +   import net.sf.l2j.gameserver.geoengine.GeoEngine;
  138. +   import l2jban.autopotion.AutoPotionTask;
  139.  
  140.  
  141. +   private Map<AutoPotionTask, ScheduledFuture<?>> autoPotionTasks = new HashMap<>();
  142.  
  143. +   public void stopAutoPotion(int itemId)
  144. +   {
  145. +       AutoPotionTask temp = null;
  146. +       for (AutoPotionTask atp : autoPotionTasks.keySet())
  147. +       {
  148. +           if (atp.getItemId() == itemId)
  149. +           {
  150. +               temp = atp;
  151. +               break;
  152. +           }
  153. +       }
  154. +      
  155. +       if (temp == null)
  156. +           return;
  157. +      
  158. +       autoPotionTasks.get(temp).cancel(true);
  159. +       autoPotionTasks.remove(temp);
  160. +       sendPacket(new ExAutoSoulShot(itemId, 0));
  161. +       sendMessage("The automatic use of "+ItemTable.getInstance().getTemplate(itemId).getName()+" has been deactivated.");
  162. +   }
  163. +  
  164. +   public void startAutoPotion(int itemId)
  165. +   {
  166. +       for (AutoPotionTask atp : autoPotionTasks.keySet())
  167. +           if (atp.getItemId() == itemId)
  168. +               return;
  169. +      
  170. +       AutoPotionTask atp = new AutoPotionTask(itemId, this);
  171. +       autoPotionTasks.put(atp, ThreadPool.scheduleAtFixedRate(atp, Config.AUTO_POTIONS.get(itemId)*1000, Config.AUTO_POTIONS.get(itemId)*1000));
  172. +       sendPacket(new ExAutoSoulShot(itemId, 1));
  173. +       sendMessage("You have activated the automatic use of "+ItemTable.getInstance().getTemplate(itemId).getName()+".");
  174. +   }
  175.  
  176. Index: config/players.propertis
  177. ===================================================================
  178. --- config/players.propertis (revision 84)
  179. +++ config/players.propertis (working copy)
  180.  
  181. +   # Auto potions ids
  182. +   # The ids of the potions you type here will be activated to be auto with right click.
  183. +   # Use like: itemId,seconds;itemId,seconds
  184. +   # Seconds represents every x seconds a potion will be added when auto is activated
  185. +   AutoPotions = 6539,1;6540,1
  186. +   # Percentage (%) limitations.
  187. +   # Use like: itemId,type,%;itemId,type,%
  188. +   # For example, if you want mana potions to be used if MP is less than 80%, add 728,MP,80
  189. +   # If you don't add a limitation for a type of potion(for example cp potion), it will be used even if cp is fully restored.
  190. +   AutoPotionsLimits = 6539,MP,75;6540,CP,95
Add Comment
Please, Sign In to add comment