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


Фотография

Удар молнии вокруг игроков.


Лучший Ответ ymok , 11 December 2015 - 14:20

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

соответственно оборачиваем ваш код внутри while циклом foreach, который будет перебирать массив playableUnits, но waitUntil и sleep оставляем снаружи получим:

if (isNil "pre2") then {
pre2 = false;
};
while {true} do {
  waitUntil {pre2};
  {
    //code
  } foreach playableunits;
  sleep _num;
}; 

и player заменяем на _x, _x это текущий элемент массива, в нашем случае конкретный игрок.

Для проверки на локалке вместо playableUnits можно воспользоваться allUnits. Учтите, allUnits возвращает и ботов.

После этого молния будет бить вокруг игроков.

 

Для случайно позиции используйте BIS_fnc_findSafePos функция ищет случайную позицию.

_rabbyarray = [[-98,250,0],[-98,-250,0],[98,250,0],[98,-250,0],[56,250,0],[56,-250,0],[-56,-250,0],[-56,250,0],[0,250,0],[0,-250,0]];
_rabby = _rabbyarray select floor random count _rabbyarray;
BlowoutPos = createVehicle ["Land_Can_Rusty_F", getpos player,[],0,""];
BlowoutPos setPos (player modelToWorld _rabby); Blowout = [BlowoutPos, nil, true] spawn BIS_fnc_moduleLightning;

заменяем на

BlowoutPos = [getPos _x,10,100,0,0,0,0] call BIS_fnc_findSafePos; // ищем координаты не ближе 10 и не дальше 100 метров от игрока
[BlowoutPos, nil, true] spawn BIS_fnc_moduleLightning;

для чего остальные параметры функции BIS_fnc_findSafePos опять же смотрим на офф сайте https://community.bi...fnc_findSafePos

Перейти к сообщению


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

#1 OFFLINE   Targon

Targon

    Ефрейтор

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

Отправлено 10 December 2015 - 14:55

if (isNil "pre2") then {
    pre2 = false;
};

while {true} do {
	waitUntil {pre2};
	_numarray = [8,4,2];
	_num = _numarray select floor random count _numarray;
	_rabbyarray = [[-98,250,0],[-98,-250,0],[98,250,0],[98,-250,0],[56,250,0],[56,-250,0],[-56,-250,0],[-56,250,0],[0,250,0],[0,-250,0]];
	_rabby = _rabbyarray select floor random count _rabbyarray;
	BlowoutPos = createVehicle ["Land_Can_Rusty_F", getpos player,[],0,""];
	BlowoutPos setPos (player modelToWorld _rabby); Blowout = [BlowoutPos, nil, true] spawn BIS_fnc_moduleLightning;
	sleep _num;
};

Добрый день. Сделал спавн молнии вокруг игрока. Можно ли сделать чтобы спавнились молнии вокруг всех игроков. Скажем например 5 игроков на сервере и молнии спавнились вокруг них постоянно.  

 

Здесь способ следующий. Выдача рандомных координат. Создание консервной банки от игрока по выданным рандомным координатам относительно игрока. Удар молнии по банке.

 

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

 

Прошу помочь с корректировкой скрипта.


Сообщение отредактировал Targon: 10 December 2015 - 15:00

  • 0

#2 OFFLINE   ymok

ymok

    Рядовой

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

Отправлено 11 December 2015 - 14:20   Лучший Ответ

На

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

есть документация по функциям, нам нужна playableUnits, которая возвращает всех игроков в виде массива, надо учесть, что работает она только в мультике.

соответственно оборачиваем ваш код внутри while циклом foreach, который будет перебирать массив playableUnits, но waitUntil и sleep оставляем снаружи получим:

if (isNil "pre2") then {
pre2 = false;
};
while {true} do {
  waitUntil {pre2};
  {
    //code
  } foreach playableunits;
  sleep _num;
}; 

и player заменяем на _x, _x это текущий элемент массива, в нашем случае конкретный игрок.

Для проверки на локалке вместо playableUnits можно воспользоваться allUnits. Учтите, allUnits возвращает и ботов.

После этого молния будет бить вокруг игроков.

 

Для случайно позиции используйте BIS_fnc_findSafePos функция ищет случайную позицию.

_rabbyarray = [[-98,250,0],[-98,-250,0],[98,250,0],[98,-250,0],[56,250,0],[56,-250,0],[-56,-250,0],[-56,250,0],[0,250,0],[0,-250,0]];
_rabby = _rabbyarray select floor random count _rabbyarray;
BlowoutPos = createVehicle ["Land_Can_Rusty_F", getpos player,[],0,""];
BlowoutPos setPos (player modelToWorld _rabby); Blowout = [BlowoutPos, nil, true] spawn BIS_fnc_moduleLightning;

заменяем на

BlowoutPos = [getPos _x,10,100,0,0,0,0] call BIS_fnc_findSafePos; // ищем координаты не ближе 10 и не дальше 100 метров от игрока
[BlowoutPos, nil, true] spawn BIS_fnc_moduleLightning;

для чего остальные параметры функции BIS_fnc_findSafePos опять же смотрим на офф сайте 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание


Сообщение отредактировал ymok: 11 December 2015 - 14:21

  • 0

#3 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 11 December 2015 - 17:58

Для случайной позиции использовать findSafePos? Вам сервак не жалко будет?
Как бы БИСовской молнии плевать куда бить: хоть в поле, хоть в дом, хоть в камень. Лучше самому написать небольшо скрипт выбора случайно позиции
  • 0

#4 OFFLINE   ymok

ymok

    Рядовой

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

Отправлено 12 December 2015 - 18:04

Для случайной позиции использовать findSafePos? Вам сервак не жалко будет?
Как бы БИСовской молнии плевать куда бить: хоть в поле, хоть в дом, хоть в камень. Лучше самому написать небольшо скрипт выбора случайно позиции

 

а постоянные удары молний? )

В конце концов это не единственный вариант.

Сделать рандомную выборку, скажем от -10 до 10 и плюсовать к Х и Y положения игрока, чем не случайный выбор.


  • 0




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