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. :confused: 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...:naughty: Wie muss ich die Abfrage schreiben, West und Ost in Marker = Markerfarbe gelb ??? :komisch: MfG - CJ |
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). :rolleyes: |
Liste der Anhänge anzeigen (Anzahl: 1)
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. |
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 |
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:
{ |
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...:ugly: MfG - Christopher |
Zitat:
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:
{ @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 |
doch, hier ist der eintrag...
Zitat:
|
Oh, hehe, übersehen :)
Xeno |
Liste der Anhänge anzeigen (Anzahl: 1)
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". |
cool danke, spitzen service :daumen::daumen::daumen:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:54 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias