# Typeracer

## ⚙️Installation

1. Download `vise_typeracer_game` resource from Cfx.re Keymaster
2. Extract `vise_typeracer_game` into your server's resources directory
3. Add `ensure vise_typeracer_game` to your `resources.cfg`

## 🕹️ Starting the Game

You can either **start the game through your own scripts** or use **the test command.**

**✅ Starting through your own scripts:**

```lua
local result = exports.vise_typeracer_game:start()

print('game ended with result:', result)
```

**✅ Using the test command:**

Type command `/test_vise_typeracer_game` in-game.

{% tabs %}
{% tab title="Video preview" %}
{% embed url="<https://youtu.be/VuuLLhcNqk4?t=30>" %}
Game can be seen at 0:30-0:47
{% endembed %}
{% endtab %}

{% tab title="Image preview" %}

<div><figure><img src="/files/xEJvMWLXGPQKn0jx3IiS" alt=""><figcaption><p>Game main screen</p></figcaption></figure> <figure><img src="/files/1OMuN77dYo5ZdeMek5jZ" alt=""><figcaption><p>Success screen</p></figcaption></figure> <figure><img src="/files/odDQmYCKyMd8MEIwEdyx" alt=""><figcaption><p>Failure screen</p></figcaption></figure></div>
{% endtab %}
{% endtabs %}

🔄 **Result (return value)**

The `start()` function will return `true` if the player finishes the game, or `false` if they fail or run out of time.\
\
If you're using a **callback**, the same `true` or `false` will be passed into the callback function.

```lua
local result = exports.vise_typeracer_game:start()

if result then
    print('game completed')
else
    print('game failed')
end

-- You can also optionally use a callback to determine if game was completed or not
exports.vise_typeracer_game:start(settings, function(result)
    if result then
        print('game completed')
    else
        print('game failed')
    end
end)
```

## 🔧 Settings

When starting the game, you can pass a **settings table** to customize how the game works.

Here are the available setting options:

* `targetScore` – How many words the player has to type to complete the game *(default: 15)*
* `wordTimeout` – How long (in seconds) the player has to type each word *(default: 3)*

**Example settings:**

```lua
local settings = {
    targetScore = 15,
    wordTimeout = 3,
}
```

## 📦 Usage Examples

**Regular usage:**

```lua
local settings = {
    targetScore = 15,
    wordTimeout = 3,
}

local result = exports.vise_typeracer_game:start(settings)

if result then
    print('game completed')
else
    print('game failed')
end
```

**Callback usage:**

```lua
local settings = {
    targetScore = 15,
    wordTimeout = 3,
}

exports.vise_typeracer_game:start(settings, function(result)
    if result then
        print('game completed')
    else
        print('game failed')
    end
end)
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://vise.gitbook.io/vise-development/minigames/typeracer.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
