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

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

Закрытая тема
 
MegaBlax

offline
Опыт: 2,352
Активность:
Kraken Shell
Кто может проверить работает ли способность правилшьно? Кто сможет оптимизировать?
Kraken_Shell
» Kraken Shell
function StartTimerTest takes timer t returns nothing
    if(TimerGetRemaining(t)<=0)then
        call StartTimerBJ(t,false,6.)
        call DisplayTextToForce( GetPlayersAll(), "Таймер равен 0 дамаг получен таймер запущен заново!" )
    endif
endfunction

globals
real dmg=0
endglobals

Сам триггер:
function Trig_Kraken_Shell_Test_Conditions takes nothing returns boolean
    return GetLearnedSkill()=='A00O' and IsUnitIllusion(GetTriggerUnit())==false
endfunction

function Kraken_Shell_Test_Main takes nothing returns nothing
    local unit lfo=GetTriggerUnit()
    local real lf7=GetEventDamage()
    local timer t=GetLastCreatedTimerBJ()
    call StartTimerTest(t)
    if(TimerGetRemaining(t)<=0)then
        set dmg=0
        call DisplayTextToForce(GetPlayersAll(),"Таймер равен 0 дамаг сброшен")
    else
        if(lf7>0)then
            if(dmg>600)then
                call DisplayTextToForce(GetPlayersAll(),"Дамаг равен 600 buff off дамаг сброшен")
                set dmg=0
                call UnitRemoveBuffsBJ(bj_REMOVEBUFFS_NEGATIVE,lfo)
                call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Naga\\NagaDeath\\NagaDeath.mdl"​;,lfo,"origin"))
            else
                set dmg=dmg+lf7
                call DisplayTextToForce(GetPlayersAll(),"Дамаг еще не равен 600 и 6 секунд еще не прошло!")
            endif
        endif
    endif
endfunction

function Trig_Kraken_Shell_Test_Actions takes nothing returns nothing
    local trigger ltt
    if GetUnitAbilityLevel(GetTriggerUnit(),'A00O')==1 then
        set ltt=CreateTrigger()
        call TriggerRegisterUnitEvent(ltt,GetTriggerUnit(),EVENT_UNIT_DAMAGED)
        call TriggerAddAction(ltt,function Kraken_Shell_Test_Main)
    endif
endfunction

function InitTrig_Kraken_Shell_Test takes nothing returns nothing
    local trigger Kraken_Shell=CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(Kraken_Shell,EVENT_PLAYER_HERO_SKILL)
    call TriggerAddCondition(Kraken_Shell, Condition(function Trig_Kraken_Shell_Test_Conditions))
    call TriggerAddAction(Kraken_Shell,function Trig_Kraken_Shell_Test_Actions)
endfunction

Отредактировано MegaBlax, 07.08.2012 в 09:25.
Старый 07.08.2012, 08:24
Hate
конь вакуумный
offline
Опыт: 43,033
Активность:
переменные не обнуляются, таймер не созадется. Читайте статьи по оптимизации кода и используйте теги форматирования
Старый 07.08.2012, 08:58
MegaBlax

offline
Опыт: 2,352
Активность:
Hate, Ладно, ты не мог бы показать где конкретно я сделал ошибки? Просто я в Jass вообще практически не шарю.
Насчет обнуления переменых я понял.
p.s. Можно сказать это моя первая серезная работа. До этого только переводил легкие GUI в Jass
» вроде
function Trig_Gush_Conditions takes nothing returns boolean
	return GetSpellAbilityId() == 'A006'
endfunction

function Trig_Gush_Actions takes nothing returns nothing
	local unit ltt = GetSpellTargetUnit()
	local real lUG = (60.+(50.*I2R(GetUnitAbilityLevelSwapped('A006',GetTriggerUnit()))))
	local effect lkW = AddSpecialEffectTargetUnitBJ("chest",ltt,"Objects\\Spawnmodels\\Naga\\NagaDeath\\Naga​Death.mdl")
	call UnitDamageTargetBJ(GetTriggerUnit(),ltt,lUG,ATTACK_TYPE_NORMAL,DAMAGE_TYPE_COLD)
	call PolledWait(.1)
	call DestroyEffect(lkW)
endfunction

function InitTrig_Gush takes nothing returns nothing
    local trigger Gush = CreateTrigger()
	call TriggerRegisterAnyUnitEventBJ(Gush,EVENT_PLAYER_UNIT_SPELL_EFFECT)
	call TriggerAddCondition(Gush,Condition(function Trig_Gush_Conditions))
	call TriggerAddAction(Gush,function Trig_Gush_Actions)
endfunction

Отредактировано MegaBlax, 07.08.2012 в 09:25.
Старый 07.08.2012, 09:19
JassMan
свободен
offline
Опыт: 4,193
Активность:
Сделай глобальную переменную таймера
Код лучше обрамлять в двойные кавычки, чтобы результат был таков:
globals
real dmg=0.
timer t
endglobals

function Trig_Kraken_Shell_Test_Conditions takes nothing returns boolean
return GetLearnedSkill()=='A00O' and IsUnitIllusion(GetTriggerUnit())==false
endfunction

function Kraken_Shell_Test_Main takes nothing returns nothing
local unit lfo=GetTriggerUnit()
local real lf7=GetEventDamage()
set dmg=dmg+lf7
if(dmg>=600.)then
    set dmg=0.
    call TimerStart(t,6.,false,null)
    call UnitRemoveBuffs(lfo,false,true)
    call DestroyEffect(AddSpecialEffectTarget("Objects\\Spawnmodels\\Naga\\NagaDeath\\NagaDeath.mdl"​;&#8203;,lfo,"origin"))
    call BJDebuMsg("Дамаг достиг 600, бафы сброшены, дамаг = 0.")
endif
if(TimerGetRemaining(t)==0.)then
    set dmg=lf7
    call TimerStart(t,6.,false,null)
    call BJDebuMsg("Таймер истёк, дамаг набирается заново")
endif
set lfo=null
endfunction

function Trig_Kraken_Shell_Test_Actions takes nothing returns nothing
local trigger ltt
if GetUnitAbilityLevel(GetTriggerUnit(),'A00O')==1 then
    set ltt=CreateTrigger()
    call TriggerRegisterUnitEvent(ltt,GetTriggerUnit(),EVENT_UNIT_DAMAGED)
    call TriggerAddAction(ltt,function Kraken_Shell_Test_Main)
endif
set ltt=null
endfunction

function InitTrig_Kraken_Shell_Test takes nothing returns nothing
local trigger Kraken_Shell=CreateTrigger()
set t=CreateTimer()
call TriggerRegisterAnyUnitEventBJ(Kraken_Shell,EVENT_PLAYER_HERO_SKILL)
call TriggerAddCondition(Kraken_Shell, Condition(function Trig_Kraken_Shell_Test_Conditions))
call TriggerAddAction(Kraken_Shell,function Trig_Kraken_Shell_Test_Actions)
set Kraken_Shell=null
endfunction
Слишком много текста было, вот алгоритм по-проще.
Да кстати надо еще добавить строку где возвращается хп 600
Старый 07.08.2012, 09:34
MegaBlax

offline
Опыт: 2,352
Активность:
JassMan, спасибо!
Старый 07.08.2012, 14:49
Закрытая тема

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

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

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

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



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