Дикая смешь простого jassа с cjass (не пишите так, потом будет плохо - я вас предупредил)
Как оно выглядит у тебя, переменные мы объявляем где хотим а не вначале...
function Trig_Star_Set_Jass1_pickup_item_Actions takes nothing returns nothing
local integer array item_check
local unit Star_set_item_unit = GetManipulatingUnit()
local boolean array item_check_status
local integer start = 0
//local string text = "Предмет взят"
set item_check[0] = 'I00A'
set item_check[1] = 'I009'
set item_check[2] = 'I00E'
set item_check[3] = 'I00B'
set item_check[4] = 'I00D'
loop
exitwhen ((start > bj_MAX_INVENTORY) or ((item_check_status[0] == true) and (item_check_status[1] == true) and (item_check_status[2] == true) and (item_check_status[3] == true) and (item_check_status[4] == true)))
if ( GetItemTypeId(UnitItemInSlot(Star_set_item_unit, start)) == item_check[0] ) then
set item_check_status[0] = true
// call DisplayTextToForce( GetPlayersAll(), text )
endif
if ( GetItemTypeId(UnitItemInSlot(Star_set_item_unit, start)) == item_check[1] ) then
set item_check_status[1] = true
// call DisplayTextToForce( GetPlayersAll(), text )
endif
if ( GetItemTypeId(UnitItemInSlot(Star_set_item_unit, start)) == item_check[2] ) then
set item_check_status[2] = true
// call DisplayTextToForce( GetPlayersAll(), text )
endif
if ( GetItemTypeId(UnitItemInSlot(Star_set_item_unit, start)) == item_check[3]) then
set item_check_status[3] = true
// call DisplayTextToForce( GetPlayersAll(), text )
endif
if ( GetItemTypeId(UnitItemInSlot(Star_set_item_unit, start)) == item_check[4] ) then
set item_check_status[4] = true
// call DisplayTextToForce( GetPlayersAll(), text )
endif
set start = start + 1
endloop
if ((item_check_status[0] == true) and (item_check_status[1] == true) and (item_check_status[2] == true) and (item_check_status[3] == true) and (item_check_status[4] == true)) then
// call DisplayTextToForce( GetPlayersAll(), text )
call TriggerExecute( gg_trg_Star_Set_Add )
endif
set Star_set_item_unit = null
endfunction
В этой функции мы сделали локальный массив а обнулять его видимо будут чуваки с форума XGM (массивы переменных, если они созданы локально требуют обнуление, 1 значение 2 байте оперативки, не забываем об этом, не нужно обнулять только базовые типы не массивы.)
"если скопировать юнита в редакторе, он будет иметь одинаков handle"
Серьезно?
Не хочу расстраивать, но именно из за такого бага я долго не мог понять, почему мой код не работает, пока не перевел id юнита в текст и не вывел себе сообщением и был удивлен что у двоих юнитов он одинаков.
Хендл - номер структуры в памяти, хендлы находятся в оперативной памяти, а raw-код ( type id как в гуях на инглише) это всего лишь номер строчки в слк таблице, которая сохранена на диске - своего рода база данных откуда движок игры берет начальные данные для создания объекта в оперативной памяти ну и только потом назначает ему уникальный хендл (ну почти всегда, близзарды еще не полечили все баги рекурсии хендлов)
Ну у мастера клинка способность то посложнее...
Вот пример:
Для начала нам нужно создать иллюзии героя, а потом скрыть всех их, так же сделав визуальный эффект (если что то зеленые тени, это снаряды).
DUSPLAY что то там дисинх не вызовит, ибо отвечает только за визуальный эффект. Смотри внимательно, испольщование GetRandomInt /real недопустимо использовать локально, как и создание хендлов, испольщование функций которые создадут или вернут некий объект...
Иллюзии недо-юниты, они не могут использовать активки и предметы, лишь некоторые пассивки работают у иллюзий ( втом. числе и те что добавили триггерно).
Иллюзий найти плевое дело, есть проверка IsUnitIllision а так же событие Юнит призвал вызванное существо, ибо все иллюзии суммоны от конкретных способностей, создать иллюзию триггерно, без способности и юнита не получится...
Если вам нужны именно клоны героя (как арк варден в доте или мипо) то вам нужно создавать героя, обнулять у него все лишнее (вроде отображать как героя на карте команд, скрыть сообщение о гибели), так же необходимо триггерное слежение за такой иллюзией.
quq_CCCP, религия айсфрога запрещает юзать таймеры
об этом даже в заповедях айсфрога сказано
Айсфрог и то ставит событие, что цель и кастер сдохли, чтобы не словить фатал допустим приказывая чо то делать иллюзии спектры, ну лано а тут тупо таймер, переодик триггер тяжелее таймера и нечем не лучше, не говоря о том что когда вы лепите pereodic event триггеру, то внутри его структуры создается такой же таймер как и обычный, который и тикает - смысл использовать триггер если можно использовать таймер?
Так же не забываем акшены и кондишены и боолеспры - это хендлы которые сидят в пямяти, таймер берет только аргумент code.
Вот какая тебе громовая поступь, скока гнутой земли, громовые поступи вызывают просадки фпс, лучше спецэффект и всем на голову молот бурь ну или ракеты механика.
Зачем? Какие даммики для снарядов? Юзаем аксид бомбу или молоток бурь (сетка кстати оглушающая способность, она сбивает чаннелинги и текущие приказы юнита)
Как проверить что юнит получил молотком бурь в задницу, да проще пареной репы - ждем урон 0.00 ед. и бафф абилки, разумеется аксид бомбу тогда не юзаем ни для чего другого, иначе будет беда ну а со станами пофиг. При такой системе не будет проблем с блинками, спелл блоками и так далее, стандартные снаряды близзардов куда удобнее и красивее даммиков.
забывая про то что можно вовсе не создавать boolexpr
Вот только использование null вместо переменной типа boolexpr вызывает утечку. За пруфами в поиск, это были слова ADOLF'а, и ему определённо можно (и нужно) верить в подобных темах
Diaboliko, ну удачи тогда
предоставишь пруф(с 2 переменными) и я с радостью соглашусь с тем что я нуб
и опыта накину
только не забывай что мс может даваться как в единицах (сапог например) так и в % (всякие баффы)
и может меняться в тот момент когда юнит находится под замедлением
в качестве пруфа сойдёт небольшой пример замедляющий юнита на 5 секунд на 20% сделанный триггерно без спелла замедления
Реализуймо только через ретурн баг, найти ячейку белой скорости в структуре юнита, ну а потом делать что хочется, так же подсмотреть есть ли стандартные модификаторы скорости, но вот пока наработок сего чуда не видел.
Ток бекап, видимо синий экран вылетел в момен когда редактор удалил старую карту и начал создавать новую, сохраняя данные в архив - архив битый, т.к не содержит всех данных, которые не были сохранены редактором.
Если используешь JNGP - то папочка backups в помощь, там твои труды за полгода=)
У тебя дистанция камеры разная, вот и кажется что разница.
Дома можно делать и с помощью разрушаемых объектов, чтобы не так нагружать игру, необходимые события триггеров есть и разрушаемых объектов.
» WarCraft 3 / Как бороться с утечкой Handle при волнах
Как оно выглядит у тебя, переменные мы объявляем где хотим а не вначале...
» WarCraft 3 / Как бороться с утечкой Handle при волнах
» WarCraft 3 / Как бороться с утечкой Handle при волнах
Trig_Star_Set_Add_Actions не обнулена локалка, кучка бж функций.
» WarCraft 3 / Как бороться с утечкой Handle при волнах
» WarCraft 3 / Как бороться с утечкой Handle при волнах
» WarCraft 3 / Как бороться с утечкой Handle при волнах
» WarCraft 3 / Способность "Иллюзии" - (Мастер Клинка)
Вот пример:
Для начала нам нужно создать иллюзии героя, а потом скрыть всех их, так же сделав визуальный эффект (если что то зеленые тени, это снаряды).
» WarCraft 3 / есть ли ограничения EVENT на вк3?
» WarCraft 3 / Требуется формула для скилла jass.
» WarCraft 3 / Требуется формула для скилла jass.
Если хочется сделать параболическую траекторию, то вот ссылочка
» WarCraft 3 / GetLocalPlayer и десинхрон
Разумеется локально хайдить виджеты низя.
» WarCraft 3 / GetLocalPlayer и десинхрон
» WarCraft 3 / Способности иллюзии, анимация иллюзии
Иллюзий найти плевое дело, есть проверка IsUnitIllision а так же событие Юнит призвал вызванное существо, ибо все иллюзии суммоны от конкретных способностей, создать иллюзию триггерно, без способности и юнита не получится...
Если вам нужны именно клоны героя (как арк варден в доте или мипо) то вам нужно создавать героя, обнулять у него все лишнее (вроде отображать как героя на карте команд, скрыть сообщение о гибели), так же необходимо триггерное слежение за такой иллюзией.
» WarCraft 3 / есть ли ограничения EVENT на вк3?
» WarCraft 3 / есть ли ограничения EVENT на вк3?
Так же не забываем акшены и кондишены и боолеспры - это хендлы которые сидят в пямяти, таймер берет только аргумент code.
» WarCraft 3 / есть ли ограничения EVENT на вк3?
» WarCraft 3 / есть ли ограничения EVENT на вк3?
Мб у тебя какие то ошибки в коде, дырявые триггеры которые по 100500 раз срабатывают в коде.
Ред. quq_CCCP
» WarCraft 3 / Для каждого юнита дами юнит
» WarCraft 3 / Замедление с малым периодом
Ред. quq_CCCP
» WarCraft 3 / Плавное увеличение высоты юнита
Как проверить что юнит получил молотком бурь в задницу, да проще пареной репы - ждем урон 0.00 ед. и бафф абилки, разумеется аксид бомбу тогда не юзаем ни для чего другого, иначе будет беда ну а со станами пофиг. При такой системе не будет проблем с блинками, спелл блоками и так далее, стандартные снаряды близзардов куда удобнее и красивее даммиков.
» WarCraft 3 / Venomus Gale
» WarCraft 3 / Замедление с малым периодом
» WarCraft 3 / Построено ли здание
» WarCraft 3 / Воостановление карты после вылета
Если используешь JNGP - то папочка backups в помощь, там твои труды за полгода=)
» WarCraft 3 / Смещение юнитов в игре.
Дома можно делать и с помощью разрушаемых объектов, чтобы не так нагружать игру, необходимые события триггеров есть и разрушаемых объектов.