> ## 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.

# setscriptable

> Сохраняет scriptable override для Roblox property в scriptable override cache и возвращает previous scriptable state. Первый аргумент должен быть Instance object, второй аргумент должен быть string property name, а третий аргумент должен быть boolean. Если cache entry уже существует для того же instance reference и property name, cached scriptable value заменяется, а старая cached value возвращается. При cache miss property name разрешается через Roblox property metadata и Instance class descriptor. Если descriptor отсутствует, либо найденный field отсутствует или не является property entry, function возвращает nil. Когда property entry найдена, function читает scriptable state, сохраняет запрошенный boolean и property reference в scriptable override cache, затем возвращает previous scriptable state value. GameIndexHook и GameNewIndexHook позже используют этот cache, временно устанавливая property field scriptable flag для одного indexed read или write, а затем восстанавливая previous field flag.

<div className="real-function-page">
  ```lua theme={null}
  setscriptable(instance: Instance, property: string, value: boolean): boolean | nil
  ```

  ## Аргументы

  <ParamField path={"instance"} type={"Instance"} required>
    Instance object, используемый как часть scriptable override cache key.
  </ParamField>

  <ParamField path={"property"} type={"string"} required>
    Property name, разрешаемый через Roblox property metadata и Instance class descriptor при cache miss.
  </ParamField>

  <ParamField path={"value"} type={"boolean"} required>
    Scriptable override value для сохранения в scriptable override cache.
  </ParamField>

  ## Возвраты

  <ResponseField name={"previousState"} type={"boolean | nil"}>
    Previous cached scriptable value, previous scriptable state value, или nil, если property не удается разрешить в property entry.
  </ResponseField>

  ## Пример

  Temporarily change whether a property is scriptable, then restore the previous state when available.

  ```lua theme={null}
  local previous = setscriptable(workspace, "Name", true)
  print(previous)

  if previous ~= nil then
      setscriptable(workspace, "Name", previous)
  end
  ```
</div>
