Files
wnsrc/gamemodes/darkrp/plugins/combinesuits/cl_plugin.lua
lifestorm 94063e4369 Upload
2024-08-04 22:55:00 +03:00

120 lines
4.2 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/
--]]
local math = math
local Vector = Vector
local ix = ix
local Color = Color
local ipairs = ipairs
local surface = surface
local net = net
local IsValid = IsValid
local netstream = netstream
local unpack = unpack
local red = Color(255, 0, 0, 255)
local blue = Color(0, 125, 255, 255)
function PLUGIN:RenderESPNames(bIsOTA)
local right = LocalPlayer():GetRight() * 25
local scrW, scrH = ScrW(), ScrH()
local marginX, marginY = scrH * .1, scrH * .1
for _, v in ipairs(self.names) do
local ply, teamColor, distance = v[1], (v[2] and red) or (v[3] and blue), math.sqrt(v[4])
local plyPos = ply:GetPos()
local min, max = ply:GetModelRenderBounds()
min = min + plyPos + right
max = max + plyPos + right
local barMin = Vector((min.x + max.x) / 2, (min.y + max.y) / 2, min.z):ToScreen()
local barMax = Vector((min.x + max.x) / 2, (min.y + max.y) / 2, max.z):ToScreen()
local eyePos = ply:EyePos():ToScreen()
local rightS = math.min(math.max(barMin.x, barMax.x), eyePos.x + 150)
local barWidth = math.Remap(math.Clamp(distance, 500, 1000), 500, 1000, 120, 75)
local barHeight = math.abs(barMax.y - barMin.y)
local barX, barY = math.Clamp(rightS, marginX, scrW - marginX - barWidth), math.Clamp(barMin.y - barHeight + 18, marginY, scrH - marginY)
local alpha = math.Remap(math.Clamp(distance, 500, 1000), 500, 1000, 255, 0)
if (bIsOTA and v[2]) then
local bArmor = ply:Armor() > 0
surface.SetDrawColor(40, 40, 40, 200 * alpha / 255)
surface.DrawRect(barX - 1, barY - 1, barWidth + 2, 5)
if (bArmor) then surface.DrawRect(barX - 1, barY + 9, barWidth + 2, 5) end
surface.SetDrawColor(teamColor.r * 1.6, teamColor.g * 1.6, teamColor.b * 1.6, alpha)
surface.DrawRect(barX, barY, barWidth * math.Clamp(ply:Health() / ply:GetMaxHealth(), 0, 1), 3)
if (bArmor) then
extraHeight = 10
surface.SetDrawColor(255, 255, 255, alpha)
surface.DrawRect(barX, barY + 10, barWidth * math.Clamp(ply:Armor() / 50, 0, 1), 3)
end
end
surface.SetFont("ixGenericFont")
local width, height = surface.GetTextSize(ply:Name())
surface.SetDrawColor(0, 0, 0, 175)
surface.DrawRect(barX - 5, barY - 13 - height / 2, width + 10, height + 2)
ix.util.DrawText(ply:Name(), barX, barY - 13, teamColor, TEXT_ALIGN_LEFT, TEXT_ALIGN_CENTER, "ixGenericFont", 255)
end
end
function PLUGIN:RenderESPAimpoints()
for _, v in ipairs(self.aimPoints) do
local x, y = v[1], v[2]
surface.SetDrawColor(red)
surface.DrawLine(x + 10, y, x - 10, y)
surface.DrawLine(x, y + 10, x, y - 10)
if (v[3]) then
surface.DrawOutlinedRect(x - 5, y - 5, 11, 11)
end
surface.SetFont("BudgetLabel")
surface.SetTextColor(red)
local width = surface.GetTextSize(v[4])
surface.SetTextPos(x - width / 2, y + 17)
surface.DrawText(v[4])
end
end
net.Receive("ixVisorNotify", function(len)
if (IsValid(ix.gui.visor)) then
ix.gui.visor:Open()
end
end)
netstream.Hook("CombineDisplayMessage", function(text, color, location, arguments, bObjective)
if (!LocalPlayer():HasActiveCombineMask() and !LocalPlayer():IsDispatch()) then
return
end
local client = LocalPlayer()
local character = client:GetCharacter()
if (IsValid(ix.gui.combine)) then
ix.gui.combine:AddLine(text, color, location, unpack(arguments))
end
if bObjective and character:IsCombine() then
vgui.Create("ixObjectiveUpdate")
end
end)
netstream.Hook("ImportantCombineDisplayMessage", function(text, color, location, arguments)
if (IsValid(ix.gui.combine)) then
ix.gui.combine:AddImportantLine(text, color, location, unpack(arguments))
end
end)