30

» WarCraft 3 / Заклинание: Длань Господня

Но ведь юниты, расставленные в редакторе, на самом деле ставятся в коде. Тот же самый триггер инициализации карты.
Только это jass триггер, луа раньше срабатывает.
30

» WarCraft 3 / Долгий прогруз

а вот начать осваивать Lua уже таки стоит
Дык lua очень на js похож. Вэбразработчикам повезло. Так что я уже пилю спэлы)
30

» WarCraft 3 / Долгий прогруз

ради бета версии,которая толк не работатет
Бэта скоро станет альфой, а lua уже работает. Не вижу смысла сидеть на устаревшем jass.
30

» WarCraft 3 / Долгий прогруз

А как я тебе потом огромную карту без Jass Helpera тащить?
Переходите на 1.31 и lua))
30

» WarCraft 3 / Заклинание: Длань Господня

но я кроме жасс не знаю других языков
А я только хотел сравнить с js(
ScopteRectuS:
Этот код как функция main сама запускается
Он сразу исполняется, а так как карта ещё не прогружена оперировать ей неполучится (юнита например разместить на карте не получится). Но можно создавать объекты (триггеры, таймеры, группы) и вешать обработчики событий.
Запуская таймер, вы ставите его в очередь, которая начнёт разгребаться после прогрузки main. Только не забывайте его уничтожать.
TimerStart(CreateTimer(), 0, false, function()
    print('Init')
    DestroyTimer(GetExpiredTimer())
end)
30

» WarCraft 3 / Долгий прогруз

Только теперь прийдется его заного включатьи выключать постоянно(((
Зачем? Один раз выключили и забыли.
30

» WarCraft 3 / Подсветка синтаксиса 1.31

Но кто ж будет на это время тратить.
Там же обыкновенный json, если найду файлы blizzard.j, cheats.j common.j на досуге подумаю как автоматизировать. Самому лень вытаскивать
30

» WarCraft 3 / Заклинание: Случайная Молния

новая нативка же есть
Что-то вообще ничего не меняет
BlzSetAbilityStringField(GetSpellAbility(), ABILITY_SF_ICON_ACTIVATED, 'ReplaceableTextures\\CommandButtons\\BTNPolymorph.blp')
Хотя исправно возвращает true
30

» WarCraft 3 / Долгий прогруз

Принятый ответ
SсRealm, отключите JassHelper и перезапустите редактор.
Загруженные файлы
30

» WarCraft 3 / Заклинание: Случайная Молния

Так ведь оно меняет конкретную абилку у применяемого юнита
BlzSetAbilityIcon(abilCode, iconPath) она принимает равкод способности и меняет иконку для всех юнитов.
30

» WarCraft 3 / Заклинание: Случайная Молния

Почему без MUI?
BlzSetAbilityIcon() меняет иконку для всех юнитов, если это игнорировать, то оно MUI.
Почему случайная?
Потому что простая слишком просто)
30

» WarCraft 3 / Условие - превосходство по хп.

ArlekinOo:
Я в редакторе первый день
Так может для начала поизучаете его функции, благо они удобно по категориям распределены. Можно ещё, например статьи почитать.
для криворуких, существо не убиваем, а оставляем ему 1 хп.
Неужто так сложно нанести 100500 урона?
Загруженные файлы
30

» WarCraft 3 / Заклинание: Длань Господня

ScopteRectuS, эх, а я всегда думал, что можно убрать обёртку.
set gg_trg_cast = CreateTrigger(  )
call TriggerRegisterAnyUnitEventBJ( gg_trg_cast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
call TriggerAddAction( gg_trg_cast, function Trig_cast_Actions )
как происходит инициализация способности
Код исполняется и вешает обработчик на событие. А для инициализации, можно использовать старый добрый таймер.
TimerStart(CreateTimer(), 0, false, function()
	print('Init')
end)
30

» WarCraft 3 / Заклинание: Длань Господня

ну в жасс это еще нужно где-то вызвать
Если конвертировать триггер, то будет тоже самое.
function Trig_cast_Actions takes nothing returns nothing
endfunction

//===========================================================================
function InitTrig_cast takes nothing returns nothing
    set gg_trg_cast = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_cast, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddAction( gg_trg_cast, function Trig_cast_Actions )
endfunction
Загруженные файлы
30

» WarCraft 3 / Заклинание: Длань Господня

Почему здесь нету функций
А зачем они в таком простом заклинании? Я повесил слушатель на событие и спрятал переменные в scope. Что ещё нужно?
30

» WarCraft 3 / Заклинание: Длань Господня

а что такое область видимости?
Если в кратце изолирование переменных от других областей кода. Вот простейший пример из документации.
local a = 5
print(a) --> 5

do
  local a = 6 -- create a new local inside the do block instead of changing the existing a
  print(a) --> 6
end

print(a) --> 5
30

» WarCraft 3 / Заклинание: Длань Господня

еее, давай сразу новые на луа
Я только любимые перегоню)
больше на CJ похоже
На zinc ещё больше похоже, мой старый код перегонять одно удовольствие)
а что делает строчка do
Блок do end создаёт область видимости и переменные наружу не торчат. Поэтому и триггер локальный)
30

» WarCraft 3 / Заклинание: Длань Господня

Не совсем понял что делает спелл, пока не посмотрел в код.
Описание способностей не моя сильная сторона. Исправил
Реквестирую больше примеров на луа для чайников
Понемногу буду переписывать свои старые заклинания для 1.26 и может новое что-то придумаю)
30

» WarCraft 3 / Новичек интересуется областью

Так раз 5 подряд сделай и в итоге у тебя навсегда зависнет этот эфект в игре
Сделал тысячу, увидел забавный глюк с паладином и всё прекрасно удалилось.
статья покойного sergey(а) в помощь!
На статьи принято ссылки давать.
30

» WarCraft 3 / Новичек интересуется областью

Варик не упевает понять,которая из них только что сохраненный эффект
Варик однопоточный и когда он что-то не успевает, то просто начинает лагать.
SсRealm:
В данном примере нет,но лучше вообще все,что используется в одном триггере сохранять в локальные и обнулять
В моём примере вообще нет переменных, стоит их завести?
SсRealm:
31 патч это пока что бета. Не стоит его юзать!
Там есть lua и когда-то он из бэты выйдет.
30

» WarCraft 3 / Новичек интересуется областью

Во первых карта не открывается теперь
Это из-за 1.31 патча.
Валерия:
мне нужно именно записать сначало в локальные ,потом их удалить
Зачем?
8gabriel8:
откуда информация, что эффект надо обнулить после Destroy, чтобы устранить утечку?
Потому что хэндл эффекта никуда не делся. Тоже самое, что и с группой.
local group g = CreateGroup()
call DestroyGroup(g)
set g = null
Хотя с эффектами можно и без локалок
DestroyEffect(AddSpecialEffectTarget(...))