Вообще говоря, в нашем примере можно обойтись и без глобальных переменных – одними локальными. Но проблема в том, что использование локальных переменных не предусмотрено в редакторе. Чтобы использовать эти переменные необходимо записывать команды на jass.
Человек говорит о совместной работе триггеров и jassа. Если писать на чистом jass то в этих случаях можно глобалки и не использовать :D
Не путаем контексты)
Да и в целом это все инструменты. Нам же что главное - чтобы работало так, как нам нужно, с нашими условными ограничениями (критериями). Если задача выполняется по заданным критериям - то решение годится.
давно хочу понять хэш таблицу, она мне прямо очень нужна, но пока не понимаю. Это тема для следующего вопроса)
Пс, тут есть великий секрет XGM! Зайдешь сюда, нажимая на эту никому-неизвестную кнопку, найдешь интересующую тебя тему, прочитаешь и вопросы все сами отпадут :) (Для быстрого поиска по странице можно использовать комбинацию клавиш CTRL+F)
Ты создал переменную, но она пустая. Где ты юнита берешь?
Тебе надо указать, чему равна переменная. Присвоить ей юнита.
Раньше ты делал вот так:
local unit u
set u = GetSpellTargetUnit()
Вот это действие SET устанавливает значение переменной, которое берется из GetSpellTargetUnit().
Видимо после переработки кода ты потерял эту строку...
Вторая ошибка - неправильный порядок параметров в функции AddSpecialEffectTarget(). Читай мои комменты выше, где я показывал, как тебе правильно надо туда вписать параметры. Ладно, отправлю уже в 3 раз, вот ответ:
set bj_lastCreatedEffect = AddSpecialEffectTarget("manaFlareTarget.mdx", u, "chest")
Первая ошибка сейчас говорит в том, что ты создал переменную, но ничего туда не записал а уже отправил в функцию. То есть ты пытаешься прикрепить эффект к пустому, не существующему юниту.
Вот про этот код идет речь:
local unit u
local effect a
set bj_lastCreatedEffect = AddSpecialEffectTarget(u,"chest", "manaFlareTarget.mdx" )
Видишь, тут создал переменную u, ничего в нее не записал но используешь дальше в функции AddSpecialEffectTarget().
Тебе в любом случае придется учиться и понимать код, как он работает, чтобы часами потом не сидеть над одной ошибкой.
А подобный код ты еще не раз будешь перебирать, когда попытаешься делать другие системы. Так что лучше потратить дополнительно полчаса времени сейчас, чтобы ПОНЯТЬ, почему оно ругается, не запускается, почитать статьи, как правильно описывается код, и дальше будешь решать такие проблемы как орешки за минуты а не за часы :)
Видимо у тебя описание функции неполное, в описании функции должен быть список параметров, который пишется после слова takes, и возможно ты его не указал.
Вот пример, где параметров нет, поэтому мы указываем nothing после takes:
function First pitdfgdfgf_Conditions takes nothing returns boolean
А лучше скидывай скрин ошибки, где показывается часть кода, где ошибка и находится. Так проще будет нам помочь.
Человек мечтает создать интересную карту, но не разбирается в jass. Не знает про входные аргументы. Не страшно, бывает и похуже!
Это и правда не страшно не знать чего-то.
Но чтобы потом не потратить 100 часов на повторное решение этой проблемы (с другими функциями), прочти один раз эту статейку за 10-30 мин, и решай подобные задачи быстро, за 1 час вместо 100 часов суммарно в будущем.
function Trig_First_pit______________________2__________________________________________u_Func007001 takes unit u returns boolean
return ( GetUnitState(u, UNIT_STATE_LIFE) <= 0 )
endfunction
Это разные функции, разные блоки кода, разные области видимости. Они друг-друга не видят.
И ты это можешь проследить по слова function - как начало блока кода, и endfunction как конец. За пределами этих двух слов твою локальную переменную нигде не видно.
Ну как бы по факту. В этой функции НЕТ локальной переменной u.
Я показал стрелками слева НАЧАЛО функции и КОНЕЦ функции. Между ними НЕТ создания или получения переменной u. Справа даже подмечено, что мы ничего в эту функцию не получаем. Но зато пытаемся использовать переменную, которая эта функция не видит.
Локальные переменные на то и локальные, что видны лишь в контексте одного блока кода, а снаружи (или в других функциях) они не видны. Их можно передавать через параметры разве что.
Читай, как работают функции, как в них передавать твои переменные в виде параметров.
» WarCraft 3 / Спавн Рун
» Warcraft 3: The Lord Of The Rings / Представление персонажей: Хоббиты
Ред. konvan5
» WarCraft 3 / Радиус самостоятельной атаки юнитов
Ред. konvan5
» WarCraft 3 / Чем можно заменить "TriggerRegisterTimerEventSingle"?
» WarCraft 3 / Практика ИИ - Тактика (Простая) Часть 1
» WarCraft 3 / Не работает система прикрепления эффекта
Ред. konvan5
» WarCraft 3 / Не работает система прикрепления эффекта
Не путаем контексты)
» WarCraft 3 / Не работает система прикрепления эффекта
» WarCraft 3 / Не работает система прикрепления эффекта
(Для быстрого поиска по странице можно использовать комбинацию клавиш CTRL+F)
Ред. konvan5
» WarCraft 3 / Не работает система прикрепления эффекта
Видимо после переработки кода ты потерял эту строку...
Ред. konvan5
» WarCraft 3 / Не работает система прикрепления эффекта
Ладно, отправлю уже в 3 раз, вот ответ:
Вот еще про локальные переменные в jass но текста многовато.
» WarCraft 3 / Не работает система прикрепления эффекта
Вот про этот код идет речь:
А подобный код ты еще не раз будешь перебирать, когда попытаешься делать другие системы. Так что лучше потратить дополнительно полчаса времени сейчас, чтобы ПОНЯТЬ, почему оно ругается, не запускается, почитать статьи, как правильно описывается код, и дальше будешь решать такие проблемы как орешки за минуты а не за часы :)
» WarCraft 3 / Не работает система прикрепления эффекта
Вот пример, где параметров нет, поэтому мы указываем nothing после takes:
Ред. konvan5
» WarCraft 3 / Не работает система прикрепления эффекта
SсRealm:
konvan5:
» WarCraft 3 / Не работает система прикрепления эффекта
Но чтобы потом не потратить 100 часов на повторное решение этой проблемы (с другими функциями), прочти один раз эту статейку за 10-30 мин, и решай подобные задачи быстро, за 1 час вместо 100 часов суммарно в будущем.
» WarCraft 3 / Не работает система прикрепления эффекта
Первый параметр - модель. Не юнит, а модель.
» WarCraft 3 / Не работает система прикрепления эффекта
Ред. konvan5
» WarCraft 3 / Не работает система прикрепления эффекта
» WarCraft 3 / Не работает система прикрепления эффекта
» WarCraft 3 / Изменить уровень способности
» WarCraft 3 / Изменить уровень способности
» WarCraft 3 / Изменить уровень способности
Просто так в воздухе переменные не зависают)
» WarCraft 3 / Изменить уровень способности
» WarCraft 3 / Изменить уровень способности
Get - Это функция получения.