Вообщем начну как всегда из далека, кто считает что эта инфа не нужна, сразу читайте следующий абзац.
Итак попросил одного грамотного человека в Jass, помочь с кодом и написать возрождение курьера с сохранением всех шмоток в нем, писалось на 1.31 и переносилось на 1.26 и короче по итогу, работает все но самого курьера не создает.
Я короче не могу найти проблему, пишу тоже самое на ГУЕ и все работает и создается, вообщем проблем нет. А на джасе не создается.
Вообщем скидываю код, надеюсь тут есть JassБоги, которые одним взглядом найдут ошибку.
function Trig_CourierRespawn_Func022C takes nothing returns boolean
    if ( ( GetUnitTypeId(GetDyingUnit()) == udg_GAME_COURIER_TYPE[1] ) ) then
        return true
    endif
    if ( ( GetUnitTypeId(GetDyingUnit()) == udg_GAME_COURIER_TYPE[2] ) ) then
        return true
    endif
    if ( ( GetUnitTypeId(GetDyingUnit()) == udg_GAME_COURIER_TYPE[3] ) ) then
        return true
    endif
    return false
endfunction

function Trig_CourierRespawn_Conditions takes nothing returns boolean
    if ( not Trig_CourierRespawn_Func022C() ) then
        return false
    endif
    return true
endfunction

function Trig_CourierRespawn_Actions takes nothing returns nothing
    local unit d = GetDyingUnit()
    local player p = GetOwningPlayer(d)
    local integer i
    local item array ITEM
    local timer t = CreateTimer()
    local timerdialog td = CreateTimerDialog(t)
    local integer HNDL = GetHandleId(t)
    set i = 0
    loop
    exitwhen i > 5
    set ITEM[i] = UnitItemInSlot(d, i)
    set i = i + 1
    endloop
    call TimerStart(t, 30.00, false, null)
    call TimerDialogSetTitle(td, "Курьер: ")
    if (GetLocalPlayer() == p) then
        call TimerDialogDisplay(td, true)
    endif
    call TriggerSleepAction( 30.00 )
    set bj_lastCreatedUnit = CreateUnit(p, GetUnitTypeId(d), GetRectCenterX(udg_GAME_RECT_BACKCOUR), GetRectCenterY(udg_GAME_RECT_BACKCOUR), 270.00)
    call DestroyEffect(AddSpecialEffect("Abilities\\Spells\\Human\\ReviveHuman\\ReviveHuman.mdl", GetRectCenterX(udg_GAME_RECT_BACKCOUR), GetRectCenterY(udg_GAME_RECT_BACKCOUR)))
    set i = 0
    loop
    exitwhen i > 5
    call UnitAddItemByIdSwapped( GetItemTypeId(ITEM[i]), GetLastCreatedUnit() )
    set i = i + 1
    endloop
    call DestroyTimer(t)
    call DestroyTimerDialog(td)
endfunction

//===========================================================================
function InitTrig_CourierRespawn takes nothing returns nothing
    set gg_trg_CourierRespawn = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_CourierRespawn, EVENT_PLAYER_UNIT_DEATH )
    call TriggerAddCondition( gg_trg_CourierRespawn, Condition( function Trig_CourierRespawn_Conditions ) )
    call TriggerAddAction( gg_trg_CourierRespawn, function Trig_CourierRespawn_Actions )
endfunction
function Trig_InitCourier_Actions takes nothing returns nothing
    set udg_GAME_BASE_RECT = gg_rct_Baza
    set udg_GAME_RECT_BACKCOUR = gg_rct_KURA
    set udg_GAME_COURIER_UP_COST[1] = 100
    set udg_GAME_COURIER_UP_COST[2] = 500
    set udg_GAME_BUYER_TYPE = 'H017'
    // --------------------------------------------------
    set udg_GAME_COURIER_TYPE[1] = 'u000'
    set udg_GAME_COURIER_TYPE[2] = 'u00J'
    set udg_GAME_COURIER_TYPE[3] = 'u00A'
    // --------------------------------------------------
    set udg_GAME_COURIER_SPELLS[1] = 'A0EA'
    set udg_GAME_COURIER_SPELLS[2] = 'A0E9'
    set udg_GAME_COURIER_SPELLS[3] = 'S001'
    set udg_GAME_COURIER_SPELLS[4] = 'S002'
endfunction

//===========================================================================
function InitTrig_InitCourier takes nothing returns nothing
    set gg_trg_InitCourier = CreateTrigger(  )
    call TriggerAddAction( gg_trg_InitCourier, function Trig_InitCourier_Actions )
endfunction
Спасибо всем, кто уделит время моему вопросу.

Принятый ответ

David David, Кондишены у тебя это гуи конверт, у меня тоже кровь чутка пошла
Вот ознакомься, где вкратце то надо узнать мб условие какое-то не работает
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
29
3 года назад
0
Где???
Здесь я помню делал разложение в ноль, чтоб сразу исчезали. А так да, проще сохранить предметы и количество зарядов в таблицу и тупо пересоздавать.

Или можно проще, сразу создавать нового курьера, передавать ему вещи и хайдить.
0
32
3 года назад
0
Или можно проще, сразу создавать нового курьера, передавать ему вещи и хайдить.
да тут вариантов решения очень много
0
22
3 года назад
Отредактирован PROSHELDOTU
0
проблема в том что курьер разлагается
мм так вот в чём дело
ор однако, потому что стандартно разложение идёт 90 сек, а изначальное возрождение куры было заявлено за 10 сек, потом решено увеличить до 30 сек, что то что то вписывается в рамки и естественно всё было норм
Или можно проще, сразу создавать нового курьера, передавать ему вещи и хайдить.
или можно просто юзать этот вариант
но кто ж знал, что в той мапе разложение стоит в нулину, если даже сам автор ничё толком не знает про свою мапу
0
32
3 года назад
0
Proshel_Doty, бага то из за разложения что ничего нет известна давно, в доте до сих пор =). Стоит курьеру сдохнуть над непроходимым местом (именно рельефом, а не деструктаблами, склон или еще чего ).
0
22
3 года назад
0
quq_CCCP, при чём тут разложение и непроходимый рельеф?
0
32
3 года назад
0
Proshel_Doty, ну попробуй курьеру вручить перерождение и умереть над рельефом, оно не сработает. Вещи выпадут или пропадут. И посрать какое там у тебя время разложения, .юнита нет и все!
0
29
3 года назад
0
Стоит курьеру сдохнуть над непроходимым местом (именно рельефом, а не деструктаблами, склон или еще чего ).
А если ему перерождение выдать?
0
22
3 года назад
Отредактирован PROSHELDOTU
0
quq_CCCP, лол тут система вообще не про способность Перерождение здрасте

Мне бы даже в голову не пришло курьеру пихать перерождение
Онли код

А если ему перерождение выдать?
а надо ли вообще юзать стандартные абилки, если заменяется кодом и без геморроя?
Тем более что "перерождение" не героя ваще
0
32
3 года назад
0
NazarPunk, оно не срабатывает. Поэтому если у вас курьер летающий или как то может залезть в непроходимое место (SetUnitPathing(u, false) то следует ловить ивент падения хп до нуля и тпшить юнита в проходимое место, тогда все будет.
0
22
3 года назад
Отредактирован PROSHELDOTU
0
quq_CCCP, мб просто не юзать перерождение для курьера?)
0
32
3 года назад
0
Proshel_Doty, я привел пример что даже оно не пашет, по событию - юниту умерает, он может уже и предметов то не иметь.

Proshel_Doty, хоть бы читал внимательно, от начала до конца
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.