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


Фотография

Как сделать берущиеся предметы (ноуты, доки и пр.)?


Лучший Ответ Cast , 25 October 2015 - 11:55

Продолжаем наш урок (начало на первой странице)! Теперь разберемся с выпадением папки.

  Суть была в том, что красным надо перехватить папку у синих и донести до места эвакуации.

  Дописываем в следующий файл:

 

VzyatDoki.sqf

playerItems pushBack "Land_File_research_F";
player playmoveNow "AmovPercMstpSrasWrflDnon_AinvPercMstpSrasWrflDnon_Putdown";
sleep 1;
deleteVehicle (_this select 0);
player addEventHandler ["killed", {_this exec "dropdoki.sqf"}];      /// создаем событие, которое активируется, в случае гибели того,
                                                                     /// кто подбирает папку. Сам сценарий события в файле "dropdoki.sqf"
If (playerSide == east) then 
{hint "Move to escape point";
Thief = _this select 1;      ///этой строкой мы даем имя новому носителю папки. Это имя пригодится для активации триггера
                           ///При использовании команды addEventHandler в обработчик события поступает
                          ///  массив из двух элементов: _this select 0 - объект жертвы и _this select 1 - объект убийцы.
};

dropDoki.sqf

playerItems = PlayerItems - ["Land_File_research_F"];                              ///вычитаем папку из массива
doki = createVehicle ["Land_File_research_F", _this select 0, [], 0, "none"  ];    ///создаем папку возле поверженного ее носителя

doki addaction ["Take it", "doc.sqf"];

doki_hint = true;                           ///Глобальные хинты. Подробнее http://www.flashpoint.ru/threads.
publicVariable "doki_hint";

И триггер концовки.

 

В условиях

Thief in thisList

Активация: концовка или что угодно на усмотрение

 

Отдельная благодарность отдельному товарищу за напутсвия и подсказки)

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


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

#1 OFFLINE   Cast

Cast

    Ефрейтор

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

Отправлено 22 October 2015 - 10:11

  В общем то есть размышления как это сделать: К предмету добавить действие, скрипт что то вроде "

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

..." (item ли это? например ноут) и ко всему этому присобачить анимацию. Но может есть что то по проще? Какая нибудь команда BIS_FNC_...?

  Еще вопрос: какой командой делается проверка на наличие взятого предмета в инвентаре?


  • 0

#2 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 22 October 2015 - 10:51

Cast, эти предметы можно положить лишь "условно" (Переменной), либо при помощи мода создать ложащимся в инвентарь ноут
BIS_fnc_... это не команда, а функция
Получить массив из всех предметов у игрока -> найти нужный предмет в данном массиве
  • 0

#3 OFFLINE   Cast

Cast

    Ефрейтор

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

Отправлено 22 October 2015 - 11:49

Vlad, я нашел мод на всякие предметы (

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

), только это не пойдет в МП. Всем же тогда придется его качать. Или нет? Получается если юниту положить предмет условно, то получится ли подобрать этот условный предмет в случае гибели юнита?


  • 0

#4 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 22 October 2015 - 12:34

Cast, в МП - обязательно у всех иначе те у кого нет аддона - не будет этого предмета
Ну если вы во время смерти сделает проверку на это "условное" обладание предметов и скриптом заспавните его рядом с трупом - да
  • 0

#5 OFFLINE   Cast

Cast

    Ефрейтор

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

Отправлено 22 October 2015 - 12:46

Cast, в МП - обязательно у всех иначе те у кого нет аддона - не будет этого предмета
Ну если вы во время смерти сделает проверку на это "условное" обладание предметов и скриптом заспавните его рядом с трупом - да

 

чем дальше, тем страшней) а как называется этот массив из предметов игрока? как я понимаю это зарезервированное название какое то.

То есть мне нужно сделать проверку  if (nout in arrayOfPlayerItems) then (ТРА ЛЯ ЛЯ). Что нужно написать вместо "arrayOfPlayerItems"?


  • 0

#6 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 22 October 2015 - 12:58

чем дальше, тем страшней) а как называется этот массив из предметов игрока? как я понимаю это зарезервированное название какое то.
То есть мне нужно сделать проверку  if (nout in arrayOfPlayerItems) then (ТРА ЛЯ ЛЯ). Что нужно написать вместо "arrayOfPlayerItems"?

Любое название может иметь эта переменная.
Смысл в том, что таким образом эмулируется виртуальный инвентарь. Ноутбук в этот инвентарь кладётся таким образом: игрок активирует действие "Взять" на ноутбуке, затем этот ноутбук удаляется, а в эту переменную заносится информация об этом ноутбуке. Извлечение из инвентаря: удаляется информация о ноутбуке из переменной и перед игроком создаётся ноутбук.


  • 1

#7 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 22 October 2015 - 13:01

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

- в ней есть много ответов на вопросы
  • 0

#8 OFFLINE   Cast

Cast

    Ефрейтор

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

Отправлено 22 October 2015 - 13:32

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

- в ней есть много ответов на вопросы

 

Я из этой священной книги не вылазию)) но иногда сложно допереть как интерпретировали разрабы то, что мне нужно => фиг поймешь, что искать


  • 0

#9 OFFLINE   Cast

Cast

    Ефрейтор

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

Отправлено 22 October 2015 - 14:23

ё

 

 

Любое название может иметь эта переменная.
Смысл в том, что таким образом эмулируется виртуальный инвентарь. Ноутбук в этот инвентарь кладётся таким образом: игрок активирует действие "Взять" на ноутбуке, затем этот ноутбук удаляется, а в эту переменную заносится информация об этом ноутбуке. Извлечение из инвентаря: удаляется информация о ноутбуке из переменной и перед игроком создаётся ноутбук.

 

 

Вроде уловил. Нужно создать массив, присвоить ему переменную, и командой SET  изменять содержимое массива. И отсюда уже плясать с действиями. Образно так? А как тогда сделать, чтобы в самом инвентаре его (ноутбук) видно было наряду с патронами, гранатами и т.д


Сообщение отредактировал Cast: 22 October 2015 - 14:26

  • 0

#10 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 22 October 2015 - 14:27

Нужно создать массив, присвоить ему переменную, и командой SET  изменять содержимое массива. И отсюда уже плясать с действиями. Образно так?

Да. Только не присвоить, а занести в массив.

А как тогда сделать, чтобы в самом инвентаре его (ноутбук) видно было наряду с патронами, гранатами и т.д

Без мода, похоже, никак.
  • 1

#11 OFFLINE   Cast

Cast

    Ефрейтор

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

Отправлено 22 October 2015 - 15:07

 

Без мода, похоже, никак.

 

 

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


  • 0

#12 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 22 October 2015 - 15:26

не могу сообразить, это как "приклеить" массив к игроку.

Зачем "приклеивать" массив к игроку?
 

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

Ну так разве убийце не станет принадлежать ноут, если он его подберёт?


  • 1

#13 OFFLINE   vlad333000

vlad333000

    Полковник

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

Отправлено 22 October 2015 - 16:22

это как "приклеить" массив к игроку


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


  • 0

#14 OFFLINE   Cast

Cast

    Ефрейтор

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

Отправлено 22 October 2015 - 20:40

 

Зачем "приклеивать" массив к игроку?
 

 

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


  • 0

#15 OFFLINE   Schatten

Schatten

    Капитан

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

Отправлено 22 October 2015 - 20:53

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

Да как угодно! Например, так:

playerItems = [
	"itemClassName1",
	"itemClassName2",
	...
];

Однако, если кроме наличие вещи нужно хранить ещё и информацию о ней, то массив будет состоять из массивов.

Например, пусть у игрока будут деньги, тогда его инвентарь будет таким:

playerItems = [
	["Land_Money_F", 250],
	["itemClassName1", someValue],
	...
];

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

При подборе денег из них извлекается информация о номинале и эта информация заносится в инвентарь их нового владельца, а деньги удаляются.


Сообщение отредактировал Schatten: 22 October 2015 - 20:54

  • 2

#16 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 23 October 2015 - 02:56

С каждым очередным днём во мне всё больше развивается чувство, что я занимаюсь фигнёй выкладывая всякие интересные штучки! Например вроде этих

http://arma3.ru/foru...platform/page-1

 

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

 

За своим лаптопом идёте по пути

Скачать это http://arma3.ru/foru...atform/?p=39227

 

далее распаковать аддон

@A3SPL\addons\items.pbo

открыть в правильном текстовом редакторе файл

config.cpp

и найти там свой лаптоп

	/*				ELECTRONICS					*/
...
	class Laptop_F : ItemElectronics {
		scope = public;
		displayName = "$STR_A3_cfgVehicles_Land_Laptop_F0";
		model = "\A3\Structures_F\Items\Electronics\Laptop_F.p3d";
		mass = 20;
	};

  • 0

#17 OFFLINE   Cast

Cast

    Ефрейтор

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

Отправлено 23 October 2015 - 08:11

 

С каждым очередным днём во мне всё больше развивается чувство, что я занимаюсь фигнёй выкладывая всякие интересные штучки! Например вроде этих

http://arma3.ru/foru...platform/page-1

 

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

 

 

Вовсе нет) твои ответы в других темах меня выручали. Просто здесь я хочу обойтись без аддона. Вообще эта тема превратилась в урок по массивам)


  • 0

#18 OFFLINE   SteelRat

SteelRat

    Полковник

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

Отправлено 23 October 2015 - 18:55

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

В любом случае урок по массивам тоже полезный опыт)


  • 0

#19 OFFLINE   Cast

Cast

    Ефрейтор

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

Отправлено 24 October 2015 - 08:40

Не без посторонней помощи, кое чего удалось достигнуть. Для тех, кто как я :unknw: :

 

В папке с миссией создаем два файла: vzyatDoki.sqf и PlayerInitLocal.sqf

Содержимое  PlayerInitLocal.sqf:

PlayerItems = []   /// т.е. создается массив

vzyatDoki.sqf: 

PlayerItems pushBack "Land_file_research_F";   /// папка с документами вносится в массив

Player PlayMove "название анимации";             /// добавил анимацию. Не обязательно

DeleteVehicle (_this select 0);                            /// папка удаляется с земли

Создаем в редакторе папку ("Land_file_research_F"). В ините пишем: 

this addaction ["Vzyat", "vzyatDoki.sqf"]

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


  • 0

#20 OFFLINE   dos622

dos622

    Ст. Прапорщик

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

Отправлено 24 October 2015 - 14:41


PlayerItems = []   /// т.е. создается массив

 

ты забыл ;

 

должно быть так:

PlayerItems = [];

  • 1




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