Part
Методы, вызываемые на элементах, которые возвращает entity.GetParts(). Userdata Part - это предварительно закэшированная читом проекция Roblox BasePart: она содержит world-space позу части, цвет, форму и предвычисл енный OBB, чтобы рендерить ESP без повторного обхода DataModel каждый frame.
BasePart InstanceМетоды на этой странице (GetPartPosition, GetPartSize и т.д.) существуют только на userdata который возвращает entity.GetParts(). Их нет на Roblox Instance userdata, который ты получаешь обходом game.Workspace. Проверено вживую:
local kid = game.Workspace:FindFirstChild("HumanoidRootPart")
print(type(kid.GetPartPosition)) -- prints: nil
Если у тебя в руках Workspace BasePart Instance - читай его обычные Roblox-свойства (inst.Position, inst.Size, inst.Color, inst.Transparency, inst.MeshId, inst.Address). Методы :GetPart* эксклюзивны для cache чита.
entity.GetParts() часто пустПроверено вживую: в чисто-UI сценах, в Studio-test окружении и хотя бы в одном реальном Roblox-плейсе который мы тестировали entity.GetPartsCount() возвращал 0. Кэш заполняется читом в режимах где part-level ESP имеет смысл; в остальных он остаётся пустым. Всегда защищай if parts and parts[1] then ... end или проверяй entity.GetPartsCount() перед итерацией.
| Методов | 13 |
| Живой вызов | Требует, чтобы entity.GetParts() вернул непустой массив. Все 13 имён методов существуют на metatable; их живые return-shape'ы документированы по авторитетной spec разработчика. |
| Требуемый event-контекст | для самих методов отсутствует - userdata Part валиден то лько в течение того tick кэша, который его породил |
| Побочные эффекты | отсутствуют - все 13 методов read-only |
Синтаксис вызова методов. Используй
:, а не.:parts[1]:GetPartPosition(). Вызов через.без передачиselfприводит кbad argument #1.
Время жизни кэша. Userdata
Part, возвращённыйentity.GetParts(), безопасно использовать только в пределах одного frame. Кэш частей чита перестраивается в отдельном потоке; хранение этих userdata-значений между frame-ами рано или поздно укажет на переиспользованные слоты. Всегда запрашивай свежий массив черезGetParts()в каждом callbackonPaintилиonUpdate.
Нужны cube corners на Workspace Instance? Используй
draw.GetPartCorners(inst)- проверено что принимает обычный RobloxBasePartInstance и возвращает 8 corner-userdata. Это workaround когда part-кэш чита пуст.