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

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

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

offline
Опыт: 114
Активность:
Где ошибка?
Доброго времени суток форумчане!
Я далеко не профессионал в jass`е, и вот возник вопрос.
Я создал для героя способность, суть ее такая: герой получает шанс нанести круговой удар по окружающим его противникам (мастер клинка, стальной вихрь).
Реализация простая: если этого героя атакуют и у него есть эта способность, то проверяем случайное число, и если выпадает нужное, делаем дамми ему способность веерный бросок и активируем + анимация.
Ниже код:
function Trig_Samuro_Stalnoy_vihr_Actions takes nothing returns nothing
        local unit dummy 
        local unit caster 
        set caster = GetAttackedUnitBJ()
    if ( (  100 - GetRandomInt(1, 100) ) >= 90  ) then
        call SetUnitAnimation( caster, "Attack Walk Stand Spin" )
        call CreateNUnitsAtLoc( 1, 'e000', GetOwningPlayer(caster), GetUnitLoc(caster), 0.00 )
        set dummy = bj_lastCreatedUnit 
        call UnitAddAbilityBJ( 'A02E', dummy )
        call IssueImmediateOrderBJ( dummy, "fanofknives" )
        call RemoveUnit( dummy )
    else
    endif
endfunction
Вопрос вот в чем: при добивании противников герой не получает золота, но урон противнику наноситься. Где у меня косяк?

Отредактировано Van Damm, 18.11.2009 в 15:59.
Старый 18.11.2009, 15:30
BK.Jugg
террорист из КиП
offline
Опыт: 27,066
Активность:
единственное что я могу сказать - бж зло

Код:
call IssueImmediateOrderBJ( dummy, "fanofknives" )
замени на
Код:
call IssueImmediateOrder( dummy, 852526 )


BK.Jugg добавил:
и еще:
Код:
call UnitAddAbilityBJ( 'A02E', dummy )

замени на
Код:
call UnitAddAbility( dummy, 'A02E' )
Старый 18.11.2009, 15:37
Enein
Silenced by ZlaYa1000
offline
Опыт: 43,453
Активность:
call IssueImmediateOrder( dummy, "852526" )
без кавычек
call UnitAddAbility( 'A02E', dummy )
наоборот
лучше не помагать чем помагать так)
Старый 18.11.2009, 15:38
ZregerZ
Мы - лёд!
offline
Опыт: 7,029
Активность:
Замени
call RemoveUnit( dummy )
на
 call UnitApplyTimedLife(dummy, 'BTLF', 2.00 )
Старый 18.11.2009, 15:41
Enein
Silenced by ZlaYa1000
offline
Опыт: 43,453
Активность:
GetAttackedUnitBJ() => GetTriggerUnit()
чтобы получить золото - при инициализации включи награду за киллы - "Игрок - Turn on награда за убийства" (как-то так)
Старый 18.11.2009, 15:42
ZregerZ
Мы - лёд!
offline
Опыт: 7,029
Активность:
call CreateNUnitsAtLoc( 1, 'e000', GetOwningPlayer(caster), GetUnitLoc(caster), 0.00 )
Утечка.
Старый 18.11.2009, 15:42
Enein
Silenced by ZlaYa1000
offline
Опыт: 43,453
Активность:
call UnitApplyTimedLife(dummy, 'BTLF', 2.00 )
и еще 88 секунд юнит висит в памяти. отлично!
set dummy = bj_lastCreatedUnit - лишнее
else - лишнее
Старый 18.11.2009, 15:43
ZregerZ
Мы - лёд!
offline
Опыт: 7,029
Активность:
Enein, тут насколько я понял проблема что при добивании даммиком юнита нет золота, а когда добивает герой есть.
ZregerZ добавил:
 call PolledWait( 0.10 )
 call RemoveUnit( dummy )
А такой вариант?
Старый 18.11.2009, 15:45
Laki

offline
Опыт: 114
Активность:
ZregerZ,
Правильно понял
Старый 18.11.2009, 15:46
Sunn
To feel joy, not be blue
offline
Опыт: 4,975
Активность:
Код:
function Trig_Samuro_Stalnoy_vihr_Actions takes nothing returns nothing
    local unit dummy 
    local unit caster 
    local player owner
    
    if 100 - GetRandomInt (1, 100) >= 90  then
        set caster = GetTriggerUnit ()
        set owner = GetOwningPlayer (caster)
        call SetUnitAnimation (caster, "Attack Walk Stand Spin")
        set dummy = CreateUnit (owner, 'e000', GetUnitX (caster), GetUnitY (caster), 0.) 
        call UnitApplyTimedLife (dummy, 'BTLF', 2.00 )
        call UnitAddAbility (dummy, 'A02E')
        call IssueImmediateOrderById (dummy, '852526')
                
        set dummy = null
        set caster = null
        set owner = null
    endif
endfunction


Цитата:
Сообщение от Enein
и еще 88 секунд юнит висит в памяти. отлично!

Во-первых, почему именно 88? Никакой иронии, я действительно не знаю.
Во-вторых в такой абилке это не смертельно... вот если бы даммиков создавалось и удалялось по 100 штук в секунду в течении минуты тогды было бы о чем говорить.

Цитата:
Сообщение от ZregerZ
А такой вариант?

Врядле) Вейт ведь.

Sunn добавил:
Кстати, Laki, найди ид анимации "Attack Walk Stand Spin" и замени
call SetUnitAnimation (caster, "Attack Walk Stand Spin")
на
call SetUnitAnimationByIndex (caster, 'ид этой анимации')
Старый 18.11.2009, 15:54
ZregerZ
Мы - лёд!
offline
Опыт: 7,029
Активность:
Врядле) Вейт ведь.
Тут вейт чтоб не сразу удалять дамми и всё
Старый 18.11.2009, 15:58
Laki

offline
Опыт: 114
Активность:
ZregerZ, спасибо за совет, но толку нет...
Sunn, попробовал ваш код, благодарю, но проблема осталась
Enein, Игрок - Turn on награда за убийство нейтральных и остальных включил как карта создалась
Старый 18.11.2009, 16:00
ZregerZ
Мы - лёд!
offline
Опыт: 7,029
Активность:
Если подумать, то самым правильным вариантом будет пик юнитов и последующее нанесение им урона.
Старый 18.11.2009, 16:10
Laki

offline
Опыт: 114
Активность:
ZregerZ, согласен, попробую.
Спсасибо всем.
Старый 18.11.2009, 16:11
Закрытая тема

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

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

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

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



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