Во время игры стали иногда появляться фаталы с вылетом.
Ситуация общая такая: в инвентаре эта шмотка
и пытаюсь юзнуть спеллбучную абилу предмета, чтобы автособрать его. Но фатал в такой ситуации происходит далеко не каждый раз.
Хочется узнать причины по логу. Пока перепишу там ифзенэлсы.
Лог прилагается.

Принятый ответ

Вылет произошел во время обращения к элементу jass массива с индексом 21.
Так как это был мемхакнутый массив, произошла попытка чтения памяти по адресу 0x54.
Крашнулся твой код, так что переписывай.
0
19
7 лет назад
0
Похожие вопросы:

ответ
Слышал, что
Дед-Мороз
реально существует. Почему?
Как тебе намек?
ответ
Проблема была в самих магазинах, сделал как в старой версии, заработало.
ответ
проверь настройки A01P, возможно, там кривые данные выше 3-го уровня

0
21
7 лет назад
Отредактирован ClotPh
0
Что такое, почему ничего не прикрепляется.
Ладно, вроде вот
Файл.
Пока переписываю самостоятельно, там все равно ифзенэлсы косые были под завершение кодинга на усталую голову. Короче, вынесу замер дистанции в верхний ифзенэлс и еще выше наличие предмета, если там будет меньше нужного, то все остальное просто не должно будет проверяться и делаться, а при юзании автосборки из спеллбука дистанция по определению 0... так что вроде должно все исправиться.
Но если у кого-то есть комменты, пишите, причина фатала конкретно интересует все равно.
Загруженные файлы
0
16
7 лет назад
Отредактирован Maniac_91
0
чтение памяти по кривому адресу. наверное, кто-то до сих пор не взял безопасный RMem и фигачит по Memory[] массиву, да?
Достаточно просто проверки, что адрес для чтения или записи больше хотя бы 0x500. Таких маленьких адресов быть в любом случае не может
0
21
7 лет назад
0
То есть все функции с гитхаба неочень и нужно с нового мемхака в теме забирать? Там эти проверки уже встроенные и/или не нужные?
А то я тут что-то еще на точку грешу, что неправильно может определяться. Когда писался код, отталкивалось от того, что если спелл без указания цели, то GetSpellTargetLoc() - это точка кастера. Теперь уже сомневаюсь и кажется, что в таком случае точки вообще нет и начинается черт знает что...
В любом случае ведь все эти функции юзались уже в др. местах, а фаталов не вызывали, фатал был до этого только после игр, а не во время, уже новая вчера залитая версия удалена, ща вот Линзу мучаю.
Если что, тема вот прямо связанная
Это из-за Линзы 99.9%, т. к. все игры происходило практически одно и то же перед фаталом.
0
16
7 лет назад
0
фатал случается при чтении из массива, внутренний код варкрафта эту функцию не юзхает, проблема где-то в мх
0
21
7 лет назад
0
Но сами-то по себе все функции мной ранее юзались и фатала ВО ВРЕМЯ игры НЕ вызывали.
Вероятно, несуществующая память пытается считаться все-таки из-за неправильного их использования при несуществующей точке.
Короче, инфа не сотка, но три игры подряд с линзой в последнем варианте ее кода по ссылке - фатала во время игры не было (но в прошлой версии он вроде как раз на третьей игре и словился, так что еще не факт, но все-таки...) В общем, за***ло, уже сегодня отдыхать планировалось (так вот отдых и начался... вместо отдыха фатал и снова лезть фиксить), ща еще каточку в хотс сыграю и все, наверное, будет вечером-ночью перезаписано и залито, если что, апну и эту тему, как и тему с Психопомпой (но там-то не так страшно), если никто не сможет помочь - буду дальше экспериментировать самостоятельно.
Что лучше юзать новый мемхак - уже ясно.
0
14
7 лет назад
0
Вылет произошел во время обращения к элементу jass массива с индексом 21.
Так как это был мемхакнутый массив, произошла попытка чтения памяти по адресу 0x54.
Крашнулся твой код, так что переписывай.
Принятый ответ
0
21
7 лет назад
Отредактирован ClotPh
0
Дошло, в чем еще могла быть проблема в том варианте кода.
Автосборка вещей происходит следующим образом. Есть вещь, есть активка-спеллбук со списком вещей и их ценой в золоте за улучшение базовой вещи (типа шмотки на +X к силе) в любую покруче (типа тех же дотовских барабанов).
При юзании активки, если золота достаточно, оно тратится, вещь исчезает и появляется другая (кстати, эту систему практически все хвалили, в совокупности с перезакупом очень удобно).
Так вот прикол в следующем... когда юзается одна из способностей спеллбука в предмете (а именно тогда фаталило), Aether Lens пытается посчитать ее параметры, ориентируясь на применившего героя. Но у героя-то эта способность пропадает вместе с предметом - предмет превращается в другой. Может, тут что-то и глючило.
Ну ладно, новый вариант кода еще посмотрим.
///////////
Added: пофлужу немного - четвертая игра подряд с линзой с новым кодом, 20 минут (для катки с ботами в ускоренном режиме это много), фатала нет. Ну см. выше.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.