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

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

Закрытая тема
 
FKoFF
Venomancer 89lvl. Europe
offline
Опыт: 5,975
Активность:
Trigger ругается на local unit :(
триггер сделан через custom scripts
function Trig_Spell_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A000' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Spell_Func007Func001C takes nothing returns boolean
    if ( not ( UnitHasItemOfTypeBJ(GetTriggerUnit(), udg_DB_Item[udg_ED]) == true ) ) then
        return false
    endif
    if ( not ( R2I(LoadRealBJ(2, udg_ED, GetLastCreatedHashtableBJ())) != 0 ) ) then
        return false
    endif
    return true
endfunction

function Trig_Spell_Func008Func001C takes nothing returns boolean
    if ( not ( UnitHasItemOfTypeBJ(GetTriggerUnit(), udg_DB_Item[udg_ED]) == true ) ) then
        return false
    endif
    if ( not ( LoadRealBJ(( 30 + udg_Cur_Cast_Spell_Ele[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] ), udg_ED, udg_ITEM_STATS) != 0.00 ) ) then
        return false
    endif
    return true
endfunction

function Trig_Spell_Func009Func001C takes nothing returns boolean
    if ( not ( UnitHasBuffBJ(GetTriggerUnit(), udg_ED_BUFF[udg_ED]) == true ) ) then
        return false
    endif
    return true
endfunction

function Trig_Spell_Func011Func001C takes nothing returns boolean
    if ( not ( UnitHasItemOfTypeBJ(GetTriggerUnit(), udg_DB_Item[udg_ED]) == true ) ) then
        return false
    endif
    if ( not ( LoadRealBJ(( 20 + udg_Cur_Cast_Spell_Ele[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] ), udg_ED, udg_ITEM_STATS) >= 10 ) ) then
        return false
    endif
    return true
endfunction

function Trig_Spell_Func013001 takes nothing returns boolean
    return ( udg_ICS_CASTED[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] == true )
endfunction

function Trig_Spell_Func019001003 takes nothing returns boolean
    return ( IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE) != true )
endfunction

function Trig_Spell_Func019A takes nothing returns nothing
    set udg_Enum = GetEnumUnit()
    set victim = udg_Enum
    call MakeEleDamage(u, victim, dmg, ele)
    set udg_Enum = null
    set victim = null
endfunction

function Trig_Spell_Actions takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local real dmg = 0
    local integer ele = 1
    local unit victim
    set udg_TT_point = GetSpellTargetLoc()
    set udg_MAGIC_DAMAGE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = ( 15.00 + ( 10.00 * I2R(GetUnitAbilityLevelSwapped(GetSpellAbilityId(), GetTriggerUnit())) ) )
    set udg_ED = 1
    loop
        exitwhen udg_ED > udg_DB_ITEMCOUNT
        if ( Trig_Spell_Func007Func001C() ) then
            set udg_MAGIC_DAMAGE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = ( ( udg_MAGIC_DAMAGE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] / 100.00 ) * ( 100.00 + LoadRealBJ(2, udg_ED, udg_ITEM_STATS) ) )
        else
        endif
        set udg_ED = udg_ED + 1
    endloop
    set udg_ED = 1
    loop
        exitwhen udg_ED > udg_DB_ITEMCOUNT
        if ( Trig_Spell_Func008Func001C() ) then
            set udg_MAGIC_DAMAGE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = ( ( udg_MAGIC_DAMAGE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] / 100.00 ) * ( 100.00 + LoadRealBJ(( 30 + udg_Cur_Cast_Spell_Ele[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] ), udg_ED, udg_ITEM_STATS) ) )
        else
        endif
        set udg_ED = udg_ED + 1
    endloop
    set udg_ED = 1
    loop
        exitwhen udg_ED > udg_EDB
        if ( Trig_Spell_Func009Func001C() ) then
            set udg_MAGIC_DAMAGE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = ( ( udg_MAGIC_DAMAGE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] / 100.00 ) * ( 100.00 + udg_ED_BUFF_COUNT[udg_ED] ) )
        else
        endif
        set udg_ED = udg_ED + 1
    endloop
    set udg_MAGIC_DAMAGE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = ( udg_MAGIC_DAMAGE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] * ( I2R(GetHeroStatBJ(bj_HEROSTAT_INT, GetTriggerUnit(), true)) / 5.00 ) )
    set udg_ED = 1
    loop
        exitwhen udg_ED > udg_DB_ITEMCOUNT
        if ( Trig_Spell_Func011Func001C() ) then
            set udg_MAGIC_DAMAGE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = ( udg_MAGIC_DAMAGE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] + LoadRealBJ(( 20 + udg_Cur_Cast_Spell_Ele[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] ), udg_ED, udg_ITEM_STATS) )
        else
        endif
        set udg_ED = udg_ED + 1
    endloop
    set dmg = udg_MAGIC_DAMAGE[GetConvertedPlayerId(GetOwningPlayer(u))] 
    loop
        exitwhen ( Trig_Spell_Func013001() )
        call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 0.10))
    endloop
    set udg_ELE_DMG_TYPE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = 1
    call AddSpecialEffectLocBJ( udg_TT_point, "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl" )
    call DestroyEffectBJ( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( udg_TT_point, "Abilities\\Spells\\Other\\Monsoon\\MonsoonBoltTarget.mdl" )
    call DestroyEffectBJ( GetLastCreatedEffectBJ() )
    call ForGroupBJ( GetUnitsInRangeOfLocMatching(250.00, udg_TT_point, Condition(function Trig_Spell_Func019001003)), function Trig_Spell_Func019A )
    call CreateTextTagLocBJ( ( I2S(R2I(udg_MAGIC_DAMAGE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))])) + udg_String_ele[udg_ELE_DMG_TYPE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))]] ), udg_TT_point, 60.00, 11.00, 100.00, 70.00, 0.00, 0 )
    call SetTextTagPermanentBJ( GetLastCreatedTextTag(), false )
    call SetTextTagLifespanBJ( GetLastCreatedTextTag(), 0.60 )
    call SetTextTagFadepointBJ( GetLastCreatedTextTag(), 0.60 )
    call SetTextTagAgeBJ( GetLastCreatedTextTag(), 0.00 )
    call SetTextTagVelocityBJ( GetLastCreatedTextTag(), 10.00, 90 )
    call RemoveLocation(udg_TT_point)
    set udg_ICS_CASTED[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = false
    set udg_MAGIC_DAMAGE[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))] = 0.00
    set u = null
endfunction

//===========================================================================
function InitTrig_Spell takes nothing returns nothing
    set gg_trg_Spell = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Spell, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Spell, Condition( function Trig_Spell_Conditions ) )
    call TriggerAddAction( gg_trg_Spell, function Trig_Spell_Actions )
endfunction

Отредактировано ScorpioT1000, 02.11.2010 в 00:58.
Старый 02.11.2010, 00:10
Doc

offline
Опыт: 63,163
Активность:
омг. дай карту лучше.
Старый 02.11.2010, 00:12
FKoFF
Venomancer 89lvl. Europe
offline
Опыт: 5,975
Активность:
собственно ругань идет на local unit victim
на строчки
set udg_Enum = GetEnumUnit()
set victim = udg_Enum
call MakeEleDamage(u, victim, dmg, ele)
set udg_Enum = null
set victim = null
ах да, я знаю что это через пятую точку, но это уже были попытки конвульсивно заставить это работать, тобишь в нормальном варианте удг_энума не было.
Ругается так же если в пытаться вызвать функцию с GetEnumUnit()
карту не спешу выкладывать =) хотя и это тоже можно )
FKoFF добавил:
все, отбой. проблема в том что гуи действие "pick every unit in group" - отдельная функция где требуется отдельно объявлять локалки.

Отредактировано ScorpioT1000, 02.11.2010 в 00:58.
Старый 02.11.2010, 00:45
Закрытая тема

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

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

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

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



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