Jump to content


Photo

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

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

  • Please log in to reply
1486 replies to this topic

#281 OFFLINE   blade

blade

    Ефрейтор

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

Posted 19 October 2015 - 14:07

Столкнулся с такой проблемой, что если сесть в вооруженный внедорожник за пулемёт, то водитель-бот перестаёт ехать по вейпоинтам и подчиняется только моим командам ((  А я хочу за пулемётом сидеть пока меня по сюжету везут.
Можно ли как-то заставить водилу не обращать внимание на моё присутствие за пулемётом и ехать куда ему прописано?


  • 0

#282 OFFLINE   PIONEER

PIONEER

    Мл.сержант

  • Пользователи
  • 129 posts
  • Откуда:Симферополь
  • Отряд:[IMB]

Posted 19 October 2015 - 18:03

Можешь устроить дерзкую погоню используя BIS_fnc_UnitCapture


  • 0

#283 OFFLINE   HarryWorner

HarryWorner

    Лейтенант

  • Модераторы
  • 1035 posts

Posted 20 October 2015 - 02:45

Столкнулся с такой проблемой, что если сесть в вооруженный внедорожник за пулемёт, то водитель-бот перестаёт ехать по вейпоинтам и подчиняется только моим командам ((  А я хочу за пулемётом сидеть пока меня по сюжету везут. Можно ли как-то заставить водилу не обращать внимание на моё присутствие за пулемётом и ехать куда ему прописано?

 

blade, нужно водителя сделать независимым от вас. Он должен не состоять с вами в одном отряде. ЛИБО, водитель должен быть вашим командиром. Далее я предлагаю вам два способа:

 

 

1) Создаем триггер и туда прописываем в активации следующее:

Driver1 moveInDriver car1; Gunner1 moveInGunner car1

Где:

Driver1 - Водитель.

Gunner1 - Стрелок.

car1 - Автомобиль с пулеметом.

 

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

 

 

2) Второй способ. Данный способ делается с помощью вейпоинтов. Предлагаю самому разобраться в миссии, которую я прикрепил к данному посту. Если есть вопросы, то спрашивайте не бойтесь.

 

 

Эти два способа реализованы в одной миссии:
 

arma3_2015-10-20_06-34-02.png

Attached Files


  • 2

#284 OFFLINE   blade

blade

    Ефрейтор

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

Posted 20 October 2015 - 11:13

 

arma3_2015-10-20_06-34-02.png

 

Благодарю, примеры для меня полезные! Однако с помощью них у меня не получилось решить свою проблему.
  Первый пример от части работает (за исключением того, что нельзя нажимать wsad иначе водитель перестанет следовать по вейпоинтам), только боюсь в миссии такие телепортации будут не комильфо =\
  Второй пример почему-то не работает совсем. Играл за guneer2, когда садился за пулемёт, водитель оставался на месте, никуда не ехал.
  Пытался даже делать себя подчинённым водителя, но он лишь отдавал мне приказ бежать до вейпоинта, а сам сидел за рулём и никуда не ехал, зато сам подчинялся моим командам передвижения.

  Если это как-то поможет, то по сюжету у меня два водителя (один подчинён другому) выбегают из контейнера, садятся водителями в два внедорожника, и выкатываются на дорогу ожидать. Когда погрузятся все игроки и персонажи сработает переменная и колонна продолжит двигаться дальше по вейпоинтам. И так далее ещё с парой остановок.

  Чтоб обойти эту медвежью услугу БИСов, я сейчас пробую заменить вооружённый внедорожник на обычный с приATTACHенным к нему пулемётом. И всё складывается чудненько, за исключением пары деталей.
  Когда юнит садится за приATTACHенный пулемёт, он остаётся с той же анимацией, с которой был перед посадкой. Я пока разбираюсь как изменить анимацию на сидение за пулемётом. Не откажусь от подсказки.
  И если уж в кузове внедорожника стоит тренога, можно ли там как-то заблокировать пассажирские места?


  • 0

#285 OFFLINE   Sa-Matra

Sa-Matra

    Ефрейтор

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

Posted 20 October 2015 - 18:14

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

а туррели (места откуда можно стрелять - туррели) командой

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


  • 0

#286 OFFLINE   Morty Rob

Morty Rob

    Рядовой

  • Пользователи
  • 9 posts
  • Откуда:Samara

Posted 27 October 2015 - 01:56

Здравствуйте, как говорится, лучше писать самому, чем у кого-то тырить, но это не наш случай)

позаимствовав код у AGM пытаюсь формировать листбокс со списком итемов плеера.

<- там моя печаль, моя погибель


код выводит список предметов корректно, но хотелось бы еще выводить кол-во данных предметов, что я только не пробовал)

_temp = format ["%2 x %1",getText(_item >> "displayName"),{getText(_item >> "displayName") == _x} count (items player)];

пробовал писать так, но это данный код срабатывает без ошибок, но кол-во итемов равно 0, поняв, что это все таки дисплей имя, а мне нужно название самого предмета, пробовал писать "configClasses", результат тот же, подскажите мне, как быть в этой беде(( надежда только на вас =)


Edited by Morty Rob, 27 October 2015 - 01:57.

  • 0

#287 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 27 October 2015 - 09:40

{getText(_item >> "displayName") == _x} count (items player);

{"Имя для игрока" == "Имя для игры"} count (items player) // два разных понятия и поэтому никогда не равны

Edited by vlad333000, 27 October 2015 - 09:41.

  • 1

#288 OFFLINE   Schatten

Schatten

    Капитан

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

Posted 27 October 2015 - 09:41

Morty Rob,

Edited by Schatten, 27 October 2015 - 09:48.

  • 1

#289 OFFLINE   Morty Rob

Morty Rob

    Рядовой

  • Пользователи
  • 9 posts
  • Откуда:Samara

Posted 27 October 2015 - 16:22

Morty Rob,

 

Спасибо вам большое, расцеловал бы, но не стану =) 


  • 0

#290 OFFLINE   Morty Rob

Morty Rob

    Рядовой

  • Пользователи
  • 9 posts
  • Откуда:Samara

Posted 01 November 2015 - 03:53

Снова приветствую посетителей данного форума, возвращаюсь я сюда с новой проблемой, с надеждой на понимание.

Хочется самому придумать использование предметов в инвентаре, а именно два варианта, проще и сложнее:
1. Сделать по двойному нажатию на предмет, определенный скрипт.
2. По нажатию на правую/левую кнопку мыши, открывания с помощью gui менюшки, где бы ты смог выбрать определенное действие с предметом.
 
К сожалению решив, что пока не разберусь с первым, на второе даже смотреть не стоит, решил попробовать сделать первое.

Порыскав в "этих ваших интернетах" наткнулся на такую вещь : 
 

 ((findDisplay 602) displayCtrl 633) ctrlSetEventHandler ["LBSelChanged", "_this call fnc_test"];

Что, как я понял(поправите, если не прав), создает у листбокса инвентаря (только у юниформ почему-то) обработчик события на смену Index, и на него запускается наша функция.
Где я могу получить название предмета, на который нажал.

_idc = ctrlIDC (_this select 0);
_selectedIndex = _this select 1;
_text = lbText [_idc, _selectedIndex]];

и в котором бы писал свои костыли по типу
 

if(_text == "Банка") then {
food = food + 1;
player removeItem "tc_banka";
};

Вроде бы все прозрачно, но подскажите, как сделать обработчик на двойное нажатие кнопки по итему, или нажатие роликом..

Так же было бы не плохо, если бы поделились полезными ссылками/модами на эту тему, а то чего-то плохо я гуглю подобные вещи.

И отдельное спасибо было бы человеку, если бы подсказали как все таки разобрать 2-ой вариант написанный выше.

Оффтоп


Edited by Morty Rob, 01 November 2015 - 04:13.

  • 0

#291 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 01 November 2015 - 10:57

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


2. 1 +

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


3. Только для униформы, потому что idc: 633 - предметы униформы, 638 - предметы разгрузки и 619 - предметы рюкзака
4.

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

- Командир

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

- Водитель

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

- Стрелок

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

- Что-то типа особые места: бортовые стрелки, со-пилоты...

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

- Весь экипаж

Edited by vlad333000, 01 November 2015 - 11:15.

  • 1

#292 OFFLINE   Morty Rob

Morty Rob

    Рядовой

  • Пользователи
  • 9 posts
  • Откуда:Samara

Posted 01 November 2015 - 14:27

Morty Rob,
1.

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


2. 1 +

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


3. Только для униформы, потому что idc: 633 - предметы униформы, 638 - предметы разгрузки и 619 - предметы рюкзака
4.

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

- Командир

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

- Водитель

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

- Стрелок

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

- Что-то типа особые места: бортовые стрелки, со-пилоты...

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

- Весь экипаж

Спасибо, буду пробовать, только вопрос, не много не понял второй пункт, 1+ctrlCreate например, я на тот двойной щелчек, создаю кнопку этой коммандой, потом по этому idc добавляю нажатие на кнопку, и скрипт на нажатие, и как это в итоге будет выглядить? где будет появляться кнопка, можно пробноей, если не сложно.

И еще раз боольшое спасибо за полезные ссылки, это ооочень улучшило понимание


  • 0

#293 OFFLINE   Morty Rob

Morty Rob

    Рядовой

  • Пользователи
  • 9 posts
  • Откуда:Samara

Posted 03 November 2015 - 23:06

Доброго времени суток, я наверное совсем обнаглел, ибо пишу вопросы тут только я.. но чем черт не шутит
Столкнулся с такой вещью, как представление больших текстов через объект dialog'a StructuredText, а именно добавление скрол бара, обильно погуглив было предпринято решение использовать элемент ControlsGroup, на который ставился StructuredText бОльшего размера, чем ControlsGroup, тем самым активировав скрол бар, но..проблема в том, что мой текст не фиксированного размера, и заранее размеры я знать не могу.

Услышал идею, что есть возможность узнать "высоту" текста, тем самым увеличивать высоту элемента StructuredText, через скрипт.
Что бы полностью описать, приведу саму задачу, делаю Чат, которые работает через sql базу, соответственно история сообщений может быть велика, и постоянно пополняется, с каждым сообщением, дак вот, на скрипты отправки сообщения, фиксировать длину текста, способом который рассказал выше.

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


  • 0

#294 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 04 November 2015 - 03:46

Morty Rob, A3\ui_f\config.bin -> разбинариваем -> ищем дисплей debug-консоли
  • 1

#295 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 04 November 2015 - 22:13

Morty Rob, A3\ui_f\config.bin -> разбинариваем -> ищем дисплей debug-консоли

class RscDisplayChat {
	class controls {
		class Line {};
		class Background {};
		
		class CA_Background : RscText {
			x = "SafeZoneX + 0.26";
			y = "(SafeZoneH + SafeZoneY) - 0.034";
			w = "SafeZoneW - 0.26 - 0.015";
			h = "(			(			(			((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
			colorBackground[] = {0.6275, 0.6275, 0.6275, 0.33};
			colorText[] = {0, 0, 0, 1};
		};
		
		class CA_Line : RscEdit {
			idc = 101;
			x = "SafeZoneX + 0.26";
			y = "(SafeZoneH + SafeZoneY) - 0.034";
			w = "SafeZoneW - 0.26 - 0.015";
			h = "(			(			(			((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
			sizeEx = "(			(			(			((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
			text = "";
			colorBackground[] = {0.6275, 0.6275, 0.6275, 0.33};
			colorText[] = {1, 1, 1, 1};
			autocomplete = "general";
		};
	};
};

class RscChatListDefault {
	shadow = true;
	shadowPlayer = 0;
	shadowColor[] = {0, 0, 0, 0.5};
	x = "1.2 * 					(			((safezoneW / safezoneH) min 1.2) / 40) + 		(SafezoneX)";
	y = "17.2 * 					(			(			((safezoneW / safezoneH) min 1.2) / 1.2) / 25) + 		(safezoneY) + 0.7*(safezoneH - 				(			((safezoneW / safezoneH) min 1.2) / 1.2))";
	w = "(18.5 * 					(			((safezoneW / safezoneH) min 1.2) / 40)) + 0.45*(safezoneW - 				((safezoneW / safezoneH) min 1.2))";
	h = "(			(			(			((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
	font = "PuristaMedium";
	size = "(			(			(			((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
	rows = "((5 * 					(			(			((safezoneW / safezoneH) min 1.2) / 1.2) / 25))+ 0.3*(safezoneH - 				(			((safezoneW / safezoneH) min 1.2) / 1.2))) / 		(			(			(			((safezoneW / safezoneH) min 1.2) / 1.2) / 25) * 0.8)";
	colorBackground[] = {0, 0, 0, 0.3};
	colorGlobalChannel[] = {0.606*1.4, 0.606*1.4, 0.606*1.4, 1};
	colorGlobalChannelPlayerBackground[] = {0.606*1.4, 0.606*1.4, 0.606*1.4, 0.5};
	colorGlobalChannelPlayerText[] = {0, 0, 0, 1};
	colorSideChannel[] = {0.196*1.4, 0.592*1.4, 0.706*1.4, 1};
	colorSideChannelPlayerBackground[] = {0.196*1.4, 0.592*1.4, 0.706*1.4, 0.5};
	colorSideChannelPlayerText[] = {0, 0, 0, 1};
	colorCommandChannel[] = {0.8275*1.4, 0.8196*1.4, 0.1961*1.4, 1};
	colorCommandChannelPlayerBackground[] = {0.8275*1.4, 0.8196*1.4, 0.1961*1.4, 0.5};
	colorCommandChannelPlayerText[] = {0, 0, 0, 1};
	colorGroupChannel[] = {0.709, 0.972, 0.384, 1};
	colorGroupChannelPlayerBackground[] = {0.709, 0.972, 0.384, 0.5};
	colorGroupChannelPlayerText[] = {0, 0, 0, 1};
	colorVehicleChannel[] = {0.863*1.4, 0.584*1.4, 0.0*1.4, 1};
	colorVehicleChannelPlayerBackground[] = {0.863*1.4, 0.584*1.4, 0.0*1.4, 0.5};
	colorVehicleChannelPlayerText[] = {0, 0, 0, 1};
	colorDirectChannel[] = {1, 1, 1, 1};
	colorDirectChannelPlayerBackground[] = {1, 1, 1, 0.5};
	colorDirectChannelPlayerText[] = {0, 0, 0, 1};
	colorPlayerChannel[] = {0.8, 0.7, 1, 1};
	colorPlayerChannelPlayerBackground[] = {0.8, 0.7, 1, 0.5};
	colorPlayerChannelPlayerText[] = {0, 0, 0, 1};
	colorMessage[] = {1, 1, 1, 1};
	colorMessageProtocol[] = {0.65, 0.65, 0.65, 1};
};

  • 1

#296 OFFLINE   Morty Rob

Morty Rob

    Рядовой

  • Пользователи
  • 9 posts
  • Откуда:Samara

Posted 05 November 2015 - 01:47

большое сообщение

Вот честно, не много не понял..
Создал в диалоге 
 

class tc_chat : RscChatListDefault
		{
			idc = 228228;
			x = 0; 
			y = 0; 
			w = 0.48; 
			h = 0.592;
			
		};	
		 

и добавил ваше описание RscChatListDefault.

запустил, ничего не увидел.. или нужно оба куса кода всунуть..вообщем ничего не понял))
UPD
class RscDisplayChat  создав этот диалог, он вывел только Edit  =)


Edited by Morty Rob, 05 November 2015 - 01:57.

  • 0

#297 OFFLINE   SteelRat

SteelRat

    Полковник

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

Posted 05 November 2015 - 02:34

 

и добавил ваше описание RscChatListDefault.

запустил, ничего не увидел..

Это не мои два куска кода, это два куска БЕСовских конфигов про чат, и это не всё, это ориентир в этих дебрях, в каком аддоне искать

https://arma3.ru/for...ptingu/?p=57138


  • 0

#298 OFFLINE   Street-you

Street-you

    Рядовой

  • Пользователи
  • 27 posts
  • Откуда:Пятигорск

Posted 11 November 2015 - 17:27

Такой вопрос: если, к примеру, уличный туалет приаттачить к человеку(боту), будет ли возможность открыть дверь туалета, или в этом случае туалет становится статическим объектом полностью. Хочу приаттачить линзу к прицелу, вот и интересуюсь, будет ли тогда работать PIP.


  • 0

#299 OFFLINE   vlad333000

vlad333000

    Полковник

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

Posted 11 November 2015 - 18:04

Такой вопрос: если, к примеру, уличный туалет приаттачить к человеку(боту), будет ли возможность открыть дверь туалета, или в этом случае туалет становится статическим объектом полностью. Хочу приаттачить линзу к прицелу, вот и интересуюсь, будет ли тогда работать PIP.

Все будет прекрасно работать
  • 0

#300 OFFLINE   Morty Rob

Morty Rob

    Рядовой

  • Пользователи
  • 9 posts
  • Откуда:Samara

Posted 27 November 2015 - 00:40

Доброго времени суток, пожалуйста помогите.
Решил реализовать возможность открывать и закрывать двери (lock unlock), но не для BIS домов. данная возможность реализуется с помощью переменной bis_disabled_Door_1, но, к сожалению данная переменная работает, видимо, только с BIS домами.
 
Я решил сделать по другому, в конфиге, делать проверку на UserAction, что если дом закрыт, не показывать UserAction 
 
 

class open_door_1 {
    displayName = "Open Door";
    position = "Interact1";
    radius = 1;
    onlyForplayer = "true";
    condition = "((this animationPhase 'Door_1') < 0.5) && (this getVariable 'tc_house_unlock')";
    statement = "this animate ["Door_1", 1]";
    };
 

 this getVariable 'tc_house_unlock'
 
но к сожалению конфиг выдает ошибку, когда добавляю второе услови, возможная причина, что в this здесь, это дверь, а не дом.
 
Прошу вашей помощи, почему возникает ошибка и возможные способы устранения


  • 0




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