mirror of
https://github.com/lifestorm/wnsrc.git
synced 2026-02-04 20:23:47 +03:00
163 lines
3.8 KiB
Lua
163 lines
3.8 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
|
|
AddCSLuaFile()
|
|
|
|
ENT.Type = "anim"
|
|
|
|
ENT.Carried = nil
|
|
ENT.CarriedMass = 0
|
|
ENT.PrevThink = 0
|
|
ENT.TargetPos = Vector(0,0,0)
|
|
ENT.TargetAng = Angle(0,0,0)
|
|
ENT.Owner = nil
|
|
|
|
function ENT:Initialize()
|
|
if SERVER and IsValid(self.Carried) then
|
|
|
|
-- self:SetModel("models/weapons/w_bugbait.mdl")
|
|
self:SetModel(self.Carried:GetModel())
|
|
-- self:SetSkin(self.Carried:GetSkin())
|
|
-- self:SetColor(se.Carried:GetColor())
|
|
end
|
|
self:PhysicsInit( SOLID_VPHYSICS )
|
|
self:SetMoveType( MOVETYPE_VPHYSICS )
|
|
self:SetSolid( SOLID_VPHYSICS )
|
|
self:SetCollisionGroup(COLLISION_GROUP_NONE)
|
|
-- self:SetSolid(SOLID_NONE)
|
|
self:SetNoDraw(true)
|
|
|
|
-- self:SetHealth(9999)
|
|
|
|
|
|
|
|
-- local ply = self:GetOwner()
|
|
-- self.Owner = ply
|
|
-- if IsValid(ply) then
|
|
-- self.TargetPos = ply:GetShootPos() + (ply:GetAimVector() * 70)
|
|
-- self.TargetAng = ply:GetAimVector()
|
|
-- end
|
|
|
|
|
|
if SERVER and IsValid(self.Carried) then
|
|
|
|
local phys = self:GetPhysicsObject()
|
|
local carphys = self.Carried:GetPhysicsObject()
|
|
|
|
if IsValid(phys) and IsValid(carphys) then
|
|
phys:Wake()
|
|
carphys:Wake()
|
|
|
|
phys:SetMass(9999)
|
|
|
|
phys:SetDamping(0, 1000)
|
|
carphys:SetDamping(0, 1000)
|
|
|
|
-- if not carphys:IsPenetrating() then
|
|
-- phys:SetPos(carphys:GetPos())
|
|
-- phys:SetAngle(carphys:GetAngle())
|
|
-- carphys:SetPos( phys:GetPos() )
|
|
-- carphys:SetAngle( phys:GetAngle() )
|
|
-- end
|
|
|
|
end
|
|
|
|
self.Carried:SetGravity(false)
|
|
self.Carried:SetOwner(self:GetOwner())
|
|
-- self.Carried:SetNoDraw(true)
|
|
-- self.Carried:SetSolid(SOLID_NONE)
|
|
end
|
|
end
|
|
|
|
function ENT:OnRemove()
|
|
if IsValid(self.Carried) then
|
|
self.Carried:SetGravity(true)
|
|
self.Carried:SetOwner(nil)
|
|
-- self.Carried:SetNoDraw(false)
|
|
-- self.Carried:SetSolid(SOLID_VPHYSICS)
|
|
self.Carried:SetMoveType(MOVETYPE_VPHYSICS)
|
|
|
|
local carphys = self.Carried:GetPhysicsObject()
|
|
if IsValid(carphys) then
|
|
carphys:SetDamping(0,0)
|
|
end
|
|
|
|
self.Carried:PhysWake()
|
|
|
|
end
|
|
end
|
|
|
|
|
|
--function ENT:Think()
|
|
-- if CLIENT then return end
|
|
--
|
|
-- -- Check on all entities involved
|
|
--
|
|
-- local obj = self.Carried
|
|
-- local ply = self:GetOwner()
|
|
-- if not IsValid(obj) or not IsValid(ply) or not ply:Alive() then
|
|
-- self:Remove()
|
|
-- return
|
|
-- end
|
|
--
|
|
--
|
|
--
|
|
-- -- Check some other requirements
|
|
-- local spos = ply:GetShootPos()
|
|
-- if ply:GetGroundEntity() == obj or obj:NearestPoint(spos):Distance(spos) > 150 then
|
|
-- self:Remove()
|
|
-- return
|
|
-- end
|
|
--
|
|
--
|
|
-- self.TargetPos = spos + (ply:GetAimVector() * 70)
|
|
-- self.TargetAng = ply:GetAimVector()
|
|
--
|
|
-- local phys = self:GetPhysicsObject()
|
|
-- local carryphys = obj:GetPhysicsObject()
|
|
-- if IsValid(phys) and IsValid(carryphys) then
|
|
-- if phys:IsPenetrating() then
|
|
-- self:Remove()
|
|
-- return
|
|
---- self.TargetPos = phys:GetPos() + Vector(0,0,5)
|
|
---- phys:SetPos(self.TargetPos)
|
|
-- end
|
|
--
|
|
-- carryphys:SetPos(phys:GetPos())
|
|
-- carryphys:SetAngle(phys:GetAngles())
|
|
-- carryphys:SetVelocity(phys:GetVelocity())
|
|
-- end
|
|
--
|
|
--end
|
|
|
|
|
|
--function ENT:PhysicsSimulate(phys, delta)
|
|
-- phys:Wake()
|
|
--
|
|
-- local p = {}
|
|
-- p.pos = self.TargetPos
|
|
-- p.angle = self.TargetAng
|
|
-- p.secondstoarrive = 0.05
|
|
-- p.maxangular = 100
|
|
-- p.maxangulardamp = 10000
|
|
-- p.maxspeed = 100
|
|
-- p.maxspeeddamp = 1000
|
|
-- p.dampfactor = 0.8
|
|
-- p.teleportdistance = 0
|
|
-- p.deltatime = delta
|
|
--
|
|
-- phys:ComputeShadowControl(p)
|
|
--end
|
|
|
|
|
|
function ENT:OnTakeDamage(dmg)
|
|
-- do nothing
|
|
end |