PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einheiten und objekte an zufalls Position


[ate]minimal
12.05.2014, 20:57
Hallo erstmal
Hab mich heut hier mal angemeldet weil mir das ewige gegoogle und doch nix find aufn sack geht☺ und bin voller Hoffnung das ihr mir weiter helfen könnt.

Ich komm gleich mal zum punkt.

In meiner mission sollen 2 luftabwehr stellungen, zufällig in einem bestimmten bereich über ein script spawnen.
Schon mal eins vorab meine Script Kenntnisse this=null☺.
Das ganze dann fürn multiplayer.

Hab schon gegooglet und bei euch im Forum geschaut aber nix gefunden.

ja ich hab auch die editing bibel schon durch geschaut.
Bin bei dem kapitel zufalls Position hängen geblieben, bin aber noch nicht durch gestiegen wie ich das auf objekte und einheiten anwenden soll.

Danke schon mal im vorraus.

Nokman
12.05.2014, 22:40
Du kanst entweder


_objekt = "Rabbit_F";
_plus = (round random 300) - (round random 300);
_plus2 = (round random 300) - (round random 300);
_pos2 = [((getPos player)select 0) + _plus, ((getPos player)select 1) + _plus2,0.2];
_hase = createVehicle [_objekt, _pos2, [], 0, "NONE"];

Dies würde einen Hasen im zufall von 300 meterradius um dich erstellen

alternativ kannst du auch vorgebene Zufallspositionen sagen :D

Drunken Officer
13.05.2014, 01:57
Oder du schreibst

if (!isServer) exitWith {};
for "_i" from 1 to 2 do
{
createVehicle ["namederEinheit", getPos .... , [], 300, "NONE"];
};


Wenn du die AA-Stellung im Editor platzierst, dann siehst du im Dialog rechts oben den Namen.
bei getPos musst du einfach etwas platzieren und benennen. Nimm ein "unsichtbares H" und alles ist chick. Das bildet den Mittelpunkt um die, die 300er Zone aufgebaut wird

[ate]minimal
13.05.2014, 07:15
danke für die schnelle antwort.

aber damit kann ich ja jetzt immer nur eine einheit an irgend einer posi spawn oder seh ich des falsch???..

sorry wenn die fragestellung falsch war.

mein gedanke war dieser...das ich die stellungen im editor bastle, aus der sqm die daten nehm in ein script reinpack über die zeilen dann ein random setz...so das der komplette block dann zufällig gespwant wird. so wie bei den side missions der domination.

Vienna
13.05.2014, 08:37
Du kanst entweder


_objekt = "Rabbit_F";
_plus = (round random 300) - (round random 300);
_plus2 = (round random 300) - (round random 300);
_pos2 = [((getPos player)select 0) + _plus, ((getPos player)select 1) + _plus2,0.2];
_hase = createVehicle [_objekt, _pos2, [], 0, "NONE"];

Dies würde einen Hasen im zufall von 300 meterradius um dich erstellen

alternativ kannst du auch vorgebene Zufallspositionen sagen :D
createVehicle bietet die Eingabe einer solchen Zufallsposition:

_hase = createVehicle [_objekt, position Player, [], 300, "NONE"];

[ate]minimal
13.05.2014, 09:13
ich hab hier mal was versucht, hab im editor 1 infantrie und 1 fahrzeug gesetzt, das ganze dann in ein script kopiert.

this = createCenter west;
_center_0 = _this;

_group_1 = createGroup _center_0;

_unit_1 = objNull;
if (true) then
{
_this = _group_1 createUnit ["B_recon_exp_F", [1877.4304, 5822.5098, -1.9073486e-006], [], 0, "CAN_COLLIDE"];
_unit_1 = _this;
_this setPos getpos marker1;
_this setDir -168.9375;
_this setVehicleVarName "S1";
S1 = _this;
_this setUnitAbility 0.60000002;
if (true) then {_group_1 selectLeader _this;};
};

_group_2 = createGroup _center_0;

_vehicle_0 = objNull;
if (true) then
{
_this = createVehicle ["B_MBT_01_mlrs_F", [1874.3511, 5825.3145, -2.9563904e-005], [], 0, "CAN_COLLIDE"];
_vehicle_0 = _this;
_this setPos getpos marker2;
_this setDir -167.09911;
_this setVehicleVarName "F1";
F1 = _this;
_this setUnitAbility 0.60000002;
if (true) then {_group_2 selectLeader _this;};
};

wenn der auslöser aktiv spawnen die einheiten am zielpunkt.

jetzt will ich das die beiden zusammen an 3 verschieden zufalls postionen spawnen. und das ganze später dann mit mehreren einheiten und objekten.

habs so mal versucht. funkt aber net:

_this = createCenter west;
_center_0 = _this;
_start = random 3;
? _start < 1 : goto "p1";
? _start < 2 : goto "p2";
? _start < 3 : goto "p3";

#p1
_group_1 = createGroup _center_0;

_unit_1 = objNull;
if (true) then
{
_this = _group_1 createUnit ["B_recon_exp_F", [1877.4304, 5822.5098, -1.9073486e-006], [], 0, "CAN_COLLIDE"];
_unit_1 = _this;
_this setPos getpos marker1;
_this setDir -168.9375;
_this setVehicleVarName "S1";
S1 = _this;
_this setUnitAbility 0.60000002;
if (true) then {_group_1 selectLeader _this;};
};

_group_2 = createGroup _center_0;

_vehicle_0 = objNull;
if (true) then
{
_this = createVehicle ["B_MBT_01_mlrs_F", [1874.3511, 5825.3145, -2.9563904e-005], [], 0, "CAN_COLLIDE"];
_vehicle_0 = _this;
_this setPos getpos marker2;
_this setDir -167.09911;
_this setVehicleVarName "F1";
F1 = _this;
_this setUnitAbility 0.60000002;
if (true) then {_group_2 selectLeader _this;};
};
exit;

#p2
_group_1 = createGroup _center_0;

_unit_1 = objNull;
if (true) then
{
_this = _group_1 createUnit ["B_recon_exp_F", [1877.4304, 5822.5098, -1.9073486e-006], [], 0, "CAN_COLLIDE"];
_unit_1 = _this;
_this setPos getpos marker3;
_this setDir -168.9375;
_this setVehicleVarName "S1";
S1 = _this;
_this setUnitAbility 0.60000002;
if (true) then {_group_1 selectLeader _this;};
};

_group_2 = createGroup _center_0;

_vehicle_0 = objNull;
if (true) then
{
_this = createVehicle ["B_MBT_01_mlrs_F", [1874.3511, 5825.3145, -2.9563904e-005], [], 0, "CAN_COLLIDE"];
_vehicle_0 = _this;
_this setPos getpos marker4;
_this setDir -167.09911;
_this setVehicleVarName "F1";
F1 = _this;
_this setUnitAbility 0.60000002;
if (true) then {_group_2 selectLeader _this;};
};
exit;

#p3
_group_1 = createGroup _center_0;

_unit_1 = objNull;
if (true) then
{
_this = _group_1 createUnit ["B_recon_exp_F", [1877.4304, 5822.5098, -1.9073486e-006], [], 0, "CAN_COLLIDE"];
_unit_1 = _this;
_this setPos getpos marker5;
_this setDir -168.9375;
_this setVehicleVarName "S1";
S1 = _this;
_this setUnitAbility 0.60000002;
if (true) then {_group_1 selectLeader _this;};
};

_group_2 = createGroup _center_0;

_vehicle_0 = objNull;
if (true) then
{
_this = createVehicle ["B_MBT_01_mlrs_F", [1874.3511, 5825.3145, -2.9563904e-005], [], 0, "CAN_COLLIDE"];
_vehicle_0 = _this;
_this setPos getpos marker6;
_this setDir -167.09911;
_this setVehicleVarName "F1";
F1 = _this;
_this setUnitAbility 0.60000002;
if (true) then {_group_2 selectLeader _this;};
};
exit;

[ate]minimal
13.05.2014, 09:54
hab bei euch was im forum gefunden aber dat will auch nicht so wirklich.


pos1 = [marker1, marker2];
pos2 = [marker3, marker4];
pos3 = [marker5, marker6];

_pos = [pos1, pos2, pos3];
_posstart = _pos select floor random count _pos;

sleep 2;

_this = createCenter west;
_center_0 = _this;

_group_1 = createGroup _center_0;

_unit_1 = objNull;
if (true) then
{
_this = _group_1 createUnit ["B_recon_exp_F", [1877.4304, 5822.5098, -1.9073486e-006], [], 0, "CAN_COLLIDE"];
_unit_1 = _this;
_this setPos [_posstart];
_this setDir -168.9375;
_this setVehicleVarName "S1";
S1 = _this;
_this setUnitAbility 0.60000002;
if (true) then {_group_1 selectLeader _this;};
};

_group_2 = createGroup _center_0;

_vehicle_0 = objNull;
if (true) then
{
_this = createVehicle ["B_MBT_01_mlrs_F", [1874.3511, 5825.3145, -2.9563904e-005], [], 0, "CAN_COLLIDE"];
_vehicle_0 = _this;
_this setPos [_posstart];
_this setDir -167.09911;
_this setVehicleVarName "F1";
F1 = _this;
_this setUnitAbility 0.60000002;
if (true) then {_group_2 selectLeader _this;};
};


hab mal das makiert, wo ich denk das es falsch aufgerufen wird:confused:

Nokman
13.05.2014, 10:15
createVehicle bietet die Eingabe einer solchen Zufallsposition:

_hase = createVehicle [_objekt, position Player, [], 300, "NONE"];

Habe ich auch gerade dadurch gelernt ;) Danke

[ate]minimal
13.05.2014, 11:19
ja soweit hab ich das schon kapiert.....

aber nochmal zu meinem prob.....
es soll zb:

1x AA fahrzeug
5x INf
2x mg nest
1x fahrzeug

...wenn ich das mit dem creatvehicle mach spawnt ja jedes wilkürlich.

ich will eine komplette AA-Stellung basteln und die dann zufällig an einer von 3 positionen spawnen lassen.

steh ich grad sowas von aufm schlauch???????? oder reichen meine script kenntnisse dafür doch net :D

Nokman
13.05.2014, 11:52
Dazu gibt es einen script von Vienna hier im Forum finde ihn nur gerade nicht sorry.

Der bewegt ganze Base
_array = [getmarkerPos "b1",getmarkerPos "b2",getmarkerPos "b3"];
_random = _array select floor random count _array;
OBJEKT setpos _random;

damit setzt du ein Objekt an denn marker b1 oder b2 oder b3 duzu erstellst du unsichtbare marker da wo die base sein soll.

in Kombination mit Viennas script zum kompletten base verschieben sollte es das erfüllen was du suchst.
Das ist der Script ich habe ihn abgeändert so das du noch marker b1 b2 b3 erstellen musst und es auslösen
//==================== Szene Versetzen ======================

// ************************************************** *********
// Versetzt eine Gruppe von Objekten an eine andere Position,
// unter Beibehaltung der Stellung der Objekte zueinander.
//
// Aufruf: [[Objektname1, Objektname2, usw...]] execVM "scripts\versetzen.sqf"
// [x,y] = neue Position des 1. Objekts!
//
////////////////////////////////////
// Script erstellt von Vienna! :) //
////////////////////////////////////
//
// ************************************************** *********

private ["_posX","_posY","_obj","_posRx","_posRy","_array","_random"];

//Parameter

//neue Position
_array = [getmarkerPos "b1",getmarkerPos "b2",getmarkerPos "b3"];
_random = _array select floor random count _array;
_posX = _random select 0;
_posY = _random select 1;

//Liste (Array) mit den Objekt-Namen aller Objekte
_obj = _this select 0;

//Position des 1. Objekts als Referenz
_posRx = getpos(_obj select 0)select 0;
_posRy = getpos(_obj select 0)select 1;

//Schleife durch alle Objekte der Liste
{
//Objekte auf neue Position in Relation zum 1. Objekt
_x setpos [_posX+((getpos _x select 0)-_posRx),_posY+((getpos _x select 1)-_posRy)]
} forEach _obj

[ate]minimal
13.05.2014, 12:22
Wenn de mir jetzt noch en komplettes beispiel machst wie ich das genau anwende bin ich glücklich☺. Und so wie ichs vorhin schon mal gepostet hab kann man es nicht realisieren? ???

Nokman
13.05.2014, 12:49
Du hast ja mehere objekte und die sollen alle so stehenbleiben wie sie sind nur wo anders hin? anbei eine mission

File-Upload.net - base.Stratis.zip (http://www.file-upload.net/download-8913391/base.Stratis.zip.html)

mit funk alpha verschiebst du die objekte

[ate]minimal
13.05.2014, 13:09
Cool danke....werds morgen früh mal testen.

Drunken Officer
13.05.2014, 15:15
Zitat von Vienna http://hx3.de/images/buttons/viewpost.gif (http://hx3.de/editing-scripting-187/einheiten-objekte-zufalls-position-23821/#post472633)
createVehicle bietet die Eingabe einer solchen Zufallsposition:

_hase = createVehicle [_objekt, position Player, [], 300, "NONE"];
Habe ich auch gerade dadurch gelernt ;) Danke



Oder du schreibst
Code:
if (!isServer) exitWith {};
for "_i" from 1 to 2 do
{
createVehicle ["namederEinheit", getPos .... , [], 300, "NONE"];
}; Wenn du die AA-Stellung im Editor platzierst, dann siehst du im Dialog rechts oben den Namen.
bei getPos musst du einfach etwas platzieren und benennen. Nimm ein "unsichtbares H" und alles ist chick. Das bildet den Mittelpunkt um die, die 300er Zone aufgebaut wird


Nokman und TE, ihr müßt euch auch mal mit den Befehlen auseinadersetzen und die Beschreibung lesen.

@TE
Wo man die Beschreibung der Einheit herbekommt, hatte ich geschrieben. Das mit der mission.sqm ist in deinem Fall ein sehr umständlicher weg.
Das Script von Vienna funktioniert. Da kannst du z.B. auch ganze Camps mit umsetzen.
ABER:
Einheiten die platziert werden, und mit diesem Script versetzt werden, haben hinterher keine Wegpunkte mehr. Sprich, wenn da Patrollieren laufen sollen, mußt du das per Script lösen.

Ansonsten empfehle ich auch mal die Guides von Murry und Pscho zu lesen

[ate]minimal
13.05.2014, 16:09
Naja ich find die Variante vom vienna auch nicht grad einfach😊. Ich versuch morgen mal mein Glück mit dem script.

Drunken Officer
13.05.2014, 16:14
Wenn du willst, dass mehrere Objekte syncron versetzt werden können, ist dass auch nicht mal eben 0815....

[ate]minimal
13.05.2014, 17:06
Ja dat stimmt wohl....gabs bei arma nicht mal ne Möglichkeit, basen als xml oder so abzuspeichern und dann zu laden???