Нужно сделать условие на начало движения боевой единицы и на конец движения. Как?

ваши методы мне не подходят, придётся без этого карту делать :(
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
23
Похожие вопросы:

ответ
Регион будет "содержать юнит" через 0.4 сек после того, как юнит "вошёл в регион". Так что приказы игнорируются из-за невыполнения условия
[решается например вейтом 0.4 сек впереди]
ответ
на каждый снаряд делаешь группу, в нее заносишь всех кто был поражен
done
ответ
Скинь скриншот триггера.
действие - отряд (юнит в областе 1) перейти нападая на противников (центр область 2)
Этот приказ отдавать нужно не отряду (группе юнитов), а единственному юниту.
ответ

А еще у меня там местами xpcall отладочный висит, там где я ловил косяки и не убрал его потом, без него код чуть проще становится, он нужен только для отлова ошибок и в моем случае вывода их на экран.

Это печально, новые костыли, а я уже обрадовался, что ничего обнулять и чистить не нужно =(
Не нужно обнулять локалки в функциях и все что ограниченного срока жизни, но всякие системы хранения данных они же либо глобальные либо в "локальном" скопе всей карты и, соответственно, живут пока загружена карта - там вручную подчищать надо, естественно. Можно делать это полу-автоматически как у меня, можно вручную когда становится известно что данные уже не нужны. Можно было бы использовать таблицу со слабыми ключами, но тогда возникает вопрос что использовать в качестве ключей - можно прямо на самого юнита вешать, чтобы когда игра его удалит из памяти, таблица почистилась сборщиком мусора, но нет гарантии что это будет работать и не будет вызывать десинки т.к. сборщику мусора синхронизация не указ.
Bergi_Bear:
но мне можно себе такой вариант забрать или надо ещё что-то дополнительно записать?
У меня библиотека отгорожена только ради того чтобы автоматизировать сборку мусора и создание новых таблиц при обращении по хендлу на который ничего нет.
Минимальный вариант, наверно, такой:
local HandleData = {} -- я использую локальные переменные в скопе карты, при этом важен порядок но доступ к ним идет чуть быстрее чем в глобальном скопе

function ForceUnit (u,a,d,s,flag)
  local data = HandleData[GetHandleId(u)]
  if (data==nil) then data = {} HandleData[GetHandleId(u)] = data end
  data.a = a
  data.d = d
  data.s = s
  data.flag = flag
  GroupAddUnit(gforce, u)
end
-- --------------
ForGroup(gforce, function()
  local u=GetEnumUnit()
  local h=GetHandleId(u)
  local data = HandleData[h]
  local a=data.a
  local d=data.d
  local s=data.s
  local flag=data.flag
  ...
end
ответ
Я бы поработал с блокираторами пути. Сделать особый блокиратор (только для индикации), который как бы говорит нам о том, что можно идти и под ним, и по нему, а дальше физика в зависимости от текущего положения.
С регионами просто больше времени потратишь

13
Какое именно условие? присваиваешь координаты юнита и координаты конечной дистанции, а дальше двигаешь юнита по координатам и проверяешь лишь условие на дистанцию. х1 и y1 это координаты твоего юнита XY, x2 и y2 это координаты конечно точки.
Загруженные файлы
30
Razor_dex, скорее всего имелось в виду стандартное движение юнита.
28
либо проверять приказ (не оч хорошо), либо проверять дистанцию между координатами
6
Простой ответ:
Если не хочется ничего делать ищи на hiveworkshop IsUnitMoving от Bribe'a. Там есть детект начала движения точно, а вот конец не знаю, еще есть просто условие если юнит двигается.
Непростой ответ:
Это не просто для юзера незнакомого с джасом, тут нужно знать несколько нюансов. Вообще повесить на юнита таймер и проверять расстояние между координатами, если оно больше 0, значит юнит двинулся. Чтобы это было именно событием можно прийти к такому извращению. В событиях в категории игра есть сравнение переменной, оно должно быть реальным и не массивным. Когда по таймеру видно, что юнит сместился ставишь это число на 1 и сразу же обратно на 0. Твой триггер с событием словит это изменение на 1 и посчитает, что твой юнит двинулся. Но это именно извращенский способ потому что, тому кто написал такую систему с нуля это событие вообще не понадобится, это полезно только для гуи юзеров.
30
Чтобы это было именно событием можно прийти к такому извращению.
Почему это извращение? Событие Variable become N во многих системах используется ибо штатного генератора событий не завезли, а писать кастомный pub sub на jass то ещё удовольствие.
Но это именно извращенский способ потому что, тому кто написал такую систему с нуля это событие вообще не понадобится
С чего бы это? Если нужна кастомная система с событиями, которую можно опубликовать и копипастить между картами, то почему бы и не использовать?
6
Чтобы это было именно событием можно прийти к такому извращению.
Почему это извращение? Событие Variable become N во многих системах используется ибо штатного генератора событий не завезли, а писать кастомный pub sub на jass то ещё удовольствие.
Но это именно извращенский способ потому что, тому кто написал такую систему с нуля это событие вообще не понадобится
С чего бы это? Если нужна кастомная система с событиями, которую можно опубликовать и копипастить между картами, то почему бы и не использовать?
Ну опять же, тот кто такие системы делает и без ивентов хорошо их использует, а так да если делать системы для гуи юзеров это хорошая тема, я с этим не спорю :) Я на таких сидел и даже до сих пор пользуюсь одной, не смотря то что полностью переехал на джас)
10
ваши методы мне не подходят, придётся без этого карту делать :(
Принятый ответ
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.