> ## Documentation Index
> Fetch the complete documentation index at: https://docs.projectreal.gg/llms.txt
> Use this file to discover all available pages before exploring further.

# restorefunction

> Restaura o reemplaza una function llamando internamente a function hook operation y no devuelve values. El first argument debe ser una function. Con un solo function argument, la function busca the saved original function; si no existe entry, genera "Function is not hooked". Luego llama a function hook operation con la hooked closure y la stored original closure, limpia el Lua stack y elimina la restored closure de hook records cuando se usó la stored original. Si el second argument también es una function, la function trata firstFunction como la original function que se instalará y secondFunction como la closure que se parcheará. En esa forma, no se realiza ningun missing-original check contra el valor almacenado en hook records; el valor almacenado solo se compara durante el final remove check. Los non-function second arguments son ignorados por la branch condition. restorefunc y restoreclosure son aliases de la misma function.

<div className="real-function-page">
  ```lua theme={null}
  restorefunction(firstFunction: function, secondFunction?: function)
  ```

  ## Alias

  * `restorefunc`
  * `restoreclosure`

  ## Argumentos

  <ParamField path={"firstFunction"} type={"function"} required>
    Con un argument, la hooked closure que se restaura desde hook records. Con un function second argument, la function que se instala en secondFunction.
  </ParamField>

  <ParamField path={"secondFunction"} type={"function"}>
    Closure opcional que se parchea con firstFunction. Este branch solo se usa cuando el second argument es una function.
  </ParamField>

  ## Ejemplo

  Restore a hooked closure to its original function.

  ```lua theme={null}
  local function target()
      return "original"
  end

  hookfunction(target, function()
      return "hooked"
  end)

  print(target())

  restorefunction(target)

  print(target())
  ```
</div>
