Jump to content


Photo

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

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

  • Please log in to reply
1486 replies to this topic

#241 OFFLINE   susamin

susamin

    Сержант

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

Posted 25 August 2015 - 23:22

 

Это значит, что в условии переменная _target будет указывать на ящик, которому добавлено действие, а _this - на персонажа, который смотрит на этот ящик. Пример условия:

(_target distance _this) < 5

Если бы этих переменных не было, пришлось бы вводить глобальную переменную для ящика (например, box), а для игрока пользоваться специальной переменной player. Условие тогда выглядело бы так:

(box distance player) < 5

с этим все ясно 

0 = ["AmmoboxInit",[this,true, ((box distance player) <= 30)]] spawn BIS_fnc_arsenal;

я не понял про 

 

Ну и на последок условие пишется в фигурных скобках
susamin, Так они выделяют необязательные аргументы


Edited by susamin, 25 August 2015 - 23:29.

  • 0

#242 OFFLINE   Schatten

Schatten

    Капитан

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

Posted 25 August 2015 - 23:30

я не понял про
 

Ну и на последок условие пишется в фигурных скобках
susamin, Так они выделяют необязательные аргументы

 

Условие - это код, а код записывается в фигурных скобках:

0 = ["AmmoboxInit",[this,true, {(box distance player) <= 30}]] spawn BIS_fnc_arsenal;

Edited by Schatten, 25 August 2015 - 23:31.

  • 0

#243 OFFLINE   susamin

susamin

    Сержант

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

Posted 25 August 2015 - 23:35

Schatten, не!!! Как появлялась надпись "Арсенал" в меню действий в 3 метрах от машины так и появляется. А хотца увеличить это расстояние.


Edited by susamin, 25 August 2015 - 23:36.

  • 0

#244 OFFLINE   Schatten

Schatten

    Капитан

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

Posted 25 August 2015 - 23:37

А если использовать такое условие

(_target distance _this) <= 30

?


  • 0

#245 OFFLINE   susamin

susamin

    Сержант

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

Posted 25 August 2015 - 23:45

Коробке дал имя _target, в инит коробки вписал это 

0 = ["AmmoboxInit",[this,true, {(_target distance _this) <= 30}]] spawn BIS_fnc_arsenal;

вообще не работает на любом расстоянии

 

ЗЫ Чесно сказать у меня не коробка а Камаз может в этом дело


Edited by susamin, 25 August 2015 - 23:46.

  • 0

#246 OFFLINE   Schatten

Schatten

    Капитан

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

Posted 25 August 2015 - 23:54

Коробке дал имя _target

Не надо давать коробке никаких имён!

Чесно сказать у меня не коробка а Камаз может в этом дело

Очень сомневаюсь.
  • 0

#247 OFFLINE   Schatten

Schatten

    Капитан

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

Posted 26 August 2015 - 00:04

Да, только что проверил: похоже, только с ящиков можно запускать арсенал; условие тоже почему-то не работает. (


Edited by Schatten, 26 August 2015 - 00:05.

  • 0

#248 OFFLINE   susamin

susamin

    Сержант

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

Posted 26 August 2015 - 00:35

товарищи что не так сделано? Взял коробку в инит записал 

0 = ["AmmoboxInit",[this,true]] spawn BIS_fnc_arsenal;
все работает. [/b]"
Самое интересное что так с камазом прокатило. Все работает!!!
  • 0

#249 OFFLINE   Schatten

Schatten

    Капитан

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

Posted 26 August 2015 - 00:41

 

товарищи что не так сделано? Взял коробку в инит записал 

0 = ["AmmoboxInit",[this,true]] spawn BIS_fnc_arsenal;
все работает.

 

Самое интересное что так с камазом прокатило. Все работает!!!

 

Arma, она такая...


  • 0

#250 OFFLINE   susamin

susamin

    Сержант

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

Posted 26 August 2015 - 01:17

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

0 = ["AmmoboxInit",[this,{[<target>,<classes>,(<isGlobal>,<addAction>)] call BIS_fnc_addVirtualWeaponCargo}]] spawn BIS_fnc_arsenal;

так делать? или BIS_fnc_addVirtualWeaponCargo отдельно прописывать


Edited by susamin, 26 August 2015 - 01:22.

  • 0

#251 OFFLINE   Schatten

Schatten

    Капитан

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

Posted 26 August 2015 - 01:38

Я так понял, что команды типа BIS_fnc_addVirtualWeaponCargo к арсеналу не имеют отношения, а ограничивать нужно, как предложил vlad333000.


Edited by Schatten, 26 August 2015 - 01:40.

  • 1

#252 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 26 August 2015 - 01:47

 

 

товарищи что не так сделано? Взял коробку в инит записал 

0 = ["AmmoboxInit",[this,true]] spawn BIS_fnc_arsenal;
все работает.

 

Самое интересное что так с камазом прокатило. Все работает!!!

 

Arma, она такая...

 

 

Кусок ванильного кода функции BIS_fnc_arsenal

case "AmmoboxLocal": {
		_boxes = missionnamespace getvariable ["bis_fnc_arsenal_boxes",[]];
		{
			if (isnil {_x getvariable "bis_fnc_arsenal_action"}) then {
				_action = _x addaction [
					localize "STR_A3_Arsenal",
					{
						_box = _this select 0;
						_unit = _this select 1;
						["Open",[nil,_box]] call bis_fnc_arsenal;
					},
					[],
					6,
					true,
					false,
					"",
					"
						_cargo = _target getvariable ['bis_addVirtualWeaponCargo_cargo',[[],[],[],[]]];
						if ({count _x > 0} count _cargo == 0) then {
							_target removeaction (_target getvariable ['bis_fnc_arsenal_action',-1]);
							_target setvariable ['bis_fnc_arsenal_action',nil];
						};
						_condition = _target getvariable ['bis_fnc_arsenal_condition',{true}];
						alive _target && {_target distance _this < 5} && {call _condition}
					"
				];
				_x setvariable ["bis_fnc_arsenal_action",_action];
			};
		} foreach _boxes;
	};

Вы что угодно можете писать в условие condition. сама кондиция

_condition = _target getvariable ['bis_fnc_arsenal_condition',{true}];
alive _target && {_target distance _this < 5} && {call _condition}

И вот этот кусок кода, ни когда не даст вам сменить ванильную дистанцию на вашу

{_target distance _this < 5}

  • 2

#253 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 26 August 2015 - 01:54

Я так понял, что команды типа BIS_fnc_addVirtualWeaponCargo к арсеналу не имеют отношения, а ограничивать нужно, как предложил vlad333000.

case "AmmoboxInit": {
		private ["_box","_allowAll"];
		_box = [_this,0,objnull,[objnull]] call bis_fnc_param;
		_allowAll = [_this,1,false,[false]] call bis_fnc_param;
		_condition = [_this,2,{true},[{}]] call bis_fnc_param;

		if ({} isequalto {}) then {
			_box setvariable ["bis_fnc_arsenal_condition",_condition,true];
		};

		if (_allowAll) then {
			[_box,true,true,false] call bis_fnc_addVirtualWeaponCargo;
			[_box,true,true,false] call bis_fnc_addVirtualMagazineCargo;
			[_box,true,true,false] call bis_fnc_addVirtualItemCargo;
			[_box,true,true,false] call bis_fnc_addVirtualBackpackCargo;
		};
		[["AmmoboxServer",_box,true],"bis_fnc_arsenal",false] call bis_fnc_mp;
	};

ЗЫ

Это не команды, это функции.


  • 1

#254 OFFLINE   susamin

susamin

    Сержант

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

Posted 26 August 2015 - 01:55

Schatten, ты не прав !!! Добавил в инит камаза строчку

 [Box,["arifle_MX_F","arifle_MX_SW_F","arifle_MXC_F"],true] call BIS_fnc_addVirtualWeaponCargo;

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

Attached Files


Edited by susamin, 26 August 2015 - 01:56.

  • 0

#255 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 26 August 2015 - 02:20

Schatten, ты не прав !!! Добавил в инит камаза строчку

 [Box,["arifle_MX_F","arifle_MX_SW_F","arifle_MXC_F"],true] call BIS_fnc_addVirtualWeaponCargo;

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

 

Арсенал это не аммобокс в классическом понимании, его можно сравнить с инвентарём игрока, он всегда будет отображать в том числе и то что на вас одето.


  • 1

#256 OFFLINE   susamin

susamin

    Сержант

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

Posted 26 August 2015 - 15:38

 

И вот этот кусок кода, ни когда не даст вам сменить ванильную дистанцию на вашу
{_target distance _this < 5}

Тогда интересно!!! на форуме бис есть пример функции с описание ее элементов 

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

 

Вот схематический пример 

 

["AmmoboxInit",[<box>,(<allowAll>,<condition>)]] spawn BIS_fnc_arsenal; интересует место <condition>

 

Вот описание 

 

condition (Optional): Condition for showing the Arsenal action (default: {true}).

 

Я это перевел так: "условие для для отображения Арсенала в меню действий" т.е получается судя по данному коду и описанию (ток дошло) нельзя установить расстояние на котором будет показан Арсенал в меню действий, а только условие, например вертолет hel1 !alive соответственно нате арсенал, если hel1 жив, то арсенала Вы не увидете в меню действий, соответственно и пользоваться им не можете. А я получается просто не так понял описание функции и решил запилить условие, что игрок до объекта менее 30 метров и на те Вам в меню Арсенал на расстоянии от камаза 29 метров. А по логике движка получилось, что условие верно, подходи к Камазу в 5 метрах от него увидишь арсенал ))) Простите что накатал кучу постов в поиске истины! Я все таки бухгалтер  8) !!!

 

Но все таки хотелось бы 10 метров т.к. 5 метров от Камаза неудобно, остается мало места для осмотра игрока, ай ладно, не парьтесь!!! коробку поставлю.

 

Зы: а если весь этот код пихнуть и инит Камаза и поменять с 5 на 10 , будет работать?


Edited by susamin, 26 August 2015 - 19:13.

  • 0

#257 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 26 August 2015 - 16:48

susamin, нет, нужно писать отдельно функцию со своими изменениями. По мне если и берешь арсенал, то лучше обычный (без всяких ящиков) и при помощи команды addAction лепишь куда-нибудь функцию ["Open",true] call BIS_fnc_arsenal
  • 0

#258 OFFLINE   susamin

susamin

    Сержант

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

Posted 26 August 2015 - 17:37

vlad333000, Играем коопы с друзьями против ботов, с полным арсеналом не нравится - легко, требуют минимум оружия. Любят трофеи с поля боя подбирать под огнем. Просят обрезать Арсенал, и хотят именно Арсенал, а не просто ящик. Вот и запарился. Пусть будет 5 метров. Это для себя  :KidRock_05:  :KidRock_04:  :rolleyes:

 

ЗЫ: теперь открываю сезон вопросов по Вирт Гаражу  :rofl: , да лан шучу, а может и нет!!!


Edited by susamin, 26 August 2015 - 17:39.

  • 0

#259 OFFLINE   Schatten

Schatten

    Капитан

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

Posted 26 August 2015 - 17:43

susamin, не вижу проблем переписать под себя функцию BIS_fnc_arsenal, вырезав оттуда "_target distance _this < 5".


  • 0

#260 OFFLINE   susamin

susamin

    Сержант

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

Posted 26 August 2015 - 17:58

Не сомневаюсь в ваших способностях, Товарищи, но я как свинья в апельсинах. Так что оставлю как есть 5 метров :)   


Edited by susamin, 26 August 2015 - 18:40.

  • 0




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