Ну можно сделать так. Регистр события обычно вешают на регион, а не на область!!!
В регион записываем все области. Область - прямоугольник (rect). А в регион можно записать все эти области. Расставляем все эти прямоугольные области в разные места на карте. Когда юнит заходит в одну из этих областей, срабатывает событие вход в регион. И нужно проверить в какую область, есть спец нативка проверяющая какая область. Циклом можно пробежаться по индексу/номеру области. Области можно пронумеровать, короче бд.
re[0]=Область..
re[1]=Область..
И вы задаете юниту номер направления, или номер области. Когда юнит входит в регион, чекаем область и номер какой, у него записываете номер, и отправляете дальше в след номер бежать.
думаю наработка с хайва в самый раз эта.
почему на jass у меня норм координаты и размеры подобраны. Лично на глазок подбирал. Переписал на Lua, и все съехало. Попробовал эту наработку, и все норм
Bergi_Bear, а что дебажить, просто не знаешь что за полоса наверху и к какому фрейму относится, как называется. есть идея посмотреть в архивах в fdf-file. Просто по размерам чекнуть
ORIGIN_FRAME_WORLD_FRAME - отвечает за игровую область. Это самый-самый нижний фрейм, за ним вроде объекты на карте лежат, короче сама карта (юниты, декор,итем и пр). Отключаешь его, и черный экран. У него один потомок, я его прятал. Ничего.
ORIGIN_FRAME_GAME_UI - он отвечает за все. Так что ничего не дает.
Из всех известных в скриптах фреймах ничего на ум не приходит
Bergi_Bear, ну а че можно поделать, если нехороший рефорджет мне тигриную морду запускает. И ждешь от 20 сек до 1 мин когда он подумает. Ясно же дело, когда тестишь с непонятными фреймами, которые непонятно будут работать или нет, ты уже морально устанешь и не захочешь чего либо делать и закидываешь работу на завтра.
1 пункт от Bergi_Bear: 1.1 (ненормативная лексика)
а зачем это? в VsCode есть открываете в режиме папки, а можете открыть в режиме редактора Shift + F1.
знаете что не хватает нашему VSCode библиотека нативок как в JNGP. да она подсвечивает только когда вводишь, но это не. Постоянно открываешь Comon.lua вводишь название нативки, и не всегда в поиске она отображается в этом блокноте. это время.
NatriY, все магические заклинания, наносящие урон. например можно переделать все стандартные близзардские абилы, где есть урон, на триггерные кастомные абилы. И радуемся). Это рили.
отслеживаем клик по зданию/абилке (не каст!!) <= начало вызова прицела. Эти новые рефорджеские события
создаем невидимый фрейм на весь экран. Он будет располагаться ниже, чем весь интерфейс. Но закроет игровую область. Это значит, что вы можете делать все (двигать прицел, перемещать камеру и пр). Но вы не сможете мышью кликнуть по цели, тк клик идет по фрейму. У вас останется открытый таргет. Одновременно с этим вы не сможете выделить юнитов, объекты на карте и прочее. Только кнопки интерфейса работают.
frame = BlzCreateFrameByType("BUTTON", "", BlzGetFrameByName("ConsoleUIBackdrop", 0), "", 0)
BlzFrameSetSize(frame, 1.088, 0.6)--размер, распространяем на весь экран
BlzFrameSetAbsPoint(frame, FRAMEPOINT_CENTER, 0.4, 0.3) --создаем в центре экрана
BlzFrameSetVisible(frame, false) --если нужно чтобы работал показываем, не нужно прячем. А мб и каждый раз пересоздавать. просто у меня при инициализации один раз создан на всю игру
Движение курсора - отслеживаем событием движения. И чекаем координаты.
отслеживаем клик. Есть события мыши - правая и левая. Правая отмена, левая нажатие. Еще можно отслеживать клик фрейма. Тут как бы мы можем чекать условие - подходит, не подходит.
ну и отмены отслеживаем, чтобы убрать этот фрейм (если его не убрали).
Fly123, я понял, что не для вас. вам спелбук подойдет. Но я просто хотел кучу процессами управлять. Вроде таргетами, пришлось менюшку строительства просто убрать. Иначе при клике таргет закрывается, когда там запрещено или чего то такое. А теперь столкнулся с проблемой находится ли курсор в игровом поле или в поле интерфейса. еще больше костылей приходится делать 0-0
Bergi_Bear, ну надо тоже понимать что ты делаешь. так на чужой код времени уходит больше. А когда сам все сделаешь, и сидишь больше, уже понимаешь все лучше
я помню, что ты что то с растениями делал пример. Не помню где
jasonrus96, надо исправить ошибку. мб проблема в не соблюдении синтакса lua. Смотреть тут Там теперь немного от jass синтаксис отличается. и проблемы всякие из-за отсутствия типизации данных у lua. какой код?
можно разными способами сделать. берете рисуете текстуры, импортируете и создаете. Если нужно чтобы вся картинка была полупрозрачной, то задаете фрейму альфа-канал нативкой.
код
---@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)
Ты же вроде на lua переходил чувак. Можно сделать контейнер через фреймы, можно код потом скинуть:
ловим main selected unit ссылка . Заводим переменные LastMainSelectedUnit и NewMainSelectedUnit. В LastMainSelectedUnit содержится инфа о старом юните. А NewMainSelectedUnit просто чекаем какойц юнит сейчас выделен. Тут можно таймером 0.03 сек проверять изменился ли Last != New. Если изменился, удаляем старые фреймы на LastMainSelectedUnit, добавляем новые на NewMainSelectedUnit (если у него есть конечно). Пока что не ясно локальные ли данные хранятся в Last и New, то можно попробовать по-другому, хранить целое число - handle и GetLocalPlayer
если main selected unit это наш герой, даем ему кнопку меню. Но перед тем как дать, нужно спрятать там системную кнопку.
создать в начале можно основной контейнер, на него создаем внутренний контейнер, и кнопку "отмена". внутренний содержит не 12, а 11 кнопок. Сейчас пока кол-во не превышает 11, можно увеличить больше 11. Но список можно увеличить как тут. Я не буду тот код брать, сделаю свой. Мб потом еще скроллбар и пр. На внутренний вешаем кнопки. Внутренних контейнеров мб несколько, в одном здания в другом растения.
при активации кнопки меню прячем все CommandButton, и показываем основной контейнер.
все работает так как с правилом родитель - потомки. прячем один внутренний контейнер, прячем все 11 кнопок. показываем другой внутренний - показывают другие кнопки. прячем основной контейнер - прячем все.
ловим все отмены. нажатие кнопки отмены, клавишу Esc и пр.
в подсказках можно создать ресурсы - иконки и стоимость. Ну и морфим =))
Ред. MpW
» WarCraft 3 / Как упрощать нагромождение триггеров
re[0]=Область..
re[1]=Область..
» WarCraft 3 / скалируются ли размеры экрана?
Ред. MpW
» WarCraft 3 / скалируются ли размеры экрана?
почему на jass у меня норм координаты и размеры подобраны. Лично на глазок подбирал. Переписал на Lua, и все съехало. Попробовал эту наработку, и все норм
Ред. MpW
» WarCraft 3 / скалируются ли размеры экрана?
Ред. MpW
» WarCraft 3 / Можно ли убрать сверху невидимую полосу?
ORIGIN_FRAME_GAME_UI - он отвечает за все. Так что ничего не дает.
Из всех известных в скриптах фреймах ничего на ум не приходит
» WarCraft 3 / Можно ли убрать сверху невидимую полосу?
Ред. Берги
» WarCraft 3 / Папка => w3x
» WarCraft 3 / Папка => w3x
» WarCraft 3 / Папка => w3x
Ред. MpW
» WarCraft 3 / Отследить удар рукой
» WarCraft 3 / Отследить удар рукой
Ред. MpW
» Мир безумного / Voxel Tycoon - старт строительства большой магистрали
Ред. MpW
» Кузня Волчачки / Исследование патча 1.31
Ред. MpW
» WarCraft 3 / Можно ли активировать прицел или не закрывать его?
Ред. MpW
» WarCraft 3 / Насчёт косвенной работы книги заклинаний
Ред. MpW
» WarCraft 3 / Инструкция по настройке запуска cheapack в VSCode
» WarCraft 3 / Путь к иконкам дерева и пищи
LumberIcon=UI\Feedback\Resources\ResourceLumber.blp
UpkeepIcon=UI\Feedback\Resources\ResourceUpkeep.blp
SupplyIcon=UI\Feedback\Resources\ResourceSupply.blp
Ред. MpW
» WarCraft 3 / при destroy effect проигрывается анимация
» WarCraft 3 / при destroy effect проигрывается анимация
» WarCraft 3 / Прозрачный интерфейс.
Ред. MpW
» WarCraft 3 / Прозрачный интерфейс.
Ред. MpW
» WarCraft 3 / Прозрачный интерфейс.
Ред. MpW
» WarCraft 3 / Прозрачный интерфейс.
оригинал
Ред. MpW
» WarCraft 3 / Насчёт косвенной работы книги заклинаний
» WarCraft 3 / Действие с задержкой