add sborka
This commit is contained in:
122
garrysmod/addons/lvs_base/lua/entities/lvs_fakehover_wheel.lua
Normal file
122
garrysmod/addons/lvs_base/lua/entities/lvs_fakehover_wheel.lua
Normal file
@@ -0,0 +1,122 @@
|
||||
AddCSLuaFile()
|
||||
|
||||
ENT.Type = "anim"
|
||||
|
||||
ENT.Spawnable = false
|
||||
ENT.AdminSpawnable = false
|
||||
ENT.DoNotDuplicate = true
|
||||
|
||||
ENT._lvsNoPhysgunInteraction = true
|
||||
|
||||
function ENT:SetupDataTables()
|
||||
self:NetworkVar( "Entity",0, "Base" )
|
||||
self:NetworkVar( "Float",0, "fxRadius" )
|
||||
end
|
||||
|
||||
if SERVER then
|
||||
function ENT:Initialize()
|
||||
self:SetModel( "models/props_vehicles/tire001c_car.mdl" )
|
||||
self:PhysicsInit( SOLID_VPHYSICS )
|
||||
self:SetMoveType( MOVETYPE_VPHYSICS )
|
||||
self:SetSolid( SOLID_VPHYSICS )
|
||||
self:DrawShadow( false )
|
||||
|
||||
self:AddEFlags( EFL_NO_PHYSCANNON_INTERACTION )
|
||||
|
||||
-- this is so vj npcs can still see us
|
||||
self:AddEFlags( EFL_DONTBLOCKLOS )
|
||||
|
||||
self:SetCollisionGroup( COLLISION_GROUP_PASSABLE_DOOR )
|
||||
end
|
||||
|
||||
function ENT:Define( data )
|
||||
self:SetfxRadius( data.radius )
|
||||
self:PhysicsInitSphere( data.radius, "gmod_silent" )
|
||||
|
||||
local VectorNull = Vector(0,0,0)
|
||||
|
||||
self:SetCollisionBounds( VectorNull, VectorNull )
|
||||
|
||||
local PhysObj = self:GetPhysicsObject()
|
||||
|
||||
if IsValid( PhysObj ) then
|
||||
PhysObj:EnableDrag( false )
|
||||
PhysObj:EnableMotion( false )
|
||||
PhysObj:SetMass( data.mass )
|
||||
PhysObj:SetBuoyancyRatio( data.buoyancyratio )
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:SetPhysics( enable )
|
||||
if enable then
|
||||
if self.PhysicsEnabled then return end
|
||||
|
||||
self:GetPhysicsObject():SetMaterial("jeeptire")
|
||||
self.PhysicsEnabled = true
|
||||
else
|
||||
if self.PhysicsEnabled == false then return end
|
||||
|
||||
self:GetPhysicsObject():SetMaterial("friction_00")
|
||||
self.PhysicsEnabled = false
|
||||
end
|
||||
end
|
||||
|
||||
function ENT:CheckPhysics()
|
||||
local base = self:GetBase()
|
||||
|
||||
if not IsValid( base ) then return end
|
||||
|
||||
if not base:GetEngineActive() then
|
||||
self:SetPhysics( true )
|
||||
|
||||
self:NextThink( CurTime() + 0.25 )
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
self:NextThink( CurTime() + 0.1 )
|
||||
|
||||
local Ang = base:GetAngles()
|
||||
local steer = math.abs( base:WorldToLocalAngles( Angle(Ang.p,base:GetSteerTo(),Ang.r) ).y )
|
||||
local move = base:GetMove()
|
||||
local speed = base:GetVelocity():LengthSqr()
|
||||
|
||||
local enable = (math.abs( move.x ) + math.abs( move.y )) < 0.001 and steer < 3 and speed < 600
|
||||
|
||||
self:SetPhysics( enable )
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
self:CheckPhysics()
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
function ENT:OnTakeDamage( dmginfo )
|
||||
if dmginfo:IsDamageType( DMG_BLAST ) then return end
|
||||
|
||||
local base = self:GetBase()
|
||||
|
||||
if not IsValid( base ) then return end
|
||||
|
||||
base:TakeDamageInfo( dmginfo )
|
||||
end
|
||||
|
||||
function ENT:UpdateTransmitState()
|
||||
return TRANSMIT_NEVER
|
||||
end
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
function ENT:Initialize()
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
end
|
||||
|
||||
function ENT:Draw()
|
||||
end
|
||||
|
||||
function ENT:OnRemove()
|
||||
end
|
||||
Reference in New Issue
Block a user