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

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

Закрытая тема
 
Cosonic5
Моймозггоритогнем
offline
Опыт: 13,584
Активность:
в этом коде ошибка
» Code
function Trig_Dammi_death_Conditions takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetDyingUnit()) == 'h00M' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Dammi_death_Func002C takes nothing returns boolean
    if ( not ( GetDyingUnit() == udg_Dammi_Mobs_Detected[1] ) ) then
        return false
    endif
    return true
endfunction

function Trig_Dammi_death_Func003C takes nothing returns boolean
    if ( not ( GetDyingUnit() == udg_Dammi_Mobs_Detected[2] ) ) then
        return false
    endif
    return true
endfunction

function Trig_Dammi_death_Func004C takes nothing returns boolean
    if ( not ( GetDyingUnit() == udg_Dammi_Mobs_Detected[3] ) ) then
        return false
    endif
    return true
endfunction

function Trig_Dammi_death_Func005C takes nothing returns boolean
    if ( not ( GetDyingUnit() == udg_Dammi_Mobs_Detected[4] ) ) then
        return false
    endif
    return true
endfunction

function Trig_Dammi_death_Func006C takes nothing returns boolean
    if ( not ( GetDyingUnit() == udg_Dammi_Mobs_Detected[5] ) ) then
        return false
    endif
    return true
endfunction

function Trig_Dammi_death_Func007C takes nothing returns boolean
    if ( not ( GetDyingUnit() == udg_Dammi_Mobs_Detected[6] ) ) then
        return false
    endif
    return true
endfunction

function Trig_Dammi_death_Func008Func005001 takes nothing returns boolean
    return ( IsUnitGroupDeadBJ(GetUnitsOfPlayerAll(Player(11))) == true )
endfunction

function Trig_Dammi_death_Func008Func010Func002C takes nothing returns boolean
    if ( ( udg_Nomer_samoi_volni == 3 ) ) then
        return true
    endif
    if ( ( udg_Nomer_samoi_volni == 7 ) ) then
        return true
    endif
    return false
endfunction

function Trig_Dammi_death_Func008Func010C takes nothing returns boolean
    if ( not Trig_Dammi_death_Func008Func010Func002C() ) then
        return false
    endif
    return true
endfunction

function Trig_Dammi_death_Func008C takes nothing returns boolean
    if ( not ( GetDyingUnit() == udg_Dammi_Mobs_Detected[7] ) ) then
        return false
    endif
    return true
endfunction

function Trig_Dammi_death_Actions takes nothing returns nothing
    if ( Trig_Dammi_death_Func002C() ) then
        set udg_number_of_otriad_mobs = ( udg_number_of_otriad_mobs + 1 )
        set bj_lastCreatedUnit = CreateUnit( GetOwningPlayer(udg_Dammi_Mobs_Detected[1]), 'h00M', GetUnitX(udg_Dammi_Mobs_Detected[1]GetUnitY(udg_Dammi_Mobs_Detected[1]), 1 )
        set udg_Dammi_Mobs_Detected[2] = GetLastCreatedUnit()
        set udg_Dammi_Mobs_Detected[1] = null
        call UnitApplyTimedLifeBJ( 32.00, 'BTLF', udg_Dammi_Mobs_Detected[2] )
    else
    endif
    if ( Trig_Dammi_death_Func003C() ) then
        set udg_number_of_otriad_mobs = ( udg_number_of_otriad_mobs + 1 )
        set bj_lastCreatedUnit = CreateUnit( GetOwningPlayer(udg_Dammi_Mobs_Detected[2]), 'h00M', GetUnitX(udg_Dammi_Mobs_Detected[2]GetUnitY(udg_Dammi_Mobs_Detected[2]), 1 )
        set udg_Dammi_Mobs_Detected[3] = GetLastCreatedUnit()
        set udg_Dammi_Mobs_Detected[2] = null
        call UnitApplyTimedLifeBJ( 8.00, 'BTLF', udg_Dammi_Mobs_Detected[3] )
    else
    endif
    if ( Trig_Dammi_death_Func004C() ) then
        set udg_number_of_otriad_mobs = ( udg_number_of_otriad_mobs - 1 )
        set bj_lastCreatedUnit = CreateUnit( GetOwningPlayer(udg_Dammi_Mobs_Detected[3]), 'h00M', GetUnitX(udg_Dammi_Mobs_Detected[3]GetUnitY(udg_Dammi_Mobs_Detected[3]), 1 )
        set udg_Dammi_Mobs_Detected[4] = GetLastCreatedUnit()
        set udg_Dammi_Mobs_Detected[3] = null
        call UnitApplyTimedLifeBJ( 48.00, 'BTLF', udg_Dammi_Mobs_Detected[4] )
    else
    endif
    if ( Trig_Dammi_death_Func005C() ) then
        set udg_number_of_otriad_mobs = ( udg_number_of_otriad_mobs + 1 )
        set bj_lastCreatedUnit = CreateUnit( GetOwningPlayer(udg_Dammi_Mobs_Detected[4]), 'h00M', GetUnitX(udg_Dammi_Mobs_Detected[4]GetUnitY(udg_Dammi_Mobs_Detected[4]), 1 )
        set udg_Dammi_Mobs_Detected[5] = GetLastCreatedUnit()
        set udg_Dammi_Mobs_Detected[4] = null
        call UnitApplyTimedLifeBJ( 8.00, 'BTLF', udg_Dammi_Mobs_Detected[5] )
    else
    endif
    if ( Trig_Dammi_death_Func006C() ) then
        set udg_Dammi_Mobs_Detected[5] = null
        set udg_number_of_otriad_mobs = ( udg_number_of_otriad_mobs - 1 )
        set bj_lastCreatedUnit = CreateUnit( GetOwningPlayer(udg_Dammi_Mobs_Detected[5]), 'h00M', GetUnitX(udg_Dammi_Mobs_Detected[5]GetUnitY(udg_Dammi_Mobs_Detected[5]), 1 )
        set udg_Dammi_Mobs_Detected[6] = GetLastCreatedUnit()
        set udg_Dammi_Mobs_Detected[5] = null
        call UnitApplyTimedLifeBJ( 48.00, 'BTLF', udg_Dammi_Mobs_Detected[6] )
    else
    endif
    if ( Trig_Dammi_death_Func007C() ) then
        set udg_number_of_otriad_mobs = ( udg_number_of_otriad_mobs + 2 )
        set bj_lastCreatedUnit = CreateUnit( GetOwningPlayer(udg_Dammi_Mobs_Detected[6]), 'h00M', GetUnitX(udg_Dammi_Mobs_Detected[6]GetUnitY(udg_Dammi_Mobs_Detected[6]), 1 )
        set udg_Dammi_Mobs_Detected[7] = GetLastCreatedUnit()
        set udg_Dammi_Mobs_Detected[6] = null
        call UnitApplyTimedLifeBJ( 8.00, 'BTLF', udg_Dammi_Mobs_Detected[7] )
    else
    endif
    if ( Trig_Dammi_death_Func008C() ) then
        set udg_Dammi_Mobs_Detected[7] = null
        call DisableTrigger( gg_trg_gomobs )
        loop
            exitwhen ( Trig_Dammi_death_Func008Func005001() )
            call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 1.00))
        endloop
        call DisableTrigger( gg_trg_boss_kill )
        set udg_Z_IGROK = 0
        set udg_number_of_otriad_mobs = 0
        set udg_Nomer_samoi_volni = ( udg_Nomer_samoi_volni + 1 )
        if ( Trig_Dammi_death_Func008Func010C() ) then
            call TriggerExecute( gg_trg_Set_Duel )
        else
        endif
        call StartTimerBJ( udg_Timer__nomera_Volni, false, 30.00 )
        call CreateTimerDialogBJ( udg_Timer__nomera_Volni, ( "Волна " + I2S(( udg_Nomer_samoi_volni + 1 )) ) )
        call TimerDialogDisplayBJ( true, GetLastCreatedTimerDialogBJ() )
    endif
endfunction

//===========================================================================
function InitTrig_Dammi_death takes nothing returns nothing
    set gg_trg_Dammi_death = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Dammi_death, EVENT_PLAYER_UNIT_DEATH )
    call TriggerAddCondition( gg_trg_Dammi_death, Condition( function Trig_Dammi_death_Conditions ) )
    call TriggerAddAction( gg_trg_Dammi_death, function Trig_Dammi_death_Actions )
endfunction
Сообственно это системка где выполняются действия когда один из дамиков погибает(
А именно его жизни истекают. Затем устанавливается другой и так до 7 штук.
Старый 15.04.2012, 19:52
Cosonic5
Моймозггоритогнем
offline
Опыт: 13,584
Активность:
inadequate_, непонял тебя=)) "Порадовал"
сори что не оптимизированы условия как только начал их привать до ретурна вышли ошибки сам не понимаю из за чего(
Старый 15.04.2012, 19:58
DragonSpirit
у - уходи
offline
Опыт: 22,625
Активность:
изначально код на гуи, а вы выложили его конвертированным в текст насколько я понял?
лучше будет приложить карту с проблемным триггером
Старый 15.04.2012, 20:22
alpha

offline
Опыт: 7,387
Активность:
А подробнее об ошибке? Выглядит как задание какое-то пфф
Старый 15.04.2012, 20:43
ScorpioT1000
Работаем
online
Опыт: отключен
Есть такое понятие как "база данных" - сделай массивы различных данных, где каждая ячейка - для каждого спелла, пронумеруй его, а остальные действия делаются циклом или для конкретного элемента массива. Ты же копируешь весь код для каждого случая.
Старый 15.04.2012, 20:47
Hate
конь вакуумный
offline
Опыт: 43,124
Активность:
макросы? циклы? не, не слышал...
компилятор не ругался?
хоспаде, лучше выложи не конвертированный триггер, проще будет оО

Отредактировано Hatsume_Hate, 15.04.2012 в 21:21.
Старый 15.04.2012, 20:57
Sladkoegka
Забыл что хотел...
offline
Опыт: 7,437
Активность:
Hatsume_Hate,
хоспаде, лучше выложи не конвертированный триггер, проще будет оО
Извините пожалуйста за 3 вещи:
1)что выкладываем ГУИ триггер в разделе Jass.
2)Что триггер этот еще не оптимизирован,но утечки известны.
3)Что тупые названия переменных,и
макросы? циклы? не, не слышал...
Слышал где то
Вот скрины смотрите,триггер отвечает за создание юнитов,и их типы,т.к. с вэитами это делать-бред,а с таймерами слишком много мороки,сделали через вот таких Даммиков.
лучше будет приложить карту с проблемным триггером
Извините уж
А подробнее об ошибке? Выглядит как задание какое-то пфф
Не совсем,но отчасти ты прав.
P.S. скрины первый раз заливаю,хз норм будет или нет
Миниатюры
Кликните на картинку для увеличения
Название:  Scr00.jpg
Просмотров: 14
Размер:  260.3 Кбайт  Кликните на картинку для увеличения
Название:  Scr02.jpg
Просмотров: 10
Размер:  273.7 Кбайт  

Отредактировано Sladkoegka, 15.04.2012 в 21:53.
Старый 15.04.2012, 21:47
Sladkoegka
Забыл что хотел...
offline
Опыт: 7,437
Активность:
Hatsume_Hate, у тебя не видит???оО,обнови страницу.Теперь они в правильном порядке))
Ах да кстати,Косоник выложил чуть чуть другой код,на основе этого,он конвертировал,и начал химичить)))Вот и получилось.
Старый 15.04.2012, 21:54
Hate
конь вакуумный
offline
Опыт: 43,124
Активность:
а разве таймер истечения убивает единицу?
имхо, для самоуничтожения лучше ставить регенерацию -1.00 и хп задавать в стольких секундах сколько потребуется
да и вообще столько гуишных ифов это не есть хорошо
Старый 15.04.2012, 22:00
Sladkoegka
Забыл что хотел...
offline
Опыт: 7,437
Активность:
Hatsume_Hate,
а разве таймер истечения убивает единицу?имхо, для самоуничтожения лучше ставить регенерацию -1.00 и хп задавать в стольких секундах сколько потребуется
Таймер истечения убивает заданную боевую единицу через заданное время-это точно
без вариантов!!))
да и вообще столько гуишных ифов это не есть хорошо
Полностью согласен,но пока незнаю как проще и менее утченее обойти.
Кстати есть вариант все сделать не "лестницей",а"столбиком".

Отредактировано Sladkoegka, 15.04.2012 в 22:10.
Старый 15.04.2012, 22:04
Hate
конь вакуумный
offline
Опыт: 43,124
Активность:
Sladkoegka:
Hatsume_Hate,
а разве таймер истечения убивает единицу?имхо, для самоуничтожения лучше ставить регенерацию -1.00 и хп задавать в стольких секундах сколько потребуется
Таймер истечения убивает заданную боевую единицу через заданное время-это точно
без вариантов!!))
да и вообще столько гуишных ифов это не есть хорошо
Полностью согласен,но пока незнаю как проще и менее утченее обойти.
if then
endif
это было сложно да?)....
Старый 15.04.2012, 22:09
Sladkoegka
Забыл что хотел...
offline
Опыт: 7,437
Активность:
if then
endif
это было сложно да?)....
Ты наверное меня не понял..И кстати вот это типа не ифы?(см.выше)Или "if then" круче чем "Если Тогда"???
Старый 15.04.2012, 22:11
Hate
конь вакуумный
offline
Опыт: 43,124
Активность:
Sladkoegka:
if then
endif
это было сложно да?)....
Ты наверное меня не понял..И кстати вот это типа не ифы?(см.выше)
для этих ифов не создается отдельная функция как для гуишного ифа
смотри сравнение
гуи
function Trig_Dammi_death_Conditions takes nothing returns boolean
    if ( not ( GetUnitTypeId(GetDyingUnit()) == 'h00M' ) ) then
        return false
    endif
    return true
endfunction
нормальный адекватный жасс
if GetUnitTypeId(GetDyingUnit()) == 'h00M' then
...
endif
Старый 15.04.2012, 22:13
Sladkoegka
Забыл что хотел...
offline
Опыт: 7,437
Активность:
Извини,это уже не ко мне,я не шарю((,пусть Косоник завтра придет и расскажет как он хотел бы сделать)
Sladkoegka добавил:
function Trig_Dammi_death_Conditions takes nothing returns boolean
if ( not ( GetUnitTypeId(GetDyingUnit()) == 'h00M' ) ) then
return false
endif
return true
endfunction
нормальный адекватный жасс
if GetUnitTypeId(GetDyingUnit()) == 'h00M' then
...
endif

2)Что триггер этот еще не оптимизирован,но утечки известны.
Старый 15.04.2012, 22:18
Hate
конь вакуумный
offline
Опыт: 43,124
Активность:
вообще в данной ситуации логично сделать отладочные сообщения и посмотреть на каком моменте подводный камень
Старый 15.04.2012, 22:18
Cosonic5
Моймозггоритогнем
offline
Опыт: 13,584
Активность:
Hatsume_Hate, да не в этом суть, суть в том что надо условия более менее собрать, чтоб потом легче было.
Cosonic5 добавил:
set bj_lastCreatedUnit = CreateUnit( GetOwningPlayer(udg_Dammi_Mobs_Detected[1]), 'h00M', GetUnitX(udg_Dammi_Mobs_Detected[1], GetUnitY(udg_Dammi_Mobs_Detected[1], 1 )
Ребят помогите пишет неверное колличество аргументов(
Старый 16.04.2012, 12:43
Klop
Папа римский
offline
Опыт: 13,006
Активность:
set bj_lastCreatedUnit = CreateUnit( GetOwningPlayer(udg_Dammi_Mobs_Detected[1]), 'h00M', GetUnitX(udg_Dammi_Mobs_Detected[1]), GetUnitY(udg_Dammi_Mobs_Detected[1]), 1 )
Скобки не закрыты на функциях GetUnitY и GetUnitX
Старый 16.04.2012, 12:48
Cosonic5
Моймозггоритогнем
offline
Опыт: 13,584
Активность:
Klop, все все нашел спс.
Старый 16.04.2012, 12:49
Закрытая тема

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

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

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

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



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