OFPEC Forum

Editors Depot - Mission Editing and Scripting => ArmA - Editing/Scripting General => Topic started by: Binary on 16 Apr 2008, 00:37:59

Title: Randomly placing groups
Post by: Binary on 16 Apr 2008, 00:37:59
Hi all :)

Below i have posted a .sqf sample that randomly places 8 units at 14 random spawn points.
I am looking for a way to modify this so that it instead randomly places these units in buddyteams.

Currently there are 8 groups of 1 units - that spawn at one of the 14 spawn points.

Just to clarify:
I want to have 4 groups of 2 units.
These buddyteams should spawn at any of the 14 spawn points.
No buddyteams should spawn at the same place.

Code sample from init.sqf:

// array of the units
_playerarray = [player1, player2, player3, player4, player5, player6, player7, player8];

// array of the marker names (remember double quotes "")
_markerarray = ["spawn1", "spawn2", "spawn3", "spawn4", "spawn5", "spawn6", "spawn7", "spawn8", "spawn9", "spawn10", "spawn11", "spawn12", "spawn13", "spawn14"];


// loop through playerarray and move each player to a marker selected randomly
for[{_i=0},{_i<(count _playerarray)},{_i=_i+1}]
do
{
_currentplayer = _playerarray select _i;
_randommarker = _markerarray select (floor(random(count _markerarray)));

_currentplayer setpos (getmarkerpos _randommarker);
_markerarray = _markerarray - [_randommarker];
};



The script is something i grapped of the BIS forums - my personnel scripting ability is very limited.

Any help would be greatly appreciated :)
Title: Re: Randomly placing groups
Post by: Loyalguard on 16 Apr 2008, 13:57:07
This is untested but I think it will work.  I have placed comments where I have changed or added code with an explanation as to what it does.  Basically, the loop now counts by twos so that there are half as many loops since we are teaming players by twos (note, if you use an uneven number of units this may fail).  In the step code we add a second player and put him in the same place as the player before him.  This was 1&2 are a team, 3&4, etc, etc.  I hope this helps or is at least a start:

Code: [Select]
// array of the units
_playerarray = [player1, player2, player3, player4, player5, player6, player7, player8];

// array of the marker names (remember double quotes "")
_markerarray = ["spawn1", "spawn2", "spawn3", "spawn4", "spawn5", "spawn6", "spawn7", "spawn8", "spawn9", "spawn10", "spawn11", "spawn12", "spawn13", "spawn14"];


// loop through playerarray and move each player to a marker selected randomly
for[{_i=0},{_i<(count _playerarray)},{_i=_i+2}] // Changed _i+1 to _i+2 so the loop skips the second buddy team member.
do
{
     _currentplayer = _playerarray select _i;
     _nextplayer = _playerarray select (_i+1); // Add the second buddy team member who is the next player in the array.
     _randommarker = _markerarray select (floor(random(count _markerarray)));

     _currentplayer setpos (getmarkerpos _randommarker);
     _nextplayer setpos (getmarkerpos _randommarker); // setPos the second buddy team member to the same pos as the player before.
     _markerarray = _markerarray - [_randommarker];
};
Title: Re: Randomly placing groups
Post by: Binary on 16 Apr 2008, 21:41:55
Loyalguard...................  :clap: :clap:
You my good sir, is a fantastic man  :D

Works perfect, like a charm :)