Баг с трейдом, фейкдедом и таргетом

Elrik

Величайший
Участник
Победитель в номинации 2021
Участник Новогоднего Фонда 2021
Сообщения
227
Розыгрыши
0
Решения
2
Репутация
13
Реакции
67
Баллы
1 593
Суть бага: когда персонаж А садится на трейд, после чего юзает фейк деад, и нажимает команду встать\сесть, появляется баг, при котором, когда я беру в таргет, выше упомянутого персонажа А, персонажем Б, открывает окно трейда ( покупка,продажа, крафт....).
Сборка: acis 656
Не могу определить как исправить этот баг, где добавить условие, что фейкдеад нельзя использовать во время трейда, или что-то на подобии этому.

Предполагаю, что нужно химить тут ( l2pcinstance ):
public boolean canOpenPrivateStore()
{
if (getActiveTradeList() != null)
cancelActiveTrade();

return !isAlikeDead() && !isInOlympiadMode() && !isMounted() && !isInsideZone(ZoneId.NO_STORE) && !isCastingNow();
}

Пытался добавить к return условие !isFakeDeath() ( функцию нашел в ядре, в том же L2pcInstance ), но безрезультатно...
Прошу помощь, и да, с логикой и воопщем с программированием знаком, но с самой Java - не сильно-сильно.
 
Не хотел бы поставить полный запрет на использование скилов?
нельзя же во время торга юзать никакие скилы а так же никаких итемов!
ппц аксисы гонят )
 
Для публикации кода, используйте тег CODE
 
в UseSkill добавить условие при котором когда трейд открыт, нельзя юзать скилы (вообще)
 
Спасибо, попытаюсь сегодня проверить
 
Если можно юзать скилы, когда ты сидишь, то проверь на всякий случай, можешь ли ты говорить с нпс в этот момент (по офу нельзя, иначе может быть рабочий дюп с вх) и другие баги, связанные с трейдом (дюп через вх и т.п.)
 
Если можно юзать скилы, когда ты сидишь, то проверь на всякий случай, можешь ли ты говорить с нпс в этот момент (по офу нельзя, иначе может быть рабочий дюп с вх) и другие баги, связанные с трейдом (дюп через вх и т.п.)
подскажи пожалуйста, как разговор в сидячем положении с НПЦ может помочь дюпнуть? примеры есть?
 
Проблема не решена, я чуток не правильно сформулировал БАГ:
Когда персонаж А открывает окно продажи\покупки,вносит туда итем, после чего нажимает FakeDeath, не ЗАКРЫВАЯ ОКНО ТРЕЙДА, и в режиме FAKEDEATH, он нажимает кнопку "продавать\покупать...", возникает данный баг, беру в таргет, выше упомянутого персонажа А, персонажем Б, открывает окно трейда ( покупка,продажа, крафт....).

P\S
Использование скилы при трейде я запретил, но , персонаж состоит в состоянии между "трейдом и не трейдом"

Исправил, коряво пока, но работает:
Код:
public TradeList getBuyList()
 {
  if (isFakeDeath())
    stopFakeDeath(true);
    sendPacket(SystemMessageId.NO_PRIVATE_STORE_HERE);
    _sellList = new TradeList(this);
 
Последнее редактирование модератором:
Если можно юзать скилы, когда ты сидишь, то проверь на всякий случай, можешь ли ты говорить с нпс в этот момент (по офу нельзя, иначе может быть рабочий дюп с вх) и другие баги, связанные с трейдом (дюп через вх и т.п.)
говорить с нпс нельзя!
checkUseMagicConditions
Безымянный.png
 
  • Мне нравится
Реакции: 6yka

    6yka

    Баллов: 5
    хороший пример!!!
подскажи пожалуйста, как разговор в сидячем положении с НПЦ может помочь дюпнуть? примеры есть?
Само "сидеть" - никак. Просто если такой баг есть, то думаю есть и возможность юзать вх вместе с трейдом, включая sell\buy трейд, где чар садиться (а по офу чар не может ни кастовать. не разговаривать с другими npc когда персонаж сидит).

Проблема не решена, я чуток не правильно сформулировал БАГ:
Когда персонаж А открывает окно продажи\покупки,вносит туда итем, после чего нажимает FakeDeath, не ЗАКРЫВАЯ ОКНО ТРЕЙДА, и в режиме FAKEDEATH, он нажимает кнопку "продавать\покупать...", возникает данный баг, беру в таргет, выше упомянутого персонажа А, персонажем Б, открывает окно трейда ( покупка,продажа, крафт....).

P\S
Использование скилы при трейде я запретил, но , персонаж состоит в состоянии между "трейдом и не трейдом"

Исправил, коряво пока, но работает:
Код:
public TradeList getBuyList()
 {
  if (isFakeDeath())
    stopFakeDeath(true);
    sendPacket(SystemMessageId.NO_PRIVATE_STORE_HERE);
    _sellList = new TradeList(this);
А в MagicSkillUse тоже проверка стоит?
 
Последнее редактирование модератором:
Само "сидеть" - никак. Просто если такой баг есть, то думаю есть и возможность юзать вх вместе с трейдом, включая sell\buy трейд, где чар садиться (а по офу чар не может ни кастовать. не разговаривать с другими npc когда персонаж сидит).
даже на самой допотопной люцере это уже давно не работает)
 
А что мешало воткнуть доп проверку в пакеты уходящие серверу при нажатии "продавать\покупать"?
это пакеты SetPrivateStoreBuyList и SetPrivateStoreSellList если что.
достаточно воткнуть туда проверку на isActionsDisabled() и все, так же можно добавить проверку на isCastingNow(), чтобы во время процесса каста тоже нельзя было сесть таким образом в трейд.
 
Последнее редактирование:
  • Мне нравится
Реакции: kick
А что мешало воткнуть доп проверку в пакеты уходящие серверу при нажатии "продавать\покупать"?
это пакеты SetPrivateStoreBuyList и SetPrivateStoreSellList если что.
достаточно воткнуть туда проверку на isActionsDisabled() и все, так же можно добавить проверку на isCastingNow(), чтобы во время процесса каста тоже нельзя было сесть таким образом в трейд.
в интерлюде это пакеты RequestPrivateStoreBuy и RequestPrivateStoreSell если не ошибаюсь
 
нет - это уже пакеты непосредственно самой покупки/продажи у игрока-торговца, а ТСу надо править момент, когда игрок садится покупать/продавать.
 
  • Мне нравится
Реакции: kick
нет - это уже пакеты непосредственно самой покупки/продажи у игрока-торговца, а ТСу надо править момент, когда игрок садится покупать/продавать.
RequestPrivateStoreManageBuy (0x90) передается в момент открытия окна трейда (покупка)
SetPrivateStoreListBuy (0x91) передается в момент когда чар садится на жопу (покупка)

RequestPrivateStoreManage(0x71) передается в момент когда чар открывает окно трейда (продажа)
SetPrivateStoreListSell (0x74) передается в момент когда чар садится на жопу (продажа)

данные от интерлюда, если что

эти данные были раздобыты пакет-хаком, ни в коем случае не собираюсь спорить)
 
Код:
if (isFakeDeath())
    {
            stopFakeDeath(true);
           setStoreType(StoreType.NONE);
           sendPacket(ActionFailed.STATIC_PACKET);
          
    return null;
    }

Я пока что такой использую! Все диалоги работают все Ок. Только консолька чуть матюкается. Придумаю что то лучше-отпишу
 
Назад
Сверху Снизу