Einheiten erstellen und automatisch zufällig löschen
Hiho, ich möchte via Script Einheiten an einem Marker (Name=start) Spawen lassen und dabei jeder Einheit die Chance geben sofort gelöscht zu werden, damit die Größe der Trupps zufällig ist.
Code:
Grp1 = Creategroup WEST; Am besten wäre es ja wenn ich jeder Einheit einen "probaility of presence" Wert geben könnte, nur wie? Alternativ dachte ich mir, das man jeder Einheit zufällig löschen könnte... |
Schau dir mal http://community.bistudio.com/wiki/random an.
Damit kannst du eine Random number erzeugen die z.B. im Bereich von 0 - 10 ist. Dann noch eine Abfrage welche Nummer das ist um die entsprechende Einheit zu löschen. Achte aber auf die Notes da steht was wichtiges drin wenn du im MP dein Script verwenden willst. |
z.B.: so
Code:
_min= 3; //Minimum der zu erstellenden Einheiten |
Das sieht ja schonmal sehr gut aus, leider spawnen da immer genau 2 Leutz. Wo ist der fehler ?
Es funktionirt doch .. komischer Weise darf ich die Formatierung so nicht übernehmen... :komisch: bei mir geht es nur so: Code:
_min= 3; |
Ich weiß nicht genau wie das Random in ArmA funktioniert, aber in C# wird eine Random Zahl nach der Systemzeit (genauer gesagt nach den Systemtiks) generiert.
Wenn in Arma jetzt die Missionszeit dafür genommen wird und du das Script am Init ausführst, dann wird natürlich immer dieselbe Zahl generiert. Füge mal am Anfang des Scriptes einen Sleep 0.1 Befehl ein, damit sollte das Problem evtl behoben sein. |
Zitat:
|
|
Zitat:
Edit: Noch ne kleine Anmerkung zum Script- Beispiel: Da die Random- Funktion bei ArmA eigentlich nie exakt den min oder max- Wert des angegebenen Zahlenwert ergibt (also z.B. bei random 7 nie 0 und nie 7), sondern nur einen Annäherung an diese Werte (ausgetestet mit zig 10'000- Durchläufen), werden im obigen Beispiel also maximal 6 Einheiten erstellt. Also einfach immer bei "_max= " den Wert um 1 höher setzen als tatsächlich gewollt. |
Weiter gehts, warum geht damit nicht?
Code:
if (_x==5) then{for [{_a= 0},{_a < _anzahl},{_a = _a + 1}] do{if (_a== 0) then{"O_Soldier_F" createUnit [_pos, _Grp1,"",1, "Sergeant"];} else {"O_Soldier_F" createUnit [_pos, _Grp1,"",1, "Corporal"];};};}; |
Ist ja wohl nur ein Ausschnitt aus einem Script. Bring das Ganze und schreib dazu was Du damit bezwecken willst und woran Du merkst dass es nicht funktioniert, dann kann Dir wohl auch geholfen werden.
|
Das ist das von dir geschriebene Script. xD Und den Fehler hab ich doch rot eingefärbt.
Code:
if (!isServer) exitWith {}; |
Setzt mal Random auf 6 statt auf 5.
|
Ach Mann, bin ja schon hilfsbereit, aber wenn ich Dir die Infos aus der Nase ziehen muss, verliere ich schnell die Lust. Auch jetzt schreibst Du nicht, was Dein Problem an der Sache ist. Aber ich rate mal... es werden keine Einheiten erstellt?
Wenn ja versuch mal die Variable welche Du der erstellten Gruppe zuteilst Code:
_Pat1= createGroup EAST; Code:
_seite= createCenter east Edit: Oh, und mit dem "extra rot markierten Teil" hatte Dein Problem rein gar nichts zu tun. Das wäre gleich ersichtlich gewesen, wenn Du das ganze Script gepostet hättest ;-) Edit 2: und das mit den "Platzhaltern" bei Code:
if (_x==1) then {..}; Code:
//if (_x==1) then {..}; Code:
if (_x==1) then {player sidechat "Option 1 ausgewählt";}; |
Das "_Grp1" war der Fehler! Danke dir :daumen:
Die ".." hatte ich nur als Platzhalter fürs Forum, den Rest merk ich mir gleich für die Zukunft. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:32 Uhr. |
Angetrieben durch vBulletin, Entwicklung von Philipp Dörner & Tobias