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

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

Ответ
 
gggrrk

offline
Опыт: 88
Активность:
Обрывается выбор юнитов
Когда используется способность, для всех дружественных юнитов вокруг создаются дамми юниты, накладывающие на них заклинание. Проблема в том, что действия совершаются только с одним юнитом. Я разбирался и выяснил, что без строчки call IssueTargetOrder( uD, "acidbomb", u2 ) цикл не обрывается(т.е. все работает нормально). Подскажите из-за чего это может быть?
function Trig_Ability_Conditions takes nothing returns boolean
   return GetSpellAbilityId() == 'A029'
endfunction

function Ability_EveryPick_Condition takes nothing returns boolean
local unit u2 = GetFilterUnit()
local unit u = GetSpellAbilityUnit()
local boolean bCondition = true
if(not (GetUnitState(u2, UNIT_STATE_LIFE) > 0))then
set bCondition = false
endif
if(not ( IsUnitType(u2, UNIT_TYPE_STRUCTURE) == false )) then
set bCondition = false 
endif
if(not ( IsUnitType(u2, UNIT_TYPE_MAGIC_IMMUNE) == false )) then
set bCondition = false 
endif
if(not ( IsUnitEnemy(u2, GetOwningPlayer(u)) == false )) then
set bCondition = false 
endif
set u2 = null
set u = null
return bCondition
endfunction
function Ability_EveryPick_Actions takes nothing returns nothing
local unit u = GetSpellAbilityUnit()
local unit u2 = GetEnumUnit()
local real pX = GetUnitX(u2)
local real pY = GetUnitY(u2)
local unit uD = null
set uD = CreateUnit(GetOwningPlayer(u), 'h00I', pX, pY, 90 )
call SetUnitAbilityLevel (uD, 'A025', GetUnitAbilityLevel(u, 'A029'))
call UnitApplyTimedLife( uD, 'BHwe', 3 )
call IssueTargetOrder( uD, "acidbomb", u2 ) - ЭТА СТРОЧКА ОБРЫВАЕТ ЦИКЛ 
set u2 = null
set uD = null
set u = null
endfunction

function Trig_Ability_Actions takes nothing returns nothing
local unit u = GetSpellAbilityUnit()
local real pX = GetUnitX(u)
local real pY = GetUnitY(u)
local group g = CreateGroup()
call GroupEnumUnitsInRange(g, pX, pY, 800, Condition(function Ability_EveryPick_Condition))
call ForGroup(g, function Ability_EveryPick_Actions)
call DestroyGroup(g)
set u = null
set g = null
endfunction

//===========================================================================
function InitTrig_Ability takes nothing returns nothing
    set gg_trg_Ability = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Ability, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Ability, Condition( function Trig_Ability_Conditions ) )
    call TriggerAddAction( gg_trg_Ability, function Trig_Ability_Actions )
endfunction
[+] замечание от Hanabishi: Используйте тег кода

Отредактировано Hanabishi, 15.09.2013 в 15:18.
Старый 15.09.2013, 12:56
MegaBlax

offline
Опыт: 2,352
Активность:
Должно работать!
» кат CODE
((код jass
function Trig_Ability_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A029'
endfunction
function Ability_EveryPick_Condition takes nothing returns boolean
local unit u2 = GetFilterUnit()
local unit u = GetSpellAbilityUnit()
if GetUnitState(u2,UNIT_STATE_LIFE)>0 and IsUnitType(u2, UNIT_TYPE_STRUCTURE) == false and IsUnitType(u2, UNIT_TYPE_MAGIC_IMMUNE) == false and IsUnitEnemy(u2,GetOwningPlayer(u)) then
set uD = CreateUnit(GetOwningPlayer(u), 'h00I', GetUnitX(u2), GetUnitY(u2), 90 )
call SetUnitAbilityLevel (uD, 'A025', GetUnitAbilityLevel(u, 'A029'))
call UnitApplyTimedLife( uD, 'BHwe', 3 )
call IssueTargetOrder( uD, "acidbomb", u2 )
set u2=null
set u=null
return false
endfunction
function Trig_Ability_Actions takes nothing returns nothing
local unit u = GetSpellAbilityUnit()
local real pX = GetUnitX(u)
local real pY = GetUnitY(u)
local group g = CreateGroup()
call GroupEnumUnitsInRange(g, pX, pY, 800, Condition(function Ability_EveryPick_Condition))
call DestroyGroup(g)
set u = null
set g = null
endfunction
===========================================================================
function InitTrig_Ability takes nothing returns nothing
set gg_trg_Ability = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_Ability, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddCondition( gg_trg_Ability, Condition( function Trig_Ability_Conditions ) )
call TriggerAddAction( gg_trg_Ability, function Trig_Ability_Actions )
endfunction
))
Старый 15.09.2013, 14:12
youtube
сктыщь
offline
Опыт: 8,025
Активность:
MegaBlax, мне кажется, или у тебя кое где не достает endif
да и вообще у тебя не объявленная переменная uD, а ты её уже юзаешь, не хорошо
иди тестани, а потом советуй людям, они и так мало разбираются, а ты им еще ошибки поставляешь
Старый 15.09.2013, 14:51
MegaBlax

offline
Опыт: 2,352
Активность:
youtube, спешил, вот и ошибки. Надеюсь он сам поймет где что надо дописать.
Старый 16.09.2013, 01:05
gggrrk

offline
Опыт: 88
Активность:
MegaBlax, все равно не работает.
Старый 22.09.2013, 17:44
Ответ

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

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

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

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



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