Log readable names of hooked objects (#41)

This commit is contained in:
Azumgi 2019-01-21 13:07:57 +03:00 committed by GitHub
commit 2e7ca9c6c0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -86,6 +86,16 @@ local function can_rehook(mod, hook_data, obj, hook_type)
end
end
-- Search global table for an object that matches to get a readable string.
local function print_obj(obj)
for k, v in pairs(_G) do
if v == obj then
return k
end
end
return obj
end
-- ####################################################################################################################
-- ##### Hook Creation ################################################################################################
-- ####################################################################################################################
@ -193,7 +203,7 @@ local function create_hook(mod, orig, obj, method, handler, func_name, hook_type
else
unique_id = obj[method]
end
mod:info("(%s): Hooking '%s' from [%s] (Origin: %s) (UniqueID: %s)", func_name, method, obj, orig, unique_id)
mod:info("(%s): Hooking '%s' from [%s] (Origin: %s)", func_name, method, print_obj(obj), orig)
-- Check to make sure this mod hasn't hooked it before
local hook_data = _registry[mod][unique_id]
@ -218,8 +228,8 @@ local function create_hook(mod, orig, obj, method, handler, func_name, hook_type
hook_data.handler = handler
elseif mod:get_internal_data("allow_rehooking") then
-- If we can't rehook but rehooking is enabled, send a warning that something went wrong
mod:warning("(%s): Attempting to rehook active hook [%s] with different obj or hook_type.", func_name,
method)
mod:warning("(%s): Attempting to rehook active hook [%s] with different obj or hook_type.",
func_name, method)
else
mod:warning("(%s): Attempting to rehook active hook [%s].", func_name, method)
end
@ -281,7 +291,8 @@ local function generic_hook(mod, obj, method, handler, func_name)
-- Quick check to make sure the target exists
if not obj[method] then
mod:error("(%s): trying to hook function or method that doesn't exist: [%s.%s]", func_name, obj, method)
mod:error("(%s): trying to hook function or method that doesn't exist: [%s.%s]",
func_name, print_obj(obj), method)
return
end