mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 05:43:46 +03:00
Upload
This commit is contained in:
104
gamemodes/helix/plugins/area/sh_plugin.lua
Normal file
104
gamemodes/helix/plugins/area/sh_plugin.lua
Normal file
@@ -0,0 +1,104 @@
|
||||
--[[
|
||||
| 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.name = "Areas"
|
||||
PLUGIN.author = "`impulse"
|
||||
PLUGIN.description = "Provides customizable area definitions."
|
||||
|
||||
ix.area = ix.area or {}
|
||||
ix.area.types = ix.area.types or {}
|
||||
ix.area.properties = ix.area.properties or {}
|
||||
ix.area.stored = ix.area.stored or {}
|
||||
|
||||
ix.config.Add("areaTickTime", 1, "How many seconds between each time a character's current area is calculated.",
|
||||
function(oldValue, newValue)
|
||||
if (SERVER) then
|
||||
timer.Remove("ixAreaThink")
|
||||
timer.Create("ixAreaThink", newValue, 0, function()
|
||||
PLUGIN:AreaThink()
|
||||
end)
|
||||
end
|
||||
end,
|
||||
{
|
||||
data = {min = 0.1, max = 4},
|
||||
category = "areas"
|
||||
}
|
||||
)
|
||||
|
||||
ix.option.Add("showAreaNotices", ix.type.bool, true, {
|
||||
category = "appearance",
|
||||
})
|
||||
|
||||
function ix.area.AddProperty(name, type, default, data)
|
||||
ix.area.properties[name] = {
|
||||
type = type,
|
||||
default = default
|
||||
}
|
||||
end
|
||||
|
||||
function ix.area.AddType(type, name)
|
||||
name = name or type
|
||||
|
||||
-- only store localized strings on the client
|
||||
ix.area.types[type] = CLIENT and name or true
|
||||
end
|
||||
|
||||
function PLUGIN:SetupAreaProperties()
|
||||
ix.area.AddType("area")
|
||||
|
||||
ix.area.AddProperty("color", ix.type.color, ix.config.Get("color"))
|
||||
ix.area.AddProperty("display", ix.type.bool, true)
|
||||
end
|
||||
|
||||
ix.util.Include("sv_plugin.lua")
|
||||
ix.util.Include("cl_plugin.lua")
|
||||
ix.util.Include("sv_hooks.lua")
|
||||
ix.util.Include("cl_hooks.lua")
|
||||
|
||||
-- return world center, local min, and local max from world start/end positions
|
||||
function PLUGIN:GetLocalAreaPosition(startPosition, endPosition)
|
||||
local center = LerpVector(0.5, startPosition, endPosition)
|
||||
local min = WorldToLocal(startPosition, angle_zero, center, angle_zero)
|
||||
local max = WorldToLocal(endPosition, angle_zero, center, angle_zero)
|
||||
|
||||
return center, min, max
|
||||
end
|
||||
|
||||
do
|
||||
local COMMAND = {}
|
||||
COMMAND.description = "@cmdAreaEdit"
|
||||
COMMAND.adminOnly = true
|
||||
|
||||
function COMMAND:OnRun(client)
|
||||
client:SetWepRaised(false)
|
||||
|
||||
net.Start("ixAreaEditStart")
|
||||
net.Send(client)
|
||||
end
|
||||
|
||||
ix.command.Add("AreaEdit", COMMAND)
|
||||
end
|
||||
|
||||
do
|
||||
local PLAYER = FindMetaTable("Player")
|
||||
|
||||
-- returns the current area the player is in, or the last valid one if the player is not in an area
|
||||
function PLAYER:GetArea()
|
||||
return self.ixArea
|
||||
end
|
||||
|
||||
-- returns true if the player is in any area, this does not use the last valid area like GetArea does
|
||||
function PLAYER:IsInArea()
|
||||
return self.ixInArea
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user