This commit is contained in:
lifestorm
2024-08-05 18:40:29 +03:00
parent c4d91bf369
commit 324f19217d
8040 changed files with 1853423 additions and 21 deletions

View File

@@ -0,0 +1,150 @@
--[[
| 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/
--]]
ENT.IconVehicleLocked = Material( "lvs/locked.png" )
LVS:AddHudEditor( "SeatSwitcher", ScrW() - 360, 10, 350, 30, 350, 30, "SEAT SWITCHER",
function( self, vehicle, X, Y, W, H, ScrX, ScrY, ply )
if not vehicle.LVSHudPaintSeatSwitcher then return end
vehicle:LVSHudPaintSeatSwitcher( X, Y, W, H, ScrX, ScrY, ply )
end
)
function ENT:LVSHudPaintSeatSwitcher( X, Y, w, h, ScrX, ScrY, ply )
local pSeats = self:GetPassengerSeats()
local SeatCount = table.Count( pSeats )
if SeatCount <= 0 then return end
pSeats[0] = self:GetDriverSeat()
draw.NoTexture()
local HasAI = self:GetAI()
local MySeat = ply:GetVehicle():GetNWInt( "pPodIndex", -1 )
local Passengers = {}
for _, player in pairs( player.GetAll() ) do
if player:lvsGetVehicle() == self then
local Pod = player:GetVehicle()
Passengers[ Pod:GetNWInt( "pPodIndex", -1 ) ] = player:GetName()
end
end
if HasAI then
Passengers[1] = "[AI] "..self.PrintName
for _, Pod in pairs( self:GetPassengerSeats() ) do
if IsValid( Pod:GetDriver() ) then continue end
local weapon = Pod:lvsGetWeapon()
if not IsValid( weapon ) then continue end
Passengers[ weapon:GetPodIndex() ] = "[AI] Gunner"
end
end
ply.SwitcherTime = ply.SwitcherTime or 0
ply._lvsoldPassengers = ply._lvsoldPassengers or {}
local Time = CurTime()
for k, v in pairs( Passengers ) do
if ply._lvsoldPassengers[k] ~= v then
ply._lvsoldPassengers[k] = v
ply.SwitcherTime = Time + 2
end
end
for k, v in pairs( ply._lvsoldPassengers ) do
if not Passengers[k] then
ply._lvsoldPassengers[k] = nil
ply.SwitcherTime = Time + 2
end
end
for _, v in pairs( LVS.pSwitchKeysInv ) do
if input.IsKeyDown(v) then
ply.SwitcherTime = Time + 2
end
end
local Hide = ply.SwitcherTime > Time
ply.smHider = ply.smHider and (ply.smHider + ((Hide and 1 or 0) - ply.smHider) * RealFrameTime() * 15) or 0
local Alpha1 = 135 + 110 * ply.smHider
local HiderOffset = 270 * ply.smHider
local xPos = w - 35
local yPos = Y - (SeatCount + 1) * 30 + h + 5
local SwapY = false
local SwapX = false
local xHider = HiderOffset
if X < (ScrX * 0.5 - w * 0.5) then
SwapX = true
xPos = 0
xHider = 0
end
if Y < (ScrY * 0.5 - h * 0.5) then
SwapY = true
yPos = Y - h
end
for _, Pod in pairs( pSeats ) do
if not IsValid( Pod ) then continue end
local I = Pod:GetNWInt( "pPodIndex", -1 )
if I <= 0 then continue end
if I == MySeat then
draw.RoundedBox(5, X + xPos - xHider, yPos + I * 30, 35 + HiderOffset, 25, Color(LVS.ThemeColor.r, LVS.ThemeColor.g, LVS.ThemeColor.b,100 + 50 * ply.smHider) )
else
draw.RoundedBox(5, X + xPos - xHider, yPos + I * 30, 35 + HiderOffset, 25, Color(0,0,0,100 + 50 * ply.smHider) )
end
if Hide then
if Passengers[I] then
draw.DrawText( Passengers[I], "LVS_FONT_SWITCHER", X + 40 + xPos - xHider, yPos + I * 30 + 2.5, Color( 255, 255, 255, Alpha1 ), TEXT_ALIGN_LEFT )
else
draw.DrawText( "-", "LVS_FONT_SWITCHER", X + 40 + xPos - xHider, yPos + I * 30 + 2.5, Color( 255, 255, 255, Alpha1 ), TEXT_ALIGN_LEFT )
end
draw.DrawText( "["..I.."]", "LVS_FONT_SWITCHER", X + 17 + xPos - xHider, yPos + I * 30 + 2.5, Color( 255, 255, 255, Alpha1 ), TEXT_ALIGN_CENTER )
else
if Passengers[I] then
draw.DrawText( "[^"..I.."]", "LVS_FONT_SWITCHER", X + 17 + xPos - xHider, yPos + I * 30 + 2.5, Color( 255, 255, 255, Alpha1 ), TEXT_ALIGN_CENTER )
else
draw.DrawText( "["..I.."]", "LVS_FONT_SWITCHER", X + 17 + xPos - xHider, yPos + I * 30 + 2.5, Color( 255, 255, 255, Alpha1 ), TEXT_ALIGN_CENTER )
end
end
if not self:GetlvsLockedStatus() then continue end
local xLocker = SwapX and 35 + HiderOffset or -25 - HiderOffset
if SwapY then
if I == 1 then
surface.SetDrawColor( 255, 255, 255, 255 )
surface.SetMaterial( self.IconVehicleLocked )
surface.DrawTexturedRect( X + xPos + xLocker, yPos + I * 30, 25, 25 )
end
else
if I == SeatCount then
surface.SetDrawColor( 255, 255, 255, 255 )
surface.SetMaterial( self.IconVehicleLocked )
surface.DrawTexturedRect( X + xPos + xLocker, yPos + I * 30, 25, 25 )
end
end
end
end