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

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

Ответ
 
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Одновременное действие триггера
Возникла проблема когда начал реализовывать спел
создал 2 способности на основе канала
при первой создается юнит, кастер ставится на паузу и скрывается(hide unit)
при втором спеле созданый юнит умерает, кастер снимается с паузы и показывается
Триггерное повторение(иммитация) спела burrow\unburrow

У спелов разные:raw codes, Id, Bind keys
но при касте второго почему-то всегда срабатывает 1 тоже(по дебагу увидел)
Прошу пояснить почему же срабатывает 2сразу
» testcode
Код:
globals
unit burunit
unit burcast
endglobals
function Trig_Burrow_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A002'
endfunction
function Trig_Burrow_Actions takes nothing returns nothing
local real x=GetUnitX(GetSpellAbilityUnit())
local real y=GetUnitY(GetSpellAbilityUnit())
local effect e=AddSpecialEffect("Objects\\Spawnmodels\\Undead\\ImpaleTargetDust\\ImpaleTargetDust.mdl",x,y)
call BJDebugMsg("burrow")
set burcast=GetSpellAbilityUnit()
call PauseUnit(burcast,true)
call UnitAddAbility(burcast,'Avul')
call ShowUnit(burcast,false)
set burunit=CreateUnit(GetTriggerPlayer(),'h000',x,y,bj_UNIT_FACING)
call SetUnitAnimation(burunit,"stand alternate")
endfunction
//===========================================================================
function InitTrig_Burrow takes nothing returns nothing
    set gg_trg_Burrow = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Burrow, EVENT_PLAYER_UNIT_SPELL_CAST)
    call TriggerAddCondition( gg_trg_Burrow, Condition( function Trig_Burrow_Conditions ) )
    call TriggerAddAction( gg_trg_Burrow, function Trig_Burrow_Actions )
endfunction
function Unbur_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A005'
endfunction
function Trig_Unbur_Actions takes nothing returns nothing
call BJDebugMsg("unbur")
call RemoveUnit(burunit)
call ShowUnit(burcast,true)
call UnitRemoveAbility(burcast,'Avul')
call PauseUnit(burcast,false)
endfunction
//===========================================================================
function InitTrig_Unbur takes nothing returns nothing
    set gg_trg_Unbur = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Unbur, EVENT_PLAYER_UNIT_SPELL_CAST )
    call TriggerAddCondition( gg_trg_Unbur, Condition(function Unbur_Conditions))
    call TriggerAddAction( gg_trg_Unbur, function Trig_Unbur_Actions )
endfunction

код будет мрачен тк уже час пытался понять из-за чего и менял его вдоль и поперек

Отредактировано AlexKARASb, 01.04.2010 в 01:50.
Старый 01.04.2010, 01:37
SRes
1110101000
offline
Опыт: 9,997
Активность:
А разве не учили менять приказ у каналов ? Конечно юзаются два одновременно, ведь приказ одинаковый.
Старый 01.04.2010, 09:33
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
SRes,
Цитата:
У спелов разные:raw codes, Id,


AlexKARASb добавил:
если бы дело было в приказе я бы не спрашивал......
как я уже написал в 1 посте, все параметры абсолюно у них разные, но при касте второго почему то срабатывает и 1 спел тоже, хотя повторяю приказ разный

кто сталкивался с такой проблемой, прошу помочь и объяснить поподробнее
спасибо зарание

Отредактировано AlexKARASb, 01.04.2010 в 13:04.
Старый 01.04.2010, 12:58
XOR

offline
Опыт: 38,159
Активность:
Все отлично работает почему у вас всегда все не так работает ? скрины/карту в студию.
Старый 01.04.2010, 13:46
Master_chan
Полуночный командир
offline
Опыт: 15,660
Активность:
Базовый ID приказа должен быть разный, причем(sic!) выбирать надо из выпадающего списка а не вводить с шифта.
Старый 01.04.2010, 14:21
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Цитата:
скрины/карту в студию.

прошу
Прикрепленные файлы
Тип файла: w3x destructable.w3x (29.1 Кбайт, 9 просмотров )
Старый 01.04.2010, 15:19
_Red

offline
Опыт: 4,095
Активность:
как и говорили, все дело в приказе, а именно в этом, эта строка должна быть разная у абилок
Старый 01.04.2010, 16:33
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
так это же порядок строк, а не Id приказа

AlexKARASb добавил:
_Red, изменил, проблема не решена

AlexKARASb добавил:
вот скрины

AlexKARASb добавил:
+ мне вообще интересно почему срабатывает первый спел хотя его нет в наличии у подменного юнита:
Описание: на карте 2 юнита: жук и кастер, у жука одна способность канал, у кастера другая
когда жук жмет свой канал срабатывает и канал кастера, вот и спрашиваю почему

AlexKARASb добавил:
может я ошибся в глобалках или в чем.... как же это затормозило процесс

AlexKARASb добавил:
Народ помогите пожаль (O.o)
Миниатюры
Кликните на картинку для увеличения
Название:  2.JPG
Просмотров: 20
Размер:  247.5 Кбайт  
Старый 01.04.2010, 19:20
Sebra

offline
Опыт: 5,603
Активность:
AlexKARASb:
так это же порядок строк, а не Id приказа
Order правильно переводится как приказ, а неправильно - как "порядок".
Увы переводчикам :(
А вообще, разве эти две способности не должны быть у разных юнитов?
Старый 01.04.2010, 19:41
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Sebra, да но я его исправил уже и по прежнему при касте спела(A005) срабатывает спел(A002)
хотя у кастующего нету даже A002 O/o
Старый 01.04.2010, 19:44
Sebra

offline
Опыт: 5,603
Активность:
Вставь это после распаузы
call IssueImmediateOrder(burcast,"stop")
Старый 01.04.2010, 20:16
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
спасибо, помогло
Старый 01.04.2010, 20:23
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
и снова таже история,
3 канала у героя
у всех разные приказы, ордеры, все разное, но при проверке тремя триггерами реагировать только на одну нужную абилку срабатывает что 3 включаются
не понимаю, и теперь ордер стопа не помог как в прошлый раз
» 1
Код:
Idpricaza=unpoisonarrows
order=unpoisonarrows
function Trig_s_Actions1 takes nothing returns nothing
call IssueImmediateOrder(GetSpellAbilityUnit(),"stop")
call BJDebugMsg("spell 1")
endfunction

function Trig_s_Cond1 takes nothing returns boolean
return GetSpellAbilityId()=='A000'
endfunction
//===========================================================================
function InitTrig_s1 takes nothing returns nothing
    set gg_trg_s1 = CreateTrigger(  )
    call TriggerRegisterPlayerUnitEvent(gg_trg_s1, Player(0), ConvertPlayerUnitEvent(273),null)
    call TriggerAddAction( gg_trg_s1, function Trig_s_Actions1 )
    call TriggerAddAction( gg_trg_s1, function Trig_s_Cond1 )
endfunction

» 2
Код:
Idpricaza=taunt
order=taunt
function Trig_s_Actions2 takes nothing returns nothing
call IssueImmediateOrder(GetSpellAbilityUnit(),"stop")
call BJDebugMsg("spell 2")
endfunction

function Trig_s_Cond2 takes nothing returns boolean
return GetSpellAbilityId()=='A001'
endfunction
//===========================================================================
function InitTrig_s2 takes nothing returns nothing
    set gg_trg_s2 = CreateTrigger(  )
    call TriggerRegisterPlayerUnitEvent(gg_trg_s2, Player(0), ConvertPlayerUnitEvent(272),null)
    call TriggerAddAction( gg_trg_s2, function Trig_s_Actions2 )
    call TriggerAddAction( gg_trg_s2, function Trig_s_Cond2 )
endfunction

» 3
Код:
Idpricaza=chemicalrage
order=chemicalrage
function Trig_s_Actions takes nothing returns nothing
call IssueImmediateOrder(GetSpellAbilityUnit(),"stop")
call BJDebugMsg("spell 3")
endfunction

function Trig_s_Cond takes nothing returns boolean
return GetSpellAbilityId()=='A002'
endfunction
//===========================================================================
function InitTrig_s takes nothing returns nothing
    set gg_trg_s = CreateTrigger(  )
    call TriggerRegisterPlayerUnitEvent(gg_trg_s, Player(0), ConvertPlayerUnitEvent(272),null)
    call TriggerAddAction( gg_trg_s, function Trig_s_Actions )
    call TriggerAddAction( gg_trg_s, function Trig_s_Cond )
endfunction
Старый 16.04.2010, 18:53
Ответ

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

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

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

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



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