| Навигация по функциям | Описание |
|---|---|
gethiddenproperty | Читает Roblox property через reflection metadata, включая non-scriptable properties. Первый аргумент должен быть Instance object, а второй аргумент должен быть string property name. instance reference должен быть валидным. Если property descriptor отсутствует в Roblox property metadata, function возвращает только nil. Если descriptor существует, но не разрешается в property entry, она вызывает “Not a property”. Для reflection types Bool, Int, Float, Double, String, SystemAddress, SharedString и Vector3 function вызывает getter и возвращает value плюс boolean, равный !IsScriptable(). SystemAddress возвращает RemoteId.PeerId как integer. SharedString возвращает Content как string. Vector3 читает из instance primitive Size offset и вызывает “can’t get value”, если touch data отсутствует. Другие property types читаются через normal Lua field access после временной установки property scriptable flag в true; BinaryString временно обрабатывается как String для этого чтения. original scriptable flag и BinaryString type восстанавливаются перед возвратом. |
isscriptable | Проверяет scriptable flag для Roblox property у Instance. Function сначала возвращает cached scriptable value, если он есть для того же instance reference и property name. При cache miss property name разрешается через Roblox property metadata и Instance class descriptor. Если descriptor отсутствует, либо найденный field отсутствует или не является property entry, function возвращает nil. Когда property entry найдена, function читает scriptable state, сохраняет это значение в scriptable override cache для instance и property, затем возвращает boolean. Function не изменяет scriptable flag. |
sethiddenproperty | Sets a Roblox property with reflection metadata. The first argument must be Instance object, the second argument must be a string property name, and the third argument must be present. The instance reference must be valid. If the property descriptor is missing from Roblox property metadata, the function returns nil. If the descriptor exists but does not resolve to a property entry, it raises “Not a property”. Bool values use luaL_checkboolean. Int and SystemAddress values use integer type checking, with SystemAddress writing RemoteId.PeerId. Float and Double values use number type checking. String, SharedString, and BinaryString values use string type checking before calling the setter. For other property types, the function temporarily calls setscriptable(instance, property, true), assigns instance[property] = value with normal Lua field assignment, then restores the original scriptable state with setscriptable(instance, property, isScriptable). On successful writes, the return value is a boolean equal to !IsScriptable() from before the write. |
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. |
Reflection
Reflection
Помощники отражения для экземпляров и свойств.
Помощники отражения для экземпляров и свойств.