Решил написать и сразу перевести в нормальное состояние вот такой код.
Герой использует на союзнике способность, союзнику дается перерождение и вешается спецэффект на грудь( сияние типа броня) действует пока он жив. Когда умирает, то воскрешается и спецэффект удаляется. Все примитивно просто, но возникли большие проблемы в правильностью написания кода. Именно ошибки в самом синтаксисе
  • Ругается на то, что локальную u не видит, хоть она и объявлена.
  • Ругается на, что заменил условие что он не мертв, на
   return ( GetUnitState(u, UNIT_STATE_LIFE) <= 0 )
Код как он есть ниже. Заранее благодарю function
Trig_First_pit______________________2__________________________________________u_Conditions takes nothing returns boolean
    if ( not ( GetSpellAbilityId() == 'A08B' ) ) then
        return false
    endif
    return true
endfunction

function Trig_First_pit______________________2__________________________________________u_Func007001 takes nothing returns boolean
    return ( GetUnitState(u, UNIT_STATE_LIFE) <= 0 )
endfunction

function Trig_First_pit______________________2__________________________________________u_Actions takes nothing returns nothing
    local effect a
    local unit u
    set u = GetSpellTargetUnit()
      call UnitAddAbility( u,'A08C' )
      set bj_lastCreatedEffect = AddSpecialEffectTarget(u,"chest", "manaFlareTarget.mdx" )
    set a = bj_lastCreatedEffect
    loop
        exitwhen ( Trig_First_pit______________________2__________________________________________u_Func007001() )
        call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 1))
    endloop
     call DestroyEffect (a)
    set u= null
    set a= null
endfunction

//===========================================================================
function InitTrig_First_pit______________________2__________________________________________u takes nothing returns nothing
    set gg_trg_First_pit______________________2__________________________________________u = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_First_pit______________________2__________________________________________u, EVENT_PLAYER_UNIT_SPELL_CAST )
    call TriggerAddCondition( gg_trg_First_pit______________________2__________________________________________u, Condition( function Trig_First_pit______________________2__________________________________________u_Conditions ) )
    call TriggerAddAction( gg_trg_First_pit______________________2__________________________________________u, function Trig_First_pit______________________2__________________________________________u_Actions )
endfunction

Ориентируюсь по образцу: Модель, виджет, точки крепления
Но я честно не знаю, как правильно присваивать спецэффект кодом именно с локальной!
Сам написал ответ и сам указал в коде по другому :D
Первый параметр - модель. Не юнит, а модель.
set bj_lastCreatedEffect = AddSpecialEffectTarget("manaFlareTarget.mdx", u, "chest")
Надоело уже страдать. Пусть будет как у Лоха через bj по другому я просто не могу понять!
call AddSpecialEffectTargetUnitBJ( "chest", u, "ManaFlareTarget.mdx" )
`
LOADING AD...
26
function Trig_First_pit______________________2__________________________________________u_Func007001 takes nothing returns boolean
return ( GetUnitState(u, UNIT_STATE_LIFE) <= 0 )
endfunction
где тут объявлена u?

учитесь пользоваться форматированием кода. и называть триггеры нормально.

люблю запах gg_trg_First_pit______________________2__________________________________________u по утрам
21
Там же есть локальная u
25
Ну как бы по факту. В этой функции НЕТ локальной переменной u.
Я показал стрелками слева НАЧАЛО функции и КОНЕЦ функции. Между ними НЕТ создания или получения переменной u. Справа даже подмечено, что мы ничего в эту функцию не получаем. Но зато пытаемся использовать переменную, которая эта функция не видит.

Локальные переменные на то и локальные, что видны лишь в контексте одного блока кода, а снаружи (или в других функциях) они не видны. Их можно передавать через параметры разве что.

Читай, как работают функции, как в них передавать твои переменные в виде параметров.
Uploaded files
21
Ну как бы по факту. В этой функции НЕТ локальной переменной u.
Я показал стрелками слева НАЧАЛО функции и КОНЕЦ функции. Между ними НЕТ создания или получения переменной u. Справа даже подмечено, что мы ничего в эту функцию не получаем. Но зато пытаемся использовать переменную, которая эта функция не видит.

Локальные переменные на то и локальные, что видны лишь в контексте одного блока кода, а снаружи (или в других функциях) они не видны. Их можно передавать через параметры разве что.
Вот же она ниже один раз объявлена?
Uploaded files
25
Вот добавил параметр твоей функции:
function Trig_First_pit______________________2__________________________________________u_Func007001 takes unit u returns boolean
return ( GetUnitState(u, UNIT_STATE_LIFE) <= 0 )
endfunction

А вот как ее передать:
exitwhen ( Trig_First_pit______________________2__________________________________________u_Func007001(u) )

Вот же она ниже один раз объявлена?
Это разные функции, разные блоки кода, разные области видимости. Они друг-друга не видят.

И ты это можешь проследить по слова function - как начало блока кода, и endfunction как конец. За пределами этих двух слов твою локальную переменную нигде не видно.
25
Вот 2 изменения, которые исправят твою проблему.
Uploaded files
26
Там же есть локальная u
тоесть то, что это именно ЛОКАЛЬНАЯ переменная для тебя ничего не значит?
21
((цитата
Там же есть локальная u
))Я понимаю, что это локальная, для того она мне и нужна, чтобы перезаписывалась. Пока ничего не получатеся
тоесть то, что это именно ЛОКАЛЬНАЯ переменная для тебя ничего не значит?
21
Там же есть локальная u
тоесть то, что это именно ЛОКАЛЬНАЯ переменная для тебя ничего не значит?
Почти все. Теперь только ругается на имя модели в приписывании эффекта
26
Там же есть локальная u
тоесть то, что это именно ЛОКАЛЬНАЯ переменная для тебя ничего не значит?
Почти все. Теперь только ругается на имя модели в приписывании эффекта
порядок аргументов в функции для слабых, понимаем
21
Там же есть локальная u
тоесть то, что это именно ЛОКАЛЬНАЯ переменная для тебя ничего не значит?
Почти все. Теперь только ругается на имя модели в приписывании эффекта
порядок аргументов в функции для слабых, понимаем
Каюсь, изменил. Что теперь не правильно?
26
Там же есть локальная u
тоесть то, что это именно ЛОКАЛЬНАЯ переменная для тебя ничего не значит?
Почти все. Теперь только ругается на имя модели в приписывании эффекта
порядок аргументов в функции для слабых, понимаем
Каюсь, изменил. Что теперь не правильно?
порядок аргументов все еще для слабых

мне интересно, вы в случайном порядке забиваете аргументы? пока не заработает?
21
Там же есть локальная u
тоесть то, что это именно ЛОКАЛЬНАЯ переменная для тебя ничего не значит?
Почти все. Теперь только ругается на имя модели в приписывании эффекта
порядок аргументов в функции для слабых, понимаем
Каюсь, изменил. Что теперь не правильно?
порядок аргументов все еще для слабых

мне интересно, вы в случайном порядке забиваете аргументы? пока не заработает?
Ориентируюсь по образцу: Модель, виджет, точки крепления
26
а читать не пробовали? слышал помогает
21
а читать не пробовали? слышал помогает
Дословно он пишет
"Невозможно конвертировать строку в виджет в параметре "Имя модели, что прикрепить специальный эффект"
Вот как мне понять? Я все по порядку добавил же?
26
а читать не пробовали? слышал помогает
Дословно он пишет
"Невозможно конвертировать строку в виджет в параметре "Имя модели, что прикрепить специальный эффект"
Вот как мне понять? Я все по порядку добавил же?
все еще не читаете что сами же написали в коде
21
а читать не пробовали? слышал помогает
Дословно он пишет
"Невозможно конвертировать строку в виджет в параметре "Имя модели, что прикрепить специальный эффект"
Вот как мне понять? Я все по порядку добавил же?
все еще не читаете что сами же написали в коде
Вам весело, но я честно не знаю, как правильно присваивать спецэффект кодом именно с локальной! Я не могу тупо оставить gui потому что мне нужна именно локалка для это этого кода. Мне нужен хотя бы один рабочий образец, как правильно делать в этом случаи, дальще я уже сориентируюсь по образцу
set bj_lastCreatedEffect = AddSpecialEffectTarget
26
а читать не пробовали? слышал помогает
Дословно он пишет
"Невозможно конвертировать строку в виджет в параметре "Имя модели, что прикрепить специальный эффект"
Вот как мне понять? Я все по порядку добавил же?
все еще не читаете что сами же написали в коде
Вам весело, но я честно не знаю, как правильно присваивать спецэффект кодом именно с локальной! Я не могу тупо оставить gui потому что мне нужна именно локалка для это этого кода. Мне нужен хотя бы один рабочий образец, как правильно делать в этом случаи, дальще я уже сориентируюсь по образцу
set bj_lastCreatedEffect = AddSpecialEffectTarget
да, весело, потому что прочесть порядок аргументов в функции не позволяет религия) это писец, докатились
21
а читать не пробовали? слышал помогает
Дословно он пишет
"Невозможно конвертировать строку в виджет в параметре "Имя модели, что прикрепить специальный эффект"
Вот как мне понять? Я все по порядку добавил же?
все еще не читаете что сами же написали в коде
Вам весело, но я честно не знаю, как правильно присваивать спецэффект кодом именно с локальной! Я не могу тупо оставить gui потому что мне нужна именно локалка для это этого кода. Мне нужен хотя бы один рабочий образец, как правильно делать в этом случаи, дальще я уже сориентируюсь по образцу
set bj_lastCreatedEffect = AddSpecialEffectTarget
да, весело, потому что прочесть порядок аргументов в функции не позволяет религия) это писец, докатились
Может я не туда смотрю? боевая единица, эффект, точка крепления, что не так?
26
а читать не пробовали? слышал помогает
Дословно он пишет
"Невозможно конвертировать строку в виджет в параметре "Имя модели, что прикрепить специальный эффект"
Вот как мне понять? Я все по порядку добавил же?
все еще не читаете что сами же написали в коде
Вам весело, но я честно не знаю, как правильно присваивать спецэффект кодом именно с локальной! Я не могу тупо оставить gui потому что мне нужна именно локалка для это этого кода. Мне нужен хотя бы один рабочий образец, как правильно делать в этом случаи, дальще я уже сориентируюсь по образцу
set bj_lastCreatedEffect = AddSpecialEffectTarget
да, весело, потому что прочесть порядок аргументов в функции не позволяет религия) это писец, докатились
Может я не туда смотрю? боевая единица, эффект, точка крепления, что не так?
ну а какой должен быть порядок? вы функцию то читали?
25
Ориентируюсь по образцу: Модель, виджет, точки крепления
Но я честно не знаю, как правильно присваивать спецэффект кодом именно с локальной!
Сам написал ответ и сам указал в коде по другому :D
Первый параметр - модель. Не юнит, а модель.
set bj_lastCreatedEffect = AddSpecialEffectTarget("manaFlareTarget.mdx", u, "chest")
21
Ориентируюсь по образцу: Модель, виджет, точки крепления
Но я честно не знаю, как правильно присваивать спецэффект кодом именно с локальной!
Сам написал ответ и сам указал в коде по другому :D
Первый параметр - модель. Не юнит, а модель.
set bj_lastCreatedEffect = AddSpecialEffectTarget("manaFlareTarget.mdx", u, "chest")
Надоело уже страдать. Пусть будет как у Лоха через bj по другому я просто не могу понять!
call AddSpecialEffectTargetUnitBJ( "chest", u, "ManaFlareTarget.mdx" )
Accepted answer
26
человек не смог прочесть одну строчку, тушите свет, приплыли
21
человек не смог прочесть одну строчку, тушите свет, приплыли
человек не смог прочесть одну строчку, тушите свет, приплыли
Человек мечтает создать интересную карту, но не разбирается в jass. Не знает про входные аргументы. Не страшно, бывает и похуже!
25
Человек мечтает создать интересную карту, но не разбирается в jass. Не знает про входные аргументы. Не страшно, бывает и похуже!
Это и правда не страшно не знать чего-то.
Но чтобы потом не потратить 100 часов на повторное решение этой проблемы (с другими функциями), прочти один раз эту статейку за 10-30 мин, и решай подобные задачи быстро, за 1 час вместо 100 часов суммарно в будущем.
To leave a comment please sign in to the site.