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

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

Ответ
 
IlluminatI

offline
Опыт: 191
Активность:
Способность "Разговор"
Привет всем! Так как уже давно изучаю программирования, решил, что негоже кодерю делать триггеры на GUI (во всяком случаи я решил так для себя)), и решил начать со статьи освоения Jass. Но в первом "д.з" столкнулся с проблемкой, просьба указать на ошибки в коде. (он компилируется но вот то что должен делать не делает.
Вот задача:

1. Заклинание разговор: когда применяешь его на юнит, на две секунды над ним появляется фраза плавающего текста «Привет».

Код:

Код:
function Trig_Talk_Conditions takes nothing returns boolean
    if ( not (GetSpellAbilityId() =='A000') ) then 
      return false
      endif
    return true
endfunction

function Trig_Talk_Actions takes nothing returns nothing
    local unit u
    local effect e
    set u = GetSpellTargetUnit()
    set udg_unit = u
    set udg_str = "Привет!"
    call CreateTextTagLocBJ (udg_str,GetUnitLoc(udg_unit),0,15,100,0,0,0)
    set udg_tt = GetLastCreatedTextTag()
    call AddSpecialEffectTargetUnitBJ( "overhead", u, "Objects\\RandomObject\\RandomObject.mdl" )  
    set e = GetLastCreatedEffectBJ()
    call PolledWait (3.00)
    call DestroyEffectBJ(e)
    call DestroyTextTag (udg_tt)
endfunction

//===========================================================================
function InitTrig_Talk takes nothing returns nothing
    set gg_trg_Talk = CreateTrigger(  )
    call TriggerAddCondition( gg_trg_Talk, Condition( function Trig_Talk_Conditions ) )
    call TriggerAddAction( gg_trg_Talk, function Trig_Talk_Actions )
endfunction

Отредактировано DFlyer, 13.08.2008 в 22:30.
Старый 13.08.2008, 22:18
J
expert
offline
Опыт: 48,447
Активность:
если не изменяя алгоритма, то лучше делать так:
Код:
function Trig_Talk_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000'
endfunction

function Trig_Talk_Actions takes nothing returns nothing
    local unit    u  = GetSpellTargetUnit()
    local texttag tt = CreateTextTag ()
    local effect  e  = AddSpecialEffectTarget("Objects\\RandomObject\\RandomObject.mdl", u, "overhead")
    call SetTextTagTextBJ(tt, "Привет!", 15)
    call SetTextTagPos(tt, GetUnitX(u), GetUnitY(u), 0)
    call SetTextTagColor(tt, 255, 0, 0, 255)
    call TriggerSleepAction(3)
    call DestroyEffect(e)
    call DestroyTextTag(udg_tt)  
    set u  = null
    set tt = null
    set e  = null
endfunction

function InitTrig_Talk takes nothing returns nothing
    set gg_trg_Talk = CreateTrigger()
    call TriggerAddCondition(gg_trg_Talk, Condition(function Trig_Talk_Conditions))
    call TriggerAddAction(gg_trg_Talk, function Trig_Talk_Actions)
endfunction
Старый 13.08.2008, 23:09
IlluminatI

offline
Опыт: 191
Активность:
Сделал как ты написал, все равно ничего не работает. Карту прилагаю в беземяном триггере мой код, помоги плз :(:
Прикрепленные файлы
Тип файла: w3x 1.w3x (17.3 Кбайт, 15 просмотров )
Старый 14.08.2008, 11:41
zer0ne

offline
Опыт: 11,219
Активность:
Код:
call TriggerRegisterAnyUnitEventBJ( gg_trg_Talk, EVENT_PLAYER_UNIT_SPELL_CAST )


Добавь это после
Код:
set gg_trg_Talk = CreateTrigger()
Старый 14.08.2008, 12:10
IlluminatI

offline
Опыт: 191
Активность:
Спасибо, вот промучался над 2м просба тоже указать на ошибки в коде

Задание написать триггерный аналог Banish, карту на всякий прилагаю тут же.

Код:
function Trig_BanishSpell_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A001'
endfunction

function Trig_BanishSpell_Actions takes nothing returns nothing
    local unit u = GetSpellTargetUnit()
    local unit c = GetSpellAbilityUnit()
    local effect e = AddSpecialEffectTarget ("Abilities\\Spells\\Orc\\Voodoo\\VoodooAuraTarget.mdl", u, "chest")
    call UnitAddTypeBJ( UNIT_TYPE_ETHEREAL, u)
    call SetUnitMoveSpeed (u, GetUnitMoveSpeed(u) - 100)
    call SetPlayerAbilityAvailableBJ( true, 'AHbn', Player(0))
    call IssueTargetOrderBJ( c, "banish", u )
    call SetPlayerAbilityAvailableBJ( false, 'AHbn', Player(0))
    call TriggerSleepAction(10)
    call SetUnitMoveSpeed (u, GetUnitMoveSpeed(u) + 100)
    call DestroyEffect(e)
    call UnitRemoveTypeBJ( UNIT_TYPE_ETHEREAL, u)
    set u = null
    set e = null
endfunction

//===========================================================================
function InitTrig_BanishSpell takes nothing returns nothing
    set gg_trg_BanishSpell = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_BanishSpell, EVENT_PLAYER_UNIT_SPELL_CAST )
    call TriggerAddCondition( gg_trg_BanishSpell, Condition( function Trig_BanishSpell_Conditions ) )
    call TriggerAddAction( gg_trg_BanishSpell, function Trig_BanishSpell_Actions )
endfunction


>> tag bug fixed
Прикрепленные файлы
Тип файла: w3x 2.w3x (18.2 Кбайт, 11 просмотров )

Отредактировано ShadoW DaemoN, 14.08.2008 в 20:26.
Старый 14.08.2008, 20:27
adic3x

offline
Опыт: 108,439
Активность:
омс! когда же вы научитесь пользоваться текс тагами?!


Код:
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// {texttag msg}
//
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

function SPL_TTMsg takes string s, unit u, integer r, integer g, integer b returns nothing
 local texttag tt=CreateTextTag()
 call SetTextTagText(tt, s, .024)
 call SetTextTagPosUnit(tt, u, 32.)
 call SetTextTagColor(tt, r, g, b, 0xff)
 call SetTextTagVelocity(tt, .0, .0355)
 call SetTextTagFadepoint(tt, 1.75)
 call SetTextTagPermanent(tt, false)
 call SetTextTagLifespan(tt, 3.75)
endfunction

//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//
// end {texttag msg}
//
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Старый 15.08.2008, 13:21
IlluminatI

offline
Опыт: 191
Активность:
ADOLF, я только начал Jass изучать, тока 2 триггера полу-рабочих на нем написал, так что сильно не ругай)) А как со спелом ванишь? ни кто не поможет мне?(
Старый 15.08.2008, 14:57
adic3x

offline
Опыт: 108,439
Активность:
тут вообще не совсем о тебе речь)
Старый 15.08.2008, 16:19
IlluminatI

offline
Опыт: 191
Активность:
Да я понял) Я призываю тебя помочь разобраться мне с моим кодом, т.к не работает ничего, и указать на ошибки (если не лень) ((
Старый 15.08.2008, 18:18
adic3x

offline
Опыт: 108,439
Активность:
вообще по хорошему не стоит использовать ПолледВейт... а про тамймеры рассказывать слишком долго в одной теме) на сайте есть статья создание стом спела, там примерно описанно как юзать таймер)

http://xgm.guru/articles.php?section=wc3&name=rates_on_spellmaking
Старый 16.08.2008, 17:41
Ответ

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

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

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

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



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