Advertisement
sumguytwitches

Targeting Info Display

Nov 30th, 2020 (edited)
1,631
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.03 KB | None | 0 0
  1. //!runscript mP17Lg3L
  2. set sggo to true.
  3. set sgp to 0.
  4. set sgf to 8.
  5. set sgpr to 4.
  6. set sgfirst to 0.
  7. function sgd {
  8. parameter l. parameter d.
  9. If l:length > sgpr set sgpr to l:length.
  10. print (l:padleft(sgpr) + ": " +round(d,2)):padright(terminal:width) at (0, sgp).
  11. set sgp to sgp + 1.
  12. }.
  13.  
  14.  
  15. function sgt {
  16. parameter l. parameter d.
  17. If l:length > sgpr set sgpr to l:length.
  18. print (l:padleft(sgpr) + ": " +d):padright(terminal:width) at (0, sgp).
  19. set sgp to sgp + 1.
  20. }.
  21.  
  22. //lock sgtwr to ship:availablethrust/ship:mass/body:mu*body:position:sqrmagnitude.
  23. list engines in sgengines.
  24. function sgfueltime {
  25. set sgtotal to 0.
  26. for sge in sgengines set sgtotal to choose sgtotal+sge:consumedresources["liquid fuel"]:fuelflow if sge:consumedresources:haskey("liquid fuel") else 0.
  27. return choose ship:liquidfuel/sgtotal if sgtotal > 0 else -1.
  28. }
  29.  
  30. function ChangeTargetAnomaly { parameter name. set as to addons:scansat:getanomalies(body). set closest to as[0]. for anomaly in as if anomaly:name:contains(name) set closest to anomaly. set sgtgt to closest:geoposition. set tarname to closest:name. }
  31.  
  32. function ChangeTargetExact { parameter name. set as to addons:scansat:getanomalies(body). set closest to as[0]. for anomaly in as if anomaly:name = name set closest to anomaly. set sgtgt to closest:geoposition. set tarname to closest:name. }
  33.  
  34.  
  35. Function ChangeTargetGeoPosition { parameter geo. parameter name is "geoposition". set sgtgt to geo. set tarname to name. }
  36.  
  37. Function ChangeTarget { parameter targetname. set target to targetname. set sgtgt to target:geoposition. set tarname to Target:name. }
  38.  
  39. Function ChangeTargetPlace {
  40. parameter placename.
  41. if not (defined(places)) set places to readjson("0:/json/" + body:name + ".json").
  42. ChangeTargetGeoPosition(places[placename]).
  43. set tarname to placename.
  44. }
  45.  
  46. function ChangeTargetNextAnomaly {
  47. set as to addons:scansat:getanomalies(body).
  48. if as:length > 0 {
  49. set alength to as:length.
  50. set aindex to 0.
  51. set closest to as[aindex].
  52. for i in range(alength)
  53. {
  54. set anomaly to as[i].
  55. if not anomaly:detail and (anomaly:geoposition:distance < closest:geoposition:distance or closest:detail)
  56. {
  57. set closest to anomaly.
  58. set aindex to i.
  59. }
  60. }
  61.  
  62.  
  63. set sgtgt to closest:geoposition.
  64.  
  65. set tarname to "??? anomaly as[" + aindex + "]".
  66. } else {
  67. set sgtgt to ship:geoposition.
  68.  
  69. set tarname to "No Anomalies Found".
  70. }
  71. }
  72.  
  73. if defined(tgt) if(tgt:typename = "Boolean") ChangeTargetNextAnomaly().
  74. if defined(tgt) and defined(tarname) {
  75. set sgtgt to tgt.
  76. print "using existing variables".
  77. } else if hastarget {
  78. set sgtgt to target:geoposition.
  79. set tarname to target:name.
  80. } else {
  81. if defined(tgt) { ChangeTargetGeoposition(tgt). }
  82. else { ChangeTargetNextAnomaly(). }
  83. }
  84.  
  85. list engines in es.
  86. function fueltime {
  87. set total to 0.
  88. for e in es if e:consumedresources:keys:contains("liquid fuel") set total to total+e:consumedresources["liquid fuel"]:fuelflow.
  89. return choose ship:liquidfuel/total if total > 0 else -1.
  90. }
  91.  
  92. lock grnddist to vang(sgtgt:position - body:position, -body:position)*constant:degtorad*(body:radius + altitude).
  93. Lock vstar to -(altitude - sgtgt:terrainheight) / (grnddist / ship:groundspeed).
  94. lock tareta to grnddist / vdot(ship:velocity:surface, sgtgt:position:normalized).
  95.  
  96. On round(kuniverse:realtime * sgf) {
  97. set sgp to sgfirst.
  98. sgt("Target", tarname).
  99. sgd("alt:radar", alt:radar).
  100. sgd("grnd distance", grnddist ).
  101. sgd("heading", sgtgt:heading).
  102. sgd("bearing", sgtgt:bearing).
  103. sgd("eta minutes", tareta/60).
  104. //if(es:length > 0) { sgd("FuelTime", fueltime()/60). }
  105. sgd("VS", verticalspeed).
  106. sgd("fuel", ship:liquidfuel).
  107. sgd("VS tar", vstar).
  108. sgd("EC", ship:electriccharge).
  109. sgd("Fuel Time", sgfueltime()/60).
  110. sgd("lat", ship:geoposition:lat).
  111. sgd("long", ship:geoposition:lng).
  112.  
  113.  
  114. Print "":padright(terminal:width) at (0,sgp).
  115. return sggo.
  116. }
  117. print "Use ChangeTarget(<Name>) to pick a new destination".
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement