Jump to content

-STO-Badblood

Member
  • Content Count

    22
  • Joined

  • Last visited

  • Medals

Posts posted by -STO-Badblood


  1. May be a little more complicated since I don't think you can actually name a flare. You need to detect the flare then assign a velocity to it.

    I just wrote a script to this and tested it - seems to work OK. Multiplies the velocity by a factor of XYZ. Can send flares very far. Use it and abuse it - modify it as you need. wink_o.gif

    <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

    ;// Quick script witten by BadBlood [STO]

    ;// Multiplies the velocity of a flare by a factor of XYZ

    ;//

    ;// - Place the following line in the init.sqs file

    ;//         player addEventHandler ["fired",{_this exec "FarFlare.sqs"}]

    ;// Change VelX, VelY, and VelZ to be the desired veloctity multiples

    _VelX = 4

    _VelY = 4

    _VelZ = 8

    ;// Get the object fired

    _Flare = nearestObject [vehicle(player), _this select 4]

    ;// Check to see if it's a flare - if not exit

    ?!(typeOf _Flare == "FLARE" || typeOf _Missile == "FLAREGREEN" || typeOf _Missile == "FLAREYELLOW" || typeOf _Missile == "FLARERED") : exit

    ;// Change the velocity

    _Flare setvelocity [((velocity _Flare select 0) * _VelX),((velocity _Flare select 1) * _VelY),((velocity _Flare select 2) * _VelZ)]

    exit


  2. I believe the largest advantage to functions over scripts is that functions are compiled by the server and remote systems one time at game startup. Therfore they reside in memory and are much faster to run.

    Not sure how or when scripts are compiled but my belief is that they compile every time they are called (don't quote me on that one though).

    I see the biggest disadvantage of functions is they do not recognize timed events (ie: ~10 or @something). If you need to sycronize or add time delays, scripts are better.

    Best of all (in my opinion) is a combination of both. Helps to keeps scripts small and fast. I use scripts which make function calls - therfore taking advantage of time control with quick function execution.


  3. Is there any reason why you can't use a script or series of triggers to set the FlyInHeight command up then use FlyInHeight to set it back down again ?

    I haven't tested this - just writing it on the fly (no pun intended  wink_o.gif )

    Script launched by a trigger:

    Call line >> [PlaneName, TempHeight, TimeBeforeReturningToOrigninalHeight] exec "changeheight.sqs"

    changeheight.sqs

    ;// Keep it on server (may not be needed - need a logic object called server to use this line)

    ?!(local Server) : exit

    ;// Get the passed varaibles

    _plane = _this select 0

    _newheight = _this select 1

    _timeReturn = _this select 2

    ;// Get current height

    _returnHeight = _plane getpos select 2

    ;// Make it fly in the new height

    _plane FlyInHeight _newheight

    ;// Wait for the time to elapse

    ~ _timeReturn

    ;// Return to original height

    _plane FlyInHeight _returnHeight

    exit

    Note: The script assumes the plane is flying at the correct height when entering the trigger


  4. GREAT great great responses! - Thank you all!

    I've looked for product ratings through web searching but came up empty. I knew the right place to look was within the good people of the OFP community and here on the BI forums.

    I think I'll go with the Plantronics Audio 90. You've said some good things and since it uses my sound card, I won't have to worry about switching and incompatibility.

    Gameer - hope to give something back here - I use a switch to change from headset to speakers. You can get them anywhere (Comp USA - Radio Shack - etc...). Cheap ones work as good as expensive ones - and it should, it's just a switch damn it - lol. It basically just extends your sound card jacks. You plug your speakers and headset (or headphones and mic) into the switch. You can then switch between headset (or headphones and mic) to speakers. Below is an example of one - I actually use a cheap one from Rack Shack. No loss in sound quality and stereo is not compromised. You can get them from $10 to $60 - get the $10 brand, again it's just a switch.  

    switch.jpg


  5. I am looking to by a good headset. Getting too many complaints about background noise from my desktop Telex USB mic.

    Thinking of Plantronics DSP-500 USB. Concerned a little since it has it's own sound card built into the USB cable. May conflict in OFP and/or prevent me from switching to desktop speakers when it's time to REALLY crank up those sweet sounds of death.

    Also considering a Plantronics Audio 90 which plugs into the PC sound card.

    Anybody have any experience with the ones above or have better suggestion ?  rock.gif


  6. From BuhBye [sTO]

    Quote[/b] ]

    I had a reload of windows and ofp about a month ago. I loaded the marine pack via an exe file and all was well.

    A couple of weeks after the reload I was joining by IP sockets and the server wasn't there. I then hit direct play to see if it was there. It wasn't. I clicked to go back to sockets and my game and video froze. The computer however was fine. TS still worked as did everything else. However, I couldn't get out of the game.

    I hit alt-tab and the window popped up to chose a program. The game would not minimize.

    I reloaded the game, removed all first (ie: reg entries etc.). It did not fix it. I could load internet games in direct play, but sockets locked me up.

    I formatted my HD, reloaded windows, then reloaded the game and all was fine.

    THEN... I was on and someone in my group asked if I wanted to come on his server and check out the marine pack, so not having used it yet I said sure. I reinstalled it not knowing that it was that caused the earlier problem and went to join. Again no server. He said he was up in direct play cause the addon didn't work for him in socket to host a game .I hit direct play and the game froze.

    After that - I rebooted and tried to get back to sockets and... NO WAY same thing.

    I have tried removing my internet card, video card and did an overlay of windows and nothing has fixed it. I cant tell if its a network problem or video but thus far only formatting has fixed this.

    I really don't want to go through the OS load again! Any ideas are very welcome cause I'm dry. sad_o.gif

    buhBye@stogroup.net

    Sincerely,

    1SG BadBlood [sTO] - badblood@stogroup.net


  7. Have H/W T&L on? May (or may not) be the problem.

    If you can't toggle it off, try using an older driver for your video card. Keep your newer driver backed up just in case. May have to try a few different driver versions. I noticed some new drivers do not allow you to disable T&L. Worked good for me Direct3D w/o T&L (and old drivers). Just a suggestion.

    You may have to run FlashpointPreferences.exe again to disable it.

    Warning: Trying older drivers may crash your system. Restart in safe mode and set it back to the new one again if it does.


  8. First and foremost - I'm no expert. Just learing from experience.

    I use a 3000+ AMD with 1.5 gig RAM, ASUS Ti4200 8X with 128meg video card. I find that:

    1) CPU is still always maxed

    2) System memory usage is light

    3) The video card and driver make a big difference.

    Your lag seems to come in a certain place on the island. That makes me think you are low on video card resourses. I found that using older video drivers help memory map problems and sometime video "lag".

    You are using a 3000 view distance - that may be a bit much. Try reducing it to 1400 just to see if you still lag over the same part the island. If no lag - video memory/driver is the key.

    Sure - 512K is not much system memory. I would get more regardless. Don't be too disappointed if it doesn't help too much on the island. Video RAM and the right driver (not always the newest one) might help more. My new card lagged as bad as my old one until I loaded older drivers.

    Also - CPU usage. CTRL-ALT-DEL and look at the number of services running. Too many don't help. The longer you've had your OS - most likely the more you have running - LOL


  9. A member of my group [sTO] joined a hosted game in direct play. His game crashed at the time. Since then, he can start OFP in single play and can connect in direct play but freezes when changing to sockets.

    He uninstalled OFP, cleaned the registry, reloaded the game, eithernet card, etc.. - game still behaves the same.

    Using OFP - 1.96 w/ ECP

    Trying to help out but I ran out of suggestions. Anyone have any ideas?

    1SG BadBlood [sTO]


  10. One thing to keep in mind for making faster scripts is to utilize sqf files and the call command whenever possible.

    It's my understanding that these sqf files are compiled only once at mission load and remain in memory unlike sqs scripts.

    You need to keep the sqf short and to the point as well. Sqf files run at the speed of the processor and do not recognize any time delays or @ statements. You need to integrate sqs and sqf files for best performance if you want to have timed events.


  11. Scenerio : A defend the base MP mission. All players against invading AI.

    Q) I want to find a way so if a player leaves the base and dies, he doesn't respawn. Those who stay in the base do respawn.

    I know respawn is set up in the description.ext file. Is there a way to over ride that on a players local system so when he leaves the base his repsawn = 1 (or something to effectively do the same thing)?

    IE) Description.ext:

    Respawn = 3

    RespawnDelay = 5

    Trigger: (encompasing base) - linked to specific player

    OnDeactivation: Respawn = 1


  12. I would like to see the AddAction command be more exlusive to a player rather than a seperate object which can be invaded by a nearby player ---> ie: A player standing 1m away from me aquires my action commands as long as he stays within my action object radius.


  13. I'm looking for the definition number associated with CT_3DCOMBO.

    I would like to set up a combo box (drop down list) in a custom GUI I am making (using the notebook) but can't define it.

    IE:

    in description.ext

    #define CT_3DCOMBO 69 rock.gif (69 is not the number - lol)

    The ones I have so far are:

    <table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

    // Control types

    #define CT_STATIC 0

    #define CT_BUTTON 1

    #define CT_EDIT 2

    #define CT_SLIDER 3

    #define CT_COMBO 4

    #define CT_LISTBOX 5

    #define CT_TOOLBOX 6

    #define CT_CHECKBOXES 7

    #define CT_PROGRESS 8

    #define CT_HTML 9

    #define CT_STATIC_SKEW 10

    #define CT_ACTIVETEXT 11

    #define CT_TREE 12

    #define CT_3DSTATIC 20

    #define CT_3DACTIVETEXT 21

    #define CT_3DLISTBOX 22

    #define CT_3DHTML 23

    #define CT_3DSLIDER 24

    #define CT_3DEDIT 25

    #define CT_OBJECT 80

    #define CT_OBJECT_ZOOM 81

    #define CT_OBJECT_CONTAINER 82

    #define CT_OBJECT_CONT_ANIM 83

    #define CT_USER 99

    // Static styles

    #define ST_HPOS 0x0F

    #define ST_LEFT 0

    #define ST_RIGHT 1

    #define ST_CENTER 2

    #define ST_UP 3

    #define ST_DOWN 4

    #define ST_VCENTER 5

    #define ST_TYPE 0xF0

    #define ST_SINGLE 0

    #define ST_MULTI 16

    #define ST_TITLE_BAR 32

    #define ST_PICTURE 48

    #define ST_FRAME 64

    #define ST_BACKGROUND 80

    #define ST_GROUP_BOX 96

    #define ST_GROUP_BOX2 112

    #define ST_HUD_BACKGROUND 128

    #define ST_TILE_PICTURE 144

    #define ST_WITH_RECT 160

    #define ST_LINE 176

    #define ST_SHADOW 256

    #define ST_NO_RECT 512

    #define ST_TITLE ST_TITLE_BAR + ST_CENTER

    // Predefined controls

    #define IDC_OK 1

    #define IDC_CANCEL 2

    // Colors

    #define TextColor 0.08, 0.08, 0.12

    #define InvTextColor 0.35, 0.38, 0.36

    // Fonts

    #define FontS "tahomaB24"

    #define FontM "tahomaB36"

    #define FontHTML "courierNewB64"

    #define FontHTMLBold "courierNewB64"

    #define FontMAP "courierNewB64"

    #define FontMAIN "SteelfishB64"

    #define FontMAINCZ "SteelfishB64CE"

    #define FontTITLE "SteelfishB128"

    #define FontTITLEHalf "SteelfishB64"

    #define FontBOOK "garamond64"

    #define FontNOTES "AudreysHandI48"

    I think I can work out the class structure for it (should be similar to CT_COMBO with a display field ??) I can certainly use your help getting that definition number     sad_o.gif


  14. This method works in most cases. It does not work well in quick catastrophic death though (IE: Law hits a soldier). - That's not to say any death is non-catasrophic  crazy_o.gif

    I find if I use the method above:

    1) The guy still dies - but only for a second. His dammage is set back to zero but not fast enough to avoid the server seeing a respawn condition.

    2) A new guy is respawned (if respawn is asctivated) and you now have 2 dudes. - this is NOT a ?!(local Server) issue. It happens when running alone in edit mode.

    Just wondering - I know some values take a new meaning when set to  -1000. Will this work --> this setdammage -1000?


  15. Harnu - I did try setting it to 0. Still with no luck. Just seems that you can't set the direction on a wirefence when added by CreateVehicle or CamCreate.

    I'm curious to find out if anyone else has that problem or if it's just on my system.

    Thanks for the help. Greatly appreciated!


  16. Thanks for all the good suggestions!

    I did try keeping the targets static and reset dammage to pop them up. The problem is that once the targets were reset, the next player on the range would see them popping up and down (lag issue). Looks OK on the host machine but other players had problems.

    I tried formatting my hint messages into a public variable then having a logic trigger display the message:

    ex/

    --------------------------------------------------

    Server Script

    ?!(local Server): Goto "QUIT"

      ;// Format the message variable

      Message = format["Print this message globally - Score = %1", PlayerScore]

      ;// Make it public and activate the trigger

      PublicVariable "Message"

      ActiveMessage = 1

      ;// Wait for the trigget to activate and reset then continue

      @ActiveMessage == 0

      goto : "CONTINUE"

    #CONTINUE

     .... more code ... blaa blaa blaa

    #QUIT

    exit

    -------------------------------------------------------

    Logic Trigger

    Activation: Repeatedly

    Condition: ActiveMessage == 1

    OnActivation: hint Message; ActiveMessage = 0

    -------------------------------------------------------

    This seems to still work OK on the server. Others still can't see it. I was under the impression that triggers are public.

    I will try having the trigger launch a message script but I think it will have the same effect.

    Thanks again for all the good suggestions! Keep'em coming!

    - SFC BadBlood[sTO]


  17. I am wondering if anyone knows if this is a bug.

    - I create a fence using CreateVehicle. I then set it's location (I find you need to do this sometimes since the object does not always place exactly where specified in the createVehicle command.) I then set the fence direction to 90 degrees. Problem - It stays at 0 degrees.

    Code EX:

    --------------------------------------------------------

    #START

    ;// Create the fence

       Fence1 = "WireFence" CreateVehicle [_posX, _posY, 0]

    ;// Set the location incase it was off during creation

      Fence1 SetPos [_posX, _posY, 0]

    ;// Set it's direction

       Fence1 SetDir 90

    ;// Ask the game what position it sees it at

       _ActualDirection = GetDir Fence1

       _mes = format ["Fence direction = %1", _ActualDirection]

       hint _mes

    exit

    ---------------------------------------------------------

    Hint output is ----> Fence direction = 0

    The fence appears in the zero direction in the game.

    I tried using CamCreate, adding delays, leaving out the SetDir step etc..

    I am createing a training map with many ranges. I create each range and remove them by script to minimize the lag caused by multiple objects. Some objects work OK (ex/ ammocrates) but this fence seems to have a bug.

    Any help anyone can offer will be greatly appreciated!

    - SFC BadBlood [sTO]


  18. I wrote a script to make popup targets (createvehicle)for training missions. The script is run on the local server only to avoid the duplication of the targets on the map. The script also keeps score of the targets hit/miss and presents the results in a hint message.

    Question: since the script is kept on the server only - players other than the server do not see the hint messages. Any ideas on making the hint messages created on the local server display as a public message? The hint messages are updated frequently as the targets pop up and dissapear. See code below:

    :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

    ;// PopupTargets.sqs - created by Badblood [sTO] on 3/26/03

    ;// Feel free to e-mail questions or comments to badblood@stogroup.net

    ;// This program runs from trigger(s).

    ;// The trigger is activated when someone enters lane 1 or lane 2 of the training range.

    ;// PURPOSE:

    ;// 1) The script pops up five individual targets for each range _delay seconds apart.

    ;// 2) The targets are then removed in the same order they came up _delay seconds apart.

    ;// 3) The hit/miss score is calculated (accumulated) and displayed between each round.

    ;// 4) Each round of targets are placed at a greater distance (south) from each lane firing stage.

    ;// 5) Each target takes three hits from an M16. Max targets possible are 45 (perfect score with standard M16 loadout).

    ;// Calling syntax: Trigger init field --> [Lane1TriggerName, Lane2TriggerName] exec "PopupTargets.sqs"

    ;// Run on the local server only - need a logic named "server". Used to keep multiple (unwanted) targets from appearing.

    ?!(local Server): Goto "quit"

    ;// Get the Lane trigger positions - the target location will be based on the trigger locations

    _Lane1Name = _this select 0

    _Lane2Name = _this select 1

    ;// Break out the X,Y coordinates for Lane 1

    _Lane1 = getpos _Lane1Name

    _Lane1X = _Lane1 select 0

    _Lane1Y = _Lane1 select 1

    ;// Break out the X,Y coordinates for Lane 2

    _Lane2 = getpos _Lane2Name

    _Lane2X = _Lane2 select 0

    _Lane2Y = _Lane2 select 1

    ;// _inc = distance to move the targets away between each round

    _inc = -30

    ;// Initialize some variables (some public - some local)

    Ln1hit  = 0

    Ln1miss = 0

    Ln2hit  = 0

    Ln2miss = 0

    _delay = 1.8

    ;// Calculate how many lanes are occupied. Only report on 1 lane if there is only 1 lane active

    ?(Lane1_Occupied + Lane2_Occupied < 1) : goto "END"

    ?(Lane1_Occupied == 1 && Lane2_Occupied == 0) : _Lanes = 1

    ?(Lane1_Occupied == 0 && Lane2_Occupied == 1) : _Lanes = 2

    ?(Lane1_Occupied == 1 && Lane2_Occupied == 1) : _Lanes = 3

    ;// _loop used to keep track of the round

    _loop1 = 0

    ;// _set = _loop + 1. Used for status output

    _set =1

    ;// Initialize and publish the scoreboard at startup

    ?(_Lanes == 1):hint format["ROUND %3\n\n\nLANE 1\nHit  = %1\nMiss = %2\n\nLANE 2\nEmpty", Ln1hit, Ln1miss, _set]

    ?(_Lanes == 2):hint format["ROUND %3\n\n\nLANE 1\nEmpty\n\nLANE 2\nHit  = %1\nMiss = %2", Ln2hit, Ln2miss, _set]

    ?(_Lanes == 3):hint format["ROUND %5\n\n\nLANE 1\nHit  = %1\nMiss = %2\n\nLANE 2\nHit  = %3\nMiss = %4", Ln1hit, Ln1miss,Ln2hit, Ln2miss, _set]

    ~_delay

    ~_delay

    ;// Target Round Loop

    #LOOP1

    _set = _set + 1

    _Ln1TargetFlag = 0

    _Ln2TargetFlag = 0

    ;// Increase the delay a little between rounds as the targets get further away

    _delay = _delay + 0.2

    ~_delay

    ;// Increase _inc (distance from stageing area to south)

    _inc = _inc - 20

    ;// Keep track of the Round Loop

    _loop1 = _loop1 + 1

    ;// Popup 5 Targets at _delay intervals on each lane used

    ?(_Lanes == 1 || _Lanes == 3):_Ln1Target1 = "TargetE" createvehicle [(_Lane1X + (1.5*(random 10))), (((_Lane1Y + _inc)-(random 5)) - 5), 0]

    ?(_Lanes == 2 || _Lanes == 3):_Ln2Target1 = "TargetE" createvehicle [(_Lane2X + (1.5*(random 10))), (((_Lane2Y + _inc)-(random 5)) - 5), 0]

    ~_delay

    ?(_Lanes == 1 || _Lanes == 3):_Ln1Target2 = "TargetE" createvehicle [(_Lane1X - (1.5*(random 10))), (((_Lane1Y + _inc)-(random 5)) - 10), 0]

    ?(_Lanes == 2 || _Lanes == 3):_Ln2Target2 = "TargetE" createvehicle [(_Lane2X - (1.5*(random 10))), (((_Lane2Y + _inc)-(random 5)) - 10), 0]

    ~_delay

    ?(_Lanes == 1 || _Lanes == 3):_Ln1Target3 = "TargetE" createvehicle [(_Lane1X + (random 10)) , (((_Lane1Y + _inc)-(random 5)) - 15), 0]

    ?(_Lanes == 2 || _Lanes == 3):_Ln2Target3 = "TargetE" createvehicle [(_Lane2X + (random 10)) , (((_Lane2Y + _inc)-(random 5)) - 15), 0]

    ~_delay

    ?(_Lanes == 1 || _Lanes == 3):_Ln1Target4 = "TargetE" createvehicle [(_Lane1X - (random 10)) , (((_Lane1Y + _inc)-(random 5)) - 20), 0]

    ?(_Lanes == 2 || _Lanes == 3):_Ln2Target4 = "TargetE" createvehicle [(_Lane2X - (random 10)) , (((_Lane2Y + _inc)-(random 5)) - 20), 0]

    ~_delay

    ?(_Lanes == 1 || _Lanes == 3):_Ln1Target5 = "TargetE" createvehicle [_Lane1X                , (((_Lane1Y + _inc)-(random 5)) - 15),0]

    ?(_Lanes == 2 || _Lanes == 3):_Ln2Target5 = "TargetE" createvehicle [_Lane2X                , (((_Lane2Y + _inc)-(random 5)) - 15),0]

    ~_delay

    ;// Keep track of the hit/miss status of each target then remove them _delay seconds apart.

    ?(getdammage _Ln1Target1 == 1): _Ln1TargetFlag = 1

    ?(getdammage _Ln2Target1 == 1): _Ln2TargetFlag = 1

    ?(_Ln1TargetFlag == 1) : Ln1hit = Ln1hit + 1

    ?(_Ln2TargetFlag == 1) : Ln2hit = Ln2hit + 1

    ?(_Ln1TargetFlag == 0) : Ln1miss = Ln1miss + 1

    ?(_Ln2TargetFlag == 0) : Ln2miss = Ln2miss + 1

    ?(_Lanes == 1 || _Lanes == 3):deletevehicle _Ln1Target1

    ?(_Lanes == 2 || _Lanes == 3):deletevehicle _Ln2Target1

    _Ln1TargetFlag = 0

    _Ln2TargetFlag = 0

    ~_delay

    ?(getdammage _Ln1Target2 == 1): _Ln1TargetFlag = 1

    ?(getdammage _Ln2Target2 == 1): _Ln2TargetFlag = 1

    ?(_Ln1TargetFlag == 1) : Ln1hit = Ln1hit + 1

    ?(_Ln2TargetFlag == 1) : Ln2hit = Ln2hit + 1

    ?(_Ln1TargetFlag == 0) : Ln1miss = Ln1miss + 1

    ?(_Ln2TargetFlag == 0) : Ln2miss = Ln2miss + 1

    ?(_Lanes == 1 || _Lanes == 3):deletevehicle _Ln1Target2

    ?(_Lanes == 2 || _Lanes == 3):deletevehicle _Ln2Target2

    _Ln1TargetFlag = 0

    _Ln2TargetFlag = 0

    ~_delay

    ?(getdammage _Ln1Target3 == 1): _Ln1TargetFlag = 1

    ?(getdammage _Ln2Target3 == 1): _Ln2TargetFlag = 1

    ?(_Ln1TargetFlag == 1) : Ln1hit = Ln1hit + 1

    ?(_Ln2TargetFlag == 1) : Ln2hit = Ln2hit + 1

    ?(_Ln1TargetFlag == 0) : Ln1miss = Ln1miss + 1

    ?(_Ln2TargetFlag == 0) : Ln2miss = Ln2miss + 1

    ?(_Lanes == 1 || _Lanes == 3):deletevehicle _Ln1Target3

    ?(_Lanes == 2 || _Lanes == 3):deletevehicle _Ln2Target3

    _Ln1TargetFlag = 0

    _Ln2TargetFlag = 0

    ~_delay

    ?(getdammage _Ln1Target4 == 1): _Ln1TargetFlag = 1

    ?(getdammage _Ln2Target4 == 1): _Ln2TargetFlag = 1

    ?(_Ln1TargetFlag == 1) : Ln1hit = Ln1hit + 1

    ?(_Ln2TargetFlag == 1) : Ln2hit = Ln2hit + 1

    ?(_Ln1TargetFlag == 0) : Ln1miss = Ln1miss + 1

    ?(_Ln2TargetFlag == 0) : Ln2miss = Ln2miss + 1

    ?(_Lanes == 1 || _Lanes == 3):deletevehicle _Ln1Target4

    ?(_Lanes == 2 || _Lanes == 3):deletevehicle _Ln2Target4

    _Ln1TargetFlag = 0

    _Ln2TargetFlag = 0

    ~_delay

    ?(getdammage _Ln1Target5 == 1): _Ln1TargetFlag = 1

    ?(getdammage _Ln2Target5 == 1): _Ln2TargetFlag = 1

    ?(_Ln1TargetFlag == 1) : Ln1hit = Ln1hit + 1

    ?(_Ln2TargetFlag == 1) : Ln2hit = Ln2hit + 1

    ?(_Ln1TargetFlag == 0) : Ln1miss = Ln1miss + 1

    ?(_Ln2TargetFlag == 0) : Ln2miss = Ln2miss + 1

    ?(_Lanes == 1 || _Lanes == 3):deletevehicle _Ln1Target5

    ?(_Lanes == 2 || _Lanes == 3):deletevehicle _Ln2Target5

    _Ln1TargetFlag = 0

    _Ln2TargetFlag = 0

    ~_delay

    ;// Report the score between rounds 1 - 6

    ?(_Lanes == 1 && _loop1 < 7 ):hint format["ROUND %3\n\n\nLANE 1\nHit  = %1\nMiss = %2\n\nLANE 2\nEmpty", Ln1hit, Ln1miss, _set]

    ?(_Lanes == 2 && _loop1 < 7 ):hint format["ROUND %3\n\n\nLANE 1\nEmpty\n\nLANE 2\nHit  = %1\nMiss = %2", Ln2hit, Ln2miss, _set]

    ?(_Lanes == 3 && _loop1 < 7 ):hint format["ROUND %5\n\n\nLANE 1\nHit  = %1\nMiss = %2\n\nLANE 2\nHit  = %3\nMiss = %4", Ln1hit, Ln1miss,Ln2hit, Ln2miss, _set]

    ;// Report the score and include "LAST ROUND" on round 7

    ?(_Lanes == 1 && _loop1 == 7 ):hint format["LAST ROUND\n\n\nLANE 1\nHit  = %1\nMiss = %2\n\nLANE 2\nEmpty", Ln1hit, Ln1miss]

    ?(_Lanes == 2 && _loop1 == 7 ):hint format["LAST ROUND\n\n\nLANE 1\nEmpty\n\nLANE 2\nHit  = %1\nMiss = %2", Ln2hit, Ln2miss]

    ?(_Lanes == 3 && _loop1 == 7 ):hint format["LAST ROUND\n\n\nLANE 1\nHit  = %1\nMiss = %2\n\nLANE 2\nHit  = %3\nMiss = %4", Ln1hit, Ln1miss,Ln2hit, Ln2miss]

    ~_delay

    ;// If player(s) left the range, end the process

    ?(Lane1_Occupied + Lane2_Occupied < 1) : goto "END"

    ;// Start back at the top of the loop to begin next round 2-7

    ?(_loop1 < 8) : goto "loop1"

    ;// Report the final score at completion of all target rounds or when the range(s) are clear of players

    #END

    ?(_Lanes == 1):hint format["CLEAR\n\n\nLANE 1\nHit  = %1\nMiss = %2\n\nLANE 2\nEmpty", Ln1hit, Ln1miss]

    ?(_Lanes == 2):hint format["CLEAR\n\n\nLANE 1\nEmpty\n\nLANE 2\nHit  = %1\nMiss = %2", Ln2hit, Ln2miss]

    ?(_Lanes == 3):hint format["CLEAR\n\n\nLANE 1\nHit  = %1\nMiss = %2\n\nLANE 2\nHit  = %3\nMiss = %4", Ln1hit, Ln1miss,Ln2hit, Ln2miss]

    #quit

    exit

×