HeroXD 0 Опубликовано 15 мая, 2017 (изменено) Пытаюсь встроить скрипт ацп в сборку. Сбока эпилог с исходниками. Не нашел куда подключить импорт L2PcInstance. Там даже не чего похожего нету. Прикрепил папку model. Подскажите пожалуйста, какой фаел в импорт вместо него подключать надо. package handlers.voicecommands; import l2p.gameserver.handler.items.IItemHandler; import l2p.gameserver.handler.voicecommands.IVoicedCommandHandler; import l2p.gameserver.handler.items.ItemHandler; import l2p.gameserver.handler.voicecommands.VoicedCommandHandler; import l2p.gameserver.model.items.ItemInstance; import l2p.gameserver.model.actor.instance.L2PcInstance; import java.util.HashMap; public class Acp implements IVoicedCommandHandler { private static String[] commands = {"acpon", "acpoff"}; // *********************** ИД Банок private static int ID_HEAL_CP = 5592; private static int ID_HEAL_MP = 6036; private static int ID_HEAL_HP = 1539; // *********************** USE FULL // Включить / Выключить private static boolean ACP_ON = true; // Минимальный уровень, с которого можно использовать ACP private static int ACP_MIN_LVL = 0; // Указываеться в % уровень, с которого начинаем регенить private static int ACP_HP_LVL = 70; private static int ACP_CP_LVL = 70; private static int ACP_MP_LVL = 70; private static int ACP_MILI_SECONDS_FOR_LOOP = 1000; // Только для премиумов? private static boolean ACP_PREMIUM = false; // Что именно автоматически регеним private static boolean ACP_CP = true; private static boolean ACP_MP = true; private static boolean ACP_HP = true; private static HashMap<String, Thread> userAcpMap = new HashMap<String, Thread>(); // private volatile boolean acpUserOn = false; public static void main(String[] args) { VoicedCommandHandler.getInstance().registerVoicedCommandHandler(new Acp()); } public static Acp getInstance() { return null; } @@override public String getDescription(String command) { if (command.equals("acpon")) return "Включить автоматическое восстановление HP/CP/MP"; else if (command.equals("acpoff")) return "Выключить автоматическое восстановление HP/CP/MP"; return null; } @@override public String[] getVoicedCommandList() { return commands; } @@override public boolean useVoicedCommand(String command, L2PcInstance activeChar, String target) { // Есть ли такой вообще в мире if (activeChar == null) { return false; } if (command.equals("acpon")) { if (!ACP_ON) { activeChar.sendMessage("Функция отключена на сервере!"); return false; } else { if (userAcpMap.containsKey(activeChar.toString())) { activeChar.sendMessage("Уже включено!"); } else { activeChar.sendMessage("Acp включен!"); 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("Не было включено"); } else { userAcpMap.remove(activeChar.toString()) //here we get thread and remove it from map .interrupt(); //and interrupt it activeChar.sendMessage("Отключено"); } } return false; } private class AcpHealer implements Runnable { L2PcInstance activeChar; public AcpHealer(L2PcInstance activeChar) { this.activeChar = activeChar; } @@override public void run() { try { while (true) { // Проверяем уровень if (activeChar.getLevel() >= ACP_MIN_LVL) { // Проверяем нужен ли нам премиум if (!(activeChar.getPremiumService() > 1 && ACP_PREMIUM)) { // Проверяем, есть ли у нас хотя бы одна банка чего-то ItemInstance cpBottle = activeChar.getInventory().getItemByItemId(ID_HEAL_CP); ItemInstance hpBottle = activeChar.getInventory().getItemByItemId(ID_HEAL_HP); ItemInstance mpBottle = activeChar.getInventory().getItemByItemId(ID_HEAL_MP); if (hpBottle != null && hpBottle.getCount() > 0) { // Проверяем наш уровень здоровья if ((activeChar.getStatus().getCurrentHp() / activeChar.getMaxHp()) * 100 < ACP_HP_LVL && ACP_HP) { IItemHandler handlerHP = ItemHandler.getInstance().getItemHandler(hpBottle.getItemId()); if (handlerHP != null) { handlerHP.useItem(activeChar, hpBottle); activeChar.sendMessage("ACP: Восстановлено HP"); } } // Проверяем наш уровень CP if (cpBottle != null && cpBottle.getCount() > 0) { if ((activeChar.getStatus().getCurrentCp() / activeChar.getMaxCp()) * 100 < ACP_CP_LVL && ACP_CP) { IItemHandler handlerCP = ItemHandler.getInstance().getItemHandler(cpBottle.getItemId()); if (handlerCP != null) { handlerCP.useItem(activeChar, cpBottle); activeChar.sendMessage("ACP: Восстановлено CP"); } } } // Проверяем наш уровень MP if (mpBottle != null && mpBottle.getCount() > 0) { if ((activeChar.getStatus().getCurrentMp() / activeChar.getMaxMp()) * 100 < ACP_MP_LVL && ACP_MP) { IItemHandler handlerMP = ItemHandler.getInstance().getItemHandler(mpBottle.getItemId()); if (handlerMP != null) { handlerMP.useItem(activeChar, mpBottle); activeChar.sendMessage("ACP: Восстановлено MP"); } } } } else { activeChar.sendMessage("У Вас нечем регениться"); return; } } else { activeChar.sendMessage("Доступно только премиум чарам!"); return; } } else { activeChar.sendMessage("Доступно только с " + ACP_MIN_LVL + " уровня!"); 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()); } } } } model.rar Изменено 15 мая, 2017 пользователем JoeyTribbiani Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Lovely 307 Опубликовано 15 мая, 2017 Если не ошибаюсь, model.L2Player Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HeroXD 0 Опубликовано 15 мая, 2017 Да я тоже так подумал и поставил import l2p.gameserver.model.Player; и в строчках заменил L2PcInstance на Player. При компиляции выдает ошибку: compile.rar Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
HeroXD 0 Опубликовано 15 мая, 2017 (изменено) Хороший человек мне помог сделать (zGosu). Выкладываю для всех, может кому пригодится. Кому пригодилось, ставьте + Acp.rar Изменено 15 мая, 2017 пользователем HeroXD Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Betonomeshalka 3 Опубликовано 1 декабря, 2017 Куда его нужно закинуть?: Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Falkland 51 Опубликовано 5 декабря, 2017 В 01.12.2017 в 13:04, Betonomeshalka сказал: Куда его нужно закинуть?: Ну написано же - IVoicedCommandHandler Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Asgar 29 Опубликовано 5 декабря, 2017 В 16.05.2017 в 01:25, HeroXD сказал: Хороший человек мне помог сделать (zGosu). Выкладываю для всех, может кому пригодится. Кому пригодилось, ставьте + Acp.rar Пишет архив повреждён Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
kaganpwnz 82 Опубликовано 5 декабря, 2017 В 16.05.2017 в 01:25, HeroXD сказал: Хороший человек мне помог сделать (zGosu). Выкладываю для всех, может кому пригодится. Кому пригодилось, ставьте + Acp.rar залей куда нибудь, пишет архив поврежден. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Gaikotsu 620 Опубликовано 9 декабря, 2017 В 05.12.2017 в 18:56, kaganpwnz сказал: залей куда нибудь, пишет архив поврежден. поверь, оно того не стоит - если это примерно тот же код что в первом сообщении темы, то это не реализация ацп, а просто полное г..но - while(true), слипание трида... что за придурок это вобще писал? 1 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Demoncool 1110 Опубликовано 9 декабря, 2017 2 часа назад, Gaikotsu сказал: поверь, оно того не стоит - если это примерно тот же код что в первом сообщении темы, то это не реализация ацп, а просто полное г..но - while(true), слипание трида... что за придурок это вобще писал? L2jlovely Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
kaganpwnz 82 Опубликовано 9 декабря, 2017 4 часа назад, Demoncool сказал: L2jlovely Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
gvb 666 Опубликовано 9 декабря, 2017 О скрипт для убийство проекта Берем клиентку у ловели и тыкаем туда скрипт, успешный старт гарантирован. (Сарказм - не думаю) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты