Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.82 KB | None | 0 0
  1. @name BlueTankHUD
  2. @inputs Active EGP:wirelink Seat:entity Gun:entity Base:entity
  3. @persist [EGPObjectState]:array [Driver]:entity [Tick PrevTime]:number [EGPRes EGPDesignRes EGPCenter ToViewUnit]:vector2 EGPLastAlloc:number
  4. @persist [AmmoTypeEGP AmmoMagEGP GunAimTrackerEGP BallisticAimTrackerEGP ReadyIndicatorEGP WarningIndicatorEGP TankIndicatorEGP TurretIndicatorEGP CPUTimeIndicatorEGP]:number
  5. @persist [NorthEGP EastEGP SouthEGP WestEGP]:number
  6.  
  7. # Appearance Properties
  8. @persist [PrimaryColor SecondaryColor]:vector [ReticleScale CompassCenter CompassScale]:vector2
  9. @outputs
  10.  
  11. if (first() | ~Active) {
  12. function void printInfo(Message:string) {
  13. printColor(vec(0, 0, 255), "BlueTankHUD: ", vec(210), Message)
  14. }
  15.  
  16. function number egpAlloc() {
  17. if (EGPObjectState:min()) {
  18. printInfo("EGP allocation failure")
  19. return 0
  20. }
  21.  
  22. EGPLastAlloc = EGPObjectState:minIndex()
  23. EGPObjectState[EGPLastAlloc, number] = 1
  24. return EGPLastAlloc
  25. }
  26.  
  27. function number egpLastAlloc() {
  28. return EGPLastAlloc
  29. }
  30.  
  31. function void wirelink:egpDealloc(I:number) {
  32. if (!EGPObjectState[I, number]) {
  33. printInfo("EGP deallocation failure")
  34. return
  35. }
  36.  
  37. This:egpRemove(I)
  38. EGPObjectState[I, number] = 0
  39. }
  40.  
  41. for (I = 1, egpMaxObjects()) {
  42. EGPObjectState[I, number] = 0
  43. }
  44.  
  45. Driver = Seat:driver()
  46. EGPDesignRes = vec2(1920, 1080)
  47. EGPRes = egpScrSize(Driver)
  48. EGPCenter = EGPRes/2
  49. ToViewUnit = EGPRes/EGPDesignRes
  50.  
  51. EGP:egpClear()
  52. EGP:egpDrawTopLeft(0)
  53.  
  54. # Appearance Properties #
  55. PrimaryColor = vec(255)
  56. SecondaryColor = vec(255, 70, 40)
  57. ReticleScale = vec2(70, 70) * ToViewUnit
  58. CompassCenter = vec2(400, 800) * ToViewUnit
  59. CompassScale = vec2(120) * ToViewUnit
  60.  
  61. # EGP Object Initialization #
  62. egpAlloc()
  63. EGP:egpBox(egpAlloc(), EGPCenter + vec2(-0.32, 0.3) * ReticleScale, vec2(1, 0.04) * ReticleScale)
  64. EGP:egpColor(egpLastAlloc(), vec4(PrimaryColor, 200))
  65. EGP:egpAngle(egpLastAlloc(), 50)
  66.  
  67. EGP:egpBox(egpAlloc(), EGPCenter + vec2(0.32, 0.3) * ReticleScale, vec2(1, 0.04) * ReticleScale)
  68. EGP:egpColor(egpLastAlloc(), vec4(PrimaryColor, 200))
  69. EGP:egpAngle(egpLastAlloc(), -50)
  70.  
  71. holoCreate(1)
  72. holoAlpha(1, 0)
  73. BallisticAimTrackerEGP = egpAlloc()
  74. EGP:egp3DTracker(BallisticAimTrackerEGP, vec())
  75. EGP:egpParent(BallisticAimTrackerEGP, holoEntity(1))
  76.  
  77. EGP:egpBox(egpAlloc(), EGPCenter + vec2(0, 0.02) * ReticleScale, vec2(0.15, 0.01) * ReticleScale)
  78. EGP:egpColor(egpLastAlloc(), vec4(SecondaryColor, 200))
  79. EGP:egpAngle(egpLastAlloc(), 45)
  80. EGP:egpParent(egpLastAlloc(), BallisticAimTrackerEGP)
  81.  
  82. EGP:egpBox(egpAlloc(), EGPCenter + vec2(0, 0.02) * ReticleScale, vec2(0.15, 0.01) * ReticleScale)
  83. EGP:egpColor(egpLastAlloc(), vec4(SecondaryColor, 200))
  84. EGP:egpAngle(egpLastAlloc(), -45)
  85. EGP:egpParent(egpLastAlloc(), BallisticAimTrackerEGP)
  86.  
  87. holoCreate(2)
  88. holoAlpha(2, 0)
  89. GunAimTrackerEGP = egpAlloc()
  90. EGP:egp3DTracker(GunAimTrackerEGP, vec())
  91. EGP:egpParent(GunAimTrackerEGP, holoEntity(2))
  92.  
  93. EGP:egpLineStrip(egpAlloc(), vec2(), vec2(0.15, -0.17) * ReticleScale, vec2(), vec2(-0.15, -0.17) * ReticleScale, vec2(), vec2(0, 0.17) * ReticleScale)
  94. EGP:egpColor(egpLastAlloc(), vec4(vec(0, 255, 0), 200))
  95. EGP:egpParent(egpLastAlloc(), GunAimTrackerEGP)
  96.  
  97. EGP:egpBox(egpAlloc(), EGPCenter + vec2(-1.7, 0) * ReticleScale, vec2(2, 0.06) * ReticleScale)
  98. EGP:egpColor(egpLastAlloc(), vec4(PrimaryColor, 200))
  99.  
  100. EGP:egpBox(egpAlloc(), EGPCenter + vec2(1.7, 0) * ReticleScale, vec2(2, 0.06) * ReticleScale)
  101. EGP:egpColor(egpLastAlloc(), vec4(PrimaryColor, 200))
  102.  
  103. AmmoTypeEGP = egpAlloc()
  104. EGP:egpText(AmmoTypeEGP, "---", EGPCenter + vec2(-0.68, 0.2) * ReticleScale)
  105. EGP:egpFont(AmmoTypeEGP, "Arial", 24)
  106. EGP:egpColor(AmmoTypeEGP, vec4(PrimaryColor, 200))
  107. EGP:egpAlign(AmmoTypeEGP, 2, 1)
  108.  
  109. AmmoMagEGP = egpAlloc()
  110. EGP:egpText(AmmoMagEGP, "-/-", EGPCenter + vec2(-0.68, -0.15) * ReticleScale)
  111. EGP:egpFont(AmmoMagEGP, "Arial", 16)
  112. EGP:egpColor(AmmoMagEGP, vec4(PrimaryColor, 200))
  113. EGP:egpAlign(AmmoMagEGP, 2, 1)
  114.  
  115. ReadyIndicatorEGP = egpAlloc()
  116. EGP:egpText(ReadyIndicatorEGP, "RDY", EGPCenter + vec2(0.7, -0.15) * ReticleScale)
  117. EGP:egpFont(ReadyIndicatorEGP, "Arial", 16)
  118. EGP:egpColor(ReadyIndicatorEGP, vec4(PrimaryColor, 200))
  119. EGP:egpAlign(ReadyIndicatorEGP, 0, 1)
  120.  
  121. WarningIndicatorEGP = egpAlloc()
  122. EGP:egpText(WarningIndicatorEGP, "Warn", EGPCenter + vec2(0.7, 0.2) * ReticleScale)
  123. EGP:egpFont(WarningIndicatorEGP, "Arial", 24)
  124. EGP:egpColor(WarningIndicatorEGP, vec4(vec(255, 0, 0), 200))
  125. EGP:egpAlign(WarningIndicatorEGP, 0, 1)
  126.  
  127. CPUTimeIndicatorEGP = egpAlloc()
  128. EGP:egpText(CPUTimeIndicatorEGP, "CPU : 0", EGPCenter + vec2(2.7, -0.15) * ReticleScale)
  129. EGP:egpFont(CPUTimeIndicatorEGP, "Arial", 12)
  130. EGP:egpColor(CPUTimeIndicatorEGP, vec4(vec(255), 120))
  131. EGP:egpAlign(CPUTimeIndicatorEGP, 2, 1)
  132.  
  133. # Compass
  134.  
  135. # Tank indicator
  136. TankIndicatorEGP = egpAlloc()
  137. EGP:egpLineStrip(TankIndicatorEGP, CompassCenter + vec2(0, -0.45) * CompassScale,
  138. CompassCenter + vec2(0.4, -0.3) * CompassScale,
  139. CompassCenter + vec2(0.4, 0.45) * CompassScale,
  140. CompassCenter + vec2(-0.4, 0.45) * CompassScale,
  141. CompassCenter + vec2(-0.4, -0.3) * CompassScale,
  142. CompassCenter + vec2(0, -0.45) * CompassScale)
  143.  
  144. # Turret indicator
  145. TurretIndicatorEGP = egpAlloc()
  146. EGP:egpTriangleOutline(TurretIndicatorEGP, CompassCenter + vec2(0, -0.7) * CompassScale,
  147. CompassCenter + vec2(0.2, 0) * CompassScale,
  148. CompassCenter + vec2(-0.2, 0) * CompassScale)
  149.  
  150. # North
  151. NorthEGP = egpAlloc()
  152. EGP:egpText(NorthEGP, "N", CompassCenter + vec2(0, -1) * CompassScale)
  153. EGP:egpFont(NorthEGP, "Arial", 32)
  154. EGP:egpColor(NorthEGP, vec4(vec(255), 200))
  155. EGP:egpAlign(NorthEGP, 1, 1)
  156.  
  157. # East
  158. EastEGP = egpAlloc()
  159. EGP:egpText(EastEGP, "E", CompassCenter + vec2(1, 0) * CompassScale)
  160. EGP:egpFont(EastEGP, "Arial", 32)
  161. EGP:egpColor(EastEGP, vec4(vec(255), 200))
  162. EGP:egpAlign(EastEGP, 1, 1)
  163.  
  164. # South
  165. SouthEGP = egpAlloc()
  166. EGP:egpText(SouthEGP, "S", CompassCenter + vec2(0, 1) * CompassScale)
  167. EGP:egpFont(SouthEGP, "Arial", 32)
  168. EGP:egpColor(SouthEGP, vec4(vec(255), 200))
  169. EGP:egpAlign(SouthEGP, 1, 1)
  170.  
  171. # West
  172. WestEGP = egpAlloc()
  173. EGP:egpText(WestEGP, "W", CompassCenter + vec2(-1, 0) * CompassScale)
  174. EGP:egpFont(WestEGP, "Arial", 32)
  175. EGP:egpColor(WestEGP, vec4(vec(255), 200))
  176. EGP:egpAlign(WestEGP, 1, 1)
  177.  
  178. #EGP:egpBox(egpAlloc(), EGPCenter + vec2(-400, -400) * ToViewUnit, vec2(50, 50) * ToViewUnit)
  179. #EGP:egpColor(egpLastAlloc(), vec4(PrimaryColor, 180))
  180.  
  181. ##############################
  182.  
  183. rangerFilter(Gun)
  184. rangerPersist(1)
  185. }
  186.  
  187. if (Active) {
  188. local CurrentTime = systime()
  189. local DeltaTime = CurrentTime - PrevTime
  190.  
  191. local GunAimRanger = rangerOffset(65536, Gun:attachmentPos("muzzle"), Gun:forward())
  192. holoPos(2, GunAimRanger:pos())
  193.  
  194. if (!(Tick%4)) {
  195. EGP:egpSetText(AmmoTypeEGP, Gun:acfAmmoType())
  196. EGP:egpSetText(AmmoMagEGP, Gun:acfRounds()+"/"+ Gun:acfAmmoCount():toString())
  197.  
  198. EGP:egpSetText(AmmoTypeEGP, "APHE")
  199. EGP:egpSetText(AmmoMagEGP, "5/23")
  200. EGP:egpSetText(ReadyIndicatorEGP, "RDY")
  201. EGP:egpSetText(WarningIndicatorEGP, "WARN")
  202. EGP:egpSetText(CPUTimeIndicatorEGP, "CPU : "+round(cpuUsage()*10e5))
  203. }
  204.  
  205. # compass
  206. local CompassAngle = owner():eyeAngles():yaw()+270
  207. EGP:egpPos(NorthEGP, CompassCenter + vec2(0, -1):rotate(CompassAngle) * CompassScale)
  208. EGP:egpPos(EastEGP, CompassCenter + vec2(1, 0):rotate(CompassAngle) * CompassScale)
  209. EGP:egpPos(SouthEGP, CompassCenter + vec2(0, 1):rotate(CompassAngle) * CompassScale)
  210. EGP:egpPos(WestEGP, CompassCenter + vec2(-1, 0):rotate(CompassAngle) * CompassScale)
  211.  
  212. local LocalTankDir = Seat:toLocalAxis(Driver:eye())
  213. local TankAngle = atan(-LocalTankDir:x(), LocalTankDir:y())
  214. EGP:egpLineStrip(TankIndicatorEGP, CompassCenter + vec2(0, -0.45):rotate(TankAngle) * CompassScale,
  215. CompassCenter + vec2(0.4, -0.3):rotate(TankAngle) * CompassScale,
  216. CompassCenter + vec2(0.4, 0.45):rotate(TankAngle) * CompassScale,
  217. CompassCenter + vec2(-0.4, 0.45):rotate(TankAngle) * CompassScale,
  218. CompassCenter + vec2(-0.4, -0.3):rotate(TankAngle) * CompassScale,
  219. CompassCenter + vec2(0, -0.45):rotate(TankAngle) * CompassScale)
  220.  
  221. local LocalTurretDir = Gun:toLocalAxis(Driver:eye())
  222. local TurretAngle = atan(-LocalTurretDir:x(), LocalTurretDir:y())+90
  223. EGP:egpTriangleOutline(TurretIndicatorEGP, CompassCenter + vec2(0, -0.7):rotate(TurretAngle) * CompassScale,
  224. CompassCenter + vec2(0.2, 0):rotate(TurretAngle) * CompassScale,
  225. CompassCenter + vec2(-0.2, 0):rotate(TurretAngle) * CompassScale)
  226.  
  227.  
  228.  
  229. PrevTime = CurrentTime
  230. Tick++
  231. }
  232.  
  233. interval(1000 / 12)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement