Оч редко, но вот таки снова вылетел
Заметки себе - это с крокодилом и та и другая катка, предположительно все-таки из-за повышения уровня абилы у мёртвого, наверное, там проверка недостаточно правильная

.Q..I.VW.bi...|$ == изменение абилки у мертвого юнита
в логе четко видно ид X82A
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
16
function IsUnitDead takes unit u returns boolean
    return IsUnitType( u, UNIT_TYPE_DEAD ) or GetUnitTypeId( u ) < 1
endfunction
единственный вариант, когда GetUnitTypeId() вернет 0, это если u==null. Но, внезапно, если юнит "протек", то он может еще висеть в памяти после уничтожения, и тип у него будет что ни на есть обычный, легитимный, хотя юнит уже технически мертв. Поэтому такая проверка просто бессмысленна.
30
когда он таковым не является
На мой взгляд, использование в качестве опорного элемента подсистемы (в данном случае карты) любого поведения, которое авторами исполняющей системы (в данном случае варкрафта) явно воспринимается как "неопределённое" или "нежелательное" есть костылирование; свою точку зрения не навязываю, но проясняю.

использовать чтение и запись в большинстве случаев крайне просто
Безусловно, да, когда это поведение описано и гарантировано стандартом языка. В варкрафте же оно является побочным, а сама его реализация в сравнении со стандартным подходом того же Си - контринтуитивной. Ну серьёзно, это же по сути инъекция байткода

Обычно юнит умирает с 0.405 хп
Юнит никогда не будет иметь 0.405 хп, если ты их не выдашь ему кодом непосредственно перед проверкой.
16
ну нееет, здесь как раз определенное - возвращается всегда значение армора и никакая погода на марсе на значение не влияет. Поведение полностью предпопределено, как и во всем мемхаке. Ошибки возникают, когда лезешь не туда или используется функция из игры, которая не готова к индивидуальному вызову (например, стек не чистит за собой и т.п.). Используя только чтение, можно быть уверенным в стабильности на 100%
30
определенное
Экспериментально? Если так считать, то да, определённо определено. Тобой, но, к сожалению, не стандартом. Ощути разницу подходов практическую и буквально на себе, если считаешь этого недостаточным: любая моя карта (да, не дота, но всё-таки) запускается на любой версии варкрафта, а ты после выхода БАГФИКСА вынужден был решать внутреннюю проблему, отвечая на вопрос "должен ли я соответствовать платформе, поскольку мой продукт от неё полностью зависим, или же это платформа должна неожиданно прогнуться под меня?", в итоге выбрав неверный ответ. Ничего лично против тебя не имею, ты близок мне по духу, много знаешь и умеешь, но объективно, это было глупое решение так увлекаться игрушкой, про которую ты точно знал, что её могут отобрать.
Извини, если обидел. С радостью обсудил бы этот момент подробнее в нормальном чате, дабы не разводить здесь оффтоп ЕЩЁ сильнее. Скинь в лс вк или телеграм, если интересно.
16
да какие обиды, я про это не раз слышал. Время покажет.
Неопределенное поведение сродни чтению из области временной памяи - иногда там может быть армор, а иногда и мусор случайный. Если, читая из одного места, ты всегда получаешь единственно верный результат, то это детерминированное поведение. А сделана ли функция костылем или хаком, это вообще из другой оперы. Ты с определением попутал.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.