add sborka

This commit is contained in:
2026-03-31 10:27:04 +03:00
commit f5e5f56c84
2345 changed files with 382127 additions and 0 deletions

View File

@@ -0,0 +1,161 @@
AddCSLuaFile()
ENT.Type = "anim"
ENT.PrintName = "Spike Strip"
ENT.Author = "Luna"
ENT.Information = "Pops Tires"
ENT.Category = "[LVS]"
ENT.Spawnable = true
ENT.AdminOnly = false
ENT.RenderGroup = RENDERGROUP_BOTH
ENT.PhysicsSounds = true
if SERVER then
function ENT:SetAttacker( ent ) self._attacker = ent end
function ENT:GetAttacker() return self._attacker or self end
function ENT:SpawnFunction( ply, tr, ClassName )
if not tr.Hit then return end
local ent = ents.Create( ClassName )
ent:SetPos( tr.HitPos + tr.HitNormal )
ent:Spawn()
ent:Activate()
ent:SetAttacker( ply )
return ent
end
function ENT:OnTakeDamage( dmginfo )
end
function ENT:Initialize()
self:SetModel( "models/diggercars/shared/spikestrip_static.mdl" )
self:PhysicsInit( SOLID_VPHYSICS )
self:SetTrigger( true )
self:SetCollisionGroup( COLLISION_GROUP_WEAPON )
self:AddEFlags( EFL_NO_PHYSCANNON_INTERACTION )
end
function ENT:UpdateFold()
end
function ENT:Think()
local PhysObj = self:GetPhysicsObject()
if IsValid( PhysObj ) and PhysObj:IsMotionEnabled() then
if PhysObj:IsAsleep() then
PhysObj:EnableMotion( false )
end
end
self:UpdateFold()
self:NextThink( CurTime() )
return true
end
function ENT:Use( ply )
end
function ENT:OnRemove()
end
function ENT:PhysicsCollide( data, physobj )
end
function ENT:StartTouch( entity )
end
function ENT:EndTouch( entity )
end
function ENT:Touch( entity )
if not IsValid( entity ) or entity:GetClass() ~= "lvs_wheeldrive_wheel" then return end
local Destroy = entity:GetVelocity():Length() > 200
if not Destroy then
for i = 1,3 do
local L = self:LookupAttachment( "l"..i )
local R = self:LookupAttachment( "r"..i )
local attL = self:GetAttachment( L )
local attR = self:GetAttachment( R )
if not attL or not attR then continue end
local trace = util.TraceLine( {
start = attL.Pos,
endpos = attR.Pos,
filter = entity,
whitelist = true,
} )
if trace.Hit then
Destroy = true
break
end
end
end
if not Destroy then return end
local T = CurTime()
if (entity._LastSpikeStripPop or 0) > T then return end
entity._LastSpikeStripPop = T + 2
local dmginfo = DamageInfo()
dmginfo:SetDamage( entity:GetHP() )
dmginfo:SetAttacker( self:GetAttacker() )
dmginfo:SetDamageType( DMG_PREVENT_PHYSICS_FORCE )
entity:TakeDamageInfo( dmginfo )
local base = entity:GetBase()
if not IsValid( base ) then return end
local PhysObj = base:GetPhysicsObject()
if not IsValid( PhysObj ) then return end
PhysObj:ApplyTorqueCenter( Vector(0,0, PhysObj:GetVelocity():Length() * 100 * (PhysObj:GetAngleVelocity().z > 0 and 1 or -1) ) )
end
return
end
function ENT:Think()
end
function ENT:Draw( flags )
self:DrawModel( flags )
end
local spritemat = Material( "sprites/light_glow02_add" )
local spritecolor = Color( 255, 93, 0, 255)
function ENT:DrawTranslucent( flags )
self:DrawModel( flags )
local size1 = 16 * (math.abs( math.cos( CurTime() * 4 ) ) ^ 10)
local size2 = 16 * (math.abs( math.sin( CurTime() * 4 ) ) ^ 10)
render.SetMaterial( spritemat )
render.DrawSprite( self:LocalToWorld( Vector(8,-116.5,10) ), size1, size1, spritecolor )
render.DrawSprite( self:LocalToWorld( Vector(-7,-116.5,10) ), size2, size2, spritecolor )
render.DrawSprite( self:LocalToWorld( Vector(8,118,10) ), size2, size2, spritecolor )
render.DrawSprite( self:LocalToWorld( Vector(-7,118,10) ), size1, size1, spritecolor )
end
function ENT:OnRemove()
end