27

» WarCraft 3 / Как упрощать нагромождение триггеров

Ну можно сделать так. Регистр события обычно вешают на регион, а не на область!!!
В регион записываем все области. Область - прямоугольник (rect). А в регион можно записать все эти области. Расставляем все эти прямоугольные области в разные места на карте. Когда юнит заходит в одну из этих областей, срабатывает событие вход в регион. И нужно проверить в какую область, есть спец нативка проверяющая какая область. Циклом можно пробежаться по индексу/номеру области. Области можно пронумеровать, короче бд.
re[0]=Область..
re[1]=Область..
И вы задаете юниту номер направления, или номер области. Когда юнит входит в регион, чекаем область и номер какой, у него записываете номер, и отправляете дальше в след номер бежать.
27

» WarCraft 3 / скалируются ли размеры экрана?

текперь понял почему не работало ничего. Попутал FRAMEPOINTS при движении, при перезаписи на LUA от другого взял и вставил коорды с размерами.
27

» WarCraft 3 / скалируются ли размеры экрана?

думаю наработка с хайва в самый раз эта.
почему на jass у меня норм координаты и размеры подобраны. Лично на глазок подбирал. Переписал на Lua, и все съехало. Попробовал эту наработку, и все норм
Загруженные файлы
27

» WarCraft 3 / скалируются ли размеры экрана?

Padparadscha, спасибо) но нужно самому понять, и потестить, сравнить. щас ничего не понимаю.

Bergi_Bear, просто мне нужно подбирать координаты за пределами же 4:3, по бокам.
27

» WarCraft 3 / Можно ли убрать сверху невидимую полосу?

Bergi_Bear, а что дебажить, просто не знаешь что за полоса наверху и к какому фрейму относится, как называется. есть идея посмотреть в архивах в fdf-file. Просто по размерам чекнуть
ORIGIN_FRAME_WORLD_FRAME - отвечает за игровую область. Это самый-самый нижний фрейм, за ним вроде объекты на карте лежат, короче сама карта (юниты, декор,итем и пр). Отключаешь его, и черный экран. У него один потомок, я его прятал. Ничего.
ORIGIN_FRAME_GAME_UI - он отвечает за все. Так что ничего не дает.
Из всех известных в скриптах фреймах ничего на ум не приходит
27

» WarCraft 3 / Папка => w3x

Bergi_Bear, ну а че можно поделать, если нехороший рефорджет мне тигриную морду запускает. И ждешь от 20 сек до 1 мин когда он подумает. Ясно же дело, когда тестишь с непонятными фреймами, которые непонятно будут работать или нет, ты уже морально устанешь и не захочешь чего либо делать и закидываешь работу на завтра.
1 пункт от Bergi_Bear: 1.1 (ненормативная лексика)
27

» WarCraft 3 / Папка => w3x

а зачем это? в VsCode есть открываете в режиме папки, а можете открыть в режиме редактора Shift + F1.

знаете что не хватает нашему VSCode библиотека нативок как в JNGP. да она подсвечивает только когда вводишь, но это не. Постоянно открываешь Comon.lua вводишь название нативки, и не всегда в поиске она отображается в этом блокноте. это время.
27

» WarCraft 3 / Отследить удар рукой

NatriY, рефорджет 1.31-1.32, или мемхак. я вот версии 1.27 по 1.31 не достал, тк сидел на 1.26, поэтому не знаю как там.
27

» WarCraft 3 / Отследить удар рукой

NatriY, все магические заклинания, наносящие урон. например можно переделать все стандартные близзардские абилы, где есть урон, на триггерные кастомные абилы. И радуемся). Это рили.
27

» Кузня Волчачки / Исследование патча 1.31

ты прав. OSKEY_SHIFT не работает, теперь как очереди задавать? OSKEY_LSHIFT и OSKEY_RSHIFT работают частично.

нашел ответ
27

» WarCraft 3 / Можно ли активировать прицел или не закрывать его?

Как сделать так, чтобы прицел не закрывался?
  1. отслеживаем клик по зданию/абилке (не каст!!) <= начало вызова прицела. Эти новые рефорджеские события
  2. создаем невидимый фрейм на весь экран. Он будет располагаться ниже, чем весь интерфейс. Но закроет игровую область. Это значит, что вы можете делать все (двигать прицел, перемещать камеру и пр). Но вы не сможете мышью кликнуть по цели, тк клик идет по фрейму. У вас останется открытый таргет. Одновременно с этим вы не сможете выделить юнитов, объекты на карте и прочее. Только кнопки интерфейса работают.
frame = BlzCreateFrameByType("BUTTON", "", BlzGetFrameByName("ConsoleUIBackdrop", 0), "", 0)
BlzFrameSetSize(frame, 1.088, 0.6)--размер, распространяем на весь экран 
BlzFrameSetAbsPoint(frame, FRAMEPOINT_CENTER, 0.4, 0.3) --создаем в центре экрана
BlzFrameSetVisible(frame, false) --если нужно чтобы работал показываем, не нужно прячем. А мб и каждый раз пересоздавать. просто у меня при инициализации один раз создан на всю игру
  1. Движение курсора - отслеживаем событием движения. И чекаем координаты.
  2. отслеживаем клик. Есть события мыши - правая и левая. Правая отмена, левая нажатие. Еще можно отслеживать клик фрейма. Тут как бы мы можем чекать условие - подходит, не подходит.
  3. ну и отмены отслеживаем, чтобы убрать этот фрейм (если его не убрали).
27

» WarCraft 3 / Насчёт косвенной работы книги заклинаний

Fly123, я понял, что не для вас. вам спелбук подойдет. Но я просто хотел кучу процессами управлять. Вроде таргетами, пришлось менюшку строительства просто убрать. Иначе при клике таргет закрывается, когда там запрещено или чего то такое. А теперь столкнулся с проблемой находится ли курсор в игровом поле или в поле интерфейса. еще больше костылей приходится делать 0-0
27

» WarCraft 3 / Путь к иконкам дерева и пищи

в редакторе в Игровой интерфейсе смотри GameInterface

GoldIcon=UI\Feedback\Resources\ResourceGold.blp
LumberIcon=UI\Feedback\Resources\ResourceLumber.blp
UpkeepIcon=UI\Feedback\Resources\ResourceUpkeep.blp
SupplyIcon=UI\Feedback\Resources\ResourceSupply.blp
27

» WarCraft 3 / при destroy effect проигрывается анимация

Bergi_Bear, ну надо тоже понимать что ты делаешь. так на чужой код времени уходит больше. А когда сам все сделаешь, и сидишь больше, уже понимаешь все лучше
я помню, что ты что то с растениями делал пример. Не помню где
27

» WarCraft 3 / при destroy effect проигрывается анимация

решение
--двигаем в угол карты
BlzSetSpecialEffectPosition( effect, GetRectMinX(GetWorldBounds()), GetRectMinY(GetWorldBounds()), 0 )
--удаляем спецэффект
DestroyEffect(effect)
27

» WarCraft 3 / Прозрачный интерфейс.

просто ты в карте выбираешь один язык. Если выбираешь lua, то все пишешь только на lua
27

» WarCraft 3 / Прозрачный интерфейс.

jasonrus96, надо исправить ошибку. мб проблема в не соблюдении синтакса lua. Смотреть тут Там теперь немного от jass синтаксис отличается. и проблемы всякие из-за отсутствия типизации данных у lua. какой код?
27

» WarCraft 3 / Прозрачный интерфейс.

jasonrus96, надо полностью удалить код и все триггеры. А потом можно. На lua сложнее будет, ошибок много, искать надо итд
27

» WarCraft 3 / Прозрачный интерфейс.

полная база по фреймов тут внимание: может глючить, 300 страниц. Но если подождать, то прогрузится
оригинал
есть пример тут
можно разными способами сделать. берете рисуете текстуры, импортируете и создаете. Если нужно чтобы вся картинка была полупрозрачной, то задаете фрейму альфа-канал нативкой.
код
---@param frame framehandle
---@param alpha integer
---@return nothing
function BlzFrameSetAlpha(frame, alpha) end	-- (native)

---@param frame framehandle
---@return integer
function BlzFrameGetAlpha(frame) end	-- (native)
Текстуру можно раскрасить во время игры с помощью перечисленных natives:
BlzConvertColor takes integer a, integer r, integer g, integer b
  • вводите alpha (0-255), red (0-255), green (0-255), blue (0-255), и эта функция возвращает 16-ричный цветовой код.
BlzFrameSetVertexColor takes framehandle frame, integer color
  • эта функция подкрашивает текст в нужный цветовой код
А если частично, то это надо в графическом редакторе вроде фотошопа задать альфа-канал, у backdrop надо писать BackdropBlendAll и части отрисовываются. или код
---@param frame framehandle
---@param texFile string
---@param flag integer
---@param blend boolean
---@return nothing
function BlzFrameSetTexture(frame, texFile, flag, blend) end	-- (native)

сам я не делал такое. но надо самим пробовать
Загруженные файлы
27

» WarCraft 3 / Насчёт косвенной работы книги заклинаний

Ты же вроде на lua переходил чувак. Можно сделать контейнер через фреймы, можно код потом скинуть:
  1. ловим main selected unit ссылка . Заводим переменные LastMainSelectedUnit и NewMainSelectedUnit. В LastMainSelectedUnit содержится инфа о старом юните. А NewMainSelectedUnit просто чекаем какойц юнит сейчас выделен. Тут можно таймером 0.03 сек проверять изменился ли Last != New. Если изменился, удаляем старые фреймы на LastMainSelectedUnit, добавляем новые на NewMainSelectedUnit (если у него есть конечно). Пока что не ясно локальные ли данные хранятся в Last и New, то можно попробовать по-другому, хранить целое число - handle и GetLocalPlayer
  2. если main selected unit это наш герой, даем ему кнопку меню. Но перед тем как дать, нужно спрятать там системную кнопку.
  3. создать в начале можно основной контейнер, на него создаем внутренний контейнер, и кнопку "отмена". внутренний содержит не 12, а 11 кнопок. Сейчас пока кол-во не превышает 11, можно увеличить больше 11. Но список можно увеличить как тут. Я не буду тот код брать, сделаю свой. Мб потом еще скроллбар и пр. На внутренний вешаем кнопки. Внутренних контейнеров мб несколько, в одном здания в другом растения.
  1. при активации кнопки меню прячем все CommandButton, и показываем основной контейнер.
  2. все работает так как с правилом родитель - потомки. прячем один внутренний контейнер, прячем все 11 кнопок. показываем другой внутренний - показывают другие кнопки. прячем основной контейнер - прячем все.
  3. ловим все отмены. нажатие кнопки отмены, клавишу Esc и пр.
  4. в подсказках можно создать ресурсы - иконки и стоимость. Ну и морфим =))