Truco de diamantes para Epic Heroes: Eternal Dream

Epic Heroes: Eternal Dream

:unlock: Truco gratis · Libtool

¡Hola a todos! En este tema explicamos paso a paso cómo usar el menú de trucos que preparamos con Libtool para Epic Heroes: Eternal Dream. Puedes activar y desactivar las funciones del menú con un solo toque.

Enlace del juego: Google Play · Herramienta necesaria: Instalación de Libtool (MumuPlayer)

Sobre Epic Heroes: Eternal Dream

Epic Heroes: Eternal Dream es un RPG por turnos ambientado en un mundo de fantasía con gráficos pixelados, donde reúnes héroes y mejoras a tu equipo. Explora mazmorras, lucha contra enemigos poderosos y jefes, mejora tu equipo y descubre los secretos que esconde la oscuridad. Combinar héroes de distintas clases en la formación adecuada es la clave para superar los niveles más difíciles.

:movie_camera: Videotutorial

:hammer_and_wrench: ¿Cómo se hace?

  1. Instala MumuPlayer, JSHook y Libtool siguiendo la guía de instalación de Libtool.
  2. Abre el juego en el emulador y asegúrate de que Libtool esté funcionando.
  3. Copia el código de abajo y pégalo en la sección script de Libtool.
  4. Marca la función que quieras usar en el menú que se abre.

:keyboard: Código del truco

-- Generated by trgala Menu Designer
local win = UI.createWindow("visual_menu", "Epic Heroes Eternal Dream", { width = 472, height = 479 })
local w = win
Hook.toggle("visual_menu:control_1", false, function() end)
UI.checkbox(win, "control_1", "FREE PURCHASE", false, function(value)
Hook.toggle("visual_menu:control_1", value, function()
Hook.redirectDirect({declaring="UnityEngine.Purchasing.PurchaseService", name="PurchaseFailed", static=false, params={"UnityEngine.Purchasing.FailedOrder"}, returns="System.Void", genericArity=0, token=100663860, genericArgs={}, advanced=false}, {declaring="UnityEngine.Purchasing.PurchaseService", name="PurchaseSucceeded", static=false, params={"UnityEngine.Purchasing.PendingOrder"}, returns="System.Void", genericArity=0, token=100663857, genericArgs={}, advanced=false})
end)
end)
UI.setWidgetLayout(win, "control_1", { x = 8, y = 12, width = 190, height = 48 })
Hook.toggle("visual_menu:control_2", false, function() end)
UI.checkbox(win, "control_2", "DEVTOOL", false, function(value)
Hook.toggle("visual_menu:control_2", value, function()
local __method = {declaring="PopupCheat", name="Open", static=false, params={}, returns="Void", token=100666399, genericArity=0, genericArgs={}, advanced=false, allowNullThis=false}
local done = 0
local c = Class.fromName("PopupCheat")
if not c then return end
local objects = c:findObjectsFresh() or {}
if not objects[1] then print("Call Open failed: no live object") return end
for objectIndex, obj in ipairs(objects) do
for callIndex = 1, 1 do
local ok, values = pcall(function() return table.pack(Call.exact(__method, obj)) end)
if ok then
done = done + 1
for resultIndex = 1, values.n do
if values[resultIndex] ~= nil then
print("Open result " .. tostring(resultIndex) .. "=" .. tostring(values[resultIndex]))
end
end
else
print("Call Open failed: " .. tostring(values))
end
end
end
print("Call Open done=" .. tostring(done))
end)
end)
UI.setWidgetLayout(win, "control_2", { x = 8, y = 72, width = 190, height = 48 })
Hook.toggle("visual_menu:control_3", false, function() end)
UI.checkbox(win, "control_3", "GOD MODE", false, function(value)
Hook.toggle("visual_menu:control_3", value, function()
Hook.nop({declaring="HeroBehavior", name="OnDamageReceive", static=false, params={"WorldMessage.Damage"}, returns="System.Void", genericArity=0, token=100670421, genericArgs={}, advanced=false})
end)
end)
UI.setWidgetLayout(win, "control_3", { x = 8, y = 132, width = 190, height = 48 })
Hook.toggle("visual_menu:control_4", false, function() end)
UI.checkbox(win, "control_4", "DAMAGE", false, function(value)
Hook.toggle("visual_menu:control_4", value, function()
Hook.returnObject("HeroStats", "get_realDamage", ((function() local __obj = Instance.box("System.ValueTuple<System.Int32,System.Boolean>"); if not __obj then return nil end; __obj:setField("Item1", 999999999); __obj:setField("Item2", true); return __obj end)()), 0, {}, 100667262)
end)
end)
UI.setWidgetLayout(win, "control_4", { x = 8, y = 192, width = 190, height = 48 })
Hook.toggle("visual_menu:control_5", false, function() end)
UI.checkbox(win, "control_5", "CRITCAL HIT", false, function(value)
Hook.toggle("visual_menu:control_5", value, function()
do
Hook.returnBool("HeroStats", "get_criticalHit", true, 0, {}, 100667264)
end

do
Hook.returnInt("HeroStats", "RealCriticalDamage", 999999999, 1, {"Int32"}, 100667265)
end

end)
end)
UI.setWidgetLayout(win, "control_5", { x = 8, y = 252, width = 190, height = 48 })
Hook.toggle("visual_menu:control_6", false, function() end)
UI.checkbox(win, "control_6", "POWER", false, function(value)
Hook.toggle("visual_menu:control_6", value, function()
Hook.returnInt("HeroStats", "get_power", 99999999, 0, {}, 100667261)
end)
end)
UI.setWidgetLayout(win, "control_6", { x = 12, y = 312, width = 190, height = 48 })

Si tienes algún problema, escribe abajo y te ayudaremos.