Einzelnen Beitrag anzeigen
Alt 06.03.2013, 17:12   #1 (permalink)
JoeJoe87577
500 Beiträge1000 Beiträge
 
Registriert seit: 05.01.2008
Alter: 32
Beiträge: 1.703
Standard Bereiche einnehmen - Wie geht das?

Hallo zusammen,

mit dem Start von Arma 3 wollte ich mich auch mal ein bisschen mit dem Editor spielen.
Da kam mir eine ganz tolle Idee, die aber jetzt an der Umsetzung scheitert. Ich möchte eine Mission bauen in der 2 Teams um bestimmte Punkte auf der Karte kämpfen (Ich weiß ist wie AAS). Ich bin im Moment schon so weit, dass die Bereiche eingenommen werden können. Jetzt fehlt mir aber einfach das Wissen um ein Script zu schreiben was von Anfang an den Status meiner Zonen überwacht. Die Logik ist mir klar, aber ich habe keine Ahnung wie ich das anstellen soll.
Um es mal ganz präzise auszudrücken:
Ich brauche ein oder mehrere Scripte die meine Zonen verwalten, also ist die Zone eingenommen (von wem?), wird angegriffen (von wem?) oder neutral.

So weit bin ich bis jetzt:
Code:
_trigger = _this select 0;
_timeToCapture = _this select 1;
_zoneMarker = _this select 2;
_zoneName = _this select 3;
_showNumber = _this select 4;

_captureSpeed = 1;
_timer = 0;
_modifiedTime = _timeToCapture;
_capturedBy = "";

while {( true )} do {
	sleep 1;
	
	_bluforUnits = west countSide (list _trigger);
	_opforUnits = east countSide (list _trigger);
	_modifiedTime = _timeToCapture;
	//Debug
		if(_showNumber) then { player sidechat format["Blufor units: %1, Opfor units: %2", _bluforUnits, _opforUnits] };
	
	if((_bluforUnits > 0) or ( _opforUnits > 0)) then {

		if((_bluforUnits > _opforUnits) && (_capturedBy != "BLUFOR")) then {
			_captureSpeed = _bluforUnits - _opforUnits;
			if( _captureSpeed != 0) then { _modifiedTime = _modifiedTime / _captureSpeed };
			if(_timer < _modifiedTime) then {
				_zoneMarker setmarkerColor "ColorYellow";
				_zoneMarker setMarkerText format["%1 is under attack", _zoneName];
				if(_timer == 0) then { player sidechat format["%1 is under attack", _zoneName]; };
				_timer = _timer +1;
			}
			else {
				_zoneMarker setMarkerColor "ColorBlue";
				_zoneMarker setMarkerText format["%1 is held by BLUFOR", _zoneName];
				player sidechat format["%1 was captured by BLUFOR", _zoneName];
				_timer = 0;
				_capturedBy = "BLUFOR";
			};
		}
		else {
			if((_opforUnits > _bluforUnits) && (_capturedBy != "OPFOR")) then {
				_captureSpeed = _opforUnits - _bluforUnits;
				if( _captureSpeed != 0) then { _modifiedTime = _modifiedTime / _captureSpeed };
				if(_timer < _modifiedTime) then {
					_zoneMarker setmarkerColor "ColorYellow";
					_zoneMarker setMarkerText format["%1 is under attack", _zoneName];
					if(_timer == 0) then { player sidechat format["%1 is under attack", _zoneName]; };
					_timer = _timer +1;
				}
				else {
					_zoneMarker setMarkerColor "ColorRed";
					_zoneMarker setMarkerText format["%1 is held by OPFOR", _zoneName];
					player sidechat format["%1 was captured by OPFOR", _zoneName];
					_timer = 0;
					_capturedBy = "OPFOR";
				};
			};
		};
	};
};
Am Ende des Scriptes müsste dann ein Aufruf an mein Hauptscript kommen um die Zone auf "eingenommen" zu setzen.


Und als zweites gibt es ein else if? Ich hab in den Scripting Commands nur if oder else gefunden.

Geändert von JoeJoe87577 (06.03.2013 um 18:18 Uhr).
JoeJoe87577 ist offline