Advertisement
Guest User

Untitled

a guest
Nov 20th, 2014
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.90 KB | None | 0 0
  1. @name Flying Thing V6
  2. @inputs Pod:wirelink Plate:array FRef:entity
  3. @outputs T1 T2 T3 T4 T5 T6
  4. @persist Thrust:array Mode TarZ PreR PreAct SubMode PreAlt LastPressed SubMode2 PreCombo LastTime Lmao Parking ParkVal AutoStop
  5.  
  6. runOnTick(1)
  7. runOnKeys(Pod:entity():driver(), 1)
  8.  
  9. if(!entity():isFrozen())
  10. {
  11. if(dupefinished()){
  12. reset()
  13. }
  14.  
  15. if(Pod["Active", number] && SubMode2 && Pod["Alt", number] && !PreAlt)
  16. {
  17. AutoStop = !AutoStop
  18. }
  19.  
  20. if(first() || abs(LastTime != 0 && systime() - LastTime > 5)){
  21. Mode=3
  22. SubMode = 1
  23. SubMode2 = 1
  24.  
  25. TarZ=entity():pos():z()
  26.  
  27. for(A=1,Plate:count()){
  28. Thrust:pushNumber(0)
  29. }
  30.  
  31. function void entity:goRoll(F0_roll){
  32. This:applyAngForce(This:toLocal(ang(0,0,F0_roll)+This:angles()*ang(1,1,0))*(This:mass()*ang(0,0,40))-This:angVel()*(This:mass()*ang(0,0,6)))
  33. }
  34.  
  35. function number getSide(F1_side){
  36. return (round(F1_side/2)*2==F1_side ? 1 : -1)
  37. }
  38.  
  39. rangerPersist(1)
  40. rangerFilter(entity())
  41. rangerFilter(entity():getConstraints())
  42. rangerHitWater(1)
  43. }
  44. LastTime = systime()
  45.  
  46. if(!Pod["Active", number] && FRef:vel():length() < 50)
  47. {
  48. Parking = 1
  49.  
  50. if(ParkVal > 100)
  51. {
  52. Parking = 2
  53. }
  54. else
  55. {
  56. ParkVal++
  57. }
  58. }
  59. else
  60. {
  61. Parking = 0
  62. ParkVal = 0
  63. }
  64.  
  65. if(Pod["Mouse1", number] && Pod["Mouse2", number] && Pod["Alt", number] && !PreCombo)
  66. {
  67. SubMode2 = !SubMode2
  68. }
  69. elseif(Pod["Alt",number]&!PreAlt){
  70. SubMode=!SubMode
  71. }
  72. PreAlt=Pod["Alt",number]
  73. PreCombo = Pod["Mouse1", number] && Pod["Mouse2", number] && Pod["Alt", number]
  74.  
  75. if(!(Pod["Active",number] | (1))){
  76. Mode=3
  77. for(A=1,Plate:count()){
  78. Thrust[A,number]=0
  79. }
  80. }
  81. elseif((Pod["Active",number] | (1))&!PreAct){
  82. Mode=0
  83. }
  84.  
  85. PreAct=Pod["Active",number] | (1)
  86.  
  87. if(Pod["R",number]&!PreR){
  88. Mode=!Mode
  89. if(Mode==0){
  90. TarZ=entity():pos():z()
  91. }
  92. }
  93. PreR=Pod["R",number]
  94.  
  95. if(SubMode2){ SubMode = Pod["Space", number] | Pod["Shift", number] }
  96.  
  97. if(Mode==0){ # Hovermode - Standard
  98. for(A=1,Plate:count()){
  99. E=Plate[A, entity]
  100. Ayy=Pod["Mouse1",number]-Pod["Mouse2",number]
  101. if(!SubMode&&SubMode2){ SubMode = abs(clamp(FRef:velL():y() / -100, -1, 1)) == 1 && (AutoStop||!Pod["Active", number]) && (Pod["W",number]-Pod["S",number] == 0) }
  102. if(!SubMode|(A!=3&A!=4)){
  103. if(SubMode2){
  104. if(Ayy == 0)
  105. {
  106. Lmao = Ayy
  107. Ayy = clamp(FRef:velL():x() / (!Pod["Active", number] ? -400 : -1200), -1, 1) - $Lmao / 20
  108. }
  109. else
  110. {
  111. Ayy = Ayy / 4
  112. }
  113. if(E:isUnderWater())
  114. {
  115. TarZ = FRef:pos():z() + 50
  116. }
  117. else
  118. {
  119. TarZ = rangerOffset(E:pos(), E:pos() - vec(0, 0, 400)):pos():z() + 120 - ParkVal + clamp(-E:vel():z() / 5, 0, 400) + abs(Ayy) * 40
  120. #print(_HUD_PRINTCENTER, Ayy:toString())
  121. }
  122.  
  123. }
  124. else{Ayy/=4}
  125. Fo = Pod["W",number]-Pod["S",number]
  126. if(!Fo&&(!Pod["Active", number]||AutoStop)){ Fo = clamp(FRef:velL():y() / -100, -1, 1) }
  127. if(SubMode && Fo == 0){ Fo = Pod["Space", number] - Pod["Shift", number] }
  128. E:goRoll(90+(clamp(20+10*SubMode2-40*abs(Ayy), 0, 30)*getSide(A))*(Fo)+20*(Pod["A",number]-Pod["D",number])+-1*max(-10,min(10,Plate[1,entity]:angVel():pitch()/2)))
  129. Thrust[A,number]=((TarZ+(50*getSide(A))*(Ayy))-E:pos():z())*(50*(SubMode2 ? 2 : 1))-E:vel():z()*(10)
  130. if(SubMode2){ Thrust[A, number] = Thrust[A, number] < 0 ? 0 : Thrust[A, number] }
  131. if(!SubMode){
  132. TarZ+=0.8*(Pod["Space",number]-Pod["Shift",number])
  133. }
  134. }
  135. else{
  136. Shift = Pod["Shift", number]
  137. Space = Pod["Space", number]
  138. if(Pod["W",number]-Pod["S",number] == 0 && Pod["Shift",number]-Pod["Space",number] == 0)
  139. {
  140. Space = clamp(clamp(FRef:velL():y() / -100, -1, 1), 0, 1)
  141. Shift = clamp(clamp(FRef:velL():y() / -100, -1, 1), -1, 0)*-1
  142. }
  143. E:goRoll(FRef:angles():roll()*getSide(A)+180*(getSide(A)==-1)-180*Shift)
  144. Thrust[A,number] = 10000*abs(Shift-Space)
  145. }
  146. }
  147. }
  148. elseif(Mode==1){
  149. for(A=1,Plate:count()){
  150. Plate[A,entity]:goRoll(FRef:angles():roll()*getSide(A)+180*(getSide(A)==-1)+((20*(Pod["S",number]-Pod["W",number]))*getSide(A)*((A<3) - (A>4)))-(20*(Pod["A",number]-Pod["D",number])*(A==3 | A==4)))
  151. Thrust[A,number]=100000*Pod["Space",number]
  152. }
  153. }
  154.  
  155. Nig = Parking != 2
  156.  
  157. T1=Thrust[1,number]*Nig
  158. T2=Thrust[2,number]*Nig
  159. T3=Thrust[3,number]*Nig
  160. T4=Thrust[4,number]*Nig
  161. T5=Thrust[5,number]*Nig
  162. T6=Thrust[6,number]*Nig
  163. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement