OFPEC Forum
Editors Depot - Mission Editing and Scripting => OFP - Editing/Scripting General => Topic started by: Messiah on 02 Jan 2003, 01:41:42
-
heres an interesting one...
so i have a training mission and i want to create a sniper range... with a difference...
now - what i want is 6 targets (Target E) to randomly pop up from behind sandbags and then pop down again after 2 secs - there should be a gap between them popping up of 2 secs.
now - i have made a vague start, with help from Sefe before - but the version i have now keeps on saying there is an error - it says the bit where the target is moved to the posistion is type number, expected array
;Thanks to Sefe for major help with this script :o)
_PopUpUnits = [sniper1, sniper2, sniper3, sniper4, sniper5, sniper6]
_UnitCoordinates = [10357.09,12685.92,0.05], [10352.26,12695.23,0.05], [10352.42,12679.24,0.05], [10356.93,12689.01,0.05], [10354.49,12682.38,0.05], [10354.50,12692.35,0.05]
#Loop
? (Count _PopUpUnits) == 0 : goto "Skip"
_UnitNumber = Random (Count _PopUpUnits)
? _UnitNumber >= (Count _PopUpUnits) : _UnitNumber = (Count _PopUpUnits) - 1
_CurrentUnit = _PopUpUnits Select _UnitNumber
_CurrentCoordinates = _UnitCoordinates Select _UnitNumber
_CurrentUnit setpos _CurrentCoordinates
~(1 + (Random 3))
if (not (Alive _CurrentUnit)) then {Hint "You have killed a target"; _PopUpUnits = _PopUpUnits - [_CurrentUnit]; _UnitCoordinates = _UnitCoordinates - [_CurrentCoordinates]}
_Currentunit setpos (getpos gamelogic1)
~(1 + (Random 5))
Goto "Loop"
#Skip
Hint "You have killed the last target"
so - some help on that bit...
now, also, instead of it just appearing - could it be possible to make the targets move upwards by changing the height - it should be quite rapid, lasting about 1 sec.
hope you can help.
cheers.
-
_UnitCoordinates = [10357.09,12685.92,0.05], [10352.26,12695.23,0.05], [10352.42,12679.24,0.05], [10356.93,12689.01,0.05], [10354.49,12682.38,0.05], [10354.50,12692.35,0.05]
should be :_UnitCoordinates = [[10357.09,12685.92,0.05], [10352.26,12695.23,0.05], [10352.42,12679.24,0.05], [10356.93,12689.01,0.05], [10354.49,12682.38,0.05], [10354.50,12692.35,0.05]]
in answer to your second question...yes:
here it is:
;Thanks to Sefe for major help with this script :o)
_PopUpUnits = [sniper1, sniper2, sniper3, sniper4, sniper5, sniper6]
_UnitCoordinates = [[10357.09,12685.92,-0.95], [10352.26,12695.23,-0.95], [10352.42,12679.24,-0.95], [10356.93,12689.01,-0.95], [10354.49,12682.38,-0.95], [10354.50,12692.35,-0.95]]
_i = 0
#setup
(_popUpUnits select _i) setPos (_unitCoordinates select _i)
?(!_i == count _popUpunits): goto "setup"
#Loop
? (Count _PopUpUnits) == 0 : goto "Skip"
_UnitNumber = Random (Count _PopUpUnits)
? _UnitNumber >= (Count _PopUpUnits) : _UnitNumber = (Count _PopUpUnits) - 1
_CurrentUnit = _PopUpUnits Select _UnitNumber
_CurrentCoordinates = _UnitCoordinates Select _UnitNumber
_i = 0
;rises over half a second
#upLoop
_i + 0.02
_CurrentUnit setpos [_CurrentCoordinates select 0, _CurrentCoordinates select 1, (_CurrentCoordinates select 2) + _i]
~0.01
?(!_i == 1):goto "upLoop"
~(Random 3)
;falls over half a second
#downLoop
_i = _i - 0.02
_CurrentUnit setpos [_CurrentCoordinates select 0, _CurrentCoordinates select 1, (_CurrentCoordinates select 2) + _i]
~0.01
?(!_i == 0):goto "downLoop"
if (not (Alive _CurrentUnit)) then {Hint "You have killed a target"; _PopUpUnits = _PopUpUnits - [_CurrentUnit]; _UnitCoordinates = _UnitCoordinates - [_CurrentCoordinates]}
~(1 + (Random 5))
Goto "Loop"
#Skip
Hint "You have killed the last target"
also has the advantage that if you walked behind the rocks, you would actually see the targets... :)
If it's buggy (I'm away from a computer with ofp, so I can't test it :( ) just post again...
-
lol great minds think alike
i just thought of the same idea while thinking about america's army
try using a loop that moves it up a little bit at a time within a short amount of time
mine just does it instantly, less work
-
aaaah - great - will test later 2nite
cheers lads :thumbsup:
-
so.... tested it
has an error:
(!_i == 1): Error !: type Number, expected bool
hope that makes some sense - also, the targets, im going for they have to start off underground - how much by?
-
Heres a firing range script I wrote a while ago (v1.46) I think it should still work:
_targets = [tag_1,tag_2,tag_3,tag_4,tag_5,tag_6]
"_x setpos [getpos _x select 0, getpos _x select 1, -2]" foreach _targets
#select
? count _targets == 0 : Hint "All Targets destroyed"; exit
_random = random (count _targets)
_random = _random - _random % 1
_target = _targets select _random
_pos = getpos _target
_x = _pos select 0
_y = _pos select 1
_z = _pos select 2
_delta = 2
_increment = 0
#up
~0.01
_target setpos [_x,_y,_z + _increment]
_increment = _increment + 0.05
? getpos _target select 2 < _z + _delta : goto "up"
~(random 2) + 2
#down
~0.01
_target setpos [_x,_y,_z + _increment]
_increment = _increment - 0.05
? getpos _target select 2 > _z : goto "down"
? getdammage _target > 0.9 : _targets = _targets - [_target]
~(random 2) + 2
goto "select"
:)
-
Whoops :-[
um, this works (if you didn't use Bremmer's :) )
(I finally got back to my computer so I could test it :) ...)
This raises them quite high, so you might want to reduce the height (just change the "?(_i < 1):goto "upLoop" " line...)
;Thanks to Sefe for major help with this script :o)
_PopUpUnits = [sniper1, sniper2, sniper3, sniper4, sniper5, sniper6]
_UnitCoordinates = [[10357.09,12685.92,-0.95], [10352.26,12695.23,-0.95], [10352.42,12679.24,-0.95], [10356.93,12689.01,-0.95], [10354.49,12682.38,-0.95], [10354.50,12692.35,-0.95]]
_i = 0
#setup
(_popUpUnits select _i) setPos (_unitCoordinates select _i)
_i = _i + 1
?(_i < count _popUpunits): goto "setup"
#Loop
? (Count _PopUpUnits) == 0 : goto "Skip"
_UnitNumber = Random (Count _PopUpUnits)
_rem = _unitNumber % 1
_unitNumber = _unitNumber - _rem
? _UnitNumber >= (Count _PopUpUnits): _UnitNumber = (Count _PopUpUnits) - 1
_currentUnit = _popUpUnits select _unitNumber
_CurrentCoordinates = getpos _currentUnit
_i = 0
#upLoop
_i = _i + 0.04
_CurrentUnit setpos [_CurrentCoordinates select 0, _CurrentCoordinates select 1, (_CurrentCoordinates select 2) + _i]
~0.01
?(_i < 1):goto "upLoop"
~(Random 3)
#downLoop
_i = _i - 0.04
_CurrentUnit setpos [_CurrentCoordinates select 0, _CurrentCoordinates select 1, (_CurrentCoordinates select 2) + _i]
~0.01
?(_i > 0): goto "downLoop"
if (not (Alive _CurrentUnit)) then {Hint "You have killed a target"; _PopUpUnits = _PopUpUnits - [_CurrentUnit]; _UnitCoordinates = _UnitCoordinates - [_CurrentCoordinates]}
~(1 + (Random 5))
Goto "Loop"
#Skip
Hint "You have killed the last target"
-
bremmer's worked - but had the same problem as my original one (the one well before sefe's one)
when moving them up and down the targets move forward slightly each time.... not a big problem really, but noticable since they are behind sandbags at one time, and then in fron a bit later...
would it be possible, to add a little, move them backwards (west in my case) a small amount, say 0.1 i think.
cheers.
-
to move them backwards you'd have to use trig...
Um, this is really weird, 'cause there is no changing of the x,y variables, so why should it move on the horizontal plane? Um, does mine have the same problem? (it probably does, but it's worth a try...)
-
the only thing that i can think of is when they swing up they have slight momentum that carries them forward slightly on their rotation point. Then when u shoot them down and they fall they stay in that spot...and repeat once they come back up...that is the only thing i can think of for the scooting thing