Проверил отладчиком - все сложно. Подсказать вряд-ли что-то смогу.
Там судя по всему неправильно срабатывает сортировка перегруженных макросов, они должны в своей таблице располагаться по количеству аргументов, а располагаются они черти как. При этом если оставить одно или два определения типа def1 - все сохраняется.
Vlod, проверил, ошибка очевидно вызвана тем, что парсер это воспринимает как начало цикла do. Если добавить к имени переменной еще любой символ - все будет также работать. Вы можете подождать новую версию cJass, где это будет исправлено.
Вчера был особенно удивлён этим фактом) Снял с себя футболку размера M и надел 3XL, размеры футболок совпали. Причём очень вероятно, что обе вещи от одного производителя.
Эффекты стакаются в одном регионе (и даже чуть дальше него) крайне сложным образом, и зависит их совместимость от равкода. Я, когда писал погоду для морлоков с этим сталкивался, и возможно описывал проблему... лет 10 назад) Лечится импортом своей таблицы с погодой и подборкой равкодов. Ну и как вариант для более сильного дождя например можно вместо попытки добавить 2 эффекта и той-же таблице просто прописать побольше частиц.
думаю этот новый TESH можно портировать под JNGP. Правда он подсветку cJass не поддерживает.
Хотя лучше на новую версию игры пересесть, там много функционала добавили.
Я помню VD в свое время разобрался с устройством подсветки и достаточно легко добавил какой-то функционал. Это было уже после окончания активной фазы разработки cJass. Если есть вопросы про подсветку - можно попробовать к нему достучаться... Doc:
Хотите нормального экспириенса - не пишите на вжассе. Wurst пишется в VSCode и от этого куча бенефитов.
Сделали новый парсер? Я сильно удивился выпуску патчей в свое время)
Вот да, руководитель должен уметь всё и половину своего свободного времени, если не целиком, посвящать проекту.
Я умел более-менее все, кроме моделей. Те две с половиной миссии морлоков, что вышли делал примерно наполовину сам. Точнее сказать, у меня была старая корявая версия всех юнитов, и недоделанный ланд одной карты и модели.
Ну что, конкурентов все меньше, можно возвращаться к разработке морлоков, когда закончим их - не останется ни одного серьезного wc3 проекта, и все игроки с жадностью будут вести Болга и его племя к мировому господству.
Нет, одно дело попробовать (если я хоть что-то вспомню) поправить какой-либо баг, который вообще не позволяет использовать cJass вместе с современными нарботками. И совсем другое - прикручивать к нему еще какой-то синтаксис.
то отключи cJass -> AdicParser и cJass -> AdicOptimizer
А вот сейчас обидно было. А что, ! nocjass не спасает? Если что, я могу попробовать проанализировать, что там именно ломается, если вы дадите мне материалы. Хотя кто-то писал, что после ! nocjass должно быть хотя бы два переноса строки...
Интересно) Мы еще в 2012 пришли к выводу, что они уже абсолютно не понимают, как работает jass в игре из 2002 (а может и тех людей, которые это писали уже нет в команде), и не могут сделать нормальный патч. Логично, что в 2017 они тем более это не понимают ;)
С 1.28 можно только читать память, но запись прикрыли, причём как раз тем методом, что ты указал в статье на Хабре.
Они та и не прикрыли сломанный массив и запись байткодов в массив для их выполнения...
Да, то, о чем писал я полностью бы закрыло возможно вообще работать с памятью из jass кода, они же, как кажется мне просто или вынесли jass в отдельную песочницу, или другим методом запретили интерпритатору писать куда не надо (насчет метода не уверен, давно не работал с архитектурой винды).
Топик прочитал, описание уязвимости не нашел. Прочитал код еще раз, теперь днем - я правильно понял, махинации со значением переменной типа code осуществляются за счет некорректной проверки типов переменных jass интерпритатором самой игры, когда изначальное объявление глобальной переменной одного типа и потом объявление локальной переменной с тем же именем другого типа в одной функции заставляет интерпритатор ошибочно считать глобальную переменную переменной другого типа?
По итогу это тот же самый return bug, реализованный просто по другому. И, таким методом возможно же сделать идентичные старому rb функции в новых патчах, которые были выпущены после уязвимости 2012 года.
И что, Blizzard на это совсем забили, не пытаются лавочку прикрыть?
Я вот не помню, фиксированная ли длина у псевдокода, в который интерпритируется jass скрипт, но есть у меня подозрение, что если бы близы место убивания return bug в 2012 сделали так, как писал я - а именно выравнивание кода в функции, которая обрабатывает тип code - сейчас вызов по типу I2C(+2+C2I(c)) был бы невозможен, как и использование данной уязвимости.
Я правильно понял, вы опять пишите и читаете код процесса из игры?)
Парни, я когда то 100 лет назад (на самом деле лет 5) описывал уязвимость, которая позволяла из jass кода писать в память процесса, из-за чего вышел патч, который убрал return bug как таковой. Там все было просто - с помощью return bug можно было с ним работать как с int и задать любое другое смещение, не кратное 4. Потом подбирались специальные инструкции псевдокода jass, которые как-то устанавливали метки массивов, и позволяли писать в память процесса.
Я еще тогда написал маленькую утилу, которая патчила game.dll, а именно то место, где jass интерпритатор обрабатывал тип code - с помощью сплайсинга и одной логической операции просто устанавливал в 0 последние биты аддресса, в результате чего варианты типа code + 2 не прокатывали. Жалко, что до Близов мы тогда это так и не донесли ;)
Тут я, просмотрев код мельком вижу изменение фактического значение переменной типа code за счет какой-то работы с пространством имен локальных и глобальных переменных, нет?
Да, Кламп был знатный эмо. Он еще начал зачем-то писать общий скрипт, хотя ему дано было четкое указание, что надо писать именно ии скрипт (там немного разные технологии). Диалога, почему он так считает у меня с ним не получилось. Наработки он тоже отказался отдать по вышеозвученной причине. Хотя у меня и уверенности нет, что он сделал что-то большее, чем написал заголовок функции main.
С другой стороны, не в данном конкретном случае, но вообще руководитель этим и должен заниматься, чтобы направлять, воодушевлять и объединять людей для достижения общей цели. Тут уже надо смотреть, что проще - заставить человека сделать что-то, или сделать это самому. Или найти замену.
предполагалось, что апгрейд строится только к конкретному зданию.
Да, я знаю. Мне вообще-то сейчас интересно, почему не сделано было просто две ветки апгрейда. т. е. главка грейдится в главку уровня 2 или в главку уровня 1 с башенкой, которая потом уже грейдится только в уровень 2 с башенкой. Возможно, на это были технические причины. А так там была сделана тренировка юнита, и по окончанию юнит удалялся, а зданию давалась абилка. Не знаю, чего он не удаляется, подозреваю, что просто не указан равкод. Тренировка второго юнита пресекалась, и выдавалось предупреждение, что башня уже построена. Понимаешь, какие это костыли) Рациональнее было бы сделать другой, более простой вариант, а время потратить на что-то другое.
Я с балансом вообще не работал. С одной стороны для кампании это было неважно, там все равно все легко решалось скриптами, добавить больше или меньше войск, а в то, что кто-то серьезно будет играть в милишном режиме я не рассчитывал. Впрочем за то, как я его прикрутил так, что он работает со стандартными картами мне не стыдно. Я еще помню Клампу давал задание просто переработать стандартные скрипты ии, чтобы в сражениях комп хотя бы тупо строил бараки и прибегал солдатиками, но он этого не сделал, потому что цитата: "1000 - мудак" =)
Насчёт спелов в целом я понимаю, что никто не стал бы вдаваться, что мы там магам за спеллы раздали
На самом деле там были интересные спелы, например морлок, который превращался в кустик. Прыжок троля кажется. Даже болото Болга, я его хотел уберсплатом делать, без терраморфинга, если не ошибаюсь. Проблема там была такая, что я много где чудил с декорациями, загоняя их под землю, и даже немного терраморфинга очень бы портило картинку.
Но если бы спелы придумывались вместе с тем человеком, кто бы их реализовывал - объем работы был бы на 50% меньше. Я помню очень сложный ульт Дорена кажется, когда враги должны были в страхе разбегаться. Чтобы это нормально реализовать - надо было очень много извращаться. Также было много проблем, когда баги могли возникать при использовании 2 различных спелов, они просто конфликтовали. Я более чем согласен, что оставив интересные эффекты, но убрав слишком тяжелые для реализации мы бы незначительно потеряли в "крутости" проекта, но выиграли бы в шансах увидеть мир для него. Еще одна проблема, и во многом это мой косяк - огромные карты, которые надо потом наполнять скриптами и событиями.
Ещё один момент, мы бы ещё триста лет выправляли всякие иконки, звуки (вот тут как вообще?) и прочее. Короче недооценка работы примерно в 30 раз.
С иконками особых проблем не было бы. Я очень благодарен SWDN, он сильно помогал именно с рутинной работой (возможно, он писал скрипты?), но проставить иконки - вопрос нескольких дней максимум.
Звуки - ты про отряд ночных эльфов?) Я делал сразу все под озвучку, и там фразы было бы нарезать и вставить относительно не сложно.
Надо было сделать одну карту со стандартными (в первой версии как минимум) моделями, чуть изменёнными спеллами и погодным скриптом)
Я бы не сказал. Был шанс все сделать, я помню еще думал, какие карты выбросить. Хотел выбросить 4, где они искали расшифровку документа, найденного в форте людей. Вроде как Болг куда-то исчез, а потом вернулся на собрание сразу крутым и просветленным о том, что морлоки на самом деле не чмошники. 6 карта - поход через горы кажется? Она мне нравилась. Далее 7 - перед столицей - однозначно выкидывалась. 8 - восстановление столицы, нужна. 9 - не помню уже, пленение Болга? 10 - АоС, я под нее рельеф делал. И дальше штурм столицы. Если бы был второй нормальный кодер, который бы мог писать сценарии параллельно со мной - было бы лучше. Я сам загнулся на 3 карте, для которой я в виде тестового задания сделал просто огромный рельеф, и которую потом населять событиями было просто жесть. Там карта вырисовывалась часа на 2 - 3. С разными вариантами штурма форта. С его защитой. Я там даже делал караваны, которые шли через всю карту, из можно было атаковать, там было бы золото и артефакты, но через пару таких гоп стопов торговая федерация начинала бы посылать очень сильные защитные конвои. Еще там была деревня, кто-то про нее сказал, что она - типично совковая.
Короче недооценка работы примерно в 30 раз.
Да, примерно так и есть =) Ну и мы были очень зелеными. Я брался за все, и пытался все сделать прямо так, чтобы совсем. Чтобы был самый крутой проект. Я еще помню твои слова, что для наработок версии указывать нужно, а для моделей - вообще-то нет. Было весело собирать все и выставлять юнитам модельки.
и кстати можно когда-нибудь.
Ну, я таки сделал карту, даже две. В первой есть небольшой баг, Болг не проходит в одном проходе, но это фиксится перерисовкой карты путей. Работы меньше, чем на час. Из интересного, так карта, которая попала в бету - это третья "первая" миссия. Я видел еще две, одну совсем простую, и вторую - с которой я делал эту. Это тоже говорит о том, какие мы были зеленые.
Первой картой я между прочем весьма доволен, там все неплохо так получилось.
Я хоть сейчас и не в ит, но мне ведение такого проекта дало большой опыт.
Ред. adic3x
» Администрация XGM / Нестареющая классика — футболки XGM
Ред. adic3x
» Администрация XGM / Нестареющая классика — футболки XGM
» Администрация XGM / Нестареющая классика — футболки XGM
» Администрация XGM / Нестареющая классика — футболки XGM
Ред. adic3x
» Администрация XGM / Нестареющая классика — футболки XGM
Ред. adic3x
» WarCraft 3 / Баг с define
» WarCraft 3 / 4.Циклы
» XGM Team / Обновление 2019 - Stage 5
» Администрация XGM / А какой у вас размер футболки?
» Администрация XGM / А какой у вас размер футболки?
Ред. adic3x
» Администрация XGM / А какой у вас размер футболки?
» WarCraft 3 / Библиотека Color
» WarCraft 3 / Баг с появлением Weather эффектов (погода)
» WarCraft 3 / SharpCraft XGM Addon
Doc:
» Tides of Darkness / Победа Тьмы
» Tides of Darkness / Победа Тьмы
Ред. adic3x
» Tides of Darkness / Победа Тьмы
» RenderEdge / [RenderEdge] Memory Hack
» RenderEdge / [RenderEdge] Memory Hack
» RenderEdge / [RenderEdge] Memory Hack
» RenderEdge / [RenderEdge] Memory Hack
Ред. adic3x
» RenderEdge / [RenderEdge] Memory Hack
» RenderEdge / [RenderEdge] Memory Hack
Ред. adic3x
» Murloc Expansion / Программа для запуская мода Murloc Expansion (launcher)
» Murloc Expansion / Программа для запуская мода Murloc Expansion (launcher)