Smeto, обычный таймер — это обычный таймер, а это какая-то кастомная функция с TriggerSleepAction. Не знаю, что там утекает или не утекает, но почему нельзя голый нативный таймер использовать?
function PolledWait2 takes real time returns nothing
local timer t
local real R
if time>0. then
set t = CreateTimer()
call TimerStart(t,time,false,null)
loop
set R=TimerGetRemaining(t)
exitwhen R<=0.
call TriggerSleepAction(R)
endloop
call DestroyTimer(t)
set t=null
endif
endfunction
Теперь в цветовых кодах спецсимвол c стал регистрозависимым. Если использовать |C вместо |c в таких местах как тексты на кнопках, то содержимое внутри цветового кода будет заменено на текущий хоткей.
Наверное именно этот фрейм дёргается нативкой BlzEnableCursor. В целом, до спрайта курсора из кода не добраться, но альфу, скейл и видимость он наследует от него.
А насчёт смены координат, у спрайтов есть такое поведение, что модель начинает уезжать в сторону от фактического положения, если размер фрейма (именно Width и Height) становится слишком большим. Возможно, что это та же история.
Smeto, у тултипов есть весомый плюс: они позволяют ловить курсор в мёртвой зоне в самом верху экрана (близзовская нативка там возвращает (0.0, 0.0) вместо мировых координат. В остальном там куча проблем, ибо в игре сходу нужно создать тысячи объектов, их нужно пересоздавать при загрузке сохранений и ещё придётся отслеживать разрешение игрока, чтобы заполнить весь экран клетками.
И координаты она возвращает грубые, так как используется сетка, а не реальные координаты, там прям мастхев lerp добавлять, чтобы не двигать фрейм лесенкой.
В спейс шуторе решал эту задачу более простым способом: я сразу фиксировал намертво игровую камеру перпендикулярно земле, и благодаря этому знал какие мировые координаты находятся на краях 0.8 x 0.6 экрана, но это специфический случай, применимый только к карте фул на фреймах.
Костылями. Воспользоваться любой существующей наработкой на определение экранных координат курсора (например, вот одна на математике камеры, вот вторая на тултипах), и двигать фрейм в координаты курсора по событию или по таймеру.
Но так чётко и синхронизировано как у близзов с инвентарём не получится, там вообще не фрейм, а текстура в модели курсора на иконку предмета меняется.
Smeto, да вроде не особо то и меньше. Получение основного фрейма для группы я скопипастил с хайва, а дальше там вообще просто пример как проверить подсвечена ли иконка жёлтой рамкой, и вывод, который тут не нужен, так как здесь достаточно вернуть первое значение.
P.S. Наработка – огонь. Руками воспроизводим внутреннюю UIшную сортировку, чтобы порядок юнитов из группы совпадал с порядком иконок в интерфейсе.
local unitFrame = BlzGetFrameByName("SimpleInfoPanelUnitDetail", 0)
local bottomCenterUI = BlzFrameGetParent(unitFrame)
local groupFrame = BlzFrameGetChild(bottomCenterUI, 5)
--[[BlzFrameClearAllPoints(groupFrame)
BlzFrameSetAbsPoint(groupFrame, FRAMEPOINT_CENTER, 0.4, 0.3)
BlzFrameSetSize(groupFrame, 0.188125, 0.1140625)
--Scale it up
BlzFrameSetScale(groupFrame, 1.5)]]
local buttonContainerFrame = BlzFrameGetChild(groupFrame, 0)
local buttonFrame
TimerStart(CreateTimer(), .25, true, function()
local activeButtonTick = {}
for i = 0, 11 do
buttonFrame = BlzFrameGetChild(buttonContainerFrame, i)
table.insert(activeButtonTick, BlzFrameIsVisible(BlzFrameGetChild(buttonFrame, 0)) and i or nil)
end
if #activeButtonTick > 0 then
print("IDs: ", table.concat(activeButtonTick, ", "))
end
end)
Обновился формат моделей, теперь это MDX1200. Из изменений обнаружили только то, что источник света потолстел на 4 байта: появилось новое float свойство ShadowIntensity. Вроде бы в основном у близзов в моделях стоит 0.4.
Актуальный билд ретеры здесь.
Конкретно задачу с октарином я бы попробовал решить через филд абилки. При получении юнитом предмета пробегать по его способностям, и менять им кулдаун. Допускаю, что это может не работать, особенно после последних обновлений игры, но доступ к этому филду формально есть.
Obelick, по хорошему да, лучше спрятать стандартный инвентарь под капот, чтобы было куда предметы подбирать, и сделать поверх свою обработку предметов, и нарисовать свой инвентарь с нуля. Но этот пердолинг не стоит потраченного на него времени, в комментах ниже уже объяснили, что "6 слотов хватит всем".
ScorpioT1000, блин, чувствую дух того самого классического мема хгм "Выложить ресурсы", который всплывает когда умирает очередной долгостроящийся проект. Коммьюнити всегда просит выложить ресурсы, но никто этого никогда не делает.
» WarCraft 3 / [2.0.3 vJass] UI - Move Able Frame - Перетаскиваем фрейм мышкой
» WarCraft 3 / [2.0.3 vJass] UI - Move Able Frame - Перетаскиваем фрейм мышкой
» WarCraft 3 / [2.0.0] Как кодом заставить нажать на скил с целью, но без применения
Ред. Makeba
» WarCraft 3 / [2.0.0] Как кодом заставить нажать на скил с целью, но без применения
» WarCraft 3 / Кинематограф/Спецэффекты
» WarCraft 3 / Вылетает редактор карт
» WarCraft 3 / Reforged PTR 2.0.3: Оптимизация, новые настройки и изменения баланса (+ исправления нативных функций)
» WarCraft 3 / Список дефолтных фреймов-1. Потомки gameUI
» WarCraft 3 / Список дефолтных фреймов-1. Потомки gameUI
Ред. Makeba
» WarCraft 3 / Список дефолтных фреймов-1. Потомки gameUI
» WarCraft 3 / Мне нужно помощь в написание скрипта если хотите помочь пишите
Ред. Makeba
» WarCraft 3 / [2.0.3] Как перетаскивать фрейм мышкой?
» WarCraft 3 / [2.0.3] Как перетаскивать фрейм мышкой?
Ред. Makeba
» WarCraft 3 / GetMainSelectedUnit
» WarCraft 3 / GetMainSelectedUnit
Ред. Makeba
» WarCraft 3 / GetMainSelectedUnit
» Warcraft 3 Classic HD / Warcraft 3 Classic HD
» WarCraft 3 / Reforged PTR 2.0.3: Оптимизация, новые настройки и изменения баланса (+ исправления нативных функций)
» WarCraft 3 / Reforged PTR 2.0.3: Оптимизация, новые настройки и изменения баланса (+ исправления нативных функций)
Актуальный билд ретеры здесь.
» Unryze Jass API / Unryze Jass API
» WarCraft 3 / Система гибкой перезарядки способностей [Lua]
» WarCraft 3 / Античит для синглплеера
Прокрутить к ресурсу
» WarCraft 3 / [2.0.2 vjass] Инвентарь на фреймах 9 слотов (+3 слота)
» Помойка Макебы / кладбище спейс шутера в варкрафте