l2r挂架脚本(自动嗑药)
autocp自动使用cp回复cp
automp自动回复mp
autohp自动回复hp
package handlers.voicedcommandhandlers;import l2r.gameserver.handler.IItemHandler; import l2r.gameserver.handler.IVoicedCommandHandler; import l2r.gameserver.handler.ItemHandler; import l2r.gameserver.model.actor.instance.L2PcInstance; import l2r.gameserver.model.items.instance.L2ItemInstance;import java.util.HashMap; /** * @author root * @date: 20/01/2021 at 23:15 * Description : autocp / automp / autohp item use. */public class AutoPotion implements IVoicedCommandHandler { //*******Config Section*****************/ // *********************** Potion ItemID private static final int ID_HEAL_CP = 5592; private static final int ID_HEAL_MP = 728; private static final int ID_HEAL_HP = 1539; //*********************** USE FULL //Enable/Disable voicecoomand private static final boolean ACP_ON = true; // Min lvl for use ACP private static final int ACP_MIN_LVL = 0; private static final int ACP_HP_LVL = 70; private static final int ACP_CP_LVL = 70; private static final int ACP_MP_LVL = 70; private static final int ACP_MILI_SECONDS_FOR_LOOP = 1000; //Only for premium user? private static final boolean ACP_PREMIUM = false; // Automatic regen : Default ACP/MP/HP private static final boolean ACP_CP = true; private static final boolean ACP_MP = true; private static final boolean ACP_HP = true; private static final HashMap<String, Thread> userAcpMap = new HashMap<String, Thread>(); private static String[] _voicedCommands = { "acpon", "acpoff" }; @Override public boolean useVoicedCommand(String command, L2PcInstance activeChar, String params) { if (activeChar == null) { return false; } if (command.equals("acpon")) { if (!ACP_ON) { activeChar.sendMessage("The function is disabled on the server!"); return false; } else { if (userAcpMap.containsKey(activeChar.toString())) { activeChar.sendMessage("Already included!"); } else { activeChar.sendMessage("Acp enabled!"); Thread t = new Thread(new AcpHealer(activeChar)); userAcpMap.put(activeChar.toString(), t); t.start(); return true; } } } else if (command.equals("acpoff")) { if (!userAcpMap.containsKey(activeChar.toString())) { activeChar.sendMessage("Was not included"); } else { userAcpMap.remove(activeChar.toString()) //here we get thread and remove it from map .interrupt(); //and interrupt it activeChar.sendMessage("Disabled"); } } return false; } @Override public String[] getVoicedCommandList() { return _voicedCommands; } private class AcpHealer implements Runnable { L2PcInstance activeChar; public AcpHealer(L2PcInstance activeChar) { this.activeChar = activeChar; } @Override public void run() { try { while (true) {// Checking the level if (activeChar.getLevel() >= ACP_MIN_LVL) {// We check if we need a premium if (!(activeChar.isPremium() && ACP_PREMIUM)) {// Checking if we have at least one can of something L2ItemInstance cpBottle = activeChar.getInventory().getItemByItemId(ID_HEAL_CP); L2ItemInstance hpBottle = activeChar.getInventory().getItemByItemId(ID_HEAL_HP); L2ItemInstance mpBottle = activeChar.getInventory().getItemByItemId(ID_HEAL_MP); if (hpBottle != null && hpBottle.getCount() > 0) {// Checking our health if ((activeChar.getStatus().getCurrentHp() / activeChar.getMaxHp()) * 100 < ACP_HP_LVL && ACP_HP) { IItemHandler handlerHP = ItemHandler.getInstance().getHandler(hpBottle.getEtcItem()); if (handlerHP != null) { handlerHP.useItem(activeChar, hpBottle, true); activeChar.sendMessage("ACP: Restored HP"); } }// Checking our CP level if (cpBottle != null && cpBottle.getCount() > 0) { if ((activeChar.getStatus().getCurrentCp() / activeChar.getMaxCp()) * 100 < ACP_CP_LVL && ACP_CP) { IItemHandler handlerCP = ItemHandler.getInstance().getHandler(cpBottle.getEtcItem()); if (handlerCP != null) { handlerCP.useItem(activeChar, cpBottle, true); activeChar.sendMessage("ACP: Restored CP"); } } }// Checking our MP level if (mpBottle != null && mpBottle.getCount() > 0) { if ((activeChar.getStatus().getCurrentMp() / activeChar.getMaxMp()) * 100 < ACP_MP_LVL && ACP_MP) { IItemHandler handlerMP = ItemHandler.getInstance().getHandler(mpBottle.getEtcItem()); if (handlerMP != null) { handlerMP.useItem(activeChar, mpBottle, true); activeChar.sendMessage("ACP: Restored MP"); } } } } else { activeChar.sendMessage("[ACP] Incorrect item count"); return; } } else { activeChar.sendMessage("Available only to premium characters!"); return; } } else { activeChar.sendMessage("Available only " + ACP_MIN_LVL + " level!"); return; } Thread.sleep(ACP_MILI_SECONDS_FOR_LOOP); } } catch (InterruptedException e) { //nothing } catch (Exception e) { _log.warn(e.getMessage(), e); Thread.currentThread().interrupt(); } finally { userAcpMap.remove(activeChar.toString()); } } }}
最新评论 0