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

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

Закрытая тема
 
CeDiL
Pinkie <3
offline
Опыт: 2,092
Активность:
Помогите сделать MUI
Столкнулся с такой вот проблемой, Создал Спелл который конвертирует Силу Игрока в Ловкость на 10секунд а потом, Ловкость становится нормальной, всё бы ничего но заклинание явно не на 2+ игрока.
Также если обнулять переменную u в конце функции Agility_Remove то при повторном применении пока идёт таймер, спел снимит только 1 значение Ловкости, вообщем куча всякого бреда, если 2 разных унита будут кастовать переменная r поменяет значение итд, поскольку мне необходимы таймеры для этого заклинания мой вопрос звучит так:
Можно ли сделать вообщем такого типа Заклинания в MUI, если да то как и что исправить.
Я также использую TimerUtils Vexorian'a в карте, некоторые говорят что они могут сделать таймеры MUI но я как вы видите не понял как правельно их использовать.
scope AgilityEssence initializer init

globals
 private real r
 private unit u
endglobals

private function Conditions takes nothing returns boolean
 return GetSpellAbilityId() == 'A003'
endfunction

private function Agility_Remove takes nothing returns nothing
 call SetHeroAgi(u, (GetHeroAgi(u, false)-R2I(r)), false)
 call ReleaseTimer(GetExpiredTimer())
 //set u = null
endfunction

private function Actions takes nothing returns nothing
    local integer s = GetHeroStr(GetTriggerUnit(), true)
    local integer a = GetHeroAgi(GetTriggerUnit(), false)
    local timer t
    set u = GetTriggerUnit()
    set r = s*(0.25*GetUnitAbilityLevel(u, 'A003'))
    set t = NewTimer()
    call SetHeroAgi(u, a+R2I(r), false)
    call TimerStart(t, 10.00, false, function Agility_Remove)
endfunction

//===========================================================================
private function init takes nothing returns nothing
    local trigger tr = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( tr, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( tr, Condition( function Conditions) )
    call TriggerAddAction( tr, function Actions )
    set tr = null
endfunction

endscope

Старый 09.07.2010, 18:56
Rewenger
The culprit will not die
offline
Опыт: 35,273
Активность:
private unit u
Ну ещё бы.
Использовать хэш/массивы?
Из этой TimerUtils у тебя тут, похоже, только "ReleaseTimer"; но опять же неизвестно, что она делает.
Старый 09.07.2010, 19:31
CeDiL
Pinkie <3
offline
Опыт: 2,092
Активность:
Rewenger, у меня также set t = NewTimer()
а ReleaseTimer это аналог DestroyTimer() Только в Системе ТаймерУтилс, попробую сейчас массивы использовать, а private unit u На что менять? обычную глобальную перменную?
Старый 09.07.2010, 19:39
ScorpioT1000
Работаем
offline
Опыт: отключен
Старый 09.07.2010, 20:39
CeDiL
Pinkie <3
offline
Опыт: 2,092
Активность:
ScorpioT1002, Спасибо, это именно то что мне было нужно, теперь всё славно работает
тему можно закрывать
Старый 09.07.2010, 22:18
Закрытая тема

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

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

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

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



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