Jump to content

Simple Range Script


Ciribob

Recommended Posts

...

There are variables in the script somewhere setting the altitudes, if I'm not mistaken for both upper and lower limits. Not at my computer and I don't remember exactly where in the script they are or what they are called, but I think they have rather self-explanatory names.

Helicopters and Viggen

DCS 1.5.7 and OpenBeta

Win7 Pro 64bit

i7-3820 3.60GHz

P9X79 Pro

32GB

GTX 670 2GB

VG278H + a Dell

PFT Lynx

TrackIR 5

Link to comment
Share on other sites

No access to the script ATM, but IIRC per default it is set to 1500 (meters AGL). Of course, if you are just trying to get to the other side of the Strafe Pits and fly into one, or more, you get the messages welcoming you etc., and when you leave, you get other messages.

 

Really, there are no consequences for this, because only your highest score is saved, and unless you had some kind of automation which would think it should save a 0 score you accidentally generated by flying through the Strafe Pits, instead of around them, it's all just text.

 

Of course, one could also say, if you are flying into the Pits unauthorized :joystick:, you deserve some kind of penalty :doh:.

When you hit the wrong button on take-off

hwl7xqL.gif

System Specs.

Spoiler
System board: MSI X670E ACE Memory: 64GB DDR5-6000 G.Skill Ripjaw System disk: Crucial P5 M.2 2TB
CPU: AMD Ryzen 7 7800X3D PSU: Corsair HX1200 PSU Monitor: ASUS MG279Q, 27"
CPU cooling: Noctua NH-D15S Graphics card: MSI RTX 3090Ti SuprimX VR: Oculus Rift CV1
 
Link to comment
Share on other sites

Hello, could someone give me a hand? In this Script in reference to the Strafe pit, the height at which the specific scrip is activated inside the polygon drawn by the unit waypoints that we place as "left_zone", this is always activated at about 4900 ft height ASL ,,, Is there any way to make that height vary? the rest of the scrip works perfectly, the only one that in Nevada, is activated very close to the ground and I would like to adjust it. Thank you.

 

I dont know if it can be adjunst in the scrip lua or in the mist...!!!

 

Make a copy of the original script (for safe keeping).

 

Using Notepad++ (or a text editor of your choice, which allows you to selecte UTF-8 encoding) open the script in the text editor, and search for maxAlt (you will find this variable twice); per default it is set to 1500 (which is meters AGL). Change the 1500's to which ever maximum altitude you wish to allow, save and close. Now use the modified script in your mission as per the readme.

When you hit the wrong button on take-off

hwl7xqL.gif

System Specs.

Spoiler
System board: MSI X670E ACE Memory: 64GB DDR5-6000 G.Skill Ripjaw System disk: Crucial P5 M.2 2TB
CPU: AMD Ryzen 7 7800X3D PSU: Corsair HX1200 PSU Monitor: ASUS MG279Q, 27"
CPU cooling: Noctua NH-D15S Graphics card: MSI RTX 3090Ti SuprimX VR: Oculus Rift CV1
 
Link to comment
Share on other sites

Make a copy of the original script (for safe keeping).

 

Using Notepad++ (or a text editor of your choice, which allows you to selecte UTF-8 encoding) open the script in the text editor, and search for maxAlt (you will find this variable twice); per default it is set to 1500 (which is meters AGL). Change the 1500's to which ever maximum altitude you wish to allow, save and close. Now use the modified script in your mission as per the readme.

 

Hello, I have changed the values of maxAlt and it does not affect anything at the height of trigger detection ..... which is always close to 4800 ft above sea level, and that is the altitude that I would like to vary, only the 4800 ft in order to activate it higher.

 

Here a Copy of the Script:

 

-- DCS - Simple Range Script

-- Version 1.1

-- By Ciribob - https://github.com/ciribob/DCS-SimpleRangeScript

--

-- Change log:

-- - Added more accuracte target distance measurement

-- - Added weapon name for bombing range to scoreboard

--

-- Requires MIST 4.0.57 or newer!

-- Inspired by Original Script by SNAFU http://forums.eagle.ru/showthread.php?t=109174

 

range = {}

 

range.strafeTargets = {

 

{

-- GROUP NAME for the unit whos waypoints enclose the target

name = "left_zone",

minAlt = 500,

maxAlt = 1500,

goodPass = 20,

targets = {'Strafe pit Left 3','Strafe pit Left 2','Strafe pit Left 1'}, -- which target(s) are valid for this zone - Unit Names

},

{

name = "right_zone", -- GROUP NAME for the unit whos waypoints enclose the target

minAlt = 500,

maxAlt = 1500,

goodPass = 20,

targets = {'Strafe pit Right 3','Strafe pit Right 2','Strafe pit Right 1'}, -- which target(s) are valid for this zone - Unit Names

}

}

 

-- Zone Names

range.bombingMinAlt = 1800

range.bombingTargets = {

 

"target1",

"target2",

"target3",

"target4",

"target5",

"target6",

"target7",

"target8",

"target9",

"target10",

"target11",

"target12",

"target13",

"target14",

"target15",

 

}

 

 

function range.displayMyStrafePitResults(_unitName)

local _unit = Unit.getByName(_unitName)

 

if _unit and _unit:getPlayerName() then

local _message = "My Top 10 Strafe Pit Results: \n"

 

local _results = range.strafePlayerResults[_unit:getPlayerName()]

 

if _results == nil then

_message = _unit:getPlayerName()..": No Score yet"

else

 

local _sort = function( a,b ) return a.hits > b.hits end

table.sort(_results,_sort)

 

local _bestMsg = ""

local _count = 1

for _,_result in pairs(_results) do

 

_message = _message.."\n"..string.format("%s - Hits %i - %s",_result.zone.name,_result.hits,_result.text)

 

if _bestMsg == "" then

 

_bestMsg = string.format("%s - Hits %i - %s",_result.zone.name,_result.hits,_result.text)

end

 

-- 10 runs

if _count == 10 then

break

end

 

_count = _count+1

end

 

_message = _message .."\n\nBEST: ".._bestMsg

 

end

 

range.displayMessageToGroup(_unit, _message, 10,false)

end

 

end

 

function range.displayStrafePitResults(_unitName)

local _unit = Unit.getByName(_unitName)

 

local _playerResults = {}

if _unit and _unit:getPlayerName() then

 

local _message = "Strafe Pit Results - Top 10:\n"

 

for _playerName,_results in pairs(range.strafePlayerResults) do

 

local _best = nil

for _,_result in pairs(_results) do

 

if _best == nil or _result.hits > _best.hits then

_best = _result

end

end

 

if _best ~= nil then

table.insert(_playerResults,{msg = string.format("%s: %s - Hits %i - %s",_playerName,_best.zone.name,_best.hits,_best.text),hits = _best.hits})

end

 

end

 

--sort list!

 

local _sort = function( a,b ) return a.hits > b.hits end

 

table.sort(_playerResults,_sort)

 

for _i = 1, #_playerResults do

 

_message = _message.."\n[".._i.."]".._playerResults[_i].msg

 

--top 10

if _i > 10 then

break

end

end

 

range.displayMessageToGroup(_unit, _message, 10,false)

end

 

end

 

function range.resetRangeStats(_unitName)

local _unit = Unit.getByName(_unitName)

 

if _unit and _unit:getPlayerName() then

 

range.strafePlayerResults[_unit:getPlayerName()] = nil

range.bombingTargets[_unit:getPlayerName()] = nil

range.displayMessageToGroup(_unit, "Range Stats Cleared", 10,false)

end

end

 

function range.displayMyBombingResults(_unitName)

local _unit = Unit.getByName(_unitName)

 

if _unit and _unit:getPlayerName() then

local _message = "My Top 20 Bombing Results: \n"

 

local _results = range.bombPlayerResults[_unit:getPlayerName()]

 

if _results == nil then

_message = _unit:getPlayerName()..": No Score yet"

else

 

local _sort = function( a,b ) return a.distance < b.distance end

 

table.sort(_results,_sort)

 

local _bestMsg = ""

local _count = 1

for _,_result in pairs(_results) do

 

_message = _message.."\n"..string.format("%s - %s - %i m",_result.name,_result.weapon,_result.distance)

 

if _bestMsg == "" then

 

_bestMsg = string.format("%s - %s - %i m",_result.name,_result.weapon,_result.distance)

end

 

-- 20 runs

if _count == 20 then

break

end

 

_count = _count+1

end

 

_message = _message .."\n\nBEST: ".._bestMsg

 

end

 

range.displayMessageToGroup(_unit, _message, 10,false)

end

 

end

 

function range.displayBombingResults(_unitName)

local _unit = Unit.getByName(_unitName)

 

local _playerResults = {}

if _unit and _unit:getPlayerName() then

 

local _message = "Bombing Results - Top 15:\n"

 

for _playerName,_results in pairs(range.bombPlayerResults) do

 

local _best = nil

for _,_result in pairs(_results) do

 

if _best == nil or _result.distance < _best.distance then

_best = _result

end

end

 

if _best ~= nil then

table.insert(_playerResults,{msg = string.format("%s: %s - %s - %i m",_playerName,_best.name,_best.weapon,_best.distance),distance = _best.distance})

end

 

end

 

--sort list!

 

local _sort = function( a,b ) return a.distance < b.distance end

 

table.sort(_playerResults,_sort)

 

for _i = 1, #_playerResults do

 

_message = _message.."\n[".._i.."] ".._playerResults[_i].msg

 

--top 15

if _i > 15 then

break

end

end

 

range.displayMessageToGroup(_unit, _message, 10,false)

end

 

end

 

-- Handles all world events

range.eventHandler = {}

function range.eventHandler:onEvent(_eventDCS)

 

if _eventDCS == nil or _eventDCS.initiator == nil then

return true

end

 

 

local status, err = pcall(function(_event)

 

 

if _event.id == 15 then --player entered unit

 

-- env.info("Player entered unit")

if _event.initiator:getPlayerName() then

 

-- reset current status

range.strafeStatus[_event.initiator:getID()] = nil

 

range.addF10Commands(_event.initiator:getName())

 

if range.planes[_event.initiator:getID()] ~= true then

 

range.planes[_event.initiator:getID()] = true

 

range.checkInZone(_event.initiator:getName())

end

 

end

 

return true

elseif _event.id == world.event.S_EVENT_HIT and _event.target then

 

-- env.info("HIT! ".._event.target:getName().." with ".._event.weapon:getTypeName())

 

--_event.weapon is currently broken for clients

 

-- env.info(_event.initiator:getPlayerName().."HIT! ".._event.target:getName().." with ".._event.weapon:getTypeName())

 

-- trigger.action.outText("HIT! ".._event.target:getName().." with ".._event.weapon:getTypeName(),10,false)

local _currentTarget = range.strafeStatus[_event.initiator:getID()]

 

if _currentTarget then

 

for _, _targetName in pairs(_currentTarget.zone.targets) do

 

if _targetName == _event.target:getName() then

 

_currentTarget.hits = _currentTarget.hits + 1

 

return true

end

end

end

 

elseif _event.id == world.event.S_EVENT_SHOT then

 

local _weapon = _event.weapon:getTypeName()

local _weaponStrArray = range.split(_weapon,"%.")

 

local _weaponName = _weaponStrArray[#_weaponStrArray]

if (string.match(_weapon, "weapons.bombs") --all bombs

or string.match(_weapon, "weapons.nurs") --all rockets

-- or _weapon == "weapons.bombs.BDU_50HD"

-- or _weapon == "weapons.bombs.BDU_50LD"

-- or _weapon == "weapons.nurs.HYDRA_70_M274"

-- or _weapon == "weapons.bombs.BDU_33"

)

and _event.initiator:getPosition().p.y > range.bombingMinAlt

then

 

 

local _ordnance = _event.weapon

 

env.info("Tracking ".._weapon.." - ".._ordnance:getName())

local _lastBombPos = {x=0,y=0,z=0}

 

local _unitName = _event.initiator:getName()

local trackBomb = function(_previousPos)

 

local _unit = Unit.getByName(_unitName)

 

-- env.info("Checking...")

if _unit ~= nil and _unit:getPlayerName() ~= nil then

 

 

-- when the pcall returns a failure the weapon has hit

local _status,_bombPos = pcall(function()

-- env.info("protected")

return _ordnance:getPoint()

end)

 

if _status then

--ok! still in the air

_lastBombPos = {x = _bombPos.x, y = _bombPos.y, z= _bombPos.z }

 

return timer.getTime() + 0.005 -- check again !

else

--hit

-- get closet target to last position

local _closetTarget = nil

local _distance = nil

 

for _,_targetZone in pairs(range.bombingTargets) do

 

local _temp = range.getDistance(_targetZone.point, _lastBombPos)

 

if _distance == nil or _temp < _distance then

 

_distance = _temp

_closetTarget = _targetZone

end

end

 

-- env.info(_distance.." from ".._closetTarget.name)

 

if _distance < 1000 then

 

if not range.bombPlayerResults[_unit:getPlayerName()] then

range.bombPlayerResults[_unit:getPlayerName()] = {}

end

 

local _results = range.bombPlayerResults[_unit:getPlayerName()]

 

table.insert(_results,{name=_closetTarget.name, distance =_distance, weapon = _weaponName })

 

local _message = string.format("%s - %i m from bullseye of %s",_unit:getPlayerName(), _distance,_closetTarget.name)

 

trigger.action.outText(_message,10,false)

 

end

end

 

end

 

return

end

 

timer.scheduleFunction(trackBomb, nil, timer.getTime() + 1)

end

end

 

 

return true

 

end, _eventDCS)

 

if (not status) then

env.error(string.format("Error while handling event %s", err),false)

end

end

 

 

function range.checkInZone(_unitName)

 

--check if we're in any zone

-- if we're in a zone, start looking for hits on target

-- if we're no longer in a zone but were previously, list the result and store the run

local _unit = Unit.getByName(_unitName)

 

if _unit and _unit:getPlayerName() then

 

timer.scheduleFunction(range.checkInZone, _unitName, timer.getTime() + 1)

 

local _unitPos = _unit:getPosition().p

 

-- currently strafing?

local _currentStrafeRun = range.strafeStatus[_unit:getID()]

 

if _currentStrafeRun ~= nil then

if _currentStrafeRun.zone.polygon~=nil and mist.pointInPolygon(_unitPos,_currentStrafeRun.zone.polygon,_currentStrafeRun.zone.maxAlt) and _unitPos.y >= _currentStrafeRun.zone.minAlt then

--still in zone, do nothing

_currentStrafeRun.time = _currentStrafeRun.time+1

elseif _currentStrafeRun.zone.polygon~=nil then

 

_currentStrafeRun.time = _currentStrafeRun.time+1

 

if _currentStrafeRun.time <= 3 then

range.strafeStatus[_unit:getID()] = nil

 

local _msg = _unit:getPlayerName()..": left ".._currentStrafeRun.zone.." too quickly. No Score. "

range.displayMessageToGroup(_unit, _msg, 10,true)

else

local _result = range.strafeStatus[_unit:getID()]

 

local _msg = _unit:getPlayerName().." "

 

if _result.hits >= _result.zone.goodPass then

_msg = _msg .."GOOD PASS with ".._result.hits.." on "

_result.text = "GOOD PASS"

else

_msg = _msg .."INEFFECTIVE PASS with ".._result.hits.." on "

_result.text = "INEFFECTIVE PASS"

end

 

_msg = _msg .._result.zone.name

 

trigger.action.outText(_msg,10,false)

 

range.strafeStatus[_unit:getID()] = nil

 

-- Save so the player can retrieve them

local _stats = range.strafePlayerResults[_unit:getPlayerName()] or {}

 

table.insert(_stats,_result)

 

range.strafePlayerResults[_unit:getPlayerName()] = _stats

end

 

end

 

else

-- check to see if we're in a zone

for _,_targetZone in pairs(range.strafeTargets) do

 

if _targetZone.polygon~=nil and mist.pointInPolygon(_unitPos,_targetZone.polygon,_targetZone.maxAlt) then

 

if range.strafeStatus[_unit:getID()] == nil and _unitPos.y >= _targetZone.minAlt then

 

range.strafeStatus[_unit:getID()] = {hits = 0, zone = _targetZone, time = 1 }

 

local _msg = _unit:getPlayerName().." Rolling in on ".._targetZone.name

range.displayMessageToGroup(_unit, _msg, 10,true)

 

end

 

break

end

end

end

else

 

timer.scheduleFunction(range.checkInZone, _unitName, timer.getTime() + 5)

end

end

 

function range.getGroupId(_unit)

 

local _unitDB = mist.DBs.unitsById[tonumber(_unit:getID())]

if _unitDB ~= nil and _unitDB.groupId then

return _unitDB.groupId

end

 

return nil

end

 

function range.displayMessageToGroup(_unit, _text, _time,_clear)

 

local _groupId = range.getGroupId(_unit)

if _groupId then

if _clear == true then

trigger.action.outTextForGroup(_groupId, _text, _time,_clear)

else

trigger.action.outTextForGroup(_groupId, _text, _time)

end

end

end

 

--range.gunTypes ={"weapons.shells.GAU8_30_AP","weapons.shells.GAU8_30_HE","weapons.shells.GAU8_30_TP","weapons.shells.M61_20_HE","weapons.shells.M61_20_AP","weapons.shells.M2_12_7_t","weapons.shells.7_62x51","weapons.shells.M134_7_62_T","weapons.shells.M134_7_62x51",

-- "weapons.shells.M20_50_aero_APIT","weapons.shells.M20_50_aero_APIT","weapons.shells.GSH301_30_HE","weapons.shells.GSH301_30_AP","weapons.shells.GSH23_23_HE_T","weapons.shells.2A42_30_HE","weapons.shells.2A42_30_AP","weapons.shells.GSH23_23_HE_T",

-- "weapons.shells.YakB_12_7_T","weapons.shells.YakB_12_7","weapons.shells.PKT_7_62_T","weapons.shells.PKT_7_62","weapons.shells.VOG17"}

 

range.addedTo = {}

function range.addF10Commands(_unitName)

 

local _unit = Unit.getByName(_unitName)

if _unit then

 

local _group = mist.DBs.unitsById[tonumber(_unit:getID())]

 

if _group then

 

local _gid = _group.groupId

if not range.addedTo[_gid] then

range.addedTo[_gid] = true

 

local _rootPath = missionCommands.addSubMenuForGroup(_gid, "Range")

 

missionCommands.addCommandForGroup(_gid,"My Strafe results", _rootPath, range.displayMyStrafePitResults, _unitName)

missionCommands.addCommandForGroup(_gid,"All Strafe results", _rootPath, range.displayStrafePitResults, _unitName)

missionCommands.addCommandForGroup(_gid,"My Bombing results", _rootPath, range.displayMyBombingResults, _unitName)

missionCommands.addCommandForGroup(_gid,"All Bombing results", _rootPath, range.displayBombingResults, _unitName)

missionCommands.addCommandForGroup(_gid,"Reset Stats", _rootPath, range.resetRangeStats, _unitName)

end

 

end

end

 

end

 

 

 

--get distance in meters assuming a Flat world

function range.getDistance(_point1, _point2)

 

local xUnit = _point1.x

local yUnit = _point1.z

local xZone = _point2.x

local yZone = _point2.z

 

local xDiff = xUnit - xZone

local yDiff = yUnit - yZone

 

return math.sqrt(xDiff * xDiff + yDiff * yDiff)

end

 

--http://stackoverflow.com/questions/1426954/split-string-in-lua

function range.split(str, sep)

local result = {}

local regex = ("([^%s]+)"):format(sep)

for each in str:gmatch(regex) do

table.insert(result, each)

end

return result

end

 

--init

 

range.strafeStatus = {}

range.strafePlayerResults = {}

range.bombPlayerResults = {}

range.planes = {}

 

 

for _,_targetZone in pairs(range.strafeTargets) do

 

if Group.getByName(_targetZone.name) then

local _points = mist.getGroupPoints(_targetZone.name)

 

env.info("Done for: ".._targetZone.name)

_targetZone.polygon = _points

else

env.info("Couldn't find: ".._targetZone.name)

_targetZone.polygon = nil

end

 

 

end

 

 

local _tempTargets = range.bombingTargets

 

range.bombingTargets = {}

 

for _,_targetZone in pairs(_tempTargets) do

 

local _triggerZone = trigger.misc.getZone(_targetZone)

 

if _triggerZone then

table.insert(range.bombingTargets,{name=_targetZone,point=_triggerZone.point})

env.info("Done for: ".._targetZone)

else

env.info("Failed for: ".._targetZone)

 

end

 

end

 

 

world.addEventHandler(range.eventHandler)

Link to comment
Share on other sites

And you have reloaded the script into the mission after each edit? You know you need to remove the old and add the new each time.

Helicopters and Viggen

DCS 1.5.7 and OpenBeta

Win7 Pro 64bit

i7-3820 3.60GHz

P9X79 Pro

32GB

GTX 670 2GB

VG278H + a Dell

PFT Lynx

TrackIR 5

Link to comment
Share on other sites

And you have reloaded the script into the mission after each edit? You know you need to remove the old and add the new each time.

 

Yes, I have done it, the values of maxalt and minalt are not to vary the activation height of the trigger, which is always activated at 4800 ft above sea level. I do not know if it is an option to vary in the mission editor, in the mist or in the script itself ...

Link to comment
Share on other sites

Changes shall be done in the script, the variables Captain Orso mentioned, 'maxAlt'.

In the script you posted they are 'maxAlt = 1500', meaning 1500m or 4921ft. Decide what altitude you want, if in ft transfer it to meters and change the '1500' to that value. There are one for the left and one for the right.

You also have a 'minAlt' for...well, the minimum altitude. Treated as 'maxAlt'.

If this is what you have done I apologize, but since the 1500m in the script you posted do represent the ~4800ft (4921ft) you mentioned I figured to clarify the process a bit.

Helicopters and Viggen

DCS 1.5.7 and OpenBeta

Win7 Pro 64bit

i7-3820 3.60GHz

P9X79 Pro

32GB

GTX 670 2GB

VG278H + a Dell

PFT Lynx

TrackIR 5

Link to comment
Share on other sites

Changes shall be done in the script, the variables Captain Orso mentioned, 'maxAlt'.

In the script you posted they are 'maxAlt = 1500', meaning 1500m or 4921ft. Decide what altitude you want, if in ft transfer it to meters and change the '1500' to that value. There are one for the left and one for the right.

You also have a 'minAlt' for...well, the minimum altitude. Treated as 'maxAlt'.

If this is what you have done I apologize, but since the 1500m in the script you posted do represent the ~4800ft (4921ft) you mentioned I figured to clarify the process a bit.

 

I thank you very much for the time you are investing in helping me out! At first I thought that those 4800 ft were the 1500 meters, but no, it's pure coincidence. in fact, it varies the data of minalt and maxalt ,,, always activates the "rolling in" to 4800 ft, independently of the values that they put. Maybe it is the mist........ who places the entrance of the airplane at that height inside the polygon created by the waypoints ...i dont know....

 

All this problem is generated because when we create the range of shooting at sea level, the trigger star to 4800 ft .... and more or less you open fire with the gun at about 1000 ft ... or more. But when you create the range shot in Nevada, the average height is 5000 ft, at which ..... the trigger is activated at about 500 ft above the ground.

Link to comment
Share on other sites

I just tested changing maxAlt to 400, and used it in a mission. It works as we've described; you only get the "Rolling in .. " message if you are at 1,200 feet or lower.

 

I've attached the modified script and the mission.

Nmdy Training Range 05.2 Air Starts x4 Strafe 400m low.miz

rangescript_low.lua

When you hit the wrong button on take-off

hwl7xqL.gif

System Specs.

Spoiler
System board: MSI X670E ACE Memory: 64GB DDR5-6000 G.Skill Ripjaw System disk: Crucial P5 M.2 2TB
CPU: AMD Ryzen 7 7800X3D PSU: Corsair HX1200 PSU Monitor: ASUS MG279Q, 27"
CPU cooling: Noctua NH-D15S Graphics card: MSI RTX 3090Ti SuprimX VR: Oculus Rift CV1
 
Link to comment
Share on other sites

Yes, works for me too. Strafe Pit at Groom Lake, elevation 1349m.

minAlt = 1360m

maxAlt = 1370m

Russian helicopter (Ka-50) to get a metric altitude scale.

Hovered at the target up and down through the upper and lower limits and got a text message every pass.

Helicopters and Viggen

DCS 1.5.7 and OpenBeta

Win7 Pro 64bit

i7-3820 3.60GHz

P9X79 Pro

32GB

GTX 670 2GB

VG278H + a Dell

PFT Lynx

TrackIR 5

Link to comment
Share on other sites

Hi,

 

 

I am having an issue with a result being called before I even drop bombs/strafe.

 

 

It calls me rolling in on target then shortly after calls ineffective pass with zero on target before I even approach or launch.

 

 

What am I doing wrong?

 

 

Scott

Link to comment
Share on other sites

It sounds like you're flying into a Strafe Pit, to drop a bomb on a target, and before dropping the bomb, or before the bomb hitting the target, you leave the Strafe Pit, which triggers the Success/Failure report.

 

The Strafe Pits are really for training guns. You can put targets inside a Strafe Pits, but you are always expected to fire on the Strafe Target when entering the Pit.

 

You can fly around a bomb target all you want without penalty. The script only becomes active once you've dropped a bomb on a target, when it will tell you how close your hit was. I'm not sure how close you have to get for it to be registered as a bombing attempt, but not terribly close, from my experience :music_whistling:

When you hit the wrong button on take-off

hwl7xqL.gif

System Specs.

Spoiler
System board: MSI X670E ACE Memory: 64GB DDR5-6000 G.Skill Ripjaw System disk: Crucial P5 M.2 2TB
CPU: AMD Ryzen 7 7800X3D PSU: Corsair HX1200 PSU Monitor: ASUS MG279Q, 27"
CPU cooling: Noctua NH-D15S Graphics card: MSI RTX 3090Ti SuprimX VR: Oculus Rift CV1
 
Link to comment
Share on other sites

Hi,

 

 

I am having an issue with a result being called before I even drop bombs/strafe.

 

 

It calls me rolling in on target then shortly after calls ineffective pass with zero on target before I even approach or launch.

 

 

What am I doing wrong?

 

 

Scott

 

This is simply because you fly out of the zone before you get the chance to do anything. Extend the zone by adjusting the route of the zone unit.

 

 

Edit: ah bugger, sniped by Orso ;-)

Edit 2: or actually not really


Edited by Holton181

Helicopters and Viggen

DCS 1.5.7 and OpenBeta

Win7 Pro 64bit

i7-3820 3.60GHz

P9X79 Pro

32GB

GTX 670 2GB

VG278H + a Dell

PFT Lynx

TrackIR 5

Link to comment
Share on other sites

Hi guys.

 

 

Thanks for your help - tried the demo mission as included and the Stafe pit is working but the green target sites get no results at all even with good hits.

 

 

Scott

Do you fire rockets or bombs at them (or other missiles)? Thats the weapons suposed to be used with that type of target. The canon should be used with the strafe targets.

When following the instructions for building your own range you can combine strafe and bomb (i.e. bombs, rockets, missiles) targets, but that's not the case with the demo mission.

Helicopters and Viggen

DCS 1.5.7 and OpenBeta

Win7 Pro 64bit

i7-3820 3.60GHz

P9X79 Pro

32GB

GTX 670 2GB

VG278H + a Dell

PFT Lynx

TrackIR 5

Link to comment
Share on other sites

Ok,

 

 

So I have been trying to bomb the green smoke (like in the video) ...

 

 

Scott

 

I tested the demo mission myself (edited to have the Ka-50), and I got the same result as you, no indication for bombs. Strafe target worked. That was in 2.5.2.

Then I tested in 1.5.7. There bombing worked as intended.

Something seems to have changed in 2.5. A couple of months ago I run a self-made mission for rocket practice, made in 1.5.7 but worked in 2.5 too. Forgot to test that mission now (and just started the latest update).

Helicopters and Viggen

DCS 1.5.7 and OpenBeta

Win7 Pro 64bit

i7-3820 3.60GHz

P9X79 Pro

32GB

GTX 670 2GB

VG278H + a Dell

PFT Lynx

TrackIR 5

Link to comment
Share on other sites

I seem to vaguely remember something, about the example mission not working with the MIST script installed in it. Try downloading the latest MIST script and implementing it in the mission.

 

The missions I have using the range script and newer MIST scripts all work in DCSW 2.5.1 Beta. As far as I have tested them I have seen no issues.

When you hit the wrong button on take-off

hwl7xqL.gif

System Specs.

Spoiler
System board: MSI X670E ACE Memory: 64GB DDR5-6000 G.Skill Ripjaw System disk: Crucial P5 M.2 2TB
CPU: AMD Ryzen 7 7800X3D PSU: Corsair HX1200 PSU Monitor: ASUS MG279Q, 27"
CPU cooling: Noctua NH-D15S Graphics card: MSI RTX 3090Ti SuprimX VR: Oculus Rift CV1
 
Link to comment
Share on other sites

  • 2 weeks later...

Yes, of course. It works fine. What issues do you have?

When you hit the wrong button on take-off

hwl7xqL.gif

System Specs.

Spoiler
System board: MSI X670E ACE Memory: 64GB DDR5-6000 G.Skill Ripjaw System disk: Crucial P5 M.2 2TB
CPU: AMD Ryzen 7 7800X3D PSU: Corsair HX1200 PSU Monitor: ASUS MG279Q, 27"
CPU cooling: Noctua NH-D15S Graphics card: MSI RTX 3090Ti SuprimX VR: Oculus Rift CV1
 
Link to comment
Share on other sites

  • 3 months later...

I’ve got it set up in a mission, the F10 menu is present, I’ve set trigger zones according to the list of target names in the lua, but it’s not detecting drops or hits.

 

Any suggestions on why it’s not recognizing the bombs? MK-83 from a Hornet.

Link to comment
Share on other sites

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...