Ребят, я пишу для теста, свой первый Jass скилл, пока не совсем сам, потому что не знаю еще, как выглядит код, не базового (сконвертированного) триггера. Пишу что помню, добавляю локальные переменные, и уже 2жды сталкивался с проблемой, и сейчас не имею понятия, как решить. У меня, проверка Jass ошибок, говорит, что я не заявлял никаких переменных.
call IssueTargetOrderBJ(orud1(), "attack", Usp())
call KillUnit(orud1())
call KillUnit(orud2())
Сразу предупрежу, что я просто решил начать писать Jass триггеры. А также, что мне известно, что там после этих строк, белиберда, так как я сначала писал в GUI, потом переписывал в Jass, и дорабатывал, так что логические ошибки, это то, что я еще не дописал.
Вот код.
Заранее спасибо.
function Trig_treeegs_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'A000'
endfunction

function Trig_treeegs_Actions takes nothing returns nothing
  set udg_Unitper = GetSpellAbilityUnit()
    local unit Usp = udg_Unitper
    local unit orud1
    local unit orud2
    local unit orud3
    call CreateNUnitsAtLoc( 1, 'hmtm', GetOwningPlayer(Usp), PolarProjectionBJ(GetRectCenter(RectFromCenterSizeBJ(GetUnitLoc(Usp), 200.00, 300.00)), 256, 100.00), bj_UNIT_FACING )
    set udg_Unitper = GetLastCreatedUnit()
    set orud1 = udg_Unitper
    call SetUnitColor( orud1, GetPlayerColor(Player(6)) )
    call IssueTargetOrderBJ( orud1(), "attack", Usp() )
    call TriggerSleepAction( 0.90 )
    call KillUnit( orud1() )
    call CreateNUnitsAtLoc( 1, 'hmtm', GetOwningPlayer(Usp), PolarProjectionBJ(GetRectCenter(RectFromCenterSizeBJ(GetUnitLoc(Usp), 300.00, 200.00)), 128.00, 50.00), bj_UNIT_FACING )
    set udg_Unitper = GetLastCreatedUnit()
    set orud2 = udg_Unitper
    set udg_Unitper = null
    call SetUnitColor( orud2, GetPlayerColor(Player(6)) )
    call IssueTargetOrderBJ( GetLastCreatedUnit(), "attack", GetSpellAbilityUnit() )
    call TriggerSleepAction( 0.90 )
    call KillUnit( orud2() )
    call CreateNUnitsAtLoc( 1, 'hmtm', GetOwningPlayer(udg_Unitper), PolarProjectionBJ(GetRectCenter(RectFromCenterSizeBJ(GetUnitLoc(udg_Unitper), -150.00, -200.00)), 200.00, 75.00), bj_UNIT_FACING )
    set udg_Unitper = GetLastCreatedUnit()
    set orud3 = udg_Unitper
    set udg_Unitper = null
    call SetUnitColor( udg_Unitper, GetPlayerColor(Player(6)) )
    call IssueTargetOrderBJ( GetLastCreatedUnit(), "attack", GetSpellAbilityUnit() )
    call TriggerSleepAction( 0.90 )
    call KillUnit( GetLastCreatedUnit() )
    call AddSpecialEffectLocBJ( GetUnitLoc(GetLastCreatedUnit()), "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl" )
    call TriggerSleepAction( 0.01 )
    call DestroyEffectBJ( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( GetUnitLoc(GetLastCreatedUnit()), "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl" )
    call TriggerSleepAction( 0.01 )
    call DestroyEffectBJ( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( GetUnitLoc(GetLastCreatedUnit()), "Abilities\\Spells\\Human\\ThunderClap\\ThunderClapCaster.mdl" )
    call TriggerSleepAction( 0.01 )
    call DestroyEffectBJ( GetLastCreatedEffectBJ() )
    call AddSpecialEffectLocBJ( GetUnitLoc(GetSpellAbilityUnit()), "Abilities\\Spells\\Human\\MarkOfChaos\\MarkOfChaosTarget.mdl" )
    call TriggerSleepAction( 0.01 )
    call DestroyEffectBJ( GetLastCreatedEffectBJ() )
    call RemoveUnit( GetLastCreatedUnit() )
    call RemoveUnit( GetLastCreatedUnit() )
    call RemoveUnit( GetLastCreatedUnit() )
endfunction

//===========================================================================
function InitTrig_treeegs takes nothing returns nothing
    local trigger t = CreateTrigger ()
    call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerAddCondition(t, Condition( function Trig_treeegs_Conditions ) )
    call TriggerAddAction(t, function Trig_treeegs_Actions )
    set t = null
endfunction

1
А это никого не смущает? то что локалки поставлены не первыми
function Trig_treeegs_Actions takes nothing returns nothing
	set udg_Unitper = GetSpellAbilityUnit()
	local unit Usp = udg_Unitper
	local unit orud1
	local unit orud2
	local unit orud3
	. . .
2
Утекают точки...
PolarProjectionBJ(GetRectCenter(RectFromCenterSizeBJ(GetUnitLoc(Usp), 200., 300.)), 256, 100.)
// GetUnitLoc(Usp)
3
Обращения как в функциям
orud1()
Usp()
В общем - рано тебе ещё прям так полностью переходить на Jass.
Тут надо переделывать всё, начиная с момента удаления создаваемого эффекта, и вплоть до момента созданиея юнита по XY. А так же момент с полярными смещениями (ты там вообще лишнюю область создаёшь, а значит не знаешь как надо правильно полярки использовать на GUI).
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
27
ты переменным пишешь зачем скобки?
call KillUnit(orud1())
а надо call KillUnit(orud1)
скобки пишут только для функции и константных функции вроде GetTriggerUnit()

вы очень много делаете лишних телодвижении с переменными, больно смотреть на код
10
Steal nerves:
ты переменным пишешь зачем скобки?
call KillUnit(orud1())
а надо call KillUnit(orud1)
скобки пишут только для функции и константных функции вроде GetTriggerUnit()

вы очень много делаете лишних телодвижении с переменными, больно смотреть на код
Я просто, потратил где-то год, 2, на создание своей карты.
Я хотел потом, до отточить баланс, и добавить туда, 1 героя, с крутыми скиллами. После чего, карта переставала запускать триггеры, она была переполнена утечками. И все насмарку. Я решил поучиться коду, и пресекать максимум утечек, что бы был, максимально чистый код.
11
Taurenus, тут есть одно НО, что бы был чистый код необходимо менять подход. Просто переход на Jass это не означает что сразу все будет чисто да гладко. Я когда то давно, первое с чего начинал - нашел простенький спелл на чистом Jass, переписал его под копирку с вниканием что делает каждая строка. Понял принцип работы, методом проб и ошибок делал что то свое, изучал чужие способности.
10
Steal nerves:
ты переменным пишешь зачем скобки?
call KillUnit(orud1())
а надо call KillUnit(orud1)
скобки пишут только для функции и константных функции вроде GetTriggerUnit()

вы очень много делаете лишних телодвижении с переменными, больно смотреть на код
Изините, тут пунктик один вышел.
У меня первый орудийный расчет, не атакует кастера. Остальные все нормально делают.
26
1
А это никого не смущает? то что локалки поставлены не первыми
function Trig_treeegs_Actions takes nothing returns nothing
	set udg_Unitper = GetSpellAbilityUnit()
	local unit Usp = udg_Unitper
	local unit orud1
	local unit orud2
	local unit orud3
	. . .
2
Утекают точки...
PolarProjectionBJ(GetRectCenter(RectFromCenterSizeBJ(GetUnitLoc(Usp), 200., 300.)), 256, 100.)
// GetUnitLoc(Usp)
3
Обращения как в функциям
orud1()
Usp()
В общем - рано тебе ещё прям так полностью переходить на Jass.
Тут надо переделывать всё, начиная с момента удаления создаваемого эффекта, и вплоть до момента созданиея юнита по XY. А так же момент с полярными смещениями (ты там вообще лишнюю область создаёшь, а значит не знаешь как надо правильно полярки использовать на GUI).
Принятый ответ
32
Народ, а у нас статьи с примерами простых жасс спелов кончились на сайте? На форум чето ссылки не активны, думал мб сударю кинуть.
11
Extremator, можно локалки объявить где угодно, после компиляции они будут объявлены в начале функции. Не помню точно, это cJass или vJass позволяет такое делать.
32
Да и вовсе совсем не могу понять, че спелл то делать должен?
26
wetalq:
можно локалки объявить где угодно
Это только если компилятор будет перераспределять расположения строк с объявлением локалок.
38
quq_CCCP, что у тебя не так с форумом? Что значит не активны?
11
ScorpioT1000, у меня также многие разделы форума не доступны. Гугл находит ссылку на форум, но пишет что для меня этот раздел не доступен.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.