1. Post #1
    OmicroN's Avatar
    June 2007
    15 Posts
    So I made a replica of a Portal turret using Expression 2's holograms. And this is what I came up with.



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

    Code:
    @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
    Reply With Quote Edit / Delete Reply Windows 7 United States Show Events Artistic Artistic x 17Optimistic Optimistic x 1 (list)

  2. Post #2
    Gold Member
    Whitesinner0's Avatar
    December 2006
    945 Posts
    Very nice!
    I am going to try it out

  3. Post #3
    Ask Me About My VW Beetle Fetish
    Ldesu's Avatar
    March 2008
    9,719 Posts
    I was expecting shit but this is really accurate.

    well done
    Reply With Quote Edit / Delete Reply Windows 7 Norway Show Events Agree Agree x 2 (list)

  4. Post #4
    Gold Member
    Satyria's Avatar
    February 2007
    1,723 Posts
    Very well done!
    Reply With Quote Edit / Delete Reply Windows 7 Sweden Show Events Friendly Friendly x 1 (list)

  5. Post #5
    Beanz's Avatar
    April 2011
    846 Posts
    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.

  6. Post #6
    About as smart and adept as a pile of turds
    oakman26's Avatar
    January 2010
    3,454 Posts
    Can you post a picture of one next to a real one? You did a damn good job though.
    Reply With Quote Edit / Delete Reply Windows 7 United States Show Events Agree Agree x 1 (list)

  7. Post #7
    OmicroN's Avatar
    June 2007
    15 Posts
    Can you post a picture of one next to a real one? You did a damn good job though.


    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. :)
    Reply With Quote Edit / Delete Reply Windows 7 United States Show Events Winner Winner x 2 (list)

  8. Post #8
    Quality over quantity.
    Unslinga's Avatar
    August 2010
    870 Posts
    Could we have a video showing how it works?

  9. Post #9
    OmicroN's Avatar
    June 2007
    15 Posts
    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.

  10. Post #10
    XXXmags's Avatar
    August 2007
    227 Posts
    WOW! and I say WOW. That is excellent work! Good job! It looks just like a model, amazing job all around.
    Reply With Quote Edit / Delete Reply Windows 7 Venezuela Show Events Agree Agree x 1 (list)

  11. Post #11
    OmicroN's Avatar
    June 2007
    15 Posts
    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.
    Reply With Quote Edit / Delete Reply Mac United States Show Events Friendly Friendly x 1 (list)

  12. Post #12
    Pringles.'s Avatar
    May 2010
    3,734 Posts
    This is p. awesome, I can see that you really put effort into this.

  13. Post #13
    Gold Member
    Balto-the-Wolf-Dog's Avatar
    June 2009
    1,817 Posts
    Damn Omi, thats epic