Здраствуйте многоуважаемые господа! Чесно признаюсь, я дуб дубом, но учусь. Мне нужна ваша помощь, я хочу сделать так чтобы плавающий текст перемещался вместе юнитом с учетом того что таких юнитов будет много, за код не шарю.
Ниже прикрепил мою попытку воплотить задум, но, естественно, ничего не работает.
`
ОЖИДАНИЕ РЕКЛАМЫ...
2
26
2 недели назад
Отредактирован Extremator
2
Хреновая идея, т.к. у игры лимит на число одновременно отображаемых плавающих текстов (100 шт. вроде). Поэтому в лучшем случае создавать их все скрытыми, и показывать только те, которые нужно в данный момент видеть. В зависимости от реализации и нужд, это может быть как и бесполезной нагрузкой, так и вполне реализуемой механикой (смотря что именно это будет).
По скриншотам:
  1. На первом скрине, второе действие, цикл А от 1 до 100, ты указал "выбранный юнит". В событии "игрок пишет в чат" вообще нет юнитов отвечающих ему как-либо (т.е. здесь юнит будет отсутствовать). А вообще - выбранный юнит это тот, которого ты пытаешься сгруппировать и с ним уже происходит работа (через ForGroup).
В следующем действии ты обращаешься к отряду (группируешь юнитов) и создаёшь плавающий текст у "выбранного юнита". Здесь выбранный юнит это тот с которым происходит работа во время перебора всего отряда. Но ты совершенно неправильно применяешь цикл и попытку нумеровать пары юнит-текст.
  1. На втором всё вроде нормально, кроме того моменты что в цикле Б ты ссылаешься на целую А. Ну а вообще должно работать, если переменные правильно запишешь.
В общем. Там где создаёшь текст, тебе нужно сделать счетчик - создай целочисленную переменную и устанавливай её значение на +1 от текущего ( set N = N + 1 ). Сразу после создания текста, без цикла Б, установи переменную "text" как последний созданный текст, но в качестве индекса массива используй не целую Б, а свою новую переменную (которыю ты делаешь как +1).
set N = N + 1
set text[N] = Последний созданный текст
Так же сделай и с юнитом - запиши выбранного в переменную init_t[N].
Второе действие в первом триггере - удали. Выбранного юнита ты будешь записывать как я тебе описал выше. Но скорее всего тебе придется либо обнулять N перед группированием, либо придумать как переписывать текущие тексты не создавая лишних... Это по-сути не сложно, но доя тебя пока явно сложно. Попробуй хотя бы так.
Ответы (2)
0
1
2 недели назад
0
Extremator, Так, уже есть прогрес. Текст перемещяєтся на позицию юнита, но если создать второй текст, то первий перестает перемещятся.
Загруженные файлы
0
26
2 недели назад
0
ЛооуХпГуль, при создании новых нужно что-то делать со старыми. Как вариант - проходиться циклом по всем и удалять их. Но я бы всё же поискал способсоздавать только для тех юн тов, которые еще не имеют своего закрепленного за ними текст-тага.
Здесь скорее надо реорганизовать момент создания пар юнит+текст, и выбирая всех нужных юнитов применять к каждому этот метод. А движение всех текстом будет осуществляться отдельным глобальным методом.
0
18
2 недели назад
0
Тексттагам можно задать только определённое прямое движение и стартовые координаты, привязать к юниту, как эффект, не выйдет. Можно, конечно периодически ими спамить, каждую секунду, но 1 - их все не будет видно, 2 - громоздкая система получится
Ответы (7)
0
29
2 недели назад
0
EugeAl, может не стоит блестать своими познаниями и вводить людей в заблуждение?
native SetTextTagPos takes texttag t, real x, real y, real heightOffset returns nothing
0
18
2 недели назад
Отредактирован EugeAl
0
nazarpunk, ну и что, это привязка к юниту, что ли? Он прыгать будет с места на место, если ему периодически координаты менять, а автор просил именно привязку. Тем более автор на Гуи делает
Даже если каждые 0,01 сек ему позицию менять, все равно это заметно, некрасиво выходит. Да и утечно на гуях получится
А про эту функцию я забыл, сорян
0
29
2 недели назад
0
Он прыгать будет с места на место, если ему периодически координаты менять
А почему в этой карте не прыгает?
Да и утечно на гуях получится
Кто-то заставляет писать на гуях?
0
18
2 недели назад
0
nazarpunk, Не знаю, на джассе написана наверно
Автор пишет на гуях, значит умеет он писать только на гуях и ответ ему нужен на гуях
либо если охота, можешь сделать автору системку на джассе, со всеми триггерами, впихнуть её в карту-пример и разжевать, как её активировать на гуях )
1
26
2 недели назад
1
ну и что, это привязка к юниту, что ли? Он прыгать будет с места на место
Но ведь именно так и реализовывали всегда движение снарядов - мгновенно телепортируя объект ~30 раз в секунду.
Разве нет? И все всё всегда хавали ))
0
29
2 недели назад
0
Автор пишет на гуях, значит умеет он писать только на гуях и ответ ему нужен на гуях
Никто не мешает автору подождать ответа на гуях.
либо если охота, можешь сделать автору системку на джассе, со всеми триггерами, впихнуть её в карту-пример и разжевать, как её активировать на гуях )
Лично мне неохота, может ты как защитник гуёв возьмёшься?
Но ведь именно так и реализовывали всегда движение снарядов - мгновенно телепортируя объект ~30 раз в секунду.
Разве нет? И все всё всегда хавали ))
Я тебе даже больше скажу - человечество ещё не изобрело ничего лучше, как мгновенно телепортировать пиксели по экрану FPS раз в секунду. И все до сих пор хавают.
0
18
2 недели назад
0
nazarpunk, мне тоже лень, вот автополёт челу на одну карту в свое время было интересно реализовать, я сделал, а тут неохота
1
37
2 недели назад
Отредактирован ScorpioT1000
1
Задача и лимит решены в этой карте, она открыта xgm.guru/p/wc3/new-year-2010
Ответы (2)
0
1
2 недели назад
0
Задача и лимит решены в этой карте, она открыта xgm.guru/p/wc3/new-year-2010
Видел карту, очень класно работает, но там код, я не понимаю как можно подстоить его под мои нужды, а именно сделать так чтобы можно было именовать юнитов спомощю команды в чат
0
37
2 недели назад
0
ЛооуХпГуль, сделать промежуточное состояние в памяти (массив или хеш таблица). Тоесть твоя логика игры меняет эту память. А параллельно идет таймер, который ходит по этой памяти и обновляет уже самих юнитов как отдельный процесс
0
27
2 недели назад
Отредактирован rsfghd
0
Ты на втором скрине юзаешь цикл Б, но ссылаешься на целое число А цикла, а не Б
Ай пофиг, всё разжевали
0
2
2 недели назад
0
Надеюсь мое решение поможет или подтолкнет к решению.
INDEX_TT - номер текстага
TT - сам текстаг
UT - юнит, к которому прикреплен тт
Загруженные файлы
Ответы (1)
0
29
2 недели назад
0
IzobretatelBoom, ужасное решение.
Всех нужных юнитов нужно добавлять в группу, чтоб самому не возиться с дубликатами. Созданный текстаг сохранять на хэндл юнита в хэштаблицу. Ибо в игре лимит только на отображаемые текстаги. Далее перебором всех юнитов в группе отображать или скрывать текстаг для локального игрока. В принципе ничего сложного, но без умения думать через мозг задача нерешаема.

P.S. В UjAPI количество одновремменных текстагов увеличено до 1024.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.