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


Фотография

Выбор еллимента из массива!ПОМОГИТЕ


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

#1 OFFLINE   lopster102

lopster102

    Ст.сержант

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

Отправлено 05 November 2016 - 21:20

ПРИВЕТ ВСЕ!!! УВАЖАЕМЫЕ помогите пожалуйста как быть чтобы !!!не давно обращался  с вопросом выбора рандомнного места на карте для начала миссии!!!! СПАСИБО ЗА ОТВЕТЫ 

но этот вариант не совсем подходит мне потому что  миссия может появляться после завершения в том же месте по несколько раз а задача чтобы миссии ротировались линейно  по карте ! то есть 

 сейчас вот так 

 

 

_RespawnBase =  selectrandom [getmarkerpos"RespawnBaseMarker",getmarkerpos"RespawnBaseMarker_2"];

 

while {true} do {

 

  createUnit ["C_man_polo_1_F",_RespawnBase ,[], 1, "form"]; 

 

}; 

 

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

 

а как сделать чтобы позиция маркера из массива выбиралась каждый цикл поочередно а не рандомно ???

 

 

первый цикл   выбирался вот этот маркер       -        [getmarkerpos"RespawnBaseMarker"]

второй цикл    выбирался вот этот маркер       -        [getmarkerpos"RespawnBaseMarker_2"]

третий цикл    выбирался вот этот маркер       -        [getmarkerpos"RespawnBaseMarker"]

четвертый цикл выбирался вот этот маркер    -        [getmarkerpos"RespawnBaseMarker_2"]

пятый цикл выбирался вот этот маркер          -         [getmarkerpos"RespawnBaseMarker"]

 

и так далее.....

 

 

 

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

 

 

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

 

_RespawnBase =   [getmarkerpos"RespawnBaseMarker"];>>>нужно чтобы вот этот маркер уезжал в другое место после каждого респавна на нем юнитов........

 

x = true;

while {true} do {

if (x) then {

x = false;

 

 e2 =  createUnit ["C_man_polo_1_F",_RespawnBase ,[], 1, "form"]; 

waituntil {!alive e2};

x = true;

}; 

}; >>>>>>вот надо чтобы следующий юнит уже появился в "RespawnBaseMarker" который уедет на другое место.......


Сообщение отредактировал lopster102: 06 November 2016 - 00:23

  • 0

#2 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

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

Отправлено 11 January 2017 - 10:26

Скинь полностью скрипт суда
Если ещё актуально
  • 0

#3 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

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

Отправлено 11 January 2017 - 10:34

Или опиши всю суть подробнее, чтобы было ясно для чего это все и как должно работать))
Sleep nвремени
Короче я понял, что нужно, буду дома, напишу

Сообщение отредактировал ReXcOr: 11 January 2017 - 13:09

  • 0

#4 OFFLINE   ReXcOr

ReXcOr

    Ст.сержант

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

Отправлено 11 January 2017 - 16:35

Я не Лингвист и не супер скриптер, так что если кому-то, что-то будет мазолить глаза, размазольте их обратно.

Описал каждую строчку как мог

Это готовый скрипт, просто копируй его и вставь в свой *.SQF

 

 

_markers = ["marker_0","marker_1","marker_2","marker_3"]; //Наш массив с маркерами
TurnOn = true; //Когда True - скрипт активен
_l = 0; //С помощью _l вычисляем очередность выбранного элемента в массиве, нельзя дать _l выйти за пределы количества элементов в массиве, а то будет ошибка (короче дальше увидешь)
_GroupSide = createGroup east; //сторона, за которую будет заспавнен юнит
 
scopename "all"; //цикл
while {true} do {
UiSleep 1;//ждем, хз для чего, но я всегда так делаю
_all = count _markers; //вычисляем кол-во элементов в массиве маркеров
scopename "spawn";
while {TurnOn} do {
UiSleep 1;//ждем, хз для чего, но я всегда так делаю
_select = _markers select _l; //создаем селектор, что-бы с его помощью выбирать порядковый номер элемента в массиве
_pos = getmarkerpos _select; //приобретаем координаты маркера
_e2 = _GroupSide createUnit ["B_support_GMG_f", _pos, [], 1, "FORM"]; //спавним писюна на координатах _pos
UiSleep 1; //ждем секунду, хз для чего, но я всегда так делаю
_l = _l + 1; //когда юнит заспавнен, заранее переключаем наш селектор на след элемент (в нашем случае на след маркер)
waituntil{!alive _e2}; //ждем пока писюна _е2 поимеет жестокая лайф
if (_l >= _all) then {_l = 0};// проверяем, не выходит ли за пределы массива наш шагомер _l и если выходит, то обнуляем его дабы селектор не выбрал элемент которого не существует в массиве 
};
};
 
Прикрепил пример миссии

Прикрепленные файлы


Сообщение отредактировал ReXcOr: 11 January 2017 - 16:44

  • 0




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