OFPEC Forum

Editors Depot - Mission Editing and Scripting => OFP - Editing/Scripting Resources Beta Testing & Submission => Topic started by: XCess on 28 May 2006, 20:46:44

Title: Randomised Patrol Script
Post by: XCess on 28 May 2006, 20:46:44
The following is a script I created for the second mission in my Invasion series. It will give a squad three randomised waypoints which they will go to in order. Then they will return to a central position (in my mission this is a list trigger) for five minutes. After these five minutes they will conduct another randomised patrol.

The patrol will be carried out inside an 800 metre radius, and was made without the use of a gameLogic or any other object to define the waypoints to keep lag to a minimum (infact I have experience no lag whatsoever)

syntax:
[leaderName,centralName] exec"infPatrol.sqs"

where leadername is the leader of the group (can actually be any member of the group)

where centralName is the name of an object that will define the centre of the patrol area.

Code: [Select]
; Infantry Patrol Scripts v1.1
; by XCess

_group = _this select 0
_town = _this select 1

_center = getPos _town

; patrol dimensions
_x = 0
_y = 0

_xD = 0
_yD = 0

_x2 = 0
_y2 = 0

_posCount = 0
_posMax = 4

_loopCount = 0

#Start

_posCount = _posCount + 1
?(_posCount >= _posMax) : goto"return"

_center = getPos _town
_x = Random(800)-400
_y = Random(800)-400

_mPos = [(_center select 0)+_x, (_center select 1)+_y]

(leader _group) move _mpos
~2

#posCheck

_x2 = (getPos (leader _group) select 0)
_y2 = (getPos (leader _group) select 1)

_xD = (_mpos select 0) - _x2
_yD = (_mpos select 1) - _y2


? (_yD < 2 && _xD < 2) && (_yd > -2 && _xD > -2)  :goto "start"
? !(alive (leader _group)) : goto"start"
?(count units _group) <= 4 : goto"retreat"

_loopCount = _loopCount + 1
?(_loopCount > 50) : goto "waterCheck"

~5
goto"posCheck"

#return

_posCount = 0
(leader _group) move (getPos _town)

_x = getPos _town select 0
_y = getPos _town select 1

#PosCheck2
_x2 = (getPos (leader _group) select 0)
_y2 = (getPos (leader _group) select 1)

_xD = _x - _x2
_yD = _y - _y2

? !(alive (leader _group)) : goto"return"
? !(_yD < 2 && _xD < 2) && (_yd > -2 && _xD > -2) :goto "posCheck2"

~300
goto"Start"



#retreat

(leader _group) move (getPos _town)
exit


#waterCheck
_loopCount = 0
_wPosX = getPos (leader _group) select 0
_wPosY = getPos (leader _group) select 1

_count = 0

#wLoop

_x2 = (getPos (leader _group) select 0)
_y2 = (getPos (leader _group) select 1)

_xD = (_mpos select 0) - _x2
_yD = (_mpos select 1) - _y2


? (_yD < 2 && _xD < 2) && (_yd > -2 && _xD > -2)  :goto "start"
? !(alive (leader _group)) : goto"start"

_count = _count + 1
?(_count == 10) : goto"checkSame"

~1
goto"wLoop"

#checkSame
cPosX = getPos (leader _group) select 0
cPosY = getPos (leader _group) select 1

?(_cPosX == _wPosX) && (_cPosY == _wPosY) : goto"start"
goto"posCheck"


Title: Re: Randomised Patrol Script
Post by: schuler on 04 Jun 2006, 16:43:37
 hello XCess, seems to work very well, though just noteing the syntax:
[leaderName,centralName] exec"infPatrol.sqs" is just missing the space between the exec and ".   ;)
   also i allways like it when the script includes the syntax at the top, i sometimes get confused because calling the script i would probley forget the "centralName" part of it. but iam not that advanced in scripting !

; Infantry Patrol Scripts v1.1
; by XCess
; [leaderName,centralName] exec "infPatrol.sqs"
Title: Re: Randomised Patrol Script
Post by: XCess on 06 Jun 2006, 00:57:37
Glad you like the script schuler. I don't think you actually need any space between exec and the scriptname string. syntax is in the post. you're welcome to put it into the script too, as well as any other adjustmnts. Remember the credits :P ;D
Title: Re: Randomised Patrol Script
Post by: Killzone on 09 Jun 2006, 20:44:40
Hello,

I am attempting to use this script but I keep coming up with an "unknown operator" message. yet I have the leader of a 3 man squad (his name is leader1) and I have an object (I am using a palm tree named, tree)  and here is the line of code: [leader1,tree] exec"Patrol.sqs"   

I dont understand why this keeps coming up.  please help I am sure it is something silly  :P
Title: Re: Randomised Patrol Script
Post by: XCess on 10 Jun 2006, 06:30:20
Try renaming the centre object, tree maybe reserved.
Also the following line of code will have to be changed as you are using a smaller group.

?(count units _group) <= 4 : goto"retreat"

Don't know why it's coming up with unknown operator though ???