A really simple little script which shows up waypoints in-game that might be useful for FREDers. Or might not be; to be honest, having finished implementing it it now feels like one of those ' "Sounds useful!" *Uses for 10 minutes* "lol, no this just gets in the way." ' things. But it's finished now and it might as well be released in case anyone does find it useful.
Installation:
EITHER:
Download attached file to [mymod]\data\tables, and press "Alt-1" in-game to activate.
OR:
Create a text file vws-sct.tbm in [mymod]\data\tables and copy and paste the following code into it. Then press "Alt-1" in-game to activate.
#Conditional Hooks
$Application: FS2_Open
$On Game Init:
[
vws = {} --Set up the global table for this script
vws.active = false --Start off with script inactive
vws.waypointradius = 20 --Radius of waypoints
vws.textbuffer = 5 --Spacing between waypoint and text
vws.key = "Alt-1" --Key pressed to (de)activate script
vws.waypointred = 128 --Red value of waypoint
vws.waypointgreen = 0 --Green value of waypoint
vws.waypointblue = 128 --Blue value of waypoint
vws.waypointalpha = 128 --Alpha value of waypoint
vws.linered = 128 --Red value of lines
vws.linegreen = 0 --Green value of lines
vws.lineblue = 128 --Blue value of lines
vws.linealpha = 128 --Alpha value of lines
vws.textred = 128 --Red value of lines
vws.textgreen = 0 --Green value of lines
vws.textblue = 128 --Blue value of lines
vws.textalpha = 255 --Alpha value of lines
]
$Application: FS2_Open
$On Key Pressed:
[
if hv.Key == vws.key then
vws.active = not vws.active
end
]
$Application: FS2_Open
$State: GS_STATE_GAME_PLAY
$On Frame:
[
local vws = vws --Get a local handle on the global table to speed up access
if vws and vws.active then --If the script is active
local wplists = mn.WaypointLists --Local version of waypoint lists
local wplist --Current waypoint list
local listname --Name of current waypoint list
local num --Number of waypoints in the list
local wp --Current waypoint
local wpname --Current waypoint name
local nextwp --Next waypoint
local pos, nextpos --Positions of waypoints
local plrpos = hv.Player.Position --Player position
local dist --Distance between player and waypoint
local x, y --Screen coords of current waypoint
local nextx, nexty --Screen coords of next waypoint
local namex, namey --Screen coords for name text
local distx, disty --Screen coords for distance text
for i=1,#wplists do --For each waypoint list
wplist = wplists[i]
listname = wplist.Name
num = #wplist
for j=1,num do --For each waypoint
wp = wplist[j] --Waypoint
nextwp = wplist[j+1] --Next waypoint
--Get waypoint positions
pos = wp.Position
nextpos = nextwp.Position
--Get screen coords
x, y = pos:getScreenCoords()
nextx, nexty = nextpos:getScreenCoords()
--Draw waypoint
if x then
gr.setColor(vws.waypointred, vws.waypointgreen, vws.waypointblue, vws.waypointalpha)
gr.drawSphere(vws.waypointradius, wp.Position)
end
--Draw line between this and next waypoint (unless this is the last waypoint)
if x and nextx and j ~= num then
gr.setColor(vws.linered, vws.linegreen, vws.lineblue, vws.linealpha)
gr.drawLine(x, y, nextx, nexty)
end
--Get waypoint name, distance and text position, and then draw it
if x then
wpname = listname..": "..j --Name
namex = x - gr.getStringWidth(wpname)/2 --Get the string's x position
namey = y - vws.waypointradius - vws.textbuffer --Get the string's y position
dist = math.floor(pos:getDistance(plrpos)+0.5) --Get distance of waypoint from player
dist = "Distance: "..dist --Turn into a string
distx = x - gr.getStringWidth(dist)/2 --Get the string's x position
disty = y + vws.waypointradius + vws.textbuffer --Get the string's y position
gr.setColor(vws.textred, vws.textgreen, vws.textblue, vws.textalpha) --Set the colour
gr.drawString(wpname, namex, namey) --Draw the name text
gr.drawString(dist, distx, disty) --Draw the distance text
end
end
end
end
]
$Application: FS2_Open
$On Mission End:
[
vws.active = false --Stops the waypoints showing up during the loading screen after a mission restart; delete this line if you don't care about this and want the script always on
]
#End
Near the beginning are some options which should be simple enough for you to figure out if you want to tweak things.
[attachment deleted by ninja]