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

192 lines
6.5 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 PLUGIN = PLUGIN
function PLUGIN:ShouldDrawCrosshair()
if (LocalPlayer():GetNetVar("InfestationEditMode")) then
return true
end
end
local gradient = ix.util.GetMaterial("gui/center_gradient")
local entityMat = CreateMaterial("GA0249aSFJ3","VertexLitGeneric",{
["$basetexture"] = "models/debug/debugwhite",
["$model"] = 1,
["$translucent"] = 1,
["$alpha"] = 1,
["$nocull"] = 1,
["$ignorez"] = 1
})
function PLUGIN:HUDPaint()
local client = LocalPlayer()
local infestationMode = client:GetNetVar("InfestationEditMode")
if (!infestationMode) then return end
local width = ScrW()
surface.SetDrawColor(25, 25, 25, 255)
surface.SetMaterial(gradient)
if (infestationMode == 0) then
surface.DrawTexturedRect(0, 30, width, 170)
draw.SimpleText(L("menuMainTitle"), "ixMediumFont", width * 0.5, 50, ix.config.Get("color"), TEXT_ALIGN_CENTER)
draw.SimpleText(L("menuMainEdit"), "ixMonoMediumFont", width * 0.5, 90, Color(255, 175, 0, 255), TEXT_ALIGN_CENTER)
draw.SimpleText(L("menuMainCreate"), "ixMonoMediumFont", width * 0.5, 120, Color(255, 175, 0, 255), TEXT_ALIGN_CENTER)
draw.SimpleText(L("menuMainExit"), "ixMonoMediumFont", width * 0.5, 150, Color(255, 175, 0, 255), TEXT_ALIGN_CENTER)
cam.Start3D()
for _, entity in pairs(ents.FindByClass("ix_infestation_prop")) do
local clientPos = client:EyePos()
local targetPos = entity:GetPos()
local distance = clientPos:Distance(targetPos)
if (!entity:GetInfestation()) then continue end -- I'm sorry for the mess, but I'm not taking any chances.
if (!ix.infestation.stored[entity:GetInfestation()]) then continue end
if (!ix.infestation.stored[entity:GetInfestation()].type) then continue end
if (!ix.infestation.types[ix.infestation.stored[entity:GetInfestation()].type]) then continue end
if (!ix.infestation.types[ix.infestation.stored[entity:GetInfestation()].type].color) then continue end
local color = ix.infestation.types[ix.infestation.stored[entity:GetInfestation()].type].color
render.SuppressEngineLighting(true)
if (entity:GetCore()) then
render.SetColorModulation(255 / 255, 0 / 255, 0 / 255)
else
render.SetColorModulation(color.r / 255, color.g / 255, color.b / 255)
end
if (ix.option.Get("cheapBlur", false)) then
render.SetBlend(1)
else
render.SetBlend(math.Remap(math.Clamp(distance, 200, 4000), 200, 8000, 0.05, 1))
end
render.MaterialOverride(entityMat)
entity:DrawModel()
render.MaterialOverride()
render.SuppressEngineLighting(false)
end
cam.End3D()
elseif (infestationMode == 1) then
surface.DrawTexturedRect(0, 30, width, 200)
draw.SimpleText(L("menuCreateTitle"), "ixMediumFont", width * 0.5, 50, ix.config.Get("color"), TEXT_ALIGN_CENTER)
draw.SimpleText(L("menuCreateNotice"), "ixMonoMediumFont", width * 0.5, 90, Color(255, 175, 0, 255), TEXT_ALIGN_CENTER)
draw.SimpleText(L("menuCreateSave"), "ixMonoMediumFont", width * 0.5, 120, Color(255, 175, 0, 255), TEXT_ALIGN_CENTER)
draw.SimpleText(L("menuCreateCore"), "ixMonoMediumFont", width * 0.5, 150, Color(255, 175, 0, 255), TEXT_ALIGN_CENTER)
draw.SimpleText(L("menuCreateExit"), "ixMonoMediumFont", width * 0.5, 180, Color(255, 175, 0, 255), TEXT_ALIGN_CENTER)
cam.Start3D()
for _, entity in pairs(ents.FindByClass("prop_physics")) do
if (!entity:GetNetVar("infestationProp") or entity:GetNetVar("infestationProp") != client:SteamID()) then continue end
local clientPos = client:EyePos()
local targetPos = entity:GetPos()
local distance = clientPos:Distance(targetPos)
render.SuppressEngineLighting(true)
if (entity:GetNetVar("infestationCore")) then
render.SetColorModulation(255 / 255, 0 / 255, 0 / 255)
else
render.SetColorModulation(255 / 255, 175 / 255, 0 / 255)
end
if (ix.option.Get("cheapBlur", false)) then
render.SetBlend(1)
else
render.SetBlend(math.Remap(math.Clamp(distance, 200, 4000), 200, 8000, 0.05, 1))
end
render.MaterialOverride(entityMat)
entity:DrawModel()
render.MaterialOverride()
render.SuppressEngineLighting(false)
end
cam.End3D()
elseif (infestationMode == 2) then
surface.DrawTexturedRect(0, 30, width, 140)
draw.SimpleText(L("menuEditTitle"), "ixMediumFont", width * 0.5, 50, ix.config.Get("color"), TEXT_ALIGN_CENTER)
draw.SimpleText(L("menuEditRemove"), "ixMonoMediumFont", width * 0.5, 90, Color(255, 175, 0, 255), TEXT_ALIGN_CENTER)
draw.SimpleText(L("menuEditExit"), "ixMonoMediumFont", width * 0.5, 120, Color(255, 175, 0, 255), TEXT_ALIGN_CENTER)
cam.Start3D()
for _, entity in pairs(ents.FindByClass("ix_infestation_prop")) do
if (entity:GetInfestation() != client:GetNetVar("InfestationEditName")) then continue end
local clientPos = client:EyePos()
local targetPos = entity:GetPos()
local distance = clientPos:Distance(targetPos)
render.SuppressEngineLighting(true)
if (entity:GetCore()) then
render.SetColorModulation(255 / 255, 0 / 255, 0 / 255)
else
render.SetColorModulation(255 / 255, 175 / 255, 0 / 255)
end
if (ix.option.Get("cheapBlur", false)) then
render.SetBlend(1)
else
render.SetBlend(math.Remap(math.Clamp(distance, 200, 4000), 200, 8000, 0.05, 1))
end
render.MaterialOverride(entityMat)
entity:DrawModel()
render.MaterialOverride()
render.SuppressEngineLighting(false)
end
for name, data in pairs(ix.infestation.stored) do
if (name == client:GetNetVar("InfestationEditName")) then
for index, entityData in ipairs(data.entities) do
if (index > data.spreadProgress) then
local clientPos = client:EyePos()
local targetPos = entityData.position
local distance = clientPos:Distance(targetPos)
render.SuppressEngineLighting(true)
render.SetColorModulation(255 / 255, 255 / 255, 255 / 255)
if (ix.option.Get("cheapBlur", false)) then
render.SetBlend(1)
else
render.SetBlend(math.Remap(math.Clamp(distance, 200, 4000), 200, 8000, 0.05, 1))
end
render.MaterialOverride(entityMat)
render.Model({model = entityData.model, pos = entityData.position, angle = entityData.angles})
render.MaterialOverride()
render.SuppressEngineLighting(false)
end
end
end
end
cam.End3D()
end
end