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

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

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

offline
Опыт: 105
Активность:
Последовательное возростание юнита на jass
Мне нужно чтобы с каждым левелом юнит рос на 20%. Мне ткнули, что это можно осуществить с помощью способности "Кровожадность". Я сделал 3 уровня способности "кровожадность":
1 уровень "A003" 20%
2 уровень "А004" 40%
3 уровень "A005" 60%

Реализация такого на тригерах довольно трудоемко, учитывая, что будет больше 3 лвл. Я решил упростить задачу с помощью jass, который я очень плохо знаю:

Появилась ошибка "Отсуцтвует корректный список аргументов"

Код:
function Trig_rost_Actions takes nothing returns nothing
    call UnitAddAbilityBJ( 'A00udg_n', gg_unit_hfoo_0002 )
    call IssueTargetOrderBJ( gg_unit_hfoo_0002, "bloodlust", GetTriggerUnit() )
    call UnitRemoveAbilityBJ( 'A00udg_n', GetTriggerUnit() )
    // Переменная n (по умолчанию) = 3 
    set udg_n = ( udg_n + 1 )
endfunction

//===========================================================================
function InitTrig_rost takes nothing returns nothing
    set gg_trg_rost = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_rost, EVENT_PLAYER_HERO_LEVEL )
    call TriggerAddAction( gg_trg_rost, function Trig_rost_Actions )
endfunction


Я надеюсь вы поймете, что я хотел тут сделать. Возникает вопрос: как правильно это сделать? :)

Отредактировано serg_09, 24.07.2009 в 17:39.
Старый 24.07.2009, 17:17
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
Цитата:
Код:
call UnitAddAbilityBJ( 'A00udg_n', gg_unit_hfoo_0002 )
    call IssueTargetOrderBJ( gg_unit_hfoo_0002, "bloodlust", GetTriggerUnit() )
    call UnitRemoveAbilityBJ( 'A00udg_n', GetTriggerUnit() )

что это за чудо с равкодами XD
Код:
function Trig_rost_Actions takes nothing returns nothing
    call UnitAddAbility(GetTriggerUnit(), 'A000'+udg_n)
    call IssueTargetOrder( GetTriggerUnit(),"bloodlust" ,  GetTriggerUnit())
    call UnitRemoveAbility( GetTriggerUnit(), 'A000'+udg_n )
    set udg_n = ( udg_n + 1 )
endfunction

Отредактировано ELDAR, 24.07.2009 в 20:14.
Старый 24.07.2009, 17:55
DragonSpirit
у - уходи
offline
Опыт: 22,625
Активность:
Цитата:
call IssueTargetOrder( GetTriggerUnit(), GetTriggerUnit(),"bloodlust" )

имхо лучше приказ сразу числом отдавать(852101)
» Так

Код:
call IssueTargetOrderById(GetTriggerUnit(),852101,GetTriggerUnit())
Старый 24.07.2009, 18:15
serg_09

offline
Опыт: 105
Активность:
ELDAR Ошибка:Неверный тип аргумента 'string'
Выделяет строку:
Код:
call UnitRemoveAbility(GetTriggerUnit(), 'A003'+udg_n)


DragonSpirit Сменил строку. Функция вообще не сработала

serg_09 добавил:
Чтото я совсем запутался. Можно вас попросить написать рабочую функцию? Я думаю мне в ней разобраться будет полегче

Отредактировано serg_09, 24.07.2009 в 18:26.
Старый 24.07.2009, 18:37
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
Код:
function Trig_rost_Actions takes nothing returns nothing
    call UnitAddAbility(GetTriggerUnit(), 'A000'+udg_n)
    call IssueTargetOrderById(GetTriggerUnit(),852101,GetTriggerUnit())
    call UnitRemoveAbility( GetTriggerUnit(), 'A000'+udg_n )
    set udg_n = ( udg_n + 1 )
endfunction

please
Старый 24.07.2009, 20:13
DKbru

offline
Опыт: 1,407
Активность:
ололо а нельзя сделать данную задумку с командой SetUnitScale?
Код:
function Trig_rost_Actions takes nothing returns nothing
 set udg_n = udg_n *1.2  
// по умолчанию udg_n=1
    call SetUnitScale(GetTriggerUnit(),udg_n,udg_n,udg_n)
endfunction

//===========================================================================
function InitTrig_rost takes nothing returns nothing
    set gg_trg_rost = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_rost, EVENT_PLAYER_HERO_LEVEL )
    call TriggerAddAction( gg_trg_rost, function Trig_rost_Actions )
endfunction

Отредактировано DKbru, 24.07.2009 в 21:26.
Старый 24.07.2009, 21:19
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
А так, так еще проще.
» code

Код:
function Trig_rost_Actions takes nothing returns nothing
    local unit u=GetTriggerUnit()
    local real i=1.00+0.2*GetHeroLevel(u)
    call SetUnitScale(u,i,i,i)
    set u=null
endfunction

//===========================================================================
function InitTrig_rost takes nothing returns nothing
    set gg_trg_rost = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_rost, EVENT_PLAYER_HERO_LEVEL )
    call TriggerAddAction( gg_trg_rost, function Trig_rost_Actions )
endfunction



Hellfim добавил:
DKbru, у тебя ошибка с вычислением размера =)
Старый 24.07.2009, 21:32
DKbru

offline
Опыт: 1,407
Активность:
Hellfim я подумал что ему надо на 20 % от ТЕКУЩЕГО размера юнита
Старый 24.07.2009, 21:37
ELDAR
НИИ 4А-ВО кафедра SPELLS
offline
Опыт: 8,394
Активность:
при этом увеличится круг выбора, а вот кровожадность само то
Старый 24.07.2009, 21:37
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
ELDAR, нет, круг выбора не увеличивается.
Старый 24.07.2009, 22:18
serg_09

offline
Опыт: 105
Активность:
Спасибо.. Вроде разобрался...
[+] 5 пунктов от Hellfim: Изображение больше 100кб

Отредактировано serg_09, 25.07.2009 в 06:44.
Старый 25.07.2009, 06:16
Закрытая тема

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

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

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

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



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