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

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

Ответ
 
sleepw

offline
Опыт: 8,449
Активность:
Приказ при получении предмета
вод такой вот трабл.. сижу понять ничё не могу.
Код:
function Trig_scwFlagGet_Actions takes nothing returns nothing
local unit u=GetManipulatingUnit()
local item i=GetManipulatedItem()
local location flag2=Location(GetRectCenterX(gg_rct_flag2), GetRectCenterY(gg_rct_flag2))
    if GetUnitTypeId(u)=='H003' and  GetItemTypeId(i)=='uflg' or GetItemTypeId(i)=='nflg' then
        call IssuePointOrderLoc( u, "move", flag2)
    endif
endfunction

//===========================================================================
function InitTrig_scwFlagGet takes nothing returns nothing
    set gg_trg_scwFlagGet = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_scwFlagGet, EVENT_PLAYER_UNIT_PICKUP_ITEM )
    call TriggerAddAction( gg_trg_scwFlagGet, function Trig_scwFlagGet_Actions )
endfunction


когда юнит такогото типа получает такой или такой предмет,даём ему приказ двигацо в такуюто область.

когда он получает предмет таким тригом,то всё идёт как надо.
Код:
События-
БЕ- enters region

Условия-
((Unit-type of (Triggering unit)) = unit and ((gg_rct_reg contains udg_xx = Да)

Действия-
БЕ-Remove udg_xx
Герой-Create item for Triggering unit


но когда получает вот таким,то ничего не происходит
Код:
function Trig_AttackDrop_Actions takes nothing returns nothing
    local integer i
    local integer i2
if UnitHasItemOfTypeBJ(GetTriggerUnit(), 'nflg') and IsUnitEnemy(GetAttacker(),GetOwningPlayer(GetTriggerUnit())) then
    set i='nflg'
    call RemoveItem( GetItemOfTypeFromUnitBJ(GetTriggerUnit(), i) )
    call UnitAddItemById(GetAttacker(),i)
elseif UnitHasItemOfTypeBJ(GetTriggerUnit(), 'uflg') and IsUnitEnemy(GetAttacker(),GetOwningPlayer(GetTriggerUnit())) then
    set i2='uflg'
    call RemoveItem( GetItemOfTypeFromUnitBJ(GetTriggerUnit(), i2) )
    call UnitAddItemById(GetAttacker(),i2)
endif
endfunction

//===========================================================================
function InitTrig_AttackDrop takes nothing returns nothing
    set gg_trg_AttackDrop = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_AttackDrop, EVENT_PLAYER_UNIT_ATTACKED )
    call TriggerAddAction( gg_trg_AttackDrop, function Trig_AttackDrop_Actions )
endfunction

тоесть предмет создаётся атакующему,но триг с приказом не действует почемуто..шозанах?
Старый 23.03.2008, 23:02
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
На сколько я знаю, предмет надо сначала создать, а потом уже давать.

DFlyer добавил:
Да и сам код у тебя напутаный, много чего лишнего.
Старый 23.03.2008, 23:21
sleepw

offline
Опыт: 8,449
Активность:
не в этом имхо трабл..
в первом триге получается
call UnitAddItemByIdSwapped( 'nflg', GetEnteringUnit() )

и во втором также попробовал.. ничё.

sleepw добавил:
DFlyer
например?=\
Старый 23.03.2008, 23:44
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
sleepw
Чё "например"?
Старый 23.03.2008, 23:44
sleepw

offline
Опыт: 8,449
Активность:
что там лишнего :)
Старый 23.03.2008, 23:55
DFlyer
<3 MJ
offline
Опыт: 42,879
Активность:
Тут переменная вообще ни к чему, ибо используется один раз. А две - и подавно!

Код:
function Trig_AttackDrop_Actions takes nothing returns nothing
  if UnitHasItemOfTypeBJ(GetTriggerUnit(), 'nflg') and IsUnitEnemy(GetAttacker(),GetOwningPlayer(GetTriggerUnit())) then
    call RemoveItem(GetItemOfTypeFromUnitBJ(GetTriggerUnit(),'nflg'))
    call UnitAddItemById(GetAttacker(),'nflg')
  elseif UnitHasItemOfTypeBJ(GetTriggerUnit(), 'uflg') and IsUnitEnemy(GetAttacker(),GetOwningPlayer(GetTriggerUnit())) then
    call RemoveItem(GetItemOfTypeFromUnitBJ(GetTriggerUnit(),'uflg'))
    call UnitAddItemById(GetAttacker(),'uflg')
  endif
endfunction
Старый 24.03.2008, 00:06
sleepw

offline
Опыт: 8,449
Активность:
sleepw добавил:
и ещё один нюанс по теме, триг не то шо не срабатывает,а бнит получивший предмет просто тупо стоит и втыкает,не реагирует даже на атаку его союзника рядом..

странно там же вроде ничё такого нету..


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

sleepw добавил:
вот мб гляньте ктото.

трабл решил периодиком,но всё же мего интересно узнать в чём трабл.
Прикрепленные файлы
Тип файла: w3x megotest.w3x (121.8 Кбайт, 7 просмотров )

Отредактировано sleepw, 24.03.2008 в 02:14.
Старый 24.03.2008, 02:04
Ответ

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

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

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

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



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