Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --@name CSS like C4 v2
- --@author Dick_Inside_Head
- --@shared
- if SERVER then
- local weapon_to_defus = {
- ["weapon_crowbar"] = true,
- ["weapon_knife"] = true
- }
- local weapon_to_plant = {
- ["none"] = true,
- }
- function SpawnNewKega()
- to_boom_check = 0
- boom_bydlokod_indificator = 60
- nextCount = 0
- bomb_on_player = nil
- bomb_defus_player = nil
- bomb_planted = false
- bomb_die = false
- boomb = prop.create(chip():localToWorld(Vector(0, 0, 5)), chip():localToWorldAngles(Angle(0,90,0)), "models/sprops/cuboids/height06/size_2/cube_12x18x6.mdl", false)
- boomb:setNoDraw( 1 )
- boomb:setCollisionGroup( 11 )
- boomb:setMass( 1000 )
- bigHoloc4 = holograms.create( boomb:localToWorld(Vector(1, 0, -5)), boomb:localToWorldAngles(Angle(0,-90,0)), "models/weapons/w_c4.mdl", Vector( 1 ) )
- bigHoloc4:setParent(boomb)
- -- models/weapons/w_c4_planted.mdl
- --BombTimerStart()
- end
- --Plant1 = prop.create(chip():localToWorld(Vector(0, 20, 0)), chip():localToWorldAngles(Angle(0,0,0)), "models/props_junk/sawblade001a.mdl", true)
- --Plant2 = prop.create(chip():localToWorld(Vector(0, -20, 0)), chip():localToWorldAngles(Angle(0,0,0)), "models/props_junk/sawblade001a.mdl", true)
- local kegaPos,kegaSpeed
- function BombBooom( pos )
- Bomb_Remove_to_save_Sounds()
- local BombBooom = prop.create( pos + Vector(0, 0, 10) , chip():localToWorldAngles(Angle(0,0,0)), "models/props_phx/cannonball_solid.mdl", false) --models/props_phx/cannonball_solid.mdl
- BombBooom:setNoDraw( 1 )
- BombBooom:setSolid( false )
- BombBooom:breakEnt()
- end
- function BombTimerStart()
- screen = prop.createComponent(boomb:localToWorld(Vector(-4, -2,0.2)), boomb:localToWorldAngles(Angle(0,-180,0)), "starfall_screen", "models/Gibs/HGIBS.mdl", true)
- screen:setColor( Color(1, 1, 1, 1) )
- screen:linkComponent(chip())
- screen:setParent(boomb)
- screen:setSolid( false )
- boomb:emitSound("radio/bombpl.wav",75,100,5)
- hook.add("think", "BombServerTimer", function()
- if isValid(boomb) then
- BombBeeep()
- if timer.curtime() < nextCount then return end
- nextCount= timer.curtime() + 1
- to_boom_check = to_boom_check + 1
- BoombPos = boomb:getPos()
- if to_boom_check == boom_bydlokod_indificator then
- BombBooom( BoombPos ) hook.remove("think", "BombServerTimer") boomb:emitSound("weapons/c4/c4_explode1.wav",175,100,5)
- end
- else
- hook.remove("think", "BombServerTimer")
- end
- end)
- net.start("plant")
- net.send()
- end
- nextBeep = 1
- function BombBeeep()
- if timer.curtime() < nextBeep then return end
- if to_boom_check > 57 then
- nextBeep = timer.curtime() + 3
- boomb:emitSound("items/nvg_on.wav",75,100,5)
- return end
- if to_boom_check > 50 then
- nextBeep = timer.curtime() + 0.3
- boomb:emitSound("weapons/c4/c4_beep1.wav",75,100,5)
- return end
- if to_boom_check > 40 then
- nextBeep = timer.curtime() + 0.55
- boomb:emitSound("weapons/c4/c4_beep1.wav",75,100,5)
- return end
- if to_boom_check > 30 then
- nextBeep = timer.curtime() + 0.8
- boomb:emitSound("weapons/c4/c4_beep1.wav",75,100,5)
- return end
- nextBeep = timer.curtime() + 1
- boomb:emitSound("weapons/c4/c4_beep1.wav",75,100,5)
- end
- function BombStabilizer( freze )
- local def_pos,def_ang = boomb:localToWorld(Vector(1, 0, 0)), boomb:localToWorldAngles(Angle(0,-90,0))
- bigHoloc4:setParent( boomb )
- boomb:setSolid( true )
- if freze then
- bigHoloc4:setModel( "models/weapons/w_c4_planted.mdl" )
- def_pos,def_ang = boomb:localToWorld(Vector(1, 0, -5)), boomb:localToWorldAngles(Angle(0,-90,0))
- timer.create("Freze",3,1, function()
- if isValid(boomb) then
- boomb:enableMotion( false )
- boomb:setAngles( boomb:getAngles() * Angle(0, 0, 0) )
- --hook.remove("think", "CheckGround")
- end
- end)
- end
- bigHoloc4:setPos( def_pos )
- bigHoloc4:setAngles( def_ang )
- end
- hololoadPos = holograms.create( Vector(0,0,0) , Angle(90,-90,0), "models/holograms/plane.mdl", Vector( 0.001 ) )
- hololoadMain = holograms.create( hololoadPos:localToWorld(Vector(0, 0, -10)), hololoadPos:localToWorldAngles(Angle(0,0,0)), "models/holograms/plane.mdl", Vector( 0.001,0.01,0.001 ) )
- hololoadMain:setParent(hololoadPos)
- hololoadMain:setColor( Color(255,200,100,255) )
- hololoadMain:suppressEngineLighting( true )
- hololoadBack = holograms.create( hololoadPos:localToWorld(Vector(0, 0, -10.05)), hololoadPos:localToWorldAngles(Angle(0,0,0)), "models/holograms/plane.mdl", Vector( 0.03,0.7,0.02 ) )
- hololoadBack:setParent(hololoadPos)
- hololoadBack:setColor( Color(10,10,10,245) )
- hololoadBack:suppressEngineLighting( true )
- function BombFollow_The_Man( ply )
- targetPos = ply:lookupBone( "ValveBiped.Bip01_Spine4" )
- targetHeadPos = ply:lookupBone( "ValveBiped.Bip01_Head1" )
- local UnoPosHolo, UnoAngHolo = ply:getBonePosition( targetPos )
- bigHoloc4:setParent( ply , "chest")
- bigHoloc4:setPos( UnoPosHolo )
- bigHoloc4:setAngles( UnoAngHolo + Angle(0 , 0 , 90) )
- nextUse = 0
- local plantState = 0
- hook.add("think", "BombFolower", function()
- if isValid(boomb) then
- local PosHolo, AngHolo = ply:getBonePosition( targetPos )
- local PosHeadHolo, AngHeadHolo = ply:getEyePos(), ply:getEyeAngles()
- boomb:setPos( PosHolo )
- boomb:setAngles( Angle(0 , 0 , 90) + AngHolo )
- boomb:setSolid( false )
- if timer.curtime() < nextUse then return end
- nextUse= timer.curtime() + 0.1
- --
- if ply:keyDown(IN_KEY.USE) and weapon_to_plant[ ply:getActiveWeapon():getClass() ] then
- if ply:getVelocity():getLength() > 0 then hololoadPos:setPos( Vector(0,0,0) ) plantState = 0 hololoadMain:setScale( Vector( 0.02,0.01,0.02 ) ) return end
- hololoadMain:setScale( hololoadMain:getScale() + Vector(0, plantState/2000 ,0) )
- plantState = plantState + 1
- hololoadPos:setPos( PosHeadHolo )
- hololoadPos:setAngles( AngHeadHolo + Angle(-90, 0, 0) )
- local Check = hololoadMain:getScale().y
- --print( Check )
- if Check > 0.65 then
- hololoadMain:setScale( Vector( 0.02,0.01,0.02 ) )
- hololoadPos:setPos( Vector(0,0,0) )
- hook.remove("think","BombFolower")
- boomb:enableMotion( true )
- bomb_on_player = nil
- hololoadPos:setPos( Vector(0,0,0) )
- bomb_planted = true
- BombTimerStart()
- BombStabilizer( true )
- end
- return
- else
- hololoadPos:setPos( Vector(0,0,0) )
- plantState = 0
- hololoadMain:setScale( Vector( 0.02,0.01,0.02 ) )
- end
- if ply:keyDown(IN_KEY.SPEED) and ply:keyDown(IN_KEY.WALK) then
- hook.remove("think","BombFolower")
- boomb:enableMotion( true )
- bomb_on_player = nil
- boomb:setSolid( true )
- BombStabilizer( false )
- end
- if !ply:isAlive() then
- hook.remove("think","BombFolower")
- boomb:enableMotion( true )
- bomb_on_player = nil
- boomb:setSolid( true )
- BombStabilizer( false )
- end
- end
- end)
- end
- function BombDefuse_The_Man( ply )
- targetHeadPos = ply:lookupBone( "ValveBiped.Bip01_Head1" )
- nextUse = 0
- boomb:emitSound("weapons/c4/c4_disarm.wav",75,100,5)
- local plantState = 0
- hook.add("think", "BombDefuser", function()
- if isValid(boomb) then
- local temp = ply:getEyeTrace().Entity
- if temp == boomb then
- local PosHeadHolo, AngHeadHolo = ply:getEyePos(), ply:getEyeAngles()
- if timer.curtime() < nextUse then return end
- nextUse= timer.curtime() + 0.1
- if ply:keyDown(IN_KEY.USE) then
- if ply:getVelocity():getLength() > 0 then hololoadPos:setPos( Vector(0,0,0) ) plantState = 0 hololoadMain:setScale( Vector( 0.02,0.01,0.02 ) ) return end
- hololoadMain:setScale( hololoadMain:getScale() + Vector(0, plantState/3000 ,0) )
- plantState = plantState + 1
- hololoadPos:setPos( PosHeadHolo )
- hololoadPos:setAngles( AngHeadHolo + Angle(-90, 0, 0) )
- local Check = hololoadMain:getScale().y
- --print( Check )
- if Check > 0.65 then
- hololoadMain:setScale( Vector( 0.02,0.01,0.02 ) )
- hololoadPos:setPos( Vector(0,0,0) )
- hook.remove("think","BombDefuser")
- hook.remove("think", "BombServerTimer")
- bomb_defus_player = nil
- Bomb_Remove_to_save_Sounds()
- boomb:emitSound("radio/bombdef.wav",75,100,5)
- end
- else
- hololoadPos:setPos( Vector(0,0,0) )
- plantState = 0
- hololoadMain:setScale( Vector( 0.02,0.01,0.02 ) )
- bomb_defus_player = nil
- hook.remove("think","BombDefuser")
- return end
- else
- bomb_defus_player = nil
- hook.remove("think","BombDefuser")
- hololoadPos:setPos( Vector(0,0,0) )
- plantState = 0
- hololoadMain:setScale( Vector( 0.02,0.01,0.02 ) )
- end
- end
- end)
- end
- function Bomb_Remove_to_save_Sounds()
- net.start("clear")
- net.send()
- bomb_die = true
- timer.create("RemoveTimer", 5,1, function()
- boomb:remove()
- end)
- end
- timer.create("Tick", 1,0, function()
- if !isValid(boomb) then
- SpawnNewKega()
- end
- end)
- hook.add("playeruse","use_a_bomb",function(ply,used)
- if bomb_die then return end
- if ( used == boomb or used == screen ) and not bomb_planted then
- if bomb_on_player == nil then
- bomb_on_player = ply
- BombFollow_The_Man( bomb_on_player )
- end
- end
- if ( used == boomb or screen ) and bomb_planted then
- if weapon_to_defus[ ply:getActiveWeapon():getClass() ] then
- if bomb_defus_player == nil then
- bomb_defus_player = ply
- BombDefuse_The_Man( bomb_defus_player )
- end
- end
- end
- end)
- else
- local font = render.createFont("Roboto",110)
- local TimeNumbers = 0
- net.receive("plant", function()
- TimerStart( 60 )
- end)
- net.receive("clear", function()
- timer.remove( "Tick" )
- TimeNumbers = 0
- end)
- function TimerStart( time )
- TimeNumbers = time
- timer.create("Tick", 1,time, function()
- TimeNumbers = TimeNumbers - 1
- end)
- end
- hook.add("render", "", function()
- ScrX, ScrY = render.getResolution()
- --if ( player():getPos() - chip():getPos() ):getLength() >= 200 then return end
- render.setFont(font)
- render.setColor(Color((timer.curtime()*100+180)%360-180, 1, 1):hsvToRGB())
- if TimeNumbers == 0 then
- render.drawText(ScrX/2, 100, "No Boom :(", 1)
- else
- render.drawText(ScrX/2, 100, "Time: " .. TimeNumbers , 1)
- end
- --print( nextCount )
- end)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement