Берги не спит, а значит пришло время для очередной бесполезной и багованной наработки
И так встречайте каст бары
Сразу о том что это.
И так встречайте каст бары
Сразу о том что это.
Примеры использования:
За основу взят на 99% ЭТОТ простой бар
Можно вообще хоть оттуда всё перекопировать и сделать по инструкции перенос, а по факту никакого, РО просто импорт и инициализация через TOС в любом месте.
Можно вообще хоть оттуда всё перекопировать и сделать по инструкции перенос, а по факту никакого, РО просто импорт и инициализация через TOС в любом месте.
Причины создания и смысл происходящего:
- Первая причина это ты
- А вторая - все твои коты
- Использование Канала в РО, оно на столько сильно криво реализовано, что просто "ажтрясет"
- Визуализация, мы видим полностью время каста будь оно 0.1 сек, 1 секунду, или же минуту
- Например через эту "систему" можно сделать воскрешение, без всяких таймеров обратного отсчета
- Подобное уже было скорее всего на текстагах или эффектах, но почему-то люди продолжают насилывать стандартную систему из РО
- Можно использовать при телепортации, при захвате точки, да как угодно...
Как этим пользоваться
- Скопировать код, что ниже
- Поднастроить импорт
- Вызывать через
CallingBarCreate(hero,5,"Высасывание жизни",false)
Где: hero - наш юнит, игроку которого будет видеть бар, 5 - число секунд. Остальные 2 параметра не обязательные, можно не указывать. "Высасывание жизни" - слово внутри бара, если не указать, будет написано поддержание. И логический параметр, если указать true, будет задействована проверяющая функция содержащая условия прерывания, стан, молчанка, сдвиг юнита, каст другого заклинания и что угодно. Об этом распишу подробнее
тот самый код, что ниже
do --Инициализация
TimerStart(CreateTimer(), 0.1, false, function()
if BlzLoadTOCFile("SystemGeneric\\Main.toc") then
--print("успех")
else
print("провал загрузки ток кастом бара")
end
end)
end
function CallingBarCreate(u,cd,text,support)
if not text then text="Подготовка" end
local amount=5/cd
local full=0
local bar = BlzCreateSimpleFrame("MyFakeBar", BlzGetOriginFrame(ORIGIN_FRAME_GAME_UI, 0), 0)
BlzFrameSetAbsPoint(bar, FRAMEPOINT_CENTER, 0.4, 0.15)
BlzFrameSetValue(bar, 0)
BlzFrameSetTextSizeLimit(bar,1)
if support then
CallingBarCancelCond(u,bar)
end
if GetLocalPlayer()==GetOwningPlayer(u) then -- хп бары, они точно в норме
BlzFrameSetVisible(bar,true)
end
BlzFrameSetTexture(bar, "Replaceabletextures\\Teamcolor\\Teamcolor0"..(GetConvertedPlayerId(GetOwningPlayer(u))-1)..".blp", 0, true)
BlzFrameSetTexture(BlzGetFrameByName("MyFakeBarBorder",0),"SystemGeneric\\MyBarBorder.blp", 0, true)
BlzFrameSetText(BlzGetFrameByName("MyFakeBarTitle",0), text)--‡ Сердце ™ щит
local lefttext = BlzGetFrameByName("MyFakeBarLeftText",0)
local righttext = BlzGetFrameByName("MyFakeBarRightText",0)
BlzFrameSetText(lefttext, "")
BlzFrameSetText(righttext, "")
TimerStart(CreateTimer(), 0.05, true, function()
full=full+amount
BlzFrameSetValue(bar, full)
--print(full)
if full>=100 then
--print("destroy")
CallingBarDestroy(u,bar)
end
end)
return bar
end
function CallingBarDestroy(hero,bar)
if UnitRemoveAbility(hero,FourCC('Abun')) then
-- print("атака возвращена")
end
DestroyTimer(GetExpiredTimer())
BlzDestroyFrame(bar)
end
function CallingBarCancelCond(hero,bar) --
UnitAddAbility(hero,FourCC('Abun'))
TimerStart(CreateTimer(), TIMER_PERIOD, true, function()
CallingBarIsStatus(hero,bar)
end)
end
function CallingBarIsStatus(hero,bar)
local status=true
if IsUnitPaused(hero) or GetUnitCurrentOrder(hero)~=String2OrderIdBJ("") then -- указываем списо условий который могус сбить каст
if GetUnitCurrentOrder(hero)~=String2OrderIdBJ("doom") then
--print(OrderId2String(GetUnitCurrentOrder(hero)))
--print("Каст сбит")
UnitRemoveAbility(hero,FourCC('Abun'))
CallingBarDestroy(hero,bar)
status=false
end
end
return status
end
Ред. Берги
Кстати по моему ты и делал такой же воскрешающий, в дискорде спрашивал как сделать шкалу (или это не ты был, не важно)