Добавлен ClotPh
Во время игры стали иногда появляться фаталы с вылетом.
Ситуация общая такая: в инвентаре эта шмотка
и пытаюсь юзнуть спеллбучную абилу предмета, чтобы автособрать его. Но фатал в такой ситуации происходит далеко не каждый раз.
Хочется узнать причины по логу. Пока перепишу там ифзенэлсы.
Лог прилагается.
Принятый ответ
Вылет произошел во время обращения к элементу jass массива с индексом 21.
Так как это был мемхакнутый массив, произошла попытка чтения памяти по адресу 0x54.
Крашнулся твой код, так что переписывай.
Так как это был мемхакнутый массив, произошла попытка чтения памяти по адресу 0x54.
Крашнулся твой код, так что переписывай.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован ClotPh
Ладно, вроде вот
Файл.
Пока переписываю самостоятельно, там все равно ифзенэлсы косые были под завершение кодинга на усталую голову. Короче, вынесу замер дистанции в верхний ифзенэлс и еще выше наличие предмета, если там будет меньше нужного, то все остальное просто не должно будет проверяться и делаться, а при юзании автосборки из спеллбука дистанция по определению 0... так что вроде должно все исправиться.
Но если у кого-то есть комменты, пишите, причина фатала конкретно интересует все равно.
Отредактирован Maniac_91
Достаточно просто проверки, что адрес для чтения или записи больше хотя бы 0x500. Таких маленьких адресов быть в любом случае не может
А то я тут что-то еще на точку грешу, что неправильно может определяться. Когда писался код, отталкивалось от того, что если спелл без указания цели, то GetSpellTargetLoc() - это точка кастера. Теперь уже сомневаюсь и кажется, что в таком случае точки вообще нет и начинается черт знает что...
В любом случае ведь все эти функции юзались уже в др. местах, а фаталов не вызывали, фатал был до этого только после игр, а не во время, уже новая вчера залитая версия удалена, ща вот Линзу мучаю.
Если что, тема вот прямо связанная
Вероятно, несуществующая память пытается считаться все-таки из-за неправильного их использования при несуществующей точке.
Короче, инфа не сотка, но три игры подряд с линзой в последнем варианте ее кода по ссылке - фатала во время игры не было (но в прошлой версии он вроде как раз на третьей игре и словился, так что еще не факт, но все-таки...) В общем, за***ло, уже сегодня отдыхать планировалось (так вот отдых и начался... вместо отдыха фатал и снова лезть фиксить), ща еще каточку в хотс сыграю и все, наверное, будет вечером-ночью перезаписано и залито, если что, апну и эту тему, как и тему с Психопомпой (но там-то не так страшно), если никто не сможет помочь - буду дальше экспериментировать самостоятельно.
Что лучше юзать новый мемхак - уже ясно.
Так как это был мемхакнутый массив, произошла попытка чтения памяти по адресу 0x54.
Крашнулся твой код, так что переписывай.
Отредактирован ClotPh
///////////