Решил написать и сразу перевести в нормальное состояние вот такой код.
Герой использует на союзнике способность, союзнику дается перерождение и вешается спецэффект на грудь( сияние типа броня) действует пока он жив. Когда умирает, то воскрешается и спецэффект удаляется. Все примитивно просто, но возникли большие проблемы в правильностью написания кода. Именно ошибки в самом синтаксисе
  • Ругается на то, что локальную 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

Accepted answer

Ориентируюсь по образцу: Модель, виджет, точки крепления
Но я честно не знаю, как правильно присваивать спецэффект кодом именно с локальной!
Сам написал ответ и сам указал в коде по другому :D
Первый параметр - модель. Не юнит, а модель.
set bj_lastCreatedEffect = AddSpecialEffectTarget("manaFlareTarget.mdx", u, "chest")
Надоело уже страдать. Пусть будет как у Лоха через bj по другому я просто не могу понять!
call AddSpecialEffectTargetUnitBJ( "chest", u, "ManaFlareTarget.mdx" )
`
LOADING AD...
3
26
3 months ago
Edited by Hate
3
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 по утрам
0
20
3 months ago
0
Там же есть локальная u
2
24
3 months ago
2
Ну как бы по факту. В этой функции НЕТ локальной переменной u.
Я показал стрелками слева НАЧАЛО функции и КОНЕЦ функции. Между ними НЕТ создания или получения переменной u. Справа даже подмечено, что мы ничего в эту функцию не получаем. Но зато пытаемся использовать переменную, которая эта функция не видит.

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

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

Локальные переменные на то и локальные, что видны лишь в контексте одного блока кода, а снаружи (или в других функциях) они не видны. Их можно передавать через параметры разве что.
Вот же она ниже один раз объявлена?
Uploaded files
0
24
3 months ago
Edited by konvan5
0
Вот добавил параметр твоей функции:
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 как конец. За пределами этих двух слов твою локальную переменную нигде не видно.
0
24
3 months ago
0
Вот 2 изменения, которые исправят твою проблему.
Uploaded files
2
26
3 months ago
2
Там же есть локальная u
тоесть то, что это именно ЛОКАЛЬНАЯ переменная для тебя ничего не значит?
0
20
3 months ago
0
((цитата
Там же есть локальная u
))Я понимаю, что это локальная, для того она мне и нужна, чтобы перезаписывалась. Пока ничего не получатеся
тоесть то, что это именно ЛОКАЛЬНАЯ переменная для тебя ничего не значит?
0
20
3 months ago
0
Там же есть локальная u
тоесть то, что это именно ЛОКАЛЬНАЯ переменная для тебя ничего не значит?
Почти все. Теперь только ругается на имя модели в приписывании эффекта
2
26
3 months ago
2
Там же есть локальная u
тоесть то, что это именно ЛОКАЛЬНАЯ переменная для тебя ничего не значит?
Почти все. Теперь только ругается на имя модели в приписывании эффекта
порядок аргументов в функции для слабых, понимаем
0
20
3 months ago
0
Там же есть локальная u
тоесть то, что это именно ЛОКАЛЬНАЯ переменная для тебя ничего не значит?
Почти все. Теперь только ругается на имя модели в приписывании эффекта
порядок аргументов в функции для слабых, понимаем
Каюсь, изменил. Что теперь не правильно?
2
26
3 months ago
2
Там же есть локальная u
тоесть то, что это именно ЛОКАЛЬНАЯ переменная для тебя ничего не значит?
Почти все. Теперь только ругается на имя модели в приписывании эффекта
порядок аргументов в функции для слабых, понимаем
Каюсь, изменил. Что теперь не правильно?
порядок аргументов все еще для слабых

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

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