Перейти к содержанию
Авторизация  
HeroXD

Помогите встроить Ацп в сборку

Рекомендуемые сообщения

Пытаюсь встроить скрипт ацп в сборку. Сбока эпилог с исходниками. Не нашел куда подключить импорт 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

Изменено пользователем JoeyTribbiani

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если не ошибаюсь, model.L2Player

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да я тоже так подумал и поставил import l2p.gameserver.model.Player; и в строчках заменил L2PcInstance на Player. При компиляции выдает ошибку:

 

compile.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хороший человек мне помог сделать (zGosu). Выкладываю для всех, может кому пригодится. Кому пригодилось, ставьте +

Acp.rar

Изменено пользователем HeroXD

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 01.12.2017 в 13:04, Betonomeshalka сказал:

Куда его нужно закинуть?:

Ну написано же - IVoicedCommandHandler 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 16.05.2017 в 01:25, HeroXD сказал:

Хороший человек мне помог сделать (zGosu). Выкладываю для всех, может кому пригодится. Кому пригодилось, ставьте +

Acp.rar

Пишет архив повреждён

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 16.05.2017 в 01:25, HeroXD сказал:

Хороший человек мне помог сделать (zGosu). Выкладываю для всех, может кому пригодится. Кому пригодилось, ставьте +

Acp.rar

залей куда нибудь, пишет архив поврежден.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В 05.12.2017 в 18:56, kaganpwnz сказал:

залей куда нибудь, пишет архив поврежден.

поверь, оно того не стоит - если это примерно тот же код что в первом сообщении темы, то это не реализация ацп, а просто полное г..но - while(true), слипание трида... что за придурок это вобще писал?

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, Gaikotsu сказал:

поверь, оно того не стоит - если это примерно тот же код что в первом сообщении темы, то это не реализация ацп, а просто полное г..но - while(true), слипание трида... что за придурок это вобще писал?

L2jlovely

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

О скрипт для убийство проекта :)
Берем клиентку у ловели и тыкаем туда скрипт, успешный старт гарантирован. (Сарказм - не думаю) :D

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...