Проблемы с операциями над inventory в новой версии

В данной теме описывайте найденные вами ошибки в боте
flare
Сообщения: 13
Зарегистрирован: Сб фев 24, 2018 1:31 pm

Вс июн 17, 2018 8:01 pm

13.06.2018 впервые обновил апдейтером бота где-то за полгода. На новой версии стал адово глючить следующий кусок кода:

Код: Выделить всё

var
...
VSet: array [0..14] of integer = (111, 222, 333, 444, 555, 666, 777, 888, 999, 10101, 10111, 10112, 10113, 10114, 10115);
// какие тут айди - в общем-то пофиг, половина нормального шмота, половина - новодел админа с java гфш
...
procedure equipItemListID(itemListID: array of Integer);
var
  item: TL2Item;
  itemID: Integer;
begin
  Engine.StopCasting;
  for itemID in itemListID do
  begin
    inventory.user.byid(itemID, item);
    if not item.Equipped then Engine.UseItem(itemID);
    delay(10);
  end;
end;
...

begin
equipitemlistid(VSet);
end.
Симптомы следующие: не все предметы из списка одеваются на новой версии, в итоге на чаре оказывается половина нового сета и половина старого.
От увеличения делея до 5 секунд лучше не становится. Повторный вызов функции не одевает новые шмотки. Откат бинаря и либ на 2.34 помог.

<imho>
По ощущениям проблема в том, что Engine.UseItem маркирует итем как одетый асинхронно, а до сервера игры пакет отправляется в режиме fire-and-forget, и не долетает. То есть бот считает, что сет одет, но на самом деле - нет. Не знаю, не очень уверен в том, что щас написал.
</imho>
flare
Сообщения: 13
Зарегистрирован: Сб фев 24, 2018 1:31 pm

Вт июн 19, 2018 5:26 am

Товарисч кодер, чекните сабж, пожалуйста. Не могу обновиться до версии с GPS.
Krickt01
Куда я попал
Сообщения: 49
Зарегистрирован: Чт мар 29, 2018 8:12 am
Контактная информация:

Вт июн 19, 2018 11:00 am

А пробовал свой UseItem сделать через пакеты?
Оказываю помощь бесплатно только публично на форуме, цените свои и мое время.
AdrenalineScript.com - премиум плагины и скрипты
flare
Сообщения: 13
Зарегистрирован: Сб фев 24, 2018 1:31 pm

Сб июн 23, 2018 6:46 pm

неа
да лень стало, это ж стандартнейшая функция апи и должна работать
flare
Сообщения: 13
Зарегистрирован: Сб фев 24, 2018 1:31 pm

Сб июн 23, 2018 6:58 pm

Вообще могу попробовать, только не очень шарю во всей этой пакетной херне, увы. Нужен какой-нибудь туториал :(
flare
Сообщения: 13
Зарегистрирован: Сб фев 24, 2018 1:31 pm

Вс фев 10, 2019 7:18 pm

Переписал Engine.UseItem на пакеты... Короче, проблема не в UseItem, а в обновлении списка предметов в инвентаре.
Inventory.user.byid возвращает предмет, для которого item.Equipped не соответствует действительности. Происходит такой кейс при быстром переодевании предметов (задержка около 100 мс) между итерациями.

Зануление item между итерациями и обновление инвентори через inventory := Engine.GetInventory ничего не дало, предмет все равно ошибочно считается одетым.
flare
Сообщения: 13
Зарегистрирован: Сб фев 24, 2018 1:31 pm

Вс фев 10, 2019 7:19 pm

Есть ли какой-то метод для синхронизации инвентаря адреналина с тем, что в действительности одето в клиенте?

Ей богу, этот баг реально уже заебал. Давайте придумаем какой-то обход, я устал сеты через макросы переодевать.
flare
Сообщения: 13
Зарегистрирован: Сб фев 24, 2018 1:31 pm

Вс фев 10, 2019 9:22 pm

Крч временное решение проблемы - оправить пакет RequestItemList в конце процедуры, он запрашивает список предметов с сервера и синхронизирует инвентарь бота с клиентом.

Баг все еще актуален и по-прежнему бесит, потому что этот пакет открывает инвентарь. Побочный эффект.
Аватара пользователя
IvaniuS
Администратор
Сообщения: 1372
Зарегистрирован: Пн янв 12, 2015 10:58 am
Контактная информация:

Сб фев 16, 2019 9:37 am

открытие инвентаря = этот пакет, это не побочный эффект. Хотел предложить именно открыть инвентарь для обновление, но если можно пакетом то так даже лучше.

Мой Сайт, Тут есть все скрипты: 1-85, Заточка, Аугмент и много чего другого
skype: live:ivanius51
вопросы по СКРИПТАМ, не программированию - БЕСПЛАТНО!

flare
Сообщения: 13
Зарегистрирован: Сб фев 24, 2018 1:31 pm

Ср фев 27, 2019 5:51 pm

Потыкался с этой хуйней еще раз.

Если я не отсылаю этот пакет перед каждой операцией снять\одеть, то он что-то да проябывает. Если отсылать пакет, то в цикле это все адово тормозит и превращается в кошмар.
Все же работало на 35й версии, почему нельзя откатить конкретно этот кусок?
Ответить