Advertisement
DrawingJhon

Script in script

May 20th, 2020 (edited)
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.17 KB | None | 0 0
  1. local reals = setmetatable({}, {__mode = "k"})
  2. local proxies = setmetatable({}, {__mode = "v"})
  3. local mainEnv = getfenv(0)
  4. local scriptEnvs = {mainEnv}
  5. local customProperties = {}
  6.  
  7. function isInstance(obj)
  8. return pcall(game.isA, obj, "Instance")
  9. end
  10. function NLS(source, parent)
  11. return require(5576043691).NLS([==[owner = game:GetService("Players").LocalPlayer ]==]..source, parent)
  12. end
  13.  
  14. function proxyObj(obj)
  15. local real = reals[obj];
  16. if (real) then
  17. return real;
  18. end
  19. local proxy = proxies[obj];
  20. if (proxy) then
  21. return proxy;
  22. end
  23. local typ = type(obj);
  24. if (typ == "userdata") then
  25. local userdata = newproxy(true);
  26. local meta = getmetatable(userdata);
  27. if (isInstance(obj)) then
  28. local class = obj.ClassName;
  29. meta.__index = function(self, index)
  30. local customValue = (customProperties["onread:"..class..":"..index] or customProperties["onread:Instance:"..index]);
  31. if (customValue) then
  32. return proxyObj(customValue);
  33. else
  34. return proxyObj(obj[proxyObj(index)]);
  35. end
  36. end
  37. meta.__newindex = function(self, index, value)
  38. local onEdit = (customProperties["onedit:"..class..":"..index] or customProperties["onedit:Instance:"..index]);
  39. if (onEdit) then
  40. onEdit(obj, proxyObj(value));
  41. else
  42. obj[proxyObj(index)] = proxyObj(value);
  43. end
  44. end
  45. else
  46. meta.__index = function(self, index)
  47. return proxyObj(obj[proxyObj(index)]);
  48. end
  49. meta.__newindex = function(self, index, value)
  50. obj[proxyObj(index)] = proxyObj(value);
  51. end
  52. meta.__call = function(self, ...)
  53. return unpack(proxyObj{obj(unpack(proxyObj{...}))});
  54. end
  55. end
  56. meta.__tostring = function()
  57. return tostring(obj);
  58. end
  59. meta.__concat = function(v1, v2)
  60. return proxyObj(proxyObj(v1) .. proxyObj(v2));
  61. end
  62. meta.__add = function(v1, v2)
  63. return proxyObj(proxyObj(v1) + proxyObj(v2));
  64. end
  65. meta.__sub = function(v1, v2)
  66. return proxyObj(proxyObj(v1) - proxyObj(v2));
  67. end
  68. meta.__mul = function(v1, v2)
  69. return proxyObj(proxyObj(v1) * proxyObj(v2));
  70. end
  71. meta.__div = function(v1, v2)
  72. return proxyObj(proxyObj(v1) / proxyObj(v2));
  73. end
  74. meta.__mod = function(v1, v2)
  75. return proxyObj(proxyObj(v1) % proxyObj(v2));
  76. end
  77. meta.__pow = function(v1, v2)
  78. return proxyObj(proxyObj(v1) ^ proxyObj(v2));
  79. end
  80. meta.__unm = function()
  81. return proxyObj(-obj)
  82. end
  83. meta.__eq = function(v1, v2)
  84. return proxyObj(proxyObj(v1) == proxyObj(v2));
  85. end
  86. meta.__lt = function(v1, v2)
  87. return proxyObj(proxyObj(v1) < proxyObj(v2));
  88. end
  89. meta.__le = function(v1, v2)
  90. return proxyObj(proxyObj(v1) <= proxyObj(v2));
  91. end
  92. meta.__len = function()
  93. return proxyObj(#obj);
  94. end
  95. meta.__metatable = getmetatable(obj);
  96. reals[userdata], proxies[obj] = obj, userdata;
  97. return userdata;
  98. elseif (typ == "function") then
  99. local function func(...)
  100. if true then
  101. return unpack(proxyObj{obj(unpack(proxyObj{...}))});
  102. end
  103. end
  104. reals[func], proxies[obj] = obj, func;
  105. return func;
  106. elseif (typ == "table") then
  107. local tab = {};
  108. for k, v in next, obj do
  109. rawset(tab, proxyObj(k), proxyObj(v));
  110. end
  111. if (getmetatable(obj)) then
  112. local meta = {};
  113. meta.__index = function(self, index)
  114. return proxyObj(obj[proxyObj(index)]);
  115. end
  116. meta.__newindex = function(self, index, value)
  117. obj[proxyObj(index)] = proxyObj(value);
  118. end
  119. meta.__call = function(self, ...)
  120. return unpack(proxyObj{obj(unpack(proxyObj{...}))});
  121. end
  122. meta.__tostring = function()
  123. return tostring(obj);
  124. end
  125. meta.__concat = function(v1, v2)
  126. return proxyObj(proxyObj(v1) .. proxyObj(v2));
  127. end
  128. meta.__add = function(v1, v2)
  129. return proxyObj(proxyObj(v1) + proxyObj(v2));
  130. end
  131. meta.__sub = function(v1, v2)
  132. return proxyObj(proxyObj(v1) - proxyObj(v2));
  133. end
  134. meta.__mul = function(v1, v2)
  135. return proxyObj(proxyObj(v1) * proxyObj(v2));
  136. end
  137. meta.__div = function(v1, v2)
  138. return proxyObj(proxyObj(v1) / proxyObj(v2));
  139. end
  140. meta.__mod = function(v1, v2)
  141. return proxyObj(proxyObj(v1) % proxyObj(v2));
  142. end
  143. meta.__pow = function(v1, v2)
  144. return proxyObj(proxyObj(v1) ^ proxyObj(v2));
  145. end
  146. meta.__unm = function()
  147. return proxyObj(-obj)
  148. end
  149. meta.__eq = function(v1, v2)
  150. return proxyObj(proxyObj(v1) == proxyObj(v2));
  151. end
  152. meta.__lt = function(v1, v2)
  153. return proxyObj(proxyObj(v1) < proxyObj(v2));
  154. end
  155. meta.__le = function(v1, v2)
  156. return proxyObj(proxyObj(v1) <= proxyObj(v2));
  157. end
  158. meta.__len = function()
  159. return proxyObj(#obj);
  160. end
  161. meta.__metatable = "The metatable is locked (from ox-side)";
  162. setmetatable(tab, meta);
  163. end
  164. return tab;
  165. else
  166. return obj;
  167. end
  168. end
  169.  
  170. local load = loadstring(game:GetService("HttpService"):GetAsync("https://pastebin.com/raw/FXB3NXAW"))
  171. setfenv(load, setmetatable({owner = proxyObj(game.Players.JhonXD2006)}, {
  172. __index = function(self, index)
  173. if false then error("Script ended") end
  174. local lib = mainEnv[index]
  175. if proxies[lib] then
  176. return proxies[lib]
  177. elseif lib then
  178. return proxyObj(lib)
  179. end
  180. end,
  181. __metatable = "The metatable is locked"
  182. }))
  183. load()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement