03.05.2009, 02:35 | #1 (permalink) |
Problem mit Markerkontrolle
Problem mit Markerkontrolle
Ich bin gerade dabei, eine Mission zu erstellen, wo man 13 Sektoren einnehmen muss... Es gibt 3 Parteien, 2 sind Spielbar und die Dritte ist KI (Falschirmspringer für jeden Bereich, die kommen, wenn das örtliche KI Team ausgelöscht wurde) Die Sektoren sind von der KI besetzt blau, von Seite 1 Grün und von Seite 2 Rot. Das Spiel endet erst dann, wenn eine Seite alle sektoren hat. Jetzt möchte ich aber, dass wenn Seite 1 und Seite 2 zur gleichen Zeit in einem bereich ist, dass dieser Marker dann gelb wird... Wie muss ich die Abfrage schreiben, West und Ost in Marker = Markerfarbe gelb ??? MfG - CJ |
|
03.05.2009, 10:27 | #2 (permalink) |
Registriert seit: 11.03.2005
Ort: HH
Alter: 52
Beiträge: 1.930
|
Du wirst wohl schwer um den Einsatz von Sensoren herum kommen. Sprich, Du wirst für die Stellungsbereiche jeweils einen Sensor platzieren müssen, der JEDE Seite erfasst und mit dem Du dann per COUNT abfragst, wieviel WEST/OST/NIEMAND in diesem Sensor drin sind/ist. Anhand dessen bestimmst Du dann die Markerfarbe.
Aber warum das Rad neu erfinden? Es gibt Ligamaps, in denen Du derartige Scripte findest. So ganz ohne ist das nämlich nicht. Schon garnicht, wenn das Ganze multiplayertauglich sein soll (Server/Client). |
03.05.2009, 12:25 | #3 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Im Annahng ein Beispiel für einen Marker. Der färbt sich auf der Karte je nach Anwesenheit der Units:
grau = keine Einheit grün = West rot = East blau = Resistance gelb = zwei Seiten Der Auslöser hat die Größe des Markers und der Auslöserbereich deckt sich mit dem Markerbereich. Im Auslöser wird ein Skript aufgerufen, welches die Umfärbung steuert. Auslöser und Marker können beliebig kopiert werden. Danach einfach Auslöser- und Markernamen ändern (auch beim Skriptaufruf im Auslöser). Dein KI Team muss der Seite Resistance angehören (Einstellung "freundlich zu niemandem"). Die Spieler haben Seite West und East. Denen solltest du auch KI-Einheiten zur Seite stellen, damit sie eoberte Sektoren besetzen und halten können. |
03.05.2009, 13:28 | #4 (permalink) |
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
|
Vienna, noch ein kleiner Tip
Anstatt per Loop über alle Einheiten im Trigger zu iterieren kannst Du die Anzahl einer Seite auch so bekommen: _w = {side _x == west} count list _a; _e = {side _x == east} count list _a; _g = {side _x == resistance} count list _a; Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels. |
03.05.2009, 16:25 | #5 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Ja, so geht es auch. Der "count" Befehl ist sehr mächtig und hier auch einfacher zu schreiben. Optimal, wenn man nur eine Seite abfragt.
In meinem Fall ist die "Systembelastung" mit forEach wahrscheinlich etwas geringer, weil das List-Array nur einmal durchlaufen wird. Von der Schnelligkeit vielleicht noch besser wäre: Code:
{ _s = side _x; if(_s == west)then{_w = _w + 1}; if(_s == east)then{_e = _e + 1}; if(_s == resistance)then{_g = _g + 1} }forEach list _a; |
03.05.2009, 16:30 | #6 (permalink) |
vielen dank, hat mir gut weitergeholfen...
nur werden die Marker wieder schwarz, wenn niemand in diesem bereich ist. ich wollte es so haben, dass der marker sich die letzte Einheit merkt und die Farbe beibehält, bis wieder eine andere Partei den Marker einnimmt... MfG - Christopher |
|
03.05.2009, 19:16 | #7 (permalink) |
Registriert seit: 03.01.2008
Alter: 84
Beiträge: 6.552
|
Bei einem Trigger der nur einen kleinen Bereich abfragt, wie es bei einer C+H üblich ist, kein Problem mit count Wenn Du bei forEach bleibst... folgender Vorschlag zur "Code Optimierung" (es ist nicht nötig, eine weitere if Bedingung abzufragen, wenn bereits eine eingetreten ist): Code:
{ switch (side _x) do { case west: {_w = _w + 1}; case east: {_e = _e + 1}; case resistance: {_g = _g + 1}; }; } forEach list _a; @GER_CJ-187 Schwer zu sagen, warum Dein Marker schwarz wird, Viennas Script macht es jedenfalls nicht. Spielt sonst noch irgendein setMarker... mit dem Marker herum ? Mixen von setMarkerxxx ohne local und mit local verursacht auch schon mal gerne Probleme (blinkende Marker, Markerpositonen hüpfen hin und her, etc). Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels. |
03.05.2009, 19:38 | #8 (permalink) |
doch, hier ist der eintrag...
hab ihn einfach mal entfernt... |
|
03.05.2009, 21:49 | #10 (permalink) |
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
|
Das Streichen der grauen Farbe ergibt das Problem, wenn zwei vorhandene Gegner gleichzeitig sterben, dann bleibt die Farbe auf Gelb stehen.
In der neuen Beispielmission im Angang wird der Marker nur dann schwarz, wenn die letzte Markerfarbe gelb war. Bei Grün, Rot und Blau bleibt die Farbe erhalten. Das Skript enthält auch die optimierte Version mit "switch". |
Stichworte |
arma script marker farbe |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Problem mit WPs | koko | Editing | 12 | 15.03.2009 08:49 |
Problem mit O2 | Christian.1987 | Hilfe | 9 | 29.11.2008 15:48 |
Problem mit FS10 | Sn4pSh0teR | Hilfe | 12 | 28.02.2008 16:43 |
Problem mit Addons | eliteforce | Hilfe | 1 | 14.11.2006 19:22 |