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

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
21
человек не смог прочесть одну строчку, тушите свет, приплыли
человек не смог прочесть одну строчку, тушите свет, приплыли
Человек мечтает создать интересную карту, но не разбирается в jass. Не знает про входные аргументы. Не страшно, бывает и похуже!
25
Человек мечтает создать интересную карту, но не разбирается в jass. Не знает про входные аргументы. Не страшно, бывает и похуже!
Это и правда не страшно не знать чего-то.
Но чтобы потом не потратить 100 часов на повторное решение этой проблемы (с другими функциями), прочти один раз эту статейку за 10-30 мин, и решай подобные задачи быстро, за 1 час вместо 100 часов суммарно в будущем.
28
SсRealm, ты когда скобку открываешь после названия функции видишь названия аргументов. Помимо этого ты можешь задать ctrl и нажать на функцию, чтобы раскрыть её, где увидишь тип аргументов. Если тебе этого мало - конвертируй гуи в код и смотри как там сделано, учи английский, пользуйся переводчиком, прокачивайся и переходи на нативки
21
SсRealm, ты когда скобку открываешь после названия функции видишь названия аргументов. Помимо этого ты можешь задать ctrl и нажать на функцию, чтобы раскрыть её, где увидишь тип аргументов. Если тебе этого мало - конвертируй гуи в код и смотри как там сделано, учи английский, пользуйся переводчиком, прокачивайся и переходи на нативки
По итогу все- равно выдало ошибку. Может ты и прав!
function First pitdfgdfgf_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A08B' ) ) then
return false
endif
return true
endfunction
function Trig_First pitdfgdfgf_Func007001 takes unit u returns boolean
return ( GetUnitState(u, UNIT_STATE_LIFE) <= 0 )
endfunction
function First pitdfgdfgf_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 ( First pitdfgdfgf_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_pitdfgdfgf takes nothing returns nothing
set gg_trg_First_pitdfgdfgf = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_First_pitdfgdfgf, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_First_pitdfgdfgf, Condition( function Trig_First_pit______________________2__________________________________________u_Conditions ) )
call TriggerAddAction( gg_trg_First_pitdfgdfgf, function Trig_First_pit______________________2__________________________________________u_Actions )
endfunction
Загруженные файлы
25
Вот твой код:
SсRealm:
По итогу все- равно выдало ошибку. Может ты и прав!
set bj_lastCreatedEffect = AddSpecialEffectTarget(u,"chest", "manaFlareTarget.mdx" )
И вот писал я:
konvan5:
Сам написал ответ и сам указал в коде по другому :D
Первый параметр - модель. Не юнит, а модель.
set bj_lastCreatedEffect = AddSpecialEffectTarget("manaFlareTarget.mdx", u, "chest")
А теперь просто сравни эти строки, мою и свою :)
21
Вот твой код:
SсRealm:
По итогу все- равно выдало ошибку. Может ты и прав!
set bj_lastCreatedEffect = AddSpecialEffectTarget(u,"chest", "manaFlareTarget.mdx" )
И вот писал я:
konvan5:
Сам написал ответ и сам указал в коде по другому :D
Первый параметр - модель. Не юнит, а модель.
set bj_lastCreatedEffect = AddSpecialEffectTarget("manaFlareTarget.mdx", u, "chest")
А теперь просто сравни эти строки, мою и свою :)
Что означает ошибка "expected take" ?
25
Что означает ошибка "expected take" ?
Видимо у тебя описание функции неполное, в описании функции должен быть список параметров, который пишется после слова takes, и возможно ты его не указал.
Вот пример, где параметров нет, поэтому мы указываем nothing после takes:
function First pitdfgdfgf_Conditions takes nothing returns boolean

А лучше скидывай скрин ошибки, где показывается часть кода, где ошибка и находится. Так проще будет нам помочь.
21
Что означает ошибка "expected take" ?
Видимо у тебя описание функции неполное, в описании функции должен быть список параметров, который пишется после слова takes, и возможно ты его не указал.
Вот пример, где параметров нет, поэтому мы указываем nothing после takes:
function First pitdfgdfgf_Conditions takes nothing returns boolean

А лучше скидывай скрин ошибки, где показывается часть кода, где ошибка и находится. Так проще будет нам помочь.
Я уже столько нахреновертил, что у меня там даже названия троигеров спутаны. Сейчас сделаю гуи, переведу на джасс, верну все как было и скажу, если что - то опять не запустится
30
Человек мечтает создать интересную карту, но не разбирается в jass
А ещё он не разбирается в уважении к собеседникам и цитирует огромные портянки комментариев, и не использует блоки кода. Всё для того, чтоб людям было легче читать написанное.

Это и правда не страшно не знать чего-то.
Страшно, когда вместо того, чтоб разобраться человек просто брутфосом спамит код в надежде что оно сработает.
21
nazarpunk:
Да я не спамлю, я пытаюсь быстрее ответить, пока кто - то согласился мне помочь, иначе я эту часть кода надолго заброшу и спросить будет не у кого
21
konvan5:
Код, как он сейчас есть
function Trig_tRIGGORDOND_Conditions takes nothing returns boolean
if ( not ( GetSpellAbilityId() == 'A016' ) ) then
return false
endif
return true
endfunction
function Trig_tRIGGORDOND_Func006001 takes unit u returns boolean
return ( GetUnitState(u, UNIT_STATE_LIFE) <= 0 )
endfunction
function Trig_tRIGGORDOND_Actions takes nothing returns nothing
local unit u
local effect a
set bj_lastCreatedEffect = AddSpecialEffectTarget(u,"chest", "manaFlareTarget.mdx" )
call UnitAddAbility(u,'A01O')
loop
exitwhen ( Trig_tRIGGORDOND_Func006001() )
call TriggerSleepAction(RMaxBJ(bj_WAIT_FOR_COND_MIN_INTERVAL, 1))
endloop
call UnitRemoveAbility( u,'A01O' )
endfunction
===========================================================================
function InitTrig_tRIGGORDOND takes nothing returns nothing
set gg_trg_tRIGGORDOND = CreateTrigger( )
call TriggerRegisterAnyUnitEventBJ( gg_trg_tRIGGORDOND, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition( gg_trg_tRIGGORDOND, Condition( function Trig_tRIGGORDOND_Conditions ) )
call TriggerAddAction( gg_trg_tRIGGORDOND, function Trig_tRIGGORDOND_Actions )
endfunction
Теперь ошибки опять же вылетают потому что локальная якобы не заявлена. И опять же по тому что утром( если исправлять)
Загруженные файлы
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.