Ребят, я пишу для теста, свой первый 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).
`
ОЖИДАНИЕ РЕКЛАМЫ...
31
!!call IssueTargetOrderBJ(orud1(), "attack", Usp())
call KillUnit(orud1())
call KillUnit(orud2())!!
круглые скобки "()" после orud1, Usp убери
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, у меня также многие разделы форума не доступны. Гугл находит ссылку на форум, но пишет что для меня этот раздел не доступен.
38
wetalq, а если разлогиниться или с инкогнито?
11
ScorpioT1000, работает если через инкогнито зайти, спасибо за подсказку
32
ScorpioT1000:
wetalq, а если разлогиниться или с инкогнито?
Что за баг?
11
quq_CCCP, не все разделы старого форума доступны для пользователей которые вошли через свою учетную запись. Я например ищу вопрос в гугле, нахожу ссылку на форум и получаю сообщение что у меня нет прав доступа к этой странице. Копирую ссылку и захожу через режим инкогнито без авторизации на сайте - работает.
22
я в этом аккаунте раньше мог войди в старый форум в раздел где барахолки были рабочим. Но сейчас и ранее они все исзечли. А ведь там были много чего делали =)
38
xgm.guru/p/xgm/qa/no-answer короче если перечислите, что не видно авторизованным, но видно инкогнито - выдам опыта
10
Extremator:
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).
У меня просто, не до конца есть ясное представление как они, именно на Jass выглядят. А на туториалах, просто функции называют, и их значения, а начинать с чего-то надо. А как сделать, что бы не утекали точки, не имею понятия.
Так что там с тем, что первый не атакует?
И спасибо за то что объяснил.
22
бери любого учебника и научи основа из основ
  • Что такое локальная переменная и глобальная переменная
  • Что такое цикл
  • Что такое функция и как работает аргументы
  • Что такое нативные функции (API с blizzard)
  • И так далее подумай головой и снова 1 пунт учи.

Когда вы поняли основ переходим во 2 уровень
  • Что такое триггер
  • Что такое действия триггера
  • Что такое условие триггера
  • Дальше вы уже освоите навыка понимание суть кодирование.

Когда вы освоите достаточно то переходим во 3 уровень
  • Какие ограничение у варкрафта
  • Какием могут быть проблемы с потоком триггера
  • Как оптимизировать утечки (1 пункт 1 уровня)
  • Переписать функции который является утечные у бж функции

продолжение не будет... (Много чего вы хотите)
10
pro100master:
бери любого учебника и научи основа из основ
  • Что такое локальная переменная и глобальная переменная
  • Что такое цикл
  • Что такое функция и как работает аргументы
  • Что такое нативные функции (API с blizzard)
  • И так далее подумай головой и снова 1 пунт учи.

Когда вы поняли основ переходим во 2 уровень
  • Что такое триггер
  • Что такое действия триггера
  • Что такое условие триггера
  • Дальше вы уже освоите навыка понимание суть кодирование.

Когда вы освоите достаточно то переходим во 3 уровень
  • Какие ограничение у варкрафта
  • Какием могут быть проблемы с потоком триггера
  • Как оптимизировать утечки (1 пункт 1 уровня)
  • Переписать функции который является утечные у бж функции

продолжение не будет... (Много чего вы хотите)
А я по рейтингу, так и понял, что ничего хорошего здесь не увижу. Мне в ЭТИХ ЖЕ УЧЕБНИКАХ ПО ДЖАЗУ, пишут:
"Если вам чего-то непонятно, то вот у нас есть форум, там задавайте вопросы. Вам там помогут, мы даем инструмент, спрашивайте, экспериментируйте, и у вас все получится!"
Я: *Захожу на форум*
:Иди читай учебник.
У нас так система образования и работает, кстати.
У меня возникло 2 вопроса, мне много чего объяснили, за то спасибо. Но это даже не звучало как помощь. А как будто я отстаю в развитии, и просто бесполезно что-то мне объяснять. Я хотел узнать про:
1.Почему триггер не работает. Что там с этой переменной.
2.Почему 1вое действие призывного юнита не работает.
3.Как пресечь утечку точек позиции.
Это много? 3 пунктика 1 из которых уже решен?
А что тогда мало? 1 мало, 2 много?
Я пытался найти инфу, я соглашусь с тем, что не тратил на это кучу часов. Решил что мне тут могли бы помочь. Если бы кто-то сказал: "Давай я помогу тебе советом, а ты поможешь мне поделать триггеры"
Я бы только спасибо сказал этому человеку,
Тут порог вхождения и так высокий. И так на каждом углу говорят, что дело в том, что я пишу на GUI, пытаюсь выучить Jass мне говорят, что я плохо знаю GUI. Мне говорят что я должен читать учебники, а не задавать вопросы, а в этих учебниках пишут, главное задавать вопросы.
32
Taurenus, базовые вещи вроде синтаксиса языка объяснять подробно, на пальцах - зашквар. Должен прочитать и сам пробовать, там четко и ясно указано, что как и почему. Потом уже думать об алгоритмах и прочем.
Делать за тебя - толку, чемту ты научишся? Это не мы плохие и жадные, просто вас уже очень много, нубья (уж простите меня), которые карты делают тям\ляп а потом лагает, багает, вылетает... Ты не захочешь - никто не захочет, базовая инфа есть, начинай по немногу, я вот изумляюсь вашему упорству сделать супер-пупер спел, зачем?
Делайте все по минимуму и самые простые вещи, разбирайтесь, переходите к более сложным.

Для начала создай дамми юнита и прикажи ему кинуть некоторый спелл. Покажи код тут.
10
Вот та самая карта, которую я упоминал, возможно, кто-то ее еще помнит на этом форуме. Вот так, я писал раньше, там 2-3 триггеры, были сделаны "с помощью" 1 под копирку, вы его узнайте, вот так я работал с GUI. 3-4 года назад.
Загруженные файлы
6
Taurenus,
Потому что да, ты отстаешь в развитии. Ибо в первом же примере, разъясняющем что такое вообще джасс, объясняется как использовать те же локалки. Все практически уже системы освещены в статьях с кодом и, иногда, даже приложенными картами с примером.
Но таким как ты лень вообще открывать какие-либо статьи, чего-то скачивать, смотреть, лучше же кинуть вопрос на форум, а потом еще десяток таких же примитивных, а потом удивляться, почему вместо ответа кидают ссылку на сборник статей. Ибо нет, ты не то что "не тратил много часов", ты вообще не тратил более пяти минут.
По этому коду вообще можно в Бинго играть. Вейты, удаление левых спецэффектов вместо нужных в дополнение к уже вышеперечисленному.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.