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

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;
    }

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