Здравствуйте суть моей проблемы в том что когда я обучаю юнита с помощью вот такого кода:
//===========================================================================
function Trig_Tratata_Func002Func007C takes nothing returns boolean 
    if ( not ( udg_Iron_ore > 0 ) ) then
        return false
    endif 
    return true
endfunction

function Trig_Tratata_Func002C takes nothing returns boolean
    if ( not ( GetTrainedUnitType() == 'hrif' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Tratata_Func003C takes nothing returns boolean
    if ( not ( GetTrainedUnitType() == 'hfoo' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Tratata_Actions takes nothing returns nothing
    call RemoveUnit( GetTrainedUnit() )
    if ( Trig_Tratata_Func002C() ) then
        call RemoveItem( GetItemOfTypeFromUnitBJ(gg_unit_hbla_0000, 'rat6') )
        call UnitAddItemByIdSwapped( 'rat3', gg_unit_hbla_0000 )
        call SetPlayerUnitAvailableBJ( 'hrif', true, Player(0) )
        call SetPlayerUnitAvailableBJ( 'hfoo', true, Player(0) )
        call EnableTrigger( gg_trg_Esle )
        if ( Trig_Tratata_Func002Func007C() ) then
            call IssueTrainOrderByIdBJ( gg_unit_hbla_0000, 'hrif' )
        else
            call DoNothing(  )
        endif
    else
        call DoNothing(  )
    endif
    if ( Trig_Tratata_Func003C() ) then
        call RemoveItem( GetItemOfTypeFromUnitBJ(gg_unit_hbla_0000, 'rat3') )
        call RemoveItem( GetItemOfTypeFromUnitBJ(gg_unit_hbla_0000, 'rat3') )
        call RemoveItem( GetItemOfTypeFromUnitBJ(gg_unit_hbla_0000, 'rat3') )
        call UnitAddItemByIdSwapped( 'frgd', gg_unit_hbla_0000 )
        call SetPlayerUnitAvailableBJ( 'hrif', true, Player(0) )
        call SetPlayerUnitAvailableBJ( 'hfoo', true, Player(0) )
        call EnableTrigger( gg_trg_Esle )
    else
    endif
endfunction

//===========================================================================
function InitTrig_Tratata takes nothing returns nothing
    set gg_trg_Tratata = CreateTrigger(  )
    call TriggerRegisterUnitEvent( gg_trg_Tratata, gg_unit_hbla_0000, EVENT_UNIT_TRAIN_FINISH )
    call TriggerAddAction( gg_trg_Tratata, function Trig_Tratata_Actions )
endfunction
//===========================================================================
То после этого я не могу вытаскивать или что либо делать с предметами обучающего
Конкретно скажу что это происходит после этого фрагмента:
//===========================================================================
if ( Trig_Tratata_Func002Func007C() ) then
            call IssueTrainOrderByIdBJ( gg_unit_hbla_0000, 'hrif' )
        else
            call DoNothing(  )
        endif
  • Почему это происходит?
  • Как это исправить?

Опиши что ты хочешь сделать.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
9
Кет:
А смысл проверять его тип если мне эти юниты не нужны и после обучения они сразу удаляются.
Не знаю, в чём смысл. Но тем не менее, выложенный тобой триггер проверяет тип юнита, который уже удалён. Он нормально определяется?
Определяется тип обученного юнита
т.е обучение какого юнита происходит а что произойдет после уже не имеет значения
Проще скажу:
После обучения он не появляется на карте а сразу удаляется т.к. юнит мне не нужен
=============================================================
Я нашел как это сделать просто добавил вайт перед той злорадной функцией но это не красиво.
Это я к тому что вайты не предлагать
24
но это не красиво.
Правило программиста №2: не вызывает ошибок и работает - не тронь!
Если ты до сих пор не избавился от БЖ - замени
call IssueTrainOrderByIdBJ( gg_unit_hbla_0000, 'hrif' )
на
call IssueImmediateOrderById(gg_unit_hbla_0000, 'hrif')
28
darkowlom, тебе не нравятся бж но на его условия ты внимание не обратил
9
Правило программиста №2: не вызывает ошибок и работает - не тронь!
Это правило хренового программиста ибо качество всегда на первом месте!
28
качество всегда на первом месте!
качество зависит от сроков и оплаты
24
Sparrow, кроме тебя твой код никто не видит, а вид кода на работоспоспособноть влияет редко, хоть справа налево пиши, если работает также хорош
28
darkowlom, он скорее всего имеет ввиду качество работы
хотя качество написания тоже важно
платят как правило за исходник
а за индуский код в исходнике ничего не платят
24
платят как правило за исходник
платят, как правило, за результат, но потом вносить при необходимости изменения в свой залежалый индусский код это дикая боль в известном месте.
28
prog, смотря где платят
на фрилансе да
за результат
а если командное задание то за индуский код могут уволить
24
индуский код
Так мы об индусском и не говорим,а засунуть вейт это костыль а не индусский код Стандартные триггеры конвертированные в текст- это индусский код
28
darkowlom, засунуть вейт это пичаль
а не костыль
darkowlom, и это кстати и есть стандартный триггер конвертированный в текст
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.