07.03.2013, 09:45 | #1 (permalink) |
Registriert seit: 31.05.2009
Beiträge: 34
|
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; _Teamleader="B_Soldier_F" createUnit [getMarkerPos "start", Grp1, "Grp1=this", 1, "Sergeant"]; _Unit2="B_Soldier_F" createUnit [getMarkerPos "start", Grp1, "", 1, "Corporal"]; _Unit3="B_Soldier_F" createUnit [getMarkerPos "start", Grp1, "", 1, "Corporal"]; _Unit4="B_Soldier_F" createUnit [getMarkerPos "start", Grp1, "", 1, "Corporal"]; _Unit5="B_Soldier_F" createUnit [getMarkerPos "start", Grp1, "", 1, "Corporal"]; _Unit6="B_Soldier_F" createUnit [getMarkerPos "start", Grp1, "", 1, "Corporal"]; _Unit7="B_Soldier_F" createUnit [getMarkerPos "start", Grp1, "", 1, "Corporal"]; wp1 = group Grp1 addWaypoint [getMarkerPos "moveTo",0]; 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... |
07.03.2013, 09:56 | #2 (permalink) |
Registriert seit: 05.01.2008
Alter: 32
Beiträge: 1.703
|
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. |
07.03.2013, 10:18 | #3 (permalink) |
Registriert seit: 01.06.2009
Beiträge: 103
|
z.B.: so
Code:
_min= 3; //Minimum der zu erstellenden Einheiten _max= 7; //Maximum der zu erstellenden Einheiten _pos= getMarkerPos "start"; // Spawnposition; _wpPos= getmarkerPos "moveTo"; // Wegpunkt- Position _anzahl= _min + (floor(random (_max - _min))); _Grp1= createGroup WEST; // Mit Unterstrich = ein und dasselbe Script für beliebig viele Gruppen verwenden, ohne Unterstrich = eindeutiger Gruppen- Name mit der sich die Gruppe auch später ansprechen lässt for [{_a= 0},{_a < _anzahl},{_a = _a + 1}] do { if (_a== 0) then { "B_Soldier_F" createUnit [_pos, _Grp1,"",1, "Sergeant"]; } else { "B_Soldier_F" createUnit [_pos, _Grp1,"",1, "Corporal"]; }; }; wp1 = _Grp1 addWaypoint [_wpPos,0]; |
07.03.2013, 10:31 | #4 (permalink) |
Registriert seit: 31.05.2009
Beiträge: 34
|
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... bei mir geht es nur so: Code:
_min= 3; _max= 7; _pos= getMarkerPos "start"; _wpPos= getmarkerPos "moveTo"; _anzahl= _min + (floor(random (_max - _min))); _Grp1= createGroup WEST; for [{_a= 0},{_a < _anzahl},{_a = _a + 1}] do{if (_a== 0) then{"B_Soldier_F" createUnit [_pos, _Grp1,"",1, "Sergeant"];} else {"B_Soldier_F" createUnit [_pos, _Grp1,"",1, "Corporal"];};}; wp1 = _Grp1 addWaypoint [_wpPos,0]; Geändert von Rubbermen (07.03.2013 um 12:03 Uhr). |
07.03.2013, 11:52 | #5 (permalink) |
Registriert seit: 05.01.2008
Alter: 32
Beiträge: 1.703
|
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. |
07.03.2013, 14:13 | #8 (permalink) |
Registriert seit: 01.06.2009
Beiträge: 103
|
Jepp! 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. Geändert von Asso-Loki (07.03.2013 um 14:28 Uhr). |
08.03.2013, 10:25 | #9 (permalink) |
Registriert seit: 31.05.2009
Beiträge: 34
|
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"];};};}; |
08.03.2013, 17:43 | #11 (permalink) |
Registriert seit: 31.05.2009
Beiträge: 34
|
Das ist das von dir geschriebene Script. xD Und den Fehler hab ich doch rot eingefärbt.
Code:
if (!isServer) exitWith {}; _min= 3; _max= 7; _anzahl= _min + (floor(random (_max - _min))); _pos= getMarkerPos "patrol"; _wpPos= getmarkerPos "patrol-moveTo"; _Pat1= createGroup EAST; _x= ceil (random 5); if (_x==1) then{..}; if (_x==2) then{..}; if (_x==3) then{..}; if (_x==4) then{}; 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"];};};}; |
08.03.2013, 19:29 | #13 (permalink) |
Registriert seit: 01.06.2009
Beiträge: 103
|
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";}; Geändert von Asso-Loki (08.03.2013 um 19:59 Uhr). |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Einheiten nach Tod/Zerstörung löschen | Togo | Editing & Scripting | 15 | 27.11.2012 08:28 |
Arma 2 Editor Einheiten löschen ? | Rikko | Editing & Scripting | 7 | 06.07.2012 21:20 |
Einheiten in Gruppe löschen | Brubaker | Editing | 6 | 26.05.2011 18:44 |
Heal/Repair Script / Einheiten in einem Radius zufällig generieren lassen | Noobfire | Editing & Scripting | 8 | 06.08.2010 16:22 |
Script-Problem: Einheiten löschen | Kampfmöhre | Editing & Scripting | 5 | 31.05.2010 13:37 |