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

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

Закрытая тема
 
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
Спелл частично не работает.
Суть заклинания такова: Кастуеш первый раз заклинание и цели наносится урон + дается дебафф 1 уровня на 10 секунд, если за ето время наложить заклинание повторно на ту же цель то урон будет больше на 15% + дается дебафф 2 уроня на 10 секунд и так далее... Но у меня почемуто дебафф поднимается только до 2 уровня, когда я кастую третий раз все равно дебафф дается 2 уровня, Вопрос почему?
function Trig_Penetration_of_Darkness_Actions takes nothing returns nothing
local unit u = GetTriggerUnit()
local unit t = GetSpellTargetUnit()
local unit dummy
local real min = 60+195*GetUnitAbilityLevel(u,'A03I')
local real max = 100+205*GetUnitAbilityLevel(u,'A03I')
local integer stack = GetUnitAbilityLevel(t,'B006')
local real damage = GetRandomReal(min, max)*(1+(stack*0.15))
local texttag tt = CreateTextTag()
  call UnitDamageTarget(u,t,damage, true, false, ATTACK_TYPE_HERO, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
  set dummy = CreateUnit(GetOwningPlayer(u),'h004', GetUnitX(t),GetUnitY(t),0)
  call UnitApplyTimedLife(dummy,'BTLF',2)
  call UnitAddAbility(dummy,'A03L') //Дамми спелл с 6 уровнями.
if stack < 6 then //Повышение тлько до 2 уровня, может быть дамми спел и повышается в уровне но дебафф от него все равно второго лвл.
  call SetUnitAbilityLevel(dummy,'A03L',stack+1)
elseif stack >= 6 then
  call SetUnitAbilityLevel(dummy,'A03L',6)
endif
  call UnitRemoveAbility(t, 'B006')
  call PolledWait(.1)
  call IssueTargetOrder(dummy,"cripple",t)
//----------TEXTTAG-----------------
     call SetTextTagText(tt,I2S(R2I(damage)), 0.023) //size * 0.023/10 (здесь 10)
     call SetTextTagPos(tt, GetUnitX(u),GetUnitY(u), 0)
     call SetTextTagColor(tt, 165, 75, 200, 255)
     call SetTextTagVelocityBJ( tt, 64, 90 )
     call SetTextTagPermanent( tt, false )
     call SetTextTagFadepoint( tt, 1 )
     call SetTextTagLifespan( tt, 4 ) 
//----------TEXTTAG-----------------   
set u = null
set t = null
set dummy = null  
endfunction

Отредактировано Ninbous, 15.02.2010 в 23:20.
Старый 15.02.2010, 23:08
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
Ninbous, а ты выведи через дебагмсг какой уровень у способности. Что-то типа:
...
if stack < 6 thenдебафф от него все равно второго лвл.
  call SetUnitAbilityLevel(dummy,'A03L',stack+1)
elseif stack >= 6 then
  call SetUnitAbilityLevel(dummy,'A03L',6)
endif
call DisplayTimedTextToPlayer(Player(0),0.,0.,10,I2S(GetUnitAbilityLevel(dummy,'A03L'))
...
Старый 16.02.2010, 00:07
Ninbous
Jass progress >>>>>35/100
offline
Опыт: 5,674
Активность:
Hellfim, да проверил, абилка 2 лвл, тока я непойму почему она дальше не повышается в уровне.
Дело в коде, тока непонятно где косяк.
Можно конечно сделать 6 абилок и давать их поочереди, но ето как то по нубски
Ninbous добавил:
Може быть эта функция с бафами невоспринимает число болше 2? =)
local integer stack = GetUnitAbilityLevel(t,'B006')
Ninbous добавил:
Действительно функция возвращяет либо 0 либо 1 с бафами.
Ninbous добавил:
Разобался, тему клоуз
Старый 16.02.2010, 02:26
Закрытая тема

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

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

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

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



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