3

» WarCraft 3 / Удаление текста из журнала сообщений

Если мне не изменяет память, область текста журнала сообщений является фреймом по типу textarea. Уже занесенный текст в данный фрейм невозможно отследить, он ничем не хукается. Можно попробовать нативно изменять лимит занесенных строк в textarea, тогда строки, выходящие за этот лимит будут удаляться. Но тут муторно, тебе надо будет отлеживать АБСОЛЮТНО все сообщения в чате и считать их, чтобы не накосячить с лимитом и не удалить что-то лишнее. И то я хз, может ли это сработать, если честно ни разу такое не пробовал. Ну и версия игры должна быть 1.31+.
3

» WarCraft 3 / Смена интерфейса во время игры

Так, а в чем спор? Я не въехал xDD. Доступ к интерфейсу есть с версии 1.31 (пре-рефордж), но там некоторые функции сильно ограничены. Начиная с рефорджа простота и удобство в создании кастомного интерфейса ограничены лишь фантазией. Начиная с версии 1.33 нативки некоторые для интерфейса немного изменились. Это важно учитывать. Интерфейс для версии 1.32 может криво работать, начиная с версии 1.33, и наоборот. Если будешь переносить проект на более новую версию, это надо все перепроверять. На XGM есть прекрасный перевод цикла статей с хайва, с дополнительными комментариями от автора xgm.guru/p/wc3/Funktsional-freymov-Ums. Различия в версиях там тоже указаны.
Текущие ограничения и проблемы при создании интерфейса - нет фрейма, ответственного за полноценный прокручиваемый список с другими функциональными фреймами, его просто нет в движке рефорджа. Обойти можно с помощью костылей, используя, как вариант наработку FrameFlow.
Кастомный интерфейс также сбрасывается при загрузке сохраненной игры, надо это учитывать и занового вызывать код, ответственный за кастомный интерфейс при загрузке сохраненной карты. Спокойно делается на гуи в 2 строчки.
Пара советов: создаваемые фреймы надо заносить в переменные и обращаться к ним, как к переменной. Функция GetFrameByName может иногда тупить, если на основе фрейма, с которому обращаются, уже создано много других фреймов.
Если создаешь анимированный фрейм на основе модельки mdx, лучше подгружать путь модельки заранее через Preload, иначе на прогрузке файла модельки фрейма может возникнуть микро-фриз. Как работать с Preload тоже куча статей.
Некоторые нативки могут вызывать диссинхрон. Какие именно - также есть в цикле статей.
3

» WarCraft 3 / Дополнительные слои материала в модельках рефорджа

poisoNDealer:
У меня настолько криво работает ретера, что этим способом новая вкладка не появляется, наоборот, встроенный оптимизатор строк в ретере просто удаляет эти строки при сохранении модельки в mdx, а формат mdl вар не всегда читает, если моделька "сложная" xDD. Ну буду разбираться, что с ретерой не так)
3

» WarCraft 3 / Дополнительные слои материала в модельках рефорджа

poisoNDealer:
Сорян, курсач писал, не заходил на форум. Огромное спасибо за такой развернутый ответ. У меня в ретере не работают некоторые кнопки. Я хз, но кнопка добавить слой, изменить значение какой-либо строки и прочее не работают, я поэтому думал, что это не работает... Приходится все менять в текстовом файле... Попробую тогда разобраться, что не так!
3

» WarCraft 3 / Дополнительные слои материала в модельках рефорджа

poisoNDealer
Да просто интересно, находили ли люди способ как обойти это ограничение. По сути же в HD-шейдере теперь стабильно 5 слоев, хотелось бы узнать, пробовал ли кто-то добавить большее количество и получилось ли. Статичные текстуры можно накладывать в тот же тимколор, я согласен, но проблема в том, что этот слой обрабатывается отдельно какими-то внутренними алгоритмами игры. Нельзя, допустим, заставить "не-основной" слой иметь какие-то свои параметры, например, анимировать его, я пробовал, не выходило.
В SD этот функционал был классной фишкой. Вот например, представь стену со статичной текстурой, и я дополнительно накладываю на нее текстуру, ответственную за водные блики, и я слой с этой текстурой могу спокойно анимировать, менять прозрачность, все как мне вздумается. В HD я вынужден пока отказаться от этого((
3

» WarCraft 3 / Сделать говорящего ИИ (на развитие)

  1. Сделать отдельную модельку твоего диктора, в которой будут специальные анимации, начинающиеся с Portrait. Также в модельке должна быть камера, с которой личико твоего диктора будет выводиться на экран.
  2. Для каждой эмоции прописать теги анимации. Типа пусть "радость" - это first, "гнев" - это second и по аналогии. Тогда у тебя будут наборы типа Portrait First, Portrait Talk First, Portrait Second, Portrait Talk Second и т.д.
  3. Разместить юнита-диктора на карте и запихнуть его в переменную.
  4. В нужный момент вызывать реплику, как это сделано в кампаниях варика, когда вот ты идешь, делаешь кв и какой-то юнит начинает говорить. В этот момент появляется текст, а портрет внизу экрана меняется на портрет диктора. Я не помню уже как это делается, но, думаю, пороешься - найдешь. Это все есть в ГУИ.
  5. В зависимости оттого, какая тебе эмоция нужна в момент реплики, присвоить соответствующий тег (First, Second, Third и т.д.) юниту. Анимации портрета автоматически подстроятся под тег. Не забудь потом очистить теги, чтобы не копить мусор. Это все тоже делается стандартными триггерами.
p/s судя по описанию, ты это делаешь на классическом варе, поэтому иконку интерфейса, отдельный портрет и прочее не сделаешь. В классике нет такого функционала. Только подгружать отдельные библиотеки, но я такое никогда не делал)
3

» WarCraft 3 / Могут ли строки вызывать рассинхрон?

GetLocalPlayer вроде бы починили и он более не диссинхронит, ну только если совсем тупо его использовать. От версии рефорджа зависит, не помню точно, в каком патче его поправили, на 1.32.10 все ок. В плане локализации тут да. Карты рефорджа в мультиплеере часто вылетали, если в матче были игроки с разной локализацией и это до сих пор полностью не починили. Попробуй делать локализацию через fdf файлы и GetLocalizedString. В таком случае код всегда будет одинаковый, а подгружаемая строка будет выполняться уже на локальном клиенте. В теории может исправить ситуацию, на практике хз, не сталкивался с таким еще.
3

» WarCraft 3 / Крепление эффекта к двум и более аттачам

poisoNDealer:
Да. Я имел в виду именно first, second и так далее до fifth. Можно еще использовать alternate и upgrade. С остальными иногда могут случаться баги. Хз, у меня теги типа Lumber и Gold любят тупить и слетать без видимых причин. Может быть я один такой счастливый.
3

» WarCraft 3 / Крепление эффекта к двум и более аттачам

MasterVlados, угум-с. У тебя в любом случае будет уникальный способ под твои задачи. Вот еще статья с использованием того метода, который тебе GRYLLL описал xgm.guru/p/wc3/gwheroes. С ней, например, можно сделать так, типа у тебя есть 3 вариаций меша для доспехов на модельке, а текстурки на ней меняешь уже этим способом. Так можно запихнуть кучу раскрасок каких-нибудь одеяний мага, к примеру. Сразу хочу сказать, что тебе надо позаботиться о safe-load системе, потому что анимационные теги сбрасываются при загрузке сохранения игры. Я обычно обхожу это, используя глобальные переменные. Типа вот у меня такой-то доспех, значит в глобалке есть какой-то маркер. При загрузке карты используется события, типа "savedgameisloaded". Не помню точно название уже, но поройся, оно есть. Когда сохранение загружается, выполняется функция if, и если такая-то переменная равна такому-то значению, то принудительно выполняется триггер, дающий анимационные теги.
3

» WarCraft 3 / Крепление эффекта к двум и более аттачам

Есть 2 варианта. 1-й, самый надежный на примере моделек из вов. Суть в том, что все твои доспехи располагаются непосредственно в модельке, делаешь много анимаций, в которых виден только 1 геосет брони. Типа Анимация Stand - нет доспеха, анимация Stand First - первый доспех, Stand Second - второй доспех и так далее. Если доспехов прям много, то можно вручную прописывать теги, потому что стандартные теги ограничены до 6 наборов. xgm.guru/p/wc3/playanimation . Минус в том, что если у тебя допустим есть модель нагрудника, плеч, ног и так далее, то для их всевозможных сочетаний придется создавать огромную кучу анимаций. Но сам понимаешь, при таком способе баги минимальны, потому что вот как ты прописал модель в редакторе, так она и будет в игре. Ты все контролируешь.
Второй способ - делать отдельные модельки доспехов, оружий и крепить их на аттачи в качестве предметов инвентаря, как это происходит например со сферами огня, яда и так далее (они крепятся к аттачу Weapon). Минус в том, что такая модель крепится к одной кости, и например с нагрудником скорее всего будут баги, потому что анимация тела - это чаще всего не одна кость, а 5-10. Но например наплечи, шлемы или посохи спокойно можно крепить таким способом. xgm.guru/p/wc3/anims-a-ya-9 .
В твоем случае, как я понимаю, нужно совместить эти 2 способа. Нагрудники и ноги сделать через анимационные теги, а "маленькие" модели крепить через аттачи.
3

» WarCraft 3 / Проблемы со скилом.

gellin, подскажите как?
Не подскажу. Как говорил, я пишу кастомный код всегда для того, чтобы все контролировать и избежать утечек, используя счетчик, на примере того, что тебе скинули. У меня все переменные под контролем, и когда триггер отработает, чишу. Тут просто совет, помнить, что в варе почти все (таймеры, точки, переменные типа last created, это все объекты, которые могут забивать память). Ну и опыт в оптимизации кода. Но я уверен, что найдутся здесь люди, кто шарит в этом лучше меня и подскажут.
3

» WarCraft 3 / Проблемы со скилом.

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

» WarCraft 3 / По вопросу перевоплощения

Метаморфоза работает так. Есть 2 юнита в редакторе, они связываются между собой метаморфозой. На время действия метаморфозы один юнит заменяется другим, потом обратно. В случае с Иллиданом в редакторе 2 юнита - да, но моделька у них одна. Форма демона вшита в модельку, а чтобы у этого юнита проигрывалась форма демона во время метаморфозы в путях анимации юнита написан префикс Alternate. Убери этот префикс в редакторе у той боевой единицы, в которую происходит метаморфоза и игра будет использовать базовый путь анимации. При этом у всех двух юнитов должна быть способность метаморфоза, иначе при обратном перевоплощении игра не сможет считать путь к модельке в базовой форме и выдаст ошибку.
Миль пардон попутал с похожей способностью. Значит смотри, тут 2 способа. Либо триггерно сбивать тэг анимации, либо с помощью любого редактора моделей поменять имена у анимаций нужной тебе модельки для формы метаморфозы. Тем анимациям модели, которые тебе нужны для формы метаморфозы, поставить тэг Alternate, у остальных убрать его.
Загруженные файлы
3

» WarCraft 3 / По вопросу перевоплощения

Метаморфоза работает так. Есть 2 юнита в редакторе, они связываются между собой метаморфозой. На время действия метаморфозы один юнит заменяется другим, потом обратно. В случае с Иллиданом в редакторе 2 юнита - да, но моделька у них одна. Форма демона вшита в модельку, а чтобы у этого юнита проигрывалась форма демона во время метаморфозы в путях анимации юнита написан префикс Alternate. Убери этот префикс в редакторе у той боевой единицы, в которую происходит метаморфоза и игра будет использовать базовый путь анимации. При этом у всех двух юнитов должна быть способность метаморфоза, иначе при обратном перевоплощении игра не сможет считать путь к модельке в базовой форме и выдаст ошибку.
3

» WarCraft 3 / Рабочие идут в ополчение, выписаться оттуда проблема.

Проблема не в модельках, а в незнании механик действия способности "призыв к оружию". У юнитов ополчения ты эту способность удалил, а надо, чтобы она была, потому что в момент смерти или в момент окончания действия ополчения эта способность принудительно юзается близзовским скриптом. Верни ополченцам во вкладке способности свой кастомный "призыв к оружию" и вылеты прекратятся.
3

» WarCraft 3 / конверт моделей

В плане софта для конвертации - универсальный вариант плагин Neodex для 3ds Max 2011 и Starcraft 2 Art tools для первичной оптимизации модели в максе. Как ты запихнешь модель в макс - зависит от того, с какой игры конвертишь. Нужен либо плагин, который позволит максу импортировать эту модель, либо сторонний софт, автоматически переводящий модель в формат, читаемый максом, например формат fbx. Очень часто при извлечении моделей есть кнопка типа Export to FBX.
Neodex - www.hiveworkshop.com/threads/neodex-2-7-wc3-modeling-kit-for-3ds...
Starcraft 2 Art tools - news.blizzard.com/ru-ru/starcraft2/12444476/obnovlenie-2-1-art-t...
3

» WarCraft 3 / Заклинание которым можно снять метаморфоз демонхантера?

Сделай способность обратной морфозы с постоянным временем действия (ну чтобы перевоплощало в базовую форму без таймера перевоплощения обратно). Способность невидимая, можно вызвать только триггерно. Даешь ее юниту в форме метаморфозы. Триггерно вешаешь баф-пустышку, типа этот юнит перевоплощен, который можно развеять рассеиванием. Если баф рассеивают, триггерно прожимаешь невидимую абилку обратной морфозы, юнит принудительно вернется таким образом обратно в обычную форму. Не забудь учесть эффекты оглушения во время прожатия обратной морфозы. Способность должна иметь возможность юзаться под этими эффектами.
3

» WarCraft 3 / Зона видимости фрейма

Можно для симпл фрейма задать родителя Frame, и этот фрейм поднять, с ним же поднимутся и симпл фреймы.
Тоже думал об этом. Поиграюсь уже после праздников. Для вертикально прокрутки сделал пока рамки, скрывающие уходящий фрейм, благо этот блок надо было сделать в полноэкранном разделе интерфейса. А вот с локальным участком скорее всего буду делать горизонтальную прокрутку через статусбар, если не найду в скриптах близзов никаких намеков на то, как реализована нормальная система окна с фреймами в менюшках рефорджа.
3

» WarCraft 3 / Зона видимости фрейма

poisoNDealer
У просто статусбара есть ряд проблем. Во-первых, это SimpleFrame, он расположен на самом низком уровне, если под ним что-то будет, то оно перекроет его. Во-вторых, "урезание" работает только в горизонтальной плоскости, создать вертикальную прокрутку не получится никак.
Но в целом это реально сделать с ним. В качестве BarTexture указать нужную текстуру, выставить значение на 100, а в качестве текстуры фона - прозрачную текстуру, а далее тригерно при смещении фрейма к границе родительского фрейма начать урезать текстуру, а чтобы вынесенный фрейм не был кликабельным, создать прозрачную рамку, которая перекроет область смещения, куда невидимый фрейм будет выходить. Как вариант.
Но блин, костыльно, костыльно. В игре есть способ создания нормального окна фреймов, я видел их в менюшке, я верю xDDD
3

» WarCraft 3 / Зона видимости фрейма

МрачныйВорон
Похоже так и придется делать. Я по сути сделал систему, позволяющую плавно передвигать список строк с фреймами вверх и вниз, используя колесико и слайдер. Но хотелось красиво спрятать, без рамок для скрытия. Попробую может html как-нибудь запихнуть еще. Хз.
3

» WarCraft 3 / Зона видимости фрейма

Но фдф не всемогуще, к сожалению..
Рылся в фдф файлах, но какого-то особого типа или свойства фрейма я не нашел. Но по идее в игре это реализовано, значит можно. Никто не знает, как?
Если в игре есть что-то, то не все возможности предоставлены редактором. Это где-то в движке. Пример, окно альянса, там похожее. Строчки 24-х игроков не влезают в окно, и часть скрывается
многое триггерами делается.. про что конкретно вы говорите, я не знаю. Нужно больше деталей. Как фрейм скрывается? Отчего происходит данное лействие: скроллбаром двигают наверн?
Есть похожая система Тайсена:

Или вот это ?
Я видел то, что вы скинули. Эти системы довольно легко делаются. Как бы вам объяснить, что мне нужно. Ну вот к примеру та же наработка FlameFlow. Если фрейм выходит за пределы родительского фрейма, то он скрывается полностью. Мне надо, чтобы скрывалась только та часть, которая выходит. Типа textarea, только framearea, которого по идее не существует, но блин в интерфейсе рефорджа это же как-то реализовано.
3

» WarCraft 3 / Syntax Error

gellin,
Пробовал переносить способку в другую карту и там она работала без каких-либо проблем.
тут дело именно в парсере, он отказывается компилировать хотя всё у автора включено, на отдельной карте работает
Да, но я не понимаю, причину этого, поэтому надо сначала попробовать исправить то, на что ругается хелпер, а уж потом глядеть, шо он дальше напишет. Я посему, если честно, и не люблю работать с джассом, такие сюрпризы порой выдает, уфф... Если упорно хочется сохранить именно такой синтаксис, то, если это версия рефордж, можно сохранить карту, как папку, и встроить данный кусок кода внешними редакторами, типа VS code.
3

» WarCraft 3 / Syntax Error

Попробуй объявить локалку вначале функции, а потом просто обратись к ней в нужном куске. За джасс не ручаюсь, но на луа работает прекрасно. В твоем случае получается, что локалка работает только для куска условия (if). Не все версии вара понимают такое обращение. Скорее всего способность была сделана на версии 1.30 и выше, где с этим проблем нет.
3

» WarCraft 3 / Убрать "оверсайз" у хайлайта.

Ну в общем я нашел только один способ - это вручную уменьшить текстуру подсветки в цифровом редакторе. Но надеюсь, что есть более адекватный способ.
3

» WarCraft 3 / Помощь по Mdlvis

Выделяешь нужную тебе часть, копируешь. После выбираешь какую-то ОДНУ вершину на той поверхности, куда тебе нужно присоединить. Жмешь специальную вставку (во вкладке, где копировать/вставить, не помню уже название). Сохраняешь модель. В окне геосетов/поверхностей появляется твой новый вставленный фрагмент, выделаешь его и ручками передвигаешь и поворачиваешь, чтобы было симметрично. Автоматической симметрии как таковой в Mdlvis'e нет.