Advertisement
KrazziPro

Player Only Radar Automation

Jun 16th, 2019
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.64 KB | None | 0 0
  1. @name Player Only Radar Automation
  2. @inputs Parent:entity TargeterSeat:entity EGP:wirelink CamHeading:angle Find
  3. @persist TargetLoop TargetCurrent:entity TargetAngleDifference
  4. @outputs Targets:array Target:entity Heading:angle Position:vector
  5.  
  6. if (first() | dupefinished()){
  7. rangerPersist(1)
  8. rangerFilter(Parent)
  9. rangerFilter(Parent:getConstraints())
  10.  
  11. function reloadTargets(){
  12. findClearWhiteList()
  13. findClearBlackList()
  14. findExcludeEntity(Parent)
  15. findExcludeEntities(Parent:getConstraints())
  16. findExcludePlayer(TargeterSeat:driver())
  17. findExcludeEntity(entity())
  18.  
  19. findByClass("player")
  20. local Players = findToArray()
  21.  
  22. #findByClass("acf_engine")
  23. #local Engines = findToArray()
  24.  
  25. #findByClass("gmod_wire_expression2")
  26. #local Chips = findToArray()
  27.  
  28. #findByClass("npc_*")
  29. #local NPCs = findToArray()
  30.  
  31. #findByClass("wac_*")
  32. #local NPC1s = findToArray()
  33.  
  34. #findByClass("gmod_safespace")
  35. #local NPC2s = findToArray()
  36.  
  37. #findByClass("prop_vehicle_jeep_old")
  38. #local NPC3s = findToArray()
  39.  
  40. #findByClass("prop_vehicle_airboat")
  41. #local NPC4s = findToArray()
  42.  
  43. #findByClass("prop_vehicle_jeep")
  44. #local NPC5s = findToArray()
  45.  
  46. Targets = Players#:add(Engines):add(NPCs):add(NPC1s):add(NPC2s):add(Chips):add(NPC3s):add(NPC4s):add(NPC5s)
  47. timer("reloadTargets", 5000)
  48. }
  49.  
  50. function stopFind(){
  51. Target = TargetCurrent
  52. TargetCurrent = noentity()
  53. TargetAngleDifference = 0
  54. TargetLoop = 0
  55. soundStop(1)
  56. TargeterSeat:soundPlay(2, 0, "acf_extra/airfx/hominglockaquired1.wav")
  57. }
  58.  
  59. function findTarget(){
  60. local Driver = TargeterSeat:driver()
  61. local DriverAngles = ->CamHeading ? CamHeading : Driver:eyeAngles()
  62. if (TargetLoop < Targets:count()){
  63. TargetLoop = TargetLoop + 1
  64. local Entity = Targets[TargetLoop, entity]
  65. local AngleHeading = -heading(Driver:pos(), ang(), Entity:pos())
  66. local AngleDelta = angnorm(AngleHeading - DriverAngles)
  67. local AngleDifference = abs(AngleDelta:pitch()) + abs(AngleDelta:yaw()) + abs(AngleDelta:roll())
  68. if (!TargetCurrent:isValid() | AngleDifference < TargetAngleDifference){
  69. TargetCurrent = Entity
  70. TargetAngleDifference = AngleDifference
  71. }
  72. timer("findTarget", 200)
  73. }else{
  74. stopFind()
  75. }
  76. }
  77.  
  78. function startFind(){
  79. TargetLoop = 0
  80. stoptimer("findTarget")
  81. findTarget()
  82. TargeterSeat:soundPlay(1, 0, "acf_extra/airfx/laser_track.wav")
  83. soundStop(2)
  84. }
  85.  
  86. function update(){
  87. if (EGP){
  88. EGP:egpClear()
  89. local ForwardRanger = rangerOffset(16000, Parent:pos(), Parent:forward())
  90. EGP:egp3DTracker(1, ForwardRanger:pos())
  91. #EGP:egpLine(2, vec2(0, -10), vec2(0, 10))
  92. #EGP:egpLine(3, vec2(-10, 0), vec2(10, 0))
  93. EGP:egpColor(2, vec(255, 0, 0))
  94. EGP:egpColor(3, vec(255, 0, 0))
  95. EGP:egpParent(2, 1)
  96. EGP:egpParent(3, 1)
  97.  
  98. local Count = 3
  99. foreach (I, Entity:entity = Targets){
  100. Count = Count + 1
  101. local Tracker = Count
  102. EGP:egp3DTracker(Tracker, vec())
  103. EGP:egpParent(Tracker, Entity)
  104.  
  105. Count = Count + 1
  106. EGP:egpTriangleOutline(Count, vec2(-10, 10), vec2(0, -10), vec2(10, 10))
  107. if (Entity == Target){
  108. EGP:egpColor(Count, vec(255, 0, 0))
  109. }else{
  110. EGP:egpColor(Count, vec(0, 255, 0))
  111. }
  112. EGP:egpParent(Count, Tracker)
  113.  
  114. Count = Count + 1
  115. local Type = Entity:type()
  116. if (Type == "player"){
  117. EGP:egpText(Count, Entity:name() + " - " + Entity:health() + "%", vec2(10, 15))
  118. EGP:egpColor(Count, teamColor(Entity:team()))
  119. # }elseif (Type == "acf_engine"){
  120. # EGP:egpText(Count, "Engine", vec2(10, 15))
  121. # }elseif (Type == "gmod_wire_expression2"){
  122. # EGP:egpText(Count, "E2", vec2(10, 15))
  123. # }elseif (Type:sub(1, 4) == "npc_"){
  124. # EGP:egpText(Count, Entity:name() + " - " + Entity:health() + "%", vec2(10, 15))
  125. # EGP:egpText(Count, "NPC", vec2(10, 15))
  126. # }elseif (Type:sub(1, 4) == "wac_"){
  127. # EGP:egpText(Count, "WAC", vec2(10, 15))
  128. # }elseif (Type == "gmod_safespace"){
  129. # EGP:egpText(Count, "Safe Space", vec2(10, 15))
  130. # }elseif (Type:sub(1, 4) == "prop_vehicle_jeep_old"){
  131. # EGP:egpText(Count, "Jeep", vec2(10, 15))
  132. # }elseif (Type:sub(1, 4) == "prop_vehicle_airboat"){
  133. # EGP:egpText(Count, "Airboat", vec2(10, 15))
  134. #}elseif (Type:sub(1, 4) == "prop_vehicle_jeep"){
  135. # EGP:egpText(Count, "Train", vec2(10, 15))
  136. }
  137.  
  138. if (Entity == Target){
  139. EGP:egpColor(Count, vec(255, 0, 0))
  140. }
  141. EGP:egpParent(Count, Tracker)
  142. }
  143. }
  144. if (Target:isValid()){
  145. Position = Target:massCenter()
  146. if (Target:isPlayer()){
  147. Position = Target:pos() + vec(0, 0, 32)
  148. }
  149. Heading = -heading(Parent:pos(), ang(), Position)
  150. }
  151. timer("update", 250)
  152. }
  153.  
  154. timer("reloadTargets", 10)
  155. timer("update", 500)
  156. }else{
  157. local ClkName = clkName()
  158. if (ClkName:length() > 0){
  159. ClkName()
  160. }elseif (~Find & Find){
  161. startFind()
  162. }
  163. }
  164. ################
  165. #EGP Auto Connect #
  166. ################
  167. #
  168. if(first() | duped())
  169. {
  170. EGP:egpHudToggle()
  171. reset()
  172. }
  173. #
  174. ################
  175. # End of E2. #
  176. ################
  177. ``````
  178. @name Player Only Radar Automation
  179. @inputs Parent:entity TargeterSeat:entity EGP:wirelink CamHeading:angle Find
  180. @persist TargetLoop TargetCurrent:entity TargetAngleDifference
  181. @outputs Targets:array Target:entity Heading:angle Position:vector
  182.  
  183. if (first() | dupefinished()){
  184. rangerPersist(1)
  185. rangerFilter(Parent)
  186. rangerFilter(Parent:getConstraints())
  187.  
  188. function reloadTargets(){
  189. findClearWhiteList()
  190. findClearBlackList()
  191. findExcludeEntity(Parent)
  192. findExcludeEntities(Parent:getConstraints())
  193. findExcludePlayer(TargeterSeat:driver())
  194. findExcludeEntity(entity())
  195.  
  196. findByClass("player")
  197. local Players = findToArray()
  198.  
  199. Targets = Players#:add(Engines):add(NPCs):add(NPC1s):add(NPC2s):add(Chips):add(NPC3s):add(NPC4s):add(NPC5s)
  200. timer("reloadTargets", 5000)
  201. }
  202.  
  203. function stopFind(){
  204. Target = TargetCurrent
  205. TargetCurrent = noentity()
  206. TargetAngleDifference = 0
  207. TargetLoop = 0
  208. soundStop(1)
  209. TargeterSeat:soundPlay(2, 0, "acf_extra/airfx/hominglockaquired1.wav")
  210. }
  211.  
  212. function findTarget(){
  213. local Driver = TargeterSeat:driver()
  214. local DriverAngles = ->CamHeading ? CamHeading : Driver:eyeAngles()
  215. if (TargetLoop < Targets:count()){
  216. TargetLoop = TargetLoop + 1
  217. local Entity = Targets[TargetLoop, entity]
  218. local AngleHeading = -heading(Driver:pos(), ang(), Entity:pos())
  219. local AngleDelta = angnorm(AngleHeading - DriverAngles)
  220. local AngleDifference = abs(AngleDelta:pitch()) + abs(AngleDelta:yaw()) + abs(AngleDelta:roll())
  221. if (!TargetCurrent:isValid() | AngleDifference < TargetAngleDifference){
  222. TargetCurrent = Entity
  223. TargetAngleDifference = AngleDifference
  224. }
  225. timer("findTarget", 200)
  226. }else{
  227. stopFind()
  228. }
  229. }
  230.  
  231. function startFind(){
  232. TargetLoop = 0
  233. stoptimer("findTarget")
  234. findTarget()
  235. TargeterSeat:soundPlay(1, 0, "acf_extra/airfx/laser_track.wav")
  236. soundStop(2)
  237. }
  238.  
  239. function update(){
  240. if (EGP){
  241. EGP:egpClear()
  242. local ForwardRanger = rangerOffset(16000, Parent:pos(), Parent:forward())
  243. EGP:egp3DTracker(1, ForwardRanger:pos())
  244. EGP:egpColor(2, vec(255, 0, 0))
  245. EGP:egpColor(3, vec(255, 0, 0))
  246. EGP:egpParent(2, 1)
  247. EGP:egpParent(3, 1)
  248.  
  249. local Count = 3
  250. foreach (I, Entity:entity = Targets){
  251. Count = Count + 1
  252. local Tracker = Count
  253. EGP:egp3DTracker(Tracker, vec())
  254. EGP:egpParent(Tracker, Entity)
  255.  
  256. Count = Count + 1
  257. EGP:egpTriangleOutline(Count, vec2(-10, 10), vec2(0, -10), vec2(10, 10))
  258. if (Entity == Target){
  259. EGP:egpColor(Count, vec(255, 0, 0))
  260. }else{
  261. EGP:egpColor(Count, vec(0, 255, 0))
  262. }
  263. EGP:egpParent(Count, Tracker)
  264.  
  265. Count = Count + 1
  266. local Type = Entity:type()
  267. if (Type == "player"){
  268. EGP:egpText(Count, Entity:name() + " - " + Entity:health() + "%", vec2(10, 15))
  269. EGP:egpColor(Count, teamColor(Entity:team()))
  270. }
  271.  
  272. if (Entity == Target){
  273. EGP:egpColor(Count, vec(255, 0, 0))
  274. }
  275. EGP:egpParent(Count, Tracker)
  276. }
  277. }
  278. if (Target:isValid()){
  279. Position = Target:massCenter()
  280. if (Target:isPlayer()){
  281. Position = Target:pos() + vec(0, 0, 32)
  282. }
  283. Heading = -heading(Parent:pos(), ang(), Position)
  284. }
  285. timer("update", 250)
  286. }
  287.  
  288. timer("reloadTargets", 10)
  289. timer("update", 500)
  290. }else{
  291. local ClkName = clkName()
  292. if (ClkName:length() > 0){
  293. ClkName()
  294. }elseif (~Find & Find){
  295. startFind()
  296. }
  297. }
  298. ################
  299. #EGP Auto Connect #
  300. ################
  301. #
  302. if(first() | duped())
  303. {
  304. EGP:egpHudToggle()
  305. reset()
  306. }
  307. #
  308. ################
  309. # End of E2. #
  310. ################
  311. ```
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement