Armed-Assault.de Twitter
Antwort
 
Themen-Optionen Ansicht
Alt 16.02.2015, 20:31   #1 (permalink)
Armed-Assault.de Team10 Jahre hx3
500 Beiträge1000 Beiträge2.500 Beiträge
 
Benutzerbild von Moerderhoschi
 
Registriert seit: 01.07.2006
Ort: Kabul
Alter: 33
Beiträge: 2.665
Standard UnitAreasOnMap Script // Einfache Handhabung

unitAreasOnMap Script
by Moerderhoschi

Link zur Beispielmission am Ende des Posts

Ich habe mich mal an ein Script gemacht um Bereiche, in denen sich Einheiten befinden, auf der Karte zu markieren. Die Hintergruende sind Missionstasks wie "saeubere stadt xy von allen feinden" um nicht immer 15 Minuten lang den letzten Feind suchen zu muessen.


Beispielvideo:
YouTube Video

Zunaechst etwas Theorie:

Wie funktioniert das Script?

1. Das Script prueft die uebergebenen Parameter (Array oder TriggerObject)
2. Alle Einheiten in dem Triggerbereich pruefen wenn Trigger / Alle Einheiten auf der Karte pruefen wenn Array - und die Sektoren in denen sich Einheiten befinden in einem Array speichern
3. Alle Sektoren im Array pruefen ob fuer diese schon ein Marker gesetzt wurde um unnoetiges erstellen/loeschen zu vermeiden
4. Sektormarker in denen sich keine Einheiten mehr befinden loeschen
5. Neue Sektormarker erstellen
6. Sleep x sekunden und starte von vorne bei Punkt 2

Wie wird es benutzt:

Die Nutzung ist recht einfach, einfach folgenden Inhalt in den Trigger kopieren und die Paramter anpassen:

Code:
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}}};
Parameter !?

Version 1.1 mit TriggerObject:


Version 1.2 mit TriggerObject:


Ingame, klicken zum vergroeßern:



Version 2.1 mit Array (hierfuer wird kein Trigger benoetigt, man kann den code auch in die init oder in die init einer Unit schreiben):


Version 2.2 mit Array:


Q: Parameter MarkerCorrection?
A: Wenn man eine Custominsel wie in A3MP nutzt muss dieser Parameter verwendet werden. Bei den Custominseln gibt es oft Gridverschiebungen so das die Grids nicht zur Position passen. Dies kann man hiermit anpassen. Als Beispiel fuer A3MP Map Chernarus sollte [ 0 , -40] verwendet werden.

Q: Was passiert wenn Einheiten von zwei Fraktionen in einem Sektor sind?
A: Es werden zwei Sektormarker erstellt und die Farben mischen sich.

Q: Wie viele Trigger mit dem Script kann ich auf der Karte platzieren, Performacnefrage?
A: Das Skript sollte nur einen geringen Performanceimpact haben. Sollte jemand hier andere Erfahrungen machen dann bitte gerne schreiben

Q: AreaColor?
A: Bitte mal hier schauen: LINK, man kann alle Farben von dort verwenden. Nur den Teil nach "color" schreiben, fuer "colorRed" schreibe "red", fuer "colorBlue" schreibe "blue", fuer "Color1_FD_F" schreibe "1_fd_f"

Q: AreaMarkerLifeTime(FadeTime)?
A: Das ist die Zeit die benötigt wird bis der Maker komplett verschwunden ist. Wenn die AreaMarkerLifeTime groeßer ist als die RefreshTime dann wird die AreaMarkerLifeTime auf 0 gesetzt was NoFade entspricht.

Q: Warum ist das Skript eine lange, unleserliche Zeile?
A: Ich habe das Skript mit dem ArmaResourceOptimizator von Leopotam komprimiert

Q: Wo kann ich das Skript in einer lesbaren version sehen um im Detail zu verstehen was darin passiert?
A: Kein Problem, besuche mein Blog und schau dir die lesbare Version an, link ist am Ende des Posts

Q: Wenn ich einen Bug finde?
A: Bitte mir in diesem Thema melden, Danke


Wie es ingame im Editor und auf der Karte aussieht:
1 Trigger - TriggerActivation Bluefor - TriggerParameters [ thisTrigger ]
http://abload.de/img/2015-02-16_00009meuy2.jpg (415 kB)
http://abload.de/img/2015-02-16_00010seu8h.jpg (566 kB)

4 Triggers:
- 1. TriggerActivation Blufor - TriggerParameters [ thisTrigger, 1, [0,0], "blue", 0.6 ]
- 2. TriggerActivation Opfor - TriggerParameters [ thisTrigger, 1, [0,0], "red", 0.6 ]
- 3. TriggerActivation Independent - TriggerParameters [ thisTrigger, 1, [0,0], "green", 0.6 ]
- 4. TriggerActivation Civilian - TriggerParameters [ thisTrigger, 1, [0,0], "civilian", 0.6 ]
http://abload.de/img/2015-02-16_00005k5u9r.jpg (223 kB)
http://abload.de/img/2015-02-16_0000791uez.jpg (251 kB)
http://abload.de/img/2015-02-16_00004aajar.jpg (128 kB)

1 Trigger - TriggerActivation Opfor - TriggerParameters [ thisTrigger ] - A3MP Chernarus without markerCorrection Parameter
http://abload.de/img/2015-02-16_00011riu6e.jpg (273 kB)
http://abload.de/img/2015-02-16_000126vu0x.jpg (702 kB)

1 Trigger - TriggerActivation Opfor - TriggerParameters [ thisTrigger, 1, [ 0 , -40 ], "red", 0.6 ] - A3MP Chernarus with markerCorrection Parameter
http://abload.de/img/2015-02-16_00013fvusf.jpg (208 kB)
http://abload.de/img/2015-02-16_00015nuuf9.jpg (706 kB)


Beispiel Mission:
Download von meinem Blog - UnitAreasOnMap Script // Easy to use | Moerderhoschi's Place

gruß
hoschi
__________________



Geändert von Moerderhoschi (22.02.2015 um 18:30 Uhr). Grund: script update to v1.3 : Added new Parameters AreaMarkerLifeTime(FadeTime) and ScriptLifeTime
Moerderhoschi ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Beta-Patch für OpA erschienen det99 Community 1429 18.07.2014 16:51
T8 Units - Einheiten Spawn Script T-800a Editing & Scripting 2 07.03.2014 20:46
Script wird nicht vollständig ausgeführt MagicStyle Editing & Scripting 20 04.09.2013 16:54
Day & Weather Script Moerderhoschi Editing & Scripting 13 02.12.2012 10:29
marker über script erzeugen hypercop Editing & Scripting 2 28.08.2010 22:40


Kontakt - HX3.de - Archiv - Nach oben

Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias



SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116