3

» WarCraft 3 / Проблема с мемхаком

quq_CCCP:
у вас в коде используется cjass, а вы его отрубуили, конечно ругается, в жасее нету такого "||", вместо него используется "or", если чо локалки в жассе обьявлять можно лишь вначале функции. То что я скинул с сижасом работать должно.
Исходя из ваших комментариев, я попытался заменить синтаксис в карте, дабы при отключении cjass можно было спокойно сохранять карту. К сожалению, это привело к тотальному краху и я вынужден вернуться сюда и продолжить просить помощи.
Вы упоминали, что в этой сборке мемхака нет комментариев перед строчками, отключающими проверку кода. Комментарии были, я разобрался и убрал их. По итогу получились примерно такие строчки (скидываю скрин, поскольку не уверен в правильности моих действий).
Однако при сохранении карты теперь выдаёт следующую ошибку (скрин 2). Для включения этой функции необходимы какие-либо дополнительные надстройки?
Загруженные файлы
3

» WarCraft 3 / Проблема с мемхаком

quq_CCCP:
Вот попробуй.
Добрый день! Исходя из тестов редактора у меня получилось выяснить следующую вещь - при отключении пункта "EnableAdicOptimizer" редактор перестаёт ругаться на эти 11 ошибок и может спокойно работать с мемхаком, но при переносе мемхака в свою карту и последующем сохранении вылетает следующая ошибка:
В данный момент я пытаюсь импортировать скинутый вами мемхак. Причём редактор ругается на любой символ, сколько бы я триггеров не удалил. По моему опыту могу сказать что такое случалось, когда в коде были ошибки, который редактор по тем или иным причинам не находил. И данная ситуация ставит меня в тупик, ибо если поставить галочку на "AdicParser", то редактор спокойно сохраняет код, но не может сохранить мемхак. А если галочку убрать, то редактор спокойно сохраняет мемхак, но не может сохранить код.
Загруженные файлы
3

» WarCraft 3 / Утечка при массовом касте

Vlod:
AllChosen, строки
TrigSpell = 0
TrigPlayer = null

EnumPlayer = null
EnumUnitType = 0
Строка
EnumUnit = null
тоже лишняя, так как условием выхода из цикла loop является
exitwhen EnumUnit == null
Старайтесь использовать координаты вместо локаций:
GetSpellTargetLoc() -> GetSpellTargetX(), GetSpellTargetY()
GroupEnumUnitsInRangeOfLoc() -> GroupEnumUnitsInRange()
CreateUnitAtLoc() -> CreateUnit()
Благодарю за совет. По итогу решил проблему и смогу оптимизировать данный скрипт

ScopteRectuS:
Наверное, из_за дамми юнита, который не сразу удаляется, а лишь после полного разложения трупа. Я бы не рекомендовал создавать столько даммиков, а использовал бы одного, если, конечно, способность мгновенная.
К сожалению, такой скрипт должен действовать на все способности и не всегда они будут мгновенными
3

» WarCraft 3 / Критическая ошибка в карте

DracoL1ch:
проблема в directX, т.е. модель-текстура
Можете, пожалуйста, рассказать подробнее?
Если в данном случае крашит из-за использования directX, то запуск при помощи OpenGl должен помочь в данном случае, если я правильно понял?
3

» WarCraft 3 / Проблема инициализации карты

Спасибо всем кто откликнулся на мою проблему. Спасибо за ваши советы и предложения, вы рассказали очень много новых и интересных для меня вещей)

8gabriel8:
Вроде работает, но не знаю, так ли у тебя работало ранее. Проверь. Касательно проблем с триггерами не уверен, но вроде бы видел триггеры с одинаковым названием на русском. На всякий случай изменил все названия триггеров с кириллицей на латиницу, так как проблемы с этим уже упоминали. В триггере инициализации было два события, что в итоге приводило бы к двойному срабатыванию, одно из них удалил. Также удалил несколько ретурнов, чтобы с одной стороны увидеть работоспособность триггеров, так удалил ретурн перед постановкой заданий в инициализации, с другой сомневался, что они корректно работают, а проверять было некогда, например, в цикле от 1 до 350 ретурн мог не пустить выполнение цикла дальше первого элемента. Но главное в том, что ты вводишь лишнии глобальные переменные вместо указателей (Triggering unit) или (Item being manipulated), причём их порой даже не используешь, просто устанавливаешь сначала, а в конце обнуляешь. Так не надо делать, пользуйся стандартными указателями на юнитов, типа (Triggering unit) или (Attacking unit), не удаляя или обнуляя их, а то только лишнюю нагрузку создаёшь для памяти, процессора и очереди операций. Обычно (Triggering player) по умолчанию является владельцем (Triggering unit), тоже используй сразу, а не плоди переменные. После удаления точки, не обнуляй её. А ещё попробуйте использовать какие-то оптимизаторы для карты, потому что её загрузка просто жесть - более 50 тысяч переменных для объектов редактор показывал) Только после оптимизации карта будет годна лишь для игры, а в редакторе не будет открываться.

Печатал уточнение и заснул)
Не указал, что вроде бы видел два триггера Безымянный триггер 002 или Безымянный триггер 005, одинаковые имена как раз могли быть причиной проблемы.

Самым лучшим комментарием считаю 17 от Hate.
Спасибо что объяснили возможные причины неполадки. Впредь буду стараться не косячить с этим. Спасибо огромное за помощь)
3

» WarCraft 3 / Проблема инициализации карты

8gabriel8:
AllChosen, в менеджере объектов посмотри, там указано, что их 187. И они некрасиво сделаны, считаю. Закончу, проверю и оставлю комментарий, что не так с ними.
Был бы очень признателен)
3

» WarCraft 3 / Проблема инициализации карты

Hate:
как карта называется? сам файл
так же какой путь до карты? до редактора?
Название файла - TempVersion_1_1_3
Путь до карты - C:\Instruments For War3\Maps
Путь до редактора - C:\Program Files (x86)\Jass New Gen Pack Rebuild
3

» WarCraft 3 / Проблема инициализации карты

Hate:
если триггеров очень много, то вполне вы напоролись на лимит)
Триггеров очень мало. Всего штук 30-50. Я старался минимизировать свой поток идей, предполагая что в будущем с триггерами может приключиться такая ситуация.
В прошлом у меня случались такие проблемы, что триггеры не импортировались в готовую мапу. Но тогда я просто импортировал их второй раз или скачивал другую версию карты, таким образом всё исправлялось

AllChosen:
Hate:
если триггеров очень много, то вполне вы напоролись на лимит)
Триггеров очень мало. Всего штук 30-50. Я старался минимизировать свой поток идей, предполагая что в будущем с триггерами может приключиться такая ситуация.
В прошлом у меня случались такие проблемы, что триггеры не импортировались в готовую мапу. Но тогда я просто импортировал их второй раз или скачивал другую версию карты, таким образом всё исправлялось
А мейби 60-80. Я тут немного пересмотрел их
3

» WarCraft 3 / Проблема инициализации карты

8gabriel8:
Грубо выражаясь, компилятор получает файл по пути с кириллицей, не понимает её и заменяет символы знаками нижнего подчёркивания, делает компиляцию и возвращает файл со скомпилированным кодом по этому пути со знаками нижнего подчёркивания, а пути нет, потому скомпилированный код никуда не поступает.
P. S. Очень долго карта грузится в редакторе и игре. Вот только запустил.
Да, карта у многих грузится долго, мы с ребятами напридумывали много чего, а потом столкнулись с проблемой реализации этого. Из-за этого вышло это нечто монструозное)
3

» WarCraft 3 / Проблема инициализации карты

Ikobot:
AllChosen:
Hate:
не юзать кириллицу ни в пути до жнгп, ни до папки с вариком, ни до карты, и в названии карты тоже
рабочий стол это тоже не вариант зачастую
Да, подобное я тоже вижу впервые. Учту, спасибо. Да, путь у меня был на кириллице. А как вообще с точки зрения техники вредит?
Некоторые программы неккоректно декодируют кириллицу в пути, из-за чего индексирование упарывается. Если коротко...
Интересное замечание)
Жаль, что не помогло, но тем не менее)
3

» WarCraft 3 / Проблема инициализации карты

Hate:
не юзать кириллицу ни в пути до жнгп, ни до папки с вариком, ни до карты, и в названии карты тоже
рабочий стол это тоже не вариант зачастую
Да, подобное я тоже вижу впервые. Учту, спасибо. Да, путь у меня был на кириллице. А как вообще с точки зрения техники вредит?
3

» WarCraft 3 / Проблема инициализации карты

8gabriel8:
AllChosen, скидывай, только лучше не в ЛС, а сюда. Так как нет гарантии, что у меня получится, а здесь другие смогут попробовать. Есть предположение, что могла возникнуть какая-то ошибка во время редактирования, ведь карта большая и работа ведётся несколькими людьми, но вариантов таких ошибок бесчисленное множество.
Остальные работают разве что над РО и декором) Но в любом случае окей, кинул карту.
На самом деле, у меня подозрения что действительно в моём ПО есть какие-то дефекты, из-за которых карта не запускается. Потому что, в общем-то, не бывает такого, чтобы рабочий продукт ни с чего переставал работать.

Hate:
как очевидные варианты - юзаешь жнгп, но карту скачал по пути с кириллицей, в итоге ничего не компилится и соответственно не загрузится
Так, а как эту проблему можно пофиксить? Я, честно, не особо представляю, как это. Или ссылочку на подобную проблему, пожалуйста
Загруженные файлы
3

» WarCraft 3 / Проблема инициализации карты

Hate:
вылет в главное меню = не скомпилированный код/ошибки при компиляции
Понимаю это, однако, повторяюсь, я взял код из сборки, которая работала у меня очень долгое время. К тому же не компилируется код самых простых триггеров
3

» WarCraft 3 / Проблема инициализации карты

8gabriel8:
Пробовал и в JNGP, и в стандартном редакторе делать перенос триггеров? И какая история этой карты, ты её создал с нуля или вскрыл защищённую и переделал, а может вместе с кем-то над ней работаете?
В стандартном редакторе я не смогу открыть карту, к сожалению. Слишком большая.
Создал карту с нуля, чужого кода там нет. Я занимаюсь над с несколькими товарищами, однако они в код не лезут

8gabriel8:
Пробовал и в JNGP, и в стандартном редакторе делать перенос триггеров? И какая история этой карты, ты её создал с нуля или вскрыл защищённую и переделал, а может вместе с кем-то над ней работаете?
Я могу вам скинуть в лс саму карту. Быть может, у вас она внезапно начнёт работать, но, честное слово, меня очень удивляет эта ситуация с триггерами
3

» WarCraft 3 / Проблема инициализации карты

8gabriel8:
А ты случайно не редактируешь на 1.26, а потом запускаешь в 1.31-1.32?
Нет, запускаю так же на 1.26
3

» WarCraft 3 / Проблема инициализации карты

Ikobot:
AllChosen:
Ещё раз повторюсь что до недавнего времени код работал отлично. А те триггеры, которые я кинул в приложение, взяты из бекапа "рабочей" версии проекта
Даже тогда подсказать не смогу. Разве что как вариант спрошу, ты модифицировал вар или редактор? Я знаю что некоторые скрипты сверх-чувствительны к версии pjass.exe, но это как правило в 3,5 случаев из 100. Может быть что-то в конфигах в реестре слетело.
К сожалению я никак не модифицировал вар

8gabriel8:
Ну вот ты говорил, что поторошил код. Как понимаю, отключал и включал по очереди триггеры в поисках проблемного. И к чему это привело?

И как понимать, что карта перестала запускаться? При запуске из редактора появляется ошибка или во время загрузки виснет?
Я обнулил все триггеры/переменные. И начал по одному триггеру перетаскивать из копии карты. Каждый второй триггер оказывался "не рабочим".
"Карта перестала запускаться" - при инициализации карты вместо загрузочного экрана выкидывает в главное меню. При попытке загрузить карту из папки "maps" так же ничего не происходит, карта не запускается
3

» WarCraft 3 / Проблема инициализации карты

Ikobot:
Ну разве что методом тыка потрошить код. Также как вариант включить проверку синтаксиса из jpng. Также проверь другие данные. Может быть РО повредилось. У меня частенько из-за сломанных РО переставали работать карты. Ну и нестандартный код проверь на всякий случай, иногда там может происходить смещение функций. Попробуй РО выгрузить на отдельную карту, если РО рабочее, то карта запуститься. Проверять на карте с пустыми скриптами.
Ещё раз повторюсь что до недавнего времени код работал отлично. А те триггеры, которые я кинул в приложение, взяты из бекапа "рабочей" версии проекта

8gabriel8:
А почему на скрине у тебя стандартные функции в виде custom script?
Во-первых, потому что я, когда писал эти методы, хотел в скором времени писать чистый код и, так скажем, "готовился" к этому.
Во-вторых, потому что мне это кажется более логичным, чем использовать стандартные функции. Так скажем, чтобы откладывалось это в голове
3

» WarCraft 3 / Проблема инициализации карты

Ikobot:
Ну разве что методом тыка потрошить код. Также как вариант включить проверку синтаксиса из jpng. Также проверь другие данные. Может быть РО повредилось. У меня частенько из-за сломанных РО переставали работать карты. Ну и нестандартный код проверь на всякий случай, иногда там может происходить смещение функций. Попробуй РО выгрузить на отдельную карту, если РО рабочее, то карта запуститься. Проверять на карте с пустыми скриптами.
Я уже попытался методом тыка потрошить код. И я, по большому счёту, могу переписать код, ведь он в мапе простейший. Но зачем делать это, не зная первопричины поломки?
В РО ничего не повреждено, ибо без триггеров мапа прекрасно запускается. Я первым делом проверил её без триггеров)
3

» WarCraft 3 / Расстояние от рудника до ратуши

NazarPunk:
В редакторе спокойно ставится, а вот в самой игре раб не может поставить ферму близко к руднику)
Это захардкожено в самой игре. Если изменение карты путей ратуши не поможет, то уже ничего не поможет.
Теперь я понял примерно как это всё дело работает и хоть примерно смогу с этим что-то сделать. Спасибо вам и 8gabriel8 х)
3

» WarCraft 3 / Расстояние от рудника до ратуши

8gabriel8:
А если дать способность принимать золото и древесину какой-нибудь ферме, которую поставить рядом с рудником?
В редакторе спокойно ставится, а вот в самой игре раб не может поставить ферму близко к руднику)
3

» WarCraft 3 / Расстояние от рудника до ратуши

8gabriel8:
Попробуй сменить руднику карту пути. Вроде бы в редакторе всё равно не даст поставить ближе, а в игре можно будет, либо наоборот.
К сожалению не помогло. Быть может, разве что на пару клеточек :) А вот в редакторе вполне спокойно ставит, луль х)
3

» WarCraft 3 / Многопоточность триггеров

Steal nerves:
AllChosen, ты пока что не понимаешь, что делаешь.
ты должен вместо цикла с вэйтом использовать "периодичный" таймер и сдвигать координаты, но пока что советуют посмотреть примеры xgm.guru/p/wc3/spellmaker-stomp-spell-creation
есть таймер одноразовый и периодичный, это все один и то же таймер, просто запускает разные режимы. через TimerStart
Спасибо вам) Теперь хоть буду понимать в чем стоит дальше разбираться)
3

» WarCraft 3 / Многопоточность триггеров

Steal nerves:
AllChosen, у тебя триггер то и простой. Но не понятный, должен работать, у тебя же нет задержек (ни вэйтов, ни таймеров). Что не работает?
Что у тебя за условие с "CharsList", не проще ли номера сравнивать чем id?
if number==1 then

elseif number ==2 then

endif
еще мб юнит не может кастовать, тк ты даймика создаешь слишком далеко от точки каста?
Извиняюсь, я немного неправильно скинул код. Та способность, которую я перекинул, подразумевает wait в конце каждой итерации цикла, чтобы эффекты появлялись плавно. В этом вся проблема, поскольку этот триггер перекрывается другими. Не могли бы вы мне объяснить - как конкретно в этой ситуации может помочь таймер? А лист там нужен для рандомизации спавна даммиков. Т.е, грубо говоря, в листе записываются значения координат +- (т.е. x будет положительным, а y - отрицательным) и т.д. для того, чтобы определить - на какой части должен заспавниться даммик. (К примеру x = 110 (число создаётся рандомно) / y = -90 и т.д.)
Загруженные файлы
3

» WarCraft 3 / Многопоточность триггеров

Steal nerves:
NazarPunk, скорее всего так. меня другое интересует. а я давно уже пробовал с вэйтами тест, где разные в разных потоках GetTriggerUnit() имеет разных юнитов. И короче GetTriggerUnit() и пр константы вара это никак не обычная глобалка, которая хранит лишь одно значение
Безусловно, проблем в моих триггерах много. Однако во всём приходится разбираться потихоньку, ибо без практики никак) Но вот таймеры меня заинтересовали. По ссылочкам из вашего документа я увидел лишь эту цитату "Создать поток можно запуском одноразового таймера с минимальной задержкой", но, признаться, не особо её понял. А код у меня такой вот, достаточно простенький, что ж поделать)
Загруженные файлы