11

» WarCraft 3 / Получение координат каждого юнита в группе

if x < udg_minx then
Хорошо, чему тогда в начале равна глобльная ?:D
biridius:
Чтобы найти ближайшего юнита, нужно еще сохранить в переменные целевую точку от которой считать расстояние.
Да, точка сохранена уже.
Если что, я на джассе пишу, а не на триггерах)
11

» WarCraft 3 / Получение координат каждого юнита в группе

можно делать через глобальные переменные
Не совсем понял: если у меня таких групп будет неизвестно сколько много по всей карте одновременно, то надо в хеш? Иначе дичь. Но логика ясна
biridius:
мб тебе нужно найти ближайшего юнита к кастеру или тип того?
Именно так!
То есть, типо надо скорее наименьший вектор найти из всех, что ведут к кастеру от каждого в группе.
11

» WarCraft 3 / Получение координат каждого юнита в группе

» code
Спасибо! А куда я могу сохранить данные из функции для каждого из юнитов, чтоб потом выбрать к примеру юнита с самым большим ХП? Если я к примеру сохраню в хэш каждого или ещё куда-то. Как мне потом получить эту базу данных?
11

» WarCraft 3 / Получение координат каждого юнита в группе

biridius:
в ГУИ картинках есть категория Отряд, там есть "Pick every unit in ..."
Эта команда означает, что последующий код будет относиться к каждому юниту по отдельности? А не к отряду, так что ли?
11

» WarCraft 3 / Получение координат каждого юнита в группе

biridius:
можно, а в чем сложность? сделать две глобалки для X и Y, через перебор группы сравнивать координаты
Не понимаю, как обратиться к каждому юниту в группе. Какая команда
11

» WarCraft 3 / Где взять норм варкрафт

quq_CCCP:
На торрентах, лучше всего оригинальные образы дисков софтклаба, с ними не будет проблем. Увы скинуть не смогу, вес у образов по гигу.
А ссылку можно плз?) и какой именно генпак пойдёт на нём)
11

» WarCraft 3 / Что за ошибка?

PT153:
Ты делаешь возврат из функции, а потом обнуляешь переменную. Тут вообще не нужна переменная unit.
Типо пока я не пользовался ею, её нельзя обнулять?
PT153:
Ты делаешь возврат из функции, а потом обнуляешь переменную. Тут вообще не нужна переменная unit.
Лол, убрал, сохранилось. А разве я не устраняю утечки таким образом?((
11

» WarCraft 3 / Что за ошибка?

Bergi_Bear:
потому что аниме
А может карта в формате луа?
Минут 15 назад ещё не вылетало. В параметрах карты JASS_SCRIPT
11

» WarCraft 3 / CreateTimer

действия — скрыть кастера, создать таймер, сохранить на этот таймер кастера и целевые координаты применённой способности, затем запустить его с задержкой 1.5 секунды на функцию, в которой из таймера будут выгружены координаты с юнитом, юнит будет в них перемещён (кстати, перемещать ничто не мешает сразу, разницы в игре не будет, а данных меньше таскать/хранить) и раскрыть кастера.
Да, так меньше данных сохранять придётся, спасибо за совет) так и сделаю щас
11

» WarCraft 3 / CreateTimer

integer i = 0
loop
CreateTrigger()
exitwhen (i > 8000)
endloop
Ок, тогда я начинаю с нуля писать карту...чтоб эта моя абилка в одном триггере уместилась
Clamp:
Настоятельно советовал бы так и сделать при первой же возможности. LUA, в отличии от JASS2, используется далеко не только в проприетарном редакторе одной-единственной игры.
Слышал об этом) а в новом редакторе точно будет LUA? Или никто не знает/слухи?
Или луа только в jass new gen pack есть:D
Clamp:
не понял, как
Пасиб))
11

» WarCraft 3 / CreateTimer

Можешь посмотреть вот эту карту, чтобы понять, вещи какого уровня возможно нормально реализовывать в редакторе.
По скринам видно, что какая-то дичь(в хорошем смысле) сделана)) Хотя, думаю, даже скачать можно, только не понял, как. Жаль, что интерфейс пока нельзя менять:D
11

» WarCraft 3 / CreateTimer

Clamp:

Если есть анимация у скилла, то можно пикать всех юнитов в атакованной зоне не сразу, как юнит нажал, а через время анимации, к примеру. И обмен от этого будет работать так же: типо я жму обмен и дальше включается триггер: если я пикнут такой-то абилкой,(всем пикнутым задаётся какое-то значение прямо перед нанесением урона), то работает обмен и я типо исчезаю и доджу абилку.
Пока это неактуально, как я понимаю, а когда станет актуально — ты и сам поймёшь, что не всё так просто =)
К тому времени уже рефорджеж выйдет(которого, как я понял, весь сайт ждёт только для нового редактора)). Там видно будет, может, на луа перейду, может, инструкция будет встроенная, ходили слухи.
Если на триггерах можно сделать, то разве это не значит, что на джассе тоже можно? Или типо так как муи, то сложнее в разы?
Я думаю, может просто много оперативки жрать карта, где на каждую абилку куча проверок кучи юнитов. Но я не имею представления, как сильно это влияет, сколько обычно операций в секунду на карте и каких именно, сколько это памяти.
Я, по-моему, уже щас могу реализовать уклон он абилки на конструкторе триггеров без джасса, на глобальных переменных. Без глобальных сложнее, конечно))) Но по-моему, только тем, что можно запутаться, ибо слишком много проверок, но логика-то та же, а это главное)
Clamp:
DopaMine, просто попробуй их сделать тупо по тексту, там на самом деле строк 20-30 от силы получится.
По вашему?
Clamp:

Вообще чуть не забыл сказать, что идея конкретной механики этой абилки просто отличная.
Я просто в детстве наруто смотрел. Верил, что в жизни тоже есть такие ниндзя и умеют такие техники, поэтому я просто спёр оттуда.)
И странно, почему в картах наруто я такой механики не видел. Обычно просто невидимые становятся применяющие.
Спасибо! У меня ещё куча нестандартных(для карт варкрафт) механик на основе наруто в голове:D
Clamp:
DopaMine, просто попробуй их сделать тупо по тексту, там на самом деле строк 20-30 от силы получится.
Главный вопрос, кстати тогда: это всё можно засунуть в один триггер? Удобнее, когда на одну абилку 1 триггер. В конструкторе триггеров не получилось. А на джассе? Если к тому же можно несколько событий в один триггер пихать.
11

» WarCraft 3 / CreateTimer

Кстати, нужно чтобы этот таймер был только один на юнита или иметь дополнительную логику проверки таймингов, чтобы не получилось подобной ситуации:
Так у меня планируется один таймер. Так разве не проще? Чтоб именно разрешалось уже телепортироваться, если бьют, а не получать тру на условие, из-за которого типо можно нажать, нельзя нажать, пол секунды прошло- бить начали и сразу перестали. Значит, что через 0.1 секунды уже нельзя применить обмен, как я понял. В общем, сложно вы описали. Два таймера...(
11

» WarCraft 3 / CreateTimer

Там нормально так подводных камней =(
Ничего, я планирую вообще без автоатак сделать. А чтоб это была кнопка "нанести удар" и имела перезарядку, у всех разную. Условный сасуке имеет перезарядку удара - 0.3 сек, а наруто - 1 секунду. МИКРОКОНТРОЛЬ рулит)
Ещё думать буду. Всё решаемо, я думаю)
11

» WarCraft 3 / CreateTimer

Clamp:

Прямо с ходу в голову не пришло изящных решений насчёт триггера уклонения от абилок. Тебе придётся каждый раз чекать зону нанесения урона несколько раньше, чем фактически наносить в ней урон, чтобы для всех противников в ней переключить разрешающие применение флаги и дать игрокам время на отреагировать.
Если есть анимация у скилла, то можно пикать всех юнитов в атакованной зоне не сразу, как юнит нажал, а через время анимации, к примеру. И обмен от этого будет работать так же: типо я жму обмен и дальше включается триггер: если я пикнут такой-то абилкой,(всем пикнутым задаётся какое-то значение прямо перед нанесением урона), то работает обмен и я типо исчезаю и доджу абилку.
11

» WarCraft 3 / CreateTimer

действия — сохранить на юнита-цель флаг "сейчас можно применить Каварими но Дзюцу" (как я понимаю, это ты и делаешь в коде в посте), затем создать таймер и запустить его на функцию, в которой этот флаг поменяется на обратное значение/удалится (больше ничего).
Так таймер должен запуститься, именно когда я нажал кнопку, а не когда я её могу нажать.
11

» WarCraft 3 / CreateTimer

событие — юнит атакован (то есть был отдан приказ атаки с этим юнитом в качестве цели и он находится в пределах дальности атаки атакующего)
Если юнит начал быть атакованным, то через 10 секунд после того, как его начали атаковать, всё ещё будет проверяться условие, что у атакованного есть абилка обмена?
11

» WarCraft 3 / CreateTimer

(то есть был отдан приказ атаки с этим юнитом в качестве цели и он находится в пределах дальности атаки атакующего)
И да, здесь что, надо расписывать, что именно значит "юнит атакован"? Я вообще буду потом сложнее делать, чтоб автоатаки не было, а был скилл у всех с кулдауном, который наносит урон ближайшему юниту в области перед применившим(это видимо через угол поворота юнита и косинус для Y и синус для X этого угла надо будет использовать). Но пока сделал просто при срабатывании от автоатаки, а не от урона и не от абилок. Так как абилки я хочу делать направленными не на юнита, а на область или ненаправленные.
11

» WarCraft 3 / CreateTimer

Если это то, о чём идёт речь, то я бы делал так:
Не совсем правильно я описал. Юнит может применить способность в любой момент. Но если он применил и после этого в течение секунды атакован, то сработает обмен. А если он применил и не атакован, то идёт кулдаун и чакра потрачена впустую)
11

» WarCraft 3 / CreateTimer

Условие тоже является функцией (на 3 скрине самая верхняя)
Если функция-условие вернет true - значит триггер начнет вызывать функции-действия
Если вернет false - значит не будет вызывать
Я правильно понимаю, что это TRUE из любой функции, которая возвращает тип булин, является глобальной для всего триггера. И если этот глобальный булин равен фолс, то вообще ни одна функция не сработает. То есть триггер сначала смотрит на условие и затем на протяжении всего триггера - на булевское значение всего триггера?
Hodor:
Ща примеры подгоню
Буду ждать. Но я вот, что хотел всегда понять ещё: несколько событий могут быть написаны на одного юнита? То есть, чтоб что-то сработало, когда юнит и атакованный, к примеру, и входящий в зону.
11

» WarCraft 3 / CreateTimer

Иными словами, опиши что должно происходить при применении юнитом абилки с целью-точкой? В чём механика способности заключается-то?
Пока я до этого не дошёл. Я сначала на триггерах сделал - всё идеально работало. Потом понял, что работает только для одного кастера. И пока эффекты после применения способности и получения удара у меня на jasse не прописаны. Но там будет несколько таймеров, так как бревно появляется не сразу, спецефекты удаляются, но не сразу. Так что надеюсь, щас разберусь и без ошибок буду делать дальше с таймерами
11

» WarCraft 3 / CreateTimer

В верхнем методе у тебя caster всегда null будет, если он вызывается только таймером, потому что GetSpellAbilityUnit() возвращает реакцию на событие, а оно к моменту вызова уже целую секунду как прошло.
Не очень понял. Но то, что в действиях по истечении таймера нельзя писать ..GetUnit.. - понял.
Clamp:
Или это речь всё ещё про Каварими но Дзюцу?
ДА)