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

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

Ответ
 
timon1994
только учусь
offline
Опыт: 952
Активность:
Ошибка в коде
Код:
function Trig_go_Actions takes nothing returns nothing
local unit u=null
set u=GetTriggerUnit()
local location l=null
set l=GetUnitLoc(u)
local effect e
set e = AddSpecialEffectLoc("Abilities\\Spells\\Other\\TalkToMe\\TalkToMe.mdl", l)
endfunction
function Trig_go_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000'
endfunction
//===========================================================================
function InitTrig_go takes nothing returns nothing
    set gg_trg_go = CreateTrigger()
    call TriggerAddAction( gg_trg_go, function Trig_go_Actions )
endfunction

UMSWE выдает 3 ошибки:
Local declaration after first statement в строке set l=GetUnitLoc(u)
Local declaration after first statement в строке set e = AddSpecialEffectLoc("Abilities\\Spells\\Other\\TalkToMe\\TalkToMe.mdl", l)
Undeclared variable gg_trg_go в строке set gg_trg_go = CreateTrigger()
помогите пожалуйста, где что подправить?
Прикрепленные файлы
Тип файла: w3x chess.w3x (25.1 Кбайт, 9 просмотров )

Отредактировано timon1994, 17.03.2009 в 22:09.
Старый 17.03.2009, 21:03
adic3x

offline
Опыт: 108,439
Активность:
нельзя обьвлять локалки после других инструкций, т.е. все локалки дб обьявленны в начале фции
Старый 17.03.2009, 21:27
timon1994
только учусь
offline
Опыт: 952
Активность:
спасибо, а как быть с 3-ей?
Старый 17.03.2009, 21:31
mamap
online
offline
Опыт: 2,504
Активность:
объявление локалок в саааамое начало

mamap добавил:
3-я - создай тригер "go" конвертируй в текст и помести сиё туда (только удали весь текст из триггера сначало)
Старый 17.03.2009, 21:36
ScorpioT1000
Работаем
online
Опыт: отключен
Undeclared variable gg_trg_go в строке set gg_trg_go = CreateT
ну значит он у тебя не так назван как тут
Старый 17.03.2009, 21:51
mamap
online
offline
Опыт: 2,504
Активность:
1ый пост обнови и дай карту, гляну

mamap добавил:
все норм, без ошибок (проверил в стандартном WE), но у тя тут ивента нету "call TriggerRegister"
Старый 17.03.2009, 22:18
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
timon1994, твой триггер должен называться "go" и никак больше. Не слушай mamap'a, я так понял, что у тебя событие MapInitialization.
Старый 17.03.2009, 23:40
timon1994
только учусь
offline
Опыт: 952
Активность:
Hellfim, он называется "go" и все равно не работает.
Старый 18.03.2009, 19:26
DragonSpirit
у - уходи
offline
Опыт: 22,625
Активность:
timon1994,вот код,который должен быть
Код:
function Trig_go_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000'
endfunction

function Trig_go_Actions takes nothing returns nothing
local unit u
local location l
local effect e
set l = GetUnitLoc(u)
set u = GetTriggerUnit()
set e = AddSpecialEffectLoc("Abilities\\Spells\\Other\\TalkToMe\\TalkToMe.mdl", l)
endfunction

//===========================================================================
function InitTrig_go takes nothing returns nothing
    set gg_trg_go = CreateTrigger(  )
    call TriggerAddCondition(gg_trg_go, Condition(function Trig_go_Conditions))
    call TriggerAddAction( gg_trg_go, function Trig_go_Actions )
endfunction


т.к условия должны быть выше действий
У меня ошибок не выдало

Отредактировано Spirit93, 18.03.2009 в 20:07.
Старый 18.03.2009, 20:01
timon1994
только учусь
offline
Опыт: 952
Активность:
Spirit93, все равно нет.
скажите еще тогда уж как пикнуть всех юнитов с определенным бафом?
Старый 18.03.2009, 20:05
Hanabishi
COOL STATUS
offline
Опыт: отключен
сделай так:
Код:
function Trig_go_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000'
endfunction

function Trig_go_Actions takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local location l = GetUnitLoc(u)
    local effect e = AddSpecialEffectLoc("Abilities\\Spells\\Other\\TalkToMe\\TalkToMe.mdl", l)
endfunction

//===========================================================================
function InitTrig_go takes nothing returns nothing
    set gg_trg_go = CreateTrigger()
    call TriggerAddAction( gg_trg_go, function Trig_go_Actions )
endfunction
Старый 18.03.2009, 20:13
timon1994
только учусь
offline
Опыт: 952
Активность:
неа=( все та же ошибка в строке
Код:
set gg_trg_go = CreateTrigger()


timon1994 добавил:
может у меня c UMSWE проблемы?
Старый 18.03.2009, 20:17
DragonSpirit
у - уходи
offline
Опыт: 22,625
Активность:
timon1994,проверь,у меня не выдаёт
Прикрепленные файлы
Тип файла: w3x chess.w3x (25.2 Кбайт, 6 просмотров )
Старый 18.03.2009, 20:18
timon1994
только учусь
offline
Опыт: 952
Активность:
DEAD URL
=(

timon1994 добавил:
ну ладно, более-менее разобрался, а где ошибка в
Код:
function IceShackleMain takes nothing returns nothing
    local integer sec=0
    local unit tar=GetSpellTargetUnit()
    local unit caster=GetTriggerUnit()
    local integer lvl=GetUnitAbilityLevel(caster, 'A000')
    local real mult=0.03
     loop
    exitwhen sec>=5
    UnitDamageTarget(caster, tar, DistanceBetweenPoints(GetUnitLoc(caster), GetUnitLoc(tar))*mult*lvl, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)
    endloop
endfunction

function IceShackleCheck takes nothing returns boolean
return true
endfunction

function IceShackleInit takes nothing returns nothing
    local trigger ltt=CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(ltt,EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(ltt,Condition(function IceShackleCheck))
    call TriggerAddAction(ltt,function IceShackleMain)
endfunction


function InitTrig_IceShackle takes nothing returns nothing
endfunction

в строке
Код:
UnitDamageTarget(caster, tar, DistanceBetweenPoints(GetUnitLoc(caster), GetUnitLoc(tar))*mult*lvl, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)

???
Старый 18.03.2009, 21:10
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
timon1994
1) Ты забыл написать call перед UnitDamageTarget(caster, tar, DistanceBetweenPoints(GetUnitLoc(caster), GetUnitLoc(tar))*mult*lvl, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)
2) Ты забыл увеличивать переменную sec в цикле.
Старый 18.03.2009, 21:27
Hellfim
Новичок
offline
Опыт: 79,707
Активность:
timon1994, зачем? Не стоит извращаться...
Старый 18.03.2009, 21:32
timon1994
только учусь
offline
Опыт: 952
Активность:
Hellfim, спасибо=)
Очень тяжело писать на Jass после Action Script

timon1994 добавил:
Цитата:
Не стоит извращаться...

это насчет чего?
Старый 18.03.2009, 21:38
mamap
online
offline
Опыт: 2,504
Активность:
timon1994 норм робит триггер, если через [Sintax. Check] проверяешь, то ошибка будет вылазить в любом случае, если при сохранении ничего не вылезает или запускается мапа норм, то все робит
Старый 18.03.2009, 21:50
ScorpioT1000
Работаем
online
Опыт: отключен
Цитата:
и как я число 0.03 запишу интегером?=)

очевидно юзать реал?
Старый 18.03.2009, 21:54
timon1994
только учусь
offline
Опыт: 952
Активность:
Цитата:
очевидно юзать реал?

понятно уж, просто спирит предложил интегером (не заметил наверное какое там число)
еще вопрос:
Код:
function IceShackleMain takes nothing returns nothing
    local integer sec=0
    local unit tar=GetSpellTargetUnit()
    local unit caster=GetTriggerUnit()
    local integer lvl=GetUnitAbilityLevel(caster, 'A000')
    local real mult=0.03
    loop
    exitwhen sec>=5
        call UnitDamageTarget(caster, tar, DistanceBetweenPoints(GetUnitLoc(caster), GetUnitLoc(tar))*mult*lvl, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_MAGIC, null)
       call DisplayTimedTextToPlayer(GetOwningPlayer(GetTriggerUnit()), 0, 0, 2, "qwer")
       set sec=sec+1
    endloop
endfunction

function IceShackleCheck takes nothing returns boolean
if (IsUnitEnemy(GetSpellTargetUnit(), GetOwningPlayer(GetTriggerUnit()))==true) then
return false 
else 
return true
endif
endfunction

function IceShackleInit takes nothing returns nothing
    local trigger ltt=CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(ltt,EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(ltt,Condition(function IceShackleCheck))
    call TriggerAddAction(ltt,function IceShackleMain)
endfunction


function InitTrig_IceShackle takes nothing returns nothing
endfunction

по идее в течении 5и секунд каждую секунду должно наноситься .03*лвл*расстояние дамага. но не работает! A000 - "канал"
Старый 18.03.2009, 21:59
Ответ

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

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

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

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



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