PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Position auslesen


Anemia
04.01.2016, 16:13
Hi zusammen,

hab eine kleine Frage ...
ich versuche mich gerade mal wieder ein bisschen im scripten und stehe vor einem Problem.

Ich lasse Spiderholes (Unsung Mod (Vietnam)) für den VC erstellen.
Dafür habe ich 10 Marker auf der Map plaziert.
Daraus werden über _vcholes eine anzahl x ausgewählt.
Um im nächsten Schritt nun bei den jeweiligen zufällig gewählten Markern den Feind spawnen zu lassen, muss ich ja irgendwie wissen welche Marker er nun ausgesucht hat.

Meine Idee ...
_vchole_pos = _vchole
diesen Wert lasse ich dann für "debug zwecken" ausgeben in einem Hint.
Die daten die dort zum vorscheinen kommen sind sowas wie

59159d00# 459117: uns_spiderhole_2c.p3d


ich vermute mal das die 459117 die Position X,Y ist ... doch wie bekomme ich diesen Wert nun alleine in der Variable _vchole_pos

Evtl. ist es aus schwachsinn was ich hier mache und es gibt einen viel besseren weg. Freue mich über Konstruktive Antworten.


for "_i" from 1 to _vcholes do {
sleep _delay;
_hole = createVehicle ["LAND_uns_spiderhole4c", getMarkerPos "h1", ["h2","h3","h4","h5","h6","h7","h8","h9","h10"],0, "NONE"];
_vchole_pos = _hole;
hint str _vchole_pos;
};

EDIT:
Oder gibt es evtl. eine Möglichkeit das ich den Marker-Namen ausgeben lasse, damit kann ich genau so gut leben :)

Moerderhoschi
04.01.2016, 16:19
Mit getPos (https://community.bistudio.com/wiki/getPos) solltest Du doch die Position des Objekts bekommen.

Anemia
04.01.2016, 16:23
Mit getPos (https://community.bistudio.com/wiki/getPos) solltest Du doch die Position des Objekts bekommen.

Ja :oh: danke das war sehr einfach ...
hätte ich ja mal selbst drauf kommen können...

Danke für die schnelle Hilfe ! :daumen:

Anemia
04.01.2016, 17:10
Evtl. ist die Frage genau so "bescheiden" wie die vorherige ....



for "_i" from 1 to vcholes do {
sleep _delay;
_hole = createVehicle ["LAND_uns_spiderhole4c", getMarkerPos "h1", ["h2","h3","h4","h5","h6","h7","h8","h9","h10"],0, "NONE"];


_vcsoldier = _vcsquad createUnit ["uns_local_vc2b", getPos _hole, [], 0, "FORM"];
};


Wieso funktioniert es nicht ?!

wenn ich die Position auslese mit
_holepos = getPos _hole;
hint str _holepos;

Bekomme ich eine schöne Positionsangabe , aber es will nicht in der Codezeile funktionieren.



EDIT:

for "_i" from 1 to vcholes do {
sleep _delay;
_hole = createVehicle ["LAND_uns_spiderhole4c", getMarkerPos "h1", ["h2","h3","h4","h5","h6","h7","h8","h9","h10"],0, "NONE"];
_holepos = getPos _hole;
hint str _holepos;



_vcsoldier = _vcsquad createUnit ["uns_local_vc2b",_hole , [], 0, "FORM"];
};



Das script läuft so weit durch und erstellt alle gewünschten Spiderholes , so weit so gut , die Gewünschte eiheit taucht dennoch nicht an den Spiderholes auf ... sicherlich einfach nur ein kleiner Fehler....

EDIT 2:

Ich glaube ich weiß warum es nicht geht, kann es aber erst heute Nachmittag testen (derzeit bei der arbeit). Ich hatte mein Script schon vorher funktionsfähig geschrieben , allerdings nur für 1 VC_Spiderhole. Also ohne For *** do

Glaube ich hab aus versehen mein createGroup ausgeklammert //

_group = createGroup east


das würde auch erklären warum das Script durchläuft , aber nichts passiert.

Anemia
05.01.2016, 16:38
Sooo sorry für den doppelpost .. aber ich dachte ich poste noch mal das Funktionierende Script ....


vchole.sqf

// VC Spiderhole
// Anemia 2016 - Unsung Mod
//

_vchmarker = ["h1","h2","h3","h4","h5","h6","h7","h8","h9","h10"];
_vcsquad = createGroup east;

_delay = 1; // Delay


for "_i" from 1 to vcholes do {
sleep _delay;
_hole = createVehicle ["LAND_uns_spiderhole4c", getMarkerPos "h1", ["h2","h3","h4","h5","h6","h7","h8","h9","h10"],0, "NONE"];
hintSilent str getPos _hole;


// Squadleader erstellen
_vcsoldier = _vcsquad createUnit ["uns_local_vc2b", (getPos _hole), [], 0, "FORM"];
};


vcholes ist eine globale Variable die derzeit in der init vorgegeben ist.

Auf der Map werden dafür die Marker h1 - h10 verteilt, man kann natürlich mehr oder weniger Marker setzen und muss dann das Script anpassen.

init.sqf

// Total Spiderholes VC
vcholes = 5;
// Total VC Spawnpoints
vcspawnpoints = 10;


Das ganze bringt mich leider zu einer neuen Frage....

Wenn ich das Script so laufen lasse werden an 5 Spiderholes Einheiten erstellt. Diese gehören alle der Gruppe _vcsquad an. So weit so gut. Ich will aber das an jedem Spiderhole eine eigene Gruppe erstellt wird. Hat jemand einen Vorschlag wie ich unabhängige Gruppen voneinander erstellen kann ? Später sollen diese dann zufällige Wegpunkte ablaufen... Brauche also jeweils unabhängige Gruppen...
kann ich die Gruppen irgendwie nicht _vcsquad1 , 2 , 3 usw. benennen lassen ?! aber wie ?

Danke schon mal vorweg für konstruktive Vorschläge :)

Moerderhoschi
05.01.2016, 17:02
so in der art sollte es klappen


// Total Spiderholes VC
vcHoles = 5;
_delay = 1;
_vchMarker = ["h1","h2","h3","h4","h5","h6","h7","h8","h9","h10"];
_vchGroups = [];

for "_i" from 1 to vcholes do
{
// random Hole auswaehlen und aus array loeschen
_currentHole = _vchmarker select (floor (random (count _vchmarker)));
_vchmarker = _vchmarker - [_currentHole];

// vc hole erstellen
sleep _delay;
_hole = createVehicle ["LAND_uns_spiderhole4c", getMarkerPos _currentHole, [],0, "NONE"];
hintSilent str getPos _hole;

// neue vc gruppe erstellen und in array speichern fuer spaetere weitere verarbeitung
_vcsquad = createGroup east;
_vchGroups = _vchGroups + [_vcsquad];

// Squadleader erstellen
_vcsoldier = _vcsquad createUnit ["uns_local_vc2b", (getPos _hole), [], 0, "FORM"];
};

// units erstellen und waypoints
{
_x createUnit ....
.
.
.
_wp = _x addWaypoint [[x,y], 0];
_wp setWaypointType "sad";
} forEach _vchGroups

Anemia
06.01.2016, 07:20
Genial !
Du bist mein Held ! :daumen:
Musste es noch ein bisschen umschreiben .. aber es funktioniert.
An jedem VC Spiderhole wird nun eine eigene Gruppe erstellt....

Hab es leider gestern nicht mehr geschafft Gruppenmitglieder den Gruppen zu zuteilen.

Muss ich mir heute noch mal anschauen. Allgemein muss ich mich wohl in das Thema Array's noch mal einlesen , damit hab ich noch nicht so.