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


Фотография

Как отдать приказ всем ботам одной стороны?


Лучший Ответ kolyanya , 02 November 2018 - 16:36

while {alive player} do {
 
_grps = [];
 
{if (side _x == east) then {_grps set[count _grps, _x]}} foreach AllGroups; 
 
{ _x move position player} foreach _grps;
 
sleep 15;
 
};
Перейти к сообщению


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

#1 OFFLINE   kolyanya

kolyanya

    Мл.сержант

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

Отправлено 22 October 2018 - 17:27

Всем доброго времени суток, у меня такой вопрос как отдать приказ например двигаться на позицию игрока, всем ботам вражеской стороны? Чтобы не прописывать каждой группе по отдельности а прописать эту команду в одном скрипте и спавнить врагов помаленьку.


Сообщение отредактировал kolyanya: 22 October 2018 - 17:28

  • 0

#2 OFFLINE   moroz89

moroz89

    Мл.сержант

  • Пользователи
  • 116 сообщений

Отправлено 22 October 2018 - 18:42

Условие проверяющее сторону бота side _x == “EAST” и forEach allUnits
  • 0

#3 OFFLINE   Schatten

Schatten

    Капитан

  • Пользователи
  • 1791 сообщений
  • Откуда:Тбилиси, Грузия

Отправлено 22 October 2018 - 18:50

moroz89, side возвращает сторону, а не строку.
 
kolyanya, как-то так:

{
    if ((side _x) == _side) then {
        _x move _position;
    };
} forEach allGroups;

Кроме этого, надо предусмотреть случай создания новых групп.


Сообщение отредактировал Schatten: 22 October 2018 - 18:52

  • 0

#4 OFFLINE   kolyanya

kolyanya

    Мл.сержант

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

Отправлено 22 October 2018 - 20:03

moroz89, side возвращает сторону, а не строку.
 
kolyanya, как-то так:

{
    if ((side _x) == _side) then {
        _x move _position;
    };
} forEach allGroups;

Кроме этого, надо предусмотреть случай создания новых групп.

Чёт не получается.


  • 0

#5 OFFLINE   moroz89

moroz89

    Мл.сержант

  • Пользователи
  • 116 сообщений

Отправлено 22 October 2018 - 20:06


moroz89, side возвращает сторону, а не строку.

kolyanya, как-то так:

{
    if ((side _x) == _side) then {
        _x move _position;
    };
} forEach allGroups;
Кроме этого, надо предусмотреть случай создания новых групп.
Чёт не получается.
Надеюсь вы данные свои в скрипт вписали, а не просто скопировали?
  • 0

#6 OFFLINE   kolyanya

kolyanya

    Мл.сержант

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

Отправлено 22 October 2018 - 20:10

 

 

moroz89, side возвращает сторону, а не строку.

kolyanya, как-то так:

{
    if ((side _x) == _side) then {
        _x move _position;
    };
} forEach allGroups;
Кроме этого, надо предусмотреть случай создания новых групп.
Чёт не получается.
Надеюсь вы данные свои в скрипт вписали, а не просто скопировали?

 

_position=position player;
_side=EAST;
Так?

  • 0

#7 OFFLINE   moroz89

moroz89

    Мл.сержант

  • Пользователи
  • 116 сообщений

Отправлено 22 October 2018 - 21:30

Да, все верно. Как запускаете?
  • 0

#8 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 23 October 2018 - 00:22

Если мне память не изменяет, то если на боте крутится симуляция AI, то боту абсолютно ровно до команды move, и некоторых других.

Хотя, может и ошибаюсь. Но в любом случае такие вещи лучше реализовывать именно тем функционалом который для этого и существует.

 

Получаете все группы требуемой стороны, и в цикле перебора групп, выписываете группам вайпойнт на перемещение до указанной позиции.


Сообщение отредактировал SteelRat: 23 October 2018 - 00:24

  • 0

#9 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 23 October 2018 - 00:30

 

Чтобы не прописывать каждой группе по отдельности а прописать эту команду в одном скрипте и спавнить врагов помаленьку.

 

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

Единственное что нужно сделать к модулю, это при спавне очередной порции ботов, раздать отрядам задачи, например тоже самое перемещение до точки контакта с противником, иначе боты после спавна так и останутся тупо бездельничать на позиции спавна.


  • 0

#10 OFFLINE   kolyanya

kolyanya

    Мл.сержант

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

Отправлено 02 November 2018 - 16:36   Лучший Ответ

while {alive player} do {
 
_grps = [];
 
{if (side _x == east) then {_grps set[count _grps, _x]}} foreach AllGroups; 
 
{ _x move position player} foreach _grps;
 
sleep 15;
 
};

  • 0




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