Files
VnUtest/garrysmod/addons/lvs_base/lua/entities/lvs_fakehover_wheel.lua
2026-03-31 10:27:04 +03:00

123 lines
2.5 KiB
Lua

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