XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
Набивающийся плавающий текст
Вот нужно чтобы если юнит получил урон несколько разв течении 0.20-0.40 то этот урон (показанный плавающим текстом) обьединялся а не накладывался т.е показывался общий урон
подскажите как реализовать?
Старый 28.04.2010, 12:20
Doc

offline
Опыт: 63,163
Активность:
Привязывай текст к юниту и запускай таймер. Проверяй истекшее время таймера при новом получении урона и не создавай текст а изменяй привязанный.
Старый 28.04.2010, 12:28
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
я что то пытался сделать но не понял как проверить что таймер не истёк
вот триггер мож поравишь
function Text takes nothing returns nothing
    local timer t=GetExpiredTimer()
    local unit u=LoadUnitHandle(udg_Hash,GetHandleId(t),0)
    call FlushChildHashtable(udg_Hash,GetHandleId(t))
    call DestroyTimer(t)
    set t=null
    set u=null
endfunction

function Trig_Text_Actions takes nothing returns nothing
    local real r=GetEventDamage()
    local unit u=GetTriggerUnit()
    local timer t=CreateTimer()
    call SaveUnitHandle(udg_Hash,GetHandleId(t),0,u)
    call TimerStart(t,0.40,false,function Text)    
    call CreateTextTagUnitBJ( ( "|cffFF0000" + ( I2S(R2I(r)) + " Dmg" ) ), GetTriggerUnit(), 0, 8.75, 100, 100, 100, 0 )
    call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 200.00, GetRandomReal(1.00, 360.00) )
    call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
    call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 0.35 )
    call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 0.45 )
    set t=null
    set u=null
endfunction
?
16GB добавил:
за гавно код просьба не пинать
Старый 28.04.2010, 12:48
Doc

offline
Опыт: 63,163
Активность:
Ок пинать не буду. Так, проведи поиск в списке функций по слову elapsed просто не помню точное название функции. И нужно еще сохранить на юнита сам плавающий текст.
Старый 28.04.2010, 12:56
16GB
GhostOne User
offline
Опыт: 60,317
Активность:
типо elapsed time меньше чем 0.40?

Отредактировано 16GB, 28.04.2010 в 13:27.
Старый 28.04.2010, 13:18
Doc

offline
Опыт: 63,163
Активность:
Не знаю, попробуй, поиграйся со значениями.
Старый 28.04.2010, 14:56
_Red

offline
Опыт: 4,095
Активность:
Не оптимизированно, а может кое где можно было и по проще сделать но я не заморачивался над этим, но работает(могу даже карту кинуть)
» Мега тру код
function Text takes nothing returns nothing
    local timer t=GetExpiredTimer()
    local unit u=LoadUnitHandle(udg_Hash,GetHandleId(t),0)
    call FlushChildHashtable(udg_Hash,GetHandleId(t))
    call FlushChildHashtable(udg_Hash,GetHandleId(u))
    call DestroyTimer(t)
    set t=null
    set u=null
endfunction

function Trig_Text_Actions takes nothing returns nothing
    local real r=GetEventDamage()
    local unit u=GetTriggerUnit()
    local texttag tt = LoadTextTagHandle(udg_Hash,GetHandleId(u),2)
    local real rr = LoadReal(udg_Hash,GetHandleId(u),3)
    local timer t = LoadTimerHandle(udg_Hash,GetHandleId(u),1)
    
    if t==null then
    set t = CreateTimer()
    call TimerStart(t,0.40,false,function Text)
    call SaveTimerHandle(udg_Hash,GetHandleId(u),1,t)
    call SaveUnitHandle(udg_Hash,GetHandleId(t),0,u)
    call SaveReal(udg_Hash,GetHandleId(u),3,r)
    call CreateTextTagUnitBJ( ( "|cffFF0000" + ( I2S(R2I(r)) + " Dmg" ) ), GetTriggerUnit(), 0, 8.75, 100, 100, 100, 0 )
    BJDebugMsg(I2S(R2I(r)))
    call SaveTextTagHandle(udg_Hash,GetHandleId(u),2,GetLastCreatedTextTag())
    call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 200.00, GetRandomReal(1.00, 360.00) )
    call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
    call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 0.35 )
    call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 0.45 )
    elseif TimerGetRemaining(t)<=0.40 then
    call SaveReal(udg_Hash,GetHandleId(u),3,r+rr)
    call SetTextTagTextBJ(tt, "|cffFF0000" + I2S(R2I(r+rr)) + " Dmg"  , 8.75)
        BJDebugMsg(I2S(R2I(r+rr)))

    endif
    set t=null
    set u=null
    set tt=null
endfunction

function InitTrig_Untitled_Trigger_001 takes nothing returns nothing
    local trigger trg_Untitled_Trigger_001 = CreateTrigger(  )
    call TriggerRegisterUnitEvent( trg_Untitled_Trigger_001, gg_unit_Hpal_0000, EVENT_UNIT_DAMAGED )
    call TriggerAddAction( trg_Untitled_Trigger_001, function Trig_Text_Actions )
endfunction
Старый 28.04.2010, 16:19
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы можете скачивать файлы

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 02:47.