Create a Drawing object (ESP/debug overlay)
draw-createCreates persistent on-screen Drawing overlay objects in Roblox executors, applying properties for ESP boxes, tracers, and HUDs, and returns an ID for updates or removal.
Instructions
Creates a new on-screen overlay object via the executor Drawing library (used for ESP boxes, tracers, name tags, and debug HUDs) and registers it so it survives across tool calls. Calls Drawing.new(type) for type in {Line, Text, Circle, Square, Quad, Triangle, Image}, applies the given properties, stores the handle in getgenv().__mcp_drawings under a new integer id, and returns { id, type } — pass that id to draw-update / draw-remove. PROPERTIES: each property value is a Luau EXPRESSION STRING evaluated via loadstring, so rich types work: Color = 'Color3.new(1,0,0)', From = 'Vector2.new(10,10)', To = 'Vector2.new(200,200)', Position = 'Vector2.new(100,100)', Visible = 'true', Thickness = '2', Text = '"hello"', Size = '18'. Common props: Visible(bool), Color(Color3), Transparency(number 0..1), ZIndex(number). Per type — Line: From, To, Thickness; Text: Text, Size, Position, Center, Outline; Circle: Center, Radius, NumSides, Thickness, Filled; Square: Size, Position, Thickness, Filled. Requires the Drawing table (type-guarded); on an executor without it, it returns { error = "Drawing is not available in this executor." }. Every call is pcall-guarded. Returns { id, type, applied[] } or { error }. Signature: { type: "Line" | "Text" | "Circle" | "Square" | "Quad" | "Triangle" | "Image", properties: any?, threadContext: number?, timeoutMs: number? }. Phase: act; cost=medium; idempotency=contextual-write. Requires: active-client, explicit-mutation-approval. Capabilities: Drawing. Produces: created-handle. Verify with: list-drawings. Safety: MUTATING; changes executor drawing overlay state. On failure: inspect tool-schema for exact fields, defaults, constraints, and an invocation example.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | The Drawing object type to create via Drawing.new(type): one of Line, Text, Circle, Square, Quad, Triangle, Image. | |
| timeoutMs | No | Optional per-call deadline in milliseconds; omit it to use the tool or server default. | |
| properties | No | Map of property name -> Luau expression STRING to assign after creation. Values are evaluated via loadstring, so use Luau syntax: Color = 'Color3.new(1,0,0)', From = 'Vector2.new(10,10)', Visible = 'true', Thickness = '2', Text = '"label"'. Unknown/failed properties are reported in 'applied' with ok=false but do not abort the create. | |
| threadContext | No | Optional Roblox thread identity for this call; omit it to use the server default. |