Баги/Дюпы/Недоработки овера(лостворлда)/etc

  • Автор темы Автор темы kick
  • Дата начала Дата начала
Был баг на валике садишься твином на язык вал на этого твина агрится и никуя не делая прост стоит когда его били прост стоял
 
Фикс лист под спойлером. Часть к багам\дюпам относится.
 

Видео было создано с использованием l2jacis (так говорит владелец / разработчик сервера), но L2J получил ту же проблему. Все не настроенные версии L2J, использующие WeaponEquipTask, получили эту проблему. Даже если вы установили исправления в других местах, чтобы избежать получения нескольких похожих элементов с одинаковым objectId, это начальная проблема и единственное исправление, которое вы должны сделать.

Для L2J я решил опубликовать это исправление бесплатно
Короткая версия: при использовании UseItem и если вы в данный момент атакуете, вызывается WeaponEquipTask, чтобы задержать время ношения вашего оружия.



Проблема: нет проверки при вызове задачи. Предмет экипирован, независимо от того, что произошло между временем вызова и временем износа (если вы удалили, закристаллизовались, уронили, поместили предмет в другое место, ...).

Исправлено: проверка по вызову задачи, если предмет все еще существует в инвентаре.

Для L2J (рассмотрите возможность редактирования вызываемого метода - удалите параметр элемента).

Java:
 /** Weapon Equip Task */
    private static class WeaponEquipTask implements Runnable
    {
        private final L2PcInstance activeChar;
      
        protected WeaponEquipTask(L2PcInstance character)
        {
            activeChar = character;
        }
      
        @Override
        public void run()
        {
            // Check if the item is still on inventory.
            final ItemInstance item = activeChar.getInventory().getItemByObjectId(_objectId);
            if (item == null)
                return;
          
            // Equip or unEquip
            activeChar.useEquippableItem(item, false);
        }
    }


Если вы используете aCis, вот измененная задача, найденная в UseItem (будет частью rev 380):

Java:
    if (activeChar.isAttackingNow())
                ThreadPool.schedule(() -> {
                    final ItemInstance itemToTest = activeChar.getInventory().getItemByObjectId(_objectId);
                    if(itemToTest == null)
                        return;
                 
                    activeChar.useEquippableItem(itemToTest, false);
                }, activeChar.getAttackEndTime() - System.currentTimeMillis());
            else
                activeChar.useEquippableItem(item, true);

Сразу скажу автор темы не я а Tryskell.Сорри за русский язык. Если @kick может то пусть подправит.
 
Вот так поможет.
package com.l2jserver.gameserver.network.clientpackets;
RequestGiveItemToPet

if (player.isCastingNow() || player.isCastingSimultaneouslyNow())
{
return;
}
 
хмм, интересная штука.
не понимаю как такое не всплыло раньше.
спасибо)
 
игрокам просто лень искать
подобных багов на каждом шагу можно найти пачку

там стандартная проверка в нпсинстанс

упс уже ответили

если не ошибаюсь даже с L2text с хелпа можно будет использовать данный баг, взяв асист олимп бафера (таким способом ни 1 защита не помешает если файлы не добавленны в проверку )
 
Последнее редактирование модератором:
@4ipolino
canBypassCheck - а можешь еще и этот метод скинуть ?)
 
Java:
    public static boolean canBypassCheck(final Player player, final NpcInstance npc) {
        if (npc == null || player.isDead() || !npc.isInRangeZ(player, npc.getInteractDistance(player)) || player.isTerritoryFlagEquipped()) {
            player.sendActionFailed();
            return false;
        }
        return true;
    }
 
Реакции: kick
S - safety
 
Реакции: rmx
ещё и создание коллекции, когда она здесь не нужна)
 
ещё и создание коллекции, когда она здесь не нужна)
ну почему же, ведь callSkill вторым параметром принимает коллекцию, а по сути можно было июзать Collections.singletonList().
 
Реакции: kick
Вот почему по возможности надо запрашивать что-то (итемы, скиллы и т.д.) всегда по индексу из готового списка вариантов, а не прямым указанием ид желаемого.

моя старая реализация, из предыдущей версии сервера. а сейчас и проще даже - у меня ща кладется разом все за один клик - сразу все поэмы + одна из 3 гармоний на выбор.
 
Последнее редактирование:
Жаль что редко пишут про баги) Иногда буду дополнять)
 
подскажите пожалуйста, где можно найти описание данных вкусностей?
 
Вспомнил тут один баг еще - мало у кого исправленный, т.к. на него нарваться все же достаточно сложно, но все же можно.
 
View hidden content is available for registered users!
 
Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше…