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

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

Закрытая тема
 
Daemonik

offline
Опыт: 5,084
Активность:
Выкидывает из warcraft'a
Когда пытаюсь поднять предмет выкидывает из war'a
Код:
function Trig_stash2_Conditions takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetTriggerUnit()) == 'h000' ) ) then
        return false
    endif
    return true
endfunction

function Trig_stash2_Actions takes nothing returns nothing
    local unit u =GetTriggerUnit()
    local item it = GetOrderTargetItem()
    local real dx = GetLocationX(GetUnitLoc(u)) - GetLocationX(Location(GetItemX(it),GetItemY(it)))
    local real dy = GetLocationY(GetUnitLoc(u)) - GetLocationY(Location(GetItemX(it),GetItemY(it)))
    call DisableTrigger( gg_trg_stash )
    call IssueTargetOrder( GetTriggerUnit(), "smart", GetOrderTargetItem() )
    call TriggerSleepAction( ( SquareRoot(dx * dx + dy * dy) / 522.00 ) )
    call EnableTrigger( gg_trg_stash )
endfunction

//===========================================================================
function InitTrig_stash2 takes nothing returns nothing
    local integer i
    set gg_trg_stash2 = CreateTrigger(  )
    set i = 0
    loop
        call TriggerRegisterPlayerUnitEvent( gg_trg_stash2, Player(i), EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER, null )
        set i = i + 1
        exitwhen i == bj_MAX_PLAYER_SLOTS
    endloop
    set i = 0
    call TriggerAddCondition( gg_trg_stash2, Condition( function Trig_stash2_Conditions ) )
    call TriggerAddAction( gg_trg_stash2, function Trig_stash2_Actions )
endfunction
Старый 30.06.2009, 16:12
SRes
1110101000
offline
Опыт: 9,997
Активность:
Попробуй закомментировать эту строчку "call IssueTargetOrder( GetTriggerUnit(), "smart", GetOrderTargetItem() )", если поможет - тебе надо его использовать ? Тогда пиши это вместо своей строчки
Код:
//Вначале триггера !
local integer i = 0
local integer tmp = 852007
//куда-нибудь дальше
loop
exitwhen i > 5
if ( UnitItemInSlot( u, i) == it) then
set tmp = tmp + i
set i = 6
endif
set i = i + 1
endloop
if ( tmp != 852007) then
call IssueImmediateOrderById( u, tmp)
endif
//незаштоо_о

Отредактировано SRes, 30.06.2009 в 16:25.
Старый 30.06.2009, 16:18
Garret
Недоброе творится
offline
Опыт: 3,893
Активность:
gg_trg_stash2 != gg_trg_stash
Старый 30.06.2009, 16:20
Enein
Silenced by ZlaYa1000
offline
Опыт: 43,453
Активность:
Цитата:
GetLocationX(GetUnitLoc(u))

тоже самое:
Цитата:
GetUnitX(u)


Цитата:
GetLocationX(Location(GetItemX(it),GetItemY(it)))

тоже самое:
Цитата:
GetItemX(it)
Старый 30.06.2009, 16:20
Enein
Silenced by ZlaYa1000
offline
Опыт: 43,453
Активность:
Код:
function Trig_stash2_Conditions takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetTriggerUnit()) == 'h000' ) ) then
        return false
    endif
    return true
endfunction

тоже самое:
Код:
function Trig_stash2_Conditions takes nothing returns boolean
    return GetUnitTypeId(GetTriggerUnit()) == 'h000'
endfunction


Код:
function InitTrig_stash2 takes nothing returns nothing
    local integer i
    set gg_trg_stash2 = CreateTrigger(  )
    set i = 0
    loop
        call TriggerRegisterPlayerUnitEvent( gg_trg_stash2, Player(i), EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER, null )
        set i = i + 1
        exitwhen i == bj_MAX_PLAYER_SLOTS
    endloop
    set i = 0
    call TriggerAddCondition( gg_trg_stash2, Condition( function Trig_stash2_Conditions ) )
    call TriggerAddAction( gg_trg_stash2, function Trig_stash2_Actions )
endfunction

тоже самое:
Код:
function InitTrig_stash2 takes nothing returns nothing
    local integer i = 0
    local trigger t = CreateTrigger()
    loop
        call TriggerRegisterPlayerUnitEvent(t, Player(i), EVENT_PLAYER_UNIT_ISSUED_TARGET_ORDER, null )
        set i = i + 1
        exitwhen i > 15
    endloop
    call TriggerAddCondition(t, Condition( function Trig_stash2_Conditions ) )
    call TriggerAddAction(t, function Trig_stash2_Actions )
    set t = null
endfunction

Отредактировано ShadoW DaemoN, 30.06.2009 в 16:40.
Старый 30.06.2009, 16:28
Daemonik

offline
Опыт: 5,084
Активность:
Ой спасибо))
Но если вернуться к триггеру.
Теперь не выкидывает. Но когда пытаюсь подобрать вещь юнит продолжает следовать за героем.
Вам триггер следования подать?
Старый 30.06.2009, 16:34
SRes
1110101000
offline
Опыт: 9,997
Активность:
Какой юнит ? Какой герой ? Я тебе дал рабочий код юзанья итема в опр слоте, Enein пострадал жаждой оптимизации, а вот новая проблема уже не относиться к этой.
Старый 30.06.2009, 16:36
Daemonik

offline
Опыт: 5,084
Активность:
Ок. Тогда я создам новую тему и там объясню свою проблему.
Старый 30.06.2009, 16:45
Закрытая тема

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

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

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

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



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