[Holograms] - Portal Turret Replica

So I made a replica of a Portal turret using Expression 2’s holograms. And this is what I came up with.

http://dl.dropbox.com/u/27584509/testchmb_a_14_advanced0062.jpg

http://dl.dropbox.com/u/27584509/testchmb_a_14_advanced0063.jpg

Now it’s available to you, enjoy. Instructions on setting it up for shooting are in the E2 code it’s self.



@name Portal Turret
@inputs [LTurret RTurret]:wirelink
@outputs Local:vector
@persist Over Dist C2 Zv Speed Scale Open Move Extra [AimAng Pitch]:angle Cos T:table Number
@persist [B H O E Tmp LT RT]:entity [Angle Ang]:angle [Cut Holoscale Tcol]:vector Active
@model models/hunter/blocks/cube05x1x025.mdl

## Portal Turret Replica by OmicroN ##
### You can enable/disable the turret by pressing your Use key on it ###
## To use the turrets, wire each Wirelink to a wire turret and reload the chip ##
## I suggest that you nocollide all the turret before hand as well, or else it will collide ##

if(first() | duped()){
    runOnTick(1)
E = entity()
E:setMass(251)

LT = LTurret:entity()
RT = RTurret:entity()
LT:setAlpha(0)
RT:setAlpha(0)

Scale = 0.7
Cut = vec(0,5+1.5,0)*Scale
Speed = 6
Ang = Angle = ang(0,0,90)
Off = 0.2*Scale , Hole = 9.25
T["clip1a",array] = array(vec(0,Off,0),vec(0,0,Off),vec(0,0,-Hole)*Scale,Cut)
T["clip1b",array] = array(vec(0,1,0),vec(0,0,1),vec(-1,1,1),vec(0,-1,0))

T["clip2a",array] = array(vec(0,-Off,0),vec(0,0,-Off),vec(0,0,Hole)*Scale,-Cut)
T["clip2b",array] = array(vec(0,-1,0),vec(0,0,-1),vec(-1,-1,-1),vec(0,1,0))

T["clip3a",array] = array(vec(0,-Off,0),vec(0,0,Off),vec(0,0,-Hole)*Scale,-Cut)
T["clip3b",array] = array(vec(0,-1,0),vec(0,0,1),vec(-1,-1,1),vec(0,1,0))

T["clip4a",array] = array(vec(0,Off,0),vec(0,0,-Off),vec(0,0,Hole)*Scale,Cut)
T["clip4b",array] = array(vec(0,1,0),vec(0,0,-1),vec(-1,1,-1),vec(0,-1,0))

Holoscale = vec(28,20,60)*Scale

N = 0
for(I=1,4){
    holoCreate(I,E:pos(),Holoscale/12,E:toWorld(Ang))
    if(I==1|I==3){
        N++
        holoCreate(4+N,E:pos(),Holoscale/12,E:toWorld(Ang))
        holoModel(4+N,"hq_sphere")
        #holoParent(4+N,1)
            holoCreate(6+N,E:pos(),-Holoscale/12,E:toWorld(Ang),vec()+70)
            holoModel(6+N,"hq_sphere")
            holoParent(6+N,4+N)
    }
    for(I2=1,4){
        holoClipEnabled(I,I2,1)
        holoClip(I,I2,T["clip"+I+"a",array][I2,vector],T["clip"+I+"b",array][I2,vector],0)
    }
    holoModel(I,"hq_sphere")
    if(I!=1){
        holoParent(I,1)
    }else{
        holoParent(I,E)
    }
}

B = holoEntity(1)

holoClipEnabled(3,5,1)
holoClip(3,5,vec(0,0,22)*Scale,vec(0,1.5,-1),0)

holoClipEnabled(1,5,1)
holoClip(1,5,vec(0,0,22)*Scale,vec(0,-1.5,-1),0)

#Bottom Front Clips#
holoClipEnabled(5,1,1)
holoClipEnabled(5,2,1)
holoClipEnabled(5,3,1)
holoClipEnabled(5,4,1)
holoClip(5,1,vec(0,0,22.5)*Scale,vec(0,-1.5,1),0)
holoClip(5,2,vec(0,-0.2,0)*Scale,vec(0,-1,0),0)
holoClip(5,3,-Cut,vec(0,1,0),0)
holoClip(5,4,vec(0.1,0,0),vec(1,0,0),0)

    holoClipEnabled(6,1,1)
    holoClipEnabled(6,2,1)
    holoClipEnabled(6,3,1)
    holoClipEnabled(6,4,1)
    holoClip(6,1,vec(0,0,22.5)*Scale,vec(0,1.5,1),0)
    holoClip(6,2,vec(0,0.2,0)*Scale,vec(0,1,0),0)
    holoClip(6,3,Cut,vec(0,-1,0),0)
    holoClip(6,4,vec(0.1,0,0),vec(1,0,0),0)

holoClipEnabled(7,1,1)
holoClipEnabled(7,2,1)
holoClipEnabled(7,3,1)
holoClipEnabled(7,4,1)
holoClip(7,1,vec(0,0,22.5)*Scale,vec(0,-1.5,1),0)
holoClip(7,2,vec(0,-0.2,0)*Scale,vec(0,-1,0),0)
holoClip(7,3,-Cut,vec(0,1,0),0)
holoClip(7,4,vec(0.1,0,0),vec(1,0,0),0)

    holoClipEnabled(8,1,1)
    holoClipEnabled(8,2,1)
    holoClipEnabled(8,3,1)
    holoClipEnabled(8,4,1)
    holoClip(8,1,vec(0,0,22.5)*Scale,vec(0,1.5,1),0)
    holoClip(8,2,vec(0,0.2,0)*Scale,vec(0,1,0),0)
    holoClip(8,3,Cut,vec(0,-1,0),0)
    holoClip(8,4,vec(0.1,0,0),vec(1,0,0),0)
##//Bottom Front Clips\\##

holoCreate(9,E:pos(),(Holoscale-0.15*Scale)/12,E:toWorld(Ang),vec()+70)
holoClipEnabled(9,1,1)
holoClipEnabled(9,2,1)
holoClipEnabled(9,3,1)
holoClipEnabled(9,4,1)
holoClip(9,1,Cut,vec(0,-1,0),0)
holoClip(9,2,-Cut,vec(0,1,0),0)
holoClip(9,3,vec(0,0,22.5)*Scale,vec(0,1.5,-1),0)
holoClip(9,4,vec(0,0,22.5)*Scale,vec(0,-1.5,-1),0)
holoModel(9,"hq_sphere")
holoParent(9,1)

holoCreate(10,E:pos(),-Holoscale/12,E:toWorld(Ang),vec()+70)
holoClipEnabled(10,1,1)
holoClipEnabled(10,2,1)
holoClipEnabled(10,3,1)
holoClipEnabled(10,4,1)
holoClip(10,1,Cut,vec(0,-1,0),0)
holoClip(10,2,-Cut,vec(0,1,0),0)
holoClip(10,3,vec(0,0,22)*Scale,vec(0,1.5,-1),0)
holoClip(10,4,vec(0,0,22)*Scale,vec(0,-1.5,-1),0)
holoModel(10,"hq_sphere")
holoParent(10,1)

Tmpscale = Holoscale - vec(0.1,0,0.1)
    holoCreate(11,E:pos(),Tmpscale/12,E:toWorld(Ang))
    holoClipEnabled(11,1)
    holoClip(11,Cut,vec(0,1,0),0)
    holoModel(11,"hq_sphere")
    
    holoCreate(12,E:pos(),-Tmpscale/12,E:toWorld(Ang),vec()+70)
    holoClipEnabled(12,1)
    holoClip(12,Cut,vec(0,1,0),0)
    holoModel(12,"hq_sphere")
    holoParent(12,11)

holoCreate(13,E:pos(),Tmpscale/12,E:toWorld(Ang))
holoClipEnabled(13,1)
holoClip(13,-Cut,vec(0,-1,0),0)
holoModel(13,"hq_sphere")

holoCreate(14,E:pos(),-Tmpscale/12,E:toWorld(Ang),vec()+70)
holoClipEnabled(14,1)
holoClip(14,-Cut,vec(0,-1,0),0)
holoModel(14,"hq_sphere")
holoParent(14,13)

for(I=1,14){
    if(holoEntity(I):getColor()==vec()+255){
        holoMaterial(I,"models/shiny")
    }
}
    
E:setAlpha(0)
E:setMass(250)

H = holoCreate(15,E:pos(),vec(6,6,6)*Scale/12,E:toWorld(Ang))
holoModel(15,"hq_sphere")
holoMaterial(15,"phoenix_storms/black_chrome")
holoParent(15,9)

holoParent(11,15)
holoParent(13,15)

holoCreate(16,E:toWorld(vec(13.45,0,0)*Scale),Scale*vec(5.5,5.5,4)/12,E:toWorld(ang(90,0,0)))
holoModel(16,"hq_torus_thick")
holoColor(16,vec(255,0,0))
holoDisableShading(16,1)
holoMaterial(16,"phoenix_storms/middle")
holoParent(16,9)

holoCreate(17,E:toWorld(vec(13.8,0.2,0)*Scale),Scale*vec(9,9,1)/12,E:toWorld(ang(90,0,0)))
holoAng(17,holoEntity(17):toWorld(ang(0,-90,0)))
holoModel(17,"plane")
holoColor(17,vec(255,0,0))
holoDisableShading(17,1)
holoMaterial(17,"models/roller/rollermine_glow")
holoParent(17,9)

    ### Turret 1 ####
    holoCreate(18,E:toWorld(vec(0,0,4.55)*Scale),Scale*vec(14,14,4.2)/12,E:toWorld(ang(0,0,0)),vec()+120)
    holoClipEnabled(18,1)
    holoClip(18,vec(6.9,0,0)*Scale,vec(-1,0,0),0)
    holoModel(18,"hq_rcube")
    holoMaterial(18,"phoenix_storms/mat/mat_phx_carbonfiber")
    holoParent(18,11)
    
    holoCreate(19,E:toWorld(vec(0,0,4.55)*Scale),Scale*-vec(14,14,4.2)/12,E:toWorld(ang(0,0,0)),vec()+120)
    holoClipEnabled(19,1)
    holoClip(19,vec(6.9,0,0)*Scale,vec(-1,0,0),0)
    holoModel(19,"hq_rcube")
    holoMaterial(19,"models/shiny")
    holoParent(19,18)
    
    holoCreate(20,E:toWorld(vec(9.8,0,4.55)*Scale),Scale*-vec(11.2,13.3,4.2)/12,E:toWorld(ang(0,0,0)),vec()+50)
    holoClipEnabled(20,1)
    holoClip(20,vec(-4,0,0)*Scale,vec(-1,0,0),0)
    holoModel(20,"hq_rcube")
    holoMaterial(20,"models/shiny")
    holoParent(20,18)
    
    holoCreate(21,E:toWorld(vec(5,2,4.55)*Scale),Scale*vec(3,3,6)/12,E:toWorld(ang(90,0,0)))
    holoModel(21,"hq_tube_thick")
    holoMaterial(21,"phoenix_storms/iron_rails")
    holoParent(21,18)
    
    holoCreate(22,E:toWorld(vec(5,-2,4.55)*Scale),Scale*vec(3,3,8)/12,E:toWorld(ang(90,0,0)))
    holoModel(22,"hq_tube_thick")
    holoMaterial(22,"phoenix_storms/iron_rails")
    holoParent(22,18)

### Turret 2 ####
holoCreate(23,E:toWorld(vec(0,0,-4.55)*Scale),Scale*vec(14,14,4.2)/12,E:toWorld(ang(0,0,0)),vec()+120)
holoClipEnabled(23,1)
holoClip(23,vec(6.9,0,0)*Scale,vec(-1,0,0),0)
holoModel(23,"hq_rcube")
holoMaterial(23,"phoenix_storms/mat/mat_phx_carbonfiber")
holoParent(23,13)

holoCreate(24,E:toWorld(vec(0,0,-4.55)*Scale),Scale*-vec(14,14,4.2)/12,E:toWorld(ang(0,0,0)),vec()+120)
holoClipEnabled(24,1)
holoClip(24,vec(6.9,0,0)*Scale,vec(-1,0,0),0)
holoModel(24,"hq_rcube")
holoMaterial(24,"models/shiny")
holoParent(24,23)

holoCreate(25,E:toWorld(vec(9.8,0,-4.55)*Scale),Scale*-vec(11.2,13.3,4.2)/12,E:toWorld(ang(0,0,0)),vec()+50)
holoClipEnabled(25,1)
holoClip(25,vec(-4,0,0)*Scale,vec(-1,0,0),0)
holoModel(25,"hq_rcube")
holoMaterial(25,"models/shiny")
holoParent(25,23)

holoCreate(26,E:toWorld(vec(5,2,-4.55)*Scale),Scale*vec(3,3,6)/12,E:toWorld(ang(90,0,0)))
holoModel(26,"hq_tube_thick")
holoMaterial(26,"phoenix_storms/iron_rails")
holoParent(26,23)

holoCreate(27,E:toWorld(vec(5,-2,-4.55)*Scale),Scale*vec(3,3,8)/12,E:toWorld(ang(90,0,0)))
holoModel(27,"hq_tube_thick")
holoMaterial(27,"phoenix_storms/iron_rails")
holoParent(27,23)

#holoPos(15,E:toWorld(vec(0,0,150)))

Move = 180

timer("extra",1000)
}

if(clk("extra")){
    Extra++
    if(Extra==1){
        for(I=1,2){
            holoCreate(27+I,E:pos(),Holoscale/12,E:toWorld(Ang))
            holoModel(27+I,"hq_sphere")
            holoMaterial(27+I,"models/shiny")
            holoParent(27+I,I>1 ? 28 : 9)
                holoCreate(29+I,E:pos(),-Holoscale/12,E:toWorld(Ang),vec()+70)
                holoModel(29+I,"hq_sphere")
                holoParent(29+I,28)
        }
        #Bottom Back Clips#
        holoClipEnabled(28,1,1)
        holoClipEnabled(28,2,1)
        holoClipEnabled(28,3,1)
        holoClipEnabled(28,4,1)
        holoClip(28,1,vec(0,0,22.5)*Scale,vec(0,-1.5,1),0)
        holoClip(28,2,vec(),vec(0,-1,0),0)
        holoClip(28,3,-Cut,vec(0,1,0),0)
        holoClip(28,4,vec(-0.1,0,0)*Scale,vec(-1,0,0),0)
        
            holoClipEnabled(29,1,1)
            holoClipEnabled(29,2,1)
            holoClipEnabled(29,3,1)
            holoClipEnabled(29,4,1)
            holoClip(29,1,vec(0,0,22.5)*Scale,vec(0,1.5,1),0)
            holoClip(29,2,vec(),vec(0,1,0),0)
            holoClip(29,3,Cut,vec(0,-1,0),0)
            holoClip(29,4,vec(-0.1,0,0)*Scale,vec(-1,0,0),0)
        
        holoClipEnabled(30,1,1)
        holoClipEnabled(30,2,1)
        holoClipEnabled(30,3,1)
        holoClipEnabled(30,4,1)
        holoClip(30,1,vec(0,0,22.5)*Scale,vec(0,-1.5,1),0)
        holoClip(30,2,vec(),vec(0,-1,0),0)
        holoClip(30,3,-Cut,vec(0,1,0),0)
        holoClip(30,4,vec(-0.1,0,0)*Scale,vec(-1,0,0),0)
        
            holoClipEnabled(31,1,1)
            holoClipEnabled(31,2,1)
            holoClipEnabled(31,3,1)
            holoClipEnabled(31,4,1)
            holoClip(31,1,vec(0,0,22.5)*Scale,vec(0,1.5,1),0)
            holoClip(31,2,vec(),vec(0,1,0),0)
            holoClip(31,3,Cut,vec(0,-1,0),0)
            holoClip(31,4,vec(-0.1,0,0)*Scale,vec(-1,0,0),0)
        ##//Bottom Back Clips\\##
        
        ## Rear leg controls ##
        holoCreate(32,E:toWorld(vec(-10.25,-15.6,0)*Scale),Scale*vec(1.643,1.643,5.714)/12,E:toWorld(ang(0,0,0)),vec()+70)
        holoModel(32,"hq_cylinder")
        holoParent(32,1)
        
        holoCreate(33,E:toWorld(vec(-9+1,-12-12+1,2.5)*Scale),Scale*(vec(11,12,12)/0.7)/12,E:toWorld(ang(-24,0,0)))
        holoModel(33,"hq_torus_thin")
        holoMaterial(33,"phoenix_storms/black_chrome")
        holoClipEnabled(33,1,1)
        holoClipEnabled(33,2,1)
        holoClip(33,1,vec(0,0.357,1.071)*Scale,vec(0,1.4,-2.4),0)
        holoClip(33,2,vec(-2.857,0,0)*Scale,vec(1,0,0),0)
        holoParent(33,32)
        
        holoCreate(34,E:toWorld(vec(-9+1,-12-12+1,-2.5)*Scale),Scale*(vec(11,12,12)/0.7)/12,E:toWorld(ang(24,0,0)))
        holoModel(34,"hq_torus_thin")
        holoMaterial(34,"phoenix_storms/black_chrome")
        holoClipEnabled(34,1,1)
        holoClipEnabled(34,2,1)
        holoClip(34,1,vec(0,0.357,-1.071)*Scale,vec(0,1.4,2.4),0)
        holoClip(34,2,vec(-2.857,0,0)*Scale,vec(1,0,0),0)
        holoParent(34,32)
        
        ## Front Right Leg controls ##
        
        Tmp = holoCreate(35,E:toWorld(vec(10.25-0.4,-12.2,1.75)*Scale),Scale*(vec(1.15,1.15,2)/0.7)/12,E:toWorld(ang(0,0,0)),vec()+70)
        holoModel(35,"hq_cylinder")
        holoParent(35,1)
        
        Tmp = holoCreate(36,Tmp:toWorld(vec(-6.25,3,0)*Scale),Scale*(vec(10,14,14)/0.7)/12,E:toWorld(ang(0,0,0)))
        holoModel(36,"hq_torus_thin")
        holoMaterial(36,"phoenix_storms/black_chrome")
        holoClipEnabled(36,1,1)
        holoClipEnabled(36,2,1)
        holoClip(36,1,vec(0,-2.857,0)*Scale,vec(0,1,0),0)
        holoClip(36,2,vec(0,0,0),vec(1,0,0),0)
        holoParent(36,35)
        
        Tmp = holoCreate(37,Tmp:toWorld(vec(0,9.5,0)*Scale),Scale*(vec(1.15,1.15,1.5)/0.7)/12,E:toWorld(ang(0,0,0)),vec()+70)
        holoModel(37,"hq_cylinder")
        holoParent(37,36)
        
        holoUnparent(28)
        holoParent(28,33)
        
        timer("extra",1000)
    }elseif(Extra==2){
        holoCreate(38,Tmp:toWorld(vec(-0.5,-0.5,0)*Scale),Scale*vec(2,2,1.5)/12,Tmp:toWorld(ang(90,0,-50)),vec()+70)
        holoModel(38,"hq_cylinder")
        holoParent(38,37)
    
        Tmp = holoCreate(39,Tmp:toWorld(vec(6.25,-9,0)*Scale),Scale*vec(20,26,14)/12,E:toWorld(ang(0,0,0)))
        holoModel(39,"hq_torus_thin")
        holoMaterial(39,"phoenix_storms/black_chrome")
        holoClipEnabled(39,1,1)
        holoClipEnabled(39,2,0)
        holoClip(39,1,vec(-4.286,0,0)*Scale,vec(-1,-0.25,0),0)
        holoClip(39,2,vec(0,0,0),vec(1,0,0),0)
        holoParent(39,38)
        
        holoCreate(40,Tmp:toWorld(vec(-1.5,-11.9-0.3,0)*Scale),Scale*vec(2,2,3)/12,Tmp:toWorld(ang(90,0,20)),vec()+70)
        holoClipEnabled(40,1)
        holoClip(40,vec(-3.75,0,0),vec(0.4,0.4,-2),0)
        holoModel(40,"hq_cylinder")
        holoParent(40,39)
        
        holoParent(6,40)
        
        ## Front Left Leg control ##
        Tmp = holoCreate(41,E:toWorld(vec(9.85,-12.2,-1.75)*Scale),Scale*(vec(1.15,1.15,2)/0.7)/12,E:toWorld(ang(0,0,0)),vec()+70)
        holoModel(41,"hq_cylinder")
        holoParent(41,35)
        
        Tmp = holoCreate(42,Tmp:toWorld(vec(-6.25,3,0)*Scale),Scale*(vec(10,14,14)/0.7)/12,E:toWorld(ang(0,0,0)))
        holoModel(42,"hq_torus_thin")
        holoMaterial(42,"phoenix_storms/black_chrome")
        holoClipEnabled(42,1,1)
        holoClipEnabled(42,2,1)
        holoClip(42,1,vec(0,-2.857,0)*Scale,vec(0,1,0),0)
        holoClip(42,2,vec(0,0,0),vec(1,0,0),0)
        holoParent(42,41)
        
        Tmp = holoCreate(43,Tmp:toWorld(vec(0,9.5,0)*Scale),Scale*(vec(1.15,1.15,1.5)/0.7)/12,E:toWorld(ang(0,0,0)),vec()+70)
        holoModel(43,"hq_cylinder")
        holoParent(43,42)
        
        holoCreate(44,Tmp:toWorld(vec(-0.5,-0.5,0)*Scale),Scale*vec(2,2,1.5)/12,Tmp:toWorld(ang(90,0,-50)),vec()+70)
        holoModel(44,"hq_cylinder")
        holoParent(44,43)
    
        Tmp = holoCreate(45,Tmp:toWorld(vec(6.25,-9,0)*Scale),Scale*vec(20,26,14)/12,E:toWorld(ang(0,0,0)))
        holoModel(45,"hq_torus_thin")
        holoMaterial(45,"phoenix_storms/black_chrome")
        holoClipEnabled(45,1,1)
        holoClipEnabled(45,2,0)
        holoClip(45,1,vec(-4.286,0,0)*Scale,vec(-1,-0.25,0),0)
        holoClip(45,2,vec(0,0,0),vec(1,0,0),0)
        holoParent(45,44)
        
        holoCreate(46,Tmp:toWorld(vec(-1.5,-11.9-0.3,0)*Scale),Scale*vec(2,2,3)/12,Tmp:toWorld(ang(90,0,20)),vec()+70)
        holoClipEnabled(46,1)
        holoClip(46,vec(5.357,0,0)*Scale,vec(-0.4,0.4,-2),0)
        holoModel(46,"hq_cylinder")
        holoParent(46,45)
        
        holoParent(5,46)
        timer("extra",1000)
    }elseif(Extra==3){
        HH = holoEntity(32)
        HH = holoCreate(47,HH:toWorld(vec(5,-10,0)*Scale),Scale*vec(2,2,4)/12,E:toWorld(ang(0,0,0)),vec()+70)
        holoModel(47,"hq_cylinder")
        holoParent(47,32)
        
        HH = holoCreate(48,HH:toWorld(vec(0,8,0)*Scale),Scale*vec(3,16,3)/12,HH:toWorld(ang()))
        holoMaterial(48,"phoenix_storms/black_chrome")
        holoParent(48,47)
        
        holoCreate(49,HH:toWorld(vec(-1.35,7.8,0)*Scale),Scale*vec(1,1,4)/12,E:toWorld(ang(0,0,0)),vec()+70)
        holoModel(49,"hq_cylinder")
        holoParent(49,48)
        
        holoCreate(50,HH:toWorld(vec(0,13.75,0)*Scale),Scale*vec(3,13,3)/12,HH:toWorld(ang()))
        holoMaterial(50,"phoenix_storms/black_chrome")
        holoParent(50,49)
        
        HH = holoEntity(6)
        
        holoCreate(51,HH:toWorld(vec(2,3.5,26)*Scale),Scale*vec(2,2,4.5)/12,HH:toWorld(ang(0,0,35)),vec()+70)
        holoModel(51,"hq_cylinder")
        holoParent(51,6)
        
        HH = holoCreate(52,HH:toWorld(vec(2.25,-0.15,26-1.4)*Scale),Scale*vec(2,3,8)/12,HH:toWorld(ang(0,0,-75)))
        holoMaterial(52,"phoenix_storms/black_chrome")
        holoParent(52,51)
        
        holoCreate(53,HH:toWorld(vec(-0.75,0,-3.7)*Scale),Scale*vec(1,1,3.4)/12,HH:toWorld(ang(0,0,90)),vec()+70)
        holoModel(53,"hq_cylinder")
        holoParent(53,52)
        
        HH = holoCreate(54,HH:toWorld(vec(-1.5,0,0)*Scale),Scale*vec(2,3,8)/12,HH:angles())
        holoMaterial(54,"phoenix_storms/black_chrome")
        holoParent(54,53)
        
        holoCreate(55,HH:toWorld(vec(0,0,0)*Scale),Scale*vec(2.75,1.5,9)/12,HH:toWorld(ang(0,90,0)))
        holoMaterial(55,"phoenix_storms/black_chrome")
        holoModel(55,"prism")
        holoParent(55,54)
        
        timer("extra",1000)
    }elseif(Extra==4){
        HH = holoEntity(5)
        
        holoCreate(56,HH:toWorld(vec(2,-3.5,26)*Scale),Scale*vec(2,2,4.5)/12,HH:toWorld(ang(0,0,-35)),vec()+70)
        holoModel(56,"hq_cylinder")
        holoParent(56,5)
        
        HH = holoCreate(57,HH:toWorld(vec(2.25,-0.15,26-1.4)*Scale),Scale*vec(2,3,8)/12,HH:toWorld(ang(0,0,75)))
        holoMaterial(57,"phoenix_storms/black_chrome")
        holoParent(57,56)
        
        holoCreate(58,HH:toWorld(vec(-0.75,0,-3.7)*Scale),Scale*vec(1,1,3.4)/12,HH:toWorld(ang(0,0,90)),vec()+70)
        holoModel(58,"hq_cylinder")
        holoParent(58,57)
        
        HH = holoCreate(59,HH:toWorld(vec(-1.5,0,0)*Scale),Scale*vec(2,3,8)/12,HH:angles())
        holoMaterial(59,"phoenix_storms/black_chrome")
        holoParent(59,58)
        
        holoCreate(60,HH:toWorld(vec(0,0,0)*Scale),Scale*vec(2.75,1.5,9)/12,HH:toWorld(ang(0,90,0)))
        holoMaterial(60,"phoenix_storms/black_chrome")
        holoModel(60,"prism")
        holoParent(60,59)
        
        holoCreate(61,H:pos(),Scale*vec(4,4,20)/12,H:toWorld(ang(0,0,90)))
        holoModel(61,"hq_cylinder")
        holoMaterial(61,"phoenix_storms/black_chrome")
        holoParent(61,H)
        
        holoCreate(62,H:toWorld(vec(0,0,-5)*Scale),Scale*vec(4,4,17)/12,H:toWorld(ang(0,0,0)))
        holoModel(62,"hq_cylinder")
        holoMaterial(62,"phoenix_storms/black_chrome")
        holoParent(62,1)
        
        HH = holoEntity(16)
        holoCreate(63,HH:toWorld(vec(0,0,300*Scale)),Scale*vec(2,2,600)/12,HH:toWorld(ang()))
        holoModel(63,"hq_cylinder")
        holoMaterial(63,"models/weapons/w_smg1/smg_crosshair")
        holoAlpha(63,0)
        holoParent(63,HH)

        hint("Done",2)
        
        Active = 1
        Open = 1
    }
}

if(Active){

Clk = owner():keyUse() & owner():aimEntity()==E & !E:isPlayerHolding() & (!Move | Move==180)

if(changed(Clk) & Clk){
    Open = !Open
    soundPlay("movement",2,Open ? "npc/turret_floor/deploy.wav" : "npc/turret_floor/retract.wav")
    if(Open){
        timer("deployed",750)
    }
}

if(clk("deployed")){
    soundPlay("deployed",3,"npc/turret_floor/turret_deploy_"+randint(1,6)+".wav")
}
Move = clamp(Move+(!Open-Open)*Speed,0,180)

if(changed(Move)){
    Cos = (1+cos(Move))*5*Scale
    C2 = (1+cos(Move))*5
    Off = 0.1
    
    Zv = -Scale*10+Cos
    holoPos(15,holoEntity(1):toWorld(vec(0,0,Zv)))
    holoPos(18,holoEntity(11):toWorld(vec(0,4.55*Scale,Zv)))
    holoPos(23,holoEntity(13):toWorld(vec(0,-4.55*Scale,Zv)))
    holoScale(61,vec(3,3,min(20,11+Cos))/12)
    
    holoPos(11,H:toWorld(vec(0,Cos+Off,-Zv)))
    holoAng(11,H:toWorld(ang(0,-C2/4,0)))
    
    holoPos(13,H:toWorld(vec(0,-Cos-Off,-Zv)))
    holoAng(13,H:toWorld(ang(0,C2/4,0)))
    
    # Rear leg control #
    holoAng(32,E:toWorld(ang(0,-C2*9,0)))

    # Front right leg #
    holoAng(35,E:toWorld(ang(0,C2*12,0)))
    holoAng(37,E:toWorld(ang(0,C2*9,0)))
    M = matrix(holoEntity(37):toWorld(ang(90,0,-50)))*matrix(ang(0,-C2*2,0))
    holoAng(38,M:toAngle())
    
    M = matrix(holoEntity(39):toWorld(ang(90,0,20)))*matrix(ang(0,-C2*2,0))
    holoAng(40,M:toAngle())
    
    # Front left leg #
    holoAng(43,E:toWorld(ang(0,C2*9,0)))
    M = matrix(holoEntity(43):toWorld(ang(90,0,-50)))*matrix(ang(0,C2*2,0))
    holoAng(44,M:toAngle())
    
    M = matrix(holoEntity(45):toWorld(ang(90,0,20)))*matrix(ang(0,C2*2,0))
    holoAng(46,M:toAngle())
    
    holoAng(47,holoEntity(32):toWorld(ang(0,-C2*10,0)))
    holoAng(49,holoEntity(48):toWorld(ang(0,45-cos(C2*36)*45,0)))
    
    M = matrix(holoEntity(6):toWorld(ang(0,0,35)))*matrix(ang(0,22.5-C2*12.45,0))
    holoAng(51,M:toAngle())
    
    holoAng(53,holoEntity(52):toWorld(ang(-5-C2*17.5,0,90)))
    
    holoPos(55,holoEntity(54):toWorld(vec(0,0, clamp(-18*Scale+Cos*2.5,0,7*Scale) )))
    
    M = matrix(holoEntity(5):toWorld(ang(0,0,-35)))*matrix(ang(0,22.5+C2*7.95,0))
    holoAng(56,M:toAngle())
    
    holoAng(58,holoEntity(57):toWorld(ang(-5-C2*17.5,0,90)))
    
    holoPos(60,holoEntity(59):toWorld(vec(0,0, clamp(-18*Scale+Cos*2.5,0,7*Scale) )))

    holoScale(62,Scale*vec(4,4,17+C2)/12)
    holoPos(62,H:pos()+E:toWorldAxis(vec(0,8.5+C2/2,0)*Scale))
    
    holoPos(1,E:toWorld(vec(0,Cos*1.45,0)))
}

Pitch = E:angles()
Hold = E:isPlayerHolding() & !Move
if(!Hold & !Move){
    Jolt = ceil(abs($Pitch[3]))>1 & !Over
    Over = !inrange(abs(Pitch[3]),70,110)
    if(Over){ Open = 0 }
}

if(changed(Hold) & Hold){
    soundPlay("hold",4,"npc/turret_floor/turret_pickup_"+randint(1,10)+".wav")
}

if(changed(Jolt) & Jolt){
    soundPlay("jolt",5,"npc/turret_floor/turret_collide_"+randint(1,5)+".wav")
}

if(changed(Over) & Over){
    soundPlay("over",5,"npc/turret_floor/turret_disabled_"+randint(1,8)+".wav")
}

if(changed(Open)){
    Color = vec( Open ? 255 : 70, 0, 0 )
    holoColor(16,Color)
    holoColor(17,Color)
    holoAlpha(63,Open*255)
}

Dist = vec2(O:pos()):distance(vec2(E:pos()))

if(findCanQuery()){
    findByClass("player")
    O = findClosest(E:pos())
}

Local = E:toLocal(O:pos())
Away = Dist<300 & !Move & ( inrange(Local[1],32,300) & inrange(Local[3],-90,90) )

if(Away){
    AimAng = clamp(E:toLocal((O:boxCenterW()-H:pos()):toAngle()), ang(-30,-30,90), ang(30,30,90))
    Angle = Angle+( AimAng-Angle)/4
    Dir = O:boxCenterW()-holoEntity(16):pos()
    holoPos(63,holoEntity(16):pos()+Dir:normalized()*300*Scale)
    holoAng(63,Dir:toAngle()+ang(90,0,0))
}else{
    Angle = Angle+(Ang-Angle)/10
}

if(changed(Away) & !Away){
    soundPlay("search",5,"npc/turret_floor/turret_search_"+randint(1,4)+".wav")
    HH = holoEntity(16)
    holoPos(63,HH:toWorld(vec(0,0,300*Scale)))
    holoAng(63,HH:toWorld(ang()))
}

holoAng(15,E:toWorld(Angle))

if(Open){
    H18 = holoEntity(18)
    H23 = holoEntity(23)
    LT:applyForce(((H18:pos()-LT:toWorld(vec(0,1.5,0)))*15-LT:vel()/2)*LT:mass())
    LT:applyTorque((150*LT:toLocalAxis(rotationVector(quat(H18)*qRotation(vec(1,0,0),-90)/quat(LT)))-12*LT:angVelVector())*LT:inertia())
    RT:applyTorque((150*RT:toLocalAxis(rotationVector(quat(holoEntity(23))*qRotation(vec(1,0,0),-90)/quat(RT)))-12*RT:angVelVector())*RT:inertia())
    RT:applyForce(((H23:pos()-RT:toWorld(vec(0,1.5,0)))*15-RT:vel()/2)*RT:mass())
}
}

LTurret["Fire",number] = RTurret["Fire",number] = (O & Away | Over) & Open


Very nice!
I am going to try it out

I was expecting shit but this is really accurate.

well done

Very well done!

i have no idea how to do this stuff, but i have seen enough holo stuff to know that this is quite impressive stuff. i really like the shiny reflections of it. looks like some nice spec map or something.

Can you post a picture of one next to a real one? You did a damn good job though.

http://dl.dropbox.com/u/27584509/testchmb_a_14_advanced0066.jpg

Also, in case you guys didn’t know, my version of the turret actually unfolds from the shell into the standing turret. It’s completely animated and fits perfectly when folded. :slight_smile:

Could we have a video showing how it works?

Mopazodoz said he’d like to help with a video, so when he and I get on at the same time it can be discussed.

WOW! and I say WOW. That is excellent work! Good job! It looks just like a model, amazing job all around.

Thank you very much to all, I appreciate the positive comments. Try using the E2, it can be used in any server with standard up to date wiremod.

Just spawn it, wait for it to say done, and put it upright and hit use on it. If you have portal you’ll hear it complain when you hold it, and when you run behind it to avoid the guns. Etc.

This is p. awesome, I can see that you really put effort into this.

Damn Omi, thats epic