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

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

Ответ
 
Xoniks

offline
Опыт: 1,858
Активность:
не получается сделать спелл
» code
((код Jass
function Trig_Lifebloom_Timer takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer hid = GetHandleId(t)
local integer count = LoadInteger(Hash, hid, 0)
local integer i = 0
local unit u = GetSpellAbilityUnit( )
local unit u1 = GetSpellTargetUnit( )
if count > 4 then
call PauseTimer(t)
call DestroyTimer(t)
call FlushChildHashtable(Hash, hid)
else
call SetUnitState(u1, UNIT_STATE_LIFE,(GetUnitState(u1,UNIT_STATE_LIFE) + 30 * GetUnitAbilityLevel(u, 'A002' ) ) )
call SaveInteger(Hash, hid, 0, count + 1)
endif
set u = null
set t = null
endfunction
function Trig_Lifebloom_Cond takes nothing returns boolean
local timer t = CreateTimer( )

if GetSpellAbilityId( ) == 'A002' then
call TimerStart(t, 3., true, function Trig_Lifebloom_Timer)
endif
return false

endfunction
===========================================================================
function InitTrig_Lifebloom takes nothing returns nothing
set gg_trg_Lifebloom = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Lifebloom, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Lifebloom, function Trig_Lifebloom_Cond )
endfunction
))
вот не могу сделать чтобы каждые 3 сек 5 раз "хиляло" цель помогите разобратся, и еще если не сложно добавьте в этот или создайте новый триггер чтобы если на Юните пропал баф исцелить его на 10хИНТ применившего на него этот бафф
Старый 07.03.2012, 10:49
quq_CCCP
Я белый и пушистый!
offline
Опыт: 93,279
Активность:
Xoniks, а где ты записал в хеш таблицу юнита?
Старый 07.03.2012, 10:55
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
» code
function Trig_Lifebloom_Timer takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local integer hid = GetHandleId(t)
    local real hp_restore = LoadInteger(Hash, hid, 1)
    local real time_rem = LoadReal(Hash, hid, 0) - 0.025
    local unit u = LoadUnitHandle(Hash, hid, 0)
    if (GetUnitAbilityLevel(u,'БАФФ')>0) then
        call SetWidgetLife(u,GetWidgetLife(u)+LoadReal(Hash, hid, 2))
        call DestroyTimer(t)
        call FlushChildHashtable(Hash, hid)
    elseif (time_rem > 0.) then
        call SetWidgetLife(u,GetWidgetLife(u)+hp_restore)
        call SaveReal(Hash, hid, 0, time_rem)
    else
        call DestroyTimer(t)
        call FlushChildHashtable(Hash, hid)
    endif
    set u = null
    set t = null
endfunction

function Trig_Lifebloom_Act takes nothing returns nothing
 local timer t = null
 local integer hid = 0
 if GetSpellAbilityId( ) == 'A002' then
  set t = CreateTimer( )
  set hid = GetHandleId(t)
  call SaveUnitHanlde(Hash, hid, 0, GetSpellTargetUnit( ))
  call SaveReal(Hash, hid, 2, 10*GetHeroInt(GetSpellAbilityUnit()))
  call SaveReal(Hash, hid, 1, GetUnitAbilityLevel(u, 'A002' )*0,75)
  call SaveReal(Hash, hid, 0, 15. )
  call TimerStart(t, 0,025 , true, function Trig_Lifebloom_Timer)
  set t = null
 endif
endfunction

//===========================================================================
function InitTrig_Lifebloom takes nothing returns nothing
    set gg_trg_Lifebloom = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Lifebloom, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddAction(gg_trg_Lifebloom, function Trig_Lifebloom_Act)
endfunction
Тут будет каждые 0.025 секунд даваться по 0.75xУровень ед. здоровье (получается тоже, что и у тебя) и 10xИнтеллект, если бафф слетел.

Отредактировано Hellfim, 07.03.2012 в 19:10.
Старый 07.03.2012, 18:58
MpW

offline
Опыт: 49,815
Активность:
Hellfim,
почему ты используешь SetWidgetLife и GetWidgetLife, ведь разницы никакой нет с SetUnitState и GetUnitState? или есть?
Старый 07.03.2012, 19:42
Clamp
Lost in space
offline
Опыт: 71,158
Активность:
Меньше принимаемых аргументов => удобнее
Старый 07.03.2012, 20:09
Xoniks

offline
Опыт: 1,858
Активность:
Hellfim, вообщем спс за код но в нем есть несколько ошибок синтаксиса такие как "," вместо "." и т.д.
ну это не страшно)) и в целом работает не так как хотелось бы, ну это сам попробую исправить
Старый 07.03.2012, 20:34
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Steal_nerves, я думаю, что она даже работает быстрее. Ведь там что-то типа класса виджет, все элементы которого имеют хп, юнит является наследником класса виджет, соответственно мы сразу обращаемся к верхнему классу. Это лишь моё мнение.
Hellfim добавил:
Xoniks, писал тут не проверил на форуме. Ну ты подправь как надо, я суть показал, в целом работает.
Старый 07.03.2012, 21:41
Xoniks

offline
Опыт: 1,858
Активность:
Hellfim, исцеляет на 10хИнт при получении бафа сразу и не после его исчезновения
Старый 08.03.2012, 09:58
Ответ

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

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

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

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



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