Здравствуйте суть моей проблемы в том что когда я обучаю юнита с помощью вот такого кода:
//===========================================================================
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
  • Почему это происходит?
  • Как это исправить?

Опиши что ты хочешь сделать.
`
ОЖИДАНИЕ РЕКЛАМЫ...
15
А если просто тренировать, можете выбросить?
9
Tobi123:
А если просто тренировать, можете выбросить?
Да могу,
сразу говорю горячими клавишами не вариант
9
nvc123:
не юзай бж
Ну так может объяснишь что именно юзать?
Раз уж это вопрос
9
nvc123:
Вот посмотри я обновил вопрос там конкретней написано
Самое главное когда я просто юзаю функцию:
call IssueTrainOrderByIdBJ( gg_unit_hbla_0000, 'hrif' )
Например:
function Trig_fgh_Actions takes nothing returns nothing
    call IssueTrainOrderByIdBJ( gg_unit_hbla_0000, 'hrif' )
endfunction

//===========================================================================
function InitTrig_fgh takes nothing returns nothing
    set gg_trg_fgh = CreateTrigger(  )
    call TriggerRegisterPlayerChatEvent( gg_trg_fgh, Player(0), "q", true )
    call TriggerAddAction( gg_trg_fgh, function Trig_fgh_Actions )
endfunction
То этого не происходит
замечание от alexprey: учитесь форматировать код
5 комментариев удалено
9
Hate:
да накой нам надо тупой конверт из гуи?
Я попросил ответить мне на вопрос
  • Почему?
  • Как исправить?
Со всем остальным попрошу воздержаться
24
Sparrow, поясняю для не особо понятливых: разбираться в конвертированном из ГУИ коде никто кроме мазохистов не будет - это геморрой.
9
prog:
Sparrow, поясняю для не особо понятливых: разбираться в конвертированном из ГУИ коде никто кроме мазохистов не будет - это геморрой.
Хорошо
Что от меня сейчас требуется?
15
Код нормально написать, или скрин триггера сделать.
9
Tobi123:
Код нормально написать, или скрин триггера сделать.
Пожалуйста
Загруженные файлы
Этот комментарий удален
24
Sparrow, если еще существует не конвертированная версия - скриншоты ГУИ, если нет - чистить код до удобочитаемого вида с осмысленными именами и по возможности избавляться от BJ, а потом уже показывать этот код людям. Ну и триггер gg_trg_Esle тоже в студию - нет ли в нем каких-либо реакций на приказы?
upd: скриншот уже увидел, удаление юнита до проверки его типа не самая мудрая мысль.
9
prog:
Sparrow, Ну и триггер gg_trg_Esle тоже в студию - нет ли в нем каких-либо реакций на приказы?
Там просто проверка целочисленной
т.е. переодическое событие которое проверяет равна ли i = n если да то устанавливает доступность обучения к примеру пехотинца,если нет,то наооборот.
Если возникнет вопрос откуда берется эта целочисленная:
Когда обучающий получает определенный предмет то устанавливается целочисленная как количество таких предметов
prog:
удаление юнита до проверки его типа не самая мудрая мысль.
А смысл проверять его тип если мне эти юниты не нужны и после обучения они сразу удаляются.
Мне это нужно лишь для получения предмета
Но если это имеет значение то вы правей меня и если нужно я исправлю
33
А смысл проверять его тип если мне эти юниты не нужны и после обучения они сразу удаляются.
Не знаю, в чём смысл. Но тем не менее, выложенный тобой триггер проверяет тип юнита, который уже удалён. Он нормально определяется?
9
Кет:
А смысл проверять его тип если мне эти юниты не нужны и после обучения они сразу удаляются.
Не знаю, в чём смысл. Но тем не менее, выложенный тобой триггер проверяет тип юнита, который уже удалён. Он нормально определяется?
Определяется тип обученного юнита
т.е обучение какого юнита происходит а что произойдет после уже не имеет значения
Проще скажу:
После обучения он не появляется на карте а сразу удаляется т.к. юнит мне не нужен
=============================================================
Я нашел как это сделать просто добавил вайт перед той злорадной функцией но это не красиво.
Это я к тому что вайты не предлагать
24
но это не красиво.
Правило программиста №2: не вызывает ошибок и работает - не тронь!
Если ты до сих пор не избавился от БЖ - замени
call IssueTrainOrderByIdBJ( gg_unit_hbla_0000, 'hrif' )
на
call IssueImmediateOrderById(gg_unit_hbla_0000, 'hrif')
28
darkowlom, тебе не нравятся бж но на его условия ты внимание не обратил
9
Правило программиста №2: не вызывает ошибок и работает - не тронь!
Это правило хренового программиста ибо качество всегда на первом месте!
Чтобы оставить комментарий, пожалуйста, войдите на сайт.