Only this pageAll pages
Powered by GitBook
Couldn't generate the PDF for 149 pages, generation stopped at 100.
Extend with 50 more pages.
1 of 100

CS2 Lua API

Loading...

Introduction

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Workshop

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

API

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

Loading...

ObserverMode_t

This enum represents the observer modes available in the game.


NONE

Field

Represents no observer mode (not spectating anyone).


FIXED

Field

Represents a fixed camera position.


IN_EYE

Field

Represents observing from the perspective of the player being spectated.


CHASE

Field

Represents a chase camera that follows the player being spectated.


ROAMING

Field

Represents a free-roaming camera.


DIRECTED

Field

Represents an automatically directed camera, typically controlled by the game or server.

Overview

Official lua API documentation for ​

fatality.win

Examples

Hello, fellow developer!

In this section, you'll find Lua examples that you can use to learn about our API. Please note that these examples don't cover the entirety of the API itself, so you'll have to do some exploration by yourself!

Branches

Branches let you create separate versions of your items so users can test upcoming builds before they are pushed to the live Default branch.

Open the Branches tab to manage existing branches or create new ones:

Creating a branch

Click Add branch, enter a branch title, and confirm.

You can create as many branches as you need.

After a branch is created, you can:

  • Add users (they’ll be allowed to opt in).

  • Set a price (makes the branch public so anyone can purchase it).

Managing Builds

Branches can hold any builds - both verified and unverified.

To assign a build to a branch:

  1. Go to the Builds tab.

  2. Find the build you want to assign.

  3. Click Set branch.

  4. Select the branch and submit.

This immediately makes that build available to anyone using the branch.

Adding UI

Adding UI

Now that you know the basics, let’s extend our script by allowing the user to toggle the text. We can do this by adding a control to the menu.

Creating a control

Publishing Tool

Welcome to the Publishing Tool documentation.

  • Creating a script:

  • Using branches:

  • Using libraries:

Step By Step Guide
Branches
Libraries & Dependencies

Note: Adding users does not automatically enable the branch for them. It only gives them the option to join.

Guidelines

All items published on the Storefront must follow these guidelines to keep the Workshop safe, usable, and fair for everyone.

1. Provide meaningful descriptions

Your description should clearly explain what the item does, what it requires, and any limitations it may have. Do not use vague, misleading, or clickbait-style descriptions. End users should know exactly what they are getting before they subscribe to or purchase an item.

2. Make meaningful and unique items

Trivial one-line scripts, spam items, commonly made items that don't provide anything new or submissions with no truly meaningful functionality are not allowed. Workshop content should be fresh and interesting for the users, so all items must undergo a quality assurance to ensure they're not polluting the workshop with junk content.

3. Respect capability requests

Always use the provided APIs and tools in a way that respects user choice of permissions. Do not attempt to bypass or override capability restrictions. If your item does not need filesystem access, for example, you must not request it.

4. Practice fair market behavior

Artificial price dumping, manipulative pricing strategies, or exploitative sales tactics are not allowed. The Workshop should remain a healthy, competitive, and sustainable marketplace for all developers.

5. Do not publish malicious code

This includes malware, exploits, spyware, or any script designed to harm users or their systems. While beta branches exist for unverified testing, all items submitted to live must be safe and secure. Any attempt to sneak in harmful code will result in removal and possible bans.

6. Ensure compatibility with existing features

Scripts and configs must not intentionally disrupt core software features, other Workshop items, or the overall stability of the platform. If your item modifies functionality, it must do so safely and predictably.

7. Keep content respectful

Item names, descriptions, scripts, and configs must not contain harassment, hate speech, targeted attacks, or inappropriate material. All content must follow the same standards as the forum and community guidelines.

8. Maintain and update your items

If your script or config breaks due to updates in the core software or APIs, you are responsible for updating it. If you choose to stop maintaining an item, you must clearly mark it as deprecated so users are not misled.

9. Be transparent with monetization

Paid items must disclose exactly what features are included. You may not hide critical functionality behind unexpected paywalls or release crippled versions that require additional payment to work as advertised.

10. Respect licensing and attribution

If your item uses external code, libraries, or assets, you are responsible for ensuring that you follow their licensing terms. Proper credit must be given where required, and you may not repackage or sell work you do not have rights to.

ShadowDir

This enum is used to determine shadow direction for add_shadow_line method.

UP

Field

The darkest side of the shadow will be at the bottom.


DOWN

Field

The darkest side of the shadow will be at the top.


LEFT

Field

The darkest side of the shadow will be on the left side.


RIGHT

Field

The darkest side of the shadow will be on the right side.

RenderMode

This enum is used to toggle rendering modes.

NORMAL

Field

Normal, opaque rendering. All polygons will get filled with color, and texture sampling will be fully supported. This is the default mode to render shapes in layer.


WIREFRAME

Field

Wireframe rendering. This means that the polygons will no longer be filled with color, nor texture sampling will ever work.

Instances

Let’s start by creating a simple checkbox:

Each control has a unique ID, which the UI framework uses to distinguish controls within containers. It’s very important that your control’s ID doesn’t conflict with others, as that could result in a broken state or worse.

To create the ID, call gui.ControlID and pass the desired ID, or just pass a simple string instead.

Then, create the checkbox by calling gui.Checkbox and passing the ID you've chosen.

Constructing the row

By default, controls are typically placed in rows - layouts that stack elements in a specific manner. We provide a simple helper function - gui.MakeControl.

You may also create both the control and the checkbox, or any other menu element, at the same time using gui.MakeControlEasy !

Adding the row to a group

With the control and row ready, let’s add them to a group.

In this example, we'll use the lua>elements a group. First, locate that group in the global context:

Then call its Add method to include your row:

That's it!

Using the value

Next, let’s modify our previous script so the text only appears if the checkbox is checked. Wrap your drawing code in an if statement before rendering the text:

and close it after.

The final script should look something like this:

And here's the result:

local cb = gui.Checkbox('my_checkbox');
local row = gui.MakeControl('My checkbox', cb);
local cb, row = gui.MakeControlEasy('my_checkbox', 'My checkbox', 'checkbox')
local group = gui.ctx:Find('lua>elements a');
group:Add(row);
if cb:GetValue():Get() then
local cb, row = gui.MakeControlEasy('my_checkbox', 'Checkbox', 'checkbox');
local group = gui.ctx:Find('lua>elements a');
group:Add(row);

local function onPresentQueue()
    if cb:GetValue():Get() then
        local d = draw.surface;
        d.font = draw.fonts['gui_main'];
        d:AddText(draw.Vec2(50, 50),
            'Hello drawing! My first script speaking.',
            draw.color.White()
        );
    end
end

events.presentQueue:Add(onPresentQueue);

To view group and control IDs, you can enable Debug mode in the SCRIPTS tab.

It is very important to call Reset() method if you add multiple controls, so the layout will stack everything correctly.

Step By Step Guide

In this tutorial you’ll create and publish a script to the Storefront. The same flow applies to Libraries and Configs.

Create the item

Go to Workshop -> Manage Items and click Create new item.

Fill out:

  • Title

  • Game (the supported title your script targets)

  • Item type (Script / Library / Config)

Upload a build

Open the Builds tab and click Upload new build.

Fill out:

  • Version (use semantic versioning like 1.0.0 if possible)

  • Changelog (short, factual)

  • File upload (your .lua file or a .zip

Click Save. The build is created in the Draft state.

Click Submit for review. The build state changes to Under review.

After moderation approves it, you’ll get a notification and the state changes to Approved.

Click Set to branch and choose Default.

This makes the approved build the version users receive when they add your script to their library.

Configure capabilities

If your script needs restricted APIs (e.g. FFI, filesystem, clipboard), enable the required Capabilities so users can grant permission.

In Builds -> Capabilities (right side), select only what you need and click Save.

Prepare the Storefront listing

Open the General tab and complete all fields in the Release Checklist.

When the checklist is complete, click Submit for review on the item. After moderation approves it, the item is automatically published on the Storefront and users can purchase or subscribe.

Creating Libraries

This resource only goes over the basics of library development. If you wish to learn more about libraries, please go .

Libraries allow users to write pre-written, reusable code that can be imported anywhere, at any time. This is useful if you often reuse portions of your code in multiple scripts, or if you wish to compartmentalize your scripts and have a cleaner code base.

In Fatality, libraries are divided into two categories: Local libraries and Cloud libraries. Local libraries are located in your fatality/scripts/lib folder and may only be used by other local scripts, meanwhile cloud libraries are similar to cloud scripts and can be shared and imported by any other cloud script through the workshop. Despite that difference, libraries follow the same code structure:

-- Usually, a 'module' table is created and all of your libraries contents go into it.
local M = {}

-- You can export functions.
function M.MyFunction()
    print('Call from my library')
end

-- Or constants.
M.MyValue = 979

-- Or any other value.
M.MenuElement = gui.Checkbox('external_checkbox')

-- At the end of every library, make sure to return the contents you wanna export!
return M

You may then import said library from another file using either its file name or identifier.

-- In another file.
local my_library = require('library')

my_library.MyFunction() -- Prints 'Call from my library'

print(my_library.MyValue) -- Prints '979'

gui.ctx:Find('lua>elements a'):Add(my_library.MenuElement) -- Adds a new checkbox

Getting Started

Workshop allows you to publish, advertise, and earn from your items. It provides a broad set of features for both publishers and end users, making the storefront easy to use and reliable to manage.

Core Concepts

Before publishing, it's important to understand the key concepts used in Workshop:

  • Storefront - the main Workshop UI where users search, view, subscribe to, or purchase items;

  • Publishing Tool - the area where item authors create, update, and manage their entries in the storefront;

  • Item - a single Workshop entry. This can be a script, a library, or a config;

  • Build - a specific version of an item that gets delivered to the end user;

  • Branch - a channel that holds a single build (e.g. stable, beta);

  • Dependency - a required library that an item relies on to function;

  • Capability - a permission that unlocks restricted API functions (e.g. filesystem access, clipboard).

Next Steps

  1. Read the .

  2. Complete a tutorial.

Updating Items

In order to update an item you need to follow these steps:

Upload a new build & wait for approval

Check Upload a build on how to upload a build.

Set build active

  1. Navigate to Builds and find the approved build.

  2. Click Set to branch

  3. Select Default branch

After these actions are complete, your new build will be available for users instantly.

Additionally, you may want to test upcoming builds before they hit the Live item. For that, we recommend looking into .

Bundled Assets

If you want to include additional files with your script (e.g. sounds, images, or data), you can bundle them inside a ZIP archive with a defined structure.

  • The archive must contain a script.lua file in the root.

  • The archive must not contain a scripts/remote/ directory or any files inside it.

All bundled assets are automatically installed to a directory chosen by the API engine. See for usage details.

mods

Usage: mods.{mod_name}

This table exposes several mods (short for Module, not Modification), that Fatality uses to operate.

events

Field

Type:

Event manager. Use this mod if you want to listen to more in-game events.

Event_t

Event usertype. An instance of this type can be found in .

Add

Method

Adds a callback to the event.

Arguments

CCVar

Usage:

Usage: game.cvar:{method}

This type represents the game's cvar system.

Ray_t

Describes the ray type used by the tracing methods.

SetHull

Method

Changes the shape of the ray to a box/hull, using the specified mins and maxs.

Arguments

Managed

This type represents a managed object. You cannot create an instance of this type directly.

Every object, that inherits from this type, must be Created before use. The rendering system will only create them automatically, if you happen to lose a device object (e.g. minimize the game window, and then restore it) and only if you add your objects to manage table in .

obj

Counter control

In our Lua API, we give users the ability to make their own custom menu controls. Here's an example on how to make a simple counter:

With that, you'll have an extremely simple counter that you can click on to increment.

ConVar

Represents a convar used by the game.

name

FieldRead only

Type: string

CSWeaponMode

This enum represents the firing mode for a weapon.

PRIMARY_MODE

Field

Primary mode (usually left mouse button).


CPlane

Encapsulates the plane information in the trace object.

normal

FieldRead only

Type:


User_t

This type represents basic user information.

avatar

Field

Types

In this section, the most common renderer types are listed, that are not particularly bound to a specific part of the renderer.

CFiringMode

Firing mode information.

values_arr

Field


description

FieldRead only

Type: string


flags

FieldRead only

Type: int


value

FieldRead only

Type: <type>

The value of the convar represented in its type

SECONDARY_MODE

Field

Secondary mode (usually right mouse button).

Read only

Type: Texture?

User's avatar. May be nil.


username

FieldRead only

Type: string

User's username.

Read only

Type: <type>

Values.

Use the left menu (or hamburger menu on mobile) to navigate between types.

Guidelines
Step By Step Guide
ws
Events_t
here

pos

FieldRead only

Type: Vector

Vector
Click Save

Builds are NOT automatically set to the Default branch upon approval! Once you get the notification that your build has been approved, proceed to set its branch to Default.

Branches
)

Warning: You cannot change the item type later.

Note: You can upload a ZIP to bundle assets alongside the script. See Bundled Assets

Tip: Use a Beta branch to test new builds with a subset of users before moving them to Default. See Branches

Best practice: Request the minimum capabilities your script actually uses. Users will see and approve these.

CGlobalVarsBase

Usage:

game.globalVars.{field}

Usage: game.globalVars.{field}

An instance of this type provides a way to read several global variables that are used by the game. Changing any of the values is not and will never be supported.

m_flRealTime

Field

Type: float

Time passed since the game start, in seconds.


m_iFrameCount

Field

Type: int

Amount of frames rendered since the game start.


m_flAbsFrameTime

Field

Type: float

Absolute (averaged) frame time. It is calculated over a set of previous frame times, and should not be used for anything that requires accurate frame time like animation.


m_iMaxClients

Field

Type: int

Maximum amount of clients on the current server.


m_iTicksThisFrame

Field

Type: int

Amount of ticks passed during the currently rendered frame. Any value above 1 might indicate a stall during rendering.


m_flRenderFrameTime

Field

Type: float

Time, in which a previous frame was rendered. May be used for animation or by any other means that require accurate frame time.


m_flCurTime

Field

Type: float

Time passed since the server's game start. This does not indicate the accurate time on the server, although in several events it might be synced by the software.


m_flTickFraction

Field

Type: float

Current tick's fractional value.


m_iTickCount

Field

Type: int

Ticks passed since the server's game start.


m_szMapPath

Field

Type: string

Relative path to current loaded map's file.


m_szMapName

Field

Type: string

Name of the currently loaded map.

Rounding

Rounding

Last modified: 03 January 2025

This enum is used to determine the rounding for rounded shapes.

TL

Field

Round top-left corner.


TR

Field

Round top-right corner.


BL

Field

Round bottom-left corner.


BR

Field

Round bottom-right corner.


T

Field

Round both of the top corners. This produces the same result as using bit.bor(draw.Rounding.TL, draw.Rounding.TR).


L

Field

Round both of the left corners. This produces the same result as using bit.bor(draw.Rounding.TL, draw.Rounding.BL).


R

Field

Round both of the right corners. This produces the same result as using bit.bor(draw.Rounding.TR, draw.Rounding.BR).


B

Field

Round both of the bottom corners. This produces the same result as using bit.bor(draw.Rounding.BL, draw.Rounding.BR).


ALL

Field

Round all corners. This produces the same result as using bit.bor(draw.Rounding.TL, draw.Rounding.TR, draw.Rounding.BL, draw.Rounding.BR).

TextAlignment

This enum determines how to align the text when drawing it.

left and top, as well as right and bottom are interchangeable. It means that if you use left for vertical alignment, it will produce exactly the same result as using top, and vice versa. top/bottom are here only for the sake of convenience and readability.

LEFT

Field

Align left. It will mean that the text position's X coordinate is located at the left side of the text area.


CENTER

Field

Align center. It will mean that the text position's X (or Y) coordinate is located at the center of the text area.


RIGHT

Field

Align right. It will mean that the text position's X coordinate is located at the right side of the text area.


TOP

Field

Align top. It will mean that the text position's Y coordinate is located at the top side of the text area.


BOTTOM

Field

Align bottom. It will mean that the text position's Y coordinate is located at the bottom side of the text area.

FontFlags

This enum determines which flags a font object should possess. Setting those flags is only possible during type construction.


SHADOW

Field

Adds a 1px shadow to font glyphs.


OUTLINE

Field

Adds a 1px outline to font glyphs.


ANTI_ALIAS

Field

Enable antialiasing on font glyphs. This flag only works on GDI fonts.


NO_DPI

Field

Disable DPI scaling on this font. By default, font glyphs will be scaled in accordance to the global DPI scale.


NO_KERN

Field

Disable glyph kerning on this font.


MONO

Field

Enables a strong hinting algorithm for rasterization. Only works on FreeType fonts.


LIGHT

Field

Enables a light hinting algorithm for rasterization. Only works on FreeType fonts.

CSWeaponCategory

This enum represents the category classification for weapons in the game.

OTHER

Field

Represents weapons or items that don't fit into any specific category.


MELEE

Field

Represents melee weapons, such as knives or other close-combat tools.


SECONDARY

Field

Represents secondary weapons, such as pistols.


SMG

Field

Represents submachine guns (SMGs).


RIFLE

Field

Represents rifles, including assault rifles and sniper rifles.


HEAVY

Field

Represents heavy weapons, such as machine guns and shotguns.

Types

In this section, the most common gui types are listed, that are not particularly bound to a specific part of the gui.

Use the left menu (or hamburger menu, if you are on mobile) to navigate between types.

local Counter = {} do
  -- Create the metatable for this control.
  Counter.__index = gui.LuaControlProto()

  -- Specify any initial data. This is propagated to any LuaControl initialized with this metatable.
  Counter.__index.initialData = {
    counter = 0
  }

  -- Override any methods you wish.
  function Counter.__index:onRender(contents, scrollbar, mins, maxs)
    contents:AddRectFilled(draw.Rect(mins, maxs), draw.color.White())

    contents.font = draw.fonts['gui_bold']
    contents:AddText(mins + draw.Vec2(5, 5), tostring(self.data.counter), draw.color.Black())
    contents.font = nil
  end

  function Counter.__index:onMouseDown(key)
    if key == gui.MouseButton.LEFT then
      self.data.counter = self.data.counter + 1
      self:LockInput() -- Makes sure you can't drag the menu while clicking.
    end
  end

  function Counter.__index:onMouseUp(key)
    if key == gui.MouseButton.LEFT then
      self:UnlockInput() -- Makes sure you can drag menu again after clicking.
    end
  end

  function Counter.create(id, initialValue)
    local control = gui.LuaControl(id, Counter.__index, draw.Vec2(), draw.Vec2(0, 24)) do
      control.sizeToParentW = true -- Resizes the control to the width of the container.
      control.data.counter = initialValue or 0
      control.margin = draw.Rect(3, 7, 3, 7) -- Default control margin
    end

    return control
  end
end

gui.ctx:find('lua>elements a'):add(Counter.create('counter'))
Name
Type
Description

fn

function

Callback function. Arguments that are accepted by the function are dictated by the event instance.

Returns

Nothing.

Example


Remove

Method

Removes a callback from the event.

Arguments

Name
Type
Description

fn

function

Callback function, that was earlier passed to the add() function.

Returns

Nothing.

Example

events
Field
Read only

Type: Ptr

Pointer to a GPU object. If this object is not created, this field will be nil. You can use the value of this field to pass it to Command directly for example, or if you (for whatever reason we don't recommend you doing) want to have a direct control over the pointer - cast it to FFI's cdata.


Create

Method

Creates a managed object in GPU memory.

Arguments

None.

Returns

Nothing.

Example


Destroy

Method

Destroys a managed object in GPU memory.

Arguments

None.

Returns

Nothing.

Example

draw

You should Create() an object only once. Invoking this method after the object was created will be meaningless.

Never destroy a GPU object if it is being used in rendering (for example, when you have pushed some shape that uses a texture, and then destroyed that texture). This will lead to undefined behavior, and most likely, **crash the game **.

events.presentQueue:Add(function ()
    -- will be called every time game queues a frame for rendering
end);
local function on_present()
    if some_condition then
        events.presentQueue:Remove(on_present)
    end
end

events.presentQueue:Add(on_present)
tex:Create();
font:Destroy();
Find

Method

Get the game's cvar under this name.

Arguments

Name

Type

Description

name

string

Var name.

Returns

Type

Description

Convar object.

Example

local sv_quantize_movement_input = game.cvar:Find('sv_quantize_movement_input')
if not sv_quantize_movement_input then
    error('sv_quantize_movement_input not found')
end

Name

Type

Description

mins

The minimum bounding of the box

maxs

The maximum bounding of the box

Returns

Nothing.

Example


SetSphere

Method

Changes the shape of the ray to a sphere, using the specified center position and radius.

Arguments

Name

Type

Description

center

The center of the sphere

radius

number

The radius of the sphere

Returns

Nothing.

Example

local ray = Ray_t()
ray:SetHull(Vector(-4, -4, -4), Vector(4, 4, 4)) -- Traces a cube (8x8x8).
local ray = Ray_t()
ray:SetSphere(Vector(0, 0, 0), 10) -- Traces a sphere.

game

Usage: game.{interface_or_function}

This table exposes various internal services and global objects used by Fatality, and also provides a way to retrieve any additional services you need.

globalVars

Field

Type: CGlobalVarsBase

This service exposes global variables used by the game, such as frame time or current server time.


engine

Field

Type: CEngineClient

This service exposes the engine client, which includes commonly used engine-related functions.


input

Field

Type: CCSGOInput

This service exposes the command input system.


inputSystem

Field

Type: CInputSystem

This service exposes the control input system.


gameUIFuncs

Field

Type: CGameUIFuncs

This service exposes the game's UI functions.


physicsQueryInterface

Field

Type: CPhysicsQueryInterface

This service exposes the game's tracing functions.


gameEntitySystem

Field

Type: CGameEntitySystem

This service exposes some of the game's entity list functions.


PlaySound

Method

Plays a game sound.

Arguments

Name
Type
Description

Returns

Nothing.

Example

FontGDI

This type represents a font object. Internally, this type uses GDI library to rasterize font glyphs.

This type inherits type. All of its base methods and fields are also available in this type.

__call

Constructor

Constructs a font object.

Arguments

Returns

Example

CInputSystem

Usage: game.input_system:{method}

This type represents the game's control input system.

VKToButtonCode

Method

Converts a virtual key to button code.

Arguments

Name
Type
Description

Returns

Type
Description

Example

EntityList_t

This type represents an entity list.

Never save any entities you get from this list if you don't know what you are doing! You may be left with dangling pointers, which will inevitably lead to a crash.

ForEach

Method

Loops the entities.

Arguments

Returns

Nothing.

Example

ForEachZ

Method

Loops the entities in the reverse order.

Arguments

Returns

Nothing.

Example

Libraries & Dependencies

Libraries are specialized items that are not visible in the Storefront. Instead, they are available for other publishers to reference inside their scripts.

Creating a Library

Creating a library works the same way as creating a script (seeStep By Step Guide).

The only difference is that a library requires a Library ID.

  • The Library ID is a unique identifier used by scripts to reference your library.

  • Without it, other publishers cannot include your library as a dependency.

You can create and assign a Library ID in the General tab:

Once published and approved, your library becomes available for others to use as a dependency.

Referencing Libraries

When your script references a library, the library is automatically loaded alongside your script at runtime.

To add a library dependency:

  1. Go to the Dependencies tab.

  2. Click Add dependency.

  3. Find the library you want to reference and click Add.

It is recommended to reference a specific version of a library rather than always pulling the latest. This ensures your script continues to work even if the library author publishes breaking changes later.

CGameUIFuncs

Usage: game.gameUIFuncs:{method}

This type represents the game's UI functions.

GetBindingForButtonCode

Method

Returns the binding name for a button code.

Arguments

Name
Type
Description

Returns

Type
Description

Example

CCSGOInput

Usage: game.input.{field_or_method}

This type represents the game's command input system.

m_bInThirdPerson

FieldRead only

Type: bool

true if currently in the third person.


GetViewAngles

Method

Returns current camera view angles.

Arguments

None.

Returns

Type
Description

Example


SetViewAngles

Method

Sets new camera view angles.

Arguments

Name
Type
Description

Returns

Nothing.

Example

Events_t

Usage: mods.events.{method}

This module lets you manage custom in-game event listener.

Please note that the game server knows which events you are listening to. Internally, we only listen to events that will get sent to the client anyway in one way or another. If you decide to listen to something the server generally does not expect, it may cause issues on official servers.

AddListener

Method

Adds a game event to the listener.

Arguments

Name
Type
Description

Returns

Nothing.

Example

Context

This type represents the GUI context.

Find

Method

Finds a control by ID.

Arguments

Returns

Example


user

Field

Type:

User's basic information.

Glyph_t

This type represents a glyph object.

codepoint

FieldRead only

Type: int

Character codepoint.


size

FieldRead only

Type:

Glyph dimensions.


offset

FieldRead only

Type:

Glyph offset.


uv

FieldRead only

Type:

UV rect on the texture atlas.

CCSWeaponBaseVData

This type represents a weapon's static data.

__index

Function

Attemps to search for a field in this class.

Arguments

Returns

Example

C_BaseCSGrenadeProjectile

This type represents a grenade projectile.

This type inherits type. All of its base methods and fields are also available in this type.

GetAbsOrigin

Method

Returns the absolute origin (the one that is used for rendering).

Arguments

None.

Returns

Example


GetGrenadeType

Method

Returns the grenade type.

Arguments

None.

Returns

Example

NotificationSystem

This type represents a notification system.

Add

Method

Adds a notification to the list.

Arguments

Returns

Nothing.

Example

ControlID

This type represents a control ID.

This type is mostly deprecated and can be replaced by strings on all control constructors.

__call

Constructor

Constructs the ID structure.

Arguments

Returns

Example


id

FieldRead only

Type: int

Hashed representation of the ID.


idString

FieldRead only

Type: string

Normal representation of the ID.

First Steps

Now that you’ve covered the essentials, it’s time to start scripting.

Fire up a text editor

Feel free to use any text editor you prefer: , , or even a simple Notepad.

Local scripts are located here: <CS2_Directory>/game/csgo/fatality/scripts. You may notice there's also a lib directory, but we’ll get to that later.

Global Functions

Below is a list of all global functions. By “global”, we mean these functions do not require a preceding namespace - so you can call them directly, unlike other functions.

print

Function

Prints text to game's console. Automatically inserts a space between parameters.

CGameTrace

Encapsulates all tracing information returned by the tracing methods.

m_pEnt

FieldRead only

Type:


CGameEntitySystem

Usage:

Usage: game.gameEntitySystem:{method}

This type encapsulates some entity querying functionalities. If you wish to loop for players, controllers, dropped items or projectiles, go .

Accessor

accessor

Last modified: 03 January 2025

This type represents a safe way to access maps.

Creating scripts

Welcome to the basics of scripting with our API.

Fatality’s API is designed to mirror the software’s internal structure, giving you substantial control over its subsystems. Some features that could cause instability or damage are restricted.

SvgTexture

This type represents an SVG texture object.

__call

Constructor

Constructs an SVG texture.

HitGroup_t

This enum represents the unique identifier for all player hitgroups. Not to be confused with EHitBox.

HEAD

Field


Adapter

This type represents a rendering adapter used within the rendering system.

GetBackBuffer

Method

Returns a back buffer texture. May return a blank or outdated texture, if the back buffer texture was not updated.

EntityEntry_t

Represents an entity entry.

entity

Field

Type: <type>

MouseButton

This enum represents mouse buttons.

LEFT

Field

Left mouse button.


OutlineMode

This enum is used to determine the outline mode for outlined shapes.

INSET

Field

Inset outlining. This means that the outline will be inside the shape (+1px from top-left, -1px from bottom-right).


Notification

This type represents a notification item.

__call

Constructor

Constructs the notification.

Basic Concepts

Our scripting engine uses LuaJIT 2.1 (with minor customizations). It’s fully compatible with Lua 5.1 and includes some Lua 5.2 enhancements.

The standard libraries baselib, bit, ffi, math, string and table are available. Note that the ffi library is only available if the Allow insecure option is enabled. Refer to the official Lua documentation for more details.

If we ever modify any standard functions, we will document those changes to keep you informed.

Documentation Overview

Throughout the API reference, you’ll encounter various labels used to describe a certain method or a field.

Labels:

Field Function Method Constructor Read only Insecure only Overridable

All the possible labels are listed above.

  • Field: this label indicates that the item is a standard field. It's type will be explained just below the name.

  • Function: this label indicates that the item is a function, which you call using a dot syntax (obj.fn()).

  • Method: this label indicates that the item is a method, which is also a function, but it's advised to call it with the colon syntax (obj:fn()).

  • Constructor: this label indicates that the item is a constructor definition. You don't have to call any field in particular, but instead you must invoke the type itself (example: vector has __call, meaning you should invoke it like this: vector()).

  • Read Only: this label indicates that the item is read only, and it's value cannot be changed. Typically, this restriction does not extend to any child elements.

  • Insecure only: this label indicates that the item is only available if the insecure mode is turned on.

  • Overridable: this label indicates that the method, can be overridden by the developer and its parent type will inherit any functionalities.

Argument and return lists

Arguments and return values are listed in the exact order you must supply or capture them. For instance, if a parameter is shown first, it is to be passed as the first argument to the function. The same goes for return values: the first listed value will be placed in the first variable you declare, and so on.

Types

Some type descriptions have special symbols in place:

  • type? means that the type might be nil.

  • type<other> means that inner methods or fields will use other type.

  • <other> means that the type will be either other, or any of its child types.

Rules

To keep your scripts safe and easy to use, we have quite a lot of safety measures in place. But, due to how specific stuff works, we are unable to fully make it as safe as possible. Therefore, here are some notes you should know before writing scripts:

You Control the Lua State

You may replace or override API functions, but you’re responsible for maintaining stable behavior. If you encounter any bugs in the default API (excluding FFI), please report them so we can address the issue.

Prioritize Safety

Using FFI grants you extensive freedom. Keep in mind that scripts which could harm users in any way are disallowed and will be removed. Whenever possible, rely on the provided API or request additional functionality if you need something not currently offered. Custom “script loaders” are strictly disallowed.

Keep the Software Usable

Avoid hiding unrelated UI elements, obstructing user input, or interfering with the overall user experience. Scripts that disrupt functionality or harass users risk removal from the Workshop.

NECK

Field


STOMACH

Field


RIGHTARM

Field


LEFTARM

Field


RIGHTLEG

Field


LEFTLEG

Field


GENERIC

Field


UNUSED

Field


INVALID

Field


GEAR

Field


SPECIAL

Field

RIGHT

Field

Right mouse button.


MIDDLE

Field

Middle (scroll wheel) mouse button


BACK

Field

"Back" mouse button (side button 1).


FORWARD

Field

"Forward" mouse button (side button 2).

OUTSET

Field

Outset outlining. This means that the outline will be outside of the shape (-1px from top-left, +1px from bottom-right).


CENTER

Field

Center outlining. This means that the outline will match the shape size.

Vec2
Vec2
Rect
ConVar
Vector
Vector
Vector

m_EntHandle

FieldRead only

Type: CHandle


m_vStartPos

FieldRead only

Type: Vector


m_vEndPos

FieldRead only

Type: Vector


m_Plane

FieldRead only

Type: CPlane


m_flFraction

FieldRead only

Type: number


m_iPhysBone

FieldRead only

Type: number


m_nEntBone

FieldRead only

Type: number


m_bStartSolid

FieldRead only

Type: boolean


DidHit

Method

Returns whether or not the trace hit an entity or the world.

Arguments

Nothing.

Returns

Type

Description

boolean

Whether it hit something or not


DidHitWorld

Method

Returns whether or not the trace hit the world.

Arguments

Nothing.

Returns

Type

Description

boolean

Whether it hit the world or not

C_BaseEntity
The library will appear in your dependencies list.

GlowParts

This enum is used to determine which parts of the glow around the shape should get rendered.

TL

Field

Draw top-left corner.


TR

Field

Draw top-right corner.


BL

Field

Draw bottom-left corner.


BR

Field

Draw bottom-right corner.


T

Field

Draw top line.


L

Field

Draw left line.


R

Field

Draw right line.


B

Field

Draw bottom line.


ALL_LEFT

Field

Draw all the left side shapes. This includes both left corners and the line.


ALL_RIGHT

Field

Draw all the right side shapes. This includes both right corners and the line.


ALL_TOP

Field

Draw all the top side shapes. This includes both top corners and the line.


ALL_BOTTOM

Field

Draw all the bottom side shapes. This includes both bottom corners and the line.


ALL

Field

Draw the entire glow around the shape.


NO_BOTTOM

Field

Draw glow except for the bottom line.


NO_TOP

Field

Draw glow except for the top line.


NO_RIGHT

Field

Draw glow except for the right line.


NO_LEFT

Field

Draw glow except for the left line.

Entity instance. Type depends on the list you get it from.


hadDataUpdate

Field

Type: bool

true if the client had received any updates to this entity at least once.


handle

Field

Type: CHandle

Entity's handle. You may store this elsewhere if you need to have global access to an entity.


avatar

Field

Type: Texture

Player's profile picture. Will be nil if was yet to be initialized.


visuals

Field

Type: PlayerEntryVisualData

Player's ESP information.

This field is only available on entries that use C_CSPlayerController type.

This field is only available on entries that use C_CSPlayerPawn type. Use only inside the playerInfoPre and playerInfoPost callbacks, otherwise you may access outdated or invalid data.

sound

string

Path to the sound, e.g. sounds/ui/weapon_cant_buy

volume

number

Volume from 0 to 1, if passed -1 it uses the game's volume.

It also accepts sounds in your csgo/sounds directory. Only vsnd_c files are supported.

vk

int

Virtual key.

int

Button code.

Name

Type

Description

fn

function(EntityEntry_t)

Function callback.

Name

Type

Description

fn

function(EntityEntry_t)

Function callback.

code

int

Button code.

string

Binding.

Vector

View angles.

ang

Vector

View angles.

name

string

Event name.

Internally we listen to the following events:

  • bullet_impact

  • weapon_fire

  • bomb_beginplant

  • bomb_abortplant

  • bomb_planted

  • bomb_defused

  • bomb_exploded

  • round_start

  • game_newmap

  • map_shutdown

Adding those events to the listener is not needed.

Name

Type

Description

id

string

Control ID.

Type

Description

<Control>?

Casted control. Returns nil if the control was not found, or casting failed.

User_t

Name

Type

Description

name

string

Field name.

Type

Description

SchemaAccessor_t

Accessor instance.

Type

Description

Vector

Origin.

Type

Description

int

Grenade type.

C_BaseEntity

Name

Type

Description

notif

Notification

Notification object.

notif:Add(my_notification);

Name

Type

Description

id

string

ID.

Type

Description

ControlID

ID structure.

__index

Function

Returns an object by key.

Arguments

Name

Type

Description

key

string

Object key.

Returns

Type

Description

<type>

Object.

Example


__newindex

Function

Sets an object by key.

Arguments

Name

Type

Description

key

string

Object key.

obj

<type>

Object.

Returns

Nothing.

Example

Note that <type> indicates the specific type this instance holds. Accessor<Texture> for example means that Get will return an instance of Texture, and Set will only accept the type Texture as it's obj parameter.

Arguments

Name

Type

Description

sv

string

SVG text.

h

float

Target height. Defaults to 0, and 0 means that there will be no automatic downscale.

Returns

Type

Description

SvgTexture

SVG texture object.

Example

This type inherits Texture type. All of its base methods and fields are also available in this type.

Passing invalid SVG data to the constructor will cause a crash. We will fix this issue in future updates.

game.PlaySound('sounds/ui/weapon_cant_buy', 0.1)
local button = game.input_system:VKToButtonCode(0x41); -- 'A'
entities.players:ForEach(function (entry)
    -- ...
end);
entities.players:ForEachZ(function (entry)
    -- ...
end);
local bind = game.gameUIFuncs:GetBindingForButtonCode(code);
local ang = game.input:GetViewAngles();
game.input:SetViewAngles(math.Vec3(0, 0, 0));
mods.events:AddListener('round_end');
local some_cb = gui.ctx:Find('some_cb');
local price = wpn_data.m_nPrice;
local price = wpn_data['m_nPrice']; -- this also works
local org = wep:GetAbsOrigin();
local type = gren:GetGrenadeType();
local id = gui.ControlID('my_id');
local cb = gui.Checkbox('my_checkbox_id') -- Auto converts into ControlID
local main_font = draw.fonts['gui_main'];

-- this also works
local main_font_2 = draw.fonts.gui_main;
draw.fonts['my_font'] = my_font;

-- this also works
draw.fonts.my_font = my_font;
local lightning = draw.SvgTexture([[
<svg width="800px" height="800px" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M9.55563 13.3232L9.43584 13.3123C7.90803 13.1735 7.14412 13.104 6.90146 12.5814C6.65881 12.0588 7.09869 11.4304 7.97846 10.1736L11.5612 5.05544C12.1424 4.22517 12.433 3.81003 12.6836 3.89831C12.9342 3.98658 12.9005 4.4922 12.8331 5.50343L12.6299 8.55194C12.5685 9.47214 12.5379 9.93224 12.8023 10.2419C13.0667 10.5515 13.5259 10.5933 14.4444 10.6768L14.5642 10.6877C16.092 10.8265 16.8559 10.896 17.0985 11.4186C17.3412 11.9412 16.9013 12.5696 16.0215 13.8264L12.4388 18.9446C11.8576 19.7748 11.567 20.19 11.3164 20.1017C11.0658 20.0134 11.0995 19.5078 11.1669 18.4966L11.3701 15.4481C11.4315 14.5279 11.4621 14.0678 11.1977 13.7581C10.9333 13.4485 10.4741 13.4067 9.55563 13.3232Z" fill="#ffffff"/>
<path d="M18.5 4L17 6H19L17.5 8" stroke="#ffffff" stroke-opacity="0.6" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M6.5 16L5 18H7L5.5 20" stroke="#ffffff" stroke-opacity="0.6" stroke-linecap="round" stroke-linejoin="round"/>
</svg>
]], 24);

Font flags. Use bit library to construct them. Defaults to 0.

mi

int

Starting codepoint. Defaults to 0.

ma

int

Ending codepoint. Defaults to 255 (entire ASCII code page).

weight

int

Font weight. Defaults to 400 (regular).

Name

Type

Description

name

string

System font name (example: 'Arial').

size

float

Font height, in pixels.

Type

Description

FontGDI

Font object.

local sys_font = draw.FontGDI('Calibri', 14);
FontBase

fl

Create a new file ending with .lua, and begin your work on the script.

Writing your first script

A typical “Hello world!” example can be a bit trivial, so let’s try something slightly more advanced instead.

Now, let's break down this example script:

Defining a callback function

Most of your scripting will run within several callbacks we provide. Each event has its own signature, so pay attention to the parameters your callback function should accept. presentQueue doesn’t provide any parameters, so our function doesn’t need any either.

Accessing drawing layer

With the callback function defined, let’s actually render something on the screen!

To do this, you first need to access the drawing layer. We provide a single drawing layer that’s safe to use within the game thread. Due to how the game functions internally, it’s strongly discouraged to call game functions in other threads. Luckily all of our events run in the game thread.

This setup allows you not only to draw but also to query information on player health or other entities.

To access the layer, simply reference the surface field in the draw table:

Setting a font

After retrieving the layer, you must set a font object before drawing any text on the screen. This is purely for performance reasons, so you don’t have to pass a heavy font object every time you draw text.

All fonts are stored in draw.fonts. To access a font, either use dot syntax, or treat it like a dictionary:

Drawing text

With the font set, it’s time to draw some text.

Invoke the AddText method on the layer. Notice that it’s called using the colon syntax: obj:fn(), because it’s a method.

Registering a callback

Now that you’ve created your first callback, you need to register it so Fatality knows to invoke it. This is done by calling the Add method on events.presentQueue.

Result

That's it! If you've done everything correctly, you should see something like this:

My first lua
Visual Studio Code
Notepad++
local function onPresentQueue()
    local d = draw.surface;
    d.font = draw.fonts['gui_main'];
    d:AddText(draw.Vec2(50, 50),
        'Hello drawing! My first script speaking.',
         draw.Color.White()
    );
end

events.presentQueue:Add(onPresentQueue);
local function onPresentQueue()
end
local d = draw.surface;
d.font = draw.fonts['gui_main'];
d:AddText(draw.Vec2(50, 50),
  'Hello drawing! My first script speaking brev.',
  draw.Color.White()
);
events.presentQueue:add(onPresentQueue);

.ljbc format cannot be loaded from local sources.

Defining something local is optional, although recommended for clearer scope management.

You don't have to store it in a variable, but it would be nicer if you don't have to type out draw.surface every time, right?

You can also invoke methods with a dot syntax, as long as you provide the object in the first argument. Both calls: obj:fn() and obj.fn(obj) are identical.

Arguments
Name
Type
Description

...

...

Values to print in the console.

Example


error

Function

Prints an error text to game's console, and shuts down the script. Try to avoid using this function - use it only if an error happens which you can't recover from.

Arguments

Name
Type
Description

text

string

Read for documentation.

Example


unpack

Function

Unpacks a table of elements.

Arguments

Name
Type
Description

tbl

table

Any table

Example


Delay

Function

Delays a callback by a certain amount of time, in seconds.

Arguments

Name
Type
Description

delay

number

Delay, in seconds

callback

function

Callback

Example


__shutdown

Function

Special function, it's called whenever the script unloads. Isn't called in case of errors.

Arguments

None.

Example

print('Hello world!', 123); -- prints out "Hello world! 123" to the console
error('Can't recover from this one! Error: ' .. tostring(123));
local message = { 'Hello', 'World' }
print(unpack(message)) -- 'Hello world'
Delay(0.5, function()
    print('Print after 0.5 seconds')
end)
function __shutdown()
    print('Script was unloaded successfully.')
end
ForEachByClass

Function

Loops for all entities with a given class.

Arguments

Name

Type

Description

className

string

The entity class name

callback

function<>

The loop callback

Returns

Nothing.

Example


GetFirstByClass

Function

Finds and returns the first entity from a specific class.

Arguments

Name

Type

Description

className

string

The entity class name

Returns

Type

Description

| nil

The entity, nil if not found.

Example


here
game.gameEntitySystem:ForEachByClass('C_C4', function(entity)
    if entity.m_bStartedArming:Get() then
        print('Someone is planting!')
    end
end)
local proxy = game.gameEntitySystem:GetFirstByClass('C_CSGameRulesProxy')
local game_rules = proxy.m_pGameRules:GetAs('client.dll', 'C_CSGameRules')

if not game_rules then
	error('Not found')
end

print(game_rules.m_bWarmupPeriod:Get())

Arguments

None.

Returns

Type

Description

Back buffer texture pointer.

Example


GetBackBufferDownsampled

Method

Returns a 4x down sampled version of the back buffer texture.

Arguments

None.

Returns

Type

Description

Downsampled back buffer texture pointer.

Example


GetSharedTexture

Method

Returns a shared texture. This texture usually replicates the down sampled back buffer texture, although it is updated automatically ONCE before the rendering on the layer starts.

Arguments

None.

Returns

Type

Description

Shared texture pointer.

Example

local bb = adapter:GetBackBuffer();
local ds = adapter:GetBackBufferDownsampled();
local shared = adapter:GetSharedTexture();
Arguments

Name

Type

Description

hdr

string

Header (title).

txt

string

Text (body).

Returns

Type

Description

Notification

Notification object.

Example

local notif = gui.Notification('Hello', 'Lua works!');

CEngineClient

Usage: game.engine:{method}

An instance of this type provides a way to interface with Source 2's Engine-to-Client service.

GetLastTimestamp

Method

Returns last timestamp, in seconds.

Arguments

None.

Returns

Type
Description

Example


GetLastServerTick

Method

Returns last server tick number.

Arguments

None.

Returns

Type
Description

Example


InGame

Method

Returns whether the client is currently in game.

Arguments

None.

Returns

Type
Description

Example


IsConnected

Method

Returns whether the client is currently connected to a game server.

Arguments

None.

Returns

Type
Description

Example


GetNetChan

Method

Returns the Network Channel used for network communication.

Arguments

None.

Returns

Type
Description

Example


ClientCmd

Method

Executes a client-sided console command.

Arguments

Name
Type
Description

Returns

Nothing.

Example


GetScreenSize

Method

Returns client window screen size.

Arguments

None.

Returns

Type
Description

Example

SchemaAccessor_t

This type represents a special structure that references a certain field in the entity object.

You can check the returned type by using type() function.

Do not ever store an instance of this type anywhere but in a scope of an event because entity might be removed.

offset

Field

Type: number


Get

Method

Returns the value.

Arguments

None.

Returns

Example


GetAs

Method

Returns the value casted as another game class. Automatically dereferences pointers.

Arguments

Returns

Example


Set

Method

Sets the value.

Arguments

Returns

Nothing.

Example

CNetChan

Provides a way to interface with a Network Channel's class.

GetAddress

Method

If the current channel is null, this function will return nil instead.

Returns address string of the remote machine.

Arguments

None.

Returns

Example


IsLoopback

Method

Returns whether the current channel is connected to the local machine (loopback address).

Arguments

None.

Returns

Example


IsNull

Method

Returns whether the channel is stubbed.

Arguments

None.

Returns

Example


GetLatency

Method

Returns current latency to the remote server (in seconds).

Arguments

None.

Returns

Example

C_CSWeaponBase

This type represents a CCSWeaponBase entity.

This type inherits type. All of its base methods and fields are also available in this type.

GetAbsOrigin

Method

Returns the absolute origin (the one that is used for rendering).

Arguments

None.

Returns

Example

GetDefIndex

Method

Returns the weapon definition index.

Arguments

None.

Returns

Example

GetType

Method

Returns the weapon type.

Arguments

None.

Returns

Example

GetData

Method

Returns the weapon static data.

Arguments

None.

Returns

Example

PenResult_t

This type encapsulates all penetration data returned from FireBullet.

damage

Field

The damage done by the weapon.


hitgroup

Field

The hitgroup that was hit. May be invalid.


GetHitPos

Method

Returns one of the bullet impacts.

Arguments

Name
Type
Description

Returns

Type
Description

Example


GetHitPosCount

Method

Returns how many bullet impacts there is.

Arguments

None.

Returns

Type
Description

Example

entities

This table represents an internal entity list.

players

Field

Type: <

penetration

Usage: mods.penetration.{method}

FireBullet

CHandle

This type represents an entity handle.

index

Field

Type: number


EHitBox

This enum represents the unique identifier for all player hitboxes.

HEAD

Field


NECK

Field


UPPER_CHEST

Field


CHEST

Field


THORAX

Field


PELVIS

Field


RIGHT_UPPER_ARM

Field


LEFT_UPPER_ARM

Field


RIGHT_LOWER_ARM

Field


LEFT_LOWER_ARM

Field


RIGHT_HAND

Field


LEFT_HAND

Field


RIGHT_UPPER_LEG

Field


LEFT_UPPER_LEG

Field


RIGHT_LOWER_LEG

Field


LEFT_LOWER_LEG

Field


RIGHT_FOOT

Field


LEFT_FOOT

Field


ico

Texture?

Icon. Defaults to nil.

FontFlags
print
C_BaseEntity
C_BaseEntity
Ptr
Ptr
Ptr

CSWeaponType

This enum represents the weapon type in the game.

KNIFE

Field

Represents a knife-type weapon.


PISTOL

Field

Represents a pistol-type weapon.


SUBMACHINEGUN

Field

Represents a submachine gun-type weapon.


RIFLE

Field

Represents a rifle-type weapon.


SHOTGUN

Field

Represents a shotgun-type weapon.


SNIPER_RIFLE

Field

Represents a sniper rifle-type weapon.


MACHINEGUN

Field

Represents a machine gun-type weapon.


C4

Field

Represents a C4 explosive.


TASER

Field

Represents a taser weapon.


GRENADE

Field

Represents a grenade-type weapon.


STACKABLEITEM

Field

Represents a stackable item-type weapon.


FISTS

Field

Represents fists as a weapon type.


BREACHCHARGE

Field

Represents a breach charge-type weapon.


BUMPMINE

Field

Represents a bump mine-type weapon.


TABLET

Field

Represents a tablet-type weapon.


MELEE

Field

Represents a melee-type weapon.


SHIELD

Field

Represents a shield-type weapon.


ZONE_REPULSOR

Field

Represents a zone repulsor-type weapon.


UNKNOWN

Field

Represents an unknown weapon type.

float

Timestamp, in seconds.

int

Server tick number.

bool

In-game status.

bool

true if connected.

CNetChan

Network channel, or nil if does not exist.

cmd

string

Command to execute.

bool

unrestricted

Whether should the execution preserve any restrictions. Defaults to false.

int

Width.

int

Height.

Type

Description

<type>

Value.

Name

Type

Description

module

string

The name of the module

class

string

The name of the class

Type

Description

<type>

Casted value.

Name

Type

Description

value

<type>

Value.

Type

Description

string?

IP-address or Steam Server Address.

Type

Description

bool?

true if connected to the local machine.

Type

Description

bool

true if current channel is a dummy channel.

Type

Description

float?

Latency (in seconds).

If the current channel is null, this function will return nil instead.

If the current channel is null, this function will return nil instead.

Type

Description

Vector

Origin.

Type

Description

EItemDefinitionIndex

Weapon ID.

Type

Description

CSWeaponType

Weapon type.

Type

Description

CCSWeaponBaseVData

Weapon data.

C_BaseEntity

index

number

The hit position index

Vector?

The bullet impact, nil if index >= GetHitPosCount() .

number

The bullet impact count

Get

Method

Returns the entity, or nil if nothing found.

Arguments

None.

Returns

Type

Description

<type>

Entity instance.

Example


Valid

Method

Returns true if the handle is valid.

Arguments

None.

Returns

Type

Description

bool

true if valid.

Example


IsClientSide

Method

Returns true if the handle links to a client-side entity.

Arguments

None.

Returns

Type

Description

bool

true if client-sided.

Example

You can also compare this type using a == operator.

local last_time = game.engine:GetLastTimestamp();
local server_tick = game.engine:GetLastServerTick();
if game.engine:InGame() then
    print("I'm in game!");
end
if game.engine:IsConnected() then
    print("I'm connected!");
end
local chan = game.engine:GetNetChan();
game.engine:ClientCmd('say Hello!');
local w, h = game.engine:GetScreenSize();
local health = player.m_iHealth:Get();
local collision = player.m_pCollision:GetAs('client.dll', 'CCollisionProperty');
local mins = collision.m_vecMins:Get()
local maxs = collision.m_vecMaxs:Get()
player.m_iHealth:Set(50); -- won't really do anything with the health
local chan = game.engine:GetNetChan();
if chan and not chan:IsNull() then
    print(chan:GetAddress());
end
local chan = game.engine:GetNetChan();
if chan and not chan:IsNull() and chan:IsLoopback() then
    print('Connected to localhost!');
end
local chan = game.engine:GetNetChan();
if not chan or chan:IsNull() then
    print('Not connected!');
end
local chan = game.engine:GetNetChan();
if chan and not chan:IsNull() then
    print('Current latency: ' .. tostring(math.round(chan:GetLatency() * 1000.0)) .. 'ms');
end
local org = wep:GetAbsOrigin();
local wep_id = wep:GetDefIndex();
local type = wep:GetType();
local data = wep:GetData();
local positions = {}
for i = 1, pen_result:GetHitPosCount() do
    positions[i] = pen_result:GetHitPos(i - 1)
end
local amount = pen_result:GetHitPosCount()
local ent = handle:Get();
if handle:Valid() then
    -- ...
end
if handle:IsClientSide() then
    -- ...
end
>

Player pawns.


controllers

Field

Type: EntityList_t<C_CSPlayerController>

Player controllers.


items

Field

Type: EntityList_<C_CSWeaponBase>

Items (held).


droppedItems

Field

Type: EntityList_<C_CSWeaponBase>

Dropped items.


projectiles

Field

Type: EntityList_<C_BaseCSGrenadeProjectile>

Grenade projectiles.


GetLocalPawn

Function

Returns the local player's pawn.

Arguments

None.

Returns

Type

Description

Pawn.

Example


GetLocalController

Function

Returns the local player's controller.

Arguments

None.

Returns

Type

Description

Controller.

Example

Never store any entities in the global scope! Any entity might get deleted, and you will no longer have a valid instance of that entity, which will inevitably lead to a crash. If you need to globally store an entity somewhere, we strongly recommend you store an instance of CHandle, and use it's Get method to retrieve the entity again, when needed.

EntityList_t
local lp = entities.GetLocalPawn();
local lp_ctrl = entities.GetLocalController();
C_CSPlayerPawn
Function

Simulates a bullet fired from a specific weapon.

Arguments

Name
Type
Description

origin

Where the bullet is coming from

delta

The direction the bullet is going, computed as end_point - origin_point

Returns

Type
Description

boolean

If there was an error during simulation.

The penetration data

Example


ScaleDamage

Function

Scales up the damage from a weapon given a hitgroup and, optionally, a player.

Arguments

Name
Type
Description

damage

number

The damage to be scaled

weapon

The gun the bullet is being fired from

Returns

Type
Description

number

The scaled damage

Example

Methods in this namespace are accessed with the . operator, not the usual : operator.

Only call these inside the createMove callback!

local eye_position = local_player:GetEyePos()
local weapon = local_player:GetActiveWeapon()
local enemy_position = enemy:GetHitboxCenter(EHitBox.HEAD)

local _, pen = mods.penetration.FireBullet(eye_position, enemy_position - eye_position, 
                                         weapon, enemy)

print(pen.damage, pen.hitgroup)
local weapon = local_player:GetActiveWeapon()

local dmg = mods.penetration.ScaleDamage(45, weapon, HitGroup_t.HEAD, enemy)

This function can be expensive, use it moderately.

Texture

This type represents a texture object.

This type inherits type. All of its base methods and fields are also available in this type.

Supported texture formats are:

  • JPEG (.jpg, .jpeg) - 12 bpc/arithmetic are not supported.

  • PNG (.png)

__call

Constructor

Constructs an instance of this type.

Passing an invalid pointer, a or memory region that is smaller than the size will result in a crash.

Arguments

1. From file.

2. From memory.

3. From RGBA data.

Returns

Example


isAnimated

FieldRead only

Type: bool

Set to true if this is an instance of .


GetSize

Method

Returns size of this texture.

Arguments

None.

Returns

Example

Font

This type represents a font object. Internally, this type uses FreeType library to rasterize font glyphs.

This type inherits type. All of its base methods and fields are also available in this type.

__call

Constructor

Constructs a font object.

Passing an invalid pointer, a or memory region that is smaller than the size will result in a crash.

Arguments

1. From file.

1. From memory.

1. From memory, with codepoint pairs.

Returns

Example

AnimatedTexture

This type is an animated texture. This texture type only supports animated GIF types, and does not support APNG.

This type inherits type. All of its base methods and fields are also available in this type.

If you pass an unsupported type, it will instead work exactly like type, meaning controlling frames and looping will be meaningless.

Using this type for texture atlases is possible, although highly unrecommended. It will produce extra texture objects in memory, and overall will be much slower. Instead, it is advised to construct an actual texture atlas, use type, and use texture mapping.

__call

Constructor

Constructs animated texture.

Passing an invalid pointer, a or memory region that is smaller than the size will result in a crash.

Arguments

1. From file.

2. From memory.

Returns

Example


shouldLoop

Field

Type: bool

If set to false, will not loop the animation automatically. Defaults to true.


ResetLoop

Method

Reset loop to run from the first frame.

Arguments

None.

Returns

Nothing.

Example


SetFrame

Method

Set a specific frame on the animation. If looping is enabled, will continue the cycle from the passed frame. Otherwise, will display a specific frame of the animation.

Arguments

Returns

Nothing.

Example


GetFrameCount

Method

Returns amount of frames in the animation.

Arguments

None.

Returns

Example

CPhysicsQueryInterface

Usage:

Usage: game.physicsQueryInterface:{method}

This type encapsulates all tracing functionalities.

C_BaseEntity

This type represents a base game entity.

__index

Function

Attemps to search for a field in this class.

Arguments

C_CSPlayerPawn
C_CSPlayerController

weapon

C_CSWeaponBaseGun

The gun the bullet is being fired from

target

C_CSPlayerPawn

The target player, can be nil

clamp

boolean

Whether or not to clamp the tracing to the player.

hitgroup

HitGroup_t

The desired hitgroup.

target

C_CSPlayerPawn

The target player

Vector
Vector
PenResult_t
C_CSWeaponBaseGun

ControlType

This enum determines the current control's type.

You can only construct types that are listed below in the navigation, and only if those have a constructor.

DEFAULT

Field

Default control. You are very unlikely to ever stumble upon this type.


BUTTON

Field

Button control.


CHECKBOX

Field

Checkbox control.


CHILD_TAB

Field

Child tab control. Only possible to find within tab_layout controls.


COLOR_PICKER

Field

Color picker control.


COMBO_BOX

Field

Combo box control.


CONTROL_CONTAINER

Field

Default control with a container. You are very unlikely to ever stumble upon this type.


GROUP

Field

Groupbox control.


HOTKEY

Field

Hotkey input control.


HSV_SLIDER

Field

HSB slider (Saturation/Brightness box, Hue slider and Opacity slider).


LABEL

Field

Label control.


LAYOUT

Field

Layout control.


LIST

Field

Listbox control.


LOADING

Field

Loading spinner.


NOTIFICATION_CONTROL

Field

Notification item control. One of the types in the core UI framework, never actually used within Fatality.


POPUP

Field

Basic popup window.


SELECTABLE

Field

Basic selectable item.


SLIDER

Field

Slider item. This type doesn't tell the internal value type used.


SPACER

Field

Spacer control.


TAB

Field

Horizontal or vertical tab.


TABS_LAYOUT

Field

A variant of layout that is used specifically to operate tabs.


WEAPON_TABS_LAYOUT

Field

A variant of layout that is used specifically to operate weapon tabs.


TEXT_INPUT

Field

Text input control.


TOGGLE_BUTTON

Field

A variant of button that looks like button, but works like a checkbox.


WINDOW

Field

Basic window control.


WIDGET

Field

Basic widget control.


SETTINGS

Field

Settings control.


IMAGE

Field

Image control.


LUA

Field

Lua control.


LUA_CONTAINER

Field

Lua container control.


int

Height (row count).

p

int

Pitch (row width). This is the amount of bytes per row.

  • TGA (.tga)

  • BMP (.bmp) - 1 bpp and RLE variants are not supported.

  • PSD (.psd) - composited view only, no extra channels, 8/16 bpc

  • GIF (.gif) - only first frame, for animated gifs use AnimatedTexture

  • HDR (.hdr)

  • PIC (.pic)

  • PNM (.pnm, .ppm, .pgm) - PPM and PGM are binary only

  • Name

    Type

    Description

    path

    string

    Path to a valid texture file.

    Name

    Type

    Description

    data

    Ptr

    Pointer to texture file data in memory.

    sz

    int

    Size of the texture file data.

    Name

    Type

    Description

    data

    Ptr

    Pointer to RGBA data in memory.

    w

    int

    Width.

    Type

    Description

    texture

    Texture object.

    Type

    Description

    Vec2

    Texture dimensions.

    AnimatedTexture
    Managed

    h

    Name

    Type

    Description

    path

    string

    Path to the texture file.

    Name

    Type

    Description

    data

    Ptr

    Pointer to texture file data in memory.

    sz

    int

    Size of the texture file data.

    Type

    Description

    animated_texture

    Animated texture instance.

    Name

    Type

    Description

    frame

    int

    Frame number. Invalid frame numbers will be clamped.

    Type

    Description

    int

    Frame count.

    Frame count starts from 0.

    Texture
    Texture
    Texture
    local tex = draw.Texture('funny_meme.png');
    local sz = tex:GetSize();
    local gif = draw.AnimatedTexture('funny_gif.gif');
    gif:ResetLoop();
    gif:SetFrame(5);
    local frames = gif:GetFrameCount();
    gif:SetFrame(frames - 2); -- set to the last frame

    Font flags. Use bit library to construct them. Defaults to 0.

    mi

    int

    Starting codepoint. Defaults to 0.

    ma

    int

    Ending codepoint. Defaults to 255 (entire ASCII code page).

    float

    Font height, in pixels.

    fl

    Font flags. Use bit library to construct them. Defaults to 0.

    mi

    int

    Starting codepoint. Defaults to 0.

    ma

    int

    Ending codepoint. Defaults to 255 (entire ASCII code page).

    float

    Font height, in pixels.

    fl

    Font flags. Use bit library to construct them. Defaults to 0.

    pairs

    table[{int, int}...]

    Min/max pairs. This is a standard array, consisting of {int, int} pairs.

    Name

    Type

    Description

    path

    string

    Path to a ttf/otf file.

    size

    float

    Font height, in pixels.

    Name

    Type

    Description

    mem

    Ptr

    Pointer to a font file in memory.

    sz

    int

    Font file size, in bytes.

    Name

    Type

    Description

    mem

    Ptr

    Pointer to a font file in memory.

    sz

    int

    Font file size, in bytes.

    Type

    Description

    Font

    Font object.

    local cool_font = draw.Font('myfont.ttf', 16);
    FontBase

    fl

    size

    size

    TraceRay

    Function

    Performs a regular trace ray call. Skips local player.

    Arguments

    Name

    Type

    Description

    ray

    The ray/shape

    from

    The starting position

    Returns

    Type

    Description

    The resulting trace object

    Example


    TraceMovement

    Function

    Performs a trace ray call using the player movement mask. Skips local player.

    Arguments

    Name

    Type

    Description

    ray

    The ray/shape

    from

    The starting position

    Returns

    Type

    Description

    The resulting trace object

    Example


    TraceGrenade

    Function

    Performs a trace call using the grenade mask, as a line. Doesn't use a custom ray.

    Arguments

    Name

    Type

    Description

    from

    The starting position

    to

    The ending position

    Returns

    Type

    Description

    The resulting trace object


    TraceGrenadeHull

    Function

    Performs a trace call using the grenade mask, as a hull. Doesn't use a custom ray.

    Arguments

    Name

    Type

    Description

    from

    The starting position

    to

    The ending position

    Returns

    Type

    Description

    The resulting trace object

    local ray = Ray_t()
    local from = Vector(0, 0, 0)
    local to = Vector(100, 100, 100)
    
    local trace = game.physicsQueryInterface:TraceRay(ray, from, to)
    local player = entities.GetLocalPawn()
    local ray = Ray_t() do
        local collision = player.m_pCollision:GetAs('client.dll', 'CCollisionProperty')
        ray:set_hull(collision.m_vecMins:Get(), collision.m_vecMaxs:Get())
    end
    
    local from = player:GetAbsOrigin()
    local to = player:GetAbsOrigin() + player:GetAbsVelocity()
    
    local trace = game.physicsQueryInterface:TraceMovement(ray, from, to)

    Name

    Type

    Description

    name

    string

    Field name.

    Returns

    Type

    Description

    Accessor instance or pointer accessor instance

    Example


    GetClassName

    Function

    Returns schema class name.

    Returns

    Type

    Description

    string

    Name. Returns nil when failed.

    Example


    GetHandle

    Function

    Returns handle for this entity.

    Returns

    Type

    Description

    Entity handle

    Example


    GetPointer

    Function

    Returns a memory address for this entity, useful with FFI.

    Returns

    Type

    Description

    userdata

    Entity pointer

    Example


    ToWeaponBaseGun

    Function

    Safe-casts the entity to C_CSWeaponBaseGun, returns nil if not a C_CSWeaponBaseGun .

    Returns

    Type

    Description

    ?

    Casted entity. Returns nil if the cast failed.

    Example


    ToWeaponBase

    Function

    Safe-casts the entity to C_CSWeaponBase, returns nil if not a C_CSWeaponBase .

    Returns

    Type

    Description

    ?

    Casted entity. Returns nil if the cast failed.

    Example


    ToPlayerPawn

    Function

    Safe-casts the entity to C_CSPlayerPawn, returns nil if not a C_CSPlayerPawn .

    Returns

    Type

    Description

    ?

    Casted entity. Returns nil if the cast failed.

    Example


    ToPlayerController

    Function

    Safe-casts the entity to C_CSPlayerController, returns nil if not a C_CSPlayerController .

    Returns

    Type

    Description

    ?

    Casted entity. Returns nil if the cast failed.

    Example

    This type may be returned for any other abstract entity class, but internally will point to the correct type.

    local health = player.m_iHealth;
    local health = player['m_iHealth']; -- this also works
    local name = entity:GetClassName()
    local name = entity:GetHandle()
    local name = entity:GetPointer()
    local gun = entity:ToWeaponBaseGun()
    local wpn = entity:ToWeaponBase()
    local pawn = entity:ToPlayerPawn()
    local controller = entity:ToPlayerController()

    Shader

    This type represents a shader. HLSL documentation

    This type inherits type. All of its base methods and fields are also available in this type.

    Only fragment shaders (aka Pixel Shaders) are supported.

    Rendering system uses Shader Version 4 (ps_4_0).

    HLSL structures

    The constant buffer fields are the following:

    Name

    The input fields are the following:

    The bound objects are the following:

    Template:


    __call

    Constructor

    Constructs a shader.

    Arguments

    Returns

    Example

    events

    Usage: events.{event_name}

    There are a number of events that Fatality provides to use in the API - from various hooks, to in-game events. Each event entry is an object of Event_t. This table documents events to be used by your scripts.

    You are not required to remove events when your script unloads. It is done automatically by the API engine.

    There is an equivalent to an unload or shutdown callback, check it out .

    presentQueue

    Field

    Invoked each time the game queues a frame for rendering. This is the only permitted location for drawing on screen.

    Arguments

    None.


    frameStageNotify

    Field

    Invoked every time the game progresses onto another frame stage. This event is called before the game handles a new frame stage.

    Arguments

    Name
    Type
    Description

    renderStartPre

    Field

    Invoked every time game starts the scene rendering process. This event is called before the game's function runs.

    Arguments

    None.


    renderStartPost

    Field

    Invoked every time game starts scene rendering process. This event is called after the game's function runs.

    Arguments

    Name
    Type
    Description

    setupViewPre

    Field

    Invoked every time the game sets up the view information. This event is called after the game's function runs.

    Arguments

    None.


    overrideView

    Field

    Invoked every time the game internally overrides view information. You are free to change whatever you like in the provided view setup.

    Arguments


    createMove

    Field

    Invoked every time the game processes a game tick.

    Arguments


    event

    Field

    Invoked every time a game event fires.

    Arguments

    Name
    Type
    Description

    input

    Field

    Invoked every time the GUI processes input.

    Arguments

    Name
    Type
    Description

    menuToggled

    Field

    Invoked every time the GUI window is opened or closed.

    Arguments

    Name
    Type
    Description

    playerInfoPre

    Field

    Invoked every time before the player ESP is rendered. Useful for accessing the rendering layer for visuals or adding new elements to ESP.

    Arguments

    Name
    Type
    Description

    playerInfoPost

    Field

    Invoked every time after the player ESP is rendered.

    Arguments

    Name
    Type
    Description

    Command

    This type is used to change render command parameters.

    Be cautious when changing stuff in an instance of this type. Passing invalid data to texture or frag_shader, or not restoring some changes after you're done drawing can lead to undefined behavior, and more likely, a crash. If you are not sure how to operate this type, take a look into examples.

    texture

    Field

    Type: Ptr

    Texture pointer. You can get one from an instance of type by accessing obj field. Passing invalid data to this field WILL result in a crash. For a safer way, please use .


    fragShader

    Field

    Type:

    Fragment shader (aka Pixel Shader in DirectX terms) pointer. You can get one from an instance of type by accessing obj field. Passing invalid data to this field WILL result in a crash. For a safer way, please use .


    clipRect

    Field

    Type: ?

    Clip rectangle used for scissor testing. If this is set to nil, will not clip anything.


    uvRect

    Field

    Type: ?

    UV rect used for texture mapping. If this field is set to nil, will use 0, 0, 1, 1 rectangle to map the texture. You can learn more about texture mapping in the tutorial section.


    alpha

    Field

    Type: float

    Global opacity override. Defaults to 1, but if you set anything else - will modulate opacity of every next shape you will render.


    rotation

    Field

    Type: float

    Shape rotation. Not all shapes support this field. The value is set in degrees, not radians.


    antiAlias

    Field

    Type: bool

    If set to true, will apply tesselation to shapes.


    ignoreScaling

    Field

    Type: bool

    If set to true, will ignore global DPI scale. This is set to true by default, but you are free to change it to false if you are trying to render some custom UI elements.


    chainedCall

    Field

    Type: bool

    Only useful when using shaders. If set to true, will not update back buffer texture. This can be used if you need the very same texture data, as when applying several shaders to the back buffer.


    onlyDownsampled

    Field

    Type: bool

    If set to true, will capture back buffer (as long as chainedCall is set to false). The name of this field is quite misleading due to the fact that in the CS:GO version of Fatality, it was used to configure if the rendering system should also downsample the captured backbuffer into another texture. In DirectX11, this operation is much faster, so it is done regardless.


    captureBackBuffer

    Field

    Type: bool

    An alias to onlyDownsampled.


    isTile

    Field

    Type: bool

    If set to true, will use a separate texture sampler that supports tiling. By default, all textures are stretched, but if you enable this option - their tiling and stretch will be fully configurable by the uv_rect field.


    mode

    Field

    Type:

    Rendering mode. You can read more about it in the type's documentation.


    SetTexture

    Method

    Sets a texture in a safe manner.

    Arguments

    Returns

    Nothing.

    Example


    SetShader

    Method

    Sets a fragment shader in a safe manner.

    Arguments

    Returns

    Nothing.

    Example

    C_CSPlayerController

    This type represents a CCSPlayerController class.

    This type inherits type. All of its base methods and fields are also available in this type.

    IsEnemy

    Method

    Returns true if this player is an enemy to the local player.

    Arguments

    None.

    Returns

    Example


    GetName

    Method

    Returns the sanitized player name.

    Arguments

    None.

    Returns

    Example


    GetPawn

    Method

    Returns the pawn attached to this controller.

    Arguments

    None.

    Returns

    Example


    GetActiveWeapon

    Method

    Returns the active weapon.

    Arguments

    None.

    Returns

    Example


    GetObserverPawn

    Method

    Returns the observer pawn used for this controller.

    Arguments

    None.

    Returns

    Example


    GetObserverTarget

    Method

    Returns the pawn this controller is currently observing.

    Arguments

    None.

    Returns

    Example


    GetObserverMode

    Method

    Returns the current observer mode.

    Arguments

    None.

    Returns

    Example


    GetSteamID

    Method

    Returns this player's Steam ID64.

    Arguments

    None.

    Returns

    Example


    GetStringSteamID

    Method

    Returns this player's Steam ID64, as a string.

    Arguments

    None.

    Returns

    Example

    CHitboxInfo

    This type encapsulates all of the hitbox information that can be retrieved.

    GetName

    Method

    Returns the name of the hitbox.

    Bits

    This type represents a bitset value.

    Reset

    Method

    Resets the value.

    FontFlags
    FontFlags
    FontFlags

    to

    Vector

    The ending position

    ignoreWorld

    boolean

    If true, will ignore the world and only trace against entities.

    to

    Vector

    The ending position

    thrower

    C_BaseEntity

    The entity throwing the grenade, gets skipped

    ignore_breakable

    boolean

    Ignores any breakable objects if true

    thrower

    C_BaseEntity

    The entity throwing the grenade, gets skipped

    Ray_t
    Vector
    CGameTrace
    Ray_t
    Vector
    CGameTrace
    Vector
    Vector
    CGameTrace
    Vector
    Vector
    CGameTrace
    SchemaAccessor_t
    CHandle
    C_CSWeaponBaseGun
    C_CSWeaponBase
    C_CSPlayerPawn
    C_CSPlayerController

    int

    LPARAM.

    stage

    ClientFrameStage_t

    Current frame stage.

    setup

    CViewSetup

    View setup information.

    Name

    Type

    Description

    setup

    CViewSetup

    View setup information.

    Name

    Type

    Description

    userCommand

    CUserCmd

    Create move information.

    event

    GameEvent_t

    Game event.

    msg

    int

    System message. Documentation

    w

    int

    WPARAM.

    visible

    boolean

    Whether or not the menu is visible.

    data

    PlayerInfoCallbackData

    The player ESP data

    data

    PlayerInfoCallbackData

    The player ESP data

    You can retrieve the view information from game.viewRender service.

    We do not listen to every single event that exists in the game. If you need something that we don't listen to, please use mods.events

    This doesn't override the software's configuration, meaning that if you have ESP disabled for either enemies or teammates, the callback will not be called for those players.

    This doesn't override the software's configuration, meaning that if you have ESP disabled for either enemies or teammates, the callback will not be called for those players.

    here

    l

    float2

    UV coordinates (u, v). Register: TEXCOORD0.

    Type

    Description

    mvp

    float4x4

    Projection matrix.

    tex

    float2

    Texture dimensions.

    time

    float

    Render time (NOT the frame time).

    alpha

    float

    Global opacity override.

    Name

    Type

    Description

    pos

    float4

    Vertex position on screen (x,y,z over w). Register: SV_POSITION.

    col

    float4

    Vertex color tint (r, g, b, a). Register: COLOR0.

    Name

    Type

    Description

    sampler0

    sampler

    Texture sampler.

    texture0

    Texture2D

    Texture object.

    Name

    Type

    Description

    src

    string

    Shader source code.

    Type

    Description

    Shader

    Shader object.

    Managed

    uv

    Name

    Type

    Description

    tex

    Texture?

    Texture object.

    Name

    Type

    Description

    sh

    Shader?

    Shader object.

    It is advised to instead use layer's override_clip_rect method. While you can pass custom rect to this field, you will lose information about previous clip rects set before. Using that method will make sure to intersect the previous rect with the one you pass and produce a probably more expected result.

    As of now, not every shape supports tesselation, but it is advised to have it enabled at all times anyway. It will produce much better result anyway.

    Please note that capturing back buffer is a rather slow operation. It is better to not capture it too often. Back buffer is automatically captured to the only layer you can use anyway, and it is better to use that one instead, to make sure rendering happens as fast as it is possible.

    Texture
    SetTexture
    Ptr
    Shader
    SetShader
    Rect
    Rect
    RenderMode

    Type

    Description

    bool

    true if an enemy.

    Type

    Description

    string

    Player's name.

    Type

    Description

    C_CSPlayerPawn

    Pawn instance.

    Type

    Description

    C_CSWeaponBaseGun

    Weapon instance.

    Type

    Description

    C_CSPlayerPawn?

    Entity.

    Type

    Description

    C_BaseEntity?

    Entity.

    Type

    Description

    ObserverMode_t

    Observer mode.

    Type

    Description

    table<number>

    The 64 bits of this player's steam ID, separated in two 32 bit values: low and high.

    Type

    Description

    string

    The steam ID in string format

    C_BaseEntity
    Arguments

    None.

    Returns

    Nothing.

    Example


    GetRaw

    Method

    Returns the raw value.

    Arguments

    None.

    Returns

    Type

    Description

    int

    Raw value.

    Example


    SetRaw

    Method

    Sets the raw value.

    Arguments

    Name

    Type

    Description

    val

    int

    Raw value.

    Returns

    Nothing.

    Example


    None

    Method

    Returns true if no bits are set.

    Arguments

    None.

    Returns

    Type

    Description

    bool

    true if no bits are set.

    Example


    Set

    Method

    Enables a bit.

    Arguments

    Name

    Type

    Description

    bit

    int

    Bit number.

    Returns

    Nothing.

    Example


    Unset

    Method

    Disables a bit.

    Arguments

    Name

    Type

    Description

    bit

    int

    Bit number.

    Returns

    Nothing.

    Example


    Get

    Method

    Returns bit state.

    Arguments

    Name

    Type

    Description

    bit

    int

    Bit number.

    Returns

    Type

    Description

    bool

    Bit status.

    Example


    Toggle

    Method

    Toggles bit state.

    Arguments

    Name

    Type

    Description

    bit

    int

    Bit number.

    Returns

    Nothing.

    Example

    Maximal bit number for this type is 63. Setting or getting any bits outside of that range will cause a crash.

    cbuffer cb : register(b0) {
        float4x4 mvp;
        float2 tex;
        float time;
        float alpha;
    };
    
    struct PS_INPUT {
        float4 pos : SV_POSITION;
        float4 col : COLOR0;
        float2 uv : TEXCOORD0;
    };
    
    sampler sampler0;
    Texture2D texture0;
    local blur = draw.Shader([[
    // define constant buffer.
    cbuffer cb : register(b0) {
        float4x4 mvp;
        float2 tex;
        float time;
        float alpha;
    };
    
    // define input.
    struct PS_INPUT {
        float4 pos : SV_POSITION;
        float4 col : COLOR0;
        float2 uv : TEXCOORD0;
    };
    
    // use texture sampler and texture.
    sampler sampler0;
    Texture2D texture0;
    
    float4 main(PS_INPUT inp) : SV_Target {
        float radius = 2.0; // blur radius
        float2 inv_size = 1.0 / tex.xy; // inversed size of the texture
        float weight = 0.0; // total weight
        float4 color = 0.0; // total color
    
        // perform a gaussian blur
        for (float x = -radius; x <= radius; x += 1.0)
        {
            for (float y = -radius; y <= radius; y += 1.0)
            {
                float2 coord = inp.uv + float2(x, y) * inv_size;
                color += texture0.Sample(sampler0, coord) * exp(-((x * x + y * y) / (2.0 * radius * radius)));
                weight += exp(-((x * x + y * y) / (2.0 * radius * radius)));
            }
        }
    
        // average the color
        color /= weight;
        color.a *= inp.col.a; // apply alpha modulation
        return color;
    }
    ]]);
    cmd:SetTexture(my_tex);
    cmd:SetShader(my_shader);
    if player:IsEnemy() then
        -- ...
    end
    local name = player:GetName();
    local pawn = ctrl:GetPawn();
    local wep = player:GetActiveWeapon();
    local obs_pawn = ctrl:GetObserverPawn();
    local obs = ctrl:GetObserverTarget();
    local mode = ctrl:GetObserverMode();
    local id = ctrl:GetSteamID();
    print(id.low, id.high);
    local id = ctrl:GetStringSteamID();
    print(id);
    bits:Reset();
    local raw = bits:GetRaw();
    bits:SetRaw(long_long_value);
    if bits:None() then
        -- ...
    end
    bits:Set(5); -- set bit #5 (same as bit.bor(val, bit.lshift(1, 5)))
    bits:Unset(5);
    if bits:Get(5) then
        -- ...
    end
    bits:Toggle(5);
    Arguments

    None.

    Returns

    Type

    Description

    string

    The name

    Example


    GetSurfaceProperty

    Method

    Returns the hitbox's surface property.

    Arguments

    None.

    Returns

    Type

    Description

    string

    The hitbox property

    Example


    GetBoneName

    Method

    Returns the hitbox's bone name.

    Arguments

    None.

    Returns

    Type

    Description

    string

    The hitbox bone

    Example


    GetMinBounds

    Method

    Returns the hitbox's minimum bounds.

    Arguments

    None.

    Returns

    Type

    Description

    The mins

    Example


    GetMaxBounds

    Method

    Returns the hitbox's maximum bounds.

    Arguments

    None.

    Returns

    Type

    Description

    The maxs

    Example


    GetShapeRadius

    Method

    Returns the hitbox's radius.

    Arguments

    None.

    Returns

    Type

    Description

    number

    The radius

    Example


    GetBoneNameHash

    Method

    Returns the hitbox's name hash.

    Arguments

    None.

    Returns

    Type

    Description

    number

    The hash

    Example


    GetGroupID

    Method

    Returns the hitbox's group ID.

    Arguments

    None.

    Returns

    Type

    Description

    number

    The ID

    Example


    IsTranslationOny

    Method

    Returns whether the hitbox only translates or not.

    Arguments

    None.

    Returns

    Type

    Description

    boolean

    The ID

    Example


    GetCRC

    Method

    Returns the hitbox's CRC value.

    Arguments

    None.

    Returns

    Type

    Description

    number

    The CRC

    Example


    GetRenderColor

    Method

    Returns the hitbox's rendering color. Not really useful.

    Arguments

    None.

    Returns

    Type

    Description

    userdata

    The color

    Example


    GetHitboxIndex

    Method

    Returns the hitbox's unique index.

    Arguments

    None.

    Returns

    Type

    Description

    number

    The index

    Example

    local hbox_name = hitbox:GetName();
    local prop = hitbox:GetSurfaceProperty();
    local bone_name = hitbox:GetBoneName();
    local mins = hitbox:GetMinBounds();
    local maxs = hitbox:GetMaxBounds();
    local radius = hitbox:GetShapeRadius();
    local hash = hitbox:GetBoneNameHash();
    local id = hitbox:GetGroupID();
    local translate = hitbox:IsTranslationOny();
    local crc = hitbox:GetCRC();
    local crc = hitbox:GetRenderColor();
    local hbox_index = hitbox:GetHitboxIndex();

    Vec2

    __call

    Constructor

    Creates a new 2D vector instance.

    Arguments

    1. Default vector (0, 0).

    None.

    2. Single value.

    3. XY values.

    Returns

    Example


    x

    Field

    Type: float

    X coordinate.


    y

    Field

    Type: float

    Y coordinate.


    Clone

    Method

    Returns a copy of this vector instance.

    Arguments

    None.

    Returns

    Example


    Floor

    Method

    Returns floored variant of this vector.

    Arguments

    None.

    Returns

    Example


    Ceil

    Method

    Returns ceiled variant of this vector.

    Arguments

    None.

    Returns

    Example


    Round

    Method

    Returns rounded variant of this vector.

    Arguments

    None.

    Returns

    Example


    Len

    Method

    Returns length of this vector.

    Arguments

    None.

    Returns

    Example


    LenSqr

    Method

    Returns squared length of this vector.

    Arguments

    None.

    Returns

    Example


    Dist

    Method

    Returns distance to another vector.

    Arguments

    Returns

    Example


    DistSqr

    Method

    Returns squared distance to another vector.

    Arguments

    Returns

    Example

    draw

    Usage: draw.{func_or_field}

    This table describes the rendering system of the software.

    All types and enums described in the child sections must be prefixed with draw.. This is done so specific types are not confused with others, such as the separate color types present in rendering and the game.

    adapter

    FieldRead only

    Type:

    Rendering adapter.


    textures

    FieldRead only

    Type: <>

    A string to map of all managed textures. You can query and push textures with custom IDs. When you add a texture to this map, it will be automatically destroyed and recreated when required (such as when DX11 device gets lost).


    fonts

    FieldRead only

    Type: <>

    A string to map of all managed fonts. You can query and push fonts with custom IDs. When you add a font to this map, it will be automatically destroyed and recreated when required (such as when DX11 device gets lost).


    shaders

    FieldRead only

    Type: <>

    A string to map of all managed shader. You can query and push shader with custom IDs. When you add a shader to this map, it will be automatically destroyed and recreated when required (such as when DX11 device gets lost).


    surface

    FieldRead only

    Type:

    The layer you can render on.


    GetTime

    Method

    Returns current render time, alias to .

    Arguments

    None.

    Returns

    Example


    GetFrameTime

    Method

    Returns current frame time, alias to .

    Arguments

    None.

    Returns

    Example


    GetScale

    Method

    Returns current render DPI scaling multiplier.

    Arguments

    None.

    Returns

    Example


    GetDisplay

    Method

    Returns current render screen size, similar to .

    Arguments

    None.

    Returns

    Example


    CreatePanoramaSvgTexture

    Method

    Finds and retrieves SVG data from Panorama and creates a new texture. Useful for retrieving icons (e.g. weapons and utilities) from the game.

    Arguments

    Returns

    Example

    TextParams

    This type is used to determine text alignment.

    WithV

    Function

    Creates TextParams

    Vector
    Vector

    Name

    Type

    Description

    value

    float

    X and Y coordinates.

    Name

    Type

    Description

    x

    float

    X coordinate.

    y

    float

    Y coordinate.

    Type

    Description

    Vec2

    New vector.

    Type

    Description

    Vec2

    The copied vector

    Type

    Description

    Vec2

    Floored variant.

    Type

    Description

    Vec2

    Ceiled variant.

    Type

    Description

    Vec2

    Rounded variant.

    Type

    Description

    float

    Length.

    Type

    Description

    float

    Length.

    Name

    Type

    Description

    other

    Vec2

    Other vector.

    Type

    Description

    float

    Distance.

    Name

    Type

    Description

    other

    Vec2

    Other vector.

    Type

    Description

    float

    Distance.

    This method is de-facto faster than the non-squared variant. Use it, if you need extra performance.

    This method is de-facto faster than the non-squared variant. Use it, if you need extra performance.

    Type

    Description

    float

    The current time

    Type

    Description

    float

    The frame time

    Type

    Description

    float

    The multiplier

    Type

    Description

    Vec2

    The screen size

    Name

    Type

    Description

    path

    string

    Path to the SVG

    height

    number

    Height of the texture, in pixels

    Type

    Description

    Texture

    The created texture

    Built-in textures:

    • gui_loading: loading spinner

    • gui_user_avatar: current user's profile picture. May be nil if you don't have any avatar set

    • gui_icon_up: up chevron

    • gui_icon_down: down chevron

    • gui_icon_copy: copy icon

    • gui_icon_paste: paste icon

    • gui_icon_add: add icon

    • gui_icon_search: search icon

    • gui_icon_settings: settings icon (a cogwheel)

    • gui_icon_bug: bug icon

    • gui_icon_key.N: keyboard/mouse key icons. Replace N with the char code of a required button

    • icon_rage: RAGE tab icon

    • icon_legit: LEGIT tab icon

    • icon_visuals: VISUALS tab icon

    • icon_misc: MISC tab icon

    • icon_scripts: LUA tab icon

    • icon_skins: SKINS tab icon

    • icon_cloud: cloud icon

    • icon_file: file icon

    • icon_refresh: refresh icon

    • icon_save: save icon

    • icon_configs: "Configs" popup icon

    • icon_keys: keyboard icon

    • icon_info: "About" popup icon

    • icon_close: close icon (cross)

    • icon_load: load icon

    • icon_import: import icon

    • icon_export: export icon

    • icon_delete: delete icon

    • icon_autoload: "Autoload" icon

    • icon_allow_insecure: "Allow insecure" icon

    • icon_cloud_upd: cloud update icon

    • player_texture: player preview texture

    Built-in fonts:

    • gui_debug: Verdana, 13px

    • gui_title: Figtree ExtraBold, 23px

    • gui_main: Figtree Medium, 14px

    • gui_main_shadow: Figree Medium, 14px, with shadow

    • gui_main_fb: Segoe UI Semibold, 14px

    • gui_bold: Figtree ExtraBold, 14px

    • gui_bold_fb: Segoe UI Black, 14px

    • gui_semi_bold: Figtree SemiBold, 14px

    • gui_semi_bold_fb: Segoe UI Bold, 14px

    Build-in shaders:

    • blur_f: gaussian blur shader

    Adapter
    Accessor
    Texture
    Texture
    Accessor
    FontBase
    FontBase
    Accessor
    Shader
    Shader
    Layer
    m_flRealTime
    m_flFrameTime
    GetScreenSize()
    local vec = draw.Vec2(5, 10);
    local copy = vec:Clone();
    local fl = vec:Floor();
    local ceiled = vec:Ceil();
    local rounded = vec:Round();
    local len = vec:Len();
    local len = vec:LenSqr();
    local dist = vec1:Dist(vec2);
    local dist = vec1:DistSqr(vec2);
    local time = draw.GetTime()
    local time = draw.GetFrameTime()
    local dpi = draw.GetScale()
    local size = draw.GetDisplay()
    local tex = draw.CreatePanoramaSvgTexture('icons/equipment/inferno', 26)
    instance with vertical alignment.

    Arguments

    Name

    Type

    Description

    v

    Vertical alignment.

    Returns

    Type

    Description

    TextParams

    Created text params.

    Example


    WithH

    Function

    Creates TextParams instance with horizontal alignment.

    Arguments

    Name

    Type

    Description

    h

    Horizontal alignment.

    Returns

    Type

    Description

    TextParams

    Created text params.

    Example


    WithLine

    Function

    Creates TextParams instance with line alignment.

    Arguments

    Name

    Type

    Description

    line

    Line alignment.

    Returns

    Type

    Description

    TextParams

    Created text params.

    Example


    WithVH

    Function

    Creates TextParams instance with vertical and horizontal alignments.

    Arguments

    Name

    Type

    Description

    v

    Vertical alignment.

    h

    Horizontal alignment.

    Returns

    Type

    Description

    TextParams

    Created text params.

    Example


    WithVLine

    Function

    Creates TextParams instance with vertical alignment and line alignment.

    Arguments

    Name

    Type

    Description

    v

    Vertical alignment.

    line

    Line alignment.

    Returns

    Type

    Description

    TextParams

    Created text params.

    Example


    WithHLine

    Function

    Creates TextParams instance with horizontal alignment and line alignment.

    Arguments

    Name

    Type

    Description

    h

    Horizontal alignment.

    line

    Line alignment.

    Returns

    Type

    Description

    TextParams

    Created text params.

    Example


    WithVHLine

    Function

    Creates TextParams instance with vertical, horizontal and line alignments.

    Arguments

    Name

    Type

    Description

    v

    Vertical alignment.

    h

    Horizontal alignment.

    Returns

    Type

    Description

    TextParams

    Created text params.

    Example

    Line alignment only makes sense if you have multiple lines in your text. By default, all next lines will start from the left side of the text. You can change this behavior by using one of the functions that take line as a parameter. For example, if you pass right to the line alignment, all next lines will start from the right side. Text alignment will remain as dictated by v and h parameters.

    local align_top = draw.TextParams.WithV(draw.TextAlignment.TOP);
    local align_right = draw.TextParams.WithH(draw.TextAlignment.RIGHT);
    local lines_center = draw.TextParams.WithLine(draw.TextAlignment.CENTER);
    local align_bottom_right = draw.TextParams.WithVH(draw.TextAlignment.BOTTOM, draw.TextAlignment.RIGHT);
    local align = draw.TextParams.WithVLine(draw.TextAlignment.BOTTOM, draw.TextAlignment.CENTER);
    local align = draw.TextParams.WithHLine(draw.TextAlignment.CENTER, draw.TextAlignment.CENTER);
    local align = draw.TextParams.WithVHLine(draw.TextAlignment.CENTER, draw.TextAlignment.CENTER, draw.TextAlignment.CENTER);

    C_CSWeaponBaseGun

    This type represents a CCSWeaponBaseGun class.

    This type inherits type. All of its base methods and fields are also available in this type.

    GetAbsOrigin

    Method

    Returns the absolute origin (the one that is used for rendering).

    Arguments

    None.

    Returns

    Example


    GetMaxSpeed

    Method

    Returns the maximal player speed when holding this weapon.

    Arguments

    None.

    Returns

    Example


    GetInaccuracy

    Method

    Returns the current inaccuracy value.

    Arguments

    Returns

    Example


    GetSpread

    Method

    Returns the current spread value.

    Arguments

    Returns

    Example


    GetDefIndex

    Method

    Returns the weapon definition index.

    Arguments

    None.

    Returns

    Example


    GetType

    Method

    Returns the weapon type.

    Arguments

    None.

    Returns

    Example


    GetData

    Method

    Returns the weapon static data.

    Arguments

    None.

    Returns

    Example


    IsGun

    Method

    Returns true if this weapon is a firearm.

    Arguments

    None.

    Returns

    Example


    IsAttackable

    Method

    Returns true if you can attack with this weapon.

    Arguments

    None.

    Returns

    Example


    HasSecondaryAttack

    Method

    Returns true if this weapon has a secondary attack mode.

    Arguments

    None.

    Returns

    Example


    HasSpread

    Method

    Returns true if this weapon has spread (e.g. knives do not have any spread).

    Arguments

    None.

    Returns

    Example

    math

    Usage: math.{func}

    This table extends the existing math table that is a part of Lua.

    gui

    Usage:

    gui.{func_or_field}

    Usage: gui.{func_or_field}

    This table exposes the GUI system of the software.

    line

    TextAlignment

    Line alignment.

    TextAlignment
    TextAlignment
    TextAlignment
    TextAlignment
    TextAlignment
    TextAlignment
    TextAlignment
    TextAlignment
    TextAlignment
    TextAlignment
    TextAlignment

    Type

    Description

    Vector

    Origin.

    Type

    Description

    float

    Max speed, in UPS.

    Name

    Type

    Description

    mode

    CSWeaponMode

    Weapon mode.

    Type

    Description

    float

    Inaccuracy value.

    Name

    Type

    Description

    mode

    CSWeaponMode

    Weapon mode.

    Type

    Description

    float

    Inaccuracy value.

    Type

    Description

    EItemDefinitionIndex

    Weapon ID.

    Type

    Description

    CSWeaponType

    Weapon type.

    Type

    Description

    CCSWeaponBaseVData

    Weapon data.

    Type

    Description

    bool

    true if a firearm.

    Type

    Description

    bool

    true if can attack.

    Type

    Description

    bool

    true if has the secondary attack mode.

    Type

    Description

    bool

    true if has spread.

    C_BaseEntity
    local org = wep:GetAbsOrigin();
    local spd = wep:GetMaxSpeed();
    local inacc = wep:GetInaccuracy(CSWeaponMode.PRIMARY_MODE);
    local spread = wep:GetSpread(CSWeaponMode.PRIMARY_MODE);
    local wep_id = wep:GetDefIndex();
    local type = wep:GetType();
    local data = wep:GetData();
    if wep:IsGun() then
        -- ...
    end
    if wep:IsAttackable() then
        -- ...
    end
    if wep:HasSecondaryAttack() then
        -- ...
    end
    if wep:HasSpread() then
        -- ...
    end
    CalcAngle

    Function

    Calculates angles between 2 vectors.

    Arguments

    Name
    Type
    Description

    src

    Source vector.

    dst

    Destination vector.

    Returns

    Type
    Description

    Angles.

    Example


    AngleNormalize

    Function

    Normalizes an angle.

    Arguments

    Name
    Type
    Description

    angle

    float

    Input angle.

    Returns

    Type
    Description

    float

    Normalized angle.

    Example


    ApproachAngles

    Function

    Approaches an angle over time.

    Arguments

    Name
    Type
    Description

    from

    Start angle.

    to

    End angle.

    Returns

    Type
    Description

    Delta angle.

    Example


    EdgePoint

    Function

    Returns a point on the edge of a box.

    Arguments

    Name
    Type
    Description

    mins

    Box mins.

    maxs

    Box maxs.

    Returns

    Type
    Description

    Point.

    Example


    Lerp

    Function

    Linear interpolation.

    Arguments

    Name
    Type
    Description

    t1

    float

    Start value.

    t2

    float

    End value.

    Returns

    Type

    Description

    float

    Interpolated value.

    Example


    VectorAngles

    Function

    Calculates angles from a vector.

    Arguments

    Name
    Type
    Description

    forward

    Source vector.

    up

    Up vector. Defaults to nil.

    Returns

    Type
    Description

    Angles.

    Example


    WorldToScreen

    Function

    Transforms a point in the game world onto the viewport.

    Arguments

    Name
    Type
    Description

    xyz

    Point in the world.

    round

    bool

    Whether should round the output. Defaults to true.

    Returns

    Type
    Description

    Point on the viewport.

    Example


    Clamp

    Function

    Clamps a value between min and max.

    Arguments

    Name
    Type
    Description

    n

    float

    Value.

    lower

    float

    Lowest value.

    Returns

    Type
    Description

    float

    Clamped value.

    Example


    RemapVal

    Function

    Maps the value from one range to another range.

    Arguments

    Name
    Type
    Description

    val

    float

    Value.

    a

    float

    Lowest source value.

    Returns

    Type
    Description

    float

    Mapped value.

    Example


    RemapValClamped

    Function

    Maps the value from one range to another range. Additionally, clamps the value based on the source range.

    Arguments

    Name
    Type
    Description

    val

    float

    Value.

    a

    float

    Lowest source value.

    Returns

    Type
    Description

    float

    Mapped value.

    Example


    Vec2

    Function

    An alias to draw.Vec2.

    Example


    Vec3

    Function

    An alias to Vector.

    Example

    local ang = math.CalcAngle(vec1, vec2);
    local norm = math.AngleNormalize(560);
    local ang = math.ApproachAngles(from, to, 1.0 / game.globalVars.frame_time);
    local point = math.EdgePoint(mins, maxs, dir, 5);
    local mid = math.Lerp(0, 100, 0.5);
    local ang = math.VectorAngles(fw);
    local point = math.WorldToScreen(game_point);
    local x = math.Clamp(50, 5, 25); -- 25
    local mapped = math.RemapVal(0.5, 0, 1, 0, 100); -- 50
    local mapped = math.RemapValClamped(5, 0, 1, 0, 100); -- 100
    local vec = math.Vec2(5, 5);
    local vec = math.Vec3(5, 12, 5);
    ctx

    Field

    Type: Context

    GUI context.


    notify

    Field

    Type: NotificationSystem

    Notification system.


    input

    Field

    Type: ContextInput

    Input context.


    MakeControl

    Function

    Wraps a control into a layout consisting of a label and that specific control. You should add this new control to groupboxes if you want your control to be displayed nicely. Additionally, you can add any extra controls to the returned one - those will get stacked to the left side of your initial control.

    Arguments

    Name

    Type

    Description

    text

    string

    Label value.

    c

    Control object.

    Returns

    Type

    Description

    Layout object.

    Example


    MakeControlEasy

    Function

    A quick wrapper for MakeControl , returns both the menu element and control.

    Arguments

    Name

    Type

    Description

    id

    string

    ID.

    label

    string

    Label value.

    Returns

    Type

    Description

    any

    Menu element (checkbox, slider etc.)

    Control

    Example


    MakeStackedGroups

    Function

    Creates a vertical stack with two or more group boxes.

    Arguments

    Name

    Type

    Description

    id

    |string

    ID

    size

    Size

    Returns

    Type

    Description

    Group stack object.

    Example


    IsVisible

    Function

    Returns whether or not the menu is currently open.

    Returns

    Type

    Description

    boolean

    If menu is visible or not

    Example


    GetActiveOverridePath

    Function

    Returns the current ragebot/legitbot weapon or category path.

    Arguments

    None.

    Returns

    Type
    Description

    string

    The path currently being used by the ragebot or legitbot

    Example


    GetMainWindow

    Function

    Returns the menu's main window.

    Arguments

    None.

    Returns

    Type
    Description

    The window object.

    Example


    GetHotkeyList

    Function

    Returns list of all controls with hotkeys currently added.

    Arguments

    None.

    Returns

    Type
    Description

    table<>

    All controls currently with keybinds set

    Example


    GetThemeColors

    Function

    Returns list of all colors being used the GUI theme.

    Arguments

    None.

    Returns

    Type
    Description

    table<>

    All menu colors

    Example

    All types and enums described in the child sections must be prefixed with gui..

    local row = gui.MakeControl('Hello checkbox!', my_cb);
    local slider, slider_ctrl = gui.MakeControlEasy('my_slider', 'Slider', 'slider', 0, 100);
    local grp1 = gui.Group('grp1', 'My group 1', 150, gui.GroupWidthMode.DEFAULT);
    local grp2 = gui.Group('grp2', 'My group 2', 150, gui.GroupWidthMode.DEFAULT);
    
    local stack = gui.MakeStackedGroups("grp12", draw.vec2(234, 400), {
        grp1, grp2
    });
    if gui.IsVisible() then
        print('Menu is open!')
    end
    local override_path = gui.GetActiveOverridePath()
    local hitchance = gui.ctx:Find(override_path .. '>weapon>hitchance')
    local wnd = gui.GetMainWindow()
    local pos = wnd:GetPosAbs()
    local controls = gui.GetHotkeyList()
    for i, control in ipairs(controls) do
        local element = control:Cast() -- Convert to its parent type
        if element:GetHotkeyState() then
            print('overriding ' .. element:GetLabel().text,
                  'value ' .. tostring(element:GetValue():Get()))
        end
    end
    local colors = gui.GetThemeColors()
    
    draw.surface:AddRect(draw.Rect(0, 0, 100, 100), colors.accent)

    Available types are:

    Should only be called when you're alive, causes undefined behavior otherwise.

    Available keys are

    FontBase

    This type represents the base class for font types. You cannot create an instance of this type. Instead, use the children types.

    height

    Field

    speed

    float

    Approach speed.

    dir

    Vector

    Point direction (angle).

    radius

    float

    Area radius.

    progress

    float

    Interpolation amount.

    upper

    float

    Highest value.

    b

    float

    Highest source value.

    c

    float

    Lowest destination value.

    d

    float

    Highest destination value.

    b

    float

    Highest source value.

    c

    float

    Lowest destination value.

    d

    float

    Highest destination value.

    Vector
    Vector
    Vector
    Vector
    Vector
    Vector
    Vector
    Vector
    Vector
    Vector
    Vector
    Vector
    Vector
    Vec2

    type

    string

    The type of this control

    ...

    any...

    Extra constructor arguments

    groups

    table<Group>

    List of group boxes

    Control
    Layout
    Control
    ControlID
    Vec2
    Layout
    Window
    Control
    Color
    checkbox
    slider
    color_picker
    text_input
    combo_box
    title1, title2, accent, accent2, text, textLight, textMid, textDark, bgBottom, bgBlock, bgBlock2, bgBlockSelectedTab, accentOutline, bgBlockLight, bgOdd, bgEven, outline, outlineLight, warning, danger, success, untrusted
    Read only

    Type: float

    Font height, in pixels.


    ascent

    Field

    Type: float

    Font ascent value, in pixels.


    descent

    Field

    Type: float

    Font descent value, in pixels.


    lineGap

    Field

    Type: float

    Font line gap, in pixels.


    kerningGap

    Field

    Type: float

    Font kerning gap, in pixels.


    outlineAlpha

    Field

    Type: float

    Font outline opacity (0 to 1). Defaults to 0.45.


    flags

    FieldRead only

    Type: FontFlags

    Font flags. Use bit library to read flags.


    yOffset

    Field

    Type: int

    Glyph Y offset, in pixels. Will alter the location of a glyph in the atlas. Changing this value after the font was created is meaningless.


    xOffset

    Field

    Type: int

    Glyph X offset, in pixels. Will alter the location of a glyph in the atlas. Changing this value after the font was created is meaningless.


    fallbackFont

    Field

    Type: FontBase

    Fallback font to use, in case a glyph is not found in this font. Is it useful when one font does not have codepoints for specific symbols, that are present in another font, but you still want to prefer this font's glyphs over other font.


    dropshadowColor

    Field

    Type: Color

    Shadow color. Only R, G, B values are used.


    GetKernedCharWidth

    Method

    Returns character width, included with kerning.

    Arguments

    Name

    Type

    Description

    left

    int

    Previous character codepoint.

    right

    int

    Current character codepoint.

    Returns

    Type

    Description

    float

    Distance, in pixels.

    Example


    GetKerning

    Method

    Returns kerning value for a single character. If kerning is disabled, will instead return kerning gap.

    Arguments

    Name

    Type

    Description

    cp

    int

    Codepoint.

    Returns

    Type

    Description

    float

    Kerning value, in pixels.

    Example


    GetTextSize

    Method

    Returns text area size.

    Arguments

    Name

    Type

    Description

    text

    string

    Text.

    skip_scaling

    bool

    If set to true, will skip global DPI scaling. Defaults to false.

    Returns

    Type

    Description

    Text area size.

    Example


    WrapText

    Method

    Wraps text to meet the desired width. Wrapping is done by breaking text by words and inserting line breaks in between. If one of the words is longer than the target width, will instead use that word's width.

    Arguments

    Name

    Type

    Description

    text

    string

    Text to wrap.

    width

    float

    Target width.

    Returns

    Type

    Description

    string

    Wrapped text.

    Example


    GetGlyph

    Method

    Returns glyph information for a character.

    Arguments

    Name

    Type

    Description

    codepoint

    int

    Codepoint.

    Returns

    Type

    Description

    Glyph information.

    Example


    GetTexture

    Method

    Returns a texture atlas that contains the provided glyph.

    Arguments

    Name

    Type

    Description

    gl

    Character glyph.

    Returns

    Type

    Description

    int

    Texture pointer, or nil if not found.

    Example

    This type inherits Managed type. All of its base methods and fields are also available in this type.

    Definitions:

    • codepoint: Unicode representation of the character.

    • kerning: a distance between two characters.

    • glyph: visual representation of a character.

    local w = font:GetKernedCharWidth(prev_cp, cp);
    local k = font:GetKerning(cp);
    local sz = font:GetTextSize('Hello!');
    local shorter = font:WrapText('This is some very long text!', 50);
    local glyph = font:GetGlyph(cp);
    local atlas = font:GetTexture(glyph);

    Control

    This type represents an abstract GUI control.

    id

    Field

    til_newline

    bool

    Calculate size only until a line break is met. Defaults to false.

    Vec2
    Glyph_t
    Glyph_t
    Read only

    Type: int

    Control ID.


    idString

    FieldRead only

    Type: string

    String representation of control's ID. This may be empty for some controls.


    isVisible

    FieldRead only

    Type: bool

    Control's visibility state.


    parent

    FieldRead only

    Type: control?

    Parent control. Might be nil on some controls.


    type

    FieldRead only

    Type: ControlType

    Control's type.


    inactive

    Field

    Type: bool

    If set to true, will mark this control to the inactive state.


    inactiveText

    Field

    Type: string

    Tooltip replacement to show when control is inactive.


    inactiveColor

    Field

    Type: Color

    Label color override for inactive controls.


    tooltip

    Field

    Type: string

    Tooltip text.


    pos

    Field

    Type: Vec2

    Relative position of this control


    size

    Field

    Type: Vec2

    Total size of this control


    sizeToParentW

    Field

    Type: boolean

    Whether or not the width of this control is locked to it's parent container


    sizeToParentH

    Field

    Type: boolean

    Whether or not the height of this control is locked to it's parent container


    isTakingInput

    Field

    Type: boolean

    Whether or not this control handles input in any way.


    isTakingKeys

    Field

    Type: boolean

    Whether or not this control is listening to generic key presses.


    isTakingText

    Field

    Type: boolean

    Whether or not this control is listening and handling text input.


    margin

    Field

    Type: rect

    The margin/offset to the parent container. Left, top, right and bottom, respectively.


    isMouseOnMe

    Field

    Type: boolean

    Whether or not the user is hovering this control.


    aliases

    Field

    Type: table[string]

    Alias list for this control. Used in search box to support different naming (e.g. if a user searches for "Double tap", will find "Rapid fire" instead).


    GetPosAbs

    Method

    Returns this control's position relative to the screen origin (0, 0).

    Arguments

    None.

    Returns

    Type
    Description

    Absolute position of this control.

    Example


    GetArea

    Method

    Returns a rectangle containing the area of this control relative to the current container.

    Arguments

    Name

    Type

    Description

    includeMargin

    boolean

    Whether or not to include the margin in the area.

    Returns

    Type
    Description

    Area of this control in container space.

    Example


    GetAreaAbs

    Method

    Returns a rectangle containing the area of this control relative to the screen origin (0, 0).

    Arguments

    Name

    Type

    Description

    includeMargin

    boolean

    Whether or not to include the margin in the area.

    Returns

    Type
    Description

    Area of this control in screen space.

    Example


    GetLabel

    Method

    Returns the label of this control in the menu.

    Arguments

    None.

    Returns

    Type
    Description

    Control label, if any.

    Example


    GetHotkeyState

    Method

    Returns true if any of the control's hotkeys are active.

    Arguments

    None.

    Returns

    Type
    Description

    bool

    true if any hotkey is active.

    Example


    HasHotkeys

    Method

    Returns true if this control has any hotkeys.

    Arguments

    None.

    Returns

    Type
    Description

    bool

    true if control has hotkeys.

    Example


    SetDimensions

    Method

    Overrides the offset and size for this control.

    Arguments

    Name

    Type

    Description

    position

    Offset

    size

    Size

    Returns

    Nothing.

    Example

    SetVisible

    Method

    Changes visibility state for this control.

    Arguments

    Name
    Type
    Description

    val

    bool

    Visibility state.

    Returns

    Nothing.

    Example


    AddCallback

    Method

    Adds a callback to this control.

    Arguments

    Name
    Type
    Description

    cbk

    function

    Callback.

    Returns

    Nothing.

    Example


    Cast

    Method

    Attempts to downcast the control to the correct type.

    Arguments

    None.

    Returns

    Type
    Description

    <control>

    New type, if any.

    Example


    Reset

    Method

    Resets control's state. This action is usually required if you change control's value directly by interacting with ValueParam.

    You also should call this method on layouts if you add multiple controls into them.

    Arguments

    None.

    Returns

    Nothing.

    Example


    local screen_pos = ctrl:GetPosAbs();
    local area = ctrl:GetArea();
    local screen_area = ctrl:GetAreaAbs();
    local text = ctrl:GetLabel().text;
    if ctrl:GetHotkeyState() then
        -- ...
    end
    if ctrl:HasHotkeys() then
        -- ...
    end
    control:SetDimensions(draw.Vec2(), draw.Vec2(100, 24))
    ctrl:SetVisible(false);
    ctrl:AddCallback(function ()
        print('Callback invoked!');
    end);
    local checkbox = maybe_checkbox:Cast();
    ctrl:Reset();

    May not be available for all controls.

    May not be available for all controls.

    May not be available for all controls.

    May not be available for all controls.

    This does not work for types. Use the text field instead.

    This method does not override sizeToParentW and sizeToParentH.

    Calling this method on controls that are located in layouts with large amount of other controls will inevitably cause performance issues due to auto-stacking.

    Due to Lua engine's limitations, it is impossible to automatically downcast variables. Usually there is no need to call this method, unless you found some control that wasn't somehow already cast to the desired type. find() methods automatically perform the cast to the correct type.

    C_CSPlayerPawn

    This type represents a C_CSPlayerPawn class.

    This type inherits type. All of its base methods and fields are also available in this type.

    ShouldDraw

    Method

    Returns true if the game will draw this player on screen.

    Arguments

    None.

    Returns

    Example


    IsLeftHanded

    Method

    Returns true if left-hand mode is enabled.

    Arguments

    None.

    Returns

    Example


    GetAbsOrigin

    Method

    Returns the absolute origin (the one that is used for rendering).

    Arguments

    None.

    Returns

    Example


    GetAbsAngles

    Method

    Returns the absolute angles (the one that is used for rendering).

    Arguments

    None.

    Returns

    Example


    GetAbsVelocity

    Method

    Returns the absolute velocity.

    Arguments

    None.

    Returns

    Example


    SetAbsOrigin

    Method

    Sets the new absolute origin.

    Arguments

    Returns

    Nothing.

    Example


    SetAbsAngles

    Method

    Sets new absolute angles.

    Arguments

    Returns

    Nothing.

    Example


    SetAbsVelocity

    Method

    Sets new absolute velocity.

    Arguments

    Returns

    Nothing.

    Example


    IsAlive

    Method

    Returns true if the player is alive.

    Arguments

    None.

    Returns

    Example


    IsEnemy

    Method

    Returns true if this player is an enemy to the local player.

    Arguments

    None.

    Returns

    Example


    IsEnemyTo

    Method

    Returns whether this player is an enemy to another entity.

    Arguments

    Returns

    Example


    GetActiveWeapon

    Method

    Returns the active weapon.

    Arguments

    None.

    Returns

    Example


    GetWeapons

    Method

    Returns all weapons in this player's inventory.

    Arguments

    None.

    Returns

    Example


    GetName

    Method

    Returns the sanitized player name.

    Arguments

    None.

    Returns

    Example


    GetViewOffset

    Method

    Returns the player's view offset (eye location relative to the player's origin).

    Arguments

    None.

    Returns

    Example


    GetEyePos

    Method

    Returns the player's eye position.

    Arguments

    None.

    Returns

    Example


    GetHitbox

    Method

    Returns hitbox information for a specific hitbox. Not to be confused with GetHitboxCenter.

    Arguments

    Returns

    Example


    GetHitboxCenter

    Method

    Returns hitbox position for a specific hitbox.

    Arguments

    Returns

    Example


    GetBoundingBox

    Method

    Returns the bounding box rectangle for this player. Returns nil if the player is not on screen.

    Arguments

    None.

    Returns

    Example

    Vec2
    Rect
    Rect
    Label
    Vec2
    Vec2
    label

    Type

    Description

    bool

    true if will.

    Type

    Description

    bool

    true if left-handed.

    Type

    Description

    Vector

    Origin.

    Type

    Description

    Vector

    Angles.

    Type

    Description

    Vector

    Velocity.

    Name

    Type

    Description

    vec

    Vector

    New origin.

    Name

    Type

    Description

    ang

    Vector

    New angles.

    Name

    Type

    Description

    vel

    Vector

    New velocity.

    Type

    Description

    bool

    true if alive.

    Type

    Description

    bool

    true if an enemy.

    Name

    Type

    Description

    ent

    C_BaseEntity

    Other entity.

    Type

    Description

    bool

    true if an enemy.

    Type

    Description

    C_CSWeaponBaseGun

    Weapon instance.

    Type

    Description

    table<C_CSWeaponBaseGun>

    Weapon list

    Type

    Description

    string

    Player's name.

    Type

    Description

    Vector

    View offset.

    Type

    Description

    Vector

    Eye position.

    Name

    Type

    Description

    index

    EHitBox

    The hitbox ID

    Type

    Description

    CHitboxInfo

    Hitbox info

    Name

    Type

    Description

    index

    EHitBox

    The hitbox ID

    Type

    Description

    Vector

    The position

    Type

    Description

    Rect

    Player's bounding box, nil if invalid.

    If you wish to add new items to the built-in visuals, look at the playerInfo callback.

    C_BaseEntity
    if player:ShouldDraw() then
        -- ...
    end
    if player:IsLeftHanded() then
        -- ...
    end
    local org = player:GetAbsOrigin();
    local ang = player:GetAbsAngles();
    local vel = player:GetAbsVelocity();
    player:SetAbsOrigin(my_vec);
    player:SetAbsAngles(my_ang);
    player:SetAbsVelocity(my_vel);
    if player:IsAlive() then
        -- ...
    end
    if player:IsEnemy() then
        -- ...
    end
    if player:IsEnemyTo(other_player) then
        -- ...
    end
    local wep = player:GetActiveWeapon();
    local weapons = player:GetWeapons();
    for i, v in ipairs(weapons) do
        print(v:get_id())
    end
    local name = player:GetName();
    local vo = player:GetViewOffset();
    local eyes = player:GetEyePos();
    local hbox_info = player:GetHitbox(EHitBox.HEAD);
    local pelvis = player:GetHitboxCenter(EHitBox.PELVIS);
    local bbox = player:GetBoundingBox();

    ContextInput

    This type represents the GUI input context.

    You can use Cursor, IsMouseUp, IsMouseDown, IsKeyUp and IsKeyDown methods outside context. Using other methods will not make any sense, as the information will be outdated.

    Cursor

    Method

    Returns current cursor position.

    Arguments

    None.

    Returns

    Example


    CursorPrev

    Method

    Returns previous cursor position.

    Arguments

    None.

    Returns

    Example


    CursorDelta

    Method

    Delta value between previous and current cursor positions.

    Arguments

    None.

    Returns

    Example


    DidCursorMove

    Method

    Returns true if the cursor did move since the last input.

    Arguments

    None.

    Returns

    Example


    DidWheelMove

    Method

    Returns true if mouse scroll wheel did move since the last input.

    Arguments

    None.

    Returns

    Example



    DidProcessMouse

    Method

    Returns true if any mouse key's state had changed.

    Arguments

    None.

    Returns

    Example



    ButtonReleased

    Method

    Returns true if any key was released since the last input.

    Arguments

    None.

    Returns

    Example



    WheelDelta

    Method

    Returns the amount of rows scrolled this input.

    Arguments

    None.

    Returns

    Example


    IsMouseUp

    Method

    Returns true if the mouse key is up (depressed).

    Arguments

    Returns

    Example


    IsMouseDown

    Method

    Returns true if the mouse key is down (pressed).

    Arguments

    Returns

    Example


    IsMouseClicked

    Method

    Returns true if the mouse key is clicked (switched from depressed to pressed state).

    Arguments

    Returns

    Example


    IsMouseReleased

    Method

    Returns true if the mouse key is released (switched from pressed to depressed state).

    Arguments

    Returns

    Example


    DidProcessKey

    Method

    Returns true if any key's state had changed.

    Arguments

    None.

    Returns

    Example


    IsKeyUp

    Method

    Returns true if a key is up (depressed).

    Arguments

    Returns

    Example


    IsKeyDown

    Method

    Returns true if a key is down (pressed).

    Arguments

    Returns

    Example


    IsKeyClicked

    Method

    Returns true if a key is clicked (switched from depressed to pressed state).

    Arguments

    Returns

    Example


    IsKeyReleased

    Method

    Returns true if a key is released (switched from pressed to depressed state).

    Arguments

    Returns

    Example

    EItemDefinitionIndex

    This enum represents the unique identifier for various weapons in the game.

    NONE

    Field

    Represents no weapon.


    DEAGLE

    Field

    Represents a Desert Eagle.


    ELITE

    Field

    Represents the Dual Berettas.


    FIVESEVEN

    Field

    Represents a Five-SeveN.


    GLOCK

    Field

    Represents a Glock-18.


    AK47

    Field

    Represents an AK-47.


    AUG

    Field

    Represents an AUG.


    AWP

    Field

    Represents an AWP.


    FAMAS

    Field

    Represents a FAMAS.


    G3SG1

    Field

    Represents a G3SG1.


    GALILAR

    Field

    Represents a Galil AR.


    M249

    Field

    Represents an M249.


    M4A1

    Field

    Represents an M4A4.


    MAC10

    Field

    Represents a MAC-10.


    P90

    Field

    Represents a P90.


    ZONE_REPULSOR

    Field

    Represents a zone repulsor device.


    MP5SD

    Field

    Represents an MP5-SD.


    UMP45

    Field

    Represents a UMP-45.


    XM1014

    Field

    Represents an XM1014.


    BIZON

    Field

    Represents a PP-Bizon.


    MAG7

    Field

    Represents a MAG-7.


    NEGEV

    Field

    Represents a Negev.


    SAWEDOFF

    Field

    Represents a Sawed-Off.


    TEC9

    Field

    Represents a Tec-9.


    TASER

    Field

    Represents a Zeus x27 taser.


    HKP2000

    Field

    Represents a P2000.


    MP7

    Field

    Represents an MP7.


    MP9

    Field

    Represents an MP9.


    NOVA

    Field

    Represents a Nova.


    P250

    Field

    Represents a P250.


    SHIELD

    Field

    Represents a shield.


    SCAR20

    Field

    Represents a SCAR-20.


    SG556

    Field

    Represents an SG 553.


    SSG08

    Field

    Represents an SSG 08.


    KNIFEGG

    Field

    Represents the Golden Knife.


    KNIFE

    Field

    Represents the default knife.


    FLASHBANG

    Field

    Represents a flashbang.


    HEGRENADE

    Field

    Represents an HE grenade.


    SMOKEGRENADE

    Field

    Represents a smoke grenade.


    MOLOTOV

    Field

    Represents a Molotov.


    DECOY

    Field

    Represents a decoy grenade.


    INCGRENADE

    Field

    Represents an incendiary grenade.


    C4

    Field

    Represents a C4 explosive.


    HEALTHSHOT

    Field

    Represents a health shot.


    KNIFE_T

    Field

    Represents the Terrorist knife.


    M4A1_SILENCER

    Field

    Represents the M4A1-S.


    USP_SILENCER

    Field

    Represents the USP-S.


    CZ75A

    Field

    Represents a CZ75-Auto.


    REVOLVER

    Field

    Represents an R8 Revolver.


    TAGRENADE

    Field

    Represents a tactical awareness grenade.


    FISTS

    Field

    Represents fists.


    BREACHCHARGE

    Field

    Represents a breach charge.


    TABLET

    Field

    Represents a tablet.


    MELEE

    Field

    Represents a generic melee weapon.


    AXE

    Field

    Represents an axe.


    HAMMER

    Field

    Represents a hammer.


    SPANNER

    Field

    Represents a spanner (wrench).


    KNIFE_GHOST

    Field

    Represents a ghost knife.


    FIREBOMB

    Field

    Represents a firebomb grenade.


    DIVERSION

    Field

    Represents a diversion device.


    FRAGGRENADE

    Field

    Represents a fragmentation grenade.


    SNOWBALL

    Field

    Represents a snowball.


    BUMPMINE

    Field

    Represents a bump mine.


    KNIFE_BAYONET

    Field

    Represents a Bayonet.


    KNIFE_CSS

    Field

    Represents the Classic Knife.


    KNIFE_FLIP

    Field

    Represents a Flip Knife.


    KNIFE_GUT

    Field

    Represents a Gut Knife.


    KNIFE_KARAMBIT

    Field

    Represents a Karambit.


    KNIFE_M9BAYONET

    Field

    Represents an M9 Bayonet.


    KNIFE_TACTICAL

    Field

    Represents a Huntsman Knife.


    KNIFE_FALCHION

    Field

    Represents a Falchion Knife.


    KNIFE_SURVIVAL_BOWIE

    Field

    Represents a Bowie Knife.


    KNIFE_BUTTERFLY

    Field

    Represents a Butterfly Knife.


    KNIFE_PUSH

    Field

    Represents a Shadow Daggers.


    KNIFE_CORD

    Field

    Represents a Paracord Knife.


    KNIFE_CANIS

    Field

    Represents a Survival Knife.


    KNIFE_URSUS

    Field

    Represents an Ursus Knife.


    KNIFE_GYPSY_JACKKNIFE

    Field

    Represents a Navaja Knife.


    KNIFE_OUTDOOR

    Field

    Represents a Nomad Knife.


    KNIFE_STILETTO

    Field

    Represents a Stiletto Knife.


    KNIFE_WIDOWMAKER

    Field

    Represents a Talon Knife.


    KNIFE_SKELETON

    Field

    Represents a Skeleton Knife.


    KNIFE_KUKRI

    Field

    Represents a Kukri Knife.

    Type

    Description

    Cursor position.

    local cur = gui.input:Cursor();

    Type

    Description

    Previous cursor position.

    local prev = gui.input:CursorPrev();

    Type

    Description

    Cursor delta.

    local delta = gui.input:CursorDelta();

    Type

    Description

    bool

    true if moved.

    if gui.input:DidCursorMove() then
        -- ...
    end

    Type

    Description

    bool

    true if moved.

    if gui.input:DidWheelMove() then
        -- ...
    end

    Type

    Description

    bool

    true if processed.

    if gui.input:DidProcessMouse() then
        -- ...
    end

    Type

    Description

    bool

    true if released.

    if gui.input:button_released() then
        -- ...
    end

    Type

    Description

    float

    Rows scrolled.

    local scroll = gui.input:WheelDelta();

    Name

    Type

    Description

    mb

    Mouse button.

    Type

    Description

    bool

    true if depressed.

    if gui.input:IsMouseUp(gui.MouseButton.LEFT) then
        -- ...
    end

    Name

    Type

    Description

    mb

    Mouse button.

    Type

    Description

    bool

    true if pressed.

    if gui.input:IsMouseDown(gui.MouseButton.LEFT) then
        -- ...
    end

    Name

    Type

    Description

    mb

    Mouse button.

    Type

    Description

    bool

    true if clicked.

    if gui.input:IsMouseClicked(gui.MouseButton.LEFT) then
        -- ...
    end

    Name

    Type

    Description

    mb

    Mouse button.

    Type

    Description

    bool

    true if released.

    if gui.input:IsMouseReleased(gui.MouseButton.LEFT) then
        -- ...
    end

    Type

    Description

    bool

    true if state changed.

    if gui.input:DidProcessKey() then
        -- ...
    end

    Name

    Type

    Description

    k

    int

    Virtual key.

    Type

    Description

    bool

    true if depressed.

    if gui.input:IsKeyUp(0x41) then -- 0x41 = "A"
        -- ...
    end

    Name

    Type

    Description

    k

    int

    Virtual key.

    Type

    Description

    bool

    true if pressed.

    if gui.input:IsKeyDown(0x41) then -- 0x41 = "A"
        -- ...
    end

    Name

    Type

    Description

    k

    int

    Virtual key.

    Type

    Description

    bool

    true if clicked.

    if gui.input:IsKeyClicked(0x41) then -- 0x41 = "A"
        -- ...
    end

    Name

    Type

    Description

    k

    int

    Virtual key.

    Type

    Description

    bool

    true if released.

    if gui.input:IsKeyReleased(0x41) then -- 0x41 = "A"
        -- ...
    end
    input
    Vec2
    Vec2
    Vec2
    MouseButton
    MouseButton
    MouseButton
    MouseButton

    Rect

    __call

    Constructor

    Creates a new rectangle.

    Arguments

    1. Default rectangle (0, 0 position; 0, 0 size).

    None.

    2. Single value.

    Name
    Type
    Description

    3. Single vector.

    Name
    Type
    Description

    4. Double value.

    Name
    Type
    Description

    5. Double vector.

    Name
    Type
    Description

    6. Four values.

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    mins

    Field

    Type:

    Mins (top-left) vector.


    maxs

    Field

    Type:

    Maxs (bottom-right) vector.


    Width

    Method

    Either returns rectangle's width, or sets a new width.

    Arguments

    1. Get width.

    None.

    2. Set width.

    Name
    Type
    Description

    Returns

    1. Get width.

    Type
    Description

    2. Set width.

    Type
    Description

    Example


    Height

    Method

    Either returns rectangle's height, or sets a new height.

    Arguments

    1. Get height.

    None.

    2. Set height.

    Name
    Type
    Description

    Returns

    1. Get height.

    Type
    Description

    2. Set height.

    Type
    Description

    Example


    Size

    Method

    Either returns rectangle's size, or sets a new size.

    Arguments

    1. Get size.

    None.

    2. Set size.

    Name
    Type
    Description

    Returns

    1. Get size.

    Type
    Description

    2. Set size.

    Type
    Description

    Example


    Explode

    Method

    Explodes the rectangle by given vector (increase size from center into all directions by coordinates in the vector).

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    HalfWidth

    Method

    Returns a rectangle with half of the width of this rectangle.

    Arguments

    None.

    Returns

    Type
    Description

    Example


    Translate

    Method

    Translates (moves) this rectangle by vector coordinates.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    MarginLeft

    Method

    Move rectangle from the left by given amount.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    MarginRight

    Method

    Move rectangle from the right by given amount.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    MarginTop

    Method

    Move rectangle from the top by given amount.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    MarginBottom

    Method

    Move rectangle from the bottom by given amount.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    PaddingLeft

    Method

    Adds the value to the left side of the rectangle.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    PaddingRight

    Method

    Adds the value to the right side of the rectangle.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    PaddingTop

    Method

    Adds the value to the top side of the rectangle.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    PaddingBottom

    Method

    Adds the value to the bottom side of the rectangle.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    Shrink

    Method

    Shrinks (implodes) the rectangle by given amount.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    Expand

    Method

    Expands (explodes) the rectangle by given amount.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    Contains

    Method

    Returns true if this rectangle contains either vector or another rectangle.

    Arguments

    1. Vector variant.

    Name
    Type
    Description

    2. Rectangle variant.

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    Overlaps

    Method

    Returns true if the other rectangle overlaps with this rectangle.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    Intersect

    Method

    Intersects this rectangle with another rectangle.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    TL

    Method

    Returns top-left vector.

    Arguments

    None.

    Returns

    Type
    Description

    Example


    TR

    Method

    Returns top-right vector.

    Arguments

    None.

    Returns

    Type
    Description

    Example


    BR

    Method

    Returns bottom-right vector.

    Arguments

    None.

    Returns

    Type
    Description

    Example


    BL

    Method

    Returns bottom-left vector.

    Arguments

    None.

    Returns

    Type
    Description

    Example


    Center

    Method

    Returns center point of this rectangle.

    Arguments

    None.

    Returns

    Type
    Description

    Example


    Circle

    Method

    Treats this rectangle as an ellipsis and returns point on it. Note, that this "ellipsis" will be perfect with no modified curvature (basically if this rectangle is a box - you will get a point on a perfect circle).

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    Floor

    Method

    Returns floored rectangle.

    Arguments

    None.

    Returns

    Type
    Description

    Example


    Ceil

    Method

    Returns ceiled rectangle.

    Arguments

    None.

    Returns

    Type
    Description

    Example


    Round

    Method

    Returns rounded rectangle.

    Arguments

    None.

    Returns

    Type
    Description

    Example


    IsZero

    Method

    Returns true if both mins and maxs are equal to 0.

    Arguments

    None.

    Returns

    Type
    Description

    Example

    float

    Maxs X coordinate.

    y1

    float

    Maxs Y coordinate.

    value

    float

    Mins XY, maxs XY value.

    value

    Vec2

    Mins vector, maxs vector.

    x

    float

    Mins/maxs X coordinate.

    y

    float

    Mins/maxs Y coordinate.

    mins

    Vec2

    Mins vector.

    maxs

    Vec2

    Maxs vector.

    x0

    float

    Mins X coordinate.

    y0

    float

    Mins Y coordinate.

    Rect

    New rectangle.

    value

    float

    New width.

    float

    Width.

    Rect

    New rectangle with changed width.

    value

    float

    New height.

    float

    Height.

    Rect

    New rectangle with changed height.

    value

    Vec2

    New size.

    Vec2

    Size.

    Rect

    New rectangle with changed size.

    value

    Vec2

    Explode size.

    Rect

    Exploded rectangle.

    Rect

    Rectangle with halved width.

    value

    Vec2

    Translation amount.

    Rect

    Translated rectangle.

    value

    float

    Margin amount.

    Rect

    Moved rectangle.

    value

    float

    Margin amount.

    Rect

    Moved rectangle.

    value

    float

    Margin amount.

    Rect

    Moved rectangle.

    value

    float

    Margin amount.

    Rect

    Moved rectangle.

    value

    float

    Padding amount.

    Rect

    Resized rectangle.

    value

    float

    Padding amount.

    Rect

    Resized rectangle.

    value

    float

    Padding amount.

    Rect

    Resized rectangle.

    value

    float

    Padding amount.

    Rect

    Resized rectangle.

    value

    float

    Shrink value.

    Rect

    Resized rectangle.

    value

    float

    Expand value.

    Rect

    Resized rectangle.

    other

    Vec2

    Vector to check against.

    other

    Rect

    Rectangle to check against.

    bool

    true if other object is in bounds of this rectangle.

    other

    Rect

    Rectangle to check against.

    bool

    true if other rectangle overlaps with this rectangle.

    other

    Rect

    Rectangle to intersect with.

    Rect

    Intersected rectangle.

    Vec2

    Top-left vector.

    Vec2

    Top-right vector.

    Vec2

    Bottom-right vector.

    Vec2

    Bottom-left vector.

    Vec2

    Center point.

    r

    float

    Radians value.

    Vec2

    Point on the ellipsis.

    Rect

    Floored rectangle.

    Rect

    Ceiled rectangle.

    Rect

    Rounded rectangle.

    bool

    true if this is a zero rectangle.

    Rectangle overload will return true ONLY of entire other rectangle is within the bounds of this one.

    Vec2
    Vec2

    x1

    local my_rect = draw.Rect(50, 50, 150, 150);
    local half_width = rect:Width(rect:Width() * 0.5);
    local half_height = rect:Height(rect:Height() * 0.5);
    local half_size = rect:Size(rect:Size() * draw.Vec2(0.5, 0.5));
    local exp = rect:Explode(draw.Vec2(6, 6)); -- will subtract -3,-3 from mins and add 3,3 to maxs
    local half = rect:HalfWidth();
    local rect = draw.Rect(50, 50, 150, 150);
    local translated = rect:Translate(draw.Vec2(5, 5)); -- mins/maxs will be 55,55 and 155,155
    local new = rect:MarginLeft(5); -- moves to the right by 5px
    local new = rect:MarginRight(5); -- moves to the left by 5px
    local new = rect:MarginTop(5); -- moves to the bottom by 5px
    local new = rect:MarginBottom(5); -- moves to the top by 5px
    local new = rect:PaddingLeft(5); -- adds 5 to mins x
    local new = rect:PaddingRight(5); -- adds 5 to maxs x
    local new = rect:PaddingTop(5); -- adds 5 to mins y
    local new = rect:PaddingBottom(5); -- adds 5 to maxs y
    local shrinked = rect:Shrink(5); -- adds 5,5 to mins and subtracts 5,5 from maxs
    local expanded = rect:Expand(5); -- subtracts 5,5 from mins and adds 5,5 to maxs
    if rect:Contains(cursor_pos) then
        -- ...
    end
    if rect:Overlaps(another_rect) then
        -- ...
    end
    local intersected = rect:Intersect(another_rect);
    local tl = rect:TL();
    local tr = rect:TR();
    local br = rect:BR();
    local bl = rect:BL();
    local center = rect:Center();
    local point = rect:Circle(rad(250)); -- returns point on the 250th degree
    local floored = rect:Floor();
    local ceiled = rect:Ceil();
    local rounded = rect:Round();
    if rect:IsZero() then
        -- ...
    end

    Color

    color

    Last modified: 03 January 2025

    This type is a color used within the rendering system.

    __call

    Constructor

    Creates a new color instance.

    Arguments

    1. Default color (translucent black).

    None.

    2. Integer colors.

    Name

    Type

    Description

    r

    int

    Red color (0 to 255).

    g

    int

    Green color (0 to 255).

    3. Hex string.

    Name

    Type

    Description

    hex

    string

    Hex string. Formats are: #rrggbbaa, #rrggbb, #rgba and #rgb.

    Returns

    Type

    Description

    Color

    Color object.

    Example


    White

    Function

    Returns a white, opaque color.

    Arguments

    None.

    Returns

    Type

    Description

    Color

    Color object.

    Example


    WhiteTransparent

    Function

    Returns a white, transparent color.

    Arguments

    None.

    Returns

    Type

    Description

    Color

    Color object.

    Example


    Black

    Function

    Returns a black, opaque color.

    Arguments

    None.

    Returns

    Type

    Description

    Color

    Color object.

    Example


    BlackTransparent

    Function

    Returns a black, transparent color.

    Arguments

    None.

    Returns

    Type

    Description

    Color

    Color object.

    Example


    Percent

    Function

    Returns a red-to-green color, depending on the provided percent.

    Arguments

    Name

    Type

    Description

    p

    float

    Percentile (0 to 1).

    a

    float

    Opacity. Defaults to 1.

    Returns

    Type

    Description

    Color

    Color object.

    Example


    Gray

    Function

    Returns a black-to-white color, depending on the provided percent.

    Arguments

    Name

    Type

    Description

    b

    float

    Percentile (0 to 1).

    a

    float

    Opacity. Defaults to 1.

    Returns

    Type

    Description

    Color

    Color object.

    Example


    Interpolate

    Function

    Interpolates two colors.

    Arguments

    Name

    Type

    Description

    a

    Color

    Starting color.

    b

    Color

    Ending color.

    Returns

    Type

    Description

    Color

    Color object.

    Example


    RGBA

    Method

    Returns integer representation of this color (RGBA format)

    Arguments

    None.

    Returns

    Type

    Description

    int

    RGBA color.

    Example


    ARGB

    Method

    Returns integer representation of this color (ARGB format)

    Arguments

    None.

    Returns

    Type

    Description

    int

    ARGB color.

    Example


    BGRA

    Method

    Returns integer representation of this color (BGRA format)

    Arguments

    None.

    Returns

    Type

    Description

    int

    BGRA color.

    Example


    ABGR

    Method

    Returns integer representation of this color (ABGR format)

    Arguments

    None.

    Returns

    Type

    Description

    int

    ABGR color.

    Example


    Darken

    Method

    Returns darker variant of this color.

    Arguments

    Name

    Type

    Description

    value

    float

    Modulation amount (0 to 1).

    Returns

    Type

    Description

    Color

    Darker color.

    Example


    Lighten

    Method

    Returns saturated version of this color. Opposite of darken.

    Arguments

    Name

    Type

    Description

    value

    float

    Modulation amount (0 to 1).

    Returns

    Type

    Description

    Color

    Saturated color.

    Example


    ModA

    Method

    Modulate opacity of the color. This will take existing opacity, and multiply it by whatever value you provide. It is useful if you want to modulate same color in steps, instead of setting the accurate opacity number.

    Arguments

    1. Float variant.

    Name

    Type

    Description

    value

    float

    Opacity modulation (0 to 1).

    2. Integer variant.

    Name

    Type

    Description

    value

    int

    Opacity modulation (0 to 255).

    Returns

    Type

    Description

    Color

    Modulated color.

    Example


    R

    Method

    Override red and return new color.

    Arguments

    Name

    Type

    Description

    value

    float

    New value.

    Returns

    Type

    Description

    Color

    New color.

    Example

    G

    Method

    Override green and return new color.

    Arguments

    Name

    Type

    Description

    value

    float

    New value.

    Returns

    Type

    Description

    Color

    New color.

    Example

    B

    Method

    Override blue and return new color.

    Arguments

    Name

    Type

    Description

    value

    float

    New value.

    Returns

    Type

    Description

    Color

    New color.

    Example

    A

    Method

    Override opacity and return new color.

    Arguments

    Name

    Type

    Description

    value

    float

    New value.

    Returns

    Type

    Description

    Color

    New color.

    Example


    GetR

    Method

    Returns red color value.

    Arguments

    None.

    Returns

    Type

    Description

    int

    Color value.

    Example


    GetG

    Method

    Returns green color value.

    Arguments

    None.

    Returns

    Type

    Description

    int

    Color value.

    Example


    GetB

    Method

    Returns blue color value.

    Arguments

    None.

    Returns

    Type

    Description

    int

    Color value.

    Example


    GetA

    Method

    Returns opacity color value.

    Arguments

    None.

    Returns

    Type

    Description

    int

    Color value.

    Example


    H

    Method

    Return hue value of the color.

    Arguments

    None.

    Returns

    Type

    Description

    int

    Hue (0 to 359).

    Example


    S

    Method

    Returns saturation value of the color.

    Arguments

    None.

    Returns

    Type

    Description

    float

    Saturation (0 to 1).

    Example


    V

    Method

    Returns brightness value of the color.

    Arguments

    None.

    Returns

    Type

    Description

    float

    Brightness (0 to 1).

    Example


    HSV

    Method

    Construct new color from provided HSB values.

    Arguments

    Name

    Type

    Description

    hue

    int

    Hue (0 to 359).

    saturation

    float

    Saturation (0 to 1).

    Returns

    Type

    Description

    Color

    New color.

    Example

    Do not mistake this type with color that is used in game! While these types are interchangeable internally, they are NOT in the API.

    local white = draw.Color(255, 255, 255);
    local white = draw.color.White();
    local white_t = draw.color.WhiteTransparent();
    local black = draw.color.Black();
    local black_t = draw.color.BlackTransparent();
    local yellow = draw.color.Percent(0.5);
    local gray = draw.color.Gray(0.5);
    local a = draw.color.White();
    local b = draw.color.Black();
    local i = draw.color.Interpolate(a, b, 0.5); -- gray
    local num = col:RGBA();
    local num = col:argb();
    local num = col:BGRA();
    local num = col:ABGR();
    local darker = col:Darken(0.5);
    local saturated = col:Lighten(0.5);
    local half_opacity = col:ModA(0.5);
    local full_red = col:R(1);
    local full_green = col:G(1);
    local full_blue = col:B(1);
    local full_opacity = col:A(1);
    local r = col:GetR();
    local g = col:GetG();
    local b = col:GetB();
    local a = col:GetA();
    local hue = col:H();
    local saturation = col:S();
    local brightness = col:V();
    local new_col = col:HSV(250, 0.5, 0.1);

    b

    int

    Blue color (0 to 255).

    a

    int

    Opacity (0 to 255). Defaults to 255.

    t

    float

    Interpolation percentile.

    brightness

    float

    Brightness (0 to 1).

    alpha

    float

    Override opacity of the source color. Must be either left out, or provided 0 to 1 value.

    Layer

    A layer is a type that is used to store render commands, as well as vertex and index data. This is the only way to push shapes and control rendering state.

    g

    FieldRead only

    Type:

    The next render command to be pushed to the queue. This is the object you want to change to, for example, set a texture, or change rendering modes.


    font

    Field

    Type:

    Font to use with add_text. If nothing has been set, no text will get rendered.


    texSz

    Field

    Type:

    Texture dimensions. This value is only required if you are trying to render rounded shapes with a texture, so the rendering system will correctly map your UV coordinates to whatever shape you are rendering.


    skipDpi

    Field

    Type: bool

    If set to true, will skip global DPI scale. Defaults to true.


    AddTriangleFilled

    Method

    Adds a filled triangle with a single color.

    Arguments

    Returns

    Nothing.

    Example


    AddQuadFilled

    Method

    Adds a filled quad with a single color.

    Arguments

    Returns

    Nothing.

    Example


    AddRectFilled

    Method

    Adds a filled rectangle with a single color.

    Arguments

    Returns

    Nothing.

    Example


    AddCircleFilled

    Method

    Adds a filled circle with a single color.

    Arguments

    Returns

    Nothing.

    Example


    AddTriangleFilledMulticolor

    Method

    Adds a filled, multicolor triangle.

    Arguments

    Returns

    Nothing.

    Example


    AddRectFilledMulticolor

    Method

    Adds a filled, multicolor rectangle.

    Arguments

    Returns

    Nothing.

    Example


    AddCircleFilledMulticolor

    Method

    Adds a filled, multicolor circle.

    Arguments

    Returns

    Nothing.

    Example


    AddQuadFilledMulticolor

    Method

    Adds a filled, multicolor quad.

    Arguments

    Returns

    Nothing.

    Example


    AddPillMulticolor

    Method

    Adds a multicolor pill shape.

    Arguments

    Returns

    Nothing.

    Example


    AddShadowLine

    Method

    Adds a shadow line.

    Arguments

    Returns

    Nothing.

    Example


    AddShadowRect

    Method

    Adds a shadowed rectangle.

    Arguments

    Returns

    Nothing.

    Example


    AddGlow

    Method

    Adds a glow box.

    Arguments

    Returns

    Nothing.

    Example


    AddRectFilledRounded

    Method

    Adds a filled, rounded rectangle.

    Arguments

    Returns

    Nothing.

    Example


    AddRectFilledRoundedMulticolor

    Method

    Adds a filled, multicolor rounded rectangle.

    Arguments

    Returns

    Nothing.

    Example


    AddTriangle

    Method

    Adds a stroked triangle.

    Arguments

    Returns

    Nothing.

    Example


    AddQuad

    Method

    Adds a stroked quad.

    Arguments

    Returns

    Nothing.

    Example


    AddRect

    Method

    Adds a stroked rectangle.

    Arguments

    Returns

    Nothing.

    Example


    AddCircle

    Method

    Adds a stroked circle.

    Arguments

    Returns

    Nothing.

    Example


    AddLine

    Method

    Adds a line.

    Arguments

    Returns

    Nothing.

    Example


    AddLineMulticolor

    Method

    Adds a multicolor line.

    Arguments

    Returns

    Nothing.

    Example


    AddRectRounded

    Method

    Adds a rounded, filled rectangle.

    Arguments

    Returns

    Nothing.

    Example


    AddText

    Method

    Adds text.

    Arguments

    Returns

    Nothing.

    Example


    OverrideClipRect

    Method

    Overrides clip rectangle with support of intersection.

    Arguments

    Returns

    Nothing.

    Example


    AddWithBlur

    Method

    Renders a section with blur applied to it.

    Arguments

    Returns

    Nothing.

    Example


    AddWithBlurShared

    Method

    Renders a section with blur applied to it. Uses a shared texture.

    Arguments

    Returns

    Nothing.

    Example


    AddWithFrost

    Method

    Renders a section with a frosted effect to it, like in the Xmas theme.

    Arguments

    Returns

    Nothing.

    Example

    C point.

    col

    Shape color.

    Bottom right point.

    bl

    Bottom left point.

    col

    Shape color.

    Shape color.

    segments

    int

    Circle segments. If set to 0, will attempt automatic segment deduction. Defaults to 0.

    fill

    float

    Fill amount (clockwise, 0 to 1). Defaults to 1.

    C point.

    cols

    table[, , ]

    Colors for each point. Colors go in the very same order as the parameter list.

    table[, ]

    Colors for the gradient, starting with the inner and ending with the outer color.

    segments

    int

    The number of segments to approximate the circle. Defaults to 36.

    fill

    float

    The portion of the circle to fill, where 1.0 is a full circle. Defaults to 1.0.

    Bottom right point.

    bl

    Bottom left point.

    cols

    table[, ]

    Colors for the gradient, applied from bottom to top.

    float

    The minimum radius of the pill's rounded edges.

    radius_max

    float

    The maximum radius of the pill's rounded edges.

    cols

    table[, ]

    Colors for the gradient, applied from bottom to top.

    segments

    int

    The number of segments for approximating rounded edges. Defaults to 16.

    float

    Max opacity. Defaults to 0.25.

    bool

    Whether to draw a background for the rectangle. Defaults to true.

    a

    float

    Max opacity of the shadow. Defaults to 0.25.

    Glow color.

    parts

    Parts of the glow to enable. Defaults to ALL.

    float

    Rounding amount.

    rnd

    Rounding mode. Defaults to ALL.

    float

    Rounding amount.

    rnd

    Rounding mode. Defaults to ALL.

    Point C.

    col

    Line color.

    thickness

    float

    Line thickness. Defaults to 1.0.

    mode

    Outline mode. Defaults to INSET.

    Bottom-right point.

    bl

    Bottom-left point.

    c

    Line color.

    thickness

    float

    Line thickness. Defaults to 1.0.

    mode

    Outline mode. Defaults to INSET.

    float

    Line thickness. Defaults to 1.0.

    mode

    Outline mode. Defaults to INSET.

    Line color.

    segments

    int

    Circle segments. Defaults to 36.

    fill

    float

    Fill amount. Defaults to 1.0.

    thickness

    float

    Line thickness. Defaults to 1.0.

    mode

    Outline mode. Defaults to INSET.

    Line color.

    thickness

    float

    Line thickness. Defaults to 1.0

    Start color.

    c2

    End color.

    thickness

    float

    Line thickness. Defaults to 1.0.

    float

    Rounding amount.

    rnd

    Rounding mode. Defaults to ALL.

    thickness

    float

    Line thickness. Defaults to 1.0.

    mode

    Outline mode. Defaults to INSET.

    Text color.

    params

    ?

    Text aligning parameters. Defaults to nil.

    Name

    Type

    Description

    a

    Vec2

    A point.

    b

    Vec2

    B point.

    layer:AddTriangleFilled(
        draw.Vec2(50, 50), draw.Vec2(25, 75),
        draw.Vec2(75, 75), draw.Color(255, 255, 255));

    Name

    Type

    Description

    tl

    Vec2

    Top left point.

    tr

    Vec2

    Top right point.

    layer:AddQuadFilled(
        draw.Vec2(50, 50), draw.Vec2(100, 60),
        draw.Vec2(100, 100), draw.Vec2(30, 70),
        draw.Color(255, 255, 255));

    Name

    Type

    Description

    r

    Rect

    Rectangle.

    col

    Color

    Shape color.

    layer:AddRectFilled(draw.Rect(50, 50, 150, 150), draw.Color(255, 255, 255));

    Name

    Type

    Description

    center

    Vec2

    Center point.

    radius

    float

    Circle radius.

    layer:AddCircleFilled(draw.Vec2(50, 50), 10, draw.Color(255, 255, 255));

    Name

    Type

    Description

    a

    Vec2

    A point.

    b

    Vec2

    B point.

    layer:AddTriangleFilledMulticolor(
         draw.Vec2(50, 50), draw.Vec2(25, 75),
         draw.Vec2(75, 75), {
            draw.Color(255, 0, 0),
            draw.Color(0, 255, 0),
            draw.Color(0, 0, 255)
         });

    Name

    Type

    Description

    r

    Rect

    Rectangle.

    cols

    table[Color, Color, Color, Color]

    Colors for each corner of the rectangle, in clockwise order starting from top-left.

    layer:AddRectFilledMulticolor(
        draw.Rect(50, 50, 150, 150), {
            draw.Color(255, 0, 0),
            draw.Color(0, 255, 0),
            draw.Color(0, 0, 255),
            draw.Color(255, 255, 0)
        });

    Name

    Type

    Description

    center

    Vec2

    Center point.

    radius

    float

    Circle radius.

    layer:AddCircleFilledMulticolor(
        draw.Vec2(100, 100), 50, {
            draw.Color(255, 0, 0),
            draw.Color(0, 0, 255)
        }, 36, 1.0);

    Name

    Type

    Description

    tl

    Vec2

    Top left point.

    tr

    Vec2

    Top right point.

    layer:AddQuadFilledMulticolor(
        draw.Vec2(50, 50), draw.Vec2(150, 50),
        draw.Vec2(150, 150), draw.Vec2(50, 150), {
            draw.Color(255, 0, 0),
            draw.Color(0, 0, 255)
        });

    Name

    Type

    Description

    mins

    Vec2

    Top left point of the pill.

    maxs

    Vec2

    Bottom right point of the pill.

    layer:AddPillMulticolor(
        draw.Vec2(50, 50), draw.Vec2(150, 100),
        10, 20, {
            draw.Color(255, 0, 0),
            draw.Color(0, 0, 255)
        }, 16);

    Name

    Type

    Description

    r

    Rect

    Bounding box for the shadow line.

    dir

    ShadowDir

    Shadow direction.

    layer:AddShadowLine(
        draw.Rect(50, 50, 150, 150), draw.ShadowDir.DOWN, 0.25);

    Name

    Type

    Description

    r

    Rect

    Rectangle.

    radius

    float

    Shadow distance, in pixels, outwards.

    layer:AddShadowRect(
        draw.Rect(50, 50, 150, 150), 15, true, 0.25);

    Name

    Type

    Description

    r

    Rect

    Box rectangle.

    radius

    float

    Glow distance, in pixels, outwards.

    layer:AddGlow(draw.Rect(50, 50, 150, 150), 15, draw.Color(255, 0, 0));

    Name

    Type

    Description

    r

    Rect

    Rectangle.

    c

    Color

    Fill color.

    layer:AddRectFilledRounded(
        draw.Rect(50, 50, 150, 150),
        draw.Color(255, 0, 0),
        10,
        draw.Rounding.ALL
    );

    Name

    Type

    Description

    r

    Rect

    Rectangle.

    c

    table[Color, Color, Color, Color]

    Fill colors. Used clockwise, starting from top left.

    layer:AddRectFilledRoundedMulticolor(
        draw.Rect(50, 50, 150, 150), {
            draw.Color(255, 0, 0),
            draw.Color(0, 255, 0),
            draw.Color(0, 0, 255),
            draw.Color(255, 255, 0)
        },
        10,
        draw.Rounding.ALL
    );

    Name

    Type

    Description

    a

    Vec2

    Point A.

    b

    Vec2

    Point B.

    layer:AddTriangle(
        draw.Vec2(50, 50),
        draw.Vec2(25, 75),
        draw.Vec2(75, 75),
        draw.Color(255, 0, 0),
        1.0,
        draw.OutlineMode.INSET
    );

    Name

    Type

    Description

    tl

    Vec2

    Top-left point.

    tr

    Vec2

    Top-right point.

    layer:AddQuad(
        draw.Vec2(50, 50),
        draw.Vec2(150, 50),
        draw.Vec2(150, 150),
        draw.Vec2(50, 150),
        draw.Color(255, 0, 0),
        1.0,
        draw.OutlineMode.INSET
    );

    Name

    Type

    Description

    r

    Rect

    Rectangle.

    c

    Color

    Line color.

    layer:AddRect(
        draw.Rect(50, 50, 150, 150),
        draw.Color(255, 0, 0),
        1.0,
        draw.OutlineMode.INSET
    );

    Name

    Type

    Description

    center

    Vec2

    Center point.

    radius

    float

    Circle radius.

    layer:AddCircle(
        draw.Vec2(100, 100),
        50,
        draw.Color(255, 0, 0),
        36,
        1.0,
        1.0,
        draw.OutlineMode.INSET
    );

    Name

    Type

    Description

    a

    Vec2

    Start point.

    b

    Vec2

    End point.

    layer:AddLine(
        draw.Vec2(50, 50),
        draw.Vec2(150, 150),
        draw.Color(255, 0, 0)
    );

    Name

    Type

    Description

    a

    Vec2

    Start point.

    b

    Vec2

    End point.

    layer:AddLineMulticolor(
        draw.Vec2(50, 50),
        draw.Vec2(150, 150),
        draw.Color(255, 0, 0),
        draw.Color(0, 0, 255),
        2.0
    );

    Name

    Type

    Description

    r

    Rect

    Rectangle.

    c

    Color

    Line color.

    layer:AddRectRounded(draw.Rect(50, 50, 150, 150),
        draw.Color(255, 255, 255), 14);

    Name

    Type

    Description

    p

    Vec2

    Text origin point.

    text

    string

    Text.

    layer:AddText(draw.Vec2(50, 50), 'Hello world!', draw.Color(255, 255, 255));

    Name

    Type

    Description

    r

    Rect?

    New clip rect.

    intersect

    bool

    Whether this function should intersect previous rect with the new one. Defaults to true.

    layer:OverrideClipRect(draw.Rect(50, 50, 150, 150));

    Name

    Type

    Description

    area

    Rect

    Blurred area

    callback

    function

    Render callback, applies the effect on all render calls inside it

    layer:AddWithBlur(draw.Rect(0, 0, 200, 200), function()
        layer:AddText(draw.Vec2(100, 100), "I'm so blurry!", draw.Color.White())
    end)

    Name

    Type

    Description

    area

    Rect

    Blurred area

    callback

    function

    Render callback, applies the effect on all render calls inside it

    layer:AddWithBlurShared(draw.Rect(0, 0, 200, 200), function()
        layer:AddText(draw.Vec2(100, 100), "I can't read this either...", draw.Color.White())
    end)

    Name

    Type

    Description

    area

    Rect

    Blurred area

    callback

    function

    Render callback, applies the effect on all render calls inside it

    layer:AddWithFrost(draw.Rect(0, 0, 200, 200), function()
        layer:AddText(draw.Vec2(100, 100), "Chilly", draw.Color.White())
    end)

    If font wasn't set, this function will do nothing.

    You can control the color while rendering the text. To change the color, add \fRRGGBBAA to the string. To reset the color, add \b.

    This method is preferred over AddWithBlur as it performs better.

    Command
    FontBase
    Vec2?

    c

    br

    c

    c

    cols

    br

    radius_min

    a

    bg

    c

    amount

    amount

    c

    br

    thickness

    c

    c

    c

    amount

    c

    Vec2
    Color
    Vec2
    Vec2
    Color
    Color
    Vec2
    Color
    Color
    Color
    Color
    Color
    Vec2
    Vec2
    Color
    Color
    Color
    Color
    Color
    GlowParts
    Rounding
    Rounding
    Vec2
    Color
    OutlineMode
    Vec2
    Vec2
    Color
    OutlineMode
    OutlineMode
    Color
    OutlineMode
    Color
    Color
    Color
    Rounding
    OutlineMode
    Color
    TextParams