Armed-Assault.de Twitter


Editing The world is a Script - write it!

Antwort
 
Themen-Optionen Ansicht
Alt 03.05.2009, 02:35   #1 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Registriert seit: 29.05.2008
Ort: BERLIN
Alter: 29
Beiträge: 496
GER_CJ-187 eine Nachricht über ICQ schicken GER_CJ-187 eine Nachricht über Skype™ schicken
Icon5 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
GER_CJ-187 ist offline   Mit Zitat antworten
Alt 03.05.2009, 10:27   #2 (permalink)
10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Buliwyf
 
Registriert seit: 11.03.2005
Ort: HH
Alter: 47
Beiträge: 1.930
Standard

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).

Buliwyf ist offline   Mit Zitat antworten
Alt 03.05.2009, 12:25   #3 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

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.
Angehängte Dateien
Dateityp: zip Marker_Faerben.zip (2,4 KB, 38x aufgerufen)
Vienna ist offline   Mit Zitat antworten
Alt 03.05.2009, 13:28   #4 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 78
Beiträge: 6.547
Standard

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.
Xeno ist offline   Mit Zitat antworten
Alt 03.05.2009, 16:25   #5 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

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;
weil das Auslesen der "side" die meisten Takte benötigen wird.
Vienna ist offline   Mit Zitat antworten
Alt 03.05.2009, 16:30   #6 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Registriert seit: 29.05.2008
Ort: BERLIN
Alter: 29
Beiträge: 496
GER_CJ-187 eine Nachricht über ICQ schicken GER_CJ-187 eine Nachricht über Skype™ schicken
Standard

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
GER_CJ-187 ist offline   Mit Zitat antworten
Alt 03.05.2009, 19:16   #7 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 78
Beiträge: 6.547
Standard

Zitat von Vienna Beitrag anzeigen

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.

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;
Aber die Abfrage per count ist ebenfalls in Ordnung.

@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.
Xeno ist offline   Mit Zitat antworten
Alt 03.05.2009, 19:38   #8 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Registriert seit: 29.05.2008
Ort: BERLIN
Alter: 29
Beiträge: 496
GER_CJ-187 eine Nachricht über ICQ schicken GER_CJ-187 eine Nachricht über Skype™ schicken
Standard

doch, hier ist der eintrag...

Zitat:

//Markerfarbe aufgrund der Zählung bestimmen
_f = "ColorBlack"; //keine Einheiten im Bereich
if(_w>0 and _e<1 and _g<1)then{_f = "ColorGreenAlpha"}; //grün: nur West im Bereich
if(_e>0 and _w<1 and _g<1)then{_f = "ColorRedAlpha"}; //rot : nur East im Bereich
if(_g>0 and _w<1 and _e<1)then{_f = "ColorBlue"}; //blau: nur Resi im Bereich
if((_w>0 and(_e>0 or _g>0))or(_e>0 and _g>0))then{_f="ColorYellow"}; //gelb: zwei Seiten im Bereich
_m setMarkerColorLocal _f;

hab ihn einfach mal entfernt...
GER_CJ-187 ist offline   Mit Zitat antworten
Alt 03.05.2009, 21:34   #9 (permalink)
5000 Beiträge
 
Benutzerbild von Xeno
 
Registriert seit: 03.01.2008
Alter: 78
Beiträge: 6.547
Standard

Oh, hehe, übersehen

Xeno
__________________
In arma everything is made of refined explodium, armored with wet paper towels.
Xeno ist offline   Mit Zitat antworten
Alt 03.05.2009, 21:49   #10 (permalink)
SQF Zauberer 10 Jahre hx3
500 Beiträge1000 Beiträge
 
Benutzerbild von Vienna
 
Registriert seit: 12.07.2004
Ort: Wien
Beiträge: 1.917
Standard

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".
Angehängte Dateien
Dateityp: zip Marker_Faerben2.zip (2,4 KB, 34x aufgerufen)
Vienna ist offline   Mit Zitat antworten
Alt 04.05.2009, 01:03   #11 (permalink)
50 Beiträge100 Beiträge250 Beiträge
 
Registriert seit: 29.05.2008
Ort: BERLIN
Alter: 29
Beiträge: 496
GER_CJ-187 eine Nachricht über ICQ schicken GER_CJ-187 eine Nachricht über Skype™ schicken
Standard

cool danke, spitzen service
GER_CJ-187 ist offline   Mit Zitat antworten
Antwort

Stichworte
arma script marker farbe


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
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


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