M.A.X.    Вы вошли как гость
Российский Клуб игроков M.A.X.
 
[Новости]   [Новичку]   [Энциклопедия]   [Документы]   [Файлы]   [Игроки]   [Архивы]   [Архив форума]  
[Новый сайт]   [M.A.X. Gold]   [Партии]  

 
 
 
Архив форума  МаксГолд
[Основной форум] [Голосования] [МаксГолд] [Off-Topic]
 


(Протестировано) Баги отхода инфильтраторов (невидимок)  -  Hruks,  15.12.2010  2:39:19

Отход сделан криво.
Неверно определется запас хода, в результате, если филя ходил по диагонали, либо решил отойти по диагонали и у него оставался недостаточный запас, то всё встаёт колом - филя не движется и юнит, готовый его задавить (обнаружить) тупит.
Кроме того, явно видно, что юнит, наезжающий на невидимку тупит - ждёт пока дорогу освободят. Невидимки при таком раскладе вычисляются внимательным игроком на раз.

1. В функции set_move_away проверяется флаг юнита is_moving.
Этот флаг не сбрамывается, если у юнита задан маршрут, но не хватает запаса хода для совершения отхода.
Нужно заменить на какой-то более подходящий (я сам в них путаюсь, тысячи их!)

2. Запас хода сравнивается с 0.
cur.speed сравнивается с нулём, а путь pval:=10*(1+0.42*ord((u.x<>u.xt)and(u.y<>u.yt)))).
Нужно тогда проверку после вычисления пути сделать.
Также непонятно, почему путь состоит из 2х значений (второе вроде бы лишь для поворота используется) и у каждого заполнен pval. Что-то тут не верно.

3. Почему для задания пути не воспользоваться функцией set_move_unit(n,u.x+ao,u.y+bo)?
Путь при этом автоматически выставится.

4. Чтобы юниты не тупили и не выдавали инфильтраторов, предлогаю не двигать невидимок, а телепортировать их мгновенно. Конечно, проверки запаса пути и проходимость в точку долны выполняться. Просто перемещение должно быть не своим ходом, а этаким резким отпрыгиванием :)
Юнит всё равно невидим - никто даже не заметит такого манёвра :)

    ответы :