Проблема решена. Фикс от рубата
помог. Кому надо вот:
local ENABLE_FIX = true -- Установите в true, чтобы включить фикс
local ENABLE_LOGGING = false -- Установите в true, чтобы включить логирование вызовов
local logFileName = "debug_getregistry_log.txt"
local metas = {}
local function appendToLogFile(text)
if not ENABLE_LOGGING then return end
if not file.Exists("debug_logs", "DATA") then
file.CreateDir("debug_logs")
end
file.Append("debug_logs/" .. logFileName, text .. "\n")
end
local function logCallStack()
local logText = os.date("%Y-%m-%d %H:%M:%S") .. " - debug.getregistry вызовы стека:\n"
for level = 3, 10 do
local info = debug.getinfo(level, "Sl")
if not info then break end
local source = info.short_src or info.source
local currentLine = " Уровень " .. level .. ": " .. source .. ", строка " .. (info.currentline or "N/A")
logText = logText .. currentLine .. "\n"
end
appendToLogFile(logText)
end
if ENABLE_FIX then
local original_debug_getregistry = debug.getregistry
local original_FindMetaTable = FindMetaTable
local meta = {}
function meta.__index(self, key)
return original_FindMetaTable(key)
end
function meta.__newindex(self, key, value)
metas[key] = value
end
debug.getregistry = function()
logCallStack()
local tbl = {}
setmetatable(tbl, meta)
return tbl
end
FindMetaTable = function(name)
local f = original_FindMetaTable(name)
if f then return f end
return metas[name]
end
end
print("Переопределение debug.getregistry и FindMetaTable " .. (ENABLE_FIX and "включено" or "выключено"))
print("Логирование вызовов " .. (ENABLE_LOGGING and "включено" or "выключено") .. " в " .. logFileName)