Mono:Lua:mono invoke method

From Cheat Engine
Jump to navigation Jump to search

function mono_invoke_method(domain, method, instanseAddress, args): mono_readObject()??




Function Parameters[edit]

Parameter Type Description
domain string The namespace of the method
methodId integer The method's id
instanseAddress integer The address of instanse
args table The arguments

Examples[edit]

function my_mono_invoke_method(domain, method, args)  --make it easier to call

  local c=mono_method_getClass(method)
  local instance = mono_class_findInstancesOfClassListOnly(domain,c)
  instance = instance[1]
  
  local params = mono_method_get_parameters(method)
  if #args ~= #params.parameters then
    print('ERROR:my_mono_invoke_method : wrong length of args')
    return
  end
  
  local i
  local args_t={}
  for i=1, #params.parameters do
    args_t[i] = {}
    args_t[i].type = monoTypeToVartypeLookup[params.parameters[i].type]
	args_t[i].value = args[i]
  end
  
  if method==nil or method==0 then
    print('ERROR:my_mono_invoke_method : method==0')
	return
  end
  
  if instance==nil or instance==0 then
    print('ERROR:my_mono_invoke_method : instance==0')
	return   
  end

  local r=mono_invoke_method(domain, method, instance, args_t)
  return r
end

local methodId = mono_findMethod('', 'PlayerStatsManager', 'TakeDamage')  --find target method
my_mono_invoke_method('',methodId,{100.0})