mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 05:43:46 +03:00
Upload
This commit is contained in:
101
gamemodes/ixhl2rp/plugins/waypoints/cl_hooks.lua
Normal file
101
gamemodes/ixhl2rp/plugins/waypoints/cl_hooks.lua
Normal file
@@ -0,0 +1,101 @@
|
||||
--[[
|
||||
| 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
|
||||
|
||||
PLUGIN.waypoints = {}
|
||||
|
||||
function PLUGIN:HUDPaint()
|
||||
if (!hook.Run("CanPlayerSeeWaypoints", LocalPlayer())) then
|
||||
return
|
||||
end
|
||||
|
||||
local height = draw.GetFontHeight("BudgetLabel")
|
||||
local clientPos = LocalPlayer():EyePos()
|
||||
|
||||
for index, waypoint in pairs(self.waypoints) do
|
||||
if (waypoint.time < CurTime()) then
|
||||
self.waypoints[index] = nil
|
||||
|
||||
continue
|
||||
end
|
||||
|
||||
local screenPos = waypoint.pos:ToScreen()
|
||||
local color = waypoint.color
|
||||
local text = waypoint.text
|
||||
local x, y = screenPos.x, screenPos.y
|
||||
|
||||
surface.SetDrawColor(color)
|
||||
|
||||
surface.SetMaterial(ix.util.GetMaterial("willardnetworks/waypoint1.png"))
|
||||
surface.DrawTexturedRectRotated(x, y, 50, 50, CurTime() * -150)
|
||||
surface.SetMaterial(ix.util.GetMaterial("willardnetworks/waypoint2.png"))
|
||||
surface.DrawTexturedRectRotated(x, y, 50, 50, CurTime() * 150)
|
||||
surface.SetMaterial(ix.util.GetMaterial("willardnetworks/waypoint3.png"))
|
||||
surface.DrawTexturedRectRotated(x, y, 50, 50, CurTime() * -150)
|
||||
surface.SetMaterial(ix.util.GetMaterial("willardnetworks/waypoint4.png"))
|
||||
surface.DrawTexturedRectRotated(x, y, 50, 50, CurTime() * 150)
|
||||
|
||||
surface.SetFont("BudgetLabel")
|
||||
surface.SetTextColor(color)
|
||||
|
||||
local width = surface.GetTextSize(text)
|
||||
|
||||
surface.SetTextPos(x - width / 2, y - 30 - height)
|
||||
surface.DrawText(text)
|
||||
|
||||
if (!waypoint.noDistance) then
|
||||
local distanceText = tostring(math.Round(clientPos:Distance(waypoint.pos) * 0.01905, 2)) .. "m"
|
||||
|
||||
width = surface.GetTextSize(distanceText)
|
||||
surface.SetTextPos(x - width / 2, y + 30)
|
||||
surface.DrawText(distanceText)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
net.Receive("SetupWaypoints", function()
|
||||
local bWaypoints = net.ReadBool()
|
||||
if (!bWaypoints) then
|
||||
PLUGIN.waypoints = {}
|
||||
return
|
||||
end
|
||||
|
||||
local data = net.ReadTable()
|
||||
for index, waypoint in pairs(data) do
|
||||
local text = waypoint.text
|
||||
-- check for any phrases and replace the text
|
||||
if (text:sub(1, 1) == "@") then
|
||||
waypoint.text = ":: " .. L(text:sub(2), waypoint.arguments and unpack(waypoint.arguments) or nil) .. " ::"
|
||||
else
|
||||
waypoint.text = ":: " .. text .. " ::"
|
||||
end
|
||||
|
||||
data[index] = waypoint
|
||||
end
|
||||
|
||||
PLUGIN.waypoints = data
|
||||
end)
|
||||
|
||||
net.Receive("UpdateWaypoint", function()
|
||||
local data = net.ReadTable()
|
||||
if (data[2] != nil) then
|
||||
local text = data[2].text
|
||||
-- check for any phrases and replace the text
|
||||
if (text:sub(1, 1) == "@") then
|
||||
data[2].text = ":: " .. L(text:sub(2), data[2].arguments and unpack(data[2].arguments) or nil) .. " ::"
|
||||
else
|
||||
data[2].text = ":: " .. text .. " ::"
|
||||
end
|
||||
end
|
||||
|
||||
PLUGIN.waypoints[data[1]] = data[2]
|
||||
end)
|
||||
Reference in New Issue
Block a user