# mad-perform

Link

{% embed url="<https://madcap-scripts.tebex.io/package/6719471>" %}
Tebex Package
{% endembed %}

## Introduction

Bring your server to life with mad-perform, a unique FiveM resource that lets players **take the stage** as street performers. Whether it’s playing an instrument, dancing, or singing, they can **captivate crowds** and earn rewards along the way.

Why add mad-perform? It’s an interactive and fun way for players to roleplay, show off their creativity, and engage with the world around them. With dynamic audience reactions and different performance styles, **every session is exciting and different.**

Give your community something fresh to enjoy - grab mad-perform today and let them **experience the thrill of performing!**

### Features

#### :performing\_arts: Perform and Entertain

* Players can set down a "busking box" to start performing.
* Choose your act: play the guitar, start singing, or bust out some impressive dance moves (each requires a different item).

#### :stadium: Dynamic Audience Interaction

* Nearby NPCs will gather to form an audience, reacting dynamically to the player's performance.
* Positive performances bring praise and a larger audience, while poor performances elicit jeers and fewer audience members.
* Successful performances attract larger crowds over time, enhancing the player's experience.
* Failures decrease the audience size, but provide opportunities for recovery and improvement.

#### :game\_die: Skill-Based Minigame

* Engage in a fun and interactive minigame that varies with each performance type.
* Each performance type offers a unique experience, with different sounds and interactions:
  * **Guitar**: Play melodic tunes by matching falling notes.
  * **Singing**: Hit the right notes to create harmonious vocals.
  * **Dancing**: Perform impressive dance moves in sync with the rhythm.

#### :moneybag: Rewarding Gameplay

* Successfully completing the minigame will earn you audience approval, adoration, and rewards.
  * The audience size will increase for the next performance.
* Failing the minigame will result in your audience being dissapointed, jeers, and no tips.
  * The audience size will decrease for the next performance.

#### :repeat: Repeat and Improve

* Continue performing to build larger crowds and earn greater rewards.

### Preview

{% embed url="<https://youtu.be/qucEaA_88ps>" %}

***

### Supports

The following resources are **automatically detected** and integrated into the resource. No manual setup is required. If you need any custom logic, you can easily set that up in the "custom" section in the bridge, for each supported type. If you have any issues, please feel free to open a ticket in our [Discord server](https://discord.gg/dTNWpmPGyc) :relaxed:

#### :computer: Supported frameworks

* qb-core
* esx\_core
* qbx\_core
* ox\_core
* custom

#### :school\_satchel: Supported inventories

* qb-inventory
* ox\_inventory
* qs-inventory
* custom

#### :eye\_in\_speech\_bubble: Supported targets (third-eyes)

* qb-target
* ox\_target

#### :speech\_balloon: Supported notifications

* ox\_lib&#x20;
* qb-core
* custom

#### :signal\_strength: Supported progress-bars

* ox\_lib progressBar
* qb-core progressbar

#### :speaking\_head: Supported Languages

* English (en)
* Spanish (es)
* French (fr)
* German (de)
* Italian (it)
* Russian (ru)
* Chinese (zh)

Additional languages can be added in the `locales` folder.

***

## Installation

**STEP 1:**

* Download the resource and place it in your FiveM server's resources folder.
* Add `start mad-perform` to your `server.cfg` file.

**STEP 2:**

Ensure you have all the required dependencies below:

* A supported framework: qb-core, es\_extended, qbx\_core, ox\_core or custom.
* A supported inventory: ox\_inventory, qb-inventory, qs-inventory or custom.
* [ox\_lib](https://github.com/overextended/ox_lib)
* [mad-musicgame](https://madcap-scripts.tebex.io/package/6717557)
* An emote system - supports [rpemotes-reborn](https://github.com/alberttheprince/rpemotes-reborn) by default, or configure your own in the bridge.

**STEP 3:**

Add these items to your inventory resource, as well as the images in the `INSTALL` folder.

<details>

<summary>ox_inventory: (Click to expand)</summary>

```lua
    -- mad-perform
    ['performing_box'] = {
		label = 'Busking Box',
		weight = 100,
		stack = false,
        description = "A box for collecting tips.",
		client = {
			export = 'mad-perform.spawnBuskingBox',
			image = 'performing_box.png',
		}
	},
    ['performing_guitar'] = {
		label = 'Guitar',
		weight = 2000,
		stack = false,
        description = "An acoustic guitar.",
		client = {
			image = 'performing_guitar.png',
		}
	},
    ['performing_microphone'] = {
		label = 'Microphone',
		weight = 500,
		stack = false,
        description = "A portable microphone.",
		client = {
			image = 'performing_microphone.png',
		}
	},
    ['performing_musicplayer'] = {
		label = 'Music Player',
		weight = 300,
		stack = false,
        description = "A small speaker.",
		client = {
			image = 'performing_musicplayer.png',
		}
	},
```

</details>

<details>

<summary>qb-inventory: (Click to expand)</summary>

```lua
    -- mad-perform
    performing_box               = { name = 'performing_box', label = 'Busking Box', weight = 100, type = 'item', image = 'performing_box.png', unique = true, useable = true, shouldClose = true, description = 'A box for collecting tips.' },
    performing_guitar            = { name = 'performing_guitar', label = 'Guitar', weight = 2000, type = 'item', image = 'performing_guitar.png', unique = true, useable = false, shouldClose = false, description = 'An acoustic guitar.' },
    performing_microphone        = { name = 'performing_microphone', label = 'Microphone', weight = 500, type = 'item', image = 'performing_microphone.png', unique = true, useable = false, shouldClose = false, description = 'A portable microphone.' },
    performing_musicplayer       = { name = 'performing_musicplayer', label = 'Music Player', weight = 300, type = 'item', image = 'performing_musicplayer.png', unique = true, useable = false, shouldClose = false, description = 'A small speaker.' },

```

</details>

**STEP 5:**

Configure the resource to your preferences in `client/config.lua` and `server/config.lua`.

**STEP 6:**

Give your players a way to get the items (add them to a shop, or something else!)

**STEP 7:&#x20;*****Optional***

Add this to your backitems resource.

<details>

<summary>Snippet for backitems resource: (Click to expand)</summary>

```lua
-- mad-perform
    ["performing_guitar"] = {
        model="prop_acc_guitar_01",
        back_bone = 24818,
        x = 0.067172131860843,
        y = -0.19924080541363,
        z = 0.05913960749627,
        x_rotation = 0.0,
        y_rotation = 42.0,
        z_rotation = 0.0,
    },
```

</details>

***

## Configuration

Debug prints are handled via [ox\_lib prints](https://overextended.dev/ox_lib/Modules/Print/Shared#libprint).

<figure><img src="https://737274200-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1US2IqenUQWypVR7rbp2%2Fuploads%2FPxik3PXMBN5OHUGpeAXv%2Fperform%20-%20carbon%20client.png?alt=media&#x26;token=322e2502-1960-47b2-b0ef-1eaf988e2c1b" alt=""><figcaption><p>Client configuration</p></figcaption></figure>

<figure><img src="https://737274200-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F1US2IqenUQWypVR7rbp2%2Fuploads%2FwBhunfUlNCMv9PTj6ifX%2Fperform%20-%20carbon%20server.png?alt=media&#x26;token=d61ef706-4c41-4c70-ba43-eb7c3d913850" alt=""><figcaption><p>Server configuration</p></figcaption></figure>

#### Escrow Protection

This resource is protected by FiveM's escrow system to safeguard against unauthorised distribution. The core functionality is secured while maintaining full customisability through the extensive configuration system and bridge architecture.

Despite the security measures:

* All configuration options remain **fully editable.**
* The **comprehensive bridge system** allows integration with custom frameworks and resources.
* Server owners retain **complete control** over gameplay settings, rewards, and event probabilities.
* **No functionality is limited** by the protection system.

This approach ensures you receive a premium, leak-protected resource while maintaining the freedom to customise it for your server's unique needs.


---

# 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://madcap.gitbook.io/docs/premium-resources/mad-perform.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.
