Jump to content


Photo

Вопросы по скриптингу

Arma3 как плотформа для созда Скритпы

  • Please log in to reply
1486 replies to this topic

#101 OFFLINE   hipp0cat

hipp0cat

    Ефрейтор

  • Пользователи
  • 82 posts
  • Отряд:OSA

Posted 14 February 2014 - 11:12

Стоит добавить, что обработчик событий не срабатывает на клиенте, на котором выполняется команда publicVariable. То есть, на нем все равно придется прописывать команду SetFog.


  • 0

#102 OFFLINE   IHUNTERI

IHUNTERI

    Мл.сержант

  • Пользователи
  • 130 posts
  • Отряд:Reborn

Posted 09 March 2014 - 12:37

Возникла необходимость добавления рандомной униформы на старте миссии (МП) и столкнулся с двумя проблемами: команда adduniform локальна (об этом я знал заранее) и невозможность добавить униформу сразу после удаления старой, в добавок ко всему глобальность removeuniform доставила еще гемороя. Делал так:

часть кода initserver.sqf

_arr_uniform = ["U_B_CTRG_1", "U_B_CTRG_2", "U_B_CTRG_3"];
arr_uniform_global = [];
{
    if (alive _x) then
    {
        removeuniform _x;
        _random_uniform = _arr_uniform select (floor (random (count _arr_uniform)));
        arr_uniform_global = arr_uniform_global + [[_x, _random_uniform]];
    };
} foreach (playableunits + switchableUnits);
publicvariable "arr_uniform_global";

часть кода init.sqf

waituntil {!isnil "arr_uniform_global"};
{
        sleep 1;
        (_x select 0) adduniform (_x select 1);
} foreach arr_uniform_global;

Протестив один раз с другом обрадовался, что все заработало, но на следующем запуске все кроме хоста оказались голыми. Как я понял позже это произошло из за не одновременного выполения кода у клиентов.  Может кто подсказать  алгоритм, который будет работать всегда? Работает как угодно, но только не так как требуется.


Edited by IHUNTERI, 11 March 2014 - 17:25.

  • 0

#103 OFFLINE   Morkontar

Morkontar

    Прапорщик

  • Пользователи
  • 616 posts
  • Откуда:Нижний Новгород

Posted 14 March 2014 - 09:46

disableChannels[]={0,1,2,6};

0 = Global
1 = Side
2 = Command
3 = Group
4 = Vehicle
5 = Direct
6 = System

Подскажите, есть ли возможность отключить канал Group, данная строчка выше, даже при выборе цифры 3, не отключает данного канала. Отключить получается лишь Global и Side. 


  • 0

#104 OFFLINE   IHUNTERI

IHUNTERI

    Мл.сержант

  • Пользователи
  • 130 posts
  • Отряд:Reborn

Posted 16 March 2014 - 00:31

Некоторые каналы не отключаются - баг. Что касается моей проблемы выше - не работает из за модов. Каких именно точно не знаю.


  • 0

#105 OFFLINE   Spa

Spa

    Ефрейтор

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

Posted 21 March 2014 - 15:36

Подскажите плз.

1. Как создать технику с экипажем ( например Кайман ) с определенным именем и с маршрутом "Защищать" радиус 500? С пехотой разобрался, а техника делается пустая без экипажа и waypointы не работают.

2. Как переместить скриптом уже существующую пустую технику с 1 позиции на другую?

 

Поделитесь примериком или скриптом, буду очень благодарен.


Edited by Spa, 21 March 2014 - 15:46.

  • 0

#106 OFFLINE   kolyan147

kolyan147

    Прапорщик

  • Пользователи
  • 609 posts
  • Откуда:СПБ

Posted 24 April 2014 - 17:46

Господа, будьте добры, подскажите как раздать всем бойцам отделения парашюты? 


  • 0

#107 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 27 April 2014 - 19:58


Возникла необходимость добавления рандомной униформы на старте миссии (МП) и столкнулся с двумя проблемами: команда adduniform локальна (об этом я знал заранее) и невозможность добавить униформу сразу после удаления старой, в добавок ко всему глобальность removeuniform доставила еще гемороя. Делал так:

 

Униформа , как была текстурой на модели в Арме 2, так ей и осталась в Арме 3. При смене униформы меняется модель юнита. Так что я когда затеял подобный вашему номер пришлось городить целую систему синхронизации. Наиудобнейший способ в таких случаях это создать новый класс юнита с определённой для него униформой, и делать уже рандомный выбор класса юнита, а не униформы, что влечёт за собой создание аддона.

 

Хотя наверно и создавать ни чего не надо. Попробуйте так.

Пусть в миссии у вас определено некоторое кол-во слотов для игроков, не важно в какой униформе. В init.sqf клиентов оформите код, который при инициализации клиента создаст нового юнита класс которого соответствует рандомно выбранной униформе, естевственно вооружите этого нового юнита всем чем нужно. После присоедините игрока к этому только что созданному юниту, а старого удалите.

А так как createUnit глобально проблем не будет.


Edited by SteelRat, 27 April 2014 - 20:11.

  • 0

#108 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 posts
  • Откуда:РФ

Posted 27 April 2014 - 20:19


Господа, будьте добры, подскажите как раздать всем бойцам отделения парашюты? 

 

Так же как и вещьмешки


  • 0

#109 OFFLINE   Nomas

Nomas

    Рядовой

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

Posted 01 October 2014 - 15:02

Имеется массив: ["APERSBoundingMine_Range_Mag","ClaymoreDirectionalMine_Remote_Mag","SLAMDirectionalMine_Wire_Mag","DemoCharge_Remote_Mag"] как узнать к примеру  индекс элемента "SLAMDirectionalMine_Wire_Mag"?

То есть я знаю что в данном случае он равен 2, а как узнать в самом скрипте и использовать это значение?

 

Разобрался:

_indCharge = -1;
{if (_x == "DemoCharge_Remote_Mag") then {_indCharge = _forEachIndex;};} forEach _equipTipe;
Ну и чтобы отобразить:
systemChat str _indCharge;

Edited by Nomas, 01 October 2014 - 15:34.

  • 0

#110 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 02 October 2014 - 14:44

Nomas,
_itemIndex = ["Вещь_01","Вещь_03","Вещь_02"]

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

"Вещь_02";
Результат: _itemIndex = 2 (-1 - ненайдено, 0,1,2,3...n - индекс первого искомого элемента в массиве)

Edited by vlad333000, 02 October 2014 - 14:48.

  • 0

#111 OFFLINE   Norad

Norad

    Ефрейтор

  • Пользователи
  • 42 posts
  • Откуда:Санкт-Петербург

Posted 31 October 2014 - 12:35

Парни, подскажите, как передавать в скрипт именно того игрока(player), который зашел в триггер?


  • 0

#112 OFFLINE   xPride

xPride

    Старшина

  • Команда HMG
  • 494 posts
  • Отряд:[LC]

Posted 31 October 2014 - 12:42

в активации триггера: {[_x] execVM "sript.sqf"} forEach thisList;

 

в скрипте передать игрока в переменную _unit:

_unit = _this select 0;

 

далее работать с _unit


  • 0

#113 OFFLINE   Norad

Norad

    Ефрейтор

  • Пользователи
  • 42 posts
  • Откуда:Санкт-Петербург

Posted 31 October 2014 - 13:25

в активации триггера: {[_x] execVM "sript.sqf"} forEach thisList;

 

в скрипте передать игрока в переменную _unit:

_unit = _this select 0;

 

далее работать с _unit

 

Спасибо!


  • 0

#114 OFFLINE   Norad

Norad

    Ефрейтор

  • Пользователи
  • 42 posts
  • Откуда:Санкт-Петербург

Posted 31 October 2014 - 21:30

Еще проблема - возможно ли активировать триггер вручную? команду не нашел, а может быть и не доглядел где?


  • 0

#115 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 01 November 2014 - 11:53

Norad, попробуй сделать так, должно сработать:

_state = triggerStatements trg01;
_activ = _state select 1;
_desactiv = _state select 2;
trg01 setTriggerStatements ["true",_activ,_desactiv]; //Вместо activ/desactiv можно написать нужный код в ""

  • 0

#116 OFFLINE   Norad

Norad

    Ефрейтор

  • Пользователи
  • 42 posts
  • Откуда:Санкт-Петербург

Posted 01 November 2014 - 14:31

Ребят, арма поддерживает массивы маркеров? Создал такой массив mass = [mark1,mark2,mark3,mark4,mark5,mark6,mark7,mark8]; где mark1..8 названия маркеров на карте. Выходит ошибка, ругается именно на эту строку. Читал тему от товарища Avi, там сказано, что (цитирую)"Значениями массива могут быть числа, строки, булевы значения, объекты, другие переменные, да всё не перечислить. И даже всё вышеперечисленное может быть содержимым массива." Все это очень странно, маркер разве не объект?


Edited by Norad, 01 November 2014 - 14:34.

  • 0

#117 OFFLINE   Norad

Norad

    Ефрейтор

  • Пользователи
  • 42 posts
  • Откуда:Санкт-Петербург

Posted 01 November 2014 - 14:37

Кажись понял, название маркера строковое, нужно писать так: mass = ["mark1","mark2"....]


  • 0

#118 OFFLINE   Sandefend

Sandefend

    Ефрейтор

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

Posted 12 December 2014 - 19:33

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


  • 0

#119 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 12 December 2014 - 22:12

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

unit

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

"classname_головы*";
[sloiler2='*Полный список не нашёл, но можно поизвращаться:']
1. Создаешь профиль в Arma 3
2. Выбираешь для этого профиля нужное лицо
3. Сохраняешь изменения в профиле
4. Идешь: мои документы -> Arma 3 - Other Profiles -> "имя_профиля" -> "имя_профиля".Arma3Profile (Открыть блокнотом/notepad++)
5. В 6 строке face="classname_нужной_головушки"[/spoiler2]
 

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

А в чем проблема обратиться напрямую к водителю?
(

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

unit) 

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

 "classname_головушки";
  • 1

#120 OFFLINE   Sandefend

Sandefend

    Ефрейтор

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

Posted 13 December 2014 - 17:31

Не работает, вот например провел эксперимент - создал троих людей (не водителей) и вписал им unit setFace "classname_WhiteHead_06*"; , у всех разные лица


  • 0




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