60 lines
2.0 KiB
Lua
60 lines
2.0 KiB
Lua
include("shared.lua")
|
|
|
|
local DrawData = {}
|
|
local KeypadCheckerHalos
|
|
|
|
net.Receive("DarkRP_keypadData", function(len)
|
|
DrawData = net.ReadTable()
|
|
hook.Add("PreDrawHalos", "KeypadCheckerHalos", KeypadCheckerHalos)
|
|
end)
|
|
|
|
local lineMat = Material("cable/chain")
|
|
local textCol = Color(0, 0, 0, 120)
|
|
local haloCol = Color(0, 255, 0, 255)
|
|
|
|
function SWEP:DrawHUD()
|
|
local screenCenter = ScrH() / 2
|
|
draw.WordBox(2, 10, screenCenter, DarkRP.getPhrase("keypad_checker_shoot_keypad"), "UiBold", textCol, color_white)
|
|
draw.WordBox(2, 10, screenCenter + 20, DarkRP.getPhrase("keypad_checker_shoot_entity"), "UiBold", textCol, color_white)
|
|
draw.WordBox(2, 10, screenCenter + 40, DarkRP.getPhrase("keypad_checker_click_to_clear"), "UiBold", textCol, color_white)
|
|
|
|
local eyePos = EyePos()
|
|
local eyeAngles = EyeAngles()
|
|
|
|
local entMessages = {}
|
|
for k,v in ipairs(DrawData or {}) do
|
|
if not IsValid(v.ent) or not IsValid(v.original) then continue end
|
|
entMessages[v.ent] = (entMessages[v.ent] or 0) + 1
|
|
local obbCenter = v.ent:OBBCenter()
|
|
local pos = v.ent:LocalToWorld(obbCenter):ToScreen()
|
|
|
|
local name = v.name and ": " .. v.name:gsub("onDown", DarkRP.getPhrase("keypad_on")):gsub("onUp", DarkRP.getPhrase("keypad_off")) or ""
|
|
|
|
draw.WordBox(2, pos.x, pos.y + entMessages[v.ent] * 16, (v.delay and v.delay .. " " .. DarkRP.getPhrase("seconds") .. " " or "") .. v.type .. name, "UiBold", textCol, color_white)
|
|
|
|
cam.Start3D(eyePos, eyeAngles)
|
|
render.SetMaterial(lineMat)
|
|
render.DrawBeam(v.original:GetPos(), v.ent:GetPos(), 2, 0.01, 20, haloCol)
|
|
cam.End3D()
|
|
end
|
|
end
|
|
|
|
KeypadCheckerHalos = function()
|
|
local drawEnts = {}
|
|
local i = 1
|
|
for k,v in ipairs(DrawData) do
|
|
if not IsValid(v.ent) then continue end
|
|
|
|
drawEnts[i] = v.ent
|
|
i = i + 1
|
|
end
|
|
|
|
if table.IsEmpty(drawEnts) then return end
|
|
halo.Add(drawEnts, haloCol, 5, 5, 5, nil, true)
|
|
end
|
|
|
|
function SWEP:SecondaryAttack()
|
|
DrawData = {}
|
|
hook.Remove("PreDrawHalos", "KeypadCheckerHalos")
|
|
end
|