Активация скилла без участия персонажа

Eternal12

Знаменитый
Участник
Сообщения
30
Розыгрыши
0
Репутация
1
Реакции
12
Баллы
1 245
Хроники
  1. The 2nd Throne: Gracia
Исходники
Присутствуют
Сборка
l2open
Подскажите пожалуйста интересует как составить код активации itema.
Например при возрождении активировался
Скрытое содержимое доступно для зарегистрированных пользователей!


Что только не перепробовал activeChar.useItem либо так activeChar.useItemId и параметры (20364, false) и тд
 
Посмотри на примере реализации других предметов. Например, свитка телепортации:

Java:
final int itemId = 736;
ItemInstance scrollOfEscape = getInventory().getItemByItemId(itemId);

if (scrollOfEscape == null)
{
    scrollOfEscape = getInventory().addItem("", itemId, 1, this, null);
}

final IItemHandler handler = ItemHandler.getInstance().getHandler(scrollOfEscape.getEtcItem());
if (handler != null)
{
    if (handler.useItem(this, scrollOfEscape, false))
    {
        // Логика, если успешно использовали свиток
    }
}
 
Посмотри на примере реализации других предметов. Например, свитка телепортации:

Java:
final int itemId = 736;
ItemInstance scrollOfEscape = getInventory().getItemByItemId(itemId);

if (scrollOfEscape == null)
{
    scrollOfEscape = getInventory().addItem("", itemId, 1, this, null);
}

final IItemHandler handler = ItemHandler.getInstance().getHandler(scrollOfEscape.getEtcItem());
if (handler != null)
{
    if (handler.useItem(this, scrollOfEscape, false))
    {
        // Логика, если успешно использовали свиток
    }
}
Спасибо, но пока не вкурил.
 
Подскажите пожалуйста интересует как составить код активации itema.
Например при возрождении активировался
*** Скрытый текст не может быть процитирован. ***

Что только не перепробовал activeChar.useItem либо так activeChar.useItemId и параметры (20364, false) и тд
когда то делал для другой сборки и на другой хронике, но суть думаю уловишь уже понятнее.

JavaScript:
public class AutoUseItemOnResurrection
{
    private static final int ITEM_ID = 6309; // ID предмета, который будет использоваться

    // Переменная для отслеживания состояния игрока
    private static final String USED_ITEM_AFTER_DEATH_FLAG = "USED_ITEM_AFTER_DEATH";

    public static void onPlayerResurrect(L2PcInstance player)
    {
        // Проверяем, что игрок действительно ожил
        if (player != null && !player.isDead())
        {
            // Проверяем, был ли уже использован предмет после смерти
            Boolean usedItem = player.getVariables().getBoolean(USED_ITEM_AFTER_DEATH_FLAG, false);
            if (!usedItem)
            {
                // Проверяем, есть ли у игрока предмет с нужным ID
                L2ItemInstance item = player.getInventory().getItemByItemId(ITEM_ID);
                if (item != null && item.getCount() > 0)
                {
                    // Используем предмет
                    player.useItem(item.getObjectId());
                    player.sendPacket(SystemMessage.getSystemMessage(SystemMessageId.USE_S1).addItemName(ITEM_ID));

                    // Устанавливаем флаг, что предмет был использован
                    player.getVariables().set(USED_ITEM_AFTER_DEATH_FLAG, true);
                }
            }
        }
    }

    public static void onPlayerDeath(L2PcInstance player)
    {
        // При смерти игрока сбрасываем флаг использования предмета
        if (player != null)
        {
            player.getVariables().set(USED_ITEM_AFTER_DEATH_FLAG, false);
        }
    }
}

P.S. Я не гуру кода, пожалуйста без наездов кому что то в глаза давить начнет, это просто пример что бы человек понял + - что делать.
 
Назад
Сверху