Перейти к основному содержимому

game

Точка входа в Roblox DataModel плюс несколько cheat-side хелперов (FFlag-доступ, silent aim, player whitelist). 5 канонических функций плюс маленький набор pre-resolved полей.

Функций5 (15 с алиасами)
Проверено вживую3 из 5 (SetFFlag и SilentAim частично: задокументированы из dump, не выполнены ради безопасности)
Требуемый eventнет
Сайд-эффектыSetFFlag мутирует client FFlag, SilentAim целится (и может выстрелить), PlayerWhitelist добавляет имя в friendly-список

Алиасы. Три формы у каждой: game.GetService / getService / get_service. См. Обзор / Конвенция именования.

Dot syntax, не двоеточие. game.GetService("Players") работает, game:GetService("Players") падает потому что game это Lua-table proxy, а не Roblox Instance userdata.

Краткий справочник

ФункцияСигнатураЗаметкаСтатус
GetService(name: string) → userdata | nilполучить Roblox-сервис по ClassName, возвращает nil для unknown / не-string args (кроме nil который raise'ит)проверено
GetFFlag(name: string, type: string) → value | nilпрочитать Roblox FFlag, type должен быть 'int', 'bool', 'float' или 'double'проверено
SetFFlag(name: string, value, type: string)записать Roblox FFlag, тот же список типов что у GetFFlagчастично
SilentAim(x: number, y: number)прицелиться в screen-позицию, способна вызвать выстрелчастично
PlayerWhitelist(name: string)добавить player username в friendly-список читапроверено

Поля game.*

Проверено вживую:

ПолеТипЗаметка
game.Workspaceuserdata (Roblox Workspace)всегда доступен, ClassName=Workspace
game.Playersuserdata (Roblox Players)всегда доступен, ClassName=Players
game.LocalPlayeruserdata (Roblox Player)всегда доступен, ClassName=Player
game.CameraPositionVector3живая позиция камеры, например (1884.64, 211.28, 3625.01)
game.Lightingnilпрямой game.Lighting равен nil в этом билде, используй game.GetService("Lighting")

⚠️ Другие Roblox-сервисы вроде Stats, MarketplaceService, RunService и т.д. не pre-resolved как game.<Name>. Всегда используй game.GetService(name).


GetService

game.GetService(name: string) → userdata | nil

Возвращает Roblox-сервис Instance чей ClassName равен name. Возвращает nil для unknown service-имён, пустой строки или не-string аргументов. Передача nil raise'ит ошибку.

Проверено вживую, сервисы которые вернули userdata:

Players, Lighting, Workspace, HttpService, RunService, TeleportService, TextService, GamepadService, UserInputService, ReplicatedStorage, StarterGui, StarterPack, Stats, MarketplaceService.

Проверено вживую, вернули nil:

ServerStorage (только server-side, не экспортирован клиенту).

Error-кейсы:

  • GetService('NotARealService123')nil
  • GetService('')nil
  • GetService(123)nil
  • GetService(nil) raise'ит "bad argument #1 to '?' (string expected, got no value)"
local players = game.GetService("Players")
local lighting = game.GetService("Lighting")
local http = game.GetService("HttpService")

GetFFlag

game.GetFFlag(name: string, type: string) → value | nil

Читает Roblox FFlag (FastFlag) по имени. Аргумент type говорит функции как декодировать underlying value.

Проверенные валидные type-строки: 'int', 'bool', 'float', 'double'.

Любой другой type raise'ит "Invalid FFlag type specified: '<type>'. Use 'int', 'bool', 'float', or 'double'.". Отсутствующий name или type raise'ит стандартный "bad argument #N (string expected, got no value)".

Если FFlag с указанным именем отсутствует в этом Roblox-клиенте, вызов возвращает nil (без ошибки). В нашем verify-прогоне популярные имена вроде DebugDisplayFPS, TaskSchedulerTargetFps, EnableQuickGameLaunch все вернули nil. Roblox держит внутреннюю flag-таблицу и экспортирует только subset имён в cheat-sandbox.

local fps_cap = game.GetFFlag("TaskSchedulerTargetFps", "int")
if fps_cap then
print(string.format("Roblox FPS cap = %d", fps_cap))
else
print("flag не экспортирован в этом билде")
end
Это не крашер несмотря на старые доки

Пара game.GetFFlag/SetFFlag считалась native-крашером в старой community-памяти, но проверена безопасной в билде version-390ba09e7e944154. См. Триггеры крашей / Развенчанные мифы.


SetFFlag

game.SetFFlag(name: string, value, type: string)

Записывает значение в Roblox FFlag. Аргумент type использует тот же набор строк что у GetFFlag ('int', 'bool', 'float', 'double'). Value интерпретируется в этом типе.

Статус: частично. Сигнатура задокументирована из dump и GetFFlag-аналог полностью проверен. Мы не вызывали SetFFlag в verify-прогоне потому что мутирование client FFlag меняет Roblox runtime behavior способами которые сложно откатить без рестарта Roblox.

game.SetFFlag("DebugDisplayFPS", true, "bool")
Сайд-эффект

Плохая FFlag-запись может изменить Roblox internal behavior (rendering, networking, animation). Восстанови предыдущее значение или перезапусти Roblox если экспериментируешь с этим.


SilentAim

game.SilentAim(x: number, y: number)

Говорит cheat-aim-системе указать на данную screen-space (x, y). Используется в triggerbot / silent-aim реализациях.

Статус: частично. Сигнатура задокументирована из dump. Не вызывалась в verify-прогоне потому что в зависимости от game mode и aim-конфигурации это может выстрелить с текущего оружия игрока.

local mp = utility.GetMousePos()
game.SilentAim(mp[1], mp[2])
Сайд-эффект

Может вызвать выстрел. Комбинируй с троттлингом и проверкой friend/enemy (например через entity.GetTarget) перед вызовом.


PlayerWhitelist

game.PlayerWhitelist(name: string)

Добавляет username игрока в friendly-список чита. После этого вызова поле IsWhitelisted соответствующего игрока становится true и aim-системы должны его пропускать.

Возвращает nil. Тот же паттерн обработки args что у GetService:

  • PlayerWhitelist('verify_probe_xyz_999')nil (silent success)
  • PlayerWhitelist('')nil
  • PlayerWhitelist(123)nil (silent, число не coerce в реальную запись)
  • PlayerWhitelist(nil) raise'ит "bad argument #1 to '?' (string expected)"
game.PlayerWhitelist("MyFriendUserName")

Документированного RemovePlayerWhitelist-аналога нет. Однажды добавленная запись живёт всё время жизни скрипта.


Паттерны

Получить count игроков на сервере

local players = game.GetService("Players")
print(string.format("на сервере %d игроков", #players:GetChildren()))

Использовать сервис который НЕ pre-resolved на game

local market = game.GetService("MarketplaceService")

Проверить FFlag и fallback если не экспортирован

local cap = game.GetFFlag("TaskSchedulerTargetFps", "int")
if not cap or cap == 0 then cap = 60 end
print("frame budget:", cap)

Whitelist'нуть друзей при загрузке скрипта

for _, friend in ipairs({"FriendOne", "FriendTwo"}) do
game.PlayerWhitelist(friend)
end

Читать живую позицию камеры

cheat.register("onUpdate", function()
local cam = game.CameraPosition
if cam then
print(string.format("cam=(%.0f, %.0f, %.0f)", cam.X, cam.Y, cam.Z))
end
end)