Armed-Assault.de Twitter
 
 
Themen-Optionen Ansicht
Alt 07.03.2013, 09:45   #1 (permalink)
Newbie
 
Benutzerbild von Rubbermen
 
Registriert seit: 31.05.2009
Beiträge: 34
Standard 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];
Das funkt. soweit, nur besteht die Grp 100%ig aus 7 Mann, dass ist ein wenig langweilig.

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...
Rubbermen ist offline  
Alt 07.03.2013, 09:56   #2 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 05.01.2008
Alter: 32
Beiträge: 1.703
Standard

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.
JoeJoe87577 ist offline  
Alt 07.03.2013, 10:18   #3 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.06.2009
Beiträge: 103
Standard

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];
Asso-Loki ist offline  
Alt 07.03.2013, 10:31   #4 (permalink)
Newbie
 
Benutzerbild von Rubbermen
 
Registriert seit: 31.05.2009
Beiträge: 34
Standard

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];
Nehmt ihr iwas anderes zum tippen als den "Editor" von Windows ?

Geändert von Rubbermen (07.03.2013 um 12:03 Uhr).
Rubbermen ist offline  
Alt 07.03.2013, 11:52   #5 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 05.01.2008
Alter: 32
Beiträge: 1.703
Standard

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.
JoeJoe87577 ist offline  
Alt 07.03.2013, 13:44   #6 (permalink)
User gesperrt
5000 Beiträge
 
Registriert seit: 20.10.2009
Ort: Jetzt auch im BIF
Alter: 39
Beiträge: 9.163
Standard

Zitat von Rubbermen Beitrag anzeigen

...Nehmt ihr iwas anderes zum tippen als den "Editor" von Windows ?

Notepad++
AHTNTEPPOP ist offline  
Alt 07.03.2013, 13:46   #7 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 05.01.2008
Alter: 32
Beiträge: 1.703
Standard

Und das da: Notepad++ syntax highlight by Nicolas & GossamerSolid updated - Tools - Armaholic
JoeJoe87577 ist offline  
Alt 07.03.2013, 14:13   #8 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.06.2009
Beiträge: 103
Standard

Zitat von AHTNTEPPOP Beitrag anzeigen

Notepad++

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).
Asso-Loki ist offline  
Alt 08.03.2013, 10:25   #9 (permalink)
Newbie
 
Benutzerbild von Rubbermen
 
Registriert seit: 31.05.2009
Beiträge: 34
Standard

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"];};};};
Rubbermen ist offline  
Alt 08.03.2013, 17:06   #10 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.06.2009
Beiträge: 103
Standard

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.
Asso-Loki ist offline  
Alt 08.03.2013, 17:43   #11 (permalink)
Newbie
 
Benutzerbild von Rubbermen
 
Registriert seit: 31.05.2009
Beiträge: 34
Standard

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"];};};};
Rubbermen ist offline  
Alt 08.03.2013, 18:33   #12 (permalink)
500 Beiträge1000 Beiträge
 
Registriert seit: 05.01.2008
Alter: 32
Beiträge: 1.703
Standard

Setzt mal Random auf 6 statt auf 5.
JoeJoe87577 ist offline  
Alt 08.03.2013, 19:29   #13 (permalink)
50 Beiträge100 Beiträge
 
Registriert seit: 01.06.2009
Beiträge: 103
Standard

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;
auch dort zu verwenden wo die Einheiten erstellt werden. Dort verwendest Du _Grp1, eine Variable die in diesem Script nicht existiert. Klappt es dann immer noch nicht, kann es daran liegen, dass im Editor keine Ost- Einheit existiert. Dann muss Du entweder dort eine Einheit setzen oder im Script mit
Code:
 _seite= createCenter east
die Ost- Seite "initialisieren".

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 {..};
solltest Du unterlassen. ".." kennt der Interpreter nicht und bricht das Script natürlich ab und schreibt eine entsprechende Fehlermeldung in die Datei ArmA3.rpt (die solltest Du Dir immer ansehen wenn etwas nicht funktioniert. Liegt bei W7 unter "Benutzer\Benutzername\appData\Local\Arma 3 Alpha"). Sorg dafür dass Du solche "Platzhalter" entweder mit
Code:
//if (_x==1) then {..};
als "Dokumentation kennzeichnest (wird vom Interpreter ignoriert) oder indem Du halt dort einen Kommentar vom Script ausgeben lässt, z.B.
Code:
if (_x==1) then {player sidechat "Option 1 ausgewählt";};

Geändert von Asso-Loki (08.03.2013 um 19:59 Uhr).
Asso-Loki ist offline  
Alt 08.03.2013, 23:58   #14 (permalink)
Newbie
 
Benutzerbild von Rubbermen
 
Registriert seit: 31.05.2009
Beiträge: 34
Standard

Das "_Grp1" war der Fehler! Danke dir

Die ".." hatte ich nur als Platzhalter fürs Forum, den Rest merk ich mir gleich für die Zukunft.
Rubbermen ist offline  
 


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


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 117 118 119