Jump to content


Photo

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


Best Answer 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

Go to the full post


  • Please log in to reply
3 replies to this topic

#1 OFFLINE   Targon

Targon

    Ефрейтор

  • Пользователи
  • 36 posts

Posted 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 игроков на сервере и молнии спавнились вокруг них постоянно.  

 

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

 

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

 

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


Edited by Targon, 10 December 2015 - 15:00.

  • 0

#2 OFFLINE   ymok

ymok

    Рядовой

  • Пользователи
  • 20 posts

Posted 11 December 2015 - 14:20   Best Answer

На

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

есть документация по функциям, нам нужна 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 опять же смотрим на офф сайте 

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


Edited by ymok, 11 December 2015 - 14:21.

  • 0

#3 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 11 December 2015 - 17:58

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

#4 OFFLINE   ymok

ymok

    Рядовой

  • Пользователи
  • 20 posts

Posted 12 December 2015 - 18:04

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

 

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

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

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


  • 0




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