OFPEC Forum

Editors Depot - Mission Editing and Scripting => ArmA - Editing/Scripting General => Topic started by: Barbolani on 03 Jan 2008, 21:11:36

Title: Respawn only friendlies????
Post by: Barbolani on 03 Jan 2008, 21:11:36
Hi all,

Im finding trouble with this simple respawn script. The problem is, they only respawn if the player is on the same side than the creatd units... I suppose its a creategroup issue, but i cant find the problem..

Quote
_marker1 = _this select 0
_marker2 = _this select 1
_group = _this select 2
_units = _this select 3

_countunits = _units
_group = creategroup east

#Update1

"soldierEB" createUnit [getMarkerPos _marker1, _group]

_countunits = _countunits -1

? _countunits > 0 : goto "Update1"

_group move getMarkerPos _marker2
{_x allowFleeing 0} foreach units _group

_countunits = _units

#Update2

? east countSide (units _group) < 1 : goto "Update1"

goto "Update2"

exit


Can u help me, scripting gurus??? Thnx in advance
Title: Re: Respawn only friendlies????
Post by: Wolfrug on 03 Jan 2008, 22:18:02
I see some minor things here:

1) createUnit generally requires a handle (i.e.: _variable = "SoldierWB" createUnit....). In this case you don't need to recognize the unit created, so using nil should be fine:

Code: [Select]
nil="soldierEB" createUnit [getMarkerPos _marker1, _group]
Second, I have no idea how the createGroup command works, but if it works for you then great :D The problem with spawning is, perhaps, that ArmA generally needs at least one dummy unit for the side present on the map before it can begin spawning new ones (to initialize AI centers and stuff). Are there any east units present before you try running the script? If not, try putting one down and run it then (you can leave the dummy unit out on some island someplace).

Finally: What's up with the countSide in the final check? I'm guessing they're not changing side, so what you're looking for is probably waiting until they're all dead. Two problems:

1) There's no ~ (sleep) in the loop! I guess a simple check like that won't make your computer go gaga, but it's generally bad practice to have any kind of loop without giving the computer a chance to rest in between. I suggest a ~0.02 at least, if it's that important to check that often. But I bet having a ~ of several seconds won't markedly mess with the script in this case. The same can be said for the first loop  :o

2) A slightly better way, perhaps, of checking for if people are still alive in the group is something like
Code: [Select]
{alive _x} count units _group < 1. The above will count the number of units in _group that correspond to the code between the curled brackets (i.e., alive or not). If it's less than 1 (i.e., none), you can reset the loop and such...

Getting any other error messages etc?

Wolfrug out.
Title: Re: Respawn only friendlies????
Post by: Barbolani on 03 Jan 2008, 22:47:24
Thnx man, I solved the problem creating dudes and grouping them with the same name than _group... thats not bad because i guess u can stop the script just killing them (good for take the base missions etc...)

About the pause, i forgot that, thnx

About the createunit, ive never understood whats the real difference between those two ways of creating units... the "mine" works perfectly

Im going to PM u, cos ive been one hour trying to insert your Dynamic Voice Script (is GREAT) and im finding some problems...