mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 13:23:46 +03:00
140 lines
4.8 KiB
Lua
140 lines
4.8 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 util = util
|
|
local file = file
|
|
local table = table
|
|
local timer = timer
|
|
local ipairs = ipairs
|
|
local player = player
|
|
local CAMI = CAMI
|
|
local string = string
|
|
local ents = ents
|
|
local IsValid = IsValid
|
|
local ix = ix
|
|
|
|
local PLUGIN = PLUGIN
|
|
|
|
util.AddNetworkString("ixOpenURL")
|
|
util.AddNetworkString("ixPlayerInfo")
|
|
util.AddNetworkString("ixStaffList")
|
|
util.AddNetworkString("ixPlaySound")
|
|
|
|
function PLUGIN:InitializedPlugins()
|
|
if (!CHTTP) then return end
|
|
self.API_KEY = file.Read("gamemodes/helix/plugins/bastion/apikey_proxy.txt", "GAME")
|
|
if (self.API_KEY) then
|
|
self.API_KEY = string.gsub(self.API_KEY, "[^%w%-]", "")
|
|
end
|
|
self.DISCORD_WEBHOOK_ALTS = file.Read("gamemodes/helix/plugins/bastion/apiwebhook_disocrd.txt", "GAME")
|
|
end
|
|
|
|
function PLUGIN:InitializedConfig()
|
|
ix.config.Set("EdictWarningLimit", 1024)
|
|
end
|
|
|
|
ix.util.Include("modules/sv_banlist.lua")
|
|
ix.util.Include("modules/sv_antialt.lua")
|
|
ix.util.Include("modules/sv_netsizelog.lua")
|
|
--ix.util.Include("modules/sv_netmonitor.lua") --high performance impact!
|
|
|
|
ix.log.AddType("bastionCheckInfo", function(client, target)
|
|
return string.format("%s has checked %s's info.", client:GetName(), target:GetName())
|
|
end)
|
|
ix.log.AddType("bastionSetHealth", function(client, target)
|
|
return string.format("%s has set %s's health to %d.", client:GetName(), target:GetName(), target:Health())
|
|
end)
|
|
ix.log.AddType("bastionSetArmor", function(client, target)
|
|
return string.format("%s has set %s's armor to %d.", client:GetName(), target:GetName(), target:Armor())
|
|
end)
|
|
ix.log.AddType("bastionSetName", function(client, target, oldName)
|
|
return string.format("%s has set %s's name to %s.", client:GetName(), oldName, target:GetName())
|
|
end)
|
|
ix.log.AddType("bastionSetDesc", function(client, target)
|
|
return string.format("%s has set %s's description to %s.", client:GetName(), target:GetName(), target:GetDescription())
|
|
end)
|
|
ix.log.AddType("bastionSlay", function(client, target)
|
|
return string.format("%s has slayed %s.", client:GetName(), target:GetName())
|
|
end, FLAG_DANGER)
|
|
ix.log.AddType("bastionInvSearch", function(client, name)
|
|
return string.format("%s is admin-searching %s.", client:GetName(), name)
|
|
end)
|
|
ix.log.AddType("bastionInvClose", function(client, name)
|
|
return string.format("%s has closed %s.", client:GetName(), name)
|
|
end)
|
|
ix.log.AddType("netstreamHoneypot", function(client, hook, bNoAccess)
|
|
return string.format("[BANME] %s has just hit the %s HONEYPOT!!! Please ban SteamID: %s (trigger reason: %s)", client:SteamName(), hook, client:SteamID(), bNoAccess and "no access" or "invalid arg")
|
|
end, FLAG_DANGER)
|
|
ix.log.AddType("luaHack", function(client, name)
|
|
return string.format("[BANME] %s just tried to %s through lua-injection!!! Please ban SteamID: %s", client:SteamName(), name, client:SteamID())
|
|
end)
|
|
ix.log.AddType("bastionSamCommand", function(client, cmd, args)
|
|
return string.format("%s ran SAM command '%s' with arguments: '%s'", client:Name(), cmd, table.concat(args, "' '"))
|
|
end)
|
|
ix.log.AddType("samReportClaimed", function(client, reporter)
|
|
return string.format("%s claimed a report by %s (%s).", client:Name(), reporter:Name(), reporter:SteamName())
|
|
end)
|
|
|
|
timer.Create("ixBastionEdictCheck", 60, 0, function()
|
|
local edictsCount = ents.GetEdictCount()
|
|
local edictsLeft = 8192 - edictsCount
|
|
if (edictsLeft < ix.config.Get("EdictWarningLimit")) then
|
|
if (edictsLeft < 600) then
|
|
for _, v in ipairs(player.GetAll()) do
|
|
if (CAMI.PlayerHasAccess(v, "Helix - Basic Admin Commands")) then
|
|
v:NotifyLocalized("edictCritical", edictsLeft, edictsCount)
|
|
end
|
|
end
|
|
else
|
|
for _, v in ipairs(player.GetAll()) do
|
|
if (CAMI.PlayerHasAccess(v, "Helix - Basic Admin Commands")) then
|
|
v:NotifyLocalized("edictWarning", edictsLeft, edictsCount)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end)
|
|
|
|
function PLUGIN:Explode(target)
|
|
local explosive = ents.Create("env_explosion")
|
|
explosive:SetPos(target:GetPos())
|
|
explosive:SetOwner(target)
|
|
explosive:Spawn()
|
|
explosive:SetKeyValue("iMagnitude", "1")
|
|
explosive:Fire("Explode", 0, 0)
|
|
explosive:EmitSound("ambient/explosions/explode_4.wav", 500, 500)
|
|
|
|
target:StopParticles()
|
|
target:Kill()
|
|
end
|
|
|
|
function PLUGIN:OpenInventory(client, target)
|
|
if (!IsValid(client) or !IsValid(target)) then return end
|
|
if (!target:IsPlayer()) then return end
|
|
|
|
local character = target:GetCharacter()
|
|
if (!character) then return end
|
|
|
|
local inventory = character:GetInventory()
|
|
if (inventory) then
|
|
local name = target:Name().."'s inventory"
|
|
|
|
ix.storage.Open(client, inventory, {
|
|
entity = target,
|
|
name = name,
|
|
OnPlayerClose = function()
|
|
ix.log.Add(client, "bastionInvClose", name)
|
|
end
|
|
})
|
|
|
|
ix.log.Add(client, "bastionInvSearch", name)
|
|
end
|
|
end
|