Guest User

Untitled

a guest
Jul 16th, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. @name Automated Turret
  2. @outputs Fire
  3. @persist Self:entity Turret:entity Target:entity Angle:angle
  4. @persist Threshold
  5.  
  6. if( first() ) {
  7. runOnTick(1)
  8.  
  9. Self = entity()
  10. Self:isWeldedTo():setMaterial( "Models/XQM/LightLinesRed" )
  11.  
  12. Threshold = 1000
  13.  
  14. findExcludeEntity( owner() )
  15. }
  16.  
  17. if( !Turret ) {
  18. if( ->Fire ) {
  19. Es = ioOutputEntities("Fire")
  20. Turret = Es[1, entity]
  21. }
  22. }
  23.  
  24. if( Turret & tickClk() ) {
  25. P = Self:pos() + vec( 0, 0, 10 )
  26.  
  27. if( !Target & findCanQuery() ) {
  28. findByClass( "player" )
  29. N = findClipToSphere( Turret:pos(), Threshold )
  30. Fire = !!N
  31.  
  32. if( N > 0 ) {
  33. Target = findClosest( Self:pos() )
  34. }
  35. }
  36.  
  37. if( Target ) {
  38. if( Turret:pos():distance( Target:pos() ) > Threshold ){
  39. Target = noentity()
  40. exit()
  41. }
  42. Pos = Target:pos() + vec( random(-5, 5), random(-5, 5), Target:height() / 2 )
  43. Angle = ( Pos - Turret:pos() ):toAngle()
  44.  
  45. rangerFilter( Turret )
  46. RD = rangerOffset( Turret:pos(), Pos )
  47. Fire = RD:entity() == Target
  48. } else { Angle = Self:angles() }
  49.  
  50. TarQ = quat( Angle )
  51. CurQ = quat( Turret )
  52.  
  53. Q = TarQ/CurQ
  54. V = Turret:toLocal( rotationVector( Q ) + P )
  55. Turret:applyTorque( ( 150 * V - 12 * Turret:angVelVector() ) * Turret:inertia() )
  56.  
  57. Turret:applyForce( ( ( P - Turret:massCenter() ) * 10 - Turret:vel() ) * Turret:mass() )
  58. }
Add Comment
Please, Sign In to add comment