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

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

Ответ
 
Dead Jay
Братег Дракончег
offline
Опыт: 8,425
Активность:
Помогите со спеллом новичку в Jass
Не могу понять чё такое,спелл не работает
Код:
function Trig_Lay_on_Hands_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A009' ) ) then
        return false
    endif
    return true
endfunction

function Trig_Lay_on_Hands_Actions takes nothing returns nothing
    local unit un
    set un = (GetSpellTargetUnit())
    call SetUnitLifeBJ( un, ( GetUnitStateSwap(UNIT_STATE_LIFE, un) + ( I2R(GetUnitAbilityLevelSwapped('A009', un)) * I2R(GetHeroStatBJ(bj_HEROSTAT_INT, un, true)) ) ) )
    set un = null
endfunction

//===========================================================================
function InitTrig_Lay_on_Hands takes nothing returns nothing
    set gg_trg_Lay_on_Hands = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Lay_on_Hands, EVENT_PLAYER_UNIT_SPELL_FINISH )
    call TriggerAddCondition( gg_trg_Lay_on_Hands, Condition( function Trig_Lay_on_Hands_Conditions ) )
    call TriggerAddAction( gg_trg_Lay_on_Hands, function Trig_Lay_on_Hands_Actions )
endfunction
Старый 19.04.2006, 19:48
exAres
I love magic :)
offline
Опыт: 7,788
Активность:
Dead Jay
Цитата:
function Trig_Lay_on_Hands_Conditions takes nothing returns boolean
return GetSpellAbilityId()=='A009'
endfunction

function Trig_Lay_on_Hands_Actions takes nothing returns nothing
local unit u=GetTriggerUnit()
local unit un=GetSpellTargetUnit()
call SetUnitState(un,UNIT_STATE_LIFE,RMaxBJ(0,(GetUnitState(u,UNIT_STATE_LIFE)+I2R((G etUnitAbilityLevel(u,'A009')*GetHeroInt(un,true))))))
set un=null
endfunction


function InitTrig_Lay_on_Hands takes nothing returns nothing
set gg_trg_Lay_on_Hands=CreateTrigger()
call TriggerRegisterAnyUnitEventBJ(gg_trg_Lay_on_Hands, EVENT_PLAYER_UNIT_SPELL_FINISH)
call TriggerAddCondition(gg_trg_Lay_on_Hands, Condition( function Trig_Lay_on_Hands_Conditions))
call TriggerAddAction(gg_trg_Lay_on_Hands, function Trig_Lay_on_Hands_Actions)
endfunction

может я неправильно понял но зачем ты считаешь интелект и уровень магии того на кого ты кастишь. Я написал так что ты считаешь интелект и уровень навыка того кто кастит, если неправильно то скажешь как правильно.
Старый 19.04.2006, 22:02
Dead Jay
Братег Дракончег
offline
Опыт: 8,425
Активность:
Спасибо,а то я совсем запутался!
Старый 20.04.2006, 10:42
DioD

offline
Опыт: 45,134
Активность:
Если вынимаете тригер, указываёте карту источник, а лучше прикрепляйте её к постом.
Старый 20.04.2006, 15:51
Dead Jay
Братег Дракончег
offline
Опыт: 8,425
Активность:
Это была моя тестовая карта где я разные фичи реализовывал, так что она не имеет особого интереса.
Старый 20.04.2006, 17:06
DioD

offline
Опыт: 45,134
Активность:
Сам подумай, как ты мог написать тригер сам, если не знаешь как он работает?
И вообще это LOL3 напоминает сильно.
Старый 20.04.2006, 17:40
Dead Jay
Братег Дракончег
offline
Опыт: 8,425
Активность:
DioD Я тогда уставший,был не заметил ошибки,щас с нуля триггер переписал и заработало!Вариант MrSmiLe не работает.
Старый 22.04.2006, 00:37
Toadcop

offline
Опыт: 54,313
Активность:
Dead Jay тебе надо нет на год отрубить :) такие вещи надо САМОМУ решать !!! а так будешь Кул-Хацкером :)
Старый 22.04.2006, 17:13
Dead Jay
Братег Дракончег
offline
Опыт: 8,425
Активность:
Toadcop Я же сказал я заново триггер переписал и все заработало! Я просто не заметил ошибки.
Старый 23.04.2006, 19:33
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
Dead Jay, пиппец, какие неуклюжие построения с иф/зэн/элсами у тебя... Если близзарды напортачили, выводя любое сравнение на бул, то тебе то зачем этот хлам весь?
Цитата:
function Trig_Lay_on_Hands_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A009' ) ) then
return false
endif
return true
endfunction
Вместо этого не проще ли написать
Цитата:
function Trig_Lay_on_Hands_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A009'
endfunction


FellGuard добавил:
Нетрат, блин, приучил к оптимизации =). А вообще верно. Приличная экономия место и производимых действий.
Старый 25.04.2006, 17:54
DioD

offline
Опыт: 45,134
Активность:
Такие конструкции в очень редких случаях полезны, а вообще это индикатор ГУИ тригеров.
Старый 25.04.2006, 18:04
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
DioD, не знал о существовании ГУИ триггеров =). Если хочеш можеш мне объяснить, что это за зверь такой, или адресок дать.. То немногое что знаю вот написал.
Вообще, если бы спелл не был представлен триггером, идеалом был бы
if () then
elseif
else
endif
Старый 25.04.2006, 18:13
NETRAT

offline
Опыт: 83,712
Активность:
FellGuard создай триггер и в кондишн помести условие (AbilityBeingCast) equal to "Name", затем конвертируй триггер в текст и получишь ту неоптимальную конструкцию

Дота, например, кишит этим уродством... Отсюда и плевки в сторону аффторов
Старый 25.04.2006, 23:38
Dead Jay
Братег Дракончег
offline
Опыт: 8,425
Активность:
FellGuard Я в If/Then/Else плохо разбираюсь, хотя в какой-то статье по Жассу читал про это.
Старый 27.04.2006, 07:15
FellGuard
Losyash
offline
Опыт: 39,547
Активность:
Dead Jay, особо тут не надо ни в чем разбираться, надо просто иметь голову с моском на плечах и хотеть понять... Перечитай статью с expressions, там вроде все понятно, главное понять, зачем это все нужно.
Вообще-то, при обилии ифов в игре ГУИ сильно кушают память...

NETRAT, даже оптимизированный вариант с проверкой, допустим, на соответствие подобранного предмета первый раз очень сильно стопорит игру...
Как этого избежать? В инвентаре на 100 (или уже вроде на 90?) этого глюка я там не видел, а в конструкции не разобрался - глазки фкучу съехализь..
Вот пример:

Отредактировано FellGuard, 27.04.2006 в 10:13.
Старый 27.04.2006, 10:05
Ответ

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

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

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

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



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