Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local G_Backup = {}
- function deepCopy(tab)
- local had_tables = {}
- local function hadAlready(tab)
- for i,v in pairs(had_tables) do
- if v.val == tab then
- return true
- end
- end
- return false
- end
- local function useClone(tab)
- for i,v in pairs(had_tables) do
- if v.val == tab then
- return v.alt
- end
- end
- end
- local function setHad(val,alt)
- local v = {}
- v.val = val
- v.alt = alt
- had_tables[#had_tables+1] = v
- end
- local function d_copy(tab,n_tab)
- for i,v in pairs(tab) do
- if type(v) ~= "table" then
- n_tab[i] = v
- else
- if hadAlready(v) then
- n_tab[i] = useClone(v)
- else
- local next_tab = {}
- setHad(v,next_tab)
- n_tab[i] = d_copy(v,next_tab)
- end
- end
- end
- return n_tab
- end
- local next_tab = {}
- setHad(tab,next_tab[i])
- return d_copy(tab,next_tab)
- end
- _G.reset = function()
- _G = deepCopy(G_Backup)
- end
- G_Backup = deepCopy(_G)
Advertisement
Add Comment
Please, Sign In to add comment