Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @name Flying Thing V6
- @inputs Pod:wirelink Plate:array FRef:entity
- @outputs T1 T2 T3 T4 T5 T6
- @persist Thrust:array Mode TarZ PreR PreAct SubMode PreAlt LastPressed SubMode2 PreCombo LastTime Lmao Parking ParkVal AutoStop
- runOnTick(1)
- runOnKeys(Pod:entity():driver(), 1)
- if(!entity():isFrozen())
- {
- if(dupefinished()){
- reset()
- }
- if(Pod["Active", number] && SubMode2 && Pod["Alt", number] && !PreAlt)
- {
- AutoStop = !AutoStop
- }
- if(first() || abs(LastTime != 0 && systime() - LastTime > 5)){
- Mode=3
- SubMode = 1
- SubMode2 = 1
- TarZ=entity():pos():z()
- for(A=1,Plate:count()){
- Thrust:pushNumber(0)
- }
- function void entity:goRoll(F0_roll){
- 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)))
- }
- function number getSide(F1_side){
- return (round(F1_side/2)*2==F1_side ? 1 : -1)
- }
- rangerPersist(1)
- rangerFilter(entity())
- rangerFilter(entity():getConstraints())
- rangerHitWater(1)
- }
- LastTime = systime()
- if(!Pod["Active", number] && FRef:vel():length() < 50)
- {
- Parking = 1
- if(ParkVal > 100)
- {
- Parking = 2
- }
- else
- {
- ParkVal++
- }
- }
- else
- {
- Parking = 0
- ParkVal = 0
- }
- if(Pod["Mouse1", number] && Pod["Mouse2", number] && Pod["Alt", number] && !PreCombo)
- {
- SubMode2 = !SubMode2
- }
- elseif(Pod["Alt",number]&!PreAlt){
- SubMode=!SubMode
- }
- PreAlt=Pod["Alt",number]
- PreCombo = Pod["Mouse1", number] && Pod["Mouse2", number] && Pod["Alt", number]
- if(!(Pod["Active",number] | (1))){
- Mode=3
- for(A=1,Plate:count()){
- Thrust[A,number]=0
- }
- }
- elseif((Pod["Active",number] | (1))&!PreAct){
- Mode=0
- }
- PreAct=Pod["Active",number] | (1)
- if(Pod["R",number]&!PreR){
- Mode=!Mode
- if(Mode==0){
- TarZ=entity():pos():z()
- }
- }
- PreR=Pod["R",number]
- if(SubMode2){ SubMode = Pod["Space", number] | Pod["Shift", number] }
- if(Mode==0){ # Hovermode - Standard
- for(A=1,Plate:count()){
- E=Plate[A, entity]
- Ayy=Pod["Mouse1",number]-Pod["Mouse2",number]
- if(!SubMode&&SubMode2){ SubMode = abs(clamp(FRef:velL():y() / -100, -1, 1)) == 1 && (AutoStop||!Pod["Active", number]) && (Pod["W",number]-Pod["S",number] == 0) }
- if(!SubMode|(A!=3&A!=4)){
- if(SubMode2){
- if(Ayy == 0)
- {
- Lmao = Ayy
- Ayy = clamp(FRef:velL():x() / (!Pod["Active", number] ? -400 : -1200), -1, 1) - $Lmao / 20
- }
- else
- {
- Ayy = Ayy / 4
- }
- if(E:isUnderWater())
- {
- TarZ = FRef:pos():z() + 50
- }
- else
- {
- TarZ = rangerOffset(E:pos(), E:pos() - vec(0, 0, 400)):pos():z() + 120 - ParkVal + clamp(-E:vel():z() / 5, 0, 400) + abs(Ayy) * 40
- #print(_HUD_PRINTCENTER, Ayy:toString())
- }
- }
- else{Ayy/=4}
- Fo = Pod["W",number]-Pod["S",number]
- if(!Fo&&(!Pod["Active", number]||AutoStop)){ Fo = clamp(FRef:velL():y() / -100, -1, 1) }
- if(SubMode && Fo == 0){ Fo = Pod["Space", number] - Pod["Shift", number] }
- 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)))
- Thrust[A,number]=((TarZ+(50*getSide(A))*(Ayy))-E:pos():z())*(50*(SubMode2 ? 2 : 1))-E:vel():z()*(10)
- if(SubMode2){ Thrust[A, number] = Thrust[A, number] < 0 ? 0 : Thrust[A, number] }
- if(!SubMode){
- TarZ+=0.8*(Pod["Space",number]-Pod["Shift",number])
- }
- }
- else{
- Shift = Pod["Shift", number]
- Space = Pod["Space", number]
- if(Pod["W",number]-Pod["S",number] == 0 && Pod["Shift",number]-Pod["Space",number] == 0)
- {
- Space = clamp(clamp(FRef:velL():y() / -100, -1, 1), 0, 1)
- Shift = clamp(clamp(FRef:velL():y() / -100, -1, 1), -1, 0)*-1
- }
- E:goRoll(FRef:angles():roll()*getSide(A)+180*(getSide(A)==-1)-180*Shift)
- Thrust[A,number] = 10000*abs(Shift-Space)
- }
- }
- }
- elseif(Mode==1){
- for(A=1,Plate:count()){
- 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)))
- Thrust[A,number]=100000*Pod["Space",number]
- }
- }
- Nig = Parking != 2
- T1=Thrust[1,number]*Nig
- T2=Thrust[2,number]*Nig
- T3=Thrust[3,number]*Nig
- T4=Thrust[4,number]*Nig
- T5=Thrust[5,number]*Nig
- T6=Thrust[6,number]*Nig
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement