Перейти к содержимому


Фотография

Помогите с командой setCurrentWaypoint.


Лучший Ответ kolyanya , 29 March 2018 - 18:57

Получилось так:

 

while {alive player} 
                     do 
                        {
 
if (vectorMagnitude velocity player > 0) then 
 
                        { 
 
_wp = group d1 addWaypoint [(player getRelPos [5,260]), 0];
_wp setWaypointType "MOVE";
_wp setWaypointSpeed "FULL";
_wp setWaypointBehaviour "CARELESS";
_wp setWaypointCombatMode "BLUE";
_wp setWaypointStatements ["true", ""];
sleep 2;
deleteWaypoint ((waypoints group d1) select 0);
                        };
 
                        }; 
 
Всё работает как надо, большое вам обоим спасибо. 
Перейти к сообщению


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 8

#1 OFFLINE   kolyanya

kolyanya

    Мл.сержант

  • Пользователи
  • 107 сообщений
  • Откуда:улан-удэ

Отправлено 29 March 2018 - 08:46

Доброго времени суток, пытаюсь разобраться с командой "setCurrentWaypoint" но ничего не выходит.

В общем создаю скрипт чтобы боты бежали за мной:

 

while {alive player} 

                              do 
                            {
                             _wp = group s2 addWaypoint [[0,0,0], 0];
                             _wp setWaypointPosition [(player getRelPos [5,260]), 0];
                             _wp setWaypointType "MOVE";
                             _wp setWaypointSpeed "FULL";
                             _wp setWaypointBehaviour "CARELESS";
                             _wp setWaypointCombatMode "BLUE";
                             _wp setWaypointStatements ["true", ""];
                            sleep 3;
                            }; 
Но когда я вписываю в скрипт эту команду "setCurrentWaypoint" боты начинают бегать между двух первых путевых точек.
Вписываю команду так:  group s2 setCurrentWaypoint [group s2, 1];
По описанию команды она должна оставлять одну путевую точку а остальные удалять.
Подскажите пожалуйста что я делаю не так.

  • 0

#2 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 29 March 2018 - 14:55

Но когда я вписываю в скрипт эту команду "setCurrentWaypoint" боты начинают бегать между двух первых путевых точек.

Все просто: на старте каждый юнит уже имеет одну маршрутную точку - его начальную позицию, когда вы создаете новую маршрутную точку с индексом 0 она встает перед этой "начальной" маршрутной точкой, далее вы ссылаетесь на эту новую маршрутную точку, боту бежит к ней, а т. к. дальше по списку у нас "начальная" маршрутная точка, то он возвращается в начало

По описанию команды она должна оставлять одну путевую точку а остальные удалять.

Подскажите какое из этих слов отвечает за удаление маршрутных точек, а то я что-то английский забыл:

Sets the currently active waypoint for a group.

?

Сообщение отредактировал vlad333000: 29 March 2018 - 14:55

  • 0

#3 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 29 March 2018 - 15:04

В общем создаю скрипт чтобы боты бежали за мной:

Не легче ли просто присоединить бога к группе игрока, чем пилить костыли?
  • 0

#4 OFFLINE   kolyanya

kolyanya

    Мл.сержант

  • Пользователи
  • 107 сообщений
  • Откуда:улан-удэ

Отправлено 29 March 2018 - 18:02

 

В общем создаю скрипт чтобы боты бежали за мной:

Не легче ли просто присоединить бога к группе игрока, чем пилить костыли?

 

Обычно если у меня есть боты в подчинении я отправляю их вперёд а сам потихоньку сзади подкрадываюсь, вот я и хочу исключить такую возможность у игрока.

А в скрипт я вписал эту команду: 

deleteWaypoint ((waypoints group s2) select 0);

вроде бы работает как я задумал но когда я стою на месте у бота спавнится точка не в одном месте а немного в других местах и он начинает бегать в разные стороны в небольшом радиусе.

Отсюда вытекает вопрос можно ли как-то отслеживать стоит игрок на месте или передвигается?


  • 0

#5 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 29 March 2018 - 18:13

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

Можно ли отследить как игрок двигаетеся? А вам позиция игрока на что дана?
  • 0

#6 OFFLINE   kolyanya

kolyanya

    Мл.сержант

  • Пользователи
  • 107 сообщений
  • Откуда:улан-удэ

Отправлено 29 March 2018 - 18:18

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

Можно ли отследить как игрок двигаетеся? А вам позиция игрока на что дана?

Позиция игрока? Не понял ход мыслей.


  • 0

#7 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 29 March 2018 - 18:20

 

Отсюда вытекает вопрос можно ли как-то отслеживать стоит игрок на месте или передвигается?

_speed = vectorMagnitude velocity player;
if (_speed > 0) then {
	//тело в движении
};

  • 0

#8 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 29 March 2018 - 18:22

kolyanya, -_- игрок может двигаться без измнения своей позиции? Наврятли... <unit_moved> := <new_position> != <old_position>
  • 0

#9 OFFLINE   kolyanya

kolyanya

    Мл.сержант

  • Пользователи
  • 107 сообщений
  • Откуда:улан-удэ

Отправлено 29 March 2018 - 18:57   Лучший Ответ

Получилось так:

 

while {alive player} 
                     do 
                        {
 
if (vectorMagnitude velocity player > 0) then 
 
                        { 
 
_wp = group d1 addWaypoint [(player getRelPos [5,260]), 0];
_wp setWaypointType "MOVE";
_wp setWaypointSpeed "FULL";
_wp setWaypointBehaviour "CARELESS";
_wp setWaypointCombatMode "BLUE";
_wp setWaypointStatements ["true", ""];
sleep 2;
deleteWaypoint ((waypoints group d1) select 0);
                        };
 
                        }; 
 
Всё работает как надо, большое вам обоим спасибо. 

  • 0




Яндекс.Метрика