Garry's Mod

Garry's Mod

Not enough ratings
Expression 2 chip for ACE [ENG]
By типа загадочни
Simple chip for ACE


   
Award
Favorite
Favorited
Unfavorite
Simple chip for the tank on ACE
@name UTFC 8 0.8

@inputs [GearBox LeftTransfer RightTransfer Engine_1 Engine_2 Engine_3 Engine_4 ]:wirelink [Active]:number
@inputs [Base Seat ]:entity

@outputs [OPS KPH LeftWeld RightWeld]:number

@outputs [Gear Gear_Transfer1 Gear_Transfer2 Force Throttle]:number

@persist [Gear Gear_Transfer1 Gear_Transfer2 Force Force2 Print G_K_max]:number
@persist [Start_Sound Stop_Sound]:string [H_g S_p]:number [Vec]:vector [Ang]:angle
@persist [Int GearBox_Number_of_gears Throttle Max_Throttle ApplyForce Traction]:number

@model models/sprops/rectangles_superthin/size_1/rect_3x3.mdl


#[
LeftTransfer = Gear_Transfer1
RightTransfer = Gear_Transfer2
LeftWeld = Weld1
RightWeld = Wrld2
]#

if( first() | dupefinished() | changed(Active) ){


####### - first - ########################################

# Number 1 = Speed4
# Number 2 = Speed6
# Number 3 = Speed8
# Number 4 = Speed9
# Number 5 = CVT

GearBox_Number_of_gears = 2 # gear box

Max_Throttle = 100

H_g = 2

G_K_max = 5

################## - ApplyForce

ApplyForce = 0

Traction = 10 # force

#################### Sound

Start_Sound = "acf_extra/vehiclefx/engines/coh/tankengine_up.wav"
Stop_Sound = "acf_extra/vehiclefx/engines/coh/t-26_end.wav"

####################

Print = 0

Int = 50 # interval

#########################


####### - Active - ########################################

if(Active){
Base:soundPlay(2,0,Start_Sound)
}else{Base:soundPlay(1,10,Stop_Sound)}
if( dupefinished() & Print ){

local V1 = vec(255,150,90) local V2 = vec(255,220,120)
local V3 = vec(255,200,40) local V4 = vec(200,255,40)

printColor(
V1,"[",V1,"UTFC",V1,"]",V2,":",
V2,"Gearbox type ",V2,"- ",V3,GearBox_Number_of_gears,
V3," - ",V3,"Engine",V4,"-",V4,"Type - " #[,V4,Engine_1:acfType(),V4," - "]# )
}

timer("int",5)

}elseif(Active){

if(clk("int")){ timer("int",Int)

##############################

GearBox["Gear",normal] = Gear #Wirelink
LeftTransfer["Gear",normal] = Gear_Transfer1 #Wirelink
RightTransfer["Gear",normal] = Gear_Transfer2 #Wirelink

Engine_1["Active",normal] = Active
Engine_1["Throttle",normal] = Throttle

Engine_2["Active",normal] = Active
Engine_2["Throttle",normal] = Throttle

Engine_3["Active",normal] = Active
Engine_3["Throttle",normal] = Throttle

Engine_4["Active",normal] = Active
Engine_4["Throttle",normal] = Throttle



############################## - WSAD

local Driver = Seat:driver()
local W = Driver:keyForward()
local S = Driver:keyBack()
local A = Driver:keyLeft()
local D = Driver:keyRight()
local Shift = Driver:keySprint()
local Space = Driver:keyJump()
# ops / khp
KPH = Base:vel():length()/14
OPS = ops()

##############################

local WS = ( W | S )
local AD = ( A | D )

# Transfer1=2 Transfer2=2 Gear = 1 Weld1=0 Weld2=0

switch ( WS ){
case 0 ,

switch ( AD ){
case A , Gear_Transfer1 = 1 Gear_Transfer2 = 1 Gear = 1 LeftWeld = 0 RightWeld = 0 break
case D , Gear_Transfer1 = 2 Gear_Transfer2 = 2 Gear = 1 LeftWeld = 0 RightWeld = 0 break
}
break

case 1 & !Space,
switch( AD | WS ){ #Weld1=0 Weld2=1 Transfer1=2 Transfer2=0

case A & !S , LeftWeld = 1 RightWeld = 0 Gear_Transfer1 = 0 Gear_Transfer2 = 1 break
case D & !S , LeftWeld = 0 RightWeld = 1 Gear_Transfer1 = 2 Gear_Transfer2 = 0 break
# Weld1=0 Weld2=1 Transfer1=1 Transfer2=0

case A & S , LeftWeld = 0 RightWeld = 1 Gear_Transfer1 = 1 Gear_Transfer2 = 0 break
case D & S , LeftWeld = 1 RightWeld = 0 Gear_Transfer1 = 0 Gear_Transfer2 = 2 break

# if(W & !AD ){ Transfer1=2 Transfer2=1 Weld1=0 Weld2=0 }

case W & !AD , LeftWeld = 0 RightWeld = 0 Gear_Transfer1 = 2 Gear_Transfer2 = 1 break
case S & !AD , LeftWeld = 0 RightWeld = 0 Gear_Transfer1 = 1 Gear_Transfer2 = 2 break

break
}
}
switch( Space ){ case 1 , LeftWeld = 1 RightWeld = 1 break }

if( !WS & !AD ){ Gear = 0 Gear_Transfer2 = 0 Gear_Transfer1 = 0 }

############## Throttle

local WSAD = ( WS | AD )

Throttle+= WSAD * 5
Throttle-= !WSAD * 5
Throttle = clamp( Throttle , 0 , Max_Throttle )

############################## - Gearbox

local G_K_ = KPH/G_K_max
local K_h = 5

switch( GearBox_Number_of_gears ){
case 1 , S_p = 4 break
case 2 , S_p = 6 break
case 3 , S_p = 8 break
case 4 , S_p = 9 break
case 5 , S_p = 2 break
}

G_K_ = clamp( G_K_ , 0 , S_p )

if( WS & KPH<5 ){ Gear = 1 }else{ Gear = G_K_ }

switch( WS | AD ){
case !WS & AD , Gear = 1 break
}

######################################## -ApplyForce

if( ApplyForce ){

Force2 = clamp( Force2 , 0 , Traction )
Force = clamp( Force , 0 , Traction )

if( WS ){ Force+=1 }else{ Force-=1 }
if( AD ){ Force2+=1 }else{ Force2-=1 }

switch ( WS | AD ){

case W , Vec = Base:forward() break
case S , Vec = -Base:forward() break

case D , Ang = -ang(0,20,0)
case A , Ang = ang(0,20,0)
}

local Mass = Base:mass()
Base:applyForce(Vec*Mass*Force*2)
Base:applyAngForce(Base:toLocal(Ang)*Mass*Force2*2)

}

########################################

}
}elseif(Active==0){ LeftWeld = 1 RightWeld = 1 }




chip for GPS guidance for ACE missiles and bombs
@name bomb tip

@inputs [E Seat ]:entity H:wirelink [Active A]:number
@outputs Vector_Pos:vector

@persist [ Int ]:number Color:vector

if( first() | dupefinished() | changed( Active ) ){

Int = 50
Color = vec( 255 , 100 , 100 )




holoAlpha(1,0)
holoCreate( 1 )

H:egpColor( 2 , Color )
timer( "int" , Int )

}elseif( Active ){
if( clk( "int" ) ){

timer( "int" , Int )


if( A ){
holoPos( 1 , rangerOffset(9999999999,E:pos()+E:forward()*100,E:forward()):position() )
}

Vector_Pos = holoEntity(1):pos()

H:egp3DTracker( 1 , vec() )
H:egpBoxOutline( 2 , vec2() , vec2(30) )

H:egpParent( 2 , 1 )
H:egpParent( 1 , holoEntity(1) )

}
}