mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 05:43:46 +03:00
Upload
This commit is contained in:
151
lua/entities/lvs_vehicle_repair.lua
Normal file
151
lua/entities/lvs_vehicle_repair.lua
Normal file
@@ -0,0 +1,151 @@
|
||||
--[[
|
||||
| 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.PrintName = "Maintenance Station"
|
||||
ENT.Author = "Luna"
|
||||
ENT.Information = "Repairs Vehicles"
|
||||
ENT.Category = "[LVS]"
|
||||
|
||||
ENT.Spawnable = true
|
||||
ENT.AdminOnly = false
|
||||
|
||||
if SERVER then
|
||||
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()
|
||||
|
||||
return ent
|
||||
end
|
||||
|
||||
function ENT:OnTakeDamage( dmginfo )
|
||||
end
|
||||
|
||||
function ENT:Initialize()
|
||||
self:SetModel( "models/props_vehicles/generatortrailer01.mdl" )
|
||||
self:PhysicsInit( SOLID_VPHYSICS )
|
||||
self:DrawShadow( false )
|
||||
self:SetTrigger( true )
|
||||
self:SetCollisionGroup( COLLISION_GROUP_WORLD )
|
||||
end
|
||||
|
||||
function ENT:Refil( entity )
|
||||
if not IsValid( entity ) then return end
|
||||
|
||||
if not entity.LVS then return end
|
||||
|
||||
local Repaired = false
|
||||
|
||||
if entity:GetHP() ~= entity:GetMaxHP() then
|
||||
entity:SetHP( entity:GetMaxHP() )
|
||||
|
||||
Repaired = true
|
||||
end
|
||||
|
||||
for _, part in pairs( entity:GetChildren() ) do
|
||||
if part:GetClass() ~= "lvs_armor" then continue end
|
||||
|
||||
part:OnRepaired()
|
||||
|
||||
if part:GetHP() ~= part:GetMaxHP() then
|
||||
part:SetHP( part:GetMaxHP() )
|
||||
|
||||
if part:GetDestroyed() then part:SetDestroyed( false ) end
|
||||
|
||||
Repaired = true
|
||||
end
|
||||
end
|
||||
|
||||
if Repaired then
|
||||
entity:EmitSound("npc/dog/dog_servo2.wav")
|
||||
end
|
||||
|
||||
if entity:WeaponRestoreAmmo() then
|
||||
entity:EmitSound("items/ammo_pickup.wav")
|
||||
end
|
||||
|
||||
entity:OnMaintenance()
|
||||
end
|
||||
|
||||
function ENT:StartTouch( entity )
|
||||
self:Refil( entity )
|
||||
end
|
||||
|
||||
function ENT:EndTouch( entity )
|
||||
self:Refil( entity )
|
||||
end
|
||||
|
||||
function ENT:Touch( entity )
|
||||
end
|
||||
|
||||
function ENT:Think()
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
if CLIENT then
|
||||
local WhiteList = {
|
||||
["weapon_physgun"] = true,
|
||||
["weapon_physcannon"] = true,
|
||||
["gmod_tool"] = true,
|
||||
}
|
||||
|
||||
local mat = Material( "models/wireframe" )
|
||||
local FrameMat = Material( "lvs/3d2dmats/frame.png" )
|
||||
local RepairMat = Material( "lvs/3d2dmats/repair.png" )
|
||||
function ENT:Draw()
|
||||
local ply = LocalPlayer()
|
||||
local Small = false
|
||||
|
||||
if IsValid( ply ) and not IsValid( ply:lvsGetVehicle() ) then
|
||||
self:DrawModel()
|
||||
|
||||
Small = true
|
||||
|
||||
if GetConVarNumber( "cl_draweffectrings" ) == 0 then return end
|
||||
|
||||
local ply = LocalPlayer()
|
||||
local wep = ply:GetActiveWeapon()
|
||||
|
||||
if not IsValid( wep ) then return end
|
||||
|
||||
local weapon_name = wep:GetClass()
|
||||
|
||||
if not WhiteList[ weapon_name ] then
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local Pos = self:GetPos()
|
||||
|
||||
for i = 0, 180, 180 do
|
||||
cam.Start3D2D( self:LocalToWorld( Vector(0,0, self:OBBMins().z + 2 ) ), self:LocalToWorldAngles( Angle(i,90,0) ), 0.25 )
|
||||
surface.SetDrawColor( 255, 150, 0, 255 )
|
||||
|
||||
surface.SetMaterial( FrameMat )
|
||||
surface.DrawTexturedRect( -512, -512, 1024, 1024 )
|
||||
|
||||
surface.SetMaterial( RepairMat )
|
||||
if Small then
|
||||
surface.DrawTexturedRect( -256, 0, 512, 512 )
|
||||
else
|
||||
surface.DrawTexturedRect( -512, -512, 1024, 1024 )
|
||||
end
|
||||
cam.End3D2D()
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user