Модератор форума: Slon |
Форум » РЕДАКТОР - ArmA 2 » Скрипты » Вопросы по скриптописанию (Тонкости написания скриптов) |
Вопросы по скриптописанию |
› Среда
› 26.10.2011
› 16:32
› Сообщение #
Ребята такая ситуация десантируется десант на 3000 высоты и летит в свободном падении
при разкрьтеи куполов они далико друг от друга.Можно как та сделать чтобы в свободном падении они слетались друг до друга
__р
|
› Среда
› 26.10.2011
› 16:35
› Сообщение #
RUSRUS, Можешь на определенной высоте перемещать их к командиру через setPos.
Arma 3
Студент МТУСИ |
› Пятница
› 28.10.2011
› 13:40
› Сообщение #
Всем доброго времени суток.
Вопрос следующий -имеем массив игроков в МП миссии: _pl = [pl1,pl2,pl3,pl4,pl5] Как передать в скрипт имя юнита из этого массива, активировавшего например триггер? И каким образом можно сравнить расстояния между юнитами из двух массивов(например как задать условие, если расстояние меньше 10 между любыми юнитами двух массивов, то выполняется какое либо действие)? Заранее спасибо за ответы. |
› Пятница
› 28.10.2011
› 23:53
› Сообщение #
_pl = [pl1,pl2,pl3,pl4,pl5]
локальная переменная _pl в тригере не доступна в файле, в цикле, проверка совпадений в сравнении двух массивов, поочерёдно выбираются боты из списка тригера и проверяется его наличие в массиве _pl Code {_x in _pl} count (List Trigername) > 0 2: два массива _pl0, _pl1 выбираем поодному из одного массива и проверяем со вторым массивом Code private "_un"; { _un = _x; { if (_x distance _un < 10) then {"действия"} } forEach _pl0; } ForEach _pl1; |
› Воскресенье
› 30.10.2011
› 11:24
› Сообщение #
Пропадает возможность постройки после смерти и респауна игрока. Как сделать, чтобы можно было строить после респауна?
|
› Воскресенье
› 30.10.2011
› 11:54
› Сообщение #
Как даётся возможность постройки? выдавай с помощью тригера, условие
alive Player |
› Вторник
› 01.11.2011
› 21:15
› Сообщение #
Спасибо Слон. А как будет выглядеть №2 в sqs синтаксисе?
И еще вопрос, как посчитать в инвентаре игрока количество определенных боеприпасов, например "pipebomb"? Добавлено (01.11.2011, 21:15) --------------------------------------------- Так же большая просьба, помогите составить скрипт - при взрыве пластида в определенном месте(назовем его forbomba) выполняется действие. То что получилось у меня слишком сыро и работает с глюками.. Даа, что то не видно гуру скриптописания, пропали) Как считать количество боеприпасов разобрался _u = "pipebomb" _p = magazines _man _ppp = {_u == _x} count _p Но с остальными вопросами пока не все ясно... Сообщение отредактировал Kaskad_B - Среда, 02.11.2011, 12:39
|
› Среда
› 02.11.2011
› 12:57
› Сообщение #
подрыв мины
Code Player addEventHandler ["fired", {_this Spawn SlnFn_BmAct}]; SlnFn_BmAct = { if ((_this select 4) != "PipeBomb") exitWith {}; WaitUntil {isNull (_this select 6)}; hint "BUM";// это твоё действие }; срабатывает при подрыве и снятии мины если при респе контроль над миной теряется, надо дополнить условие WaitUntil {(isNull (_this select 6)) || !alive Player}; if !(alive Player) exitWith {deleteVehicle (_this select 6)}; |
› Среда
› 02.11.2011
› 14:27
› Сообщение #
Спасибо Слон, но как добиться того что бы действие выполнялось только в случае подрыва, но не снятия мины/ пластида?
У меня пока получилось следующее: добавил евентхандлер fired, в запускаемом скрипте написал: _man = _this select 0 _ammo = _this select 4 ?!(_ammo == "pipebomb"): exit _bomba = nearestObject [player, "pipebomb"] _u = "pipebomb" _i = 0 #st0 _p = magazines _man _pp = {_u == _x} count _p #st1 _p = magazines _man _ppp = ({_u == _x} count _p) ?_ppp > _pp: hint "bomba deactivate"; exit ?((isnull _bomba) and (_ppp <= _pp)): goto "st3" ~1 goto "st1" #st3 hint "нужное действие" Exit +++++++++ Будет еще проверка - находится ли пластид в нужном месте , но тогда и возникают трудности при установке последующих пластидов (они могут быть установлены вне нужной мне зоны). |
› Суббота
› 12.11.2011
› 07:49
› Сообщение #
День добрый !
1) Мне нужно сделать базу за которую будут сражаться Синие против Красных , но кто дольше находится в ней тот получает к примеру оружие в ящике . Как это сделать ? Выходит Синие взяли базу - оружие пополняется в ящике , захватили Красные - оружие появляется... 2) Нужно сделать так чтобы зомби респились там где я их в редакторе поставил... 3) Помогите сделать торговца оружием для мультиплеера...пожалуйста 4) Также как сделать доп.задание в миссии ? Заранее благодарю ! Сообщение отредактировал Shturmovik - Воскресенье, 13.11.2011, 06:46
|
› Суббота
› 12.11.2011
› 09:50
› Сообщение #
Quote (Shturmovik) 4) Также как сделать доп.задание в миссии ? Что в твоём понимании дополнительное? То которое ты создал заранее, но получил игрок в процессе миссии? Или же абсолютно любое? Для второго можно просто поставить модуль SOM он в любое время автоматически генерирует задание. Если же тебе надо то что ты сам сделал то тогда активируй его в процессе миссии с помощь команд: Code task1 = player createSimpleTask [localize "STRD_Task1"]; Task1 setSimpleTaskDescription[localize "STRD_Task1_1", localize "STRD_Task1", localize "STRD_Task1"]; task1 - номер задания Так же можно юзать: Code player setCurrentTask task1; Делает это задание текущим для игрока. И: Code task1 setSimpleTaskDestination markerpos "p1"; Устанавливает указатель куда идти(жёлтая галочка в игре) p1 - имя маркёра. |
› Воскресенье
› 13.11.2011
› 15:43
› Сообщение #
Всем доброго времени суток.
Как добиться того, что бы часть скрипта, запускаемого только на клиенте, выполнилась и(или) на сервере, а другая часть выполнялась по-прежнему только на клиенте? |
› Воскресенье
› 20.11.2011
› 12:19
› Сообщение #
Всем здрасте
Собственно,переделываю свой скрипт создания групп на ОФП, на Арма 2. Разумеется, существует много скриптов создания юнитов,но я его делаю больше для своего использования, ибо мне удобнее сей алгоритм Суть: имеется внешний файл-массив список spisok.sqf Сейчас о у меня в таком виде Code [["EastCrew",["cwr2_SoldierE_Crew"]], ["WestCrew",["cwr2_SoldierW_Crew"]], ["WestPilot",["cwr2_SoldierW_Pilot"]], ["EastPilot",["cwr2_SoldierE_Pilot"]], ["EastGrp",["cwr2_OfficerE","cwr2_SoldierE","cwr2_SoldierE","cwr2_SoldierE","cwr2_SoldierE","cwr2_SoldierE_GL","cwr2_SoldierE_LAT","cwr2_SoldierE_MG","c wr2_SoldierE_GL"]], ["WestGrp",["cwr2_OfficerW","cwr2_SoldierW","cwr2_SoldierW","cwr2_SoldierW","cwr2_SoldierW","cwr2_SoldierW_GL","cwr2_SoldierW_LAT","cwr2_SoldierW_MG","c wr2_SoldierW_GL"]], ["RusGrp",["RU_Soldier_SL","RU_Soldier_MG","RU_Soldier_AT","RU_Soldier_LAT","RU_Soldier_HAT","RU_Soldier_Marksman","RU_Soldier_MG","RU_Soldier_AT","RU_ Soldier_AR","RU_Soldier_LAT","RU_Soldier_GL","RU_Soldier"]], ["ChinaGrp",["PLA_Soldier_SL","PLA_Soldier_TL","PLA_Soldier","PLA_Soldier","PLA_Soldier","PLA_Soldier","PLA_Soldier_GL","PLA_Soldier_AR","PLA_Soldier_MG" ,"PLA_Soldier","PLA_Soldier_LAT","PLA_Soldier_Medic","PLA_Soldier"]], ["German44Grp",["I44_Man_G_WH_NCO_MP40","I44_Man_G_WH_K98k","I44_Man_G_WH_K98k","I44_Man_G_WH_K98k","I44_Man_G_WH_MG42","I44_Man_G_WH_MP40","I44_Man_G_WH_MP 40","I44_Man_G_WH_G43","I44_Man_G_WH_K98k_PzF60","I44_Man_G_WH_K98k_GGrGer"]], ["US44Grp",["I44_Man_A_Army_NCO_M1A1Thompson","I44_Man_A_Army_M1A1Bazooka","I44_Man_A_Army_RTO_M1Carbine","I44_Man_A_Army_M1918A2","I44_Man_A_Army_M1903 A3","I44_Man_A_Army_M1903A3","I44_Man_A_Army_M3Greasegun","I44_Man_A_Army_M1Garand_M7","I44_Man_A_Army_M1Carbine","I44_Man_A_Army_M1Garand", "I44_Man_A_Army_M1A1Thompson","I44_Man_A_Army_M1A1Thompson"]], ["German44SSGrp",["I44_Man_G_SS_NCO_MP43","I44_Man_G_SS_Sniper_K98kZf42","I44_Man_G_SS_ATCrew_G43","I44_Man_G_SS_K98k","I44_Man_G_SS_K98k","I44_Man_G_SS_MP40" ,"I44_Man_G_SS_MP40","I44_Man_G_SS_MP43","I44_Man_G_SS_MG42,I44_Man_G_SS_RPzB54","I44_Man_G_SS_Engr_GbLadung10kg"]], ["German44Fall",["I44_Man_G_WL_FJ_NCO_MP40","I44_Man_G_WL_FJ_MP40","I44_Man_G_WL_FJ_MP40,I44_Man_G_WL_FJ_MP40","I44_Man_G_WL_FJ_MP43","I44_Man_G_WL_FJ_K98k_P zF30","I44_Man_G_WL_FJ_K98k","I44_Man_G_WL_FJ_K98k","I44_Man_G_WL_FJ_K98k","I44_Man_G_WL_FJ_FG42","I44_Man_G_WL_FJ_FG42"]], ["German44Crew",["I44_Man_G_WH_Crew_P38"]], ["US44Ranger",["I44_Man_A_Army_Ranger_NCO_M1Garand","I44_Man_A_Army_Ranger_M1A1Bazooka","I44_Man_A_Army_Ranger_M1Garand","I44_Man_A_Army_Ranger_M1Garand"," I44_Man_A_Army_Ranger_M1Garand","I44_Man_A_Army_Ranger_Sniper_M1903A4","I44_Man_A_Army_Ranger_M1918A2","I44_Man_A_Army_Ranger_M3Greasegun"," I44_Man_A_Army_Ranger_M3Greasegun","I44_Man_A_Army_Ranger_M1A1Thompson"]], ["US44Airborne",["I44_Man_A_Army_AB_NCO_M1A1Thompson","I44_Man_A_Army_AB_M1A1Bazooka","I44_Man_A_Army_AB_M1919A4","I44_Man_A_Army_AB_M1918A2","I44_Man_A_Army _AB_M1A1Thompson","I44_Man_A_Army_AB_M1A1Thompson","I44_Man_A_Army_AB_M1Garand","I44_Man_A_Army_AB_M1Garand","I44_Man_A_Army_AB_M1Garand_M7" ,"I44_Man_A_Army_AB_RTO_M1A1Carbine","I44_Man_A_Army_AB_Sniper_M1903A4"]], ["UK44Grp",["I44_Man_B_Army_AB_NCO_StenMk5","I44_Man_B_Army_AB_BrenMk1","I44_Man_B_Army_AB_PIAT","I44_Man_B_Army_AB_RTO","I44_Man_B_Army_AB_StenMk5","I4 4_Man_B_Army_AB_SMLENo4Mk1","I44_Man_B_Army_AB_StenMk2","I44_Man_B_Army_AB_SMLENo4Mk1","I44_Man_B_Army_AB_SMLENo4Mk1","I44_Man_B_Army_AB_Eng r_GrenadeNo75","I44_Man_B_Army_AB_SMLENo4Mk1"]]] Сначала идет идентификатор-название в группе, а далее сами типы юнитов в группе Затем ставим на карте одиночный юнит,неважно какой, ставим ему вейпойнты, которые должна выполнять группа, затем ставим триггер, при входе в который игрока они создаются,даем ему имя,допустим, Tr1, а затем ему в ините пишем call{[this,Tr1,"EastCrew",12,"",{},[["cwr2_T80",1,1,1,0,{_x engineon true;}],["cwr2_T80",1,1,1,0,{_x engineon true;}],["cwr2_T80",1,1,1,0,{_x engineon true;}],["cwr2_T80",1,1,1,0,{_x engineon true;}]]] execVM "creategroup.sqf"}; this - это просто указатель юнита Tr1- имя триггера "EastCrew" - идентификатор , скрипт создает ту, что увидит в списке с таким именем 12 - сколько раз создаются в группе по списку. если в списке 5 человек, а здесь ставим 3, то будет в группе 15 человек (5*3) "" - скриптовая команда для кажого создаваемого юнита {} - команда для командира группы, выполняется, когда вся группа создана далее идет секция техники, в каждом подпункте "cwr2_T80" -тип машины далее идет наличие командира/стрелка/водилы (0-нет, 1-есть) далее - число пассажиров {_x engineon true;} -команда для создаваемой техники Ну и этот блок три раза повторяется, т к мне нужно 3 одинаковых танка Собственно, сам скрипт Code _man = _this select 0; _trigger = _this select 1; _grouptype = _this select 2; _chislo = _this select 3; _com = _this select 4; _comcommand = _this select 5; _veharray = _this select 6; _grp = group _man; _pos = getpos _man; deleteVehicle _man; _spisokALL = call compile preprocessFileLineNumbers "spisok.sqf"; _i = 0; _k = 0; _kk = 0; _name = ""; while {_i<= COUNT _spisokALL} do { _name = (_spisokALL select _i) select 0; if (_name == _grouptype) exitWith {}; _i=_i+1; }; waitUntil {triggerActivated _trigger}; _spis = (_spisokALL select _i) select 1; while {_k <= _chislo - 1} do { while {_kk <= count _spis - 1} do { _mang = ((_spisokALL select _i) select 1) select _kk createunit [_pos,_grp,_com]; _kk = _kk + 1; }; _kk = 0; _k = _k + 1; }; _leader = leader _grp; _comcommand forEach [_leader]; _i = 0; _chis = count _veharray; _sum = 0; while {_i< _chis} do { _elem = _veharray select _i; _com = _elem select 1; _dr = _elem select 2; _gr = _elem select 3; _pas = _elem select 4; _sum = _sum + _com + _dr + _gr + _pas; _i = _i + 1; }; if (case _sum > count units _grp) then { hint "narodu malo bleat"}; _i = 0; _k = 0; _i2 = 0; _elem = _veharray select 0; _pas = _elem select 4; hint format ["%1",_pas]; while {_i< _chis} do { _elem = _veharray select _i; _vehtype = _elem select 0; _com = _elem select 1; _dr = _elem select 2; _gr = _elem select 3; _pas = _elem select 4; _command = _elem select 5; _veh = _vehtype createVehicle _pos; _command forEach [_veh]; if (_com == 1) then {_men = units _grp select _k;_men moveInCommander _veh;_k = _k + 1}; if (_dr == 1) then {_men = units _grp select _k;_men moveInDriver _veh;_k = _k + 1}; if (_gr == 1) then {_men = units _grp select _k;_men moveInGunner _veh;_k = _k + 1}; While {_i2 < _pas} do { _men = units _grp select _k;_men moveInCargo _veh;_k = _k + 1; _i2 = _i2 + 1; }; _i = _i + 1; }; Все работает, впринципе, но нужны доработки 1)для автозаполнения я сейчас кривовато сделал диалог и скрипт, выдающий список в окно ввода-вывода ,откуда его надо скопировать. как можно в А2 скинуть во внешний файл информацию из скрипта? 2)как посадить бойца на место заряжающего в М1А2? или ганнеров дополнительных в бмп3? и т.д?
Пессимистом быть не так уж и плохо: даже если ты окажешся не прав, все рано все лучше твоих ожиданий.
Только в ОФП/АРМА понимаешь,что мир все-таки плоский и окружён безбрежным океаном. |
› Воскресенье
› 20.11.2011
› 13:36
› Сообщение #
1: во внешний файл только с самодельной прогой стерегущей буфер обмена.
команды объмена http://community.bistudio.com/wiki/copyToClipboard пример проги http://www.flashpoint.ru/forum....0%F9%E5 2:http://community.bistudio.com/wiki/moveInTurret |
› Суббота
› 26.11.2011
› 12:26
› Сообщение #
Как в редакторе дать юниту или группе бойцов команду "найти укрытие"? Играя за командира её можно дать подчиненным выбрав меню-1-8 кажется. Они начинают разбегаться по сторонам и укрываться за углами, деревьями и т.д.
Вообще есть ли такой интерфейс, который позволяет в редакторе назначать командирские команды? Круговой осмотр например ( меню-3-7 ) или делай как я ( меню-7-9 ) или пригнуться ( меню-7-7 )??? |
| |||
Чат сайта |