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

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

Ответ
 
inhuman89

offline
Опыт: 3,019
Активность:
в чем проблема
» КОД
function Trig_Blink_Strike_Conditions takes nothing returns boolean
    if ( not ( UnitHasBuffBJ(GetTriggerUnit(), 'B000') == true ) ) then
        return false
    endif
    if ( not ( udg_SS_Blink_Strike_cooldawn == false ) ) then
        return false
    endif
    return true
endfunction

function Trig_Blink_Strike_Actions takes nothing returns nothing
    local effect e
    local unit uc
    local unit ut
    local location pc
    local location pt
    local integer i = 0
    if ( GetRandomInt(1, 100) <= 20 ) then
        set uc = GetTriggerUnit()
        set ut = GetAttacker()
        set pc = GetUnitLoc(uc)
        set pt = GetUnitLoc(ut)
        set i = ( ( GetHeroAgi(uc, true) * GetUnitAbilityLevelSwapped('A001', uc) ) + GetHeroAgi(uc, true) )
        set udg_SS_Blink_Strike_cooldawn = true
        call AddSpecialEffectTarget( "Abilities\\Weapons\\IllidanMissile\\IllidanMissile.mdl", uc, "head" )
        set e = GetLastCreatedEffectBJ()
        call PolledWait( 0.01 )
        call AddSpecialEffectLoc( "Abilities\\Spells\\NightElf\\Blink\\BlinkTarget.mdl", pc )
        call DestroyEffect( GetLastCreatedEffectBJ() )
        call AddSpecialEffectTarget( "Abilities\\Spells\\Other\\Stampede\\StampedeMissileDeath.mdl", ut, "chest" )
        call DestroyEffect( GetLastCreatedEffectBJ() )
        call PauseUnit( uc, true )
        call SetUnitX(uc, GetLocationX(pt))
        call SetUnitY(uc, GetLocationY(pt))
        call UnitDamageTargetBJ( uc, ut, I2R( i), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
        call PolledWait( 0.01 )
        call PauseUnit( uc, false )
        call SetUnitX(uc, GetLocationX(pc))
        call SetUnitY(uc, GetLocationY(pc))
    else
    endif
    call RemoveLocation(pc)
    set pc = null
    call RemoveLocation(pt)
    set pt = null
    call DestroyEffect( e )
    set e = null
    call PolledWait(0.5)
    set udg_SS_Blink_Strike_cooldawn = false
endfunction

//===========================================================================
function InitTrig_Blink_Strike takes nothing returns nothing
    set gg_trg_Blink_Strike = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Blink_Strike, EVENT_PLAYER_UNIT_ATTACKED )
    call TriggerAddCondition( gg_trg_Blink_Strike, Condition( function Trig_Blink_Strike_Conditions ) )
    call TriggerAddAction( gg_trg_Blink_Strike, function Trig_Blink_Strike_Actions )
endfunction
вобщем не работает спелл.
я его из триггера перевел в жасс, заменил бж на нативки, избавился от ненужных функций, а работать не хочет
при сохранении ошибок не выдает, но при нажатии на Sytax Check выдает следующее:
ругается на необьявленную переменную:
set gg_trg_Blink_Strike = CreateTrigger(  )
и на использование в коде глобалки, созданной в редакторе переменных.
Подскажите в чем дело?
Старый 23.08.2010, 05:10
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
local integer i = 0
заменяем на
local real i = 0
в нанесении дмж, снимаем конверт
call UnitDamageTargetBJ( uc, ut, I2R( i), ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
на
call UnitDamageTargetBJ( uc, ut, i, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
function Trig_Blink_Strike_Actions takes nothing returns nothing
    local effect e
    local unit uc = GetTriggerUnit()
    local unit ut = GetAttacker()
    local location pc = GetUnitLoc(uc)
    local location pt = GetUnitLoc(ut)
    local real i = ( ( GetHeroAgi(uc, true) * GetUnitAbilityLevelSwapped('A001', uc) ) + GetHeroAgi(uc, true) )
    if ( GetRandomInt(1, 100) <= 20 ) then
        set udg_SS_Blink_Strike_cooldawn = true
        call AddSpecialEffectTarget( "Abilities\\Weapons\\IllidanMissile\\IllidanMissile.mdl", uc, "head" )
        set e = GetLastCreatedEffectBJ()
        call PolledWait( 0.01 ) //плохо =\
        call AddSpecialEffectLoc( "Abilities\\Spells\\NightElf\\Blink\\BlinkTarget.mdl", pc )
        call DestroyEffect( GetLastCreatedEffectBJ() )
        call AddSpecialEffectTarget( "Abilities\\Spells\\Other\\Stampede\\StampedeMissileDeath.mdl", ut, "chest" )
        call DestroyEffect( GetLastCreatedEffectBJ() )
        call PauseUnit( uc, true )
        call SetUnitX(uc, GetLocationX(pt))
        call SetUnitY(uc, GetLocationY(pt))
        call UnitDamageTargetBJ( uc, ut, i, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
        call PolledWait( 0.01 ) //плохо =\
        call PauseUnit( uc, false )
        call SetUnitX(uc, GetLocationX(pc))
        call SetUnitY(uc, GetLocationY(pc))
    endif
    call RemoveLocation(pc)
    call RemoveLocation(pt)
    call DestroyEffect( e )
    set pt = null
    set pc = null
    set e = null
    call PolledWait(0.5) //плохо
    set udg_SS_Blink_Strike_cooldawn = false
endfunction
ругается на необьявленную переменную:
не ругается, а сообщает о использующихся переменных, которые не объявлены в коде, а объявляющиеся в другом месте. А это разные вещи.
Старый 23.08.2010, 10:33
silumin

offline
Опыт: 11,153
Активность:
AlexKARASb, ты не прав.
Код:
set i = ( ( GetHeroAgi(uc, true) * GetUnitAbilityLevelSwapped('A001', uc) ) + GetHeroAgi(uc, true) )

native          GetHeroAgi          takes unit whichHero, boolean includeBonuses returns integer

native          GetUnitAbilityLevel takes unit whichUnit, integer abilcode returns integer


silumin добавил:
Ругается уж точно не из-за этого.
Старый 23.08.2010, 10:53
Doc

offline
Опыт: 63,163
Активность:
Sytax Check
вы лолы, если сохраняется - ошибок нет -_-. Никогда не юзайте эту кнопку, она расово неверна.
Старый 23.08.2010, 11:31
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
silumin, это было мое предположение из-за знака умножения. Не знаю почему, но с утра мне показалось что получится дробное xD
Автору: попробуй убрать PolledWait'ы, комментировать строки, пока не найдешь ошибку.
Старый 23.08.2010, 12:56
inhuman89

offline
Опыт: 3,019
Активность:
Все разобрался в чем дело, всем спасибо
Как мне создать функцию, которая скажем принимала сл параметры:
function TextTagAtLoc takes string tagOpen, string tagBase, string tagClose, location tagLoc, real tagZ, real tagSize return nothing
    call CreateTextTagLocBJ( ( ( tagOpen + tagBase ) + tagClose ), tagLoc, tagZ, tagtSize, 100, 100, 100, 0 )
    call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 120.00, 90.00 )
    call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
    call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 2.0 )
    call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 1.0 )
    call RemoveLocation(tagLoc)
    set tagLoc = null
endfunction
и чтобы ее потом вызывать так:
call TextTagAtLoc("open", "base", "close", p, 80.00, 12.00)
я пробовал переделать так свой триггер, но при сохранении он пишет что функция не должна принимать параметров.
Старый 23.08.2010, 15:19
Ответ

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

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

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

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



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