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

CS2 Lua API

Loading...

Introduction

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...

Loading...

Loading...

Creating Libraries

Libraries are not yet supported, but will be available soon.

Overview

Official lua API documentation for fatality.win​

Instances

Types

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

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

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: Visual Studio Code, Notepad++, 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.

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

.ljbc format cannot be loaded from local sources.

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 we provide. Each event has its own signature, so pay attention to the parameters your callback function should accept. present_queue doesn’t provide any parameters, so our function doesn’t need any either.

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

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 . 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:

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?

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 . 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 method on the layer. Notice that it’s called using the colon syntax: obj:fn(), because it’s a method.

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.

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 method on .

Result

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

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

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 and pass the desired ID.

Then, create the checkbox by calling and passing the ID structure you've created.

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 - .

Adding the row to a group

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

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

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

Then call its method to include your row:

That's it!

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

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:

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.

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 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

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()).

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

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.

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.

  • , or any of its child types.
    the official Lua documentation

    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. Maintain a minimum quality standard

    Trivial one-line scripts, spam items, or submissions with no meaningful functionality are not allowed. All items must undergo basic quality assurance to ensure they work as described and do not pollute 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.

    Publishing Tool

    Welcome to the Publishing Tool documentation.

    • Creating a script: Step By Step Guide

    • Using branches: Branches

    • Using libraries: Libraries & Dependencies

    cfiring_mode

    Firing mode information.

    values_arr

    FieldRead only

    Type: <type>

    Values.

    outline_mode

    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).


    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.

    convar

    Represents a convar used by the game.

    name

    FieldRead only

    Type: string


    description

    FieldRead only

    Type: string


    flags

    FieldRead only

    Type: int


    value

    FieldRead only

    Type: <type>

    The value of the convar represented in its type

    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 ws for usage details.

    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.

    gui.control_id
    gui.checkbox
    gui.make_control
    add
    reset()
    local cb = gui.checkbox(gui.control_id('my_checkbox'));
    local row = gui.make_control('My checkbox', cb);
    local group = gui.ctx:find('lua>elements a');
    group:add(row);
    if cb:get_value():get() then
    local cb = gui.checkbox(gui.control_id('my_checkbox'));
    local row = gui.make_control('My checkbox', cb);
    local group = gui.ctx:find('lua>elements a');
    group:add(row);
    
    local function on_present_queue()
        if cb:get_value():get() then
            local d = draw.surface;
            d.font = draw.fonts['gui_main'];
            d:add_text(draw.vec2(50, 50),
                'Hello drawing! My first script speaking.',
                draw.color.white()
            );
        end
    end
    
    events.present_queue:add(on_present_queue);
    several callbacks
    drawing layer
    draw.fonts
    add_text
    add
    events.present_queue
    My first lua

    Updating Items

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

    Upload a new build & wait for approval

    Check 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

    4. Click Save

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

    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.

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

    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).

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

    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.

    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.

    Arguments

    Name
    Type
    Description

    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

    Example

    cinput_system

    Usage: game.input_system:{method}

    This type represents the game's control input system.

    vk_to_button_code

    Method

    Converts a virtual key to button code.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example

    ccvar

    Usage:

    Usage: game.cvar:{method}

    This type represents the game's cvar system.

    find

    Method

    Get the game's cvar under this name.

    Arguments

    Returns

    Example

    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.

    user_t

    This type represents basic user information.

    avatar

    FieldRead only

    Type:

    User's avatar. May be nil.


    username

    FieldRead only

    Type: string

    User's username.

    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 (see).

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

    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.

    global_vars

    Field

    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

    Field

    glyph_t

    This type represents a glyph object.

    codepoint

    FieldRead only

    cgame_ui_funcs

    Usage: game.game_ui_funcs:{method}

    This type represents the game's UI functions.

    get_binding_for_button_code

    Method

    render_mode

    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.


    cs2_grenade_projectile

    This type represents a grenade projectile.

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

    get_abs_origin

    text_alignment

    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/

    font_flags

    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.


    observer_mode_t

    This enum represents the observer modes available in the game.


    none

    Field

    Represents no observer mode (not spectating anyone).


    csweapon_mode

    This enum represents the firing mode for a weapon.

    primary_mode

    Field

    Primary mode (usually left mouse button).


    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.

    notification_system

    This type represents a notification system.

    add

    Method

    Adds a notification to the list.

    Arguments

    shadow_dir

    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.


    local function on_present_queue()
        local d = draw.surface;
        d.font = draw.fonts['gui_main'];
        d:add_text(draw.vec2(50, 50),
            'Hello drawing! My first script speaking.',
             draw.color.white()
        );
    end
    
    events.present_queue:add(on_present_queue);
    local function on_present_queue()
    end
    local d = draw.surface;
    d.font = draw.fonts['gui_main'];
    d:add_text(draw.vec2(50, 50),
            'Hello drawing! My first script speaking brev.',
             draw.color.white()
        );
    events.present_queue:add(on_present_queue);
    Type: int

    Character codepoint.


    size

    FieldRead only

    Type: vec2

    Glyph dimensions.


    offset

    FieldRead only

    Type: vec2

    Glyph offset.


    uv

    FieldRead only

    Type: rect

    UV rect on the texture atlas.

    wireframe

    Field

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

    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.

    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.

    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.

    secondary_mode

    Field

    Secondary mode (usually right mouse button).

    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.

    Type: global_vars_t

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


    engine

    Field

    Type: cengine_client

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


    input

    Field

    Type: ccsgo_input

    This service exposes the command input system.


    input_system

    Field

    Type: cinput_system

    This service exposes the control input system.


    game_ui_funcs

    Field

    Type: cgame_ui_funcs

    This service exposes the game's UI functions.

    events_t
    texture?

    global_vars_t

    Usage:

    game.global_vars.{field}

    Usage: game.global_vars.{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.

    real_time

    Field

    Type: float

    Time passed since the game start, in seconds.


    frame_count

    Field

    Type: int

    Amount of frames rendered since the game start.


    abs_frame_time

    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.


    max_clients

    Field

    Type: int

    Maximum amount of clients on the current server.


    ticks_this_frame

    Field

    Type: int

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


    frame_time

    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.


    cur_time

    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.


    tick_fraction

    Field

    Type: float

    Current tick's fractional value.


    tick_count

    Field

    Type: int

    Ticks passed since the server's game start.


    map_path

    Field

    Type: string

    Relative path to current loaded map's file.


    map_name

    Field

    Type: string

    Name of the currently loaded map.

    csweapon_category

    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.

    ...

    ...

    Values to print in the console.

    text

    string

    Read print for documentation.

    vk

    int

    Virtual key.

    int

    Button code.

    local button = game.input_system:vk_to_button_code(0x41); -- 'A'

    Name

    Type

    Description

    name

    string

    Var name.

    Type

    Description

    convar

    Convar object.

    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
    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.

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

    Arguments

    None.

    Returns

    Nothing.

    Example


    destroy

    Method

    Destroys a managed object in GPU memory.

    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 **.

    Arguments

    None.

    Returns

    Nothing.

    Example

    draw
    Returns the binding name for a button code.

    Arguments

    Name
    Type
    Description

    code

    int

    Button code.

    Returns

    Type
    Description

    string

    Binding.

    Example

    local bind = game.game_ui_funcs:get_binding_for_button_code(code);
    add_listener

    Method

    Adds a game event to the listener.

    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.

    Arguments

    Name
    Type
    Description

    name

    string

    Event name.

    Returns

    Nothing.

    Example

    print('Hello world!', 123); -- prints out "Hello world! 123" to the console
    error('Can't recover from this one! Error: ' .. tostring(123));
    tex:create();
    font:destroy();
    mods.events:add_listener('round_end');
    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.

    4. The library will appear in your dependencies list.

    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.

    Step By Step Guide
    Method

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

    Arguments

    None.

    Returns

    Type

    Description

    Origin.

    Example


    get_grenade_type

    Method

    Returns the grenade type.

    Arguments

    None.

    Returns

    Type

    Description

    int

    Grenade type.

    Example

    base_entity

    Name

    Type

    Description

    notif

    Notification object.

    Returns

    Nothing.

    Example

    notif:add(my_notification);
    Branches

    svg_texture

    This type represents an SVG texture object.

    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.

    __call

    Constructor

    Constructs an SVG texture.

    Arguments

    Returns

    Example

    event_t

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

    add

    Method

    Adds a callback to the event.

    Arguments

    Name
    Type
    Description

    Returns

    Nothing.

    Example


    remove

    Method

    Removes a callback from the event.

    Arguments

    Name
    Type
    Description

    Returns

    Nothing.

    Example

    ccsgo_input

    Usage: game.input.{field_or_method}

    This type represents the game's command input system.

    in_third_person

    FieldRead only

    Type: bool

    true if currently in the third person.


    get_view_angles

    Method

    Returns current camera view angles.

    Arguments

    None.

    Returns

    Type
    Description

    Example


    set_view_angles

    Method

    Sets new camera view angles.

    Arguments

    Name
    Type
    Description

    Returns

    Nothing.

    Example

    schema_accessor_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.

    get

    Method

    Returns the value.

    Arguments

    None.

    Returns

    Example

    set


    Method

    Sets the value.

    Arguments

    Returns

    Nothing.

    Example

    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.

    control_id

    This type represents a control ID.

    __call

    Constructor

    Constructs the ID structure.

    Arguments

    Returns

    Example


    id

    FieldRead only

    Type: int

    Hashed representation of the ID.


    id_string

    FieldRead only

    Type: string

    Normal representation of the ID.

    entity_list_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.

    for_each

    Method

    Loops the entities.

    Arguments

    Returns

    Nothing.

    Example


    for_each_z

    Method

    Loops the entities in the reverse order.

    Arguments

    Returns

    Nothing.

    Example

    ccsweapon_base_vdata

    This type represents a weapon's static data.

    __index

    Function

    Attemps to search for a field in this class.

    Arguments

    Returns

    Example

    entity_entry_t

    Represents an entity entry.

    entity

    Field

    Type: <type>

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


    had_dataupdate

    Field

    Type: bool

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


    handle

    Field

    Type:

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


    avatar

    Field

    Type:

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

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

    spacer

    This type represents a spacer control.

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

    __call

    Constructor

    Constructs the spacer.

    Arguments

    Returns

    Example

    button

    This type represents a button control.

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

    __call

    Constructor

    Constructs the button.

    Arguments

    Returns

    Example

    image

    This type represents an image control.

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

    __call

    Constructor

    Constructs the image.

    Arguments

    Returns

    Example

    selectable

    This type represents a selectable control.

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

    __call

    Constructor

    Constructs the selectable.

    Arguments

    Returns

    Example

    accessor

    accessor

    Last modified: 03 January 2025

    This type represents a safe way to access maps.

    Note that <type> indicates the specific type this instance holds.

    font_gdi

    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

    csweapon_type

    This enum represents the weapon type in the game.

    knife

    Field

    Represents a knife-type weapon.


    rounding

    rounding

    Last modified: 03 January 2025

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

    tl

    gui

    Usage:

    gui.{func_or_field}

    Usage: gui.{func_or_field}

    This table exposes the GUI system of the software.

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

    Adapter

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

    get_back_buffer

    Method

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

    Arguments

    context

    This type represents the GUI context.

    find

    Method

    Finds a control by ID.

    Arguments

    mouse_button

    This enum represents mouse buttons.

    left

    Field

    Left mouse button.


    color_picker

    This type represents a color picker control.

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

    __call

    notification

    This type represents a notification item.

    __call

    Constructor

    Constructs the notification.

    Arguments

    chandle

    This type represents an entity handle.

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

    get

    local org = wep:get_abs_origin();
    local type = gren:get_grenade_type();
    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.

    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).

    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).

    Guidelines
    Step By Step Guide
    chandle<type>
    texture
    vector
    notification
    Upload a build

    Name

    Type

    Description

    sv

    string

    SVG text.

    h

    float

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

    Type

    Description

    svg_texture

    SVG texture object.

    fn

    function

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

    fn

    function

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

    vector

    View angles.

    ang

    vector

    View angles.

    Type

    Description

    <type>

    Value.

    Name

    Type

    Description

    value

    <type>

    Value.

    Name

    Type

    Description

    id

    string

    ID.

    Type

    Description

    control_id

    ID structure.

    Name

    Type

    Description

    fn

    function(entity_entry_t)

    Function callback.

    Name

    Type

    Description

    fn

    function(entity_entry_t)

    Function callback.

    Name

    Type

    Description

    name

    string

    Field name.

    Type

    Description

    schema_accessor_t

    Accessor instance.

    local price = wpn_data.m_nPrice;
    local price = wpn_data['m_nPrice']; -- this also works

    Name

    Type

    Description

    id

    control_id

    ID.

    Type

    Description

    spacer

    Spacer instance.

    Name

    Type

    Description

    id

    control_id

    Control ID.

    str

    string

    Text string.

    Type

    Description

    button

    Button object.

    Name

    Type

    Description

    id

    control_id

    ID.

    tex

    texture

    Texture.

    Type

    Description

    image

    Image instance.

    Name

    Type

    Description

    id

    control_id

    Control ID.

    str

    string

    Text string.

    Type

    Description

    selectable

    Selectable object.

    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.

    __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

    Name

    Type

    Description

    id

    string

    Control ID.

    Returns

    Type

    Description

    <control>?

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

    Example


    user

    Field

    Type: user_t

    User's basic information.

    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


    is_clientside

    Method

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

    Arguments

    None.

    Returns

    Type

    Description

    bool

    true if client-sided.

    Example

    local lightning = draw.svg_texture([[
    <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);
    events.present_queue:add(function ()
        -- will be called every time game queues a frame for rendering
    end);
    local function on_present()
        if some_condition then
            events.present_queue:remove(on_present)
        end
    end
    
    events.present_queue:add(on_present)
    local ang = game.input:get_view_angles();
    game.input:set_view_angles(math.vec3(0, 0, 0));
    local health = player.m_iHealth:get();
    player.m_iHealth:set(50); -- won't really do anything with the health
    local id = gui.control_id('my_id');
    entities.players:for_each(function (entry)
        -- ...
    end);
    entities.players:for_each_z(function (entry)
        -- ...
    end);
    local sp = gui.spacer(gui.control_id('my_id'));
    local btn = gui.button(id, 'Hello!');
    local img = gui.image(gui.control_id('my_id'));
    local sel = gui.selectable(id, 'Hello!');
    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 some_cb = ctx:find('some_cb');
    local ent = handle:get();
    if handle:valid() then
        -- ...
    end
    if handle:is_clientside() then
        -- ...
    end
    Constructor

    Constructs a font object.

    Arguments

    Name

    Type

    Description

    name

    string

    System font name (example: 'Arial').

    size

    float

    Font height, in pixels.

    fl

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

    mi

    int

    Starting codepoint. Defaults to 0.

    Returns

    Type

    Description

    font_gdi

    Font object.

    Example

    font_base
    .

    ctx

    Field

    Type: context

    GUI context.


    notify

    Field

    Type: notification_system

    Notification system.


    input

    Field

    Type: context_input

    Input context.


    make_control

    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

    None.

    Returns

    Type

    Description

    Back buffer texture pointer.

    Example


    get_back_buffer_downsampled

    Method

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

    Arguments

    None.

    Returns

    Type

    Description

    Downsampled back buffer texture pointer.

    Example


    get_shared_texture

    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

    Constructor

    Constructs the color picker.

    Arguments

    Name

    Type

    Description

    id

    Control ID.

    allow_alpha

    bool

    Whether to enable alpha channel. Defaults to true.

    Returns

    Type

    Description

    color_picker

    Color picker object.

    Example


    get_value

    Method

    Returns color picker' value.

    Arguments

    None.

    Returns

    Type

    Description

    Value data.

    Example

    control

    Name

    Type

    Description

    hdr

    string

    Header (title).

    txt

    string

    Text (body).

    ico

    Icon. Defaults to nil.

    Returns

    Type

    Description

    notification

    Notification object.

    Example

    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)

    Warning: You cannot change the item type later.

    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)

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

    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.

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

    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.

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

    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.

    cengine_client

    Usage: game.engine:{method}

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

    get_last_timestamp

    Method

    Returns last timestamp, in seconds.

    Arguments

    None.

    Returns

    Type
    Description

    Example


    get_last_server_tick

    Method

    Returns last server tick number.

    Arguments

    None.

    Returns

    Type
    Description

    Example


    in_game

    Method

    Returns whether the client is currently in game.

    Arguments

    None.

    Returns

    Type
    Description

    Example


    is_connected

    Method

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

    Arguments

    None.

    Returns

    Type
    Description

    Example


    get_netchan

    Method

    Returns the Network Channel used for network communication.

    Arguments

    None.

    Returns

    Type
    Description

    Example


    client_cmd

    Method

    Executes a client-sided console command.

    Arguments

    Name
    Type
    Description

    Returns

    Nothing.

    Example


    get_screen_size

    Method

    Returns client window screen size.

    Arguments

    None.

    Returns

    Type
    Description

    Example

    cs2_weapon_base

    This type represents a CCSWeaponBase entity.

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

    get_abs_origin

    Method

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

    Arguments

    None.

    Returns

    Example

    get_id

    Method

    Returns the weapon ID.

    Arguments

    None.

    Returns

    Example

    get_type

    Method

    Returns the weapon type.

    Arguments

    None.

    Returns

    Example

    get_data

    Method

    Returns the weapon static data.

    Arguments

    None.

    Returns

    Example

    entities

    This table represents an internal entity list.

    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.

    players

    Field

    Type:

    Player pawns.


    controllers

    Field

    Type:

    Player controllers.


    items

    Field

    Type:

    Items (held).


    dropped_items

    Field

    Type:

    Dropped items.


    projectiles

    Field

    Type:

    Grenade projectiles.


    get_local_pawn

    Function

    Returns the local player's pawn.

    Arguments

    None.

    Returns

    Example


    get_local_controller

    Function

    Returns the local player's controller.

    Arguments

    None.

    Returns

    Example

    checkbox

    This type represents a checkbox control.

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

    __call

    Constructor

    Constructs the checkbox.

    Arguments

    Returns

    Example


    get_value

    Method

    Returns checkbox' value.

    Arguments

    None.

    Returns

    Example


    set_value

    Method

    Sets checkbox' value.

    It is advised to use this method instead of 's method.

    Arguments

    Returns

    Nothing.

    Example

    container

    This type represents an abstract container.

    add

    Method

    Adds a control to the container.

    Arguments

    Returns

    Nothing.

    Example


    remove

    Method

    Removes a control from the container.

    Arguments

    Returns

    Nothing.

    Example


    find

    Method

    Finds a control by ID.

    Arguments

    Returns

    Example

    combo_box

    This type represents a combo box control.

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

    add method expects an instance of selectable. Passing other control types will not add them to the list.

    Value bits are toggled in order of selectables. That means if the first element is toggled, so will be the first bit, etc.

    __call

    Constructor

    Constructs the combo box.

    Arguments

    Returns

    Example


    allow_multiple

    Field

    Type: bool

    If set to true, the checkbox will be able to toggle multiple selectables.


    get_value

    Method

    Returns combo box' value.

    Arguments

    None.

    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 . 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.

    draw

    Usage: draw.{func_or_field}

    This table describes the rendering system of the software.

    glow_parts

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

    tl

    Field

    Draw top-left corner.


    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

    value_param

    This type represents a value data used by some control types.

    Note, that this part: <type> is used to designate what exact type the instance of this type is holding. For example, when it says value_param<bool>, it means that get will return a bool value, and set will accept only the type bool as it's val

    label

    This type represents a label control.

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

    __call

    text_input

    This type represents a text input control.

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

    __call

    cnet_chan

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

    get_address

    Method

    local sys_font = draw.font_gdi('Calibri', 14);
    local row = gui.make_control('Hello checkbox!', my_cb);
    local bb = adapter:get_back_buffer();
    local ds = adapter:get_back_buffer_downsampled();
    local shared = adapter:get_shared_texture();
    local picker = gui.color_picker(id);
    local val = picker:get_value():get();
    local notif = gui.notification('Hello', 'Lua works!');
    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.

    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: adapter

    Rendering adapter.


    frame_time

    FieldRead only

    Type: float

    Rendering frame time. An alias to global_vars_t.frame_time.


    time

    FieldRead only

    Type: float

    Time, in seconds. An alias to global_vars_t.real_time.


    scale

    FieldRead only

    Type: float

    Global DPI scale.


    display

    FieldRead only

    Type: vec2

    Display area size (viewport dimensions). cengine_client:get_screen_size will return exactly the same values. Overriding any of this vector's values will lead to an undefined behavior.


    textures

    FieldRead only

    Type: accessor<texture>

    A string to texture 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).

    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


    fonts

    FieldRead only

    Type: accessor<font_base>

    A string to font_base 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).

    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


    shaders

    FieldRead only

    Type: accessor<shader>

    A string to shader 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).

    Build-in shaders:

    • blur_f: gaussian blur shader


    surface

    FieldRead only

    Type: layer

    The layer you can render on.

    ma

    int

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

    weight

    int

    Font weight. Defaults to 400 (regular).

    font_flags
    control
    layout
    ptr
    ptr
    ptr
    control_id
    value_param<color>
    texture?
    Bundled Assets
    Branches

    float

    Timestamp, in seconds.

    int

    Server tick number.

    bool

    In-game status.

    bool

    true if connected.

    cnet_chan

    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

    vector

    Origin.

    Type

    Description

    weapon_id

    Weapon ID.

    Type

    Description

    csweapon_type

    Weapon type.

    Type

    Description

    ccsweapon_base_vdata

    Weapon data.

    Type

    Description

    cs2_player_pawn

    Pawn.

    Type

    Description

    cs2_player_controller

    Controller.

    entity_list_t<cs2_player_pawn>
    entity_list_t<cs2_player_controller>
    entity_list_t<cs2_weapon_base>
    entity_list_t<cs2_weapon_base>
    entity_list_t<cs2_grenade_projectile>

    Name

    Type

    Description

    id

    control_id

    ID.

    Type

    Description

    checkbox

    Checkbox instance.

    Type

    Description

    value_param<bool>

    Value data.

    Name

    Type

    Description

    val

    bool

    New value.

    value_param
    set

    Name

    Type

    Description

    ctrl

    control

    Control to add.

    Name

    Type

    Description

    ctrl

    control

    Control to remove.

    Name

    Type

    Description

    id

    string

    Control ID.

    Type

    Description

    <control>?

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

    Name

    Type

    Description

    id

    control_id

    ID.

    Type

    Description

    combo_box

    Combo box instance.

    Type

    Description

    value_param<bits>

    Value data.

    parameter.

    get

    Method

    Returns the value.

    Arguments

    None.

    Returns

    Type

    Description

    <type>

    Value.

    Example

    get_direct

    Method

    Returns the value disrgarding any active keybinds.

    Arguments

    None.

    Returns

    Type

    Description

    <type>

    Value.

    Example

    set

    Method

    Sets the value.

    It is advised to use set_value method of the control, if any.

    Arguments

    Name

    Type

    Description

    val

    <type>

    Value.

    Returns

    Nothing.

    Example

    get_hotkey_state

    Method

    Returns true if there's any active hotkeys.

    Arguments

    None.

    Returns

    Type

    Description

    bool

    true if any hotkey is active.

    Example

    disable_hotkeys

    Method

    Disables all active hotkeys. This allows you to override the value.

    Arguments

    None.

    Returns

    Nothing.

    Example

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

    Returns address string of the remote machine.

    Arguments

    None.

    Returns

    Type

    Description

    string?

    IP-address or Steam Server Address.

    Example

    is_loopback


    Method

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

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

    Arguments

    None.

    Returns

    Type

    Description

    bool?

    true if connected to the local machine.

    Example


    is_null

    Method

    Returns whether the channel is stubbed.

    Arguments

    None.

    Returns

    Type

    Description

    bool

    true if current channel is a dummy channel.

    Example


    get_latency

    Method

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

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

    Arguments

    None.

    Returns

    Type

    Description

    float?

    Latency (in seconds).

    Example

    local last_time = game.engine:get_last_timestamp();
    local server_tick = game.engine:get_last_server_tick();
    if game.engine:in_game() then
        print("I'm in game!");
    end
    if game.engine:is_connected() then
        print("I'm connected!");
    end
    local chan = game.engine:get_netchan();
    game.engine:client_cmd('say Hello!');
    local w, h = game.engine:get_screen_size();
    local org = wep:get_abs_origin();
    local wep_id = wep:get_id();
    local type = wep:get_type();
    local data = wep:get_data();
    local lp = entities.get_local_pawn();
    local lp_ctrl = entities.get_local_controller();
    local cb = gui.checkbox(gui.control_id('my_id'));
    local val = cb:get_value():get();
    cb:set_value(true);
    container:add(my_control);
    container:remove(my_control);
    local some_cb = container:find('some_cb');
    local cb = gui.combo_box(gui.control_id('my_id'));
    local val = cb:get_value():get();
    ctrl:get_value():get();
    ctrl:get_value():get_direct();
    ctrl:get_value():set(123);
    if ctrl:get_value():get_hotkey_state() then
        -- ...
    end
    ctrl:get_value():disable_hotkeys();
    local chan = game.engine:get_netchan();
    if chan and not chan:is_null() then
        print(chan:get_address());
    end
    local chan = game.engine:get_netchan();
    if chan and not chan:is_null() and chan:is_loopback() then
        print('Connected to localhost!');
    end
    local chan = game.engine:get_netchan();
    if not chan or chan:is_null() then
        print('Not connected!');
    end
    local chan = game.engine:get_netchan();
    if chan and not chan:is_null() then
        print('Current latency: ' .. tostring(math.round(chan:get_latency() * 1000.0)) .. 'ms');
    end
    present_queue

    Field

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

    Arguments

    None.


    frame_stage_notify

    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

    stage

    Current frame stage.


    render_start_pre

    Field

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

    Arguments

    None.


    render_start_post

    Field

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

    Arguments

    Name
    Type
    Description

    setup

    View setup information.


    setup_view_pre

    Field

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

    Arguments

    None.


    setup_view_post

    Field

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

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

    Arguments

    None.


    override_view

    Field

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

    Arguments

    Name

    Type

    Description

    setup

    View setup information.


    event

    Field

    Invoked every time a game event fires.

    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

    Arguments

    Name
    Type
    Description

    event

    Game event.


    handle_input

    Field

    Invoked every time the game processes mouse/controller input. This is a good place to alter mouse movement, if needed.

    Arguments

    Name
    Type
    Description

    type

    Type of the input.

    value

    Input value.


    input

    Field

    Invoked every time the GUI processes input.

    Arguments

    Name
    Type
    Description

    msg

    int

    System message.

    w

    int

    WPARAM.

    l

    int

    LPARAM.

    event_t
    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.

    Name

    Type

    Description

    path

    string

    Path to a ttf/otf file.

    size

    float

    Font height, in pixels.

    fl

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

    mi

    int

    Starting codepoint. Defaults to 0.

    1. From memory.

    Name

    Type

    Description

    mem

    Pointer to a font file in memory.

    sz

    int

    Font file size, in bytes.

    size

    float

    Font height, in pixels.

    fl

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

    1. From memory, with codepoint pairs.

    Name

    Type

    Description

    mem

    Pointer to a font file in memory.

    sz

    int

    Font file size, in bytes.

    size

    float

    Font height, in pixels.

    fl

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

    Returns

    Type

    Description

    font

    Font object.

    Example

    font_base
    Constructor

    Constructs the label.

    Arguments

    Name

    Type

    Description

    id

    Control ID.

    str

    string

    Label string.

    col

    Label color. Defaults to nil.

    bold

    bool

    Whether to use bold font. Defaults to false.

    Returns

    Type

    Description

    label

    Label object.

    Example


    set_text

    Method

    Sets the new text.

    Arguments

    Name

    Type

    Description

    str

    string

    New text.

    Returns

    Nothing.

    Example

    control
    Constructor

    Constructs the text input.

    Arguments

    Name

    Type

    Description

    id

    ID.

    Returns

    Type

    Description

    text_input

    Text input instance.

    Example


    placeholder

    Field

    Type: string

    Placeholder text.


    value

    FieldRead only

    Type: string

    Value.


    set_value

    Method

    Sets the new text.

    Arguments

    Name

    Type

    Description

    str

    string

    New value.

    Returns

    Nothing.

    Example

    control

    animated_texture

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

    This type inherits texture 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 texture 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


    should_loop

    Field

    Type: bool

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


    Method

    Reset loop to run from the first frame.

    Arguments

    None.

    Returns

    Nothing.

    Example


    set_frame

    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.

    Frame count starts from 0.

    Arguments

    Returns

    Nothing.

    Example


    get_frame_count

    Method

    Returns amount of frames in the animation.

    Arguments

    None.

    Returns

    Example

    slider

    This type represents a slider control.

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

    __call

    Constructor

    Constructs the slider.

    Arguments

    Format Table

    Format table can either be a single string with the desired format, or multiple elements with different minimum actuators. You have to pass multiple values in the descendant order, starting from the highest value to the lowest value. min and add values are both optional, but it makes no sense to leave either of them out.

    Formatting uses standard printf syntax.

    Passing invalid format will lead to an undefined behavior.

    1. Single Formatting.

    2. Multi Formatting.

    Returns

    Example


    get_value

    Method

    Returns slider' value.

    Arguments

    None.

    Returns

    Example

    cs2_player_controller

    This type represents a CCSPlayerController class.

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

    is_enemy

    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:

    control_type

    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

    local cool_font = draw.font('myfont.ttf', 16);
    local lab = gui.label(id, 'Hello!');
    lab:set_text('New hello!');
    local sp = gui.text_input(gui.control_id('my_id'));
    input:set_value('Hello!');
    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.

    client_frame_stage
    cview_setup
    cview_setup
    game_event_t
    input_type_t
    ref_holder_t<float>
    Documentation

    ma

    int

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

    mi

    int

    Starting codepoint. Defaults to 0.

    ma

    int

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

    pairs

    table[{int, int}...]

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

    font_flags
    ptr
    font_flags
    ptr
    font_flags
    control_id
    color?
    control_id

    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.

    texture

    float

    Step value. Defaults to 1.0.

    Name

    Type

    Description

    id

    control_id

    Control ID.

    low

    float

    Minimum value.

    high

    float

    Maximum value.

    fmt

    table[...]

    Format. Defaults to {'%.0f'}.

    Type

    Description

    string

    Format string.

    Name

    Type

    Description

    min

    float?

    Minimal value.

    add

    float?

    Add step.

    fmt

    string

    Format string.

    Type

    Description

    slider

    Slider object.

    Type

    Description

    value_param<float>

    Value data.

    Documentation

    step

    local gif = draw.animated_texture('funny_gif.gif');
    gif:reset_loop();
    gif:set_frame(5);
    local frames = gif:get_frame_count();
    gif:set_frame(frames - 2); -- set to the last frame
    local slider = gui.slider(id, 0, 100, {'%.0f%%'});
    local val = slider:get_value():get();
    Method

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

    Arguments

    None.

    Returns

    Type

    Description

    bool

    true if an enemy.

    Example


    get_name

    Method

    Returns the sanitized player name.

    Arguments

    None.

    Returns

    Type

    Description

    string

    Player's name.

    Example


    get_pawn

    Method

    Returns the pawn attached to this controller.

    Arguments

    None.

    Returns

    Type

    Description

    Pawn instance.

    Example


    get_active_weapon

    Method

    Returns the active weapon.

    Arguments

    None.

    Returns

    Type

    Description

    Weapon instance.

    Example


    get_observer_pawn

    Method

    Returns the observer pawn used for this controller.

    Arguments

    None.

    Returns

    Type

    Description

    Entity.

    Example


    get_observer_target

    Method

    Returns the pawn this controller is currently observing.

    Arguments

    None.

    Returns

    Type

    Description

    Entity.

    Example


    get_observer_mode

    Method

    Returns the current observer mode.

    Arguments

    None.

    Returns

    Type

    Description

    Observer mode.

    Example

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

  • PNG (.png)

  • 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

  • HDR (.hdr)

  • PIC (.pic)

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

  • __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.

    Name

    Type

    Description

    path

    string

    Path to a valid texture file.

    2. From memory.

    Name

    Type

    Description

    data

    Pointer to texture file data in memory.

    sz

    int

    Size of the texture file data.

    3. From RGBA data.

    Name

    Type

    Description

    data

    Pointer to RGBA data in memory.

    w

    int

    Width.

    h

    int

    Height (row count).

    p

    int

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

    Returns

    Type

    Description

    texture

    Texture object.

    Example


    is_animated

    FieldRead only

    Type: bool

    Set to true if this is an instance of animated_texture.


    get_size

    Method

    Returns size of this texture.

    Arguments

    None.

    Returns

    Type

    Description

    Texture dimensions.

    Example

    managed

    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:

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


    frag_shader

    Field

    Type: Type:

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


    clip_rect

    Field

    Type:

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

    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.


    uv_rect

    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.


    anti_alias

    Field

    Type: bool

    If set to true, will apply tesselation to shapes.

    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.


    ignore_scaling

    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.


    chained_call

    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.

    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.


    only_downsampled

    Field

    Type: bool

    If set to true, will capture back buffer (as long as chained_call 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.


    capture_back_buffer

    Field

    Type: bool

    An alias to only_downsampled.


    is_tile

    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.


    set_texture

    Method

    Sets a texture in a safe manner.

    Arguments

    Returns

    Nothing.

    Example


    set_shader

    Method

    Sets a fragment shader in a safe manner.

    Arguments

    Returns

    Nothing.

    Example

    bits

    This type represents a bitset value.

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

    reset

    Method

    Resets the value.

    Arguments

    None.

    Returns

    Nothing.

    Example


    get_raw

    Method

    Returns the raw value.

    Arguments

    None.

    Returns

    Example


    set_raw

    Method

    Sets the raw value.

    Arguments

    Returns

    Nothing.

    Example


    none

    Method

    Returns true if no bits are set.

    Arguments

    None.

    Returns

    Example


    set

    Method

    Enables a bit.

    Arguments

    Returns

    Nothing.

    Example


    unset

    Method

    Disables a bit.

    Arguments

    Returns

    Nothing.

    Example


    get

    Method

    Returns bit state.

    Arguments

    Returns

    Example


    toggle

    Method

    Toggles bit state.

    Arguments

    Returns

    Nothing.

    Example

    vec2

    __call

    Constructor

    Creates a new 2D vector instance.

    Arguments

    1. Default vector (0, 0).

    None.

    control

    This type represents an abstract GUI control.

    id

    FieldRead only

    shader

    This type represents a shader.

    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.

    if player:is_enemy() then
        -- ...
    end
    local name = player:get_name();
    local pawn = ctrl:get_pawn();
    local wep = player:get_active_weapon();
    local obs_pawn = ctrl:get_observer_pawn();
    local obs = ctrl:get_observer_target();
    local mode = ctrl:get_observer_mode();
    local tex = draw.texture('funny_meme.png');
    local sz = tex:get_size();
    cs2_player_pawn
    cs2_weapon_base_gun
    base_entity
    base_entity
    observer_mode_t
    animated_texture
    ptr
    ptr
    vec2

    Name

    Type

    Description

    tex

    texture

    Texture object.

    Name

    Type

    Description

    sh

    [shader]

    Shader object.

    ptr
    set_texture
    ptr
    set_shader
    rect?
    rect?
    render_mode

    Type

    Description

    int

    Raw value.

    Name

    Type

    Description

    val

    int

    Raw value.

    Type

    Description

    bool

    true if no bits are set.

    Name

    Type

    Description

    bit

    int

    Bit number.

    Name

    Type

    Description

    bit

    int

    Bit number.

    Name

    Type

    Description

    bit

    int

    Bit number.

    Type

    Description

    bool

    Bit status.

    Name

    Type

    Description

    bit

    int

    Bit number.

    2. Single value.

    Name

    Type

    Description

    value

    float

    X and Y coordinates.

    3. XY values.

    Name

    Type

    Description

    x

    float

    X coordinate.

    y

    float

    Y coordinate.

    Returns

    Type

    Description

    vec2

    New vector.

    Example


    x

    Field

    Type: float

    X coordinate.


    y

    Field

    Type: float

    Y coordinate.


    floor

    Method

    Returns floored variant of this vector.

    Arguments

    None.

    Returns

    Type

    Description

    vec2

    Floored variant.

    Example


    Method

    Returns ceiled variant of this vector.

    Arguments

    None.

    Returns

    Type

    Description

    vec2

    Ceiled variant.

    Example


    round

    Method

    Returns rounded variant of this vector.

    Arguments

    None.

    Returns

    Type

    Description

    vec2

    Rounded variant.

    Example


    len

    Method

    Returns length of this vector.

    Arguments

    None.

    Returns

    Type

    Description

    float

    Length.

    Example


    len_sqr

    Method

    Returns squared length of this vector.

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

    Arguments

    None.

    Returns

    Type

    Description

    float

    Length.

    Example


    dist

    Method

    Returns distance to another vector.

    Arguments

    Name

    Type

    Description

    other

    vec2

    Other vector.

    Returns

    Type

    Description

    float

    Distance.

    Example


    dist_sqr

    Method

    Returns squared distance to another vector.

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

    Arguments

    Name

    Type

    Description

    other

    vec2

    Other vector.

    Returns

    Type

    Description

    float

    Distance.

    Example

    Type: int

    Control ID.


    id_string

    FieldRead only

    Type: string

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


    is_visible

    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: control_type

    Control's type.


    inactive

    Field

    Type: bool

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


    inactive_text

    Field

    Type: string

    Tooltip replacement to show when control is inactive.


    inactive_color

    Field

    Type: color

    Label color override for inactive controls.


    tooltip

    Field

    Type: string

    Tooltip text.


    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).


    get_hotkey_state

    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


    set_visible

    Method

    Changes visibility state for this control.

    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.

    Arguments

    Name

    Type

    Description

    val

    bool

    Visibility state.

    Returns

    Nothing.

    Example


    add_callback

    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.

    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.

    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 value_param.

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

    Arguments

    None.

    Returns

    Nothing.

    Example

    Rendering system uses Shader Version 4 (ps_4_0).

    HLSL structures

    The constant buffer fields are the following:

    Name

    Type

    Description

    mvp

    float4x4

    Projection matrix.

    tex

    float2

    Texture dimensions.

    time

    float

    Render time (NOT the frame time).

    alpha

    float

    Global opacity override.

    The input fields are the following:

    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.

    uv

    float2

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

    The bound objects are the following:

    Name

    Type

    Description

    sampler0

    sampler

    Texture sampler.

    texture0

    Texture2D

    Texture object.

    Template:


    __call

    Constructor

    Constructs a shader.

    Arguments

    Name

    Type

    Description

    src

    string

    Shader source code.

    Returns

    Type

    Description

    shader

    Shader object.

    Example

    HLSL documentation
    managed
    cmd:set_texture(my_tex);
    cmd:set_shader(my_shader);
    bits:reset();
    local raw = bits:get_raw();
    bits:set_raw(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);
    local vec = draw.vec2(5, 10);
    local fl = vec:floor();
    local ceiled = vec:ceil();
    local rounded = vec:round();
    local len = vec:len();
    local len = vec:len_sqr();
    local dist = vec1:dist(vec2);
    local dist = vec1:dist_sqr(vec2);
    if ctrl:get_hotkey_state() then
        -- ...
    end
    ctrl:set_visible(false);
    ctrl:add_callback(function ()
        print('Callback invoked!');
    end);
    local checkbox = maybe_checkbox:cast();
    ctrl:reset();
    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;
    }
    ]]);

    text_params

    This type is used to determine text alignment.

    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.

    with_v

    Function

    Creates text_params instance with vertical alignment.

    Arguments

    Returns

    Example


    with_h

    Function

    Creates text_params instance with horizontal alignment.

    Arguments

    Returns

    Example


    with_line

    Function

    Creates text_params instance with line alignment.

    Arguments

    Returns

    Example


    with_vh

    Function

    Creates text_params instance with vertical and horizontal alignments.

    Arguments

    Returns

    Example


    with_vline

    Function

    Creates text_params instance with vertical alignment and line alignment.

    Arguments

    Returns

    Example


    with_hline

    Function

    Creates text_params instance with horizontal alignment and line alignment.

    Arguments

    Returns

    Example


    with_vhline

    Function

    Creates text_params instance with vertical, horizontal and line alignments.

    Arguments

    Returns

    Example

    base_entity

    This type represents a base game entity.

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

    Name

    Type

    Description

    v

    text_alignment

    Vertical alignment.

    Type

    Description

    text_params

    Created text params.

    Name

    Type

    Description

    h

    text_alignment

    Horizontal alignment.

    Type

    Description

    text_params

    Created text params.

    Name

    Type

    Description

    line

    text_alignment

    Line alignment.

    Type

    Description

    text_params

    Created text params.

    Name

    Type

    Description

    v

    text_alignment

    Vertical alignment.

    h

    text_alignment

    Horizontal alignment.

    Type

    Description

    text_params

    Created text params.

    Name

    Type

    Description

    v

    text_alignment

    Vertical alignment.

    line

    text_alignment

    Line alignment.

    Type

    Description

    text_params

    Created text params.

    Name

    Type

    Description

    h

    text_alignment

    Horizontal alignment.

    line

    text_alignment

    Line alignment.

    Type

    Description

    text_params

    Created text params.

    Name

    Type

    Description

    v

    text_alignment

    Vertical alignment.

    h

    text_alignment

    Horizontal alignment.

    line

    text_alignment

    Line alignment.

    Type

    Description

    text_params

    Created text params.

    local align_top = draw.text_params.with_v(draw.text_alignment.top);
    local align_right = draw.text_params.with_h(draw.text_alignment.right);
    local lines_center = draw.text_params.with_line(draw.text_alignment.center);
    local align_bottom_right = draw.text_params.with_vh(draw.text_alignment.bottom, draw.text_alignment.right);
    local align = draw.text_params.with_vline(draw.text_alignment.bottom, draw.text_alignment.center);
    local align = draw.text_params.with_hline(draw.text_alignment.center, draw.text_alignment.center);
    local align = draw.text_params.with_vhline(draw.text_alignment.center, draw.text_alignment.center, draw.text_alignment.center);
    __index

    Function

    Attemps to search for a field in this class.

    Arguments

    Name

    Type

    Description

    name

    string

    Field name.

    Returns

    Type

    Description

    Accessor instance or pointer accessor instance

    Example


    get_class_name

    Function

    Returns schema class name.

    Returns

    Type

    Description

    string

    Name. Returns nil when failed.

    Example


    to_weapon_base_gun

    Function

    Safe-casts the entity to cs2_weapon_base_gun, returns nil if not a weapon_base_gun

    Returns

    Type

    Description

    cs2_weapon_base_gun?

    Casted entity. Returns nil if the cast failed.

    Example


    to_weapon_base

    Function

    Safe-casts the entity to cs2_weapon_base, returns nil if not a weapon_base

    Returns

    Type

    Description

    cs2_weapon_base?

    Casted entity. Returns nil if the cast failed.

    Example


    to_player_pawn

    Function

    Safe-casts the entity to cs2_player_pawn, returns nil if not a player_pawn

    Returns

    Type

    Description

    cs2_player_pawn?

    Casted entity. Returns nil if the cast failed.

    Example


    to_player_controller

    Function

    Safe-casts the entity to cs2_player_controller, returns nil if not a player_controller

    Returns

    Type

    Description

    cs2_player_controller?

    Casted entity. Returns nil if the cast failed.

    Example

    cs2_weapon_base_gun

    This type represents a CCSWeaponBaseGun class.

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

    get_abs_origin

    Method

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

    Arguments

    None.

    Returns

    Example


    get_max_speed

    Method

    Returns the maximal player speed when holding this weapon.

    Arguments

    None.

    Returns

    Example


    get_inaccuracy

    Method

    Returns the current inaccuracy value.

    Arguments

    Returns

    Example


    get_spread

    Method

    Returns the current spread value.

    Arguments

    Returns

    Example


    get_id

    Method

    Returns the weapon ID.

    Arguments

    None.

    Returns

    Example


    get_type

    Method

    Returns the weapon type.

    Arguments

    None.

    Returns

    Example


    get_data

    Method

    Returns the weapon static data.

    Arguments

    None.

    Returns

    Example


    is_gun

    Method

    Returns true if this weapon is a firearm.

    Arguments

    None.

    Returns

    Example


    is_attackable

    Method

    Returns true if you can attack with this weapon.

    Arguments

    None.

    Returns

    Example


    has_secondary_attack

    Method

    Returns true if this weapon has a secondary attack mode.

    Arguments

    None.

    Returns

    Example


    has_spread

    Method

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

    Arguments

    None.

    Returns

    Example

    cs2_player_pawn

    This type represents a C_CSPlayerPawn class.

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

    should_draw

    font_base

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

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

    Definitions:

    local health = player.m_iHealth;
    local health = player['m_iHealth']; -- this also works
    local name = entity:get_class_name()
    local gun = entity:to_weapon_base_gun()
    local wpn = entity:to_weapon_base()
    local pawn = entity:to_player_pawn()
    local controller = entity:to_player_controller()
    schema_accessor_t

    Type

    Description

    vector

    Origin.

    Type

    Description

    float

    Max speed, in UPS.

    Name

    Type

    Description

    mode

    csweapon_mode

    Weapon mode.

    Type

    Description

    float

    Inaccuracy value.

    Name

    Type

    Description

    mode

    csweapon_mode

    Weapon mode.

    Type

    Description

    float

    Inaccuracy value.

    Type

    Description

    weapon_id

    Weapon ID.

    Type

    Description

    csweapon_type

    Weapon type.

    Type

    Description

    ccsweapon_base_vdata

    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.

    local org = wep:get_abs_origin();
    local spd = wep:get_max_speed();
    local inacc = wep:get_inaccuracy(csweapon_mode.primary_mode);
    local spread = wep:get_spread(csweapon_mode.primary_mode);
    local wep_id = wep:get_id();
    local type = wep:get_type();
    local data = wep:get_data();
    if wep:is_gun() then
        -- ...
    end
    if wep:is_attackable() then
        -- ...
    end
    if wep:has_secondary_attack() then
        -- ...
    end
    if wep:has_spread() then
        -- ...
    end
    Method

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

    Arguments

    None.

    Returns

    Type

    Description

    bool

    true if will.

    Example


    is_left_handed

    Method

    Returns true if left-hand mode is enabled.

    Arguments

    None.

    Returns

    Type

    Description

    bool

    true if left-handed.

    Example


    get_abs_origin

    Method

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

    Arguments

    None.

    Returns

    Type

    Description

    Origin.

    Example


    get_abs_angles

    Method

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

    Arguments

    None.

    Returns

    Type

    Description

    Angles.

    Example


    get_abs_velocity

    Method

    Returns the absolute velocity.

    Arguments

    None.

    Returns

    Type

    Description

    Velocity.

    Example


    set_abs_origin

    Method

    Sets the new absolute origin.

    Arguments

    Name

    Type

    Description

    vec

    New origin.

    Returns

    Nothing.

    Example


    set_abs_angles

    Method

    Sets new absolute angles.

    Arguments

    Name

    Type

    Description

    ang

    New angles.

    Returns

    Nothing.

    Example


    set_abs_velocity

    Method

    Sets new absolute velocity.

    Arguments

    Name

    Type

    Description

    vel

    New velocity.

    Returns

    Nothing.

    Example


    is_alive

    Method

    Returns true if the player is alive.

    Arguments

    None.

    Returns

    Type

    Description

    bool

    true if alive.

    Example


    is_enemy

    Method

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

    Arguments

    None.

    Returns

    Type

    Description

    bool

    true if an enemy.

    Example


    is_enemy_to

    Method

    Returns whether this player is an enemy to another entity.

    Arguments

    Name

    Type

    Description

    ent

    Other entity.

    Returns

    Type

    Description

    bool

    true if an enemy.

    Example


    get_active_weapon

    Method

    Returns the active weapon.

    Arguments

    None.

    Returns

    Type

    Description

    Weapon instance.

    Example


    get_name

    Method

    Returns the sanitized player name.

    Arguments

    None.

    Returns

    Type

    Description

    string

    Player's name.

    Example


    get_view_offset

    Method

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

    Arguments

    None.

    Returns

    Type

    Description

    View offset.

    Example


    get_eye_pos

    Method

    Returns the player's eye position.

    Arguments

    None.

    Returns

    Type

    Description

    Eye position.

    Example

    base_entity
  • codepoint: Unicode representation of the character.

  • kerning: a distance between two characters.

  • glyph: visual representation of a character.

  • height

    FieldRead 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.


    line_gap

    Field

    Type: float

    Font line gap, in pixels.


    kerning_gap

    Field

    Type: float

    Font kerning gap, in pixels.


    outline_alpha

    Field

    Type: float

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


    flags

    FieldRead only

    Type: font_flags

    Font flags. Use bit library to read flags.


    y_offset

    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.


    x_offset

    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.


    fallback_font

    Field

    Type: font_base

    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.


    dropshadow_color

    Field

    Type: color

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


    get_kerned_char_width

    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


    get_kerning

    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


    get_text_size

    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.

    til_newline

    bool

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

    Returns

    Type

    Description

    Text area size.

    Example


    wrap_text

    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


    get_glyph

    Method

    Returns glyph information for a character.

    Arguments

    Name

    Type

    Description

    codepoint

    int

    Codepoint.

    Returns

    Type

    Description

    Glyph information.

    Example


    get_texture

    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

    managed

    math

    Usage: math.{func}

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

    calc_angle

    Function

    Calculates angles between 2 vectors.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    angle_normalize

    Function

    Normalizes an angle.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    approach_angles

    Function

    Approaches an angle over time.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    edge_point

    Function

    Returns a point on the edge of a box.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    lerp

    Function

    Linear interpolation.

    Arguments

    Name
    Type
    Description

    Returns

    Example


    vector_angles

    Function

    Calculates angles from a vector.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    world_to_screen

    Function

    Transforms a point in the game world onto the viewport.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    clamp

    Function

    Clamps a value between min and max.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    remap_val

    Function

    Maps the value from one range to another range.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    remap_val_clamped

    Function

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

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    vec2

    Function

    An alias to .

    Example


    vec3

    Function

    An alias to .

    Example

    if player:should_draw() then
        -- ...
    end
    if player:is_left_handed() then
        -- ...
    end
    local org = player:get_abs_origin();
    local ang = player:get_abs_angles();
    local vel = player:get_abs_velocity();
    player:set_abs_origin(my_vec);
    player:set_abs_angles(my_ang);
    player:set_abs_velocity(my_vel);
    if player:is_alive() then
        -- ...
    end
    if player:is_enemy() then
        -- ...
    end
    if player:is_enemy_to(other_player) then
        -- ...
    end
    local wep = player:get_active_weapon();
    local name = player:get_name();
    local vo = player:get_view_offset();
    local eyes = player:get_eye_pos();
    local w = font:get_kerned_char_width(prev_cp, cp);
    local k = font:get_kerning(cp);
    local sz = font:get_text_size('Hello!');
    local shorter = font:wrap_text('This is some very long text!', 50);
    local glyph = font:get_glyph(cp);
    local atlas = font:get_texture(glyph);
    vector
    vector
    vector
    vector
    vector
    vector
    base_entity
    cs2_weapon_base_gun
    vector
    vector
    vec2
    glyph_t
    glyph_t

    d

    float

    Highest destination value.

    d

    float

    Highest destination value.

    src

    vector

    Source vector.

    dst

    vector

    Destination vector.

    vector

    Angles.

    angle

    float

    Input angle.

    float

    Normalized angle.

    from

    vector

    Start angle.

    to

    vector

    End angle.

    speed

    float

    Approach speed.

    vector

    Delta angle.

    mins

    vector

    Box mins.

    maxs

    vector

    Box maxs.

    dir

    vector

    Point direction (angle).

    radius

    float

    Area radius.

    vector

    Point.

    t1

    float

    Start value.

    t2

    float

    End value.

    progress

    float

    Interpolation amount.

    Type

    Description

    float

    Interpolated value.

    forward

    vector

    Source vector.

    up

    vector

    Up vector. Defaults to nil.

    vector

    Angles.

    xyz

    vector

    Point in the world.

    round

    bool

    Whether should round the output. Defaults to true.

    vec2

    Point on the viewport.

    n

    float

    Value.

    lower

    float

    Lowest value.

    upper

    float

    Highest value.

    float

    Clamped value.

    val

    float

    Value.

    a

    float

    Lowest source value.

    b

    float

    Highest source value.

    c

    float

    Lowest destination value.

    float

    Mapped value.

    val

    float

    Value.

    a

    float

    Lowest source value.

    b

    float

    Highest source value.

    c

    float

    Lowest destination value.

    float

    Mapped value.

    draw.vec2()
    vector()
    local ang = math.calc_angle(vec1, vec2);
    local norm = math.angle_normalize(560);
    local ang = math.approach_angles(from, to, 1.0 / game.global_vars.frametime);
    local point = math.edge_point(mins, maxs, dir, 5);
    local mid = math.lerp(0, 100, 0.5);
    local ang = math.vector_angles(fw);
    local point = math.world_to_screen(game_point);
    local x = math.clamp(50, 5, 25); -- 25
    local mapped = math.remap_val(0.5, 0, 1, 0, 100); -- 50
    local mapped = math.remap_val_clamped(5, 0, 1, 0, 100); -- 100
    local vec = math.vec2(5, 5);
    local vec = math.vec3(5, 12, 5);

    context_input

    This type represents the GUI input context.

    You can use cursor, is_mouse_up, is_mouse_down, is_key_up and is_key_down methods outside input 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


    cursor_prev

    Method

    Returns previous cursor position.

    Arguments

    None.

    Returns

    Example


    cursor_delta

    Method

    Delta value between previous and current cursor positions.

    Arguments

    None.

    Returns

    Example


    did_cursor_move

    Method

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

    Arguments

    None.

    Returns

    Example


    did_wheel_move

    Method

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

    Arguments

    None.

    Returns

    Example



    did_process_mouse

    Method

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

    Arguments

    None.

    Returns

    Example



    button_released

    Method

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

    Arguments

    None.

    Returns

    Example



    wheel_delta

    Method

    Returns the amount of rows scrolled this input.

    Arguments

    None.

    Returns

    Example


    is_mouse_up

    Method

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

    Arguments

    Returns

    Example


    is_mouse_down

    Method

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

    Arguments

    Returns

    Example


    is_mouse_clicked

    Method

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

    Arguments

    Returns

    Example


    is_mouse_released

    Method

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

    Arguments

    Returns

    Example


    did_process_key

    Method

    Returns true if any key's state had changed.

    Arguments

    None.

    Returns

    Example


    is_key_up

    Method

    Returns true if a key is up (depressed).

    Arguments

    Returns

    Example


    is_key_down

    Method

    Returns true if a key is down (pressed).

    Arguments

    Returns

    Example


    is_key_clicked

    Method

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

    Arguments

    Returns

    Example


    is_key_released

    Method

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

    Arguments

    Returns

    Example

    weapon_id

    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

    vec2

    Cursor position.

    Type

    Description

    vec2

    Previous cursor position.

    Type

    Description

    vec2

    Cursor delta.

    Type

    Description

    bool

    true if moved.

    Type

    Description

    bool

    true if moved.

    Type

    Description

    bool

    true if processed.

    Type

    Description

    bool

    true if released.

    Type

    Description

    float

    Rows scrolled.

    Name

    Type

    Description

    mb

    mouse_button

    Mouse button.

    Type

    Description

    bool

    true if depressed.

    Name

    Type

    Description

    mb

    mouse_button

    Mouse button.

    Type

    Description

    bool

    true if pressed.

    Name

    Type

    Description

    mb

    mouse_button

    Mouse button.

    Type

    Description

    bool

    true if clicked.

    Name

    Type

    Description

    mb

    mouse_button

    Mouse button.

    Type

    Description

    bool

    true if released.

    Type

    Description

    bool

    true if state changed.

    Name

    Type

    Description

    k

    int

    Virtual key.

    Type

    Description

    bool

    true if depressed.

    Name

    Type

    Description

    k

    int

    Virtual key.

    Type

    Description

    bool

    true if pressed.

    Name

    Type

    Description

    k

    int

    Virtual key.

    Type

    Description

    bool

    true if clicked.

    Name

    Type

    Description

    k

    int

    Virtual key.

    Type

    Description

    bool

    true if released.

    local cur = gui.input:cursor();
    local prev = gui.input:cursor_prev();
    local delta = gui.input:cursor_delta();
    if gui.input:did_cursor_move() then
        -- ...
    end
    if gui.input:did_wheel_move() then
        -- ...
    end
    if gui.input:did_process_mouse() then
        -- ...
    end
    if gui.input:button_released() then
        -- ...
    end
    local scroll = gui.input:wheel_delta();
    if gui.input:is_mouse_up(gui.mouse_button.left) then
        -- ...
    end
    if gui.input:is_mouse_down(gui.mouse_button.left) then
        -- ...
    end
    if gui.input:is_mouse_clicked(gui.mouse_button.left) then
        -- ...
    end
    if gui.input:is_mouse_released(gui.mouse_button.left) then
        -- ...
    end
    if gui.input:did_process_key() then
        -- ...
    end
    if gui.input:is_key_up(0x41) then -- 0x41 = "A"
        -- ...
    end
    if gui.input:is_key_down(0x41) then -- 0x41 = "A"
        -- ...
    end
    if gui.input:is_key_clicked(0x41) then -- 0x41 = "A"
        -- ...
    end
    if gui.input:is_key_released(0x41) then -- 0x41 = "A"
        -- ...
    end

    color

    color

    Last modified: 03 January 2025

    This type is a color used within the rendering system.

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

    __call

    Constructor

    Creates a new color instance.

    Arguments

    1. Default color (translucent black).

    None.

    2. Integer colors.

    3. Hex string.

    Returns

    Example


    white

    Function

    Returns a white, opaque color.

    Arguments

    None.

    Returns

    Example


    white_transparent

    Function

    Returns a white, transparent color.

    Arguments

    None.

    Returns

    Example


    black

    Function

    Returns a black, opaque color.

    Arguments

    None.

    Returns

    Example


    black_transparent

    Function

    Returns a black, transparent color.

    Arguments

    None.

    Returns

    Example


    percent

    Function

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

    Arguments

    Returns

    Example


    gray

    Function

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

    Arguments

    Returns

    Example


    interpolate

    Function

    Interpolates two colors.

    Arguments

    Returns

    Example


    rgba

    Method

    Returns integer representation of this color (RGBA format)

    Arguments

    None.

    Returns

    Example


    argb

    Method

    Returns integer representation of this color (ARGB format)

    Arguments

    None.

    Returns

    Example


    bgra

    Method

    Returns integer representation of this color (BGRA format)

    Arguments

    None.

    Returns

    Example


    abgr

    Method

    Returns integer representation of this color (ABGR format)

    Arguments

    None.

    Returns

    Example


    darken

    Method

    Returns darker variant of this color.

    Arguments

    Returns

    Example


    mod_a

    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.

    2. Integer variant.

    Returns

    Example


    r

    Method

    Override red and return new color.

    Arguments

    Returns

    Example

    g

    Method

    Override green and return new color.

    Arguments

    Returns

    Example

    b

    Method

    Override blue and return new color.

    Arguments

    Returns

    Example

    a

    Method

    Override opacity and return new color.

    Arguments

    Returns

    Example


    get_r

    Method

    Returns red color value.

    Arguments

    None.

    Returns

    Example


    get_g

    Method

    Returns green color value.

    Arguments

    None.

    Returns

    Example


    get_b

    Method

    Returns blue color value.

    Arguments

    None.

    Returns

    Example


    get_a

    Method

    Returns opacity color value.

    Arguments

    None.

    Returns

    Example


    h

    Method

    Return hue value of the color.

    Arguments

    None.

    Returns

    Example


    s

    Method

    Returns saturation value of the color.

    Arguments

    None.

    Returns

    Example


    v

    Method

    Returns brightness value of the color.

    Arguments

    None.

    Returns

    Example


    hsv

    Method

    Construct new color from provided HSB values.

    Arguments

    Returns

    Example

    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


    half_width

    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


    margin_left

    Method

    Move rectangle from the left by given amount.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    margin_right

    Method

    Move rectangle from the right by given amount.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    margin_top

    Method

    Move rectangle from the top by given amount.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    margin_bottom

    Method

    Move rectangle from the bottom by given amount.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    padding_left

    Method

    Adds the value to the left side of the rectangle.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    padding_right

    Method

    Adds the value to the right side of the rectangle.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    padding_top

    Method

    Adds the value to the top side of the rectangle.

    Arguments

    Name
    Type
    Description

    Returns

    Type
    Description

    Example


    padding_bottom

    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.

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

    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


    is_zero

    Method

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

    Arguments

    None.

    Returns

    Type
    Description

    Example

    Name

    Type

    Description

    r

    int

    Red color (0 to 255).

    g

    int

    Green color (0 to 255).

    b

    int

    Blue color (0 to 255).

    a

    int

    Opacity (0 to 255). Defaults to 255.

    Name

    Type

    Description

    hex

    string

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

    Type

    Description

    color

    Color object.

    Type

    Description

    color

    Color object.

    Type

    Description

    color

    Color object.

    Type

    Description

    color

    Color object.

    Type

    Description

    color

    Color object.

    Name

    Type

    Description

    p

    float

    Percentile (0 to 1).

    a

    float

    Opacity. Defaults to 1.

    Type

    Description

    color

    Color object.

    Name

    Type

    Description

    b

    float

    Percentile (0 to 1).

    a

    float

    Opacity. Defaults to 1.

    Type

    Description

    color

    Color object.

    Name

    Type

    Description

    a

    color

    Starting color.

    b

    color

    Ending color.

    t

    float

    Interpolation percentile.

    Type

    Description

    color

    Color object.

    Type

    Description

    int

    RGBA color.

    Type

    Description

    int

    ARGB color.

    Type

    Description

    int

    BGRA color.

    Type

    Description

    int

    ABGR color.

    Name

    Type

    Description

    value

    float

    Modulation amount (0 to 1).

    Type

    Description

    color

    Darker color.

    Name

    Type

    Description

    value

    float

    Opacity modulation (0 to 1).

    Name

    Type

    Description

    value

    int

    Opacity modulation (0 to 255).

    Type

    Description

    color

    Modulated color.

    Name

    Type

    Description

    value

    float

    New value.

    Type

    Description

    color

    New color.

    Name

    Type

    Description

    value

    float

    New value.

    Type

    Description

    color

    New color.

    Name

    Type

    Description

    value

    float

    New value.

    Type

    Description

    color

    New color.

    Name

    Type

    Description

    value

    float

    New value.

    Type

    Description

    color

    New color.

    Type

    Description

    int

    Color value.

    Type

    Description

    int

    Color value.

    Type

    Description

    int

    Color value.

    Type

    Description

    int

    Color value.

    Type

    Description

    int

    Hue (0 to 359).

    Type

    Description

    float

    Saturation (0 to 1).

    Type

    Description

    float

    Brightness (0 to 1).

    Name

    Type

    Description

    hue

    int

    Hue (0 to 359).

    saturation

    float

    Saturation (0 to 1).

    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.

    Type

    Description

    color

    New color.

    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.

    x1

    float

    Maxs X coordinate.

    y1

    float

    Maxs 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.

    vec2
    vec2
    local white = draw.color(255, 255, 255);
    local white = draw.color.white();
    local white_t = draw.color.white_transparent();
    local black = draw.color.black();
    local black_t = draw.color.black_transparent();
    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 half_opacity = col:mod_a(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:get_r();
    local g = col:get_g();
    local b = col:get_b();
    local a = col:get_a();
    local hue = col:h();
    local saturation = col:s();
    local brightness = col:v();
    local new_col = col:hsv(250, 0.5, 0.1);
    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:half_width();
    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:margin_left(5); -- moves to the right by 5px
    local new = rect:margin_right(5); -- moves to the left by 5px
    local new = rect:margin_top(5); -- moves to the bottom by 5px
    local new = rect:margin_bottom(5); -- moves to the top by 5px
    local new = rect:padding_left(5); -- adds 5 to mins x
    local new = rect:padding_right(5); -- adds 5 to maxs x
    local new = rect:padding_top(5); -- adds 5 to mins y
    local new = rect:padding_bottom(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:is_zero() then
        -- ...
    end

    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.


    tex_sz

    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.


    skip_dpi

    Field

    Type: bool

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


    add_triangle_filled

    Method

    Adds a filled triangle with a single color.

    Arguments

    Returns

    Nothing.

    Example


    add_quad_filled

    Method

    Adds a filled quad with a single color.

    Arguments

    Returns

    Nothing.

    Example


    add_rect_filled

    Method

    Adds a filled rectangle with a single color.

    Arguments

    Returns

    Nothing.

    Example


    add_circle_filled

    Method

    Adds a filled circle with a single color.

    Arguments

    Returns

    Nothing.

    Example


    add_triangle_filled_multicolor

    Method

    Adds a filled, multicolor triangle.

    Arguments

    Returns

    Nothing.

    Example


    add_rect_filled_multicolor

    Method

    Adds a filled, multicolor rectangle.

    Arguments

    Returns

    Nothing.

    Example


    add_circle_filled_multicolor

    Method

    Adds a filled, multicolor circle.

    Arguments

    Returns

    Nothing.

    Example


    add_quad_filled_multicolor

    Method

    Adds a filled, multicolor quad.

    Arguments

    Returns

    Nothing.

    Example


    add_pill_multicolor

    Method

    Adds a multicolor pill shape.

    Arguments

    Returns

    Nothing.

    Example


    add_shadow_line

    Method

    Adds a shadow line.

    Arguments

    Returns

    Nothing.

    Example


    add_shadow_rect

    Method

    Adds a shadowed rectangle.

    Arguments

    Returns

    Nothing.

    Example


    add_glow

    Method

    Adds a glow box.

    Arguments

    Returns

    Nothing.

    Example


    add_rect_filled_rounded

    Method

    Adds a filled, rounded rectangle.

    Arguments

    Returns

    Nothing.

    Example


    add_rect_filled_rounded_multicolor

    Method

    Adds a filled, multicolor rounded rectangle.

    Arguments

    Returns

    Nothing.

    Example


    add_triangle

    Method

    Adds a stroked triangle.

    Arguments

    Returns

    Nothing.

    Example


    add_quad

    Method

    Adds a stroked quad.

    Arguments

    Returns

    Nothing.

    Example


    add_rect

    Method

    Adds a stroked rectangle.

    Arguments

    Returns

    Nothing.

    Example


    add_circle

    Method

    Adds a stroked circle.

    Arguments

    Returns

    Nothing.

    Example


    add_line

    Method

    Adds a line.

    Arguments

    Returns

    Nothing.

    Example


    add_line_multicolor

    Method

    Adds a multicolor line.

    Arguments

    Returns

    Nothing.

    Example


    add_rect_rounded

    Method

    Adds a rounded, filled rectangle.

    Arguments

    Returns

    Nothing.

    Example


    add_text

    Method

    Adds text.

    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.

    Arguments

    Returns

    Nothing.

    Example


    override_clip_rect

    Method

    Overrides clip rectangle with support of intersection.

    Arguments

    Returns

    Nothing.

    Example

    Shape color.

    float

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

    float

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

    table[color, color]

    Colors for the gradient, applied from bottom to top.

    table[color, color]

    Colors for the gradient, applied from bottom to top.

    segments

    int

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

    float

    Line thickness. Defaults to 1.0.

    mode

    Outline mode. Defaults to inset.

    Line color.

    thickness

    float

    Line thickness. Defaults to 1.0.

    mode

    Outline mode. Defaults to inset.

    float

    Fill amount. Defaults to 1.0.

    thickness

    float

    Line thickness. Defaults to 1.0.

    mode

    Outline mode. Defaults to inset.

    float

    Line thickness. Defaults to 1.0.

    float

    Line thickness. Defaults to 1.0.

    mode

    Outline mode. Defaults to inset.

    Name

    Type

    Description

    a

    vec2

    A point.

    b

    vec2

    B point.

    c

    vec2

    C point.

    col

    color

    Shape color.

    Name

    Type

    Description

    tl

    vec2

    Top left point.

    tr

    vec2

    Top right point.

    br

    vec2

    Bottom right point.

    bl

    vec2

    Bottom left point.

    Name

    Type

    Description

    r

    rect

    Rectangle.

    col

    color

    Shape color.

    Name

    Type

    Description

    center

    vec2

    Center point.

    radius

    float

    Circle radius.

    c

    color

    Shape color.

    segments

    int

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

    Name

    Type

    Description

    a

    vec2

    A point.

    b

    vec2

    B point.

    c

    vec2

    C point.

    cols

    table[color, color, color]

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

    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.

    Name

    Type

    Description

    center

    vec2

    Center point.

    radius

    float

    Circle radius.

    cols

    table[color, color]

    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.

    Name

    Type

    Description

    tl

    vec2

    Top left point.

    tr

    vec2

    Top right point.

    br

    vec2

    Bottom right point.

    bl

    vec2

    Bottom left point.

    Name

    Type

    Description

    mins

    vec2

    Top left point of the pill.

    maxs

    vec2

    Bottom right point of the pill.

    radius_min

    float

    The minimum radius of the pill's rounded edges.

    radius_max

    float

    The maximum radius of the pill's rounded edges.

    Name

    Type

    Description

    r

    rect

    Bounding box for the shadow line.

    dir

    shadow_dir

    Shadow direction.

    a

    float

    Max opacity. Defaults to 0.25.

    Name

    Type

    Description

    r

    rect

    Rectangle.

    radius

    float

    Shadow distance, in pixels, outwards.

    bg

    bool

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

    a

    float

    Max opacity of the shadow. Defaults to 0.25.

    Name

    Type

    Description

    r

    rect

    Box rectangle.

    radius

    float

    Glow distance, in pixels, outwards.

    c

    color

    Glow color.

    parts

    glow_parts

    Parts of the glow to enable. Defaults to all.

    Name

    Type

    Description

    r

    rect

    Rectangle.

    c

    color

    Fill color.

    amount

    float

    Rounding amount.

    rnd

    rounding

    Rounding mode. Defaults to all.

    Name

    Type

    Description

    r

    rect

    Rectangle.

    c

    table[color, color, color, color]

    Fill colors. Used clockwise, starting from top left.

    amount

    float

    Rounding amount.

    rnd

    rounding

    Rounding mode. Defaults to all.

    Name

    Type

    Description

    a

    vec2

    Point A.

    b

    vec2

    Point B.

    c

    vec2

    Point C.

    col

    color

    Line color.

    Name

    Type

    Description

    tl

    vec2

    Top-left point.

    tr

    vec2

    Top-right point.

    br

    vec2

    Bottom-right point.

    bl

    vec2

    Bottom-left point.

    Name

    Type

    Description

    r

    rect

    Rectangle.

    c

    color

    Line color.

    thickness

    float

    Line thickness. Defaults to 1.0.

    mode

    outline_mode

    Outline mode. Defaults to inset.

    Name

    Type

    Description

    center

    vec2

    Center point.

    radius

    float

    Circle radius.

    c

    color

    Line color.

    segments

    int

    Circle segments. Defaults to 36.

    Name

    Type

    Description

    a

    vec2

    Start point.

    b

    vec2

    End point.

    c

    color

    Line color.

    thickness

    float

    Line thickness. Defaults to 1.0

    Name

    Type

    Description

    a

    vec2

    Start point.

    b

    vec2

    End point.

    c

    color

    Start color.

    c2

    color

    End color.

    Name

    Type

    Description

    r

    rect

    Rectangle.

    c

    color

    Line color.

    amount

    float

    Rounding amount.

    rnd

    rounding

    Rounding mode. Defaults to all.

    Name

    Type

    Description

    p

    vec2

    Text origin point.

    text

    string

    Text.

    c

    color

    Text color.

    params

    text_params?

    Text aligning parameters. Defaults to nil.

    Name

    Type

    Description

    r

    rect?

    New clip rect.

    intersect

    bool

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

    command
    font_base
    vec2?

    col

    fill

    fill

    cols

    cols

    thickness

    c

    fill

    thickness

    thickness

    layer:add_triangle_filled(
        draw.vec2(50, 50), draw.vec2(25, 75),
        draw.vec2(75, 75), draw.color(255, 255, 255));
    layer:add_quad_filled(
        draw.vec2(50, 50), draw.vec2(100, 60),
        draw.vec2(100, 100), draw.vec2(30, 70),
        draw.color(255, 255, 255));
    layer:add_rect_filled(draw.rect(50, 50, 150, 150), draw.color(255, 255, 255));
    layer:add_circle_filled(draw.vec2(50, 50), 10, draw.color(255, 255, 255));
    layer:add_triangle_filled_multicolor(
         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)
         });
    layer:add_rect_filled_multicolor(
        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)
        });
    layer:add_circle_filled_multicolor(
        draw.vec2(100, 100), 50, {
            draw.color(255, 0, 0),
            draw.color(0, 0, 255)
        }, 36, 1.0);
    layer:add_quad_filled_multicolor(
        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)
        });
    layer:add_pill_multicolor(
        draw.vec2(50, 50), draw.vec2(150, 100),
        10, 20, {
            draw.color(255, 0, 0),
            draw.color(0, 0, 255)
        }, 16);
    layer:add_shadow_line(
        draw.rect(50, 50, 150, 150), draw.shadow_dir.down, 0.25);
    layer:add_shadow_rect(
        draw.rect(50, 50, 150, 150), 15, true, 0.25);
    layer:add_glow(draw.rect(50, 50, 150, 150), 15, draw.color(255, 0, 0));
    layer:add_rect_filled_rounded(
        draw.rect(50, 50, 150, 150),
        draw.color(255, 0, 0),
        10,
        draw.rounding.all
    );
    layer:add_rect_filled_rounded_multicolor(
        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
    );
    layer:add_triangle(
        draw.vec2(50, 50),
        draw.vec2(25, 75),
        draw.vec2(75, 75),
        draw.color(255, 0, 0),
        1.0,
        draw.outline_mode.inset
    );
    layer:add_quad(
        draw.vec2(50, 50),
        draw.vec2(150, 50),
        draw.vec2(150, 150),
        draw.vec2(50, 150),
        draw.color(255, 0, 0),
        1.0,
        draw.outline_mode.inset
    );
    layer:add_rect(
        draw.rect(50, 50, 150, 150),
        draw.color(255, 0, 0),
        1.0,
        draw.outline_mode.inset
    );
    layer:add_circle(
        draw.vec2(100, 100),
        50,
        draw.color(255, 0, 0),
        36,
        1.0,
        1.0,
        draw.outline_mode.inset
    );
    layer:add_line(
        draw.vec2(50, 50),
        draw.vec2(150, 150),
        draw.color(255, 0, 0)
    );
    layer:add_line_multicolor(
        draw.vec2(50, 50),
        draw.vec2(150, 150),
        draw.color(255, 0, 0),
        draw.color(0, 0, 255),
        2.0
    );
    layer:add_rect_rounded(draw.rect(50, 50, 150, 150),
        draw.color(255, 255, 255), 14);
    layer:add_text(draw.vec2(50, 50), 'Hello world!', draw.color(255, 255, 255));
    layer:override_clip_rect(draw.rect(50, 50, 150, 150));
    color
    outline_mode
    color
    outline_mode
    outline_mode
    outline_mode