<?xml version="1.0" encoding="utf-8"?>
<CheatTable UsesMono="1" CheatEngineTableVersion="52">
  <CheatEntries>
    <CheatEntry NoCheckbox="1">
      <ID>1337263245</ID>
      <Description>"Es necesario tener Cheat Engine actualizado a una version 7.5 o superior"</Description>
      <Color>804000</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337263246</ID>
      <Description>"y ejecutarlo como Administrador para que la tabla funcione correctamente."</Description>
      <Color>804000</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337263247</ID>
      <Description>"------------------------------------------------------------------------------"</Description>
      <Color>FF0080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337263259</ID>
      <Description>"You need to have Cheat Engine updated to version 7.5 or higher"</Description>
      <Color>804000</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337263260</ID>
      <Description>"and run it as Administrator for the table to function correctly."</Description>
      <Color>804000</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337263261</ID>
      <Description>"------------------------------------------------------------------------------"</Description>
      <Color>FF0080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337263248</ID>
      <Description>"TABLA CREADA POR ALBERTO47"</Description>
      <Color>FF0080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry NoCheckbox="1">
      <ID>1337263249</ID>
      <Description>"------------------------------------------------------------------------------"</Description>
      <Color>800080</Color>
      <GroupHeader>1</GroupHeader>
    </CheatEntry>
    <CheatEntry>
      <ID>20</ID>
      <Description>"F2 - Activar proceso (Activar y esperar 3 segundos para pulsar F3) - Activate process"</Description>
      <Options moHideChildren="1"/>
      <Color>0000FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>[ENABLE]
{$lua}
local process = 'Echo Weaver.exe'
OpenProcess(process)
	if process ~= process or (readInteger(process) == nil) then
		error(ShowMessage("No se encuentra el proceso"))
	else
		mono_initialize()
        LaunchMonoDataCollector()
	end


--Set Window Title
local title = "Echo Weaver 1.0.0.52 - Alberto47"
if not((MainForm.Caption):match("Echo Weaver")) then
MainForm.Caption = title..' ~ '..MainForm.Caption
end
{$asm}

[DISABLE]

</AssemblerScript>
      <Hotkeys>
        <Hotkey>
          <Action>Toggle Activation</Action>
          <Keys>
            <Key>113</Key>
          </Keys>
          <Description>F1 - Activar proceso</Description>
          <ID>0</ID>
          <ActivateSound>Activate</ActivateSound>
          <DeactivateSound>Deactivate</DeactivateSound>
        </Hotkey>
      </Hotkeys>
    </CheatEntry>
    <CheatEntry>
      <ID>18</ID>
      <Description>"F3 - Activar punteros  - Activate pointers"</Description>
      <Options moHideChildren="1"/>
      <Color>0000FF</Color>
      <VariableType>Auto Assembler Script</VariableType>
      <AssemblerScript>{ Game   : Carpenter.exe / Echo Weaver.exe
  Description: Script unificado - Punteros p_principal, p_god_mode y p_time
}

[ENABLE]

{ --- 1. SCRIPT DE INYECCIÓN DE CÓDIGO (PRINCIPAL) --- }
aobscanfunction(principal,PlayerController:Update,0F B6 86 40 03 00 00 85 C0 0F 85 ** ** ** ** 48 85 F6)
alloc(memoria_principal,$1000,principal)
alloc(p_principal,8)

label(codigo_principal)
label(return_principal)

memoria_principal:
  mov [p_principal],rsi

codigo_principal:
  movzx eax,byte ptr [rsi+00000340]
  jmp return_principal

principal:
  jmp memoria_principal
  nop 2
return_principal:
registersymbol(principal)
registersymbol(p_principal)


{ --- 2 Y 3. SCRIPTS DE LUA UNIFICADOS (GOD MODE Y TIME/INITIALIZED) --- }
{$lua}
  if syntaxcheck then return end

  -------------------------------------------------------------
  -- GESTIÓN DE p_god_mode (DebugOverlay.GodModeEnabled)
  -------------------------------------------------------------
  local memPtr_god = allocateMemory(8)
  if memPtr_god and memPtr_god ~= 0 then
      writeQword(memPtr_god, 0)
      registerSymbol('p_god_mode', memPtr_god, true)

      local address_god = getAddress("DebugOverlay.GodModeEnabled")
      if address_god and address_god ~= 0 then
          writeQword(memPtr_god, address_god)
          print(string.format("¡[p_god_mode] actualizado con éxito en: %X!", address_god))
      else
          local class_god = mono_findClass("", "DebugOverlay")
          if class_god then
              print("Aviso: Clase DebugOverlay encontrada, pero GodModeEnabled requiere activación previa.")
          else
              print("Aviso: Clase DebugOverlay no inicializada todavía.")
          end
      end
      globalAllocPtr_god = memPtr_god
  end

  -------------------------------------------------------------
  -- GESTIÓN DE p_time (GameManager.Initialized)
  -------------------------------------------------------------
  local memPtr_time = allocateMemory(8)
  if memPtr_time and memPtr_time ~= 0 then
      writeQword(memPtr_time, 0)
      registerSymbol('p_time', memPtr_time, true)

      local address_time = getAddress("GameManager.Initialized")
      if address_time and address_time ~= 0 then
          writeQword(memPtr_time, address_time)
          print(string.format("¡[p_time] actualizado con éxito en: %X!", address_time))
      else
          local class_time = mono_findClass("", "GameManager")
          if class_time then
              print("Aviso: Clase GameManager encontrada, pero Initialized requiere activación previa.")
          else
              print("Aviso: Clase GameManager no inicializada todavía.")
          end
      end
      globalAllocPtr_time = memPtr_time
  end
{$asm}

[DISABLE]

{ --- DESACTIVACIÓN DEL SCRIPT PRINCIPAL --- }
principal:
  db 0F B6 86 40 03 00 00

unregistersymbol(principal)
unregistersymbol(p_principal)
dealloc(memoria_principal)
dealloc(p_principal)

{ --- DESACTIVACIÓN DE LOS PUNTEROS LUA --- }
{$lua}
  pcall(function()
      unregisterSymbol('p_god_mode')
  end)
  if globalAllocPtr_god and globalAllocPtr_god ~= 0 then
      deAlloc(globalAllocPtr_god)
      globalAllocPtr_god = nil
  end

  pcall(function()
      unregisterSymbol('p_time')
  end)
  if globalAllocPtr_time and globalAllocPtr_time ~= 0 then
      deAlloc(globalAllocPtr_time)
      globalAllocPtr_time = nil
  end

  print("Script unificado desactivado y recursos liberados correctamente.")
{$asm}

</AssemblerScript>
      <Hotkeys>
        <Hotkey>
          <Action>Toggle Activation</Action>
          <Keys>
            <Key>114</Key>
          </Keys>
          <ID>0</ID>
          <ActivateSound>Activate</ActivateSound>
          <DeactivateSound>Deactivate</DeactivateSound>
        </Hotkey>
      </Hotkeys>
      <CheatEntries>
        <CheatEntry NoCheckbox="1">
          <ID>1337263265</ID>
          <Description>"------------------------------------------------------------------------------"</Description>
          <Color>FF0080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263266</ID>
          <Description>"       HotKeys"</Description>
          <Color>804000</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263267</ID>
          <Description>"------------------------------------------------------------------------------"</Description>
          <Color>FF0080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry ValueOnActivate="1" ValueOnDeactivate="0">
          <ID>9</ID>
          <Description>"F4 Modo Dios / God Mode"</Description>
          <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:No
1:Si/Yes
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>4080FF</Color>
          <VariableType>Byte</VariableType>
          <Address>[p_god_mode]</Address>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>115</Key>
              </Keys>
              <ID>0</ID>
              <ActivateSound TTS="EN">God mode Activated</ActivateSound>
              <DeactivateSound TTS="EN">Gos Mode Deactivated</DeactivateSound>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry ValueOnActivate="1" ValueOnDeactivate="0">
          <ID>10</ID>
          <Description>"F5 Matar de un golpe / One Hit Kill"</Description>
          <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">0:No
1:Si/Yes
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>0080FF</Color>
          <VariableType>Byte</VariableType>
          <Address>[p_god_mode]+1</Address>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>116</Key>
              </Keys>
              <ID>0</ID>
              <ActivateSound TTS="EN">One Hit Kill Activated</ActivateSound>
              <DeactivateSound TTS="EN">One Hit Kill Deactivated</DeactivateSound>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry ValueOnActivate="1000" RestoreOnDeactivate="1">
          <ID>17</ID>
          <Description>"F6 Salto ilimitado / Unlimited jump"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>4080FF</Color>
          <VariableType>4 Bytes</VariableType>
          <Address>[p_principal]+410</Address>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>117</Key>
              </Keys>
              <ID>0</ID>
              <ActivateSound TTS="EN">Unlimited jump Activated</ActivateSound>
              <DeactivateSound TTS="EN">Unlimited jump Deactivated</DeactivateSound>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263262</ID>
          <Description>"------------------------------------------------------------------------------"</Description>
          <Color>FF0080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263263</ID>
          <Description>"       Opciones del personaje / Character options"</Description>
          <Color>804000</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263264</ID>
          <Description>"------------------------------------------------------------------------------"</Description>
          <Color>FF0080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry>
          <ID>0</ID>
          <Description>"Vida"</Description>
          <ShowAsSigned>0</ShowAsSigned>
          <VariableType>4 Bytes</VariableType>
          <Address>[p_principal]+464</Address>
        </CheatEntry>
        <CheatEntry>
          <ID>13</ID>
          <Description>"Altura de Salto"</Description>
          <VariableType>Float</VariableType>
          <Address>[p_principal]+20</Address>
          <Offsets>
            <Offset>8C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>14</ID>
          <Description>"Altura de salto en pared"</Description>
          <VariableType>Float</VariableType>
          <Address>[p_principal]+20</Address>
          <Offsets>
            <Offset>108</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>15</ID>
          <Description>"Distancia del salto en pared"</Description>
          <VariableType>Float</VariableType>
          <Address>[p_principal]+20</Address>
          <Offsets>
            <Offset>10C</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry>
          <ID>16</ID>
          <Description>"Tiempo de Dash"</Description>
          <VariableType>Float</VariableType>
          <Address>[p_principal]+20</Address>
          <Offsets>
            <Offset>148</Offset>
          </Offsets>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263268</ID>
          <Description>"------------------------------------------------------------------------------"</Description>
          <Color>FF0080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263269</ID>
          <Description>"       Tiempo / Time"</Description>
          <Color>804000</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263271</ID>
          <Description>"   Cuando el tiempo no disminuye no se puede entrar en el menu o el mapa."</Description>
          <Color>804000</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263272</ID>
          <Description>"   When time does not decrease, you cannot access the menu or the map."</Description>
          <Color>804000</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry NoCheckbox="1">
          <ID>1337263273</ID>
          <Description>"------------------------------------------------------------------------------"</Description>
          <Color>FF0080</Color>
          <GroupHeader>1</GroupHeader>
        </CheatEntry>
        <CheatEntry ValueOnActivate="0" RestoreOnDeactivate="1">
          <ID>12</ID>
          <Description>"F7 El tiempo no disminuye / Time no decrease"</Description>
          <DropDownList ReadOnly="1" DescriptionOnly="1" DisplayValueAsItem="1">1:Desactivado/Deactivated
0:Activado/Activated
</DropDownList>
          <ShowAsSigned>0</ShowAsSigned>
          <Color>FF00FF</Color>
          <VariableType>Byte</VariableType>
          <Address>[p_time]+2</Address>
          <Hotkeys>
            <Hotkey>
              <Action>Toggle Activation</Action>
              <Keys>
                <Key>118</Key>
              </Keys>
              <ID>0</ID>
              <ActivateSound TTS="EN">stop time Activated</ActivateSound>
              <DeactivateSound TTS="EN">stop time Deactivated</DeactivateSound>
            </Hotkey>
          </Hotkeys>
        </CheatEntry>
      </CheatEntries>
    </CheatEntry>
  </CheatEntries>
  <UserdefinedSymbols/>
  <LuaScript>function cycleFullCompact(sender,force) local state = not(compactmenuitem.Caption == 'Compact View Mode'); if force~=nil then state = not force end; compactmenuitem.Caption = state and 'Compact View Mode' or 'Full View Mode'; getMainForm().Splitter1.Visible = state; getMainForm().Panel5.Visible    = state; end; function addCompactMenu() if compactmenualreadyexists then return end; local parent = getMainForm().Menu.Items; compactmenuitem = createMenuItem(parent); parent.add(compactmenuitem); compactmenuitem.Caption = 'Compact View Mode'; compactmenuitem.OnClick = cycleFullCompact; compactmenualreadyexists = 'yes'; end; addCompactMenu(); cycleFullCompact(nil,true)

function setTheme(c, cb, cap) local mf=getMainForm(); local al=getAddressList(); mf.Color=c; mf.Foundlist3.Color=c; al.Control[0].BackgroundColor=c; AddressList.CheckboxColor=cb; themeMenu.Caption='Theme: '..cap; end; function addThemeMenu() if thememenuexists then return end; local m=getMainForm().Menu.Items; themeMenu=createMenuItem(m); m.add(themeMenu); themeMenu.Caption='Theme'; local function addSub(n,f) local s=createMenuItem(themeMenu); s.Caption=n; s.OnClick=f; themeMenu.add(s) end; addSub('Dark Mode', function() setTheme(0x000000, 0x0000FF, 'Dark') end); addSub('Light Mode', function() setTheme(0xFFFFFF, 0x000000, 'Light') end); addSub('Default', function() setTheme(clDefault, clDefault, 'Default') end); thememenuexists='yes' end; addThemeMenu();




</LuaScript>
</CheatTable>
