Итак, господа, вопрос таков.
Делаю в своём моде вышки, полезность которой зависит от юнита, которого вы в неё посадите.
Суть вопроса такова - создаём локальные переменные на юнитов, заносим их в хештаблицу, но как в следующем триггере отследить, что именно вон тот юнит, на которого был направлен закл, подошёл к кастующей вышке, а не просто мимо пробегал, или вообще к другой вышке шел?
Юнит при достижении вышки исчезает, а сама она меняется на другую вышку. Вытащить юнита обратно низзя.
В чем же проблема, спросите вы, доставай из хеш-таблицы и не парь нам мозг! Но тут-то и кроется главная загвоздка - что я не могу юзать локальные переменные в событии

Принятый ответ

orc01, есть событие EventUnitsInRange, делаешь триггер, а при постройки башни добавляешь в него это событие для каждой башни, в условиях проверяешь что тот кто подошел нужного тебе типа юнит, ну действия думаю проблем не вызовут...
0
7
6 лет назад
Отредактирован Sergey105
0
заставь юнита двигаться к вышке и начинай отслеживать дистанцию между вышкой и юнитом и если дистанция меньше требуемого то делаешь нужные действия
чтобы узнать дистанцию
x = GetUnitX(вышка) - GetUnitX(юнит)
y = GetUnitY(вышка) - GetUnitY(юнит)
dist = SquareRoot(x*x + y*y);
dist товя дистанция между вышкой и юнитом
и да тебе работать с таймером
0
20
6 лет назад
0
Почему не отследить по погрузке в транспорт или жертвоприношению?
0
7
6 лет назад
0
DemonoiD, ну я предложил как вариант
0
11
6 лет назад
0
DemonoiD:
Почему не отследить по погрузке в транспорт или жертвоприношению?
Так ведь у нас нет погрузки в транспорт. Юнит после этого из игры удаляется. Через жертву я хрен знает как, ибо кода самой способности у меня нет, а в редакторе способностей она не позволяет что-либо существенно поменять. Так же я пробовал и через "сесть на грифона" - но нихрена не получилось.
Sergey105:
заставь юнита двигаться к вышке и начинай отслеживать дистанцию между вышкой и юнитом и если дистанция меньше требуемого то делаешь нужные действия
чтобы узнать дистанцию
x = GetUnitX(вышка) - GetUnitX(юнит)
y = GetUnitY(вышка) - GetUnitY(юнит)
dist = SquareRoot(x*x + y*y);
dist товя дистанция между вышкой и юнитом
и да тебе работать с таймером
Да про таймер-то я знаю, для отслеживания IDшника нужон. Но твой вариант попробую
0
20
6 лет назад
0
orc01, ну Сунь ему тогда бафи или невидимую способность пустышку и по ней чекай.
0
5
6 лет назад
0
а что у тебя с сесть на грифона не устраивает?
0
11
6 лет назад
0
not_name:
а что у тебя с сесть на грифона не устраивает?
Хотя бы то, что юнитов, коих можно посадить в вышку больше одного, а примерно, на деле, 12. А в способности можно задать только одного связанного - следовательно, надо делать 12 отдельных способностей. Удобно будет игроку искать среди них "ну где же, билять, впустить в вышку пехотинца"?
DemonoiD:
orc01, ну Сунь ему тогда бафи или невидимую способность пустышку и по ней чекай.
А толку-то от этого? Чем я проверю, что юнит подошел к вышке? Более того, вышка при этом не одна, их вообще строить можно покуда ресурсы есть - так как узнать что он подошел именно к той вышке, которая его звала?
В событии нельзя юзать локальные переменные, я банально не могу задать "юнит в радиусе от юнита"
0
32
6 лет назад
0
orc01, есть событие EventUnitsInRange, делаешь триггер, а при постройки башни добавляешь в него это событие для каждой башни, в условиях проверяешь что тот кто подошел нужного тебе типа юнит, ну действия думаю проблем не вызовут...
Принятый ответ
0
11
6 лет назад
0
quq_CCCP:
orc01, есть событие EventUnitsInRange, делаешь триггер, а при постройки башни добавляешь в него это событие для каждой башни, в условиях проверяешь что тот кто подошел нужного тебе типа юнит, ну действия думаю проблем не вызовут...
Да решил не извращаться, дал нужным юнитам способность пустышку - теперь они сами бегут к вышке, и при юзании превращаются. Странно, что я до этого не додумался сразу, а мучался исходя от того, что способностью должна обладать вышка... А так юнитам даже указал, какуие бонусы от их нахождения получит вышка(саморемонт от крестьян, замедляющую ауру от волшебниц...)
Чтобы оставить комментарий, пожалуйста, войдите на сайт.