ユニットの存在をマップマーカーで表示する UnitAreasOnMap スクリプト

Arma 3 で指定された範囲内にユニットが存在すると、マップ マーカーの色を変えて存在を知らせる UnitAreasOnMap スクリプト が公開されました。

マーカーは自動で作成、設置、削除が自動で行われます。

ミッションで使う際に、パラメータで変える色や検査間隔、対象陣営を設定することが可能です。

使いかたとしてトリガーの AVTIBATION を BLUFOR などの陣営にして、 ON ACT. 欄に下記の構文を記述するだけ。

0=[thisTrigger]spawn{if(!isServer)exitWith{};_l0=0;_l1=0;_l2=1;_l3=1;_l4=if(count _this>1)then{_this select 1}else{15};_l5=0;_l6=time;_l7=0;_l8=false;_l9=if(count _this>3)then{_this select 3}else{"red"};_l10=[];_l11="ANY";_l12=if(count _this>4)then{_this select 4}else{0.2};_l13=if(count _this>2)then{(_this select 2)select 0}else{0};_l14=if(count _this>2)then{(_this select 2)select 1}else{0};if(typeName _l4=="ARRAY")then{if(count _l4>2)then{_l7=_l4 select 2};if(count _l4>1)then{_l5=_l4 select 1};_l4=_l4 select 0};if(_l4<1)then{_l4=1};if(_l5>_l4)then{_l5=0};if(_l12<0.1)then{_l12=0.1};if(typeName(_this select 0)=="ARRAY")then{_l0=(((_this select 0)select 0)select 0);_l1=(((_this select 0)select 0)select 1);_l2=_l0+(((_this select 0)select 1)select 0);_l3=_l1+(((_this select 0)select 1)select 1);_l11=if(count _this>5)then{_this select 5}else{"ANY"}}else{_l0=(((getpos(_this select 0))select 0)-((triggerArea(_this select 0))select 0));_l1=(((getpos(_this select 0))select 1)-((triggerArea(_this select 0))select 1));_l2=(((getpos(_this select 0))select 0)+((triggerArea(_this select 0))select 0));_l3=(((getpos(_this select 0))select 1)+((triggerArea(_this select 0))select 1));_l11=if(count _this>5)then{_this select 5}else{(triggerActivation(_this select 0))select 0}};if(!(typeName _l11=="SIDE"))then{if(typeName _l11=="STRING")then{_l11=toUpper _l11;switch(_l11) do{case"WEST":{_l11=west};case"EAST":{_l11=east};case"GUER":{_l11=resistance};case"CIV":{_l11=civilian};default{_l11="ANY"}}}else{_l11="ANY"}};_l15={if(typeName _l11=="SIDE")then{side _x==_l11}else{true}};_l16={_l17=true;for"_l18"from 0 to((count _l19)-1) do{if(_l19 select _l18 select 0==_l20 select 0&& _l19 select _l18 select 1==_l20 select 1)then{_l17=false}};if(_l17)then{_l19=_l19+[_l20]}};while{true}do{_l19=[];_l21=[];_l22=[];if(typeName(_this select 0)=="ARRAY")then{{_l20=[(((floor(((getPos vehicle _x select 0)-_l13)/100))*100)+50+_l13),(((floor(((getPos vehicle _x select 1)-_l14)/100))*100)+50+_l14)];if(getPos vehicle _x select 0<=_l2&& getPos vehicle _x select 0>=_l0&& getPos vehicle _x select 1<=_l3&& getPos vehicle _x select 1>=_l1&& call _l15)then{call _l16}}forEach allUnits}else{{_l20=[(((floor(((getPos vehicle _x select 0)-_l13)/100))*100)+50+_l13),(((floor(((getPos vehicle _x select 1)-_l14)/100))*100)+50+_l14)];if(call _l15&& !(_x isKindOf"Animal"))then{call _l16}}forEach list(_this select 0)};for"_l18"from 0 to((count _l19)-1) do{_l23=false;for"_l24"from 0 to((count _l10)-1) do{if(((getMarkerPos(_l10 select _l24))select 0)==((_l19 select _l18)select 0)&&((getMarkerPos(_l10 select _l24))select 1)==((_l19 select _l18)select 1))then{_l22=_l22+[_l10 select _l24];_l23=true}};if(_l23)then{_l19 set[_l18,-1]}};_l19=_l19-[-1];_l21=_l10-_l22;{deleteMarker _x}forEach _l21;_l10=_l10-_l21;{_l25=createMarker["mdh_unitArasOnMapMarkerName_"+format["%1_%2",time,random 1000],_x];_l10=_l10+[_l25];_l25 setMarkerShape"RECTANGLE";_l25 setMarkerSize[50,50];_l25 setMarkerAlpha _l12;_l25 setMarkerBrush"Solid";_l25 setMarkerColor("color"+_l9)}forEach _l19;if(_l7>0)then{if(time>(_l6+_l7))then{_l8=true}};if(_l8) exitWith{{deleteMarker _x}forEach _l10};if(_l5>0)then{_l26=100;_l27=(_l12/_l26);_l28=(_l5/_l26);for"_l18"from 1 to _l26 do{sleep _l28;{_x setMarkerAlpha((markerAlpha _x)-_l27)}forEach _l10};{deleteMarker _x}forEach _l10;_l10=[];sleep(_l4-_l5)}else{sleep _l4}}};

対象として、複数の陣営も設定できます。

ダウンロードしたスクリプト“!unitAreasOnMapScript.Stratis”フォルダを missions フォルダへ配置して、お試しミッションがプレイ可能です。

C:\Users\OS名\Documents\Arma 3 - Other Profiles\プロフィール名\missions

クレジット

Moerderhoschi

UnitAreasOnMap Script // Easy to use - BI forum

0 コメント:

コメントを投稿