Advertisement
scld

아널 월뱅

Nov 2nd, 2021
643
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.53 KB | None | 0 0
  1. --[[
  2.     EzHook apart of EzLibraries
  3.     by ToddDev
  4.     Gonna stop commenting as much
  5.     EzHook 뭐지 ㅋㅋ
  6. ]]--
  7. local EzHook = {}
  8. function EzHook:HookIndex(index,func,returnvalue)
  9.     assert(index~=nil,"EzHook:HookIndex() | Expected string as argument #1")
  10.     assert(func~=nil,"EzHook:HookIndex() | Expected function as argument #2")
  11.     assert(returnvalue~=nil,"EzHook:HookIndex() | Expected something as argument #3")
  12.     local GameMetatable = getrawmetatable(game)
  13.     setreadonly(GameMetatable,false)
  14.     local OldIndex = GameMetatable.__index
  15.     GameMetatable.__index = newcclosure(function(self,indexed)
  16.         if indexed == index then
  17.             func()
  18.             return returnvalue
  19.         end
  20.         return OldIndex(self,indexed)
  21.     end)
  22. end
  23. function EzHook:HookNewIndex(index,func,gothrough)
  24.     assert(index~=nil,"EzHook:HookNewIndex() | Expected string as argument #1")
  25.     assert(func~=nil,"EzHook:HookNewIndex() | Expected function as argument #2")
  26.     assert(gothrough~=nil,"EzHook:HookNewIndex() | Expected boolean as argument #3")
  27.     local GameMetatable = getrawmetatable(game)
  28.     setreadonly(GameMetatable,false)
  29.     local OldIndex = GameMetatable.__newindex
  30.     GameMetatable.__newindex = newcclosure(function(self,indexed,value)
  31.         if indexed == index then
  32.             func(value)
  33.             if gothrough == false then
  34.                 return
  35.             end
  36.         end
  37.         return OldIndex(self,indexed,value)
  38.     end)
  39. end
  40. function EzHook:HookNamecall(method,func,gothrough)
  41.     assert(method~=nil,"EzHook:HookNamecall() | Expected string as argument #1")
  42.     assert(func~=nil,"EzHook:HookNamecall() | Expected function as argument #2")
  43.     assert(gothrough~=nil,"EzHook:HookNamecall() | Expected boolean as argument #3")
  44.     local GameMetatable = getrawmetatable(game)
  45.     setreadonly(GameMetatable,false)
  46.     local OldIndex = GameMetatable.__namecall
  47.     GameMetatable.__namecall = newcclosure(function(self,...)
  48.         if getnamecallmethod() == method then
  49.             func(self,{...})
  50.             if gothrough == false then
  51.                 return
  52.             end
  53.         end
  54.         return OldIndex(self,...)
  55.     end)
  56. end
  57. function EzHook:HookFunction(funcname,func,gothrough)
  58.     assert(funcname~=nil,"EzHook:HookFunction() | Expected string as argument #1")
  59.     assert(func~=nil,"EzHook:HookFunction() | Expected function as argument #2")
  60.     assert(gothrough~=nil,"EzHook:HookFunction() | Expected boolean as argument #3")
  61.     local Exist = getgenv()[funcname] ~= nil and true or getrenv()[funcname] ~= nil and true or getfenv()[funcname] ~= nil and true
  62.     assert(Exist,"EzHook:HookFunction() | Expected valid function as argument #3")
  63.     if getgenv()[funcname] then
  64.         local OldFunction = getgenv()[funcname]
  65.         getgenv()[funcname] = function(...)
  66.             local args = {...}
  67.             func(args)
  68.             if gothrough then
  69.                 return OldFunction(...)
  70.             end
  71.         end
  72.     elseif getrenv()[funcname] then
  73.         local OldFunction = getrenv()[funcname]
  74.         getrenv()[funcname] = function(...)
  75.             local args = {...}
  76.             func(args)
  77.             if gothrough then
  78.                 return OldFunction(...)
  79.             end
  80.         end
  81.     else
  82.         local OldFunction = getfenv()[funcname]
  83.         getfenv()[funcname] = function(...)
  84.             local args = {...}
  85.             func(args)
  86.             if gothrough then
  87.                 return OldFunction(...)
  88.             end
  89.         end
  90.     end
  91. end
  92. return EzHook
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement