Advertisement
DrawingJhon

Spoof Property

Dec 4th, 2022
471
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.15 KB | None | 0 0
  1. local spoofs = {}
  2. local intentNull = newproxy()
  3.  
  4. local function spoofproperty(obj, prop, val)
  5.     assert(typeof(obj) == "Instance", "spoofproperty argument 1 invalid type ("..typeof(obj)..", expected Instance)")
  6.     assert(type(prop) == "string", "spoofproperty argument 2 invalid type ("..typeof(obj)..", expected string)")
  7.  
  8.     if not pcall(function() return obj[prop] end) then
  9.         warn("spoofproperty: "..prop.." is not a valid property of "..obj:GetFullName())
  10.     end
  11.  
  12.     if val == nil then
  13.         val = intentNull
  14.     end
  15.  
  16.     local props = spoofs[obj]
  17.     if not props then
  18.         props = {}
  19.         spoofs[obj] = props
  20.     end
  21.  
  22.     props[prop] = val
  23. end
  24.  
  25. local function unspoofproperty(obj, prop)
  26.     local props = spoofs[obj]
  27.     if props then
  28.         props[prop] = nil
  29.     end
  30. end
  31.  
  32. local getproperty; getproperty = hookmetamethod(game, "__index", function(self, index)
  33.     local props = spoofs[self]
  34.     local val = props and props[index]
  35.  
  36.     if val ~= nil then
  37.         if val == intentNull then
  38.             return nil
  39.         end
  40.         return val
  41.     end
  42.    
  43.     return getproperty(self, index)
  44. end)
  45.  
  46. getfenv(0).spoofproperty = spoofproperty
  47. getfenv(0).unspoofproperty = unspoofproperty
  48. getfenv(0).getproperty = getproperty
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement