Files
VnUtest/garrysmod/addons/tfa_base/lua/tfa/modules/tfa_envcheck.lua
2026-03-31 10:27:04 +03:00

78 lines
2.7 KiB
Lua

local EmptyFunc = function() end
local debugInfoTbl = debug.getinfo(EmptyFunc)
local cv_do_check = CreateConVar("sv_tfa_envcheck", "1", {FCVAR_ARCHIVE, FCVAR_NOTIFY, FCVAR_REPLICATED}, "Enable environment sanity checks and warnings?")
local function checkEnv(plyIn)
if not cv_do_check:GetBool() then return end
local function printFunc(msg, ...)
msg = "[TFA Base] " .. msg
if chat and chat.AddText then
return chat.AddText(msg, ...)
end
return print(msg, ...)
end
if game.SinglePlayer() then
if CLIENT then
local found = false
for _, wepDefTable in ipairs(weapons.GetList()) do
if wepDefTable.Spawnable and weapons.IsBasedOn(wepDefTable.ClassName, "tfa_gun_base") then
found = true
break
end
end
if not found then
printFunc("Thank you for installing our weapons base! It appears that you have installed only the base itself, which does not include any weapons by default. Please install some weapons/packs that utilize TFA Base for full experience!")
end
end
local shortsrc = debugInfoTbl.short_src
if shortsrc:StartWith("addons") then -- legacy/unpacked addon
local addonRootFolder = shortsrc:GetPathFromFilename():Replace("lua/tfa/modules/", "")
if not file.Exists(addonRootFolder .. ".git", "GAME") then -- assume unpacked version by missing .git folder, which is ignored by gmad.exe
printFunc("You are using unpacked version of TFA Base.\nWe only provide support for Steam Workshop version.")
end
end
else
local activeGamemode = engine.ActiveGamemode()
local isRP = activeGamemode:find("rp")
or activeGamemode:find("roleplay")
or activeGamemode:find("serious")
if isRP and (SERVER or (IsValid(plyIn) and (plyIn:IsAdmin() or plyIn:IsSuperAdmin()))) then
print("You are running the base on DarkRP or DarkRP-derived gamemode. We can't guarantee that it will work correctly with any possible addons the server might have installed (especially the paid ones), so we don't provide support for RP gamemodes/servers. If you've encountered a conflict error with another addon, it's most likely that addon's fault. DO NOT CONTACT US ABOUT THAT!")
end
end
timer.Simple(0, function()
if not TFA.BASE_LOAD_COMPLETE or not TFA.SWEP_LOAD_COMPLETE then
printFunc("Some of the base's modules have failed to load. You are probably going over Lua files limit. Try disabling some addons until you stop getting this error.")
end
end)
end
if CLIENT then
hook.Add("HUDPaint", "TFA_CheckEnv", function()
local ply = LocalPlayer()
if not IsValid(ply) then return end
hook.Remove("HUDPaint", "TFA_CheckEnv")
checkEnv(ply)
end)
else
--resource.AddWorkshop("2840031720")
hook.Add("InitPostEntity", "TFA_CheckEnv", checkEnv)
end