Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- AddCSLuaFile()
- DEFINE_BASECLASS( "base_gmodentity" )
- ENT.PrintName = "FirePlace"
- ENT.Author = "buu342"
- ENT.Information = "Keeps you warm and tasty."
- ENT.Category = "Survival"
- ENT.Spawnable = true
- ENT.On = false
- function ENT:SpawnFunction( ply, tr, ClassName )
- if ( !tr.Hit ) then return end
- local SpawnPos = tr.HitPos + tr.HitNormal *7
- local ent = ents.Create( ClassName )
- ent:SetPos( SpawnPos )
- ent:Spawn()
- ent:Activate()
- return ent
- end
- function ENT:Initialize()
- self.Entity:SetModel( "models/props/FarCry3/fireplace.mdl" )
- self.Entity:PhysicsInit(SOLID_VPHYSICS)
- self.Entity:SetMoveType(MOVETYPE_VPHYSICS)
- self.Entity:SetSolid(SOLID_VPHYSICS)
- self:DrawShadow( true )
- local phys = self.Entity:GetPhysicsObject()
- if phys and phys:IsValid() then phys:Wake() end
- end
- function ENT:Use( activator, caller )
- if !self.On then
- self.On = true
- self.fireeffect= ents.Create("info_particle_system")
- self.fireeffect:SetPos(self.Entity:GetPos()+Vector(0,0,5))
- self.fireeffect:SetKeyValue( "effect_name", "env_fire_small")
- self.fireeffect:Fire("Start","", 0)
- self.fireeffect:Spawn()
- self.fireeffect:Activate()
- self.fireeffect:SetParent(self.Entity)
- self.smokeeffect = ents.Create("info_particle_system")
- self.smokeeffect:SetPos(self.Entity:GetPos()+Vector(0,0,15))
- self.smokeeffect:SetKeyValue( "effect_name", "env_fire_large_smoke")
- self.smokeeffect:Fire("Start","", 0)
- self.smokeeffect:Spawn()
- self.smokeeffect:Activate()
- self.smokeeffect:SetParent(self.Entity)
- timer.Simple(60, function() if !IsValid(self.Entity) then return end self.On = false print("off") self:StopParticle() end)
- end
- end
- if ( CLIENT ) then
- function ENT:BeingLookedAtByPlayer()
- if ( LocalPlayer():GetEyeTrace().Entity != self ) then return false end
- if ( EyePos():Distance( self:GetPos() ) > 130 ) then return false end
- return true
- end
- end
- function ENT:StopParticle()
- self.fireeffect:Fire("Stop","", 0)
- self.fireeffect:Fire("Kill","", 0.1)
- end
- function ENT:Think()
- if ( CLIENT && self:BeingLookedAtByPlayer() ) then
- //LocalPlayer():PrintMessage(HUD_PRINTCENTER, "Press E to Light on fire.")
- halo.Add( { self }, Color( 255, 100, 0, 255 ), 1, 1, 1, true, true )
- end
- if CLIENT && self.On == true then
- local firelight = DynamicLight( self:EntIndex() )
- if ( firelight ) then
- firelight.Pos = self:GetPos()
- firelight.r = 255
- firelight.g = 100
- firelight.b = 0
- firelight.Brightness = 6
- firelight.Size = 500
- firelight.Decay = 500
- firelight.DieTime = CurTime() + 0.25
- end
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement