Модератор форума: Slon |
Форум РЕДАКТОР - ArmA 2 Скрипты Вопросы по скриптописанию (Тонкости написания скриптов) |
Вопросы по скриптописанию |
› Вторник
› 11.06.2013
› 03:06
› Сообщение #
Deaster, нет такой команды.
|
› Среда
› 12.06.2013
› 02:20
› Сообщение #
Dim@s535, Дописал эту строчку. Теперь при запуске анимация выполняется только у меня. Но когда друг запускает, опять я корячусь.
Спасибо за прогу. Deaster, вроде можно так сделать _people = nearestObjects [pos,["Man","AllVehicles"],400]; { if (isPlayer _x) then {}; //в скобках код, выполняемый при присутствии игрока }; foreach _people;
Spitfire
|
› Среда
› 12.06.2013
› 10:21
› Сообщение #
artivad2, а тебе нужно чтобы и ты, и друг могли активировать скрипт, но чтобы выполнялся только у активировавшего?
Добавлено (12.06.2013, 10:19) --------------------------------------------- artivad2, насчёт nearestObjects: Лучше заменить строку на: Код _peoples = getPos *Объект* nearObjects ["Man",*Радиус*]; --------------------------------------------- Цитата (artivad2) // В скобках код, выполняемый при присутствии игрока. Сообщение отредактировал Dim@s535 - Среда, 12.06.2013, 10:28
|
› Среда
› 12.06.2013
› 17:17
› Сообщение #
Dim@s535, угу, так и хотелось бы.
Цитата (Dim@s535) Точнее при присутствии ВСЕХ игроков в радиусе 400 метров. Команда-то ищет всех солдат в зоне, и код будет выполняться, соответственно, для всех игроков в указанном радиусе. Ну, по крайней мере, можно занести _x в какую-нибудь переменную, это и будет игрок. Кажется, Deaster хотел именно это: Цитата (Deaster) Какая команда выдаёт ближайшего игрока Ладно, мудрить не буду. Разобраться бы с этими скриптами для клиента.
Spitfire
|
› Среда
› 12.06.2013
› 17:51
› Сообщение #
artivad2, ок, разберёмся.
Добавлено (12.06.2013, 17:34) --------------------------------------------- artivad2, может себе дай имя в редакторе PlayerOne, а другу PlayerTwo, а в скрипте сделай проверку. Добавлено (12.06.2013, 17:43) --------------------------------------------- А в активацию скрипта пиши nul = [this]execVM "Скрипт.sqf"; Добавлено (12.06.2013, 17:48) --------------------------------------------- Содержание скрипта примерно такое: Код _Unit = _this select 0; if (_Unit != playerOne || _Unit != playerTwo) exitWith {}; playerdir=getdir _unit; deletevehicle fire; _unit playmove "AINVPKNLMSTPSLAYWRFLDNON_MEDIC"; sleep 8; fire = "Land_Fire_burning" createVehicle [0,0,0]; fire setpos [(getpos _unit select 0) + 1*sin playerdir, (getpos _unit select 1)+1*cos playerdir, (getpos _unit select 2)]; Добавлено (12.06.2013, 17:51) Сообщение отредактировал Dim@s535 - Среда, 12.06.2013, 17:49
|
› Среда
› 12.06.2013
› 18:33
› Сообщение #
Код if (_Unit != playerOne || _Unit != playerTwo) exitWith {}; К именам лучше вообще не привязываться, чтобы потом гемороя небыло с правками, если что-нибудь изменится в будущем Проще и логичнее сделать не через радио, а через addAction (http://community.bistudio.com/wiki/addAction) init.sqf Код player addAction ["Развести костёр", "bonfire.sqf", [],-1,false,false,"",""]; bonfire.sqf Код _actor = _this select 1; _actionIndex = _this select 2; _dir = getdir _actor; _pos = gepos _actor; _posF = (_pos select 0) + 1*sin _dir, (_pos select 1)+1*cos _dir, (_pos select 2); if(!isNil "fire")then{ deletevehicle fire; }; _actor playmove "AINVPKNLMSTPSLAYWRFLDNON_MEDIC"; sleep 8; fire = "Land_Fire_burning" createVehicle _posF; player removeAction _actionIndex; Я код не проверял, но идея в том что в вызывающий скрипт bonfire.sqf передастся: 1. игрок который нажал кнопку 2. объект к которому был добавлен экшн 3. индекс экшна чтобы можно было его удалить 4. свои переменные (3й аргумент) Также советую к использованию вот эту замечательную вещь http://community.bistudio.com/wiki/Multiplayer_framework http://community.bistudio.com/wiki/Locality_in_Multiplayer
Cтруктуры данных важнее кода!
Список команд | Список оружия | Список техники | Список юнитов | Список объектов Armstalker Online |
› Среда
› 12.06.2013
› 19:34
› Сообщение #
Dim@s535, Скрипт вообще не выполняется. Но оно вобщем-то и понятно. This - это ведь триггер получается.
Цитата (Dim@s535) artivad2, и кстати, классная ава. thumb У тебя тож прикольная. ZoRRo, Да вот не хотелось бы засорять меню, но если нет другого выхода... У меня просто там еще функция фонаря и еще кое-что. Может попробовать создать меню как в wasteland или evolution. Только я не нашел как, да и чувствую геморойно будет. Что это за замечательные вещи, не понял ничего.
Spitfire
|
› Среда
› 12.06.2013
› 21:08
› Сообщение #
artivad2, Фонарь и подобный инвентарь можно забиндить на кнопки, а кое-что можно активировать динамически в зависимости от локации игрока или дополнительных условий, используя параметр условия в команде addaction, или addaction добавлять объекту а не игроку.
К примеру если это найм ботов то возле казарм, если не геймплейные вещи то где-нибудь только на респе, таким образом меню будет отчищаться от неактуальных опций Первая ссылка Это фреймворк, который избавит от головной боли когда понадобится выполнить что-то к примеру: Код Команда hint на всех подключенных к игре клиентах [nil,nil,rHINT,"Enjoy the game."] call RE; Команда hint на всех подключенных к игре клиентах + выполнится только для JIP клиентов после присоединения [nil,nil,"per",rHINT,"Enjoy the game."] call RE; Команда hint на клиентах где объект miles локален: [nil,miles,"loc",rHINT,"Miles is local here."] call RE; Команда hint на клиентах где первый игрок в группе локален + для JIP [nil,(units group player) select 0,"loc" + "per",rHINT,"Hint."] call RE; ну и тд. единственное жалко что количество команд ограничено, там ниже список поддерживаемых команд Вторая ссылка Повествует о том что чему локально
Cтруктуры данных важнее кода!
Список команд | Список оружия | Список техники | Список юнитов | Список объектов Armstalker Online |
› Среда
› 12.06.2013
› 22:49
› Сообщение #
добавление и(или) замена пунктов в радио меню
http://community.bistudio.com/wiki/commandingMenu http://community.bistudio.com/wiki/showCommandingMenu суть в следущем. Дожидаетесь нажатия кл. от 0 до 9 WaitUntil {commandingMenu ! = ""}; проверяете каторый был выбран if (commandingMenu == "RscRadio") then { это было 0; сбрасываем вызванное и заменяем своим showCommandingMenu "#USER:Tag_Menu_myMenu_0"; }; |
› Четверг
› 13.06.2013
› 00:08
› Сообщение #
Deaster,
Код fx_getPlayerSibling = { _obj = _this select 0; _dist = _this select 1; _sorted = []; _siblings = nearestObjects [_obj, ["Man"], _dist] - [_obj]; if(count _siblings != 0)then{ { _closest = _siblings select 0; {if (getpos _x distance _obj < getpos _closest distance _obj) then {_closest = _x}} forEach _siblings; _sorted = _sorted + [_closest]; _siblings = _siblings - [_closest] }foreach _siblings; }; if(count _sorted != 0)then{_sorted select 0}else{objNull}; }; _sibling = [player, 10] call fx_getPlayerSibling; _sibling setDammage 1; 1. объект 2. дистанция которая будет сканироваться на наличие юнитов 3. на выходе объект Сообщение отредактировал ZoRRo - Четверг, 13.06.2013, 12:06
Cтруктуры данных важнее кода!
Список команд | Список оружия | Список техники | Список юнитов | Список объектов Armstalker Online |
› Четверг
› 13.06.2013
› 00:34
› Сообщение #
Цитата 1. исходня позиция 2. дистанция которая будет сканироваться на наличие юнитов 1 ненадо позицию посылать. Посылай объект чтобы вычесть его из массива _sibling = [player, 10] call fx_getPlayerSibling; ............ _ob = _this select 0; ............... _siblings = nearestObjects [_ob, ["Man"], _dist] - [_ob]; [object, ["ClassName",...], radius] чтото больно много написал, вполне достаточно одного цикла |
› Четверг
› 13.06.2013
› 00:42
› Сообщение #
Slon, а как в одном цикле сравнить элементы массива, нужно их как-то отсортировать. Ты не про тот цикл, спасибо, всё, учёл, исправил
Сообщение отредактировал ZoRRo - Четверг, 13.06.2013, 00:48
Cтруктуры данных важнее кода!
Список команд | Список оружия | Список техники | Список юнитов | Список объектов Armstalker Online |
› Четверг
› 13.06.2013
› 00:49
› Сообщение #
fx_getPlayerSibling = {
_ob = _this select 0; _dist = _this select 1; _siblings = nearestObjects [_ob, ["Man"], _dist] - [_ob]; _ext = objNull; { if (_ob distance _x < _dist) then {_dist = _ob distance _x; _ext = _x}; } forEach _siblings; _ext }; |
› Четверг
› 13.06.2013
› 00:57
› Сообщение #
Slon, спасибо, мозг мне вынес внезапно )) не с того конца пошёл
Cтруктуры данных важнее кода!
Список команд | Список оружия | Список техники | Список юнитов | Список объектов Armstalker Online |
› Четверг
› 13.06.2013
› 05:04
› Сообщение #
ZoRRo, player addAction ["Развести костёр", "bonfire.sqf", [],-1,false,false,"",""];
У addAction приоритет НЕ может быть ниже 0! Он должен быть в диапазоне от 0 до 6! Добавлено (13.06.2013, 05:00) --------------------------------------------- Цитата (artivad2) Украл у кого-то на каком-то форуме=) Добавлено (13.06.2013, 05:04) --------------------------------------------- Цитата (ZoRRo) К именам лучше вообще не привязываться, чтобы потом геморроя не было с правками, если что-нибудь изменится в будущем. Проще и логичнее сделать не через радио, а через addAction. Сообщение отредактировал Dim@s535 - Четверг, 13.06.2013, 05:09
|
| |||
Чат сайта |