# Welcome to Badger Docs

The official documentation for Badger's software and/or scripts he has released publicly! Here you can find lots of great documentation on how to install these great software and/or scripts. Enjoy :)

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

{% content-ref url="/pages/-M3hPR111F57XdVDkWau" %}
[Fivem General Help](/fivem-general-help/updating-server-binaries)
{% endcontent-ref %}

{% content-ref url="/pages/-M3gpw-cW3C2Qc3rqF1x" %}
[Fivem Discord Scripts](/fivem-discord-scripts/introduction)
{% endcontent-ref %}

{% content-ref url="/pages/-M3gqlUk87ryPJNmIt-\_" %}
[Fivem Misc. Scripts](/fivem-misc.-scripts/introduction)
{% endcontent-ref %}

{% content-ref url="/pages/-M3gr62\_7kIJqrDJyCfv" %}
[Badger Software](/badger-software/introduction)
{% endcontent-ref %}

If you have any further questions and/or concerns about anything within this documentation, you may gather more support personally and from other members of the Badger Developer Community over [here](https://discord.gg/Rmzgwpn).

{% hint style="info" %}
**Idea for a new script?**

If you have an idea for a new script and/or software for Badger to create, please let him know by emailing him at <me@badger.store>
{% endhint %}


# Updating Server Binaries

## Windows

* Make sure your server is currently offline. If it is not offline, turn it off. Follow all of the next steps whilst your server stays offline.
* You probably have a folder that contains your Fivem server. Navigate to the directory that contains these 2 folders:&#x20;

![](https://i.gyazo.com/f757b396e10ef580bba5faedff4d21ef.png)

**Note:** Sometimes `FXServer` is named `server-bin`

**Note:** Sometimes `fx-server-data` is named `server-data`

* You now want to download updated server binaries over at the following page:

[Server Artifacts for Windows](https://runtime.fivem.net/artifacts/fivem/build_server_windows/master/)

* You want to downloaded the latest recommended:

![](https://i.gyazo.com/09f8e00f3797903fa411f733df46a036.png)

* You have now downloaded the artifacts for server binaries. Now extract the zipped directory:

![](https://i.gyazo.com/6ecfe06986c1612fb926644aa1ccd181.gif)

**Note:** Pay no attentions to the Badgers dancing behind the file browser... Don't get distracted.

* Now we need to update the server binaries, open your file browser that has the two FiveM server directories as instructed in our first step:

![](https://i.gyazo.com/f757b396e10ef580bba5faedff4d21ef.png)

* Open up the FXServer directory:

![](https://i.gyazo.com/c0cf2ec8de0f2461a9e99f8b65c27647.png)

* Open up the server folder we just extracted previously in the GIF:

![](https://i.gyazo.com/06d3f19d7b12923ff1d64726068ad865.png)

* Copy all of the contents of the `server` folder into our `FXServer` folder:

![](https://i.gyazo.com/dfd18db3c73485228df4fd18108afdb8.gif)


# ACE Permissions

**Principals**

A *principal* is identifiers that hold permissions (permissions will be referred to as aces). These identifiers can either be player identifiers (identification that represents a player's account such as their discord ID or steam ID for example). They can also be made up identifiers. Made up identifiers can be thought of as *groups*. You can make groups simply when you add a principal.

**Example of adding a principal to a player and a group**

```
add_principal identifier.discord:394446211341615104 group.admin 

# The above line in a server.cfg or permission.cfg will add the player
# who has the discord identifier 394446211341615104 to the group.admin group.
# It should also be noted that lines denoted with a # are commented and will be
# skipped by the .cfg parser.

add_principal group.admin group.moderator

# The above line will make moderator aces inherited by the admin group.
# So group.admin will get all of the same permissions that group.moderator gets. 
```

**ACE Permissions**

Now clearly you want to give yourself permissions to use certain commands in scripts using the ACE permissions system of FiveM. To do this, you can either add the ACE permission directly to one of your identifiers or to a group, then add yourself to the group. In most cases, you will probably utilize a group since then they can be set to multiple players without having to add a permission node for each player's identifiers.

```
add_ace group.admin "BadgerTools.Spectate" allow

# The above line would give the group.admin permission to use /spectate 
# in the BadgerTools script.

add_principal identifier.discord:394446211341615104 group.admin

# The above line now sets the player to inherit all the permissions set up with
# group.admin.

add_ace identifier.discord:394446211341615104 "BadgerTools.Spectate" allow 

# The above line will add permission to use /spectate for only the player
# that matches having a discord identifier.

remove_ace group.admin "BadgerTools.Spectate" allow

# The above line will remove the allow status of a permission from the 
# group.admin. 

remove_ace identifier.discord:394446211341615104 "BadgerTools.Spectate" allow

# The above line will do the same as mentioned above, but will remove
# the allow status of the permission from the player that matches having
# the specified discord identifier ID.
```


# Getting Discord Role IDs

**First, we need to turn on developer mode in Discord:**

![](https://i.gyazo.com/c6306c90a976361e2e1e3d4fc09f4d21.gif)

**Second, we need to copy a role's ID:**

![](https://i.gyazo.com/e684050ab72392bdf22741ce57d03b90.gif)

**You have now successfully gotten a discord role's ID for use in most discord-based FiveM scripts :)**


# Setting up a Discord Webhook

**Follow the quick tutorial GIF below to learn how to make webhooks (the link you press 'copy' with is the actual webhook) :)**

![](https://i.gyazo.com/165a65efe8d466296aeb99683c9e79cb.gif)


# Discord identifier not found

**Quick Disclaimer:** If you are having the error “Identifier Not Found”, and 1000% know it’s set up right. This is not an ‘issue’ with the script, but rather Discord. Discord integration is new and is BETA meaning it will have issues that cannot be solved by myself. This means that some users ID’s might just not get picked up at all.

This is a statement from FiveM:

> We also might end up hitting rate limits, so not all players will be identified even if they are running a Discord app client.

### Explanation <a href="#explanation" id="explanation"></a>

Ever since the new Discord to FiveM methods mentioned [here](https://forum.cfx.re/t/community-update-period-1-april-20th-2020/1109303), Discord now requires you to give permission for FiveM/RedM to use your Discord user ID. If it’s your first time opening FiveM you will more than likely have a Discord pop-up in the Discord app asking you to authenticate. This will look like this:

![HEX IMG](https://faxes.zone/i/10fq4.png)

If you have already authenticated Discord you will see this in your Discord settings `Settings > Authorized Apps`

![HEX IMG](https://faxes.zone/i/pgpv8.png)

### Fix Methods <a href="#fix-methods" id="fix-methods"></a>

Feel free to move through these steps in order to *try* and get Discord and FiveM to work together. Not all methods may work and you may need to do multiple. They will be ordered in a somewhat good order so just start at the top and move down as needed.

* Relaunch FiveM and once launched, check your Discord window and see if the pop-up is there. Pop-up:

![HEX IMG](https://faxes.zone/i/10fq4.png)

* Check your Authorized Apps (`Settings > Authorized Apps`) and see if you have the and see if it’s already there. If it is, try clicking the ‘Deauthorize’ button and relaunch FiveM. Authorized app:

![HEX IMG](https://faxes.zone/i/pgpv8.png)

* Ensure you’re not using Discord PTB, if you don’t know what PTB is yopu more than likely don’t have it.
* Delete and Reinstall Discord.

If it’s still not resolved you *can* try the below.

* Reinstall FiveM, GTAV & Discord.

### **Credit to Faxes for this part of the documentation:**

{% embed url="<https://docs.faxes.zone/docs/debugging-discord/>" %}


# How to set up a Git Repository for my server

## Windows

### Buy a server

1. Buy a VPS or dedicated server from [ZAP-Hosting](https://zap-hosting.com/badger), use code `TheWolfBadger-4765` for 20% off

### Install Git Bash

{% embed url="<https://git-scm.com/downloads>" %}

### Login to Git Bash

Coming Soon...

### Initiate Git repository

1. You will want to navigate to the directory where your `resources`folder is located.
2. You will then want to type `git init`&#x20;
3. You will then type `git add .`
4. You will then type `git commit` and enter a message for the commit (maybe `Initial Commit`?)
5. You will now need to create a remote repository to link this local repository up to.

### Create Remote repository

<figure><img src="https://4135746405-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M3gpAFypb73zWIFfO7w%2Fuploads%2F49plQXsojayzMFY0SQn0%2Fimage.png?alt=media&amp;token=fd3d4924-9dde-4229-8f41-fa500a5fac3e" alt=""><figcaption></figcaption></figure>

1. You will need have a remote repository initialized on GitHub.

<figure><img src="https://4135746405-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-M3gpAFypb73zWIFfO7w%2Fuploads%2FZJtlXeHp12OKa18RMxtd%2Fimage.png?alt=media&amp;token=0e15e831-e162-4cb3-b212-490130f74bee" alt=""><figcaption></figcaption></figure>

### Connect to Remote

1. Within your git bash terminal you will run the following as GitHub has instructed you to

```
git remote add origin https://github.com/JaredScar/CollectiveM-Server.git
git branch -M main
git push -u origin main
```

2. This will push the changes in your current local branch to the remote branch

### Using GitHub Desktop

Coming Soon...


# Introduction

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

Welcome to the section of documentation that features my FiveM discord-based scripts. These scripts have been known and referred to by some as the "backbone" to FiveM's game servers. These scripts make it possible to fully integrate things such as permissions, chat roles, and tags for a player all through the use of discord's role system.

It truly is a remarkable system and especially needed for servers growing in population quickly within the FiveM community. Many of these scripts were made for use with the server known as Prime Network which you can find over at [https://www.primenetwork.xyz](https://www.primenetwork.xyz/). Fun fact: The scripts are still used on there to this day! That must mean they are important!

If you have any further questions and/or concerns about anything within this documentation, you may gather more support personally and from other members of the Badger Developer Community over [here](https://discord.gg/Rmzgwpn).


# BadgerTools

The administration tool for server owners that you've all been looking for! One of the most useful features being /spectate in which you can cycle spectating through players on the server and also hear everything said whilst spectating and being able to speak the user you are spectating! I hope you all enjoy! :)

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### **Installation Tutorial**

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

### **Requirements**

{% embed url="<https://github.com/JaredScar/Badger_Discord_API>" %}

{% embed url="<https://forum.cfx.re/t/discordtagids-i-know-i-know-i-only-make-discord-based-scripts/582513>" %}

**MAKE SURE YOU DISABLE vMenu VOICE CHAT OTHERWISE YOU WILL RUN INTO PROBLEMS**

```
####################################
#     VOICE CHAT OPTIONS MENU      #
####################################
# To disable vMenu's voice chat options, simply remove this section completely and vMenu won't touch voice chat at all.
#add_ace builtin.everyone "vMenu.VoiceChat.Menu" allow
#add_ace builtin.everyone "vMenu.VoiceChat.All" allow
#add_ace builtin.everyone "vMenu.VoiceChat.Enable" allow
#add_ace builtin.everyone "vMenu.VoiceChat.ShowSpeaker" allow
#add_ace builtin.everyone "vMenu.VoiceChat.ShowSpeaker" allow

# Staff voice channel is restricted to moderators/admins by default.
#add_ace group.moderator "vMenu.VoiceChat.StaffChannel" allow
#add_ace group.trialModerator "vMenu.VoiceChat.StaffChannel" allow
#add_ace group.admin "vMenu.VoiceChat.StaffChannel" allow
#add_ace group.owner "vMenu.VoiceChat.StaffChannel" allow
```

### **What is BadgerTools?**

*BadgerTools is a nifty script that took me a long while to perfect... It's still not perfect and I will continue to optimize it, but it's a very stable state for now. So, basically what BadgerTools is is staff administration tools. Currently it only features a /spectate and /spectate \[id] as well as it's own custom voice chat (15 meters voice chat by default for everyone, but can be changed with /proximity) that replaces vMenu's voice chat. You can cycle through players on the server once in /spectate mode as well by using the left and right arrow keys on your keyboard as well. Simply type /spectate to get out of spectate mode. Whilst you are spectating a player, you can hear all the players they can hear within your /proximity specified radius from them too. You can also speak to the user you are spectating and users around them. What is special about BadgerTools voice chat? Well, you can add tags to currently speaking voice chat. BadgerTools also gets rid of voice chat color tags from a user unless they have a certain rank. It also gets rid of users who are not staff's red colors in their name.*

**Screenshots** ***Spectating***&#x20;

![](https://i.gyazo.com/012f16d990daaefc33b1c4024eb98690.gif)

***Voice Chat*** As seen in the clip below, rusty-sir has colors in his username, however BadgerTools does not allow his colors to go through to the voice chat since he is not a donator.&#x20;

![](https://i.gyazo.com/83dc4b3f6ea2e2ec42139c7c51d43847.gif)

***Freezing Players***&#x20;

![](https://i.gyazo.com/12cc12c435870276f3ceb7f8f13c91c2.gif)

**OOC Voice Chat as well as on screen OOC message**

![](https://i.gyazo.com/9fba9a538eeb890391b46874da9265de.gif)

**Permission to use BadgerTools Spectate:**

```
BadgerTools.Commands.Spectate
```

### **Configuration for tags**&#x20;

All you have to worry about for configuration purposes is this section: The first role should always be the default role, so the role ID in the first item doesn't actually matter therefore I put a 0 there to indicate it is default.

FOUND IN `config.lua` FILE:

```
Config = {
	Prefix = '^9[^5BadgerTools^9] ^3',
	RoleList = {
		{0, "~g~"},  
		{1, "~g~DONATOR ~w~"},
		{1, "~g~ULTIMATE ~w~"},  
		{1, "~r~STAFF ~w~"}, 
		{1, "~p~MANAGEMENT ~w~"},
		{1, "~RGB~MANAGEMENT ~w~"},
		{1, "~o~OWNER ~w~"}, 
		{1, "~RGB~OWNER ~w~"}, 
	},
	OOC_Prefix = '~w~[~p~OOC~w~] ',
	OOC_Messages = {
		{
		x = .5,
		y = .65,
		size = .75,
		msg = '~r~You are rendered dead... Voice chat will be considered Out Of Character'
		},
		{
		x = .5,
		y = .69,
		size = .75,
		msg = '~b~Use /me for In Character'
		},
	},
	EnableVoiceOOC = true,
}
```

### **Configuration for allowing colors in voice chat**&#x20;

For allowing colors in voice chat name, you use the permission:

```
BadgerTools.Colors
```

### **How to cycle spectate?**&#x20;

Use the left and right arrow keys on your keyboard to cycle between spectating all the players on your server! :)

### **Commands**&#x20;

`/proximity [distance] - Changes the proximity range of which you can speak and hear others within`

`/voicetag - Lists the voice tags you have access to (linked through the discord roles)`

`/voicetag [index] - Changes your voice tag to the one you select (where id is the index next to the voice tag in /voicetag)`

`/spectate - Start spectate cycling players`

`/spectate [id] - Spectate the player with the specified ID (this will also put you in a spectate cycle too though)`

`/tp [id] - Teleport the specified ID`

`/summon [id] - Summon the specified ID to you`

`/freeze [id] - Freeze the player so they cannot run from staff sits`

### **Download**

&#x20;[BadgerTools](https://github.com/JaredScar/BadgerTools)


# DiscordChatRoles

**CURRENT VERSION: 7.0**

## Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

## Requirement

{% embed url="<https://github.com/JaredScar/Badger_Discord_API>" %}

## Installation Tutorial

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

## **Version 1.0**

Picture example taken from my RP server:

![](https://i.gyazo.com/c845547a9cbcd99e7716726d53abb216.png)

**Example of how the chat roles are set up and what you should change:**

```
--[[
    List in order of least priority to highest with 
    highest priority overtaking role before it if 
    they have that discord role.
]]--
roleList = {
{0, "^4Civilian | "}, -- 1
{1, "^3Trusted Civ | "}, -- 2
{1, "^2Donator | "}, -- 3
{1, "^1T-Mod | "}, -- 4
{1, "^1Mod | "}, -- 5
{1, "^1Admin | "}, -- 6
{1, "^6Management | "}, -- 7
{1, "^5Owner | "}, -- 8
}

-- For allowing colored chat
allowedColors = {3, 4, 5, 6, 7, 8}
allowedRed = {4, 5, 6, 7, 8}
```

The 1s should be replaced with IDs of the respective roles in your discord server. (0 should stay for Civilian as it is the default role for all users)

**Download** [DiscordChatRoles](https://github.com/TheWolfBadger/DiscordChatRoles)

## **Version 2.0**&#x20;

Chat colors can now be restricted to certain groups. The color red can also be restricted to only staff ranks!

## **Version 3.0**&#x20;

There is now a StaffChat for your staff members to use:&#x20;

![](https://i.gyazo.com/b82ef0e256ba67aa89db7d7307f77eef.gif)

Permission to use /sc and /staffchat:

```
StaffChat.Toggle
```

## **Version 4.0**

Toggle off getting StaffChat messages (good for staff members if they are streaming their own RP)

Commands:

`/sc toggle`

`/staffchat toggle`

## **Version 5.0**

You can now change your chat-tags with the in-game command using /chattag and /chattag \[id]

![](https://i.gyazo.com/d41d1a27f326461d07b01f669ea07a8d.png)

## Version 6.0

You can now change your chat-color when you talk in-game using /cc or /chatcolor

Commands: /cc - List out the chat colors you have access to /chatcolor - List out the chat colors you have access to /chatcolor  - Change chatcolor to the ID specified /cc  - Change chatcolor to the ID specified

![](https://i.gyazo.com/394fa27e4c675cd63832e83d43d5b4a6.gif)

**How it works?**&#x20;

You basically set this up using a config in which the keys are the permission ACE value that gives them access to see and use those chat colors.

Config (you'll have to find this in server.lua, in a future version I'll move it to the top though):

```
local availColors = 
{
    ['DiscordChatRoles.Access.Donator'] = {
        ['White'] = {'^0'},
        ['Green'] = {'^2'},
        ['Yellow'] = {'^3'},
        ['Blue'] = {'^4'},
        ['Light Blue'] = {'^5'},
        ['Purple'] = {'^6'},
        ['White'] = {'^7'},
        ['Pink'] = {'^9'},
        ['Police'] = {'^1', '^4'},
        ['Police2'] = {'^4', '^1'},
        ['Christmas'] = {'^2', '^1'},
        ['Christmas2'] = {'^1', '^2'},
    },
    ['DiscordChatRoles.Access.Elite'] = {
        ['RainbowYGB'] = {'^3', '^2', '^4'},
        ['RainbowFull'] = {'^3', '^4', '^1', '^5', '^6', '^7', '^9'},
    },
    ['DiscordChatRoles.Access.Staff'] = {
        ['Red'] = {'^1'},
    }
}
```

Following the format of the config, you can add multiple different permission for chat colors and set up a vast variety of different pattern combinations!

I hope you all enjoy!&#x20;

## Version 7.0

You now have the option of enabling block messages within the chat rather than the default chat messages you are used to. An example of this can be shown below.

![](https://i.gyazo.com/dba204b15bd15aadd387f0e7a0509293.gif)

To enable the block messages, just enable it within the configuration section in `server.lua`&#x20;

```
-- CONFIG --
roleList = {
{0, "👦🏻 ^4Civillian | "}, -- 1
{1, "🏘️ ^3Resident | "}, -- 2
{1, "💳 ^2Donator | "}, -- 3
{1, '🤑 ^4ELITE | '}, -- Elite donator 4
{1, '🧯 ^8Fire/EMS | ^0'}, -- Fire/EMS 5
{1, '👮 ^2LSPD | '}, -- LSPD 6
{1, '👮 ^2SASP | '}, -- 7
{1, "✈️ ^9FAA | "}, -- 8
{1, '🛦️ ^3National Guard | '}, -- National Guard 9
{1, "🔻 ^1T-Mod | "}, -- 10
{1, "🔻 ️^1Mod | "}, -- 11
{1, "🐦 ^8Admin | "}, -- 12
{1, "☂️ ^6Management | "}, -- 13
{1, "🐉 ^5Owner | "}, -- 14
{1, "🦡 ^9Systems Administrator | "},
}
sendBlockMessages = true; -- This will enable sending block messages
```

## Download

{% embed url="<https://github.com/TheWolfBadger/DiscordChatRoles>" %}


# DiscordAcePerms

## **Version 1.0**

This is another one of my discord scripts! :) If used properly along with my other scripts, you can fully make your server use only discord roles for permissions and chat roles ;)

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

## **Requirement**

{% embed url="<https://github.com/JaredScar/Badger_Discord_API>" %}

## **Installation Tutorial**

{% embed url="<https://www.youtube.com/watch?v=blOnyLfevw8>" %}

Example of how to set it up:

```
roleList = {
{1, "group.tc"}, --[[ Trusted-Civ --- ]] 
{1, "group.faa"}, --[[ FAA --- ]]
{1, "group.donator"}, --[[ Donator --- ]]
{1, "group.trialModerator"}, --[[ T-Mod --- ]] 
{1, "group.moderator"}, --[[ Moderator --- ]]
{1, "group.admin"}, --[[ Admin --- ]]
{1, "group.admin"}, --[[ Management --- ]]
{1, "group.owner"}, --[[ Owner --- ]]
}
```

The 1s should be replaced with IDs of the respective roles in your discord server. The quotes with groups should represent the groups in your permissions.cfg or server.cfg.

1. Download DiscordAcePerms
2. Extract the .zip and place the folder in your /resources/ of your Fivem server
3. Put `add_ace resource.DiscordAcePerms command.add_principal allow` and `add_ace resource.DiscordAcePerms command.remove_principal allow` in server.cfg
4. Make sure you add \`start DiscordAcePerms\` in your server.cfg
5. Enjoy ![:slight\_smile:](https://forum.cfx.re/images/emoji/twitter/slight_smile.png?v=9)

## **Download**

&#x20;[DiscordAcePerms](https://github.com/TheWolfBadger/DiscordAcePerms)


# DiscordPedPerms

**Version 1.0**&#x20;

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

## **What is it?**

Another discord script, yes, you're all welcome!

This one restricts peds to certain discord groups much like my other scripts

![](https://i.gyazo.com/871c59810a40bff4bedacee0759bdd9f.gif)

Forgive my typing mistakes in the gif please... Thanks

You must set up IllusiveTea's discord\_perms script for this to work properly. --> <https://forum.cfx.re/t/discord-roles-for-permissions-im-creative-i-know/233805>

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

## **How it works**

Find the following within your server.lua and replace the 1s in here with discord role IDs:

```
roleList = {
1, -- Trusted Civ (1)
1, -- Donator (2)
1, -- Personal (3)
}
```

responds to it's respective number within the other list (which will be located in the client.lua):

```
restrictedPeds = {
{}, -- Trusted Civ (1)
{}, -- Donator (2)
{
"mickeymouse",
"deadpool",
"kermit",
"blackpanther",
}, -- Personal (3)
}
```

Therefore blackpanther, deadpool, and kermit would be restricted to be used by the roleList group 'Personal'

It's quite simple :)

## **Download**

&#x20;[DiscordPedPerms](https://github.com/TheWolfBadger/DiscordPedPerms)


# DiscordWeaponPerms

## **Version 1.0**

Another discord script of course! With this script, you can restrict weapons to certain roles on your discord server! This script also allows restricting certain attachments to different groups as well (however, it'll remove the weapon if they have the attachment, I'll eventually update it to just remove the attachment from the weapon).

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

## **Requirements**

{% embed url="<https://github.com/JaredScar/Badger_Discord_API>" %}

## **How it works**

Find the following within your server.lua and replace the 1s in here with discord role IDs:

```
roleList = {
1, -- Trusted Civ (1)
1, -- Donator (2)
1, -- Personal (3)
}
```

responds to it's respective number within the other list (which will be located in the client.lua):

```
restrictedWeapons = {
{}, -- Trusted Civ (1)
{}, -- Donator (2)
{
"WEAPON_RPG",
}, -- Personal (3)
}
```

The RPG weapon would then be restricted to only people with personal discord role within your discord server.

It's quite simple **:)**

## **Download**

&#x20;[DiscordWeaponPerms](https://github.com/TheWolfBadger/DiscordWeaponPerms)


# DiscordVehiclesRestrict

## DiscordVehiclesRestrict

This is a Discord Vehicle Restriction script that restricts vehicles to certain roles with discord. This idea came about because of FAXES DiscordVehicleWhitelist. I have gotten permission from FAXES to add onto his script and make it possible to restrict vehicle use to only certain roles within Discord.

The permissions update every respawn for a player :)

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### Download

[DiscordVehiclesRestrict](https://github.com/TheWolfBadger/DiscordVehicleWhitelist)

### How to Install

**Requirement**

{% embed url="<https://github.com/JaredScar/Badger_Discord_API>" %}

### Setup

1. The 1s must be replaced with IDs of the roles within your discord
2. The order of the roles need to match up with the restrictedVehicles list within the client.lua:
3.

````
```
````

````
--- Config ---

--[[
    REPLACE THE '1's WITH YOUR DISCORD ROLES' IDs
]]
-- THESE NEED TO BE THE RESPECTIVE ROLE IDs OF YOUR DISCORD ROLES:
roleList = {
1, -- Civ
1, -- Trusted Civ
}
```
````


# DiscordTagIDs

## **Version 1.0**

Yes yes I know\... I only make discord-based scripts. Well, you're damn welcome!

This is a script that added prefixes to ID tags above players :) by using fully discord roles thanks to IllusiveTea!

I also wanna give thanks to MrDaGree for originally creating the script this was adapted onto! You can find that here, <https://forum.cfx.re/t/release-changed-player-name-tags-distance-names/19204>

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

## **Requirement**

{% embed url="<https://github.com/JaredScar/Badger_Discord_API>" %}

## **Installation Tutorial**

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

## **Commands**

`/tag-toggle - Turns off the prefix from being shown for the player (if they have a prefix in their tag)`&#x20;

`/tags-toggle - Turns off all tags from being shown above other players for ONLY yourself (good for streamers and/or pictures)`&#x20;

`/headtag - Check what Head-Tags you have access to and change them with /headtag [id]`

Running /headtag: ![](https://i.gyazo.com/66e55c315a0ad4830109ff0475804010.png)

On /tag-toggle not being active: ![](https://i.gyazo.com/07766951b02108c7ea49f8cbe2f372cd.png)

On /tag-toggle being active: ![](https://i.gyazo.com/b0249df9842dd7011c231d4deaf54fc7.png)

On /tags-toggle for tags not being active: ![](https://i.gyazo.com/6ba28b6e653f3c7bf82e90c3690a2dc5.png)

On /tags-toggle for tags being active: ![](https://i.gyazo.com/e3e9656dc5cc0faf42fb3c857106ee72.png)

How does the tags look on players? Let's have a look :)

![](https://i.gyazo.com/253bc5c2bb10731cb870f1eb6f8893b4.jpg) ![](https://cdn.discordapp.com/attachments/577615878607077380/588710494483775508/unknown.png)

The 1s in this part of the server.lua file must be replaced with the IDs of your discord roles that are equal to the prefix you have associated with it:

```
roleList = {
{0, "~w~"}, -- Regular Civilian / Non-Staff
{1, "~r~STAFF ~w~"}, --[[ T-Mod ]]-- 
{1, "~r~STAFF ~w~"}, --[[ Moderator ]]--
{1, "~r~STAFF ~w~"}, --[[ Admin ]]--
{1, "~p~MANAGEMENT ~w~"}, --[[ Management ]]--
{1, "~o~OWNER ~w~"}, --[[ Owner ]]--
}
```

## **Download**

&#x20;[DiscordTagIDs](https://github.com/TheWolfBadger/DiscordTagIDs)


# PoliceEMSActivity

**CURRENT VERSION: 1.0**

## **Version 1.0**&#x20;

So you want a script in which other emergency services can see their colleagues on the mini map with their locations, but you don't want regular players to see these blips unless they are on duty as well? You want this script to support multiple roles? You want it to be customizable? You want it to use discord for the permission basis of it? Oh well, I have the script for you.

*Essentially, PoliceEMSActivity is a script in which is like a /onduty command, but on steroids. You can use /duty to toggle between being on duty and off duty. With this comes some awesome things too though. There are Blip-Tags people can toggle between if they are in multiple departments. Also, there are webhooks you can set up for each different department and send their clock-ins and clock-outs to when they toggle /duty or log off whilst on duty. There is also a /cops command so you can check to make sure all the people who are using /duty are actually on duty and in RTO (on your discord server voice channels I assume), then punish them accordingly if they use it for metagaming.*

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

## **Download**

&#x20;[PoliceEMSActivity](https://github.com/TheWolfBadger/PoliceEMSActivity)

## **Installation Tutorial**&#x20;

{% embed url="<https://www.youtube.com/watch?v=xDfyGcqX5sA>" %}

**Dependency:**&#x20;

{% embed url="<https://github.com/JaredScar/Badger_Discord_API>" %}

**Features**&#x20;

Blips on the map with Blip-Tags

![](https://i.gyazo.com/47fd9b1214ab90f3fe0e5ffab28fb892.png)

Blip-Tags (using /bliptag to list them out - /bliptag \[id] to change):&#x20;

![](https://i.gyazo.com/5039d464bab28edb0457528be8b388e5.png)

Using /cops to list the online players on duty:&#x20;

![](https://i.gyazo.com/fc94e5f06e2f18a08aa28d0aacebc063.png)

**Config**

```
--[[
    1 = Red
    2 = Green
    3 = Blue
    5 = Yellow
    17 = Orange
]]--
-- CONFIG --
roleList = { 
    ['👮 LSPD | '] = {1, 2, nil},
    ['👮 Sheriff | '] = {1, 17, nil},
    ['👮 SAHP | '] = {1, 3, nil},
    ['👨‍🚒 Fire/EMS | '] = {1, 1, nil},
    ['🎖️ NG | '] = {1, 5, nil},
}
```

Change the 1s to the corresponding discord roles' IDs you want it to represent. You can also add more roles too. Below is an example of adding another role to the list and giving it the color yellow. In terms to the nil values, you can replace those with webhook links and they will log clock-ins and clock-outs to that channel for the player.

```
roleList = { 
    ['👮 LSPD | '] = {1, 2, nil},
    ['👮 Sheriff | '] = {1, 17, nil},
    ['👮 SAHP | '] = {1, 3, nil},
    ['👨‍🚒 Fire/EMS | '] = {1, 1, nil},
    ['🎖️ NG | '] = {1, 5, nil},
    ['RoleExample | '] = {1, 5, nil},
}
```

**Version 2.0**&#x20;

NEW FEATURE

Duration of minutes on tour is now included in the webhook messages! Example shown below. Also, weapons and armor are now removed when someone goes off duty :)

![](https://i.gyazo.com/70c849fce1be1d54c9ccd822744a1ae3.png)

**Thanks**&#x20;

I wanna credit @minipunch for the original code I based this off of and used for the blips code. He made my life a whole hell of a lot easier :) You can find his API this uses over [here](https://forum.cfx.re/t/release-emergencyblips/493022)


# BadgerCopChat

## Version 1.0

This is a pretty simple script, but cool one also. It utilizes a player's discord roles to determine if they are a LEO or not. If they are within the roleList, then they are considered to be a LEO and will have access to use the /leoChat commands.

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### Requirements

{% embed url="<https://github.com/JaredScar/Badger_Discord_API>" %}

### Configuration

```
roleList = {
1, -- National Guardsmen
1, -- SASP 
1, -- LSPD 
1, -- Fire/EMS Department
}
prefix = '^0[^3LEO Chat^0] ^r';
```

* You will want to replace the 1s with the roleIDs of your respective discord LEO roles. I placed a few common LEO roles as comments next to the 1s for terms of a structure. Keep in mind, you can change all of this, you can also add more roles to this by just adding the roleIDs with commas after them within the `{}` of the roleList
* You can change `prefix` to anything you want, as this will just be the prefix the script displays in front of every message it sends

### Commands

`/leoChat` - Toggles on and off LEO Chat

`/leoChat on` - Turns LEO Chat on

`/leoChat off` - Turns LEO Chat off

`/leoChat vis` - Toggles on and off the visibility of seeing LEO Chat messages from others

### Pictures

<div align="left"><img src="https://i.gyazo.com/6d5170b5a2e774ff49bea36274d03592.png" alt=""></div>

### Download

{% embed url="<https://github.com/TheWolfBadger/BadgerCopChat>" %}


# DiscordDonatorPerks

## Version 1.0

### What is it?

DiscordDonatorRanks is a script I made for my server to give some perks to players who were part of the Tebex/Patreon subscription helping to keep us paying for the server. I wanted to give something to those players every month, but didn't want extra work for my staff to have to do. So, with DiscordDonatorRanks, it essentially automates the process of giving money and/or jobs in-game to players depending on their discord roles. It'll then save them to the database and they will not be able to access the perks for another 30 days (essentially a whole month, maybe down the line I'll make it an official month no matter what month it is). It's a quite simple script and I'm honestly surprised I haven't found one like it.

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### Images

![](https://i.gyazo.com/3c32592dc1dc38fce373f45f549e0547.gif)

### Requirements

{% embed url="<https://github.com/sadboilogan/discord_perms>" %}

{% embed url="<https://github.com/brouznouf/fivem-mysql-async>" %}

### Installation

* Find the `insert.sql` file and insert its code into your essentialmode database. (The same database you are using for ESX)

**Insert.sql:**

```
CREATE TABLE IF NOT EXISTS Donator_Data 
(
	id INTEGER(11) AUTO_INCREMENT PRIMARY KEY,
	identifier VARCHAR(50),
	playerName VARCHAR(50),
	dateReceiveNext INTEGER(64),
	acceptedPerkID INTEGER(11),
	rankPackage VARCHAR(50),
);
```

* After setting up the `Donator_Data` table within your database, you will then want to move onto configuring `discord_perms` and `DiscordDonatorPerks` configs

{% embed url="<https://www.youtube.com/watch?v=sjbFzkII2T0>" %}

### Configuration

```
roleList = {
	{"Bronze-Tier", 1, {"$1,000,000 voucher", {'Money', 1000000}} 
	}, -- Bronze Tier 
	{"Silver-Tier", 1, {"$5,000,000 voucher",{'Money', 5000000}} 
	}, -- Silver Tier 
	{"Gold-Tier", 1, 
		{"$15,000,000 voucher",{'Money', 15000000}}, 
		{"Invitation to Mafia [Gang]", {'Job', 'mafia', 0}},
		{"Invitation to LS Kings [Gang]", {'Job', 'woodyguns', 0}},
		{"Invitation to Sons of Anarchy [Gang]", {'Job', 'lazy', 0}},
		{"Invitation to Black Diamond Cartel [Gang]", {'Job', 'stevestacos', 0}}
	}, -- Gold Tier 
}
```

* It's now time to understand how the configuration works
* `{"$1,000,000 voucher", {'Money', 1000000}}` is what I like to call a `Offer`&#x20;
* `Offers` are basically what the player will be offered in-game on their character to accept or deny
* The `Offers` can be seen above in `Images` in which it asks the player whether they want to accept or reject
* **How do we set up a job for `Silver Tier` ?**
  * We first need to set it up correctly, so we need to add another `Offer` to it
  * You'll notice below that we added a job to `Silver Tier` simply by adding the `,` and correct format of jobs being `{"Invitation to Job", {'Job', 'jobname', 0}}`&#x20;
  * `"Invitation to Job"` is known as the `Label` and will be displayed on the player's screen asking if they want to accept or reject it&#x20;
  * `{'Job', 'jobname', 0}` is known as the `Job-Details` in which the script will use to give them the job if they accept it
  * `'Job'` is the identifier of what type of `Offer` it is
  * `'jobname'` is the name of the job (the one you use to set players to work for it)
  * `0` is known as the `Job-Grade` in which is the level of the job they will obtain when accepting the `Offer`&#x20;

```
{"Silver-Tier", 1, 
    {"$5,000,000 voucher",{'Money', 5000000}},
    {"Invitation to Job", {'Job', 'jobname', 0}}
	}, -- Silver Tier 
```

* **How do we set up another money voucher for `Silver Tier` ?**

  * We once again need to add another `Offer` to it
  * You'll notice below we have the `Label` as `"$100,000 voucher"`
  * We have the `Money-Details` as `{'Money', 100000}`

  ```
  {"Silver-Tier", 1, 
      {"$5,000,000 voucher",{'Money', 5000000}},
      {"Invitation to Job", {'Job', 'jobname', 0}},
      {"$100,000 voucher", {'Money', 100000}}
  	}, -- Silver Tier 
  ```
* We want to replace the `1`s within the `server.lua` with the roleIDs of the corresponding rank you want in that spot
* If you're familiar with my work, the roleList should come as no surprise to you lol...
* **Note:** Currently (as of version 1.0), accepting and denying jobs will put the job in the database because we don't want it asking them for joining the jobs every other time they login. In the future I'll hopefully make a command such as /select for selecting a job from where they got invitations to, so they can switch.
* **Another Note:** What this means is, when the player first logins, they need to select the character they want the job on first (if they have a job perk), then accept it and deny the others on it. If they want the money on another account, they can just deny it and accept it the next time they login with the other character.

### Download

{% embed url="<https://github.com/TheWolfBadger/DiscordDonatorPerks>" %}


# Badger-911

## Badger-911

### What is it?

Badger-911 is a simple, but efficient 911 script for your server. 911 calls are only displayed to those who have a police discord role on your discord server. When someone calls in 911, the call will only be relayed to the cops on the server. There is also a webhook in which you can set up to print the 911 transmissions in as well. What makes this 911 script stand out though is responding to calls. Instead of needing someone to give a postal in the 911 transmission or need them to say where, you can get their exact location the call was made from. Using the command `/resp <response code>` will set your waypoint on the map to the location the call was made at! Now, that's pretty cool.

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### Dependency

{% embed url="<https://github.com/JaredScar/Badger_Discord_API>" %}

### Screenshots

![Webhook example](https://i.gyazo.com/0defc99164134834ad7f5bf4ce527cb4.png)

![Using /911](https://i.gyazo.com/bae5e3a4f7b443c24c7dd9979d9526c5.gif)

![Setting waypoint via /resp \<response code>](https://i.gyazo.com/481aaacd2b679ec63aca2e25c011804f.gif)

### Commands

`/911 <info>` - Call 911 for a situation

`/resp <response code>` - Respond to the 911 call with this response code

### Configuration

**Found in the server.lua file:**

```
--- CONFIG ---
webhookURL = ''
prefix = '^5[^1911^5] ^3';
roleList = {
    ['SAHP'] = 1,
    ['BCSO'] = 1,
    ['BCPD'] = 1,
    ['CO'] = 1,
    ['Fire & EMS'] = 1,
}
```

* Replace the 1s with the role IDs of your corresponding discord roles... (You should all know the drill by now)

### Download

{% embed url="<https://github.com/JaredScar/Badger-911/>" %}


# Bad-Scoreboard

The best Fivem Scoreboard created \[A Fivem Script]

### All I ask

All I ask is that if you enjoy this resource, please give it a like on the forum page, on GitHub (if you have an account), and pop me a follow over on GitHub.

### What is it?

Bad-Scoreboard (or Bad-ServerList as I like to call it) is a simple Fivem scoreboard script for your Fivem server. This makes the scoreboard a lot prettier and utilizes discord to actually show who is who. A user's discord name and avatar are displayed on the scoreboard so long as their discord ID is found successfully by the Fivem application client. The scoreboard has multiple pages and has a `PageSize` variable in the `config.lua` that can be edited to determine how many users are shown on each page. I found that 10 worked out to be the best delimiter. Pages can be cycled through by just clicking the `UP_ARROW` button again. The `UP_ARROW` displays the scoreboard and each time you click it the next page is brought up (if there are more players than the page can handle). I really like the layout of the scoreboard and figured others would too, so here it is. Enjoy. All I ask is that if you enjoy this resource, please give it a like on the forum page, on GitHub (if you have an account), and pop me a follow over on GitHub. Followers on GitHub are to me are considered more important than social media to me lol. So please help me get famous. Best Regards as always, Badger :)

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### Installation

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

### Screenshots

![Scoreboard Example (1 Page)](https://i.gyazo.com/70c30e8d777daf527626672024131c4e.png)

![Multiple Scoreboard Pages](https://i.gyazo.com/21066d5a999e768b7ea2080065851a10.gif)

### Configuration

```
----------------------
--- Bad-ServerList ---
----------------------
Config = {
    GuildID = '',
    BotToken = '',
    Default_Profile = "https://www.gamesindustry.biz/img/base/default-user.png", -- Discord Avatar column picture if theirs is not found 
    Discord_Not_Found = "Not Found", -- This will display under 'Discord Name' column if their name is not found 
    ServerName = 'Noir Roleplay',
    PageSize = 10,
}
```

### Download

{% embed url="<https://github.com/JaredScar/Bad-Scoreboard>" %}


# Bad-DiscordQueue

### All I ask

All I ask is that if you enjoy this resource, please give it a like on the forum page, on GitHub (if you have an account), and pop me a follow over on GitHub.

### What is it?

This is basically a discord queue for logging into a server. When you connect to the server, you get added to a queue. Depending on your priority, you can be at the back of the queue or added to the top automatically. This all depends on what discord roles you have considering it works off of priority numbers. I'm not the best at writing descriptions. I'll be honest, I personally am probably not going to use this script, but I had a lot of people request this script from me, so here it is. Why not increase my rep within the Fivem community?

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### Installation

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

### Dependencies

{% embed url="<https://github.com/JaredScar/Badger_Discord_API>" %}

### Screenshots

![Queue Gif](https://i.gyazo.com/3606be50c8770850b86a83fd8efbec18.gif)

### Configuration

```
Config = {
	Default_Prio = 500000, -- This is the default priority value if a discord isn't found
	AllowedPerTick = 1, -- How many players should we allow to connect at a time?
	HostDisplayQueue = true,
	onlyActiveWhenFull = true,
	Displays = {
		Prefix = '[BadgerDiscordQueue]',
		ConnectingLoop = { 
			'🦡🌿🦡🌿🦡🌿',
			'🌿🦡🌿🦡🌿🦡',
			'🦡🌿🦡🌿🦡🥦',
			'🌿🦡🌿🦡🥦🦡',
			'🦡🌿🦡🥦🦡🥦',
			'🌿🦡🥦🦡🥦🦡',
			'🦡🥦🦡🥦🦡🥦',
			'🥦🦡🥦🦡🥦🦡',
			'🦡🥦🦡🥦🦡🌿',
			'🥦🦡🥦🦡🌿🦡',
			'🦡🥦🦡🌿🦡🌿',
			'🥦🦡🌿🦡🌿🦡',
		},
		Messages = {
			MSG_CONNECTING = 'You are being connected [{QUEUE_NUM}/{QUEUE_MAX}]: ', -- Default message if they have no discord roles 
			MSG_CONNECTED = 'You are up! You are being connected now :)'
		}
	}
}

Config.Rankings = {
	-- LOWER NUMBER === HIGHER PRIORITY 
	-- ['roleID'] = {rolePriority, connectQueueMessage},
	['1'] = {500, "You are being connected (donate for a better priority) [{QUEUE_NUM}/{QUEUE_MAX}]:"}, -- Discord User 
	['1'] = {400, "You are being connected (Donator Queue) [{QUEUE_NUM}/{QUEUE_MAX}]:"}, -- Donator 
	['1'] = {300, "You are being connected (Trial-Mod Queue) [{QUEUE_NUM}/{QUEUE_MAX}]:"}, -- Trial Mod 
	['1'] = {200, "You are being connected (Mod Queue) [{QUEUE_NUM}/{QUEUE_MAX}]:"}, -- Mod 
	['1'] = {100, "You are being connected (Admin Queue) [{QUEUE_NUM}/{QUEUE_MAX}]:"}, -- Admin 
	['1'] = {1, "You are being connected (Management Queue) [{QUEUE_NUM}/{QUEUE_MAX}]:"}, -- Management
}
```

* Replace the `'1'`s in the configuration with the discord role ID you want to set up priority for&#x20;

### Download

{% embed url="<https://github.com/JaredScar/Bad-DiscordQueue>" %}


# Badger\_Discord\_API

{% content-ref url="/pages/-MJrKYuOmhFSWgQPNmFh" %}
[GetRoleIdFromRoleName](/fivem-discord-scripts/badger_discord_api/getroleidfromrolename)
{% endcontent-ref %}

{% content-ref url="/pages/-MJrLAqqKS7TogysXBbE" %}
[CheckEqual](/fivem-discord-scripts/badger_discord_api/checkequal)
{% endcontent-ref %}

{% content-ref url="/pages/-MJrLBOiNTLptYeXzh1-" %}
[IsDiscordEmailVerified](/fivem-discord-scripts/badger_discord_api/isdiscordemailverified)
{% endcontent-ref %}

{% content-ref url="/pages/-MJrLByahpCsTbg0u4a3" %}
[GetDiscordEmail](/fivem-discord-scripts/badger_discord_api/getdiscordemail)
{% endcontent-ref %}

{% content-ref url="/pages/-MJrLCUcvgYyNMTsYEae" %}
[GetDiscordName](/fivem-discord-scripts/badger_discord_api/getdiscordname)
{% endcontent-ref %}

{% content-ref url="/pages/-MJrLFlUoyi1PytLjYdc" %}
[GetDiscordAvatar](/fivem-discord-scripts/badger_discord_api/getdiscordavatar)
{% endcontent-ref %}

{% content-ref url="/pages/-MJrLGDgxLLLAQGP8dNz" %}
[GetDiscordNickname](/fivem-discord-scripts/badger_discord_api/getdiscordnickname)
{% endcontent-ref %}

{% content-ref url="/pages/-MJrLHY-e1AMQmZW6Kr8" %}
[GetDiscordRoles](/fivem-discord-scripts/badger_discord_api/getdiscordroles)
{% endcontent-ref %}

{% content-ref url="/pages/-MJrLCvlioiyTaU0fCF5" %}
[GetGuildIcon](/fivem-discord-scripts/badger_discord_api/getguildicon)
{% endcontent-ref %}

{% content-ref url="/pages/-MJrLDMXvNQ-GP6oDX3v" %}
[GetGuildSplash](/fivem-discord-scripts/badger_discord_api/getguildsplash)
{% endcontent-ref %}

{% content-ref url="/pages/-MJrLDqIj6kjPmB7LfBK" %}
[GetGuildName](/fivem-discord-scripts/badger_discord_api/getguildname)
{% endcontent-ref %}

{% content-ref url="/pages/-MJrLERQqTTEGEzPcDXS" %}
[GetGuildDescription](/fivem-discord-scripts/badger_discord_api/getguilddesc)
{% endcontent-ref %}

{% content-ref url="/pages/-MJrLEryhW0hk8fzgHuK" %}
[GetGuildMemberCount](/fivem-discord-scripts/badger_discord_api/getguildmembercount)
{% endcontent-ref %}

{% content-ref url="/pages/-MJrLFJ30FyBYkRyDMBa" %}
[GetGuildOnlineMemberCount](/fivem-discord-scripts/badger_discord_api/getguildonlinememcount)
{% endcontent-ref %}

{% content-ref url="/pages/-MJrLH20XZr\_Jle167\_d" %}
[GetGuildRoleList](/fivem-discord-scripts/badger_discord_api/getguildrolelist)
{% endcontent-ref %}


# Installation

## Badger\_Discord\_API Installation

### Notes

Some methods of the API not may fully work or be broken. I was able to test most and 75% of it works. If something does not work, please just submit an issue or pull request for it on the GitHub page. Thanks!

### What is it?

This is essentially a Discord API for FiveM. It utilizes the REST API of Discord for all your essential needs :) Things that are heavy in Discord rate limiting (such as retreiving all server roles and player avatars) will be automatically stored to a cache for developers automatically. I will be moving all my scripts over to use this API for better ease of use. Some features include not having to gather role IDs at all, since the script gets the server's roles automatically, so you can just specify the role's name instead of role IDs at all (however, be aware that this will break then if someone changes the roles' names on Discord)... I hope you can all find some use for this, I know I will :P

### Installation

{% embed url="<https://www.youtube.com/watch?v=blOnyLfevw8>" %}

1. Set up a Discord bot via the developer portal on Discord. (<https://discord.com/developers/applications>)
2. Invite the Discord bot you created to your Discord.
3. Get the Discord bot token from the newly created bot.
4. Place the Discord bot token in `Bot_Token = '{BOT_TOKEN}',` in the `config.lua` file in place of `{BOT_TOKEN}`&#x20;
5. Get your Guild ID by copying the ID of your Discord server's logo in the sidebar of Discord.
6. Place the Guild ID in `Guild_ID = '{GUILD_ID}',` in the `config.lua` file in place of `{GUILD_ID}`&#x20;
7. You can now choose to set up the `RoleList` or not. Utilizing the `RoleList` makes you able to use keys in the other Discord scripts that will correspond to the config's value when checking a user for matching roles.

### Example Configuration

```
Config = {
	Guild_ID = '597445834153525298', -- Badger's Development Discord
	Bot_Token = 'NzE4OTM2MjQxNjI5OTU0MTcw.XtwHjQ.pJa80TEeRG0wyN2KNi9zyr4pBK8', 
	RoleList = {
		['Founder'] = 597446100206616596,
		['Admin'] = 597446815054430219,
		['Staff'] = 597450498060058624,
	},
}

Config.Splash = {
	Header_IMG = 'https://forum.cfx.re/uploads/default/original/3X/a/6/a6ad03c9fb60fa7888424e7c9389402846107c7e.png',
	Enabled = true,
	Wait = 10, -- How many seconds should splash page be shown for? (Max is 12)
	Heading1 = "Welcome to [ServerName]",
	Heading2 = "Make sure to join our Discord and check out our website!",
	Discord_Link = 'https://discord.gg',
	Website_Link = 'https://badger.store',
}
```

### Download

{% embed url="<https://github.com/JaredScar/Badger_Discord_API>" %}


# GetRoleIdFromRoleName

## GetRoleIdFromRoleName

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:GetRoleIdFromRoleName(roleName)`

This export allows you to get a Discord role ID from what it is named on the Guild.

#### Query Parameters

| Name     | Type   | Description                                       |
| -------- | ------ | ------------------------------------------------- |
| roleName | string | The name of the Discord role you want the ID for. |

{% tabs %}
{% tab title="200 Number of role ID will be returned:" %}

```
761459588058185738
```

{% endtab %}

{% tab title="404 Could not find a role with the name provided:" %}

```
nil
```

{% endtab %}
{% endtabs %}


# CheckEqual

## CheckEqual

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:CheckEqual(role1, role2)`

This export allows you to check if a Discord role ID is equal to a Discord role Name, this can also check if a Discord role ID is equal to Badger\_Discord\_API config's RoleList role reference.

#### Query Parameters

| Name  | Type   | Description                                            |
| ----- | ------ | ------------------------------------------------------ |
| role2 | number | The 2nd role ID you are comparing.                     |
| role2 | string | The 2nd role name or role reference you are comparing. |
| role1 | number | The role ID.                                           |
| role1 | string | The role name or role reference.                       |

{% tabs %}
{% tab title="200 Returns true if the roles are considered equal:" %}

```
true
```

{% endtab %}

{% tab title="404 Returns false if the roles are not considered equal:" %}

```
false
```

{% endtab %}
{% endtabs %}


# IsDiscordEmailVerified

## IsDiscordEmailVerified

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:IsDiscordEmailVerified(user)`

This export allows you to check if a player has their Discord email verified.

#### Query Parameters

| Name | Type   | Description                                 |
| ---- | ------ | ------------------------------------------- |
| user | object | The source of the player you want to check. |

{% tabs %}
{% tab title="200 Returns true if email is verified:" %}

```
true
```

{% endtab %}

{% tab title="404 Returns false if email is not verified \[returns nil if data returned is nil]:" %}

```
false
```

{% endtab %}
{% endtabs %}


# GetDiscordEmail

## GetDiscordEmail

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:GetDiscordEmail(user)`

This export allows you to get a player's Discord email if allowed.

#### Query Parameters

| Name | Type   | Description                                 |
| ---- | ------ | ------------------------------------------- |
| user | object | The source of the player you want to check. |

{% tabs %}
{% tab title="200 Returns email of user if found:" %}

```
'thewolfbadger@gmail.com'
```

{% endtab %}

{% tab title="404 Returns nil if not found:" %}

```
nil
```

{% endtab %}
{% endtabs %}


# GetDiscordName

## GetDiscordName

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:GetDiscordName(user)`

This export allows you to get a player's Discord name.

#### Query Parameters

| Name | Type   | Description                                 |
| ---- | ------ | ------------------------------------------- |
| user | object | The source of the player you want to check. |

{% tabs %}
{% tab title="200 Returns Discord name if found:" %}

```
'Badger'
```

{% endtab %}

{% tab title="404 Returns nil if not found:" %}

```
nil
```

{% endtab %}
{% endtabs %}


# GetDiscordAvatar

## GetDiscordAvatar

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:GetDiscordAvatar(user)`

This export allows you to get a user's Discord avatar image URL.

#### Query Parameters

| Name | Type   | Description                                 |
| ---- | ------ | ------------------------------------------- |
| user | object | The source of the player you want to check. |

{% tabs %}
{% tab title="200 Their Discord avatar image URL returned if found:" %}

```
'image.png'
```

{% endtab %}

{% tab title="404 Returns nil if not found:" %}

```
nil
```

{% endtab %}
{% endtabs %}


# GetDiscordNickname

## GetDiscordNickname

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:GetDiscordNickname(user)`

This export allows you to get a player's Discord nickname on the server.

#### Query Parameters

| Name | Type   | Description                                 |
| ---- | ------ | ------------------------------------------- |
| user | object | The source of the player you want to check. |

{% tabs %}
{% tab title="200 Returns Discord nickname if found:" %}

```
'Badger [My Nickname]'
```

{% endtab %}

{% tab title="404 Returns nil if not found:" %}

```
nil
```

{% endtab %}
{% endtabs %}


# GetDiscordRoles

## GetDiscordRoles

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:GetDiscordRoles(user)`

This export allows you to get a player's Discord roles within the server (discord role IDs returned).

#### Query Parameters

| Name | Type   | Description                                 |
| ---- | ------ | ------------------------------------------- |
| user | object | The source of the player you want to check. |

{% tabs %}
{% tab title="200 Returns array of role IDs if found:" %}

```
{ 597446100206616596, 597450498060058624, 597929446124552192 }
```

{% endtab %}

{% tab title="404 Returns false if not found:" %}

```
false
```

{% endtab %}
{% endtabs %}


# GetGuildIcon

## GetGuildIcon

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:GetGuildIcon()`

This export allows you to get the server's icon image URL.

{% tabs %}
{% tab title="200 Returns server icon image URL if found:" %}

```
'image.png'
```

{% endtab %}

{% tab title="404 Returns nil if not found:" %}

```
nil
```

{% endtab %}
{% endtabs %}


# GetGuildSplash

## GetGuildSplash

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:GetGuildSplash()`

This export allows you to get the server's splash image URL.

{% tabs %}
{% tab title="200 Returns server splash image URL if found:" %}

```
'image.png'
```

{% endtab %}

{% tab title="404 Returns nil if not found:" %}

```
nil
```

{% endtab %}
{% endtabs %}


# GetGuildName

## GetGuildName

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:GetGuildName()`

This export allows you to get the server's name the script is connected to.

{% tabs %}
{% tab title="200 Returns server name if found:" %}

```
'Jared's Developer Community'
```

{% endtab %}

{% tab title="404 Returns nil if not found:" %}

```
nil
```

{% endtab %}
{% endtabs %}


# GetGuildDescription

## GetGuildDescription

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:GetGuildDescription()`

This export allows you to get the server's description the script is connected to.

{% tabs %}
{% tab title="200 Returns server description if found:" %}

```
'Jared's Developer Community is a friendly community...'
```

{% endtab %}

{% tab title="404 Returns nil if not found:" %}

```
nil
```

{% endtab %}
{% endtabs %}


# GetGuildMemberCount

## GetGuildMemberCount

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:GetGuildMemberCount()`

This export allows you to get the count of members (including offline members) on the server the script is connected to.

{% tabs %}
{% tab title="200 Returns member count if found:" %}

```
435
```

{% endtab %}

{% tab title="404 Returns nil if not found:" %}

```
nil
```

{% endtab %}
{% endtabs %}


# GetGuildOnlineMemberCount

## GetGuildOnlineMemberCount

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:GetGuildOnlineMemberCount()`

This export allows you to get the count of online members on the server the script is connected to.

{% tabs %}
{% tab title="200 Returns online member count of server if found:" %}

```
50
```

{% endtab %}

{% tab title="404 Returns nil if not found:" %}

```
nil
```

{% endtab %}
{% endtabs %}


# GetGuildRoleList

## GetGuildRoleList

<mark style="color:blue;">`GET`</mark> `exports.Badger_Discord_API:GetGuildRoleList()`

This export allows you to get all of the server's roles with their role names and role IDs correspondent to each other.

{% tabs %}
{% tab title="200 Returns associative array if found:" %}

```
{ 
    ['Founder'] = 597446100206616596, 
    ['Staff'] = 597450498060058624, 
    ['Java Developer'] = 597928420017438725 
}
```

{% endtab %}

{% tab title="404 Returns nil if not found:" %}

```
nil
```

{% endtab %}
{% endtabs %}


# DiscordVehicleRestrictions

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### What is it?

DiscordVehiclesRestrictions is a Discord based vehicle restriction script. I have previously made a script like this in the past, but it was made when I was barely considered a FiveM script developer. Due to the sloppy code practices within that script, I decided to rewrite the script and include something at most people had inquired about within the old one: Inheritance.

#### Old Script:

{% embed url="<https://forum.cfx.re/t/discordvehiclesrestrict/599594>" %}

### Images

![](https://i.gyazo.com/415c775a6cd94f194e22c9843778bdb0.gif)

### Requirement

{% embed url="<https://forum.cfx.re/t/release-badger-discord-api/1698464>" %}

### Configuration

* It should be noted that for `Config.Inheritances`, the roleNames and roleIDs should match up with the ones specified in `Config.VehicleRestrictions`.
* Also, inheritance only inherits the role groups listed. Inheriting `RoleName2` which inherits `RoleName1` would not be inherited for `RoleName3`.

  \`\`\`lua Config = { RestrictedMessage = "\~r\~Restricted Vehicle Model.", InheritanceEnabled = false }

Config.VehicleRestrictions = { \['RoleName1 or ID'] = { "baller", "baller2", "baller3", "baller4" }, \['RoleName2 or ID2'] = {}, \['RoleName3 or ID3'] = {}, \['RoleName4 or ID4'] = {} }

\-- Requires Config.InheritanceEnabled to be = true Config.Inheritances = { \['RoleName2 or ID'] = {'RoleName1', 'RoleName3', 'RoleName4'}, \['RoleName3'] = {'RoleName2'}, }

````
## Example Configuration
```lua
Config = {
    RestrictedMessage = "~r~Restricted Vehicle Model.",
    InheritanceEnabled = true
}

Config.VehicleRestrictions = {
    ['Head_Admin'] = {
        "baller",
        "baller2",
        "baller3",
        "baller4",
    },
    ['Admin'] = {
        "dcd",
        "chr20",
    },
    ['Moderator'] = {
        "nf6",
        "foxsnt",
        "foxshelby",
        "gt63s",
        "fhauler",
        "rescue1",
        "um1",
        "um2",
        "um3",
        "um4",
        "um5",
        "um6",
        "um6",
        "riot",
    },
}

-- Requires Config.InheritanceEnabled to be = true
Config.Inheritances = {
    ['Head_Admin'] = {'Admin', 'Moderator'},
}
````

Thanks to @clewis329 for helping to test this, a well as providing the example configuration file :)

### Download

{% embed url="<https://github.com/JaredScar/DiscordVehicleRestrictions>" %}


# Introduction

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

Welcome to the section of documentation that features my other FiveM scripts. These FiveM scripts do not have any integration of discord within them. Most of them most likely use ACE permissions system or may just be able to be used by everyone.

Some of these scripts feature an animation script that includes lock-picking, walking styles, and a robbery script that will allow people to rob all the stores on the map every 15 minutes (configurable).&#x20;

If you have any further questions and/or concerns about anything within this documentation, you may gather more support personally and from other members of the Badger Developer Community over [here](https://discord.gg/Rmzgwpn).


# BadgerAnims

**Version 1.0**&#x20;

This is basically just a script I threw together for my server with a bunch of useful walking styles, animations, and features.

One of the features is if a player is at 50% or less health that they then are set to the walking style limping automatically and will continue to walk like that until they are not under 50% health.

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

**Note**&#x20;

For the lockpicking feature to work, you must have this script installed properly as well ---> <https://forum.cfx.re/t/dev-resource-mythic-progress-bar/527607>

All of the features in this script can be toggled on/off via the config section within the client.lua file.

**Config**

```
--- Config ---

-- Locks for vehicles
enableLockpick = true
enableLock = true
enableUnlock = true
lockpickingCarStr = "Breaking into car"
lockpickingCopCarStr = "Breaking into cop car"
lockpickingCarTime = 10 -- Seconds
lockpickingCopCarTime = 40 -- Seconds
copCars = {
"chgr",
"police",
"police2",
"police3",
"police4",
"police7",
"police8",
"police9",
"police10",
"fbi",
"fbi2",
"unmarked1",
"unmarked2",
"unmarked3",
"unmarked4",
"unmarked5",
"unmarked6",
"unmarked7",
"unmarked8",
"unmarked9",
"silv",
"sheriff2",
"sheriff",
"hwayf150",
"ambulance",
"firetruk",
"pbus",
}

-- Misc
enableHealthInjured = true

-- Walk Styles
enableDrunk = true
enableHiking = true
enableInjured = true
enableMuscleWalk = true
```

**Features**&#x20;

`/drunk - Toggles your ped's walking style between drunk and sober.`

`/injured - Toggles your ped's walking style between limping and regular.`

`/hiking - Toggles your ped's walking style between hiking and regular.`

`/musclewalk - Toggles your ped's walking style between musclewalk and regular.`

`/lock - Locks the vehicle you are sitting in.`

`/unlock - Unlocks the vehicle you had previously locked with /lock.`

`/lockpick - Breaks into the closest vehicle to you.`

**Screenshots**

Hiking:&#x20;

![](https://i.gyazo.com/b767489678f953b5f099e731d40dbc07.gif)

MuscleWalk:&#x20;

![](https://i.gyazo.com/5082d61bd58a3832c9230c0bde2dcd8c.gif)

Drunk:

![](https://i.gyazo.com/bdea07bffeda38ef29df5d51a6b5179f.gif)

Injured:&#x20;

![](https://i.gyazo.com/8371b3fe54928dd3e6edebf25343ef9d.gif)

Lockpicking:

![](https://i.gyazo.com/63ff9b93b136bfb86a8aca4be0cbe612.gif)

**Download** [BadgerAnims](https://github.com/TheWolfBadger/BadgerAnims)


# BadgerBankRobbery

**Version 1.0**&#x20;

This is a really simple script that allows realistic robberies of the banks. Currently I only have the Paleto bank and harmony Fleeca bank within it. I may add the 24/7 of Sandy Shores and Gun stores later on. Depending on suggestions of what other locations you guys want, I'll see what I can do!

Basically this allows an animation of robbing the bank for users and fun RP for all on the server.

Banks reset every 15 minutes after a bank robbery, so this gives the cops a break (this time is subject to increase/decrease if you find it in the server.lua and simply change the value '15' to another value). Once you start breaking into safes, beware that you cannot move and cannot cancel the action! This is why it's highly suggested you rob the bank with your friends/hooligans! They will need to protect you while you steal the goods! How do you rob the bank? Very easy, just walk up to the red circle and press the 'E' key! Once you start breaking in, the silent alarm will be triggered and everyone will know the bank is being robbed! I've shown a demo gif below.&#x20;

![](https://i.gyazo.com/0689ffd64c7a1d26ec9e3b8d8a144cac.gif)

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

**REQUIRED DEPENDENCY**&#x20;

You must have this properly installed for this script to work correctly --> <https://forum.cfx.re/t/dev-resource-mythic-progress-bar/527607>

**Config**

```
--- Config ---
timeToRob = 60 -- In seconds
robbingStr = "Breaking into safes..."

harmonySilentAlarm = "^1^*A silent alarm has been triggered at ^5Harmony Fleeca Bank^1! All police forces are required to assist!"
paletoSilentAlarm = "^1^*A silent alarm has been triggered at ^5Paleto Bank^1! All police forces are required to assist!"
```

**Version 2.0**&#x20;

Credits to @TiggyTheTiger for his pull request

All stores/ammunations now can be robbed as well!

**New Config**

```
--- Config ---
timeToRob = 60 -- In seconds
robbingStr = "Breaking into the Safe..."
enableAmmunation = true -- Enables all Ammunations to be robbed.
enable247 = true -- Enables all 24/7's to be robbed.
enableGasStation = true -- Enables all Gas Stations to be robbed.
enableBank = true -- Enables all Banks to be robbed.
enableLiquor = true -- Enables all Liquor Stores to be robbed.

paletobankSilentAlarm = "^1^*A silent alarm has been triggered at the ^5Blaine County Savings Bank in Paleto Bay^1! All police units are required to assist!"
harmonybankSilentAlarm = "^1^*A silent alarm has been triggered at the ^5Fleeca Bank Harmony in Harmony^1! All police units are required to assist!"
banhamcanyonbankSilentAlarm = "^1^*A silent alarm has been triggered at the ^5Bank in Banham Canyon^1! All police units are required to assist!"
pillboxbankSilentAlarm = "^1^*A silent alarm has been triggered at the ^5Bank in Banham Canyon^1! All police units are required to assist!"

paletoammoSilentAlarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Paleto Bay^1! All police units are required to assist!"
senora24SilentAlarm = "^1^*A silent alarm has been triggered at the ^524/7 on Senora Fwy // Mount Chilliad^1! All police units are required to assist!"
senora242SilentAlarm = "^1^*A silent alarm has been triggered at the ^524/7 on Senora Fwy // Grand Senora Desert^1! All police units are required to assist!"
harmony24SilentAlarm = "^1^*A silent alarm has been triggered at the ^524/7 in Harmony^1! All police units are required to assist!"
sandy24SilentAlarm = "^1^*A silent alarm has been triggered at the ^524/7 in Sandy Shores^1! All police units are required to assist!"
chumash24SilentAlarm = "^1^*A silent alarm has been triggered at the ^524/7 in Chumash^1! All police units are required to assist!"
banhamcanyon24SilentAlarm = "^1^*A silent alarm has been triggered at the ^524/7 in Banham Canyon^1! All police units are required to assist!"
palomino24SilentAlarm = "^1^*A silent alarm has been triggered at the ^524/7 on Palomino Fwy^1! All police units are required to assist!"
vinewood24SilentAlarm = "^1^*A silent alarm has been triggered at the ^524/7 in Vinewood^1! All police units are required to assist!"
strawberry24SilentAlarm = "^1^*A silent alarm has been triggered at the ^524/7 in Strawberry^1! All police units are required to assist!"

sandyammoSilentAlarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Sandy Shores^1! All police units are required to assist!"
ammo68SilentAlarm = "^1^*A silent alarm has been triggered at the ^5Ammunation on Route 68^1! All police units are required to assist!"
chumashammoSilentAlarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Chumash^1! All police units are required to assist!"
palominoammoSilentAlarm = "^1^*A silent alarm has been triggered at the ^5Ammunation on Palomino Fwy^1! All police units are required to assist!"
hawickammoSilentAlarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Hawick^1! All police units are required to assist!"
littleseoulammoSilentAlarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Little Seoul^1! All police units are required to assist!"
pillboxammoSilentAlarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Pillbox Hill^1! All police units are required to assist!"
cypressammoSilentAlarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Cypress Flats^1! All police units are required to assist!"

grapeseedltdSilentAlarm = "^1^*A silent alarm has been triggered at the ^5LTD in Grapeseed^1! All police units are required to assist!"
richmanltdSilentAlarm = "^1^*A silent alarm has been triggered at the ^5LTD in Richman Glen^1! All police units are required to assist!"
littleseoulltdSilentAlarm = "^1^*A silent alarm has been triggered at the ^5LTD in Little Seoul^1! All police units are required to assist!"
davisltdSilentAlarm = "^1^*A silent alarm has been triggered at the ^5LTD in Davis^1! All police units are required to assist!"
mirrorparkltdSilentAlarm = "^1^*A silent alarm has been triggered at the ^5LTD in Mirror Park^1! All police units are required to assist!"

vespucchiliquorSilentAlarm = "^1^*A silent alarm has been triggered at the ^5Liquor Store in Vespucci Canals^1! All police units are required to assist!"
harmonyliquorSilentAlarm = "^1^*A silent alarm has been triggered at the ^5Liquor Store in Harmony^1! All police units are required to assist!"
```

**Version 3.0**&#x20;

Basically @Tiggythetiger fixed his original code and made it more pretty. He also made a new config file! You can change all values in the neat config.lua! Thanks so much Tiggy!

```
config = {
    timeToRob = 60, -- In seconds
    robbingStr = "Breaking into the Safe...",

    displayBlips = true, -- Makes it so when a robbery is started a blip is created and flashes.

    enableAmmunations = true, -- Enables all Ammunations to be robbed.
    enable247 = true, -- Enables all 24/7's to be robbed.
    enableGasStations = true, -- Enables all Gas Stations to be robbed.
    enableBanks = true, -- Enables all Banks to be robbed.
    enableLiquor = true, -- Enables all Liquor Stores to be robbed.

    bankcoords = {
        {name = "Paleto Bank", yeet = "C", alarm = "^1^*A silent alarm has been triggered at the ^5Blaine County Savings Bank in Paleto Bay^1! All police units are required to assist!", 
        x = -104.42, y = 6476.56, z=32.51-1.7},

        {name = "Harmony Bank", yeet = "C", alarm = "^1^*A silent alarm has been triggered at the ^5Fleeca Bank Harmony in Harmony^1! All police units are required to assist!", 
        x = 1177.32, y = 2711.79, z = 38.1 - 1},

        {name = "Banham Canyon Bank", yeet = "C", alarm = "^1^*A silent alarm has been triggered at the ^5Bank in Banham Canyon^1! All police units are required to assist!", 
        x = -2957.5, y = 480.97, z = 15.71 - 1},

        {name = "Pillbox Hill Bank", yeet = "C", alarm = "^1^*A silent alarm has been triggered at the ^5Bank in Pillbox Hill^1! All police units are required to assist!", 
        x = 146.46, y = -1044.67, z = 29.38 - 1},
    },

    ammunationcoords = {
        {name = "Paleto Ammunation", alarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Paleto Bay^1! All police units are required to assist!", 
        x = -334.27, y = 6082.13, z = 31.45 - 1},

        {name = "Sandy Ammunation", alarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Sandy Shores^1! All police units are required to assist!", 
        x = 1689.63, y = 3757.84, z = 34.71 - 1},

        {name = "Route 68 Ammunation", alarm = "^1^*A silent alarm has been triggered at the ^5Ammunation on Route 68^1! All police units are required to assist!", 
        x = -1121.77, y = 2697.31, z = 18.55 - 1},

        {name = "Chumash Ammunation", alarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Chumash^1! All police units are required to assist!", 
        x = -3174.94, y = 1084.96, z = 20.84 - 1},

        {name = "Palomino Fwy Ammunation", alarm = "^1^*A silent alarm has been triggered at the ^5Ammunation on Palomino Fwy^1! All police units are required to assist!", 
        x = 2571.7, y = 292.58, z = 108.73 - 1},

        {name = "Hawick Ammunation", alarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Hawick^1! All police units are required to assist!", 
        x = 254.94, y = -47.05, z = 69.94 - 1},

        {name = "Little Seoul Ammunation", alarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Little Seoul^1! All police units are required to assist!", 
        x = -666.1, y = -933.72, z = 21.83 - 1},

        {name = "Pillbox Hill Ammunation", alarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Pillbox Hill^1! All police units are required to assist!", 
        x = 12.62, y = -1105.23, z = 29.8 - 1},

        {name = "Cypress Flats Ammunation", alarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Cypress Flats^1! All police units are required to assist!", 
        x = 819.6, y = -2155.81, z = 29.62 - 1},

        {name = "Morningwood Ammunation", alarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in Morningwood^1! All police units are required to assist!", 
        x = -1303.41, y = -391.09, z = 36.7 - 1},

        {name = "La Mesa Ammunation", alarm = "^1^*A silent alarm has been triggered at the ^5Ammunation in La Mesa^1! All police units are required to assist!", 
        x = 846.1, y = -1035.17, z = 28.26 - 1},
    },

    shopcoords = {
        {name = "24/7 Senora Fwy // Mount Chilliad", alarm = "^1^*A silent alarm has been triggered at the ^524/7 on Senora Fwy // Mount Chilliad^1! All police units are required to assist!", 
        x = 1734.54, y = 6420.27, z = 35.04 - 1},

        {name = "24/7 on Senora Fwy // Grand Senora Desert", alarm = "^1^*A silent alarm has been triggered at the ^524/7 on Senora Fwy // Grand Senora Desert^1! All police units are required to assist!", 
        x = 2673.21, y = 3286.36, z = 55.24 - 1},

        {name = "Harmony 24/7", alarm = "^1^*A silent alarm has been triggered at the ^524/7 in Harmony^1! All police units are required to assist!", 
        x = 546.35, y = 2663.35, z = 42.16 - 1},

        {name = "Sandy 24/7", alarm = "^1^*A silent alarm has been triggered at the ^524/7 in Sandy Shores^1! All police units are required to assist!", 
        x = 1960.71, y = 3748.53, z = 32.36 - 1},

        {name = "Chumash 24/7", alarm = "^1^*A silent alarm has been triggered at the ^524/7 in Chumash^1! All police units are required to assist!", 
        x = -3249.52, y = 1004.41, z = 12.83 - 1},

        {name = "Banham Canyon 24/7", alarm = "^1^*A silent alarm has been triggered at the ^524/7 in Banham Canyon^1! All police units are required to assist!", 
        x = -3047.39, y = 585.85, z = 7.91 - 1},

        {name = "Palomino Fwy 24/7", alarm = "^1^*A silent alarm has been triggered at the ^524/7 on Palomino Fwy^1! All police units are required to assist!", 
        x = 2549.84, y = 384.93, z = 108.64 - 1},

        {name = "Vinewood 24/7", alarm = "^1^*A silent alarm has been triggered at the ^524/7 in Vinewood^1! All police units are required to assist!", 
        x = 377.99, y = 332.96, z = 103.57 - 1},

        {name = "Strawberry 24/7", alarm = "^1^*A silent alarm has been triggered at the ^524/7 in Strawberry^1! All police units are required to assist!", 
        x = 28.71, y = -1339.51, z = 29.5 - 1},
    },

    ltdcoords = {
        {name = "Grapeseed LTD", alarm = "^1^*A silent alarm has been triggered at the ^5LTD in Grapeseed^1! All police units are required to assist!", 
        x = 1707.27, y = 4919.77, z = 42.09 - 1},

        {name = "Richman Glen LTD", alarm = "^1^*A silent alarm has been triggered at the ^5LTD in Richman Glen^1! All police units are required to assist!", 
        x = -1828.57, y = 799.13, z = 138.20 - 1},

        {name = "Little Seoul LTD", alarm = "^1^*A silent alarm has been triggered at the ^5LTD in Little Seoul^1! All police units are required to assist!", 
        x = -709.11, y = -904.12, z = 19.22 - 1},

        {name = "Davis LTD", alarm = "^1^*A silent alarm has been triggered at the ^5LTD in Davis^1! All police units are required to assist!", 
        x = -42.99, y = -1748.79, z = 29.42 - 1},

        {name = "Mirror Park LTD", alarm = "^1^*A silent alarm has been triggered at the ^5LTD in Mirror Park^1! All police units are required to assist!", 
        x = 1160.38, y = -313.88, z = 69.21 - 1},
    },

    liquorcoords = {
        {name = "Vespucci Canals Liquor Store", alarm = "^1^*A silent alarm has been triggered at the ^5Liquor Store in Vespucci Canals^1! All police units are required to assist!", 
        x = -1220.25, y = -915.79, z = 11.33 - 1},

        {name = "Harmony Liquor Store", alarm = "^1^*A silent alarm has been triggered at the ^5Liquor Store in Harmony^1! All police units are required to assist!", 
        x = 1168.83, y = 2718.03, z = 37.16 - 1},
    }


}
```

**Download** [BadgerBankRobbery](https://github.com/TheWolfBadger/BadgerBankRobbery)


# VehicleTrustSystem

**Version 1.0**

It is here everyone! The first of it's kind (at least I think)! A vehicle restriction script that is just for personal vehicles! You have commands such as /trust, /untrust to trust and untrust players to use the vehicle you own.

This all works via a file called whitelist.json and it keeps track of every player's vehicles they are allowed to drive! If you run a huge huge server, this may not be the resource for you unless you have a developer capable of moving it to a database storage system... Other than that, this resource runs well for the smaller servers. I may look into adding an SQL option in the future though.

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

If they do not have access to your personal vehicle?:&#x20;

![](https://i.gyazo.com/224097368c55014475e89f25299d03ea.gif)

Some examples of messages gotten by running commands:&#x20;

![](https://i.gyazo.com/f982903a9c8deb6bee619340f4c8c9ce.png)

* **Commands**

`/trust [playerID] [spawncode] = Trust the specified player to your vehicle if you own it.`

`/untrust [playerID] [spawncode] = Opposite of /trust... Lol..`

`/vehicles = List the vehicles you have access to utilize`

![](https://i.gyazo.com/d89b1a0c98572b0bdcc2561d7d6a1dfd.png)

* **Admin Commands**

`/setOwner [playerID] [spawncode] = Set the owner of a personal vehicle`

`/clear [spawncode] = Gets rid of all the specified vehicle's data in case you messed up setOwner`

* **Permissions**

This gives permission to run Admin commands:

```
add_ace group.admin VehwlCommands.Access allow
```

* **Download**

[VehicleTrustSystem](https://github.com/TheWolfBadger/VehicleTrustSystem)


# PedTrustSystem

**Version 1.0**&#x20;

Basically, you ever want to give players access to their own personal ped, then trust and untrust others to use it? That's what this script is for! This script allows you to trust and untrust players to your "personal" ped.

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

![](https://i.gyazo.com/05afae9b0808ef3dce8734c9ea0f8dd6.gif)

![](https://i.gyazo.com/f6504163e6a1c7f4939c1b61cd2e50d4.png)

![](https://i.gyazo.com/17a885ccf6aa99692421e72dda5fd004.png)

![](https://i.gyazo.com/34cf1bd07f21a06b1475160755d38595.png)

![](https://i.gyazo.com/f1db42a35b6cbe167760eaf68d410b04.png)

**Commands**&#x20;

`/setPedOwner [player] [spawncode] - Give a player the ownership of a ped. This should only be allowed to be ran by staff members. Permission for it can be found below`

`/trustPed [player] [spawncode] - Trust a player to access your ped. Won't work if they don't own the ped.`

`/untrustPed [player] [spawncode] - Untrust a player your previously trusted to access your ped.`

`/peds - List the peds you have access to utilize.`

**Permissions** `add_ace group.admin PedTrustSystem.Access allow # To use /setPedOwner <id> <spawncode>`

**Download** [PedTrustSystem](https://github.com/TheWolfBadger/PedTrustSystem)


# BadgerVoting

**BadgerVoting**

This is a simple AOP voting script. Technically with the way it is designed, you could have it just be a voting script (just change the messages). Basically you can start AOP votes and have players actually vote for options to see what they want. It's quite simple, but the /aopvote command in another script I have never worked, so I put this one together.

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

`/startVote [seconds] [option1] [option2] [option3] [option4] [option5] - The amount of vote options you can have are unlimited. Basically every option is delimited by a space, so use "-" for things that usually require a space. (Example of what I mean is down in the Gifs below)`

`To use /startVote, add the ACE permission to the user group:`

```
BadgerVoting.Commands.startVote
```

`/vote [id] - Vote for the specified ID of an option`

![](https://i.gyazo.com/cedca744a66a6d91a3b38640341f7d98.gif)

![](https://i.gyazo.com/6185eb370c5e30df97997843e7bd3ab7.gif)

![](https://i.gyazo.com/e4233b65c95a74e7c1e1d054272ba8c2.png)

**Download** [BadgerVoting](https://github.com/TheWolfBadger/BadgerVoting)


# BadgerTracer

**BadgerTracer:** So you have players joining your server, VDMing/RDMing then leaving to avoid punishments don't you? Annoying as hell right? They then change their name, so the next time they login they can repeat the process again... Gosh, what an annoyance. That BS stops today. I introduce to the world, BadgerTracer. A script in which logs a player's name via IP within server memory. If they change their name, you'll be informed the next time they login. They thought you wouldn't know who they were, oh, but you do. RIP.

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

**Permissions:** `BadgerTracer.Access` Anybody with this permission can see the messages within the in-game chat.

**Pictures:**&#x20;

![](https://i.gyazo.com/1f5805926e014bb8b2f2a732de87865d.png)

![](https://i.gyazo.com/7caf45daecadd20af377ff02615855d3.png)

![](https://i.gyazo.com/70a250ff6a80b58bbc539f8efe944e45.png)

**Config:**&#x20;

Just place your webhook within the `''` and you'll be good to go :)

```
--- CONFIG ---
webhook = '';
```

**Download:** [BadgerTracer](https://github.com/TheWolfBadger/BadgerTracer)&#x20;

Make sure you give it a star and/or fork! Would very much appreciate it :)


# Fivem Keybase Anticheat

## Version 1.0

### How it works

Essentially this script protects your server events from being triggered by others from the client side of scripts (people with Lua executors). You will give the server events passwords, then to trigger the event, you must run it through the Keybase-Anticheat so it will verify it as a valid event triggered by you on the server-side. This is very useful considering nobody can exploit it from the client-side as they will not know the key you set for the event.

### Configuration

```
ProtectedServerEvents = {
	{'KB-AC:UnprotectedExample:OOC', 'KEY-FOR-EVENT'},
	{'EVENT', 'KEY-FOR-EVENT'},
	{'EVENT', 'KEY-FOR-EVENT'},
	{'EVENT', 'KEY-FOR-EVENT'},
	{'EVENT', 'KEY-FOR-EVENT'},
}
BlacklistedServerEvents = {
  "antilynxr4:detect",
  "ynx8:anticheat",
  "antilynx8r4a:anticheat",
  "lynx8:anticheat",
}
```

* You'll see this configuration section above within the `server.lua` of Keybase-Anticheat
* You'll want to put the event name within `'Event'` and then the password/key you want for the event where `KEY-FOR-EVENT` is
* `BlacklistedServerEvents` is a list of popular server events hackers trigger with their common Lua executors when joining servers and/or on servers
  * You'll want to add more events to this list
  * Only add events here that don't actually exist, but are known to be events hackers will commonly trigger
    * You can find more of these possible events here: <https://gist.github.com/d0p3t/1ad255374d68fcc3f252e13015b028cb>
* Once you set all of these up, you'll then need to know how to trigger your events within your script

### How to trigger my events?

* Now you have set up a protection for triggering your server events, but how do you make your server events valid? You do this by going through the Keybase-Anticheat API
* We will show an example using the event in the first line of our configuration above
* We will use `{'KB-AC:UnprotectedExample:OOC', 'KEY-FOR-EVENT'},`&#x20;
* We want to trigger this event
* We would do the following to successfully trigger the server event without setting off our Anticheat

```
TriggerEvent('KB-AC:TriggerServerEvent', 'KEY-FOR-EVENT', 'KB-AC:UnprotectedExample:OOC', table.concat(args, ' '))
```

* By doing it this way, we passed the key for the event, then this lets the Anticheat know it is a valid event being used

### Download

{% embed url="<https://github.com/TheWolfBadger/Fivem-Keybase-Anticheat>" %}


# DiscordReports

## Version 1.0

### What is it?

DiscordReports is a script I made way back in August of 2019, but I never actually got around to releasing it. I know there is another discord report script on the forums made by my old good friend @ApolloCore which you can find below. However, my script is a little different in the way it works and has some quite unique features I thought would be useful. So therefore in my quest to become the #1 open source developer on GitHub, I am releasing it today for your use cases. Jokes aside, it's a really cool and nifty script that can really help you staffing your server.

{% embed url="<https://forum.cfx.re/t/release-discord-integration-simple-player-report-system-w-discord-webhook/630392>" %}

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### Images

<div align="left"><img src="https://i.gyazo.com/de1029ba48dc4b05d40993bf64a16add.png" alt="Report Sent Confirmation"></div>

<div align="left"><img src="https://i.gyazo.com/54a7edea9d7fb280c9b0c982e6403ae2.png" alt="Discord Webhook Report [displayIdentifiers = true]"></div>

<div align="left"><img src="https://i.gyazo.com/a39666deca623de7df24bc0db99fc9b8.png" alt="Discord Webhook Report [displayIdentifiers = false]"></div>

<div align="left"><img src="https://i.gyazo.com/54dac4c18706dbdeda6830656c0508fa.png" alt="What a staff member will see --- (Reporter Name) [ID Reported]"></div>

### Installation

* You will need to find the configuration section within the `server.lua`
* You will see the below block of code
* You can choose to put `displayIdentifiers` as `true` or `false`
  * Refer to above `Images` of what this will do&#x20;
* You also need to set up the `webhookURL` for where the script will post the reports within Discord
  * Refer to <https://docs.badger.store/fivem-general-help/setting-up-a-discord-webhook>
* You will need to give your staff group's the permission `BadgerReports.See` in order to see the action reports within the server
  * Refer to <https://docs.badger.store/fivem-general-help/ace-permissions>

```
-- Config --
webhookURL = ''
displayIdentifiers = true;
```

### Download

{% embed url="<https://github.com/TheWolfBadger/DiscordReports>" %}


# Badger-Priorities

## Badger-Priorities

### What is it?

So it's just a priority cooldown script... I know what you're thinking. This is already a thing, it's already made! Well actually I found problems with the ones I found on the Fivem forums, so I decided to make a new one with some extra features. Another feature is that when the cooldowns are on (priority in progress, priorities on hold, or cooldown is above 0), then a message will be displayed to players driving a car 80 MPH or faster. This can be disabled in the configuration file too if you don't want this feature though.

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### Commands

&#x20;`/cooldown <time>` Sets the amount of time priority cooldown is on (minutes)&#x20;

`/inprogress` Sets the priority to in progress. Use this when a priority begins.&#x20;

`/onhold` This puts all priorities on hold. It is an alternative to PeaceTime except players are able to attack others.&#x20;

`/resetpcd` Changes Priority Cooldown back to 0 Minutes.

### Permissions

`add_ace group.trialmoderator Badger-Priorities.ResetPCD allow` - Allowed to use /resetpcd

`add_ace group.trialmoderator Badger-Priorities.InProgress allow` - Allowed to use /inprogress

`add_ace group.trialmoderator Badger-Priorities.OnHold allow` - Allowed to use /onhold

`add_ace group.trialmoderator Badger-Priorities.Cooldown allow` - Allowed to use /cooldown

`add_ace group.trialmoderator Badger-Priorities.Commands allow` - Allowed to use all commands in the script

### Screenshots

![](https://i.gyazo.com/343b467912371eb048f9242d4f3ebc03.png)

![](https://i.gyazo.com/3111b17b03d45248b19b233f75505428.png)

![](https://i.gyazo.com/985329e40e72f10a22e6801b72246957.png)

![](https://i.gyazo.com/7210b532e55502b948f0ad2e50c3e5cb.png)

![](https://i.gyazo.com/b58d0d94b3b149bb48fea90a83bf58ff.png)

![](https://i.gyazo.com/35eb0c6207d57444803517cacfea1678.png)

![](https://i.gyazo.com/877b6cc2c933453c272da2c27efdeaf5.gif)

### Configuration

```
Config = {
	prefix = "^7[^1Badger-Priorities^7] ^3",
	Options = {
		EnableSpeedMessage = true,
		EnablePCDMessage = true,
		EnableHoldMessage = true,
		EnableProgressMessage = true,
		EnableCooldownMessage = true,
		AlwaysDisplay = true, -- Always display the priority cooldown text even with 0 mins left?
		CooldownDisplay = "~w~Priority Cooldown: ~r~{MINS} ~w~mins",
		InProgressDisplay = "~w~Priority Cooldown: ~g~Priority in Progress",
		OnHoldDisplay = "~w~Priority Cooldown: ~b~Priorities are on Hold",
		-- TooFastDisplay triggers when a car is going over 80 MPH and priorities are in progress, on hold, or a cooldown is active 
		TooFastDisplay = "~r~NOTICE: ~b~You cannot run from police currently. You are risking staff punishment!",
		resetDisplay = "~r~Cooldown: ~b~None"
	},
	Messages = {
		CooldownMessage = 'A priority was just conducted... The cooldown has been activated. ' -- You can also use {MINS} parameter here
		.. '^1You cannot run from police or cause any priorities (violent RP) until the cooldown has concluded!',
		InProgressMessage = 'There is a priority in progress... ^1You cannot run from police or cause any priorities (violent RP) until priorities are off hold!',
		OnHoldMessage = 'Priorities are now on hold... ^1You cannot run from police or cause any priorities (violent RP) until priorities are off hold!',
		resetMessage = 'Priorities Have Been Reset!'
	}, 
	DisplayLocation = {
		x = .50,
		y = .005
	}
}
```

### Download

{% embed url="<https://github.com/JaredScar/Badger-Priorities>" %}


# Badssentials

## Badssentials

### What is it?

Badssentials is essentially the most essential script you need. I saw multiple scripts split up and never saw a single script like this. I figured, I might as well make one, so I did. Badssentials includes AOP, PeaceTime, postal waypointing, and configurable placeholder watermarks! The amount of possibilities is endless with this script! Make sure you take a look at `Screenshots` to see what you can make with this!

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### Screenshots

![What you can make with Badssentials](https://i.gyazo.com/07b89a6d03ac42f4cf496265d1e55c4f.png)

<div align="center"><img src="https://i.gyazo.com/557c43a66a594cfda785ffeda51c8fc3.gif" alt="A /toggle-hud command that works with Badger-Priorities too"></div>

![Death screen when a person dies](https://i.gyazo.com/8b67ad7591a9b911604a944603788836.gif)

### Commands

`/postal <code>` - Sets your waypoint to this postal code's location

`/postal` - Cancels your waypoint

`/aop <zone>` - Sets the AOP to text you put in \<zone>

`/peacetime` - Toggles PeaceTime on and off

`/pt` - Toggles PeaceTime on and off

`/toggle-hud` - Toggles your HUD on and off

`/revive` - Revive yourself if you are dead

`/revive <id>` - Revive the player with this ID

`/respawn` - Respawn yourself if you are dead

`/announce <msg>` - Announce a message to the server&#x20;

### Permissions

`Badssentials.AOP` - Gives permission to use the /aop command

`Badssentials.PeaceTime` - Gives permission to use both /peacetime and /pt command

`Badssentials.Bypass.Revive` - Gives permission to bypass wait-time for /revive&#x20;

`Badssentials.Bypass.Respawn` - Gives permission to bypass wait-time for /respawn

`Badssentials.Announce` - Gives permission to use the /announce command

### Configuration

```
Config = {
	Prefix = '^5[^1Badssentials^5] ^3',
	AnnouncementHeader = '~b~[~p~NoirRP Announcement~b~]',
	AnnounceDisplayTime = 15, -- How many seconds should announcements display for?
	Revive_Delay = 60, -- Set to 0 to disable 
	Respawn_Delay = 30, -- Set to 0 to disable 
	Displays = {
		['Noir RP Server | Discord'] = {
			x = .800,
			y = .01,
			display = "~g~Noir RP ~w~| discord.gg/BB68c3d",
			textScale = .55,
			enabled = true
		},
		['Compass Location'] = {
			x = .165,
			y = .85,
			display = "~w~| ~g~{COMPASS} ~w~|",
			textScale = 1.0,
			enabled = true
		},
		['Street Location'] = {
			x = .22,
			y = .855,
			display = "~g~{STREET_NAME}",
			textScale = .45,
			enabled = true
		},
		['City Location'] = {
			x = .22,
			y = .875,
			display = "~w~{CITY}",
			textScale = .45,
			enabled = true
		},
		['Nearest Postal'] = {
			x = .165,
			y = .91,
			display = "~w~Nearest ~g~Postal: ~w~{NEAREST_POSTAL} (~w~{NEAREST_POSTAL_DISTANCE}m~w~)",
			textScale = .4,
			enabled = true
		},
		['Time & Date'] = {
			x = .165,
			y = .93,
			display = "~g~Time (EST): ~w~{EST_TIME} ~g~| Date: ~w~{US_MONTH}~g~/~w~{US_DAY}~g~/~w~{US_YEAR}",
			textScale = .4,
			enabled = true
		},
		['AOP & PeaceTime'] = {
			x = .165,
			y = .95,
			display = "~w~Current ~g~AOP: {CURRENT_AOP} ~g~| ~w~PeaceTime: {PEACETIME_STATUS}",
			textScale = .4,
			enabled = true
		}
	}
}
Postals = {
	{code="3001",y=4938.10546875,x=-1157.1995849609},{code="3002",y=5300.2319335938,x=-524.3857421875},{code="3003",y=5575.2250976563,x=-745.71496582031},{code="3004",y=5784.3740234375,x=-662.01904296875},{code="3005",y=6009.9873046875,x=-468.88970947266},{code="3006",y=6179.419921875,x=-471.35647583008},{code="3007",y=6117.421875,x=-350.86978149414},{code="3008",y=6058.3271484375,x=-211.97036743164},{code="3009",y=6302.3364257813,x=-452.68310546875},{code="3010",y=6231.6069335938,x=-362.19027709961},{code="3011",y=6303.26171875,x=-297.83703613281},{code="3012",y=6255.7983398438,x=-199.59306335449},{code="3013",y=6192.8037109375,x=-99.406196594238},{code="3014",y=6428.1215820313,x=-260.72406005859},{code="3015",y=6371.9326171875,x=-212.84980773926},{code="3016",y=6372.8686523438,x=-97.161865234375},{code="3017",y=6320.5561523438,x=24.29870223999},{code="3018",y=6574.2983398438,x=-139.98452758789},{code="3019",y=6500.6508789063,x=-94.954879760742},{code="3020",y=6451.2612304688,x=-14.174062728882},{code="3021",y=6389.2724609375,x=121.82452392578},{code="3022",y=6647.8134765625,x=-42.935974121094},{code="3023",y=6587.7592773438,x=-11.513336181641},{code="3024",y=6526.7407226563,x=71.212539672852},{code="3025",y=6649.6870117188,x=126.84742736816},{code="3026",y=6625.439453125,x=348.04385375977},{code="3027",y=6490.7919921875,x=419.14181518555},{code="3028",y=6550.9853515625,x=1322.1228027344},{code="3029",y=6326.28125,x=1455.2196044922},{code="3030",y=6437.6157226563,x=1685.1595458984},{code="3031",y=5583.3940429688,x=2295.7517089844},{code="2001",y=4258.8334960938,x=-2178.1931152344},{code="2002",y=4319.2548828125,x=-1634.7104492188},{code="2003",y=4522.8037109375,x=-1154.7565917969},{code="2004",y=4296.00390625,x=-624.09436035156},{code="2005",y=4355.1645507813,x=-141.28918457031},{code="2006",y=4580.4780273438,x=295.6540222168},{code="2007",y=4180.4365234375,x=826.40551757813},{code="2008",y=4366.3447265625,x=1286.6721191406},{code="2009",y=4854.3540039063,x=1615.2026367188},{code="2010",y=4775.46484375,x=1632.4442138672},{code="2011",y=4695.1557617188,x=1654.5745849609},{code="2012",y=4535.265625,x=1726.0280761719},{code="2013",y=4927.5654296875,x=1725.6357421875},{code="2014",y=4855.7080078125,x=1728.0529785156},{code="2015",y=4777.5185546875,x=1736.1376953125},{code="2016",y=4719.7446289063,x=1756.1616210938},{code="2017",y=4647.1538085938,x=1754.3770751953},{code="2018",y=4602.0727539063,x=1802.5849609375},{code="2019",y=5019.7221679688,x=1837.4025878906},{code="2020",y=4925.3188476563,x=1899.0174560547},{code="2021",y=4631.6372070313,x=1953.5357666016},{code="2022",y=5172.7802734375,x=1950.373046875},{code="2023",y=4786.7739257813,x=2135.2263183594},{code="2024",y=4983.2602539063,x=2165.8264160156},{code="2025",y=5007.197265625,x=2368.9892578125},{code="2026",y=4666.9799804688,x=2562.9858398438},{code="2027",y=5188.94140625,x=3308.767578125},{code="1001",y=2349.3342285156,x=-2550.39453125},{code="1002",y=3377.9497070313,x=-2304.5493164063},{code="1003",y=2635.1474609375,x=-2089.220703125},{code="1004",y=2577.0300292969,x=-1274.3171386719},{code="1005",y=2711.8854980469,x=-1130.5263671875},{code="1006",y=2876.7561035156,x=-485.82522583008},{code="1007",y=3661.3662109375,x=-15.28427028656},{code="1008",y=3398.0107421875,x=345.8782043457},{code="1009",y=3572.2087402344,x=351.85784912109},{code="1010",y=3554.6437988281,x=457.79168701172},{code="1011",y=3480.3251953125,x=659.57427978516},{code="1012",y=3595.0888671875,x=876.22930908203},{code="1013",y=3663.6970214844,x=925.42852783203},{code="1014",y=3590.9748535156,x=974.62255859375},{code="1015",y=3601.75390625,x=1266.9050292969},{code="1016",y=3628.4321289063,x=1392.4855957031},{code="1017",y=3769.4313964844,x=1495.1656494141},{code="1018",y=3678.767578125,x=1516.5502929688},{code="1019",y=3569.0593261719,x=1564.6318359375},{code="1020",y=3312.04296875,x=1732.3898925781},{code="1021",y=3806.9226074219,x=1627.5222167969},{code="1022",y=3742.4670410156,x=1677.7314453125},{code="1023",y=3656.1884765625,x=1658.7502441406},{code="1024",y=3697.3784179688,x=1731.5983886719},{code="1025",y=3612.0498046875,x=1716.2542724609},{code="1026",y=3864.3483886719,x=1725.1228027344},{code="1027",y=3803.8784179688,x=1765.2497558594},{code="1028",y=3742.0070800781,x=1804.6389160156},{code="1029",y=3682.2900390625,x=1841.1955566406},{code="1030",y=3911.8515625,x=1814.4809570313},{code="1031",y=3848.5854492188,x=1835.4071044922},{code="1032",y=3778.177734375,x=1876.2606201172},{code="1033",y=3719.8615722656,x=1907.8697509766},{code="1034",y=3900.4033203125,x=1913.1685791016},{code="1035",y=3824.3405761719,x=1951.1672363281},{code="1036",y=3766.7221679688,x=1984.19140625},{code="1037",y=3528.4833984375,x=2076.2502441406},{code="1038",y=3480.2133789063,x=2215.1064453125},{code="1039",y=3948.63671875,x=2343.3937988281},{code="1040",y=3777.9990234375,x=2485.1499023438},{code="1041",y=4083.6472167969,x=2433.5891113281},{code="1042",y=4095.6848144531,x=2551.1811523438},{code="1043",y=4216.4931640625,x=2501.0229492188},{code="1044",y=4281.84765625,x=2546.1254882813},{code="1045",y=4239.150390625,x=2637.4304199219},{code="1046",y=4128.2592773438,x=2711.6701660156},{code="1047",y=4316.6225585938,x=2731.896484375},{code="1048",y=4423.2265625,x=2719.3979492188},{code="1049",y=4456.609375,x=2848.3544921875},{code="1050",y=4377.6967773438,x=2880.6806640625},{code="1051",y=4632.841796875,x=2884.5471191406},{code="1052",y=4578.7763671875,x=3715.103515625},{code="1053",y=4493.4497070313,x=3797.9001464844},{code="901",y=1293.5513916016,x=-3201.8759765625},{code="902",y=1216.0465087891,x=-3213.9577636719},{code="903",y=1152.0489501953,x=-3233.6806640625},{code="904",y=1091.4372558594,x=-3252.9572753906},{code="905",y=1008.426574707,x=-3265.4838867188},{code="906",y=913.53302001953,x=-3252.5703125},{code="907",y=1129.8149414063,x=-3157.0576171875},{code="908",y=1067.1193847656,x=-3174.6633300781},{code="909",y=1435.5328369141,x=-2809.2565917969},{code="910",y=1897.9064941406,x=-2607.009765625},{code="911",y=2017.0283203125,x=-1947.3098144531},{code="912",y=2810.4892578125,x=-317.1279296875},{code="913",y=2525.0512695313,x=-297.96936035156},{code="914",y=2798.5014648438,x=-123.50941467285},{code="915",y=2872.9191894531,x=-44.841407775879},{code="916",y=2799.7905273438,x=55.50411605835},{code="917",y=3131.6091308594,x=175.56591796875},{code="918",y=3058.5913085938,x=166.85472106934},{code="919",y=2787.7529296875,x=191.34045410156},{code="920",y=2588.626953125,x=239.65928649902},{code="921",y=3103.6450195313,x=254.8483581543},{code="922",y=2985.4584960938,x=360.26403808594},{code="923",y=2960.2287597656,x=443.1474609375},{code="924",y=2860.2282714844,x=311.90908813477},{code="925",y=2624.3161621094,x=353.99685668945},{code="926",y=2581.822265625,x=375.78540039063},{code="927",y=2591.0922851563,x=475.904296875},{code="928",y=2660.0766601563,x=554.8154296875},{code="929",y=2604.2980957031,x=571.32580566406},{code="930",y=2766.197265625,x=602.42785644531},{code="931",y=2525.8842773438,x=734.41259765625},{code="932",y=2325.4072265625,x=728.35961914063},{code="933",y=2167.4350585938,x=825.84948730469},{code="934",y=2875.3527832031,x=856.36218261719},{code="935",y=2724.3225097656,x=997.20190429688},{code="936",y=2649.3203125,x=981.42303466797},{code="937",y=2652.0229492188,x=1044.6373291016},{code="938",y=2308.9228515625,x=1049.3106689453},{code="939",y=2649.26171875,x=1120.7060546875},{code="940",y=2735.0209960938,x=1201.6359863281},{code="941",y=2651.9516601563,x=1200.8491210938},{code="942",y=2752.53515625,x=1331.0969238281},{code="943",y=2167.517578125,x=1364.7321777344},{code="944",y=2798.8046875,x=1446.0278320313},{code="945",y=2227.029296875,x=1561.7385253906},{code="946",y=2900.6560058594,x=1595.3820800781},{code="947",y=2588.3059082031,x=1689.3629150391},{code="948",y=3099.1669921875,x=1771.2248535156},{code="949",y=3032.9753417969,x=1984.8768310547},{code="950",y=2904.5712890625,x=2056.9135742188},{code="951",y=3175.8649902344,x=2083.9645996094},{code="952",y=3332.0219726563,x=2163.9543457031},{code="953",y=3325.3828125,x=2376.3032226563},{code="954",y=3161.3205566406,x=2375.4978027344},{code="955",y=3444.4265136719,x=2500.552734375},{code="956",y=3480.1342773438,x=2703.6389160156},{code="957",y=3302.751953125,x=2657.8728027344},{code="958",y=3206.134765625,x=2576.388671875},{code="959",y=2566.7009277344,x=2341.2834472656},{code="960",y=2593.2197265625,x=2532.52734375},{code="961",y=3490.6088867188,x=2958.2133789063},{code="962",y=2961.0805664063,x=2903.1413574219},{code="963",y=3851.7277832031,x=3540.4895019531},{code="801",y=727.49298095703,x=-3133.0739746094},{code="802",y=657.52075195313,x=-3103.111328125},{code="803",y=613.66979980469,x=-3075.9448242188},{code="804",y=562.04333496094,x=-3057.9353027344},{code="805",y=508.97872924805,x=-3058.3159179688},{code="806",y=456.63592529297,x=-3076.3896484375},{code="807",y=391.56103515625,x=-3101.5087890625},{code="808",y=339.94281005859,x=-3112.5197753906},{code="809",y=290.41351318359,x=-3130.58984375},{code="810",y=226.77479553223,x=-3123.1892089844},{code="811",y=66.97875213623,x=-2999.1416015625},{code="812",y=741.36401367188,x=-2991.2429199219},{code="813",y=644.49810791016,x=-2953.4406738281},{code="814",y=466.29776000977,x=-2934.0209960938},{code="815",y=404.0383605957,x=-2940.0712890625},{code="816",y=278.16241455078,x=-2258.9624023438},{code="817",y=809.28607177734,x=-1807.1549072266},{code="818",y=651.705078125,x=-1993.0378417969},{code="819",y=595.24615478516,x=-2012.15234375},{code="820",y=550.56243896484,x=-2026.0506591797},{code="821",y=500.66088867188,x=-2034.6998291016},{code="822",y=444.19647216797,x=-2027.5451660156},{code="823",y=377.19348144531,x=-2017.7687988281},{code="824",y=316.75762939453,x=-2013.2709960938},{code="825",y=252.41906738281,x=-1996.9548339844},{code="826",y=206.4497833252,x=-1978.0290527344},{code="827",y=165.70098876953,x=-1955.1405029297},{code="828",y=122.37518310547,x=-1913.8601074219},{code="829",y=648.15466308594,x=-1875.0747070313},{code="830",y=593.49920654297,x=-1905.2770996094},{code="831",y=546.6064453125,x=-1925.5405273438},{code="832",y=441.55688476563,x=-1935.1442871094},{code="833",y=402.51373291016,x=-1916.3543701172},{code="834",y=360.62469482422,x=-1902.5726318359},{code="835",y=300.27200317383,x=-1903.6770019531},{code="836",y=253.40664672852,x=-1894.8408203125},{code="837",y=204.42762756348,x=-1863.98828125},{code="838",y=443.55130004883,x=-1805.8703613281},{code="839",y=300.18054199219,x=-1838.916015625},{code="840",y=330.66928100586,x=-1781.8273925781},{code="841",y=360.45956420898,x=-1728.2764892578},{code="842",y=374.64520263672,x=-1664.080078125},{code="843",y=218.75659179688,x=-1639.2198486328},{code="844",y=828.69781494141,x=-1538.771484375},{code="845",y=402.57580566406,x=-1537.548828125},{code="846",y=535.59680175781,x=-1516.1257324219},{code="847",y=426.69454956055,x=-1474.0634765625},{code="848",y=567.76055908203,x=-1462.7553710938},{code="849",y=492.15582275391,x=-1459.5189208984},{code="850",y=585.38360595703,x=-1387.2258300781},{code="851",y=519.33111572266,x=-1388.5043945313},{code="852",y=441.68988037109,x=-1409.9630126953},{code="853",y=594.35089111328,x=-1314.9973144531},{code="854",y=544.96209716797,x=-1327.8444824219},{code="855",y=488.00241088867,x=-1340.6954345703},{code="856",y=431.55682373047,x=-1338.4265136719},{code="857",y=672.44427490234,x=-1274.6931152344},{code="858",y=617.46813964844,x=-1245.2126464844},{code="859",y=503.05047607422,x=-1283.2934570313},{code="860",y=439.55072021484,x=-1249.7810058594},{code="861",y=661.79766845703,x=-1178.4837646484},{code="862",y=581.11590576172,x=-1179.7543945313},{code="863",y=501.97787475586,x=-1181.5584716797},{code="864",y=440.97116088867,x=-1140.0174560547},{code="865",y=805.79510498047,x=-1154.3947753906},{code="866",y=724.61206054688,x=-1133.9838867188},{code="867",y=607.1767578125,x=-1114.087890625},{code="868",y=537.60321044922,x=-1098.7233886719},{code="869",y=489.72360229492,x=-1067.2468261719},{code="870",y=439.80783081055,x=-1011.0524902344},{code="871",y=816.91455078125,x=-1076.4261474609},{code="872",y=741.80963134766,x=-1074.1765136719},{code="873",y=689.38781738281,x=-1048.7442626953},{code="874",y=567.39105224609,x=-1010.6953735352},{code="875",y=529.04888916016,x=-983.22827148438},{code="876",y=463.48492431641,x=-898.82684326172},{code="877",y=829.03680419922,x=-987.22875976563},{code="878",y=751.84381103516,x=-997.12158203125},{code="879",y=672.67785644531,x=-967.66253662109},{code="880",y=603.607421875,x=-917.04614257813},{code="881",y=532.03741455078,x=-917.29620361328},{code="882",y=542.07922363281,x=-833.88854980469},{code="883",y=481.57461547852,x=-806.93255615234},{code="884",y=827.77227783203,x=-906.47698974609},{code="885",y=763.24426269531,x=-890.11663818359},{code="886",y=680.55010986328,x=-873.76550292969},{code="887",y=666.43908691406,x=-797.44415283203},{code="888",y=576.69470214844,x=-751.33190917969},{code="889",y=500.55163574219,x=-743.53308105469},{code="890",y=793.35217285156,x=-783.10540771484},{code="891",y=657.78405761719,x=-716.87322998047},{code="892",y=530.25390625,x=-664.23413085938},{code="893",y=863.29602050781,x=-648.90368652344},{code="894",y=779.59210205078,x=-633.57360839844},{code="895",y=719.57836914063,x=-638.88598632813},{code="896",y=647.9873046875,x=-636.62658691406},{code="897",y=553.20501708984,x=-587.50799560547},{code="898",y=814.25256347656,x=-560.58245849609},{code="899",y=767.3818359375,x=-520.02551269531},{code="700",y=700.64111328125,x=-571.45959472656},{code="701",y=637.80151367188,x=-561.36743164063},{code="702",y=590.93304443359,x=-539.97625732422},{code="703",y=1140.2042236328,x=-433.81268310547},{code="704",y=691.09136962891,x=-474.76422119141},{code="705",y=611.43249511719,x=-465.47528076172},{code="706",y=640.12591552734,x=-400.73538208008},{code="707",y=1908.4576416016,x=-96.335205078125},{code="708",y=987.76916503906,x=-198.64361572266},{code="709",y=882.60046386719,x=-167.36044311523},{code="710",y=674.24920654297,x=-309.75509643555},{code="711",y=595.60076904297,x=-318.87194824219},{code="712",y=987.53381347656,x=-75.180236816406},{code="713",y=823.92901611328,x=-59.842529296875},{code="714",y=635.92706298828,x=-218.04833984375},{code="715",y=576.41967773438,x=-216.50061035156},{code="716",y=575.33795166016,x=-130.02856445313},{code="717",y=1128.6805419922,x=137.03723144531},{code="718",y=754.77294921875,x=236.26745605469},{code="719",y=1275.2038574219,x=701.95947265625},{code="720",y=1815.8348388672,x=1260.0666503906},{code="721",y=1697.9013671875,x=1561.1260986328},{code="722",y=1089.2875976563,x=1368.2760009766},{code="723",y=755.73461914063,x=1526.998046875},{code="724",y=2307.5356445313,x=2103.1372070313},{code="725",y=1947.3375244141,x=2232.0747070313},{code="726",y=1751.8459472656,x=2287.455078125},{code="727",y=1591.4840087891,x=2460.3469238281},{code="728",y=1543.1358642578,x=2741.904296875},{code="601",y=-401.70004272461,x=-2170.1918945313},{code="602",y=-320.08056640625,x=-2095.6044921875},{code="603",y=-291.93835449219,x=-1993.8319091797},{code="604",y=-482.5094909668,x=-2045.9814453125},{code="605",y=-543.56640625,x=-1966.7110595703},{code="606",y=-585.84185791016,x=-1925.0095214844},{code="607",y=-623.39849853516,x=-1879.5549316406},{code="608",y=-657.19378662109,x=-1837.8598632813},{code="609",y=-697.56420898438,x=-1789.5888671875},{code="610",y=-837.46893310547,x=-1627.7038574219},{code="611",y=-1027.12109375,x=-1616.0487060547},{code="612",y=-1212.0773925781,x=-1831.5185546875},{code="613",y=-357.86618041992,x=-1857.3803710938},{code="614",y=-437.69091796875,x=-1872.9219970703},{code="615",y=-402.02850341797,x=-1786.1512451172},{code="616",y=-471.51422119141,x=-1708.7886962891},{code="617",y=-524.11822509766,x=-1655.7954101563},{code="618",y=-610.51202392578,x=-1541.7784423828},{code="619",y=-671.56671142578,x=-1475.6530761719},{code="620",y=-702.57769775391,x=-1434.8984375},{code="621",y=-748.59619140625,x=-1380.9565429688},{code="622",y=-874.68371582031,x=-1421.8699951172},{code="623",y=-930.08355712891,x=-1506.8865966797},{code="624",y=-414.65509033203,x=-1668.0230712891},{code="625",y=-426.90246582031,x=-1557.7833251953},{code="626",y=-533.96380615234,x=-1528.2631835938},{code="627",y=-544.32574462891,x=-1441.5015869141},{code="628",y=-621.32452392578,x=-1389.4838867188},{code="629",y=-672.78570556641,x=-1392.0194091797},{code="630",y=-718.05810546875,x=-1318.2437744141},{code="631",y=-285.54614257813,x=-1684.1650390625},{code="632",y=-357.72055053711,x=-1615.5467529297},{code="633",y=-271.11175537109,x=-1560.7474365234},{code="634",y=-330.95303344727,x=-1495.98046875},{code="635",y=-380.83596801758,x=-1449.6312255859},{code="636",y=-484.35565185547,x=-1376.4467773438},{code="637",y=-584.837890625,x=-1304.0133056641},{code="638",y=-658.45391845703,x=-1244.6477050781},{code="639",y=55.56721496582,x=-1683.7844238281},{code="640",y=11.84765625,x=-1635.1313476563},{code="641",y=-40.336242675781,x=-1594.1485595703},{code="642",y=-98.619743347168,x=-1560.8156738281},{code="643",y=-186.05480957031,x=-1485.3469238281},{code="644",y=-254.33685302734,x=-1433.6146240234},{code="645",y=-321.81958007813,x=-1379.6147460938},{code="646",y=-418.45513916016,x=-1309.513671875},{code="647",y=-462.97174072266,x=-1124.4045410156},{code="648",y=121.23416137695,x=-1531.9514160156},{code="649",y=18.461059570313,x=-1554.6354980469},{code="650",y=28.417236328125,x=-1479.9135742188},{code="651",y=-49.037536621094,x=-1478.8175048828},{code="652",y=-116.52038574219,x=-1420.2139892578},{code="653",y=-177.88665771484,x=-1360.0806884766},{code="654",y=-229.92269897461,x=-1302.8356933594},{code="655",y=-285.25299072266,x=-1273.4992675781},{code="656",y=-377.30487060547,x=-1232.4984130859},{code="657",y=-110.79866027832,x=-1331.1934814453},{code="658",y=-185.93663024902,x=-1178.2591552734},{code="659",y=-334.69082641602,x=-1105.8634033203},{code="660",y=-416.73733520508,x=-1027.3298339844},{code="661",y=328.47198486328,x=-1283.0910644531},{code="662",y=54.734966278076,x=-1189.9625244141},{code="663",y=-235.88246154785,x=-1058.5267333984},{code="664",y=-276.53463745117,x=-984.58038330078},{code="665",y=-353.22067260742,x=-907.56323242188},{code="666",y=-427.62072753906,x=-859.69799804688},{code="667",y=370.50329589844,x=-1136.1538085938},{code="668",y=303.79638671875,x=-1113.599609375},{code="669",y=-168.79837036133,x=-935.3955078125},{code="670",y=-223.23612976074,x=-876.76428222656},{code="671",y=-368.15795898438,x=-777.52868652344},{code="672",y=-404.23446655273,x=-701.28045654297},{code="673",y=363.22573852539,x=-1037.5124511719},{code="674",y=304.93032836914,x=-1037.9509277344},{code="675",y=228.22996520996,x=-1031.5002441406},{code="676",y=149.99592590332,x=-989.01538085938},{code="677",y=114.13235473633,x=-968.74969482422},{code="678",y=62.731418609619,x=-942.31646728516},{code="679",y=24.365104675293,x=-919.74987792969},{code="680",y=-40.053043365479,x=-861.88134765625},{code="681",y=-117.66655731201,x=-825.42449951172},{code="682",y=-184.25291442871,x=-783.73205566406},{code="683",y=-307.73989868164,x=-709.78015136719},{code="684",y=386.08828735352,x=-944.80895996094},{code="685",y=317.81390380859,x=-968.25262451172},{code="686",y=203.56060791016,x=-928.0654296875},{code="687",y=111.54509735107,x=-902.43280029297},{code="688",y=52.463733673096,x=-875.24945068359},{code="689",y=368.33419799805,x=-874.88427734375},{code="690",y=314.63049316406,x=-876.06768798828},{code="691",y=251.7301940918,x=-831.26519775391},{code="692",y=175.02917480469,x=-794.89886474609},{code="693",y=112.1298828125,x=-801.43463134766},{code="694",y=-1.3726816177368,x=-775.01611328125},{code="695",y=-66.570045471191,x=-742.48254394531},{code="696",y=-143.27070617676,x=-694.59838867188},{code="697",y=-259.83947753906,x=-625.99719238281},{code="698",y=-344.18783569336,x=-574.2646484375},{code="699",y=-417.8034362793,x=-572.40075683594},{code="500",y=411.05798339844,x=-816.73291015625},{code="501",y=329.6867980957,x=-782.22149658203},{code="502",y=261.98202514648,x=-750.27630615234},{code="503",y=180.52305603027,x=-700.52392578125},{code="504",y=50.903945922852,x=-695.24353027344},{code="505",y=-110.88291168213,x=-599.31079101563},{code="506",y=-213.39039611816,x=-539.40997314453},{code="507",y=-329.86734008789,x=-458.75726318359},{code="508",y=-417.56732177734,x=-478.90475463867},{code="509",y=-427.34091186523,x=-402.49237060547},{code="510",y=-441.87588500977,x=-303.77142333984},{code="511",y=428.39538574219,x=-736.943359375},{code="512",y=332.8056640625,x=-680.619140625},{code="513",y=299.62493896484,x=-583.18212890625},{code="514",y=215.99865722656,x=-594.54663085938},{code="515",y=156.23492431641,x=-597.93444824219},{code="516",y=100.46592712402,x=-597.35339355469},{code="517",y=44.716232299805,x=-600.78454589844},{code="518",y=-46.86328125,x=-472.81106567383},{code="519",y=-141.1171875,x=-417.84649658203},{code="520",y=-244.76577758789,x=-336.15817260742},{code="521",y=471.90353393555,x=-625.01989746094},{code="522",y=385.64465332031,x=-588.62451171875},{code="523",y=352.42486572266,x=-492.50927734375},{code="524",y=283.33233642578,x=-469.57983398438},{code="525",y=211.64205932617,x=-487.58181762695},{code="526",y=158.52024841309,x=-487.00375366211},{code="527",y=101.4418258667,x=-469.28265380859},{code="528",y=41.685146331787,x=-468.65365600586},{code="529",y=-85.742027282715,x=-350.00003051758},{code="530",y=522.04522705078,x=-495.36462402344},{code="531",y=476.88360595703,x=-510.72842407227},{code="532",y=434.38583374023,x=-478.30529785156},{code="533",y=375.96286010742,x=-414.05786132813},{code="534",y=330.83197021484,x=-410.84927368164},{code="535",y=281.62072753906,x=-367.73321533203},{code="536",y=184.82946777344,x=-399.0520324707},{code="537",y=97.2177734375,x=-316.22943115234},{code="538",y=30.850257873535,x=-312.99954223633},{code="539",y=-241.23577880859,x=-194.30017089844},{code="540",y=-379.25860595703,x=-87.543014526367},{code="541",y=505.8371887207,x=-422.69653320313},{code="542",y=451.39288330078,x=-388.92831420898},{code="543",y=407.55895996094,x=-333.94604492188},{code="544",y=355.796875,x=-308.14038085938},{code="545",y=296.03479003906,x=-238.54907226563},{code="546",y=220.36071777344,x=-263.16687011719},{code="547",y=184.46337890625,x=-327.22750854492},{code="548",y=159.23709106445,x=-270.91918945313},{code="549",y=528.10778808594,x=-326.08764648438},{code="550",y=473.69287109375,x=-263.13415527344},{code="551",y=380.75979614258,x=-226.72441101074},{code="552",y=289.18664550781,x=-153.16821289063},{code="553",y=225.45361328125,x=-167.20080566406},{code="554",y=164.40895080566,x=-162.67297363281},{code="555",y=50.27734375,x=-172.71936035156},{code="556",y=-28.043262481689,x=-189.40458679199},{code="557",y=490.81063842773,x=-146.38990783691},{code="558",y=408.52575683594,x=-157.74645996094},{code="559",y=342.14575195313,x=-45.712036132813},{code="560",y=214.70751953125,x=-50.461547851563},{code="561",y=144.36865234375,x=-67.154541015625},{code="562",y=5.0144529342651,x=-95.797630310059},{code="563",y=-48.079864501953,x=-116.43576812744},{code="564",y=538.43688964844,x=48.695190429688},{code="565",y=462.7607421875,x=-46.297973632813},{code="566",y=391.09167480469,x=45.85986328125},{code="567",y=295.50549316406,x=151.28002929688},{code="568",y=165.45336914063,x=85.49609375},{code="569",y=80.496955871582,x=14.379183769226},{code="570",y=-42.911499023438,x=-19.5556640625},{code="571",y=-195.55574035645,x=-20.330459594727},{code="572",y=546.19665527344,x=148.77624511719},{code="573",y=443.97045898438,x=98.920288085938},{code="574",y=352.38659667969,x=333.04968261719},{code="575",y=255.478515625,x=305.72937011719},{code="576",y=110.80627441406,x=253.21606445313},{code="577",y=45.401866912842,x=98.846603393555},{code="578",y=17.024923324585,x=220.99719238281},{code="579",y=-77.867950439453,x=58.120056152344},{code="580",y=-113.89897155762,x=132.86352539063},{code="581",y=-132.53469848633,x=213.11917114258},{code="582",y=-176.59582519531,x=312.00396728516},{code="583",y=-253.25666809082,x=131.38232421875},{code="584",y=-305.43643188477,x=266.38403320313},{code="585",y=-416.96405029297,x=228.32000732422},{code="586",y=660.70788574219,x=243.94610595703},{code="587",y=465.72290039063,x=192.55560302734},{code="588",y=486.37939453125,x=299.25537109375},{code="589",y=425.78894042969,x=337.27014160156},{code="590",y=193.84533691406,x=460.94189453125},{code="591",y=14.332397460938,x=392.56890869141},{code="592",y=-13.026306152344,x=564.986328125},{code="593",y=-111.27716064453,x=466.33834838867},{code="594",y=-216.17413330078,x=451.14453125},{code="595",y=-335.10650634766,x=388.67727661133},{code="596",y=243.16967773438,x=688.13818359375},{code="597",y=155.26257324219,x=601.30517578125},{code="598",y=116.84545898438,x=690.28015136719},{code="599",y=-169.75744628906,x=567.26617431641},{code="400",y=131.34812927246,x=1009.3156738281},{code="401",y=-33.256130218506,x=1659.9888916016},{code="402",y=400.96273803711,x=2572.1840820313},{code="403",y=-376.80261230469,x=2507.4079589844},{code="404",y=-47.627777099609,x=886.34252929688},{code="405",y=-123.52492523193,x=799.28253173828},{code="406",y=-250.78694152832,x=799.78082275391},{code="407",y=-304.49575805664,x=713.90032958984},{code="408",y=-173.75784301758,x=883.62060546875},{code="409",y=-223.99035644531,x=956.50885009766},{code="410",y=-274.19442749023,x=1078.4311523438},{code="411",y=-317.39031982422,x=1158.3078613281},{code="412",y=-331.40765380859,x=1093.4611816406},{code="413",y=-388.64819335938,x=1025.1092529297},{code="414",y=-430.67269897461,x=969.60015869141},{code="415",y=-473.81304931641,x=910.70446777344},{code="416",y=-500.74810791016,x=851.49780273438},{code="417",y=-553.27893066406,x=832.13647460938},{code="418",y=-609.33093261719,x=854.80963134766},{code="419",y=-639.69946289063,x=907.86016845703},{code="420",y=-685.27478027344,x=939.8984375},{code="421",y=-729.65747070313,x=969.56402587891},{code="422",y=-771.72320556641,x=1016.7731933594},{code="423",y=-798.59783935547,x=1075.6462402344},{code="424",y=-798.59991455078,x=1137.9982910156},{code="425",y=-395.87701416016,x=1148.9865722656},{code="426",y=-453.09777832031,x=1127.3017578125},{code="427",y=-478.78070068359,x=1028.6091308594},{code="428",y=-518.48852539063,x=970.76525878906},{code="429",y=-548.85009765625,x=917.58422851563},{code="430",y=-602.59631347656,x=981.11560058594},{code="431",y=-673.80572509766,x=1024.8212890625},{code="432",y=-651.67102050781,x=1133.890625},{code="433",y=-131.07865905762,x=1009.4783935547},{code="434",y=-352.88928222656,x=1262.1201171875},{code="435",y=-436.94595336914,x=1240.4516601563},{code="436",y=-483.64242553711,x=1233.9768066406},{code="437",y=-571.19836425781,x=1219.3055419922},{code="438",y=-624.89605712891,x=1226.8345947266},{code="439",y=-675.09429931641,x=1240.1711425781},{code="440",y=-718.29010009766,x=1239.5133056641},{code="441",y=-524.52587890625,x=1325.2445068359},{code="442",y=-594.58868408203,x=1316.3920898438},{code="443",y=-545.57263183594,x=1392.7559814453},{code="444",y=-617.97320556641,x=1383.9421386719},{code="445",y=-696.20989990234,x=1343.5747070313},{code="446",y=-762.78662109375,x=1311.3957519531},{code="447",y=-710.27087402344,x=1408.767578125},{code="448",y=-775.66943359375,x=1384.7670898438},{code="449",y=-997.48913574219,x=1114.4642333984},{code="450",y=-684.07220458984,x=2796.1713867188},{code="300",y=-1029.1674804688,x=-1474.4401855469},{code="301",y=-986.41198730469,x=-1411.9615478516},{code="302",y=-1057.6009521484,x=-1361.8004150391},{code="303",y=-1151.2473144531,x=-1329.8208007813},{code="304",y=-1247.7458496094,x=-1315.2608642578},{code="305",y=-1343.1413574219,x=-1282.4879150391},{code="306",y=-1425.3122558594,x=-1248.8175048828},{code="307",y=-1493.1126708984,x=-1197.3798828125},{code="308",y=-1549.4777832031,x=-1154.4001464844},{code="309",y=-1611.0831298828,x=-1113.0325927734},{code="310",y=-1661.9222412109,x=-1076.4030761719},{code="311",y=-1789.0052490234,x=-1195.6575927734},{code="312",y=-930.55511474609,x=-1338.2587890625},{code="313",y=-1027.3132324219,x=-1301.689453125},{code="314",y=-1127.6188964844,x=-1264.3786621094},{code="315",y=-1220.0961914063,x=-1244.1457519531},{code="316",y=-1314.6328125,x=-1212.5389404297},{code="317",y=-1392.2125244141,x=-1177.3619384766},{code="318",y=-1447.0068359375,x=-1138.65625},{code="319",y=-1504.6511230469,x=-1095.6893310547},{code="320",y=-1564.4343261719,x=-1056.9562988281},{code="321",y=-1608.5399169922,x=-1038.16796875},{code="322",y=-787.98168945313,x=-1338.6042480469},{code="323",y=-842.04528808594,x=-1295.6395263672},{code="324",y=-1050.41015625,x=-1203.5720214844},{code="325",y=-1147.8741455078,x=-1164.1453857422},{code="326",y=-1243.9017333984,x=-1128.2504882813},{code="327",y=-1355.7624511719,x=-1110.5888671875},{code="328",y=-1401.9780273438,x=-1045.9108886719},{code="329",y=-1496.5798339844,x=-1014.3173828125},{code="330",y=-1576.95703125,x=-969.20568847656},{code="331",y=-773.15606689453,x=-1273.9382324219},{code="332",y=-826.51312255859,x=-1229.5341796875},{code="333",y=-916.15161132813,x=-1188.6730957031},{code="334",y=-983.04528808594,x=-1147.8227539063},{code="335",y=-1047.7581787109,x=-1103.7037353516},{code="336",y=-1148.0686035156,x=-1052.6170654297},{code="337",y=-1211.3900146484,x=-1016.0389404297},{code="338",y=-1303.1352539063,x=-977.30572509766},{code="339",y=-1419.7745361328,x=-945.71728515625},{code="340",y=-1513.6687011719,x=-911.27282714844},{code="341",y=-739.45391845703,x=-1215.7504882813},{code="342",y=-789.98980712891,x=-1163.5450439453},{code="343",y=-852.57861328125,x=-1089.9608154297},{code="344",y=-938.64587402344,x=-1063.3453369141},{code="345",y=-1006.9177246094,x=-1016.7833862305},{code="346",y=-1107.9299316406,x=-963.12231445313},{code="347",y=-1164.83984375,x=-914.44989013672},{code="348",y=-1259.4299316406,x=-892.11206054688},{code="349",y=-1458.5882568359,x=-734.65557861328},{code="350",y=-756.03192138672,x=-945.56298828125},{code="351",y=-889.03002929688,x=-990.7685546875},{code="352",y=-930.48974609375,x=-959.05487060547},{code="353",y=-992.16772460938,x=-914.05560302734},{code="354",y=-1087.4909667969,x=-850.46643066406},{code="355",y=-1217.6362304688,x=-800.3779296875},{code="356",y=-1302.9851074219,x=-712.58813476563},{code="357",y=-861.53546142578,x=-888.98901367188},{code="358",y=-908.48413085938,x=-798.34381103516},{code="359",y=-977.29077148438,x=-807.25134277344},{code="360",y=-1035.8123779297,x=-769.26702880859},{code="361",y=-1126.8742675781,x=-712.06689453125},{code="362",y=-1183.0791015625,x=-669.80010986328},{code="363",y=-1238.5677490234,x=-634.66149902344},{code="364",y=-602.30310058594,x=-806.42541503906},{code="365",y=-747.41845703125,x=-799.17572021484},{code="366",y=-900.34143066406,x=-694.83190917969},{code="367",y=-999.90704345703,x=-696.64001464844},{code="368",y=-1107.3298339844,x=-652.92785644531},{code="369",y=-608.15411376953,x=-694.5859375},{code="370",y=-698.51239013672,x=-694.25659179688},{code="371",y=-778.19567871094,x=-693.95642089844},{code="372",y=-896.24670410156,x=-562.8095703125},{code="373",y=-1025.0972900391,x=-589.52954101563},{code="374",y=-1118.1575927734,x=-581.38458251953},{code="375",y=-1227.7136230469,x=-530.56713867188},{code="376",y=-613.31561279297,x=-533.81781005859},{code="377",y=-751.38391113281,x=-581.15228271484},{code="378",y=-745.66101074219,x=-469.09088134766},{code="379",y=-968.99365234375,x=-480.99627685547},{code="380",y=-595.65850830078,x=-315.67556762695},{code="381",y=-750.01409912109,x=-320.33477783203},{code="382",y=-923.56433105469,x=-289.42834472656},{code="383",y=-1048.0467529297,x=-311.15170288086},{code="384",y=-1338.1978759766,x=-326.48291015625},{code="385",y=-1498.9143066406,x=-329.00146484375},{code="386",y=-1644.8640136719,x=-584.46209716797},{code="387",y=-1789.9696044922,x=-579.78948974609},{code="388",y=-1718.1761474609,x=-445.05377197266},{code="389",y=-601.87091064453,x=-156.72050476074},{code="390",y=-778.25860595703,x=-206.18516540527},{code="391",y=-838.03430175781,x=-81.409629821777},{code="392",y=-985.25286865234,x=-142.97489929199},{code="393",y=-1095.5246582031,x=-166.83547973633},{code="394",y=-1169.5072021484,x=-187.71894836426},{code="395",y=-640.91949462891,x=-7.923168182373},{code="396",y=-569.12609863281,x=196.48629760742},{code="397",y=-659.46252441406,x=154.12565612793},{code="398",y=-751.23529052734,x=126.70892333984},{code="399",y=-894.185546875,x=68.73119354248},{code="200",y=-1062.0249023438,x=8.5979700088501},{code="201",y=-585.22430419922,x=330.74838256836},{code="202",y=-650.15972900391,x=296.08462524414},{code="203",y=-716.81842041016,x=272.53741455078},{code="204",y=-797.13336181641,x=248.98770141602},{code="205",y=-920.1376953125,x=193.83641052246},{code="206",y=-1077.30078125,x=148.08184814453},{code="207",y=-627.24822998047,x=455.06762695313},{code="208",y=-784.40118408203,x=362.35665893555},{code="209",y=-905.72943115234,x=349.94061279297},{code="210",y=-1000.5528564453,x=328.09573364258},{code="211",y=-1089.4246826172,x=263.54153442383},{code="212",y=-1088.5959472656,x=352.72631835938},{code="213",y=-1157.7806396484,x=321.50082397461},{code="214",y=-1160.3621826172,x=401.33151245117},{code="215",y=-745.31518554688,x=457.21755981445},{code="216",y=-902.50067138672,x=452.47760009766},{code="217",y=-998.20635986328,x=453.70645141602},{code="218",y=-1093.9069824219,x=452.39398193359},{code="219",y=-544.27935791016,x=728.31298828125},{code="220",y=-694.61840820313,x=722.72320556641},{code="221",y=-749.31066894531,x=723.95629882813},{code="222",y=-806.57281494141,x=723.49822998047},{code="223",y=-899.6943359375,x=721.2900390625},{code="224",y=-962.04711914063,x=724.21478271484},{code="225",y=-1064.5396728516,x=727.16473388672},{code="226",y=-1120.0651855469,x=730.11486816406},{code="227",y=-793.83966064453,x=832.13830566406},{code="228",y=-886.94445800781,x=869.22790527344},{code="229",y=-956.98425292969,x=875.58093261719},{code="230",y=-1042.4080810547,x=882.78491210938},{code="231",y=-1133.8366699219,x=909.62866210938},{code="101",y=-1295.8431396484,x=-189.16575622559},{code="102",y=-1361.1325683594,x=-199.61499023438},{code="103",y=-1439.3460693359,x=-169.17350769043},{code="104",y=-1475.9370117188,x=-130.83219909668},{code="105",y=-1511.0447998047,x=-233.16012573242},{code="106",y=-1547.7369384766,x=-186.84065246582},{code="107",y=-1603.7067871094,x=-216.63500976563},{code="108",y=-1664.7286376953,x=-217.02165222168},{code="109",y=-1725.0113525391,x=-190.16036987305},{code="110",y=-1802.5281982422,x=-111.65773010254},{code="111",y=-1852.7672119141,x=-48.222949981689},{code="112",y=-1900.8654785156,x=6.6181302070618},{code="113",y=-1950.4001464844,x=63.619976043701},{code="114",y=-2000.5959472656,x=109.64694213867},{code="115",y=-1398.8083496094,x=-112.20764160156},{code="116",y=-1444.0457763672,x=-88.230041503906},{code="117",y=-1531.6103515625,x=-57.114601135254},{code="118",y=-1627.7312011719,x=-123.47220611572},{code="119",y=-1665.7716064453,x=-26.305255889893},{code="120",y=-1767.669921875,x=-57.569725036621},{code="121",y=-1759.0911865234,x=58.963958740234},{code="122",y=-1838.7308349609,x=30.599849700928},{code="123",y=-1907.7905273438,x=122.64105987549},{code="124",y=-1949.9763183594,x=153.17626953125},{code="125",y=-1307.91015625,x=-15.094520568848},{code="126",y=-1419.8579101563,x=-7.4882292747498},{code="127",y=-1499.5307617188,x=-11.558423995972},{code="128",y=-1582.7677001953,x=70.528900146484},{code="129",y=-1691.8442382813,x=145.45478820801},{code="130",y=-1780.08984375,x=244.07884216309},{code="131",y=-1849.6875,x=184.13423156738},{code="132",y=-2008.8780517578,x=218.93841552734},{code="133",y=-1300.2211914063,x=144.59962463379},{code="134",y=-1421.4899902344,x=71.721168518066},{code="135",y=-1519.0656738281,x=148.80706787109},{code="136",y=-1656.1225585938,x=189.31973266602},{code="137",y=-1737.9329833984,x=285.77676391602},{code="138",y=-1945.9948730469,x=281.79132080078},{code="139",y=-2059.3486328125,x=333.03134155273},{code="140",y=-1362.2398681641,x=251.94816589355},{code="141",y=-1487.1766357422,x=211.45455932617},{code="142",y=-1595.5262451172,x=302.18811035156},{code="143",y=-1651.5061035156,x=359.88793945313},{code="144",y=-1823.7247314453,x=365.21774291992},{code="145",y=-1863.2066650391,x=384.91525268555},{code="146",y=-2000.2724609375,x=367.31072998047},{code="147",y=-2092.8442382813,x=402.79830932617},{code="148",y=-1258.0133056641,x=367.80456542969},{code="149",y=-1411.5725097656,x=343.75473022461},{code="150",y=-1517.0571289063,x=404.35696411133},{code="151",y=-1571.4686279297,x=446.43557739258},{code="152",y=-1733.0635986328,x=456.68957519531},{code="153",y=-1890.9268798828,x=454.12655639648},{code="154",y=-1961.9718017578,x=502.51138305664},{code="155",y=-1312.7757568359,x=443.99783325195},{code="156",y=-1379.5179443359,x=490.20916748047},{code="157",y=-1486.4421386719,x=477.63247680664},{code="158",y=-1614.8630371094,x=554.70751953125},{code="159",y=-1755.5095214844,x=539.26306152344},{code="160",y=-1833.74609375,x=534.57397460938},{code="161",y=-1909.0762939453,x=577.22235107422},{code="162",y=-1287.4525146484,x=753.47784423828},{code="163",y=-1384.0620117188,x=751.55676269531},{code="164",y=-1665.7390136719,x=783.65472412109},{code="165",y=-1814.6866455078,x=752.93353271484},{code="166",y=-1967.1651611328,x=732.77154541016},{code="167",y=-1328.3046875,x=841.06085205078},{code="168",y=-1541.6588134766,x=912.81323242188},{code="169",y=-1626.9591064453,x=953.22534179688},{code="170",y=-1706.0562744141,x=954.24676513672},{code="171",y=-1839.5078125,x=892.42504882813},{code="172",y=-1989.8618164063,x=876.90832519531},{code="173",y=-1831.7860107422,x=1021.237487793},{code="174",y=-1991.3243408203,x=1056.1282958984},{code="175",y=-1261.9050292969,x=945.37976074219},{code="176",y=-1478.7492675781,x=974.02563476563},{code="177",y=-1323.4599609375,x=1167.0411376953},{code="178",y=-1492.2004394531,x=1159.5765380859},{code="179",y=-1573.4239501953,x=1146.4794921875},{code="180",y=-1628.5070800781,x=1205.3771972656},{code="181",y=-1754.8991699219,x=1216.984375},{code="182",y=-1883.3666992188,x=1318.9350585938},{code="183",y=-1589.0551757813,x=1258.5363769531},{code="184",y=-1690.0380859375,x=1304.0158691406},{code="185",y=-1744.4010009766,x=1340.3397216797},{code="186",y=-1503.7507324219,x=1347.69921875},{code="187",y=-1563.7982177734,x=1355.0493164063},{code="188",y=-1488.2723388672,x=1423.1033935547},{code="189",y=-1667.5889892578,x=1463.6748046875},{code="190",y=-1904.0637207031,x=1487.2840576172},{code="191",y=-1002.7260742188,x=1929.4655761719},{code="192",y=-1582.0932617188,x=1714.1357421875},{code="193",y=-1688.6075439453,x=1585.9519042969},{code="194",y=-1863.75390625,x=1647.7005615234},{code="10",y=-2705.1564941406,x=687.07366943359},{code="11",y=-2904.6411132813,x=944.36273193359},{code="12",y=-2990.6240234375,x=807.35510253906},{code="13",y=-3238.8312988281,x=806.72766113281},{code="14",y=-3066.3818359375,x=978.86743164063},{code="15",y=-3282.6921386719,x=998.55688476563},{code="16",y=-3000.79296875,x=1131.2945556641},{code="17",y=-2978.353515625,x=1232.6954345703},{code="18",y=-3143.9951171875,x=1213.3927001953},{code="19",y=-3272.7492675781,x=1213.1508789063},{code="20",y=-2447.6203613281,x=284.57476806641},{code="21",y=-2561.576171875,x=314.84454345703},{code="22",y=-2753.4533691406,x=345.09487915039},{code="23",y=-2968.2236328125,x=252.94818115234},{code="24",y=-3118.5986328125,x=230.67861938477},{code="25",y=-3228.7145996094,x=235.11012268066},{code="26",y=-2615.921875,x=496.35650634766},{code="27",y=-2775.2788085938,x=577.41815185547},{code="28",y=-2977.8247070313,x=558.623046875},{code="29",y=-3162.6711425781,x=529.20104980469},{code="30",y=-2679.2045898438,x=-151.14317321777},{code="31",y=-2482.7993164063,x=8.0548686981201},{code="32",y=-2679.9594726563,x=-42.670169830322},{code="33",y=-2406.2458496094,x=125.01549530029},{code="34",y=-2578.5874023438,x=103.35691833496},{code="35",y=-2692.7824707031,x=56.17554473877},{code="36",y=-2470.1088867188,x=210.39039611816},{code="37",y=-2711.9897460938,x=209.27378845215},{code="38",y=-2936.818359375,x=145.05467224121},{code="39",y=-3153.158203125,x=139.71871948242},{code="40",y=-2656.0163574219,x=-454.97610473633},{code="41",y=-2809.2387695313,x=-483.02590942383},{code="42",y=-2644.0046386719,x=-339.44714355469},{code="43",y=-2766.5698242188,x=-342.82467651367},{code="44",y=-2371.0124511719,x=-168.60151672363},{code="45",y=-2473.17578125,x=-280.36245727539},{code="46",y=-2587.3823242188,x=-236.79580688477},{code="47",y=-2659.7390136719,x=-237.87594604492},{code="48",y=-2446.2788085938,x=-125.50296783447},{code="49",y=-2585.3044433594,x=-132.29989624023},{code="50",y=-2260.6943359375,x=1218.2885742188},{code="51",y=-2389.1450195313,x=1233.4946289063},{code="52",y=-2560.1733398438,x=1262.8876953125},{code="53",y=-2077.64453125,x=1383.1213378906},{code="54",y=-2142.9367675781,x=1528.9184570313},{code="55",y=-2283.5036621094,x=1619.3581542969},{code="56",y=-2605.6767578125,x=1442.2821044922},{code="60",y=-2155.4575195313,x=853.23693847656},{code="61",y=-2342.4645996094,x=832.17572021484},{code="62",y=-2512.01953125,x=865.92926025391},{code="63",y=-2145.572265625,x=1003.2518310547},{code="64",y=-2272.0517578125,x=996.4921875},{code="65",y=-2407.0234375,x=979.04028320313},{code="66",y=-2513.568359375,x=1026.2109375},{code="67",y=-2211.0874023438,x=1108.9169921875},{code="68",y=-2326.1398925781,x=1102.8514404297},{code="69",y=-2419.1809082031,x=1084.7310791016},{code="70",y=-2234.6145019531,x=-248.99447631836},{code="71",y=-2206.3369140625,x=-46.829418182373},{code="72",y=-2135.2043457031,x=136.44525146484},{code="73",y=-2203.4912109375,x=300.81954956055},{code="74",y=-2188.2543945313,x=468.12353515625},{code="75",y=-2181.0402832031,x=554.84045410156},{code="76",y=-2346.5720214844,x=550.06774902344},{code="77",y=-2154.216796875,x=705.03173828125},{code="78",y=-2271.1315917969,x=699.54187011719},{code="79",y=-2382.2238769531,x=686.78234863281},{code="80",y=-2055.9750976563,x=-726.21740722656},{code="81",y=-2261.4060058594,x=-718.82543945313},{code="82",y=-2447.7976074219,x=-685.59027099609},{code="83",y=-2606.6193847656,x=-771.34912109375},{code="84",y=-2135.921875,x=-591.43096923828},{code="85",y=-2304.93359375,x=-579.3662109375},{code="86",y=-2199.0703125,x=-468.21319580078},{code="87",y=-2273.2153320313,x=-404.49740600586},{code="88",y=-1932.4854736328,x=-333.16485595703},{code="89",y=-2188.0732421875,x=-361.25445556641},{code="90",y=-2011.3282470703,x=-1150.3947753906},{code="91",y=-2084.4724121094,x=-1109.591796875},{code="92",y=-2175.3706054688,x=-1025.4865722656},{code="93",y=-2646.8039550781,x=-1303.173828125},{code="94",y=-1979.4582519531,x=-1018.5178833008},{code="95",y=-2068.9506835938,x=-951.47369384766},{code="96",y=-2145.671875,x=-847.50787353516},{code="97",y=-2362.2272949219,x=-879.15344238281},{code="98",y=-2606.4645996094,x=-967.59759521484},{code="99",y=-2896.1499023438,x=-962.28741455078}
}
```

Essentially, you can add as many watermarks to this configuration that you want just by following the format of the previous ones. The placeholders all in this configuration can be used as well. Currently only EST time is supported, but there may be more coming in the future (pull request maybe please? lol)...

### Download

{% embed url="<https://github.com/JaredScar/Badssentials>" %}


# BadgerStockMarket

### What is it?

BadgerStockMarket is a stock market that is based on the real stock market! The prices and graphs actually come from the real stock market! I wanted to make a nifty script to interact with the stock market and actually invest it, but without investing real money. You can do that with this script! You use ESX money in-game to invest into the stock market. The stock market updates/refreshes every time you open the phone, so this updates in real live time. Make sure you sell your stocks when you are making money, not when you are losing money!

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### Commands

`/stocks` - Opens up the phone menu for the stocks

### Screenshots

![Running /stocks](https://i.gyazo.com/94e8d2d10607ebb211e579f08878cd0f.gif)

![Purchasing Stocks](https://i.gyazo.com/246c95870ce2724afab536fec21f8221.gif)

![Selling Stocks on another page](https://i.gyazo.com/a14d4afda42421d2865bbe3cfc0a5764.gif)

![Browsing Page](https://i.gyazo.com/515771f3f8f6ee85b8c1b63f5abe9fe3.gif)

![All pages and turning off the phone](https://i.gyazo.com/15738ab69ea833af91f8eafbe16cdfe0.gif)

### Configuration

```
Config = {
    maxStocksOwned = {
        ['BadgerStockMarket.Stocks.Normal'] = 20,
        ['BadgerStockMarket.Stocks.Bronze'] = 100,
        ['BadgerStockMarket.Stocks.Silver'] = 500,
        ['BadgerStockMarket.Stocks.Gold'] = 99999999999999999999999999999999999999999999
    },
    stocks = {
        ['Apple Stock'] = {
            link = 'https://money.cnn.com/quote/quote.html?symb=AAPL',
            tags = {'Technology', 'Software'}
        },
        ['Citigroup Stock'] = {
            link = 'https://money.cnn.com/quote/quote.html?symb=C',
            tags = {'Bank'}
        },
        ['General Electric Stock'] = {
            link = 'https://money.cnn.com/quote/quote.html?symb=GE',
            tags = {'Automobiles', 'Vehicles', 'Cars'}
        }
    }
}
```

You must use <https://money.cnn.com> website for this to work properly (for each Stock). Add as many stocks as you would like :)

`'BadgerStockMarket.Stocks.Normal'` is the permission node (ACE permission node) that a player has to have to have that many stocks. You can set up multiple different permission nodes and allow a certain number of stocks for different groups of people. Maybe donators get more stocks?

### Liability Reasons

For liability reasons, I wanted to include this at the bottom. BadgerStockMarket is in no way affiliated with the Stock Market and/or its proprieters. BadgerStockMarket was created as an educational tool to be used within the GTA V modification known as FiveM. BadgerStockMarket is also not affiliated with the Robinhood application. Although the script used the Robinhood logo. Once again, BadgerStockMarket was created as an educational tool. If anyone has a problem with this, please contact me and we can get the changes adjusted appropriately, thank you.

### Download

{% embed url="<https://github.com/JaredScar/BadgerStockMarket>" %}


# Badger-Anticheat

## Badger-Anticheat

Badger's Official Anticheat \[code inspirations from DevLanceGood and Bluethefurry on GitHub]

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### What it can stop?

· Stops modder noclip

· Stops modder spectating

· Stops modder fake chat messages

· Stops modder peds from being spawned

· Stops MOST modder props (NOTE: Sometimes a regular player may get kicked or caught when the script scans for props since the modder spawned it on them. However, one of the caught players when this happens should be the confirmed modder, but it is up to your discretion to figure out who. As a good train of thought, it's usually the user who is not in your discord or has a low playtime on your server.)

· Stops MOST modder injection

### Summary

Badger-Anticheat can catch modders noclipping, spectating, and even faking chat messages. Badger-Anticheat also will stop the spawning of peds from modders. Don't worry! AI are safe, but Badger-Anticheat just prevents the peds modders spawn from being spawned. Badger-Anticheat also stops blacklisted props from being spawned via the `Config` blacklisted list. If Badger-Anticheat can successfully find the modder who spawned the prop, it then kicks them and logs this via a Discord webhook. The code is quite simple, yet effective. I saw there was no real good anticheats on the forums, so I thought I should put one together. Some of the code comes from other developers, therefore I made sure to credit them within the code too. DevLanceGood is one of these developers, as well as Bluethefurry. I have linked their GitHubs below.

{% embed url="<https://github.com/DevLanceGood>" %}

{% embed url="<https://github.com/Bluethefurry>" %}

### Requirements

{% embed url="<https://github.com/jaimeadf/discord-screenshot>" %}

### Commands

`/latest` - Will show the 10 most recent players on the server. Essentially, the most likely ones to be a possible modder...

`/entitywipe <ID>` \[Requires ACE `"AntiCheat.Moderation"`] - This will wipe the server of all entities if you put `-1` in `<ID>` or will wipe the server of all entities of a certain player if you put the player's ID.

`/ac-ban <ID> <reason>` \[Requires ACE `"Badger-Anticheat.ACban"`] - This will ban the the player provided with the reason provided.

`/ac-unban <ban-ID>` \[Requirces ACE `"Badger-Anticheat.ACban"`] - This will unban the ban ID provided.&#x20;

### Screenshots

**NOTE: These are not actual modders. These are friends of mine who helped test out the anticheat. We used a server-sided resource that mimicked a mod menu in order to thoroughly test to get these results. Upon putting the anticheat on our server, we caught a modder within the first 5 minutes of testing. Ironically he tried spectating whilst we were testing it. He got banned shortly after... lol**

![Catching a modder noclipping](https://i.gyazo.com/d1907105b1d065d6ed878366b90620b0.png)

![Catching a modder spectating](https://i.gyazo.com/19d929e023970ae53ad3e7c7246c71b0.png)

![Catching a modder faking a chat message](https://i.gyazo.com/4a58604bcc0d72f378a5f4e42d9e65bf.png)

![Catching a modder click a blacklisted key (sends a screenshot of their screen)](https://i.gyazo.com/84b1d0e7cdef420bb10c03eb6e40de33.png)

### Permissions

`Anticheat.Bypass` - bypasses the Anticheat checks. You MUST give this to Staff who have NoClip and Spectating powers.

`Badger-Anticheat.ACban` - for banning and unbanning players.

### Configuration

#### server.lua file:

Put your Webhook URL in `''`&#x20;

```
BlacklistedEvents = Config.BlacklistedEvents;

webhookURL = ''
```

#### config.lua file:

```
Config = {
    WhitelistPedModels = {'S_M_M_TRUCKER_01', 'MP_M_WAREMECH_01'},
    NoClipTriggerCount = 3,
    Components = {
         AntiCheat = true, --AntiInvincible, AntiInfiniteAmmo, etc.
         AntiSpectate = true,
         AntiNoclip = true,
         AntiSpeedhack = true,
         AntiCommands = true,
         --AntiKeys = false, -- @DEPRECATED
         AntiESX = false,
         AntiRemoveOtherPlayersWeapons = false, -- Stops players removing other players weapons. 
         AntiCancelAnimations = false, -- Stops other players cancelling other people's animations (kicking people out of cars etc.)
         StopOtherPlayersGivingEachOtherWeapons = false, -- Stops other players giving other people weapons (If you have an admin menu to give weapons this may be an issue. Giving weapons with esx inventories or etc will not cause any issues!)
         ModMenuChecks = false, -- (READ IMPORTANT) Will check in your resources for any injected code being variables/functions that has been added to our detection lists! Don't forget to also enable it on the client script! In acloader.lua! Will add to every resource so please do not change the AntiCheat Name It must stay as the name it has.  
         StopUnauthorizedResources = false, -- Will check for resources that have not been allowed by the server! (Common with Eulen tick box menu loading options)
    },
    BanComponents = {
        AntiSpectate = true,
        AntiNoClip = false,
        AntiCommands = true,
        AntiESX = false,
        AntiFakeMessage = true,
        AntiBlacklistedEvent = true,
    },
    Messages = {
        NoClipTriggered = "Our anticheat caught you noclipping... You have been banned. You can apply for unban by providing your ban ID in your server ticket.",
        ChatMessageTriggered = "Our anticheat caught you faking a chat message... You have been banned. You can apply for unban by providing your ban ID in your server ticket.",
        BlacklistedEventTriggered = "Our anticheat caught you triggered a blacklisted event [{EVENT}]. You have been banned. You can apply for unban by providing your ban ID in your server ticket.",
        BlacklistedEntity = "Our anticheat caught you creating a blacklisted entity [{ENTITY}]. You have been kicked. You may join back, but may be banned under staff's discretion.",
        UnauthorizedResources = "Our anticheat caught you with an unauthorized resource [{RESOURCE}]. You have been banned. You can apply for unban by providing your ban ID in your server ticket.",
        ProhibitedVariables = "Our anticheat caught you with a prohibited variable [{VARIABLE}]. You have been banned. You can apply for unban by providing your ban ID in your server ticket.",
        CommandsTriggered = "Our anticheat caught you with a blacklisted command [{COMMAND}]. You have been banned. You can apply for unban by providing your ban ID in your server ticket.",
        ESXTriggered = "Our anticheat caught you triggering ESX. You have been banned. You can apply for unban by providing your ban ID in your server ticket.",
        SpectateTriggered = "Our anticheat caught you spectating somebody whilst not being staff. You have been banned. You can apply for unban by providing your ban ID in your server ticket.",
    },
    --KickForKeys = false, -- @DEPRECATED
    --[[BlacklistedKeys = { -- @DEPRECATED
        {{121}, "Insert Key"}, -- Insert Key 
        {{37, 44}, "Tab + Q Keys"}, -- Tab + Q key 
        {{47, 21}, "Shift + G Keys"}, -- Shift + G key  
        {{117}, "Numpad 7 Key"}, -- Lynx Evo Menu 
        {{214}, "Delete Key"}, -- Delete Menu 
    },]]--
    BlacklistedCommands = {
        "chocolate",
        "pk",
        "haha",
        "lol",
        "panickey",
        "killmenu",
        "panik",
        "lynx",
        "brutan",
        "saucy",
    },
    BlacklistedEvents = {
        'esx_drugs:startHarvestCoke',
        'esx_drugs:stoopHarvestCoke',
        'esx_drugs:startTransformCoke',
        'esx_drugs:stopTransformCoke',
        'esx_drugs:startSellCoke',
        'esx_drugs:stopSellCoke',
        'esx_drugs:startHarvestMeth',
        'esx_drugs:stoopHarvestMeth',
        'esx_drugs:startTransformMeth',
        'esx_drugs:stopTransformMeth',
        'esx_drugs:startSellMeth',
        'esx_drugs:stopSellMeth',
        'esx_drugs:startHarvestWeed',
        'esx_drugs:stoopHarvestWeed',
        'esx_drugs:startTransformWeed',
        'esx_drugs:stopTransformWeed',
        'esx_drugs:startSellWeed',
        'esx_drugs:stopSellWeed',
        'esx_drugs:startHarvestOpium',
        'esx_drugs:stopHarvestOpium',
        'esx_drugs:startTransformOpium',
        'esx_drugs:stopTransformOpium',
        'esx_drugs:startSellOpium',
        'esx_drugs:stopSellOpium',
        "gcPhone:_internalAddMessageLRAC",
        "gcPhone:tchat_channelLRAC",
        "esx_vehicleshop:setVehicleOwnedLRAC",
        "esx_mafiajob:confiscateLRACPlayerItem",
        "_chat:messageEntLRACered",
        "lscustoms:pLRACayGarage",
        "vrp_slotmachLRACine:server:2",
        "Banca:dLRACeposit",
        "bank:depLRACositt",
        "esx_jobs:caLRACution", "give_back",
        "esx_fueldLRACelivery:pay",
        "esx_carthLRACief:pay",
        "esx_godiLRACrtyjob:pay",
        "esx_pizza:pLRACay",
        "esx_ranger:pLRACay",
        "esx_garbageLRACjob:pay",
        "esx_truckLRACerjob:pay",
        "AdminMeLRACnu:giveBank",
        "AdminMLRACenu:giveCash",
        "esx_goLRACpostaljob:pay",
        "esx_baLRACnksecurity:pay",
        "esx_sloLRACtmachine:sv:2",
        "esx:giLRACveInventoryItem",
        "NB:recLRACruterplayer",
        "esx_biLRAClling:sendBill",
        "esx_jailer:sendToJail",
        "esx_jaLRACil:sendToJail",
        "js:jaLRACiluser",
        "esx-qalle-jail:jailyer",
        "esx_dmvschool:pLRACay", 
        "LegacyFuel:PayFuLRACel",
        "OG_cuffs:cuffCheckNeLRACarest",
        "esx_policejob:handcuff",
        "cuffSeLRACrver",
        "cuffGLRACranted",
        "police:cuffGLRACranted",
        "esx_handcuffs:cufLRACfing",
        "esx_policejob:haLRACndcuff",
        "bank:withdLRACraw",
        "dmv:succeLRACss",
        "esx_skin:responseSaLRACveSkin",
        "esx_dmvschool:addLiceLRACnse",
        "esx_mechanicjob:starLRACtCraft",
        "esx_drugs:startHarvestWLRACeed",
        "esx_drugs:startTransfoLRACrmWeed",
        "esx_drugs:startSellWeLRACed",
        "esx_drugs:startHarvestLRACCoke",
        "esx_drugs:startTransLRACformCoke",
        "esx_drugs:startSellCLRACoke",
        "esx_drugs:startHarLRACvestMeth",
        "esx_drugs:startTLRACransformMeth",
        "esx_drugs:startSellMLRACeth",
        "esx_drugs:startHLRACarvestOpium",
        "esx_drugs:startSellLRACOpium",
        "esx_drugs:starLRACtTransformOpium",
        "esx_blanchisLRACseur:startWhitening",
        "esx_drugs:stopHarvLRACestCoke",
        "esx_drugs:stopTranLRACsformCoke",
        "esx_drugs:stopSellLRACCoke",
        "esx_drugs:stopHarvesLRACtMeth",
        "esx_drugs:stopTranLRACsformMeth",
        "esx_drugs:stopSellMLRACeth",
        "esx_drugs:stopHarLRACvestWeed",
        "esx_drugs:stopTLRACransformWeed",
        "esx_drugs:stopSellWLRACeed",
        "esx_drugs:stopHarvestLRACOpium",
        "esx_drugs:stopTransLRACformOpium",
        "esx_drugs:stopSellOpiuLRACm",
        "esx_society:openBosLRACsMenu",
        "esx_jobs:caLRACution",
        "esx_tankerjob:LRACpay",
        "esx_vehicletrunk:givLRACeDirty",
        "gambling:speLRACnd",
        "AdminMenu:giveDirtyMLRAConey",
        "esx_moneywash:depoLRACsit",
        "esx_moneywash:witLRAChdraw",
        "mission:completLRACed",
        "truckerJob:succeLRACss",
        "99kr-burglary:addMLRAConey",
        "esx_jailer:unjailTiLRACme",
        "esx_ambulancejob:reLRACvive",
        "DiscordBot:plaLRACyerDied",
        "hentailover:xdlol",
        "antiLRAC8:anticheat",
        "antiLRACr6:detection",
        "esx:getShLRACaredObjLRACect",
        "esx_society:getOnlLRACinePlayers",
        "antiLRAC8r4a:anticheat",
        "antiLRACr4:detect",
        "js:jaLRACiluser", 
        "ynx8:anticheat",
        "LRAC8:anticheat",
        "adminmenu:allowall",
        "ljail:jailplayer",
        "adminmenu:setsalary",
        "adminmenu:cashoutall",
        "bank:tranLRACsfer",
        "paycheck:bonLRACus",
        "paycheck:salLRACary",
        "HCheat:TempDisableDetLRACection",
        "esx_drugs:pickedUpCLRACannabis",
        "esx_drugs:processCLRACannabis",
        "esx-qalle-hunting:LRACreward",
        "esx-qalle-hunting:seLRACll",
        "esx_mecanojob:onNPCJobCLRACompleted",
        "BsCuff:Cuff696LRAC999",
        "veh_SR:CheckMonLRACeyForVeh",
        "esx_carthief:alertcoLRACps",
        "mellotrainer:adminTeLRACmpBan",
        "mellotrainer:adminKickLRAC",
        "esx_society:putVehicleLRACInGarage",
        "antilynx8:anticheat",
        "mellotrainer:adminKick",
        "Tem2LPs5Para5dCyjuHm87y2catFkMpV",
        "dqd36JWLRC72k8FDttZ5adUKwvwq9n9m",
        "antilynx8:anticheat",
        "antilynxr4:detect",
        "antilynxr6:detection",
        "ynx8:anticheat",
        "antilynx8r4a:anticheat",
        "lynx8:anticheat",
        "AntiLynxR4:kick",
        "AntiLynxR4:log",
        "h:xd"
    },
    BlacklistedModels = {
        "rhino",
        "jet",
        "stt_prop_stunt_track_uturn",
        "stt_prop_stunt_track_turnice",
        "stt_prop_stunt_track_hill",
        "prop_gold_cont_01",
        "p_cablecar_s",
        "stt_prop_stunt_tube_l",
        "stt_prop_stunt_track_dwuturn",
        "prop_fnclink_05crnr1",
        "xs_prop_hamburgher_wl",
        "xs_prop_plastic_bottle_wl",
        "prop_windmill_01",
        "p_spinning_anus_s",
        "stt_prop_ramp_adj_flip_m",
        "stt_prop_ramp_adj_flip_mb",
        "stt_prop_ramp_adj_flip_s",
        "stt_prop_ramp_adj_flip_sb",
        "stt_prop_ramp_adj_hloop",
        "stt_prop_ramp_adj_loop",
        "stt_prop_ramp_jump_l",
        "stt_prop_ramp_jump_m",
        "stt_prop_ramp_jump_s",
        "stt_prop_ramp_jump_xl",
        "stt_prop_ramp_jump_xs",
        "stt_prop_ramp_jump_xxl",
        "stt_prop_ramp_multi_loop_rb",
        "stt_prop_ramp_spiral_l",
        "stt_prop_ramp_spiral_l_l",
        "stt_prop_ramp_spiral_l_m",
        "stt_prop_ramp_spiral_l_s",
        "stt_prop_ramp_spiral_l_xxl",
        "stt_prop_ramp_spiral_m",
        "stt_prop_ramp_spiral_s",
        "stt_prop_ramp_spiral_xxl",
        "stt_prop_stunt_track_dwslope30",
        "-145066854",
        "stt_prop_stunt_track_start",
"stt_prop_stunt_track_slope45",
"stt_prop_stunt_track_slope30",
"stt_prop_stunt_track_slope15",
"stt_prop_stunt_track_short",
"stt_prop_stunt_track_sh45_a",
"stt_prop_stunt_track_sh45",
"stt_prop_stunt_track_sh30",
"stt_prop_stunt_track_sh15",
"stt_prop_stunt_track_otake",
"stt_prop_stunt_track_link",
"stt_prop_stunt_track_jump",
"stt_prop_stunt_track_hill2",
"stt_prop_stunt_track_hill",
"stt_prop_stunt_track_funnel",
"stt_prop_stunt_track_funlng",
"stt_prop_stunt_track_fork",
"stt_prop_stunt_track_exshort",
"stt_prop_stunt_track_dwuturn",
"stt_prop_stunt_track_dwturn",
"stt_prop_stunt_track_dwslope45",
"stt_prop_stunt_track_dwslope30",
"stt_prop_stunt_track_dwslope15",
"stt_prop_stunt_track_dwshort",
"stt_prop_stunt_track_dwsh15",
"stt_prop_stunt_track_dwlink_02",
"stt_prop_stunt_track_dwlink",
"stt_prop_stunt_track_cutout",
"stt_prop_stunt_track_bumps",
"stt_prop_stunt_target_small",
"stt_prop_stunt_target",
"stt_prop_stunt_soccer_sball",
"stt_prop_stunt_soccer_lball",
"stt_prop_stunt_soccer_goal",
"stt_prop_stunt_soccer_ball",
"stt_prop_stunt_ramp",
"stt_prop_stunt_landing_zone_01",
"stt_prop_stunt_jump_sb",
"stt_prop_stunt_jump_s",
"stt_prop_stunt_jump_mb",
"stt_prop_stunt_jump_m",
"stt_prop_stunt_jump_loop",
"stt_prop_stunt_jump_lb",
"stt_prop_stunt_jump_l",
"stt_prop_stunt_jump45",
"stt_prop_stunt_jump30",
"stt_prop_stunt_jump15",
"stt_prop_stunt_domino",
"prop_weed_pallet", "hei_prop_carrier_radar_1_l1", "v_res_mexball", "prop_rock_1_a", "prop_rock_1_b", "prop_rock_1_c", "prop_rock_1_d", "prop_player_gasmask", "prop_rock_1_e", "prop_rock_1_f", "prop_rock_1_g", "prop_rock_1_h", "prop_test_boulder_01", "prop_test_boulder_02", "prop_test_boulder_03", "prop_test_boulder_04", "apa_mp_apa_crashed_usaf_01a", "ex_prop_exec_crashdp", "apa_mp_apa_yacht_o1_rail_a", "apa_mp_apa_yacht_o1_rail_b", "apa_mp_h_yacht_armchair_01", "apa_mp_h_yacht_armchair_03", "apa_mp_h_yacht_armchair_04", "apa_mp_h_yacht_barstool_01", "apa_mp_h_yacht_bed_01", "apa_mp_h_yacht_bed_02", "apa_mp_h_yacht_coffee_table_01", "apa_mp_h_yacht_coffee_table_02", "apa_mp_h_yacht_floor_lamp_01", "apa_mp_h_yacht_side_table_01", "apa_mp_h_yacht_side_table_02", "apa_mp_h_yacht_sofa_01", "apa_mp_h_yacht_sofa_02", "apa_mp_h_yacht_stool_01", "apa_mp_h_yacht_strip_chair_01", "apa_mp_h_yacht_table_lamp_01", "apa_mp_h_yacht_table_lamp_02", "apa_mp_h_yacht_table_lamp_03", "prop_flag_columbia", "apa_mp_apa_yacht_o2_rail_a", "apa_mp_apa_yacht_o2_rail_b", "apa_mp_apa_yacht_o3_rail_a", "apa_mp_apa_yacht_o3_rail_b", "apa_mp_apa_yacht_option1", "proc_searock_01", "apa_mp_h_yacht_", "apa_mp_apa_yacht_option1_cola", "apa_mp_apa_yacht_option2", "apa_mp_apa_yacht_option2_cola", "apa_mp_apa_yacht_option2_colb", "apa_mp_apa_yacht_option3", "apa_mp_apa_yacht_option3_cola", "apa_mp_apa_yacht_option3_colb", "apa_mp_apa_yacht_option3_colc", "apa_mp_apa_yacht_option3_cold", "apa_mp_apa_yacht_option3_cole", "apa_mp_apa_yacht_jacuzzi_cam", "apa_mp_apa_yacht_jacuzzi_ripple003", "apa_mp_apa_yacht_jacuzzi_ripple1", "apa_mp_apa_yacht_jacuzzi_ripple2", "apa_mp_apa_yacht_radar_01a", "apa_mp_apa_yacht_win", "prop_crashed_heli", "apa_mp_apa_yacht_door", "prop_shamal_crash", "xm_prop_x17_shamal_crash", "apa_mp_apa_yacht_door2", "apa_mp_apa_yacht", "prop_flagpole_2b", "prop_flagpole_2c", "prop_flag_canada", "apa_prop_yacht_float_1a", "apa_prop_yacht_float_1b", "apa_prop_yacht_glass_01", "apa_prop_yacht_glass_02", "apa_prop_yacht_glass_03", "apa_prop_yacht_glass_04", "apa_prop_yacht_glass_05", "apa_prop_yacht_glass_06", "apa_prop_yacht_glass_07", "apa_prop_yacht_glass_08", "apa_prop_yacht_glass_09", "apa_prop_yacht_glass_10", "prop_flag_canada_s", "prop_flag_eu", "prop_flag_eu_s", "prop_target_blue_arrow", "prop_target_orange_arrow", "prop_target_purp_arrow", "prop_target_red_arrow", "apa_prop_flag_argentina", "apa_prop_flag_australia", "apa_prop_flag_austria", "apa_prop_flag_belgium", "apa_prop_flag_brazil", "apa_prop_flag_canadat_yt", "apa_prop_flag_china", "apa_prop_flag_columbia", "apa_prop_flag_croatia", "apa_prop_flag_czechrep", "apa_prop_flag_denmark", "apa_prop_flag_england", "apa_prop_flag_eu_yt", "apa_prop_flag_finland", "apa_prop_flag_france", "apa_prop_flag_german_yt", "apa_prop_flag_hungary", "apa_prop_flag_ireland", "apa_prop_flag_israel", "apa_prop_flag_italy", "apa_prop_flag_jamaica", "apa_prop_flag_japan_yt", "apa_prop_flag_canada_yt", "apa_prop_flag_lstein", "apa_prop_flag_malta", "apa_prop_flag_mexico_yt", "apa_prop_flag_netherlands", "apa_prop_flag_newzealand", "apa_prop_flag_nigeria", "apa_prop_flag_norway", "apa_prop_flag_palestine", "apa_prop_flag_poland", "apa_prop_flag_portugal", "apa_prop_flag_puertorico", "apa_prop_flag_russia_yt", "apa_prop_flag_scotland_yt", "apa_prop_flag_script", "apa_prop_flag_slovakia", "apa_prop_flag_slovenia", "apa_prop_flag_southafrica", "apa_prop_flag_southkorea", "apa_prop_flag_spain", "apa_prop_flag_sweden", "apa_prop_flag_switzerland", "apa_prop_flag_turkey", "apa_prop_flag_uk_yt", "apa_prop_flag_us_yt", "apa_prop_flag_wales", "prop_flag_uk", "prop_flag_uk_s", "prop_flag_us", "prop_flag_usboat", "prop_flag_us_r", "prop_flag_us_s", "prop_flag_france", "prop_flag_france_s", "prop_flag_german", "prop_flag_german_s", "prop_flag_ireland", "prop_flag_ireland_s", "prop_flag_japan", "prop_flag_japan_s", "prop_flag_ls", "prop_flag_lsfd", "prop_flag_lsfd_s", "prop_flag_lsservices", "prop_flag_lsservices_s", "prop_flag_ls_s", "prop_flag_mexico", "prop_flag_mexico_s", "prop_flag_russia", "prop_flag_russia_s", "prop_flag_s", "prop_flag_sa", "prop_flag_sapd", "prop_flag_sapd_s", "prop_flag_sa_s", "prop_flag_scotland", "prop_flag_scotland_s", "prop_flag_sheriff", "prop_flag_sheriff_s", "prop_flag_uk", "prop_flag_uk_s", "prop_flag_us", "prop_flag_usboat", "prop_flag_us_r", "prop_flag_us_s", "prop_flamingo", "prop_swiss_ball_01", "prop_air_bigradar_l1", "prop_air_bigradar_l2", "prop_air_bigradar_slod", "p_fib_rubble_s", "prop_money_bag_01", "p_cs_mp_jet_01_s", "prop_poly_bag_money", "prop_air_radar_01", "hei_prop_carrier_radar_1", "prop_air_bigradar", "prop_carrier_radar_1_l1", "prop_asteroid_01", "prop_xmas_ext", "p_oil_pjack_01_amo", "p_oil_pjack_01_s", "p_oil_pjack_02_amo", "p_oil_pjack_03_amo", "p_oil_pjack_02_s", "p_oil_pjack_03_s", "prop_aircon_l_03", "prop_med_jet_01", "p_med_jet_01_s", "hei_prop_carrier_jet", "bkr_prop_biker_bblock_huge_01", "bkr_prop_biker_bblock_huge_02", "bkr_prop_biker_bblock_huge_04", "bkr_prop_biker_bblock_huge_05", "hei_prop_heist_emp", "prop_weed_01", "prop_air_bigradar", "prop_juicestand", "prop_lev_des_barge_02", "hei_prop_carrier_defense_01", "prop_aircon_m_04", "prop_mp_ramp_03", "stt_prop_stunt_track_dwuturn", "ch3_12_animplane1_lod", "ch3_12_animplane2_lod", "hei_prop_hei_pic_pb_plane", "light_plane_rig", "prop_cs_plane_int_01", "prop_dummy_plane", "prop_mk_plane", "v_44_planeticket", "prop_planer_01", "ch3_03_cliffrocks03b_lod", "ch3_04_rock_lod_02", "csx_coastsmalrock_01_", "csx_coastsmalrock_02_", "csx_coastsmalrock_03_", "csx_coastsmalrock_04_", "mp_player_introck", "Heist_Yacht", "csx_coastsmalrock_05_", "mp_player_int_rock", "mp_player_introck", "prop_flagpole_1a", "prop_flagpole_2a", "prop_flagpole_3a", "prop_a4_pile_01", "cs2_10_sea_rocks_lod", "cs2_11_sea_marina_xr_rocks_03_lod", "prop_gold_cont_01", "prop_hydro_platform", "ch3_04_viewplatform_slod", "ch2_03c_rnchstones_lod", "proc_mntn_stone01", "prop_beachflag_le", "proc_mntn_stone02", "cs2_10_sea_shipwreck_lod", "des_shipsink_02", "prop_dock_shippad", "des_shipsink_03", "des_shipsink_04", "prop_mk_flag", "prop_mk_flag_2", "proc_mntn_stone03", "FreeModeMale01", "rsn_os_specialfloatymetal_n", "rsn_os_specialfloatymetal", "cs1_09_sea_ufo", "rsn_os_specialfloaty2_light2", "rsn_os_specialfloaty2_light", "rsn_os_specialfloaty2", "rsn_os_specialfloatymetal_n", "rsn_os_specialfloatymetal", "P_Spinning_Anus_S_Main", "P_Spinning_Anus_S_Root", "cs3_08b_rsn_db_aliencover_0001cs3_08b_rsn_db_aliencover_0001_a", "sc1_04_rnmo_paintoverlaysc1_04_rnmo_paintoverlay_a", "rnbj_wallsigns_0001", "proc_sml_stones01", "proc_sml_stones02", "maverick", "Miljet", "proc_sml_stones03", "proc_stones_01", "proc_stones_02", "proc_stones_03", "proc_stones_04", "proc_stones_05", "proc_stones_06", "prop_coral_stone_03", "prop_coral_stone_04", "prop_gravestones_01a", "prop_gravestones_02a", "prop_gravestones_03a", "prop_gravestones_04a", "prop_gravestones_05a", "prop_gravestones_06a", "prop_gravestones_07a", "prop_gravestones_08a", "prop_gravestones_09a", "prop_gravestones_10a", "prop_prlg_gravestone_05a_l1", "prop_prlg_gravestone_06a", "test_prop_gravestones_04a", "test_prop_gravestones_05a", "test_prop_gravestones_07a", "test_prop_gravestones_08a", "test_prop_gravestones_09a", "prop_prlg_gravestone_01a", "prop_prlg_gravestone_02a", "prop_prlg_gravestone_03a", "prop_prlg_gravestone_04a", "prop_stoneshroom1", "prop_stoneshroom2", "v_res_fa_stones01", "test_prop_gravestones_01a", "test_prop_gravestones_02a", "prop_prlg_gravestone_05a", "FreemodeFemale01", "p_cablecar_s", "stt_prop_stunt_tube_l", "stt_prop_stunt_track_dwuturn", "p_spinning_anus_s", "prop_windmill_01", "hei_prop_heist_tug", "prop_air_bigradar", "p_oil_slick_01", "prop_dummy_01", "hei_prop_heist_emp", "p_tram_cash_s", "hw1_blimp_ce2", "prop_fire_exting_1a", "prop_fire_exting_1b", "prop_fire_exting_2a", "prop_fire_exting_3a", "hw1_blimp_ce2_lod", "hw1_blimp_ce_lod", "hw1_blimp_cpr003", "hw1_blimp_cpr_null", "hw1_blimp_cpr_null2", "prop_lev_des_barage_02", "hei_prop_carrier_defense_01", "prop_juicestand", "S_M_M_MovAlien_01", "s_m_m_movalien_01", "s_m_m_movallien_01", "u_m_y_babyd", "CS_Orleans", "A_M_Y_ACult_01", "S_M_M_MovSpace_01", "U_M_Y_Zombie_01", "s_m_y_blackops_01", "a_f_y_topless_01", "a_c_boar", "a_c_cat_01", "a_c_chickenhawk", "a_c_chimp", "s_f_y_hooker_03", "a_c_chop", "a_c_cormorant", "a_c_cow", "a_c_coyote", "v_ilev_found_cranebucket", "p_cs_sub_hook_01_s", "a_c_crow", "a_c_dolphin", "a_c_fish", "hei_prop_heist_hook_01", "prop_rope_hook_01", "prop_sub_crane_hook", "s_f_y_hooker_01", "prop_vehicle_hook", "prop_v_hook_s", "prop_dock_crane_02_hook", "prop_winch_hook_long", "a_c_hen", "a_c_humpback", "a_c_husky", "a_c_killerwhale", "a_c_mtlion", "a_c_pigeon", "a_c_poodle", "prop_coathook_01", "prop_cs_sub_hook_01", "a_c_pug", "a_c_rabbit_01", "a_c_rat", "a_c_retriever", "a_c_rhesus", "a_c_rottweiler", "a_c_sharkhammer", "a_c_sharktiger", "a_c_shepherd", "a_c_stingray", "a_c_westy", "CS_Orleans", "prop_windmill_01", "prop_Ld_ferris_wheel", "p_tram_crash_s", "p_oil_slick_01", "p_ld_soc_ball_01", "p_parachute1_s", "p_cablecar_s", "prop_beach_fire", "prop_lev_des_barge_02", "prop_lev_des_barge_01", "prop_sculpt_fix", "prop_flagpole_2b", "prop_flagpole_2c", "prop_winch_hook_short", "prop_flag_canada", "prop_flag_canada_s", "prop_flag_eu", "prop_flag_eu_s", "prop_flag_france", "prop_flag_france_s", "prop_flag_german", "prop_ld_hook", "prop_flag_german_s", "prop_flag_ireland", "prop_flag_ireland_s", "prop_flag_japan", "prop_flag_japan_s", "prop_flag_ls", "prop_flag_lsfd", "prop_flag_lsfd_s", "prop_cable_hook_01", "prop_flag_lsservices", "prop_flag_lsservices_s", "prop_flag_ls_s", "prop_flag_mexico", "prop_flag_mexico_s", "csx_coastboulder_00", "des_tankercrash_01", "des_tankerexplosion_01", "des_tankerexplosion_02", "des_trailerparka_02", "des_trailerparkb_02", "des_trailerparkc_02", "des_trailerparkd_02", "des_traincrash_root2", "des_traincrash_root3", "des_traincrash_root4", "des_traincrash_root5", "des_finale_vault_end", "des_finale_vault_root001", "des_finale_vault_root002", "des_finale_vault_root003", "des_finale_vault_root004", "des_finale_vault_start", "des_vaultdoor001_root001", "des_vaultdoor001_root002", "des_vaultdoor001_root003", "des_vaultdoor001_root004", "des_vaultdoor001_root005", "des_vaultdoor001_root006", "des_vaultdoor001_skin001", "des_vaultdoor001_start", "des_traincrash_root6", "prop_ld_vault_door", "prop_vault_door_scene", "prop_vault_door_scene", "prop_vault_shutter", "p_fin_vaultdoor_s", "prop_gold_vault_fence_l", "prop_gold_vault_fence_r", "prop_gold_vault_gate_01", "des_traincrash_root7", "prop_flag_russia", "prop_flag_russia_s", "prop_flag_s", "ch2_03c_props_rrlwindmill_lod", "prop_flag_sa", "prop_flag_sapd", "prop_flag_sapd_s", "prop_flag_sa_s", "prop_flag_scotland", "prop_flag_scotland_s", "prop_flag_sheriff", "prop_flag_sheriff_s", "prop_flag_uk", "prop_yacht_lounger", "prop_yacht_seat_01", "prop_yacht_seat_02", "prop_yacht_seat_03", "marina_xr_rocks_02", "marina_xr_rocks_03", "prop_test_rocks01", "prop_test_rocks02", "prop_test_rocks03", "prop_test_rocks04", "marina_xr_rocks_04", "marina_xr_rocks_05", "marina_xr_rocks_06", "prop_yacht_table_01", "csx_searocks_02", "csx_searocks_03", "csx_searocks_04", "csx_searocks_05", "csx_searocks_06", "p_yacht_chair_01_s", "p_yacht_sofa_01_s", "prop_yacht_table_02", "csx_coastboulder_00", "csx_coastboulder_01", "csx_coastboulder_02", "csx_coastboulder_03", "csx_coastboulder_04", "csx_coastboulder_05", "csx_coastboulder_06", "csx_coastboulder_07", "csx_coastrok1", "csx_coastrok2", "csx_coastrok3", "csx_coastrok4", "csx_coastsmalrock_01", "csx_coastsmalrock_02", "csx_coastsmalrock_03", "csx_coastsmalrock_04", "csx_coastsmalrock_05", "prop_yacht_table_03", "prop_flag_uk_s", "prop_flag_us", "prop_flag_usboat", "prop_flag_us_r", "prop_flag_us_s", "p_gasmask_s", "prop_flamingo"

    }
}


```

### Bans File Example

```
{
    "Dexvo": {
        "discord": "discord:387341502134878218",
        "ID": 1,
        "live": "NONE SUPPLIED",
        "xbl": "NONE SUPPLIED",
        "steam": "steam:11000011d1f6035",
        "reason": "Our anticheat caught you noclipping... You have been banned. You can apply for unban by providing your ban ID in your server ticket.",
        "ip": "NONE SUPPLIED",
        "license": "license:5f8edbb5cc9dd34b82cafdd713a4895ecc5a6968"
    }
}
```

* `"ID"` is the player's ban-ID to be used for `/ac-unban <ban-ID>` command

### Download

{% embed url="<https://github.com/JaredScar/Badger-Anticheat>" %}


# Badger\_Jailing

### What is it?

Badger\_Jailing is a pretty basic jailing script. I wrote it for my past FiveM server because the current jail system was wonky and would let people out of jail if they changed their ped model. This jail script functions a little bit differently than most however. Instead of having a single place to spend jail time, there are cells you define in the config. A player can only be in a cell if it is open. If all the cells are taken, then the player who was jailed will be on a queue waiting to be jailed when a cell is open. In general, I suggest 10+ cells defined in the config as well as a nice jail interior like the one displayed in `Images`. Another nice thing is that jail times carry over even when the server is restarted or a player leaves. Players therefore cannot afford their jail time. You do the crime, you do the time...

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### Images

![](https://i.gyazo.com/6ac0d98d3f6abcc51253cd35c9c28a8f.gif)

### Commands

`/jail <id> <time>` - Requires `Badger_Jailing.Jail` permission.

`/free <id>` - Requires `Badger_Jailing.Unjail` permission.

### Configuration

```
Config = {
    Prefix = '^1[^5Badger_Jailing^1] ^3',
    PrisonExit = { x = 1840.57, y = 2586.37, z = 45.95 },
    Cells = {
        ['Cell 1'] = { x = 1774.48, y = 2568.42, z = 49.55 },
        ['Cell 2'] = { x = 1778.49, y = 2568.26, z = 49.55 },
        ['Cell 3'] = { x = 1782.50, y = 2568.27, z = 49.55 },
        ['Cell 4'] = { x = 1786.21, y = 2568.40, z = 49.55 },
        ['Cell 5'] = { x = 1790.10, y = 2574.27, z = 49.55 },
        ['Cell 6'] = { x = 1790.03, y = 2577.72, z = 49.55 },
        ['Cell 7'] = { x = 1790.08, y = 2582.19, z = 49.55 },
        ['Cell 8'] = { x = 1790.00, y = 2586.09, z = 49.55 },
        ['Cell 9'] = { x = 1789.73, y = 2590.07, z = 49.55 },
        ['Cell 10'] = { x = 1789.93, y = 2594.00, z = 49.55 },
        ['Cell 11'] = { x = 1789.92, y = 2597.65, z = 49.55 },
        ['Cell 12'] = { x = 1785.60, y = 2602.10, z = 49.55 },
    },
}
```

### Download

{% embed url="<https://github.com/JaredScar/Badger_Jailing>" %}


# BadgerFires

## BadgerFires

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

### What is it?

I always see people asking for Fire scripts. The ones people usually use have tons of bugs and/or are broken, so I decided to create one that actually worked well with a lot of nice features to it. Hopefully you all can find some use out of it.

### All I ask

I make plenty of resources for these forums free of charge all for everyone's convenience. As a recently graduated college student I will be looking for a job soon, so having a following on GitHub really looks good to recruiters. In return for my efforts that benefit this community, I hope you all can pay it forward by giving me a follow on my GitHub, that's all. Thanks.

{% embed url="<https://github.com/JaredScar>" %}

### Commands

`/fire start <inFrontDistance> <size> <density> <flameScale>` - Starts a fire

`/fire preview <inFrontDistance> <size> <density> <flameScale>` - Previews a fire's size

`/fire stop <ID>` - Stops a fire based off it's ID

`/fire stopall` - Requires the `BadgerFires.StopAll` permission node

`/fires` - Lists all your started fires with their fire IDs

### Images

#### Command Usage Example

![](https://i.gyazo.com/8297820b15937c753709a109a86d0e14.png)

#### Fire Preview

![](https://i.gyazo.com/e7826bee53a74c66bcf97fc7963a9527.gif)

#### Fire Start

![](https://i.gyazo.com/e0ca13b53a6525f3404db8bcb34efbc5.gif)

#### The /fires command

![](https://i.gyazo.com/3be355df2693d271d02c0a501f49b6ac.png)

#### Turning off preview mode

![](https://i.gyazo.com/07f09c8c909c85b401a5af90325fc9a6.gif)

#### Stopping the fire

![](https://i.gyazo.com/563d3727f86a8434ea5d6ce5f323fc8a.gif)

### Configuration

```lua
Config = {
    MaxSize = 5,
    MaxDensity = 5,
    MaxFlameScale = 5,
    Concurrent = 1,
    AnyoneCanUse = true, -- Anyone can use it? -- THIS WILL DISABLE PERMISSIONS
}


-- ONLY ACTIVE IF `AnyoneCanUse` is set to false
Config.Permissions = { -- ACE PERMISSIONS
    ['BadgerFires.Start.15'] = {
        MaxSize = 15,
        MaxDensity = 15,
        MaxFlameScale = 15,
        Concurrent = 3,
    },
    ['BadgerFires.Start.30'] = {
        MaxSize = 30,
        MaxDensity = 30,
        MaxFlameScale = 30,
        Concurrent = 5,
    },
}
```

This should be pretty self explanatory...

### Credits

#### Lucas Decker (<lucas.d.200501@gmail.com>)

#### Dylan Thuillier (<itokoyamato@hotmail.fr>)

Thank you to these 2 individuals for the base code I based this resource off of. Despite it not being very well-documented, the code was well-written and I made it up to date with FiveM standards.

### Download

{% embed url="<https://github.com/JaredScar/BadgerFires>" %}


# Multiverse-World-Manager

## Multiverse-World-Manager

![Multiverse Logo](https://i.gyazo.com/fde6f4f7595f80ea1948bb4034a58f8b.png)

A FiveM Script taking advantage of routing buckets

### What is it?

Multiverse-World-Manager is part of a new series of FiveM scripts I will be releasing. It's essentially an idea I took from a very popular Minecraft plugin named `Multiverse`. This script essentially allows a server to have multiple `worlds` within their FiveM server. It's not actually different worlds, but different routing buckets (something the FiveM collective added a while ago). Players can change to different worlds depending on permissions and/or pick the world they want to load in at the loading screen (via AdaptiveCards).

I plan on releasing more Multiverse scripts, so make sure you keep a look out! The next script will probably be a Chat Manager to coordinates the chats between the different `worlds`.

### Screenshots

![Picture example of loading screen](https://i.gyazo.com/31a790a2a42ef879f47d9f72254a768a.jpg)

### Commands

`/world <worldName>` - This will teleport the player to this world and set their routing bucket to it.

### Configuration

```lua
Config = {
    Worlds = { -- ["WorldName"] = {RoutingBucket, Spawnpoint, PermissionRequired},
        ["Normal"] = {0, { 311.22, 3457.60, 36.15 }, false}, -- DO NOT REMOVE
        ["Donator"] = {1, { -269.34, 6628.99, 7.55 }, "Permission.Donator"},
        ["PVP"] = {2, { -1037.48, -2737.40, 20.17 }, false},
        ["PVP2"] = {3, { 1967.2, 3736.52, 32.21 }, false},
    },
    Messages = {
        ["WORLD_CHANGED"] = "Your world has been changed to {WORLD}", -- Set this to false if you do not want this message to be a thing
        ["WORLD_DOES_NOT_EXIST"] = "This world does not exist!",
        ["NO_PERMISSION"] = "You do not have permission to access this world..."
    },
    LoadingScreen = {
        Enabled = true,
        Banner = "https://i.gyazo.com/fde6f4f7595f80ea1948bb4034a58f8b.png",
        Title = "Welcome to our server!",
        Description = "Select the world you would like to join down below...",
        DisplayedWorlds = {
            ["RP World"] = {"Normal"},
            ["Donator World"] = {"Donator"},
            ["PVP World"] = {"PVP"},
        },
    }
}
```

`RoutingBucket` can be any digit from 0 to 64. 0 is the default routing bucket, meaning it's essentially the default route for FiveM.

`Spawnpoint` is the coordinates of where the player should be teleported upon respawn and joining the world. Format: { `x`, `y`, `z` }

`PermissionRequired` is the ACE permission required to be able to join the world. You can put `false` if you want everyone to have access to the world.

### Download

{% embed url="<https://github.com/JaredScar/Multiverse-World-Manager>" %}


# Introduction

### Badger's Discord Community

[![Developer Discord](https://discordapp.com/api/guilds/597445834153525298/widget.png?style=banner4)](https://discord.com/invite/WjB5VFz)

Welcome to the section of documentation that features my publicly made software. Some of this software can be FiveM scripts that include a web panel integration such as BadgerTrustSystem.&#x20;

Some of these projects can also be a simple discord bot such as EssentialBot which has some nifty features like mute, kick, tempban, ban, sticky commands and even a fully fledged ticket system.

If you have any further questions and/or concerns about anything within this documentation, you may gather more support personally and from other members of the Badger Developer Community over [here](https://discord.gg/Rmzgwpn).


# FivemDiscordPerms

## About

This project was started by Badger in March of 2020 in response to Discord disabling Fivem's API requests utilizing the RPC method they used without Discord's permission. Many FiveM servers used the discord features in script and it made life so much easier... FivemDiscordPerms aims to bring back that ease again, however has a workaround to getting users' discords.

## Images

![](https://i.gyazo.com/3d841cab3bc468e696a239e252cda78e.gif)

![](https://i.gyazo.com/28a0eca6d1edbbb6555f8fbf28b4446c.jpg)

![](https://i.gyazo.com/e75b91aa6849743658a10682444a34f9.jpg)

## How it works?

Essentially, FivemDiscordPerms has a database in which holds the information of players who join your server. You run this website along with the database and fivem script. When a player joins and does not have a database account, they will be instructed to create one as soon as they spawn in the server. We also have the option of running this website publicly for all to use, but this may cause rate-limiting, so it may be a better idea for you to run it individually for your servers only. However, in case you want the publicly available version (no setup required besides the Fivem script), you can find that further below including more information.

## How do I as a developer use the BadgerDiscordAPI?

&#x20;So clearly, I couldn't take over Fivem's identifiers function. I, however made the function exported named `GetDiscordIdentifier(src)` in which you pass `src` as the player source within the server-side of your script. To fully utilize this (within a lua script, not sure about C#, so please make a pull request on GitHub if you do): `exports.BadgerDiscordAPI:GetDiscordIdentifier(src)`

## Installation

* There are 2 options you can choose when installing FivemDiscordPerms. You can either use my personal database and website badger.store which I made publicly available for use or you can connect this to your own database and website.

**Installing using the provided database and website:**

* If you want to just use my database and website, just put BadgerDiscordAPI's `FIVEM-SCRIPTS-FOLDER`  scripts into your FiveM server. Then all you need to do is start all of the scripts just like you would any other resource. discord\_perms as well as the other discord scripts will need to be configured to fit your own needs though.
* You will now need to fix up your server.lua of FivemDiscordPerms config section
  * You will see the following at the top of the FivemDiscordPerms server.lua

```
port = 30120;
sitePath = 'https://badger.store/discordapi';
```

* You need to set `port` to the port that your FiveM server is running on
* Keep `sitePath` to what it is. That does NOT need to be changed

**Installing using your own assets:**

* You need to find the `config_example.php` file and rename it to `config.php`&#x20;
* You will then see a file like this shown below:

```
<?php
global $host;
global $port;
global $database;
global $username;
global $password;
$host = '';
$port = 3306;
$database = '';
$username = '';
$password = '';
global $clientID;
global $clientSecret;
global $urlRedirect;
global $redirect_URI;
$redirect_URI = '';
$urlRedirect = '';
$clientID = '';
$clientSecret = '';
?>
```

* Now, it is time to explain the values of the `config.php` configuration file.
  * `$host` is the variable that is for your database host name
  * `$port` is the port of your SQL database
  * `$database` is the database name you have your tables located at (more on that later)
  * `$username` is the username you use to login to your database
  * `$password` is the password you use to login to your database
  * `$redirect_URI` is the redirecting URI you will get via making a discord application
  * `$urlRedirect` is the URL to the discord application in which they will utilize to verify they own the discord account
  * `$clientID` is the client ID of your made discord application&#x20;
  * `$clientSecret` is the client secret of your made discord application
* You now need to make a discord application to fill in the discord steps of the configuration file
  * You will first navigate to <https://discordapp.com/developers/applications>
  * You will then want to make a new application
  * We suggest naming it "DiscordAPI" or something that is descriptive
  * You will then go to `OAuth2` and will want to set up redirects here
    * This is your `$redirect_URI`
  * You will then go down to `OAuth2 URL Generator` and want to select your `Redirect URL` and then click the scopes `identify` and `email`&#x20;
  * Then you will copy the link at the bottom of the page within the `Scopes` box
    * This is your `$urlRedirect`&#x20;
  * Now click `General Information`&#x20;
  * Click `Copy` under where the Client ID is shown
    * This is your `$clientID`&#x20;
  * Now `Copy` under where the Client Secret section is
    * This is your `$clientSecret`&#x20;
* After setting up the whole configuration file, you have now completed the web configuration part
* Place the whole web part of FivemDiscordPerms into your web server
* You will now need to fix up your server.lua of FivemDiscordPerms config section
  * You will see the following at the top of the FivemDiscordPerms server.lua

```
port = 30120;
sitePath = 'https://badger.store/discordapi';
```

* You need to set `port` to the port that your FiveM server is running on
* You need to set `sitePath` to where the website that contains the index.php of FivemDiscordPerms is located
* Once you set this part up, you have now completely installed FivemDiscordPerms successfully for your personal use


# BadgerTrustSystem+

## About

`BadgerTrustSystem+` is the most advanced trust system for the FiveM platform. Users can take control of their personal vehicles, peds, and/or weapons in-game that they purchased in the server's store. Give your users a better sense of security in which their personals cannot be used by others unless they give them permission. Use `BadgerTrustSystem+` :smile:

## Commands

`/trusts` - List all the trusts you have given out `/trust <spawncode>` List all the trusts you have given out to the vehicle and/or ped and/or weapon with the specified spawncode

`/vehicles` - List all the vehicles you have access to utilize `/peds` - List all the peds you have access to utilize

`/weapons` - List all the weapons you have access to utilize

`/trustVeh <id> <spawncode>` - Trust the vehicle to the provided server ID for the vehicle spawncode

`/trustPed <id> <spawncode>` - Trust the ped to the provided server ID for the ped spawncode

`/trustWeapon <id> <spawncode>` - Trust the weapon to the provided server ID for the weapon spawncode

`/revokeVeh <id> <spawncode>` - Revoke the trust of the vehicle spawncode from the provided server ID

`/revokePed <id> <spawncode>` - Revoke the trust of the ped spawncode from the provided server ID

`/revokeWeapon <id> <spawncode>` - Revoke the trust of the weapon spawncode from the provided server ID

`/clearVeh <spawncode>` - Clear the vehicle spawncode of any ownership and trusts&#x20;

`/clearPed <spawncode>` - Clear the ped spawncode of any ownership and trusts&#x20;

`/clearWeapon <spawncode>` - Clear the weapon spawncode of any ownership and trusts&#x20;

`/setVehOwner <id> <spawncode>` - Set the vehicle owner of the vehicle spawncode provided to the server ID provided's user

`/setPedOwner <id> <spawncode>` - Set the ped owner of the ped spawncode provided to the server ID provided's user

`/setWeaponOwner <id> <spawncode>` - Set the weapon owner of the weapon spawncode provided to the server ID provided's user

## Purchase

{% embed url="<https://store.collectivem.org/category/badgertrustsystem>" %}


# BadgerStaffPanel

## Setting up BadgerStaffPanel

### Discord Application Configuration

```
<?php
$clientID = '{CLIENT-ID}';
$clientSecret = '{CLIENT-SECRET}';
$redirect_URI = '{REDIRECT-URI}';
$guildID = '{GUILD-ID}';
$discordRedirectAuth = '{DISCORD-REDIRECT-AUTH}';
$botToken = '{BOT-TOKEN}';
```

* Navigate to <https://discordapp.com/developers/applications>&#x20;

![](https://4135746405-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M3gpAFypb73zWIFfO7w%2F-M8MLWCbKZILy0gvRu7Z%2F-M8awBzyaivJ6t-efycK%2Fimage.png?alt=media\&token=889fea96-c313-47b7-aea9-2bba14c21ebc)

* Click on `New Application` then name the bot what you would like

![](https://4135746405-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M3gpAFypb73zWIFfO7w%2F-M8MLWCbKZILy0gvRu7Z%2F-M8awzQ3tntAjLIELGBT%2Fimage.png?alt=media\&token=030623e7-32b7-4d6c-b3d3-1199b3d056af)

* Click `Copy` under the `Client ID` on the page. Then replace `{CLIENT-ID}` within the `config.php` file
* Click `Copy` under the `Client Secret` on the page. Then replace the `{CLIENT-SECRET}` within the `config.php` file
* Click on `OAuth2` within the side navigation bar
* Add your website's URL as a redirect, for example we will use `http://localhost` for a locally hosted website
* You will then want to generate a discord authorization link
* To do this, navigate down to the `OAuth2 URL Generator` section, then select our `http://localhost` redirect URL
* Now we choose the options we need for the authorization URL, select `identify`, `email`, and `guilds`&#x20;

![](https://4135746405-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M3gpAFypb73zWIFfO7w%2F-M8MLWCbKZILy0gvRu7Z%2F-M8ayXzGTESVnZ6ZiBJn%2Fimage.png?alt=media\&token=63af8d6a-eae5-41fb-b7a9-26a7f99531ea)

* Now you will want to click the `Copy` button and copy the huge link that has been generated
* Now we go back into our `config.php` file again

```
$redirect_URI = '{REDIRECT-URI}';
$guildID = '{GUILD-ID}';
$discordRedirectAuth = '{DISCORD-REDIRECT-AUTH}';
$botToken = '{BOT-TOKEN}';
```

* You now want to submit `http://localhost` where `{REDIRECT-URI}` is located
* You then want to submit the huge link you copied in the previous step and replace `{DISCORD-REDIRECT-AUTH}` with it
* You now need to get the guild ID of your discord server
* You will first turn on the developer mode in Discord to be able to do this (check below GIF)

![](https://i.gyazo.com/c6306c90a976361e2e1e3d4fc09f4d21.gif)

* Now you will need to copy your server's guild ID (check below GIF)

![](https://i.gyazo.com/0da39238b6975994e1c7272755a7ca0c.gif)

* Now replace `{GUILD-ID}` with the guild ID you just got through your discord application
* We now need to create a discord bot, navigate to `Bot` on the side navigation
* Create the discord bot, confirm creating it
* Now, click `Copy` and get the discord bot token
* Replace`{BOT-TOKEN}` within the `config.php` file with the token you had just copied
* Invite the discord bot to your server now by going to the `OAuth2` on the side navigation

![](https://4135746405-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M3gpAFypb73zWIFfO7w%2F-M8MLWCbKZILy0gvRu7Z%2F-M8b0KKHRVqKZFz4i9C_%2Fimage.png?alt=media\&token=33163437-eb4d-49b2-8e8f-c5aaee83d711)

* Click `Copy` and then enter the URL in a browser, then invite this bot to your discord server
* You have now completed the discord application configuration section of BadgerStaffPanel&#x20;

### Server API Configuration

```
$serverIP = '{SERVER-IP}';
$port = 80; // Website port
$steamAPIkey = '{STEAM-API-KEY}';
$server_port = 30120;
$rconPassword = '{RCON-PASSWORD}';
$serverName = '{SERVER-NAME}';
```

* Replace `{SERVER-IP}` with the server IP of your server
* Replace `80` with the port your website runs on (for most websites, the default port is port 80)
* Replace `{STEAM-API-KEY}` with the steam API key you get from a key you get from <https://steamcommunity.com/dev/apikey>
* Replace `30120` with the port of your FiveM server (for most servers, the default port is 30120)
* Replace `{RCON-PASSWORD}` with the RCON password within your `server.cfg` file&#x20;
* Replace `{SERVER-NAME}` with your server's name
* You have now completed the server API configuration section of BadgerStaffPanel

### SQL Configuration

```
// SQL INFO
$host = '';
$username = '';
$password = '';
$db = '';
$port = 3306;
```

### Website Permissions Configuration

```
$permissionsSetup = [
    '{T-MOD-RANK}' => [// Start T-Mod
        'Permission.Note',
        'Permission.Warn',
        'Permission.Kick',
        'Permission.RemoveNote',
        'Permission.RemoveWarn',
    ], // End T-Mod
    '{MOD-RANK}' => [// Start Mod
        'Permission.Note',
        'Permission.Warn',
        'Permission.Kick',
        'Permission.Tempban',
        'Permission.Ban',
        'Permission.RemoveNote',
        'Permission.RemoveWarn',
        'Permission.RemoveKick',
        'Permission.RemoveTempban',
    ], // End Mod
    '{ADMIN-RANK}' => [ // Start Admin
        'Permission.Note',
        'Permission.Warn',
        'Permission.Kick',
        'Permission.Tempban',
        'Permission.Ban',
        'Permission.RemoveNote',
        'Permission.RemoveWarn',
        'Permission.RemoveKick',
        'Permission.RemoveTempban',
        'Permission.RemoveBan',
    ], // End Admin
    '{MANAGEMENT-RANK}' => [ // Start Management
        'Permission.Note',
        'Permission.Warn',
        'Permission.Kick',
        'Permission.Tempban',
        'Permission.Ban',
        'Permission.RemoveNote',
        'Permission.RemoveWarn',
        'Permission.RemoveKick',
        'Permission.RemoveTempban',
        'Permission.RemoveBan',
    ], // End Management
];
```

* Replace `{T-MOD-RANK}` with the role ID of the T-Mod rank in your discord server
* Replace `{MOD-RANK}` with the role ID of the Mod rank in your discord server
* Replace `{ADMIN-RANK}` with the role ID of the Admin rank in your discord server
* Replace `{MANAGEMENT-RANK}` with the role ID of the Management rank in your discord server


# ResourceEventScrambler

[![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)](https://badger.store) [![forthebadge](https://forthebadge.com/images/badges/made-with-java.svg)](https://forthebadge.com)

[![forthebadge](https://forthebadge.com/images/badges/check-it-out.svg)](https://github.com/JaredScar/ResourceEventScrambler/releases)

### What is it?

ResourceEventScrambler is a Java program that was made with ease of usability in mind. It is a tool that can be used by FiveM servers to scramble their resources' events. By scrambling the events, this in turn makes it tougher for modders to come onto a server injecting pre-made lua menu scripts to utilize on your server. Most modders for the most part do not actually know how to code themselves. Many modders just use the executor and then insert a mod menu which is the ease of usability for them. Scrambling your resources will prevent most modders from doing any damage to your server, so it is a very smart way of deterring these malicious individuals.

### How to use

All you need to do to use it, is place the .zip you download from <https://github.com/JaredScar/ResourceEventScrambler/releases> (always use the latest release) into your `fx-server-data` folder (otherwise known as the directory/folder that holds your `server.cfg`). It is recommended you back up your `resources` folder before running this program (just to make sure). The program will make a backup by default of your `resources` folder, but who knows if it may miss something on accident. This is why I recommend backing it up yourself just in case.

1. Unzip the `.zip` into your `fx-server-data` folder (otherwise known as the directory/folder that&#x20;

   holds your `server.cfg` file)
2. Copy your `resources` folder (the resources folder that has never been scrambled)&#x20;

   and paste it to make a backup
3. Run the `resourceScramble.bat` to start scrambling your resources
4. Place `RES_Anticheat` in the `resources` folder and start it in your `server.cfg`
5. You are done! Your resources should now be properly scrambled just like eggs, but just no taste...

### RES\_Anticheat

After you have ran the scrambler, you will now have a brand new Anticheat to catch people trying to mod by triggering the events before you scrambled them. Move the `RES_Anticheat` directory into the now scrambled `resources` folder

### How do I add resources?

**After you have scrambled your resources, you can't add new resources to the `resources` directory anymore.**

You will need to add the resources to a backed up `resources` folder, then scramble this folder. Repeat steps 1-4 again in this case.

### Download

**Source Code (Java):**

{% embed url="<https://github.com/JaredScar/ResourceEventScrambler>" %}

**Built (with `.bat` executable):**

{% embed url="<https://github.com/JaredScar/ResourceEventScrambler/releases>" %}


# CollectiveBot

## Installation

* Navigate to <https://discordapp.com/developers/applications>&#x20;

![](https://i.gyazo.com/0c17de9c4829923b00be6582d63149f8.png)

* Click on `New Application` then name the bot what you would like (however `CollectiveBot` makes the most sense)

![](https://i.gyazo.com/b318fc46b86f4d18d479c157b900e6a4.png)

* Click on `Bot` on the side bar

![](https://i.gyazo.com/5bc9274b7df8cb3e94f883c52a3839a3.png)

* Click on `Add Bot`

![](https://i.gyazo.com/f182331bac6513777b4c8781bd4e2764.png)

* Click on `Copy` to copy your token
* Navigate to [https://github.com/TheWolfBadger/CollectiveBot/releases](https://github.com/thewolfbadger/collectivebot/releases) and download the latest release
* Extract the .zip file you download
* Navigate to the config.yml within the now extracted directory
* You should see something like this:

```
#######################
###  CollectiveBot  ###
###       by        ###
###     Badger      ###
#######################
BotToken: ''
Enables:
  SuggestionsAddon: true
  WelcomeMessage: true
SuggestionAcceptEmoji: ':YesEmoji:'
SuggestionDenyEmoji: ':NoEmoji:'
SuggestionApprovedEmoji: ':ApprovedEmoji:'
SuggestionDeniedEmoji: ':DeniedEmoji:'
SuggestionChannels:
  - '693985384907931719'
SuggestionDeniedChannel: '695294976908722229'
SuggestionApprovedChannel: '695294976908722229'
SuggestionRoles: # These are the roles that are allowed to approve and/or deny suggestions
  - '693833282240118794'

WelcomeMessage:
  Title: 'Welcome {USER-TAG} to Project Badger'
  TitleLink: ''
  Description: "**You're member #{MEMBER-COUNT} :tada:**"
  Footer: 'CollectiveBot by Badger'
  FooterIMG: 'https://i.gyazo.com/981a86c82860fc5ae5859bcd1bb0df09.gif'
  Thumbnail: '{USER-AVATAR}'
  Channel: '693836887651254283'
  Color: '0 254 0'
```

* You now will want to place that token you copied and place it into the `''` that comes after `BotToken:`&#x20;
* After doing this, save the config.yml file
* Go back to the applications page of the discord developers site
* Click on `OAuth2`&#x20;

![](https://i.gyazo.com/e52825f0f3a4f9bc471533eeeb235d7f.gif)

* Do exactly as is done in the GIF on the `OAuth2`&#x20;
* Paste this link you just copied into your browser, then invite the bot to your discord server you'd like the bot on
* You can invite this bot to as many servers as you'd like, however you will need to set up configurations for roles for each different server you add it to
* After doing all of this, you will have the bot properly set up to run and work on your server.
* All you need to do is click `start_CollectiveBot.bat` file to start up the bot

## Configuring Permissions via RoleIDs in config.yml

* You will now navigate to the `config.yml` file and open it
* We now need to understand how the configuration works

```
#######################
###  CollectiveBot  ###
###       by        ###
###     Badger      ###
#######################
BotToken: ''
Enables:
  SuggestionsAddon: true
  WelcomeMessage: true
SuggestionAcceptEmoji: ':YesEmoji:'
SuggestionDenyEmoji: ':NoEmoji:'
SuggestionApprovedEmoji: ':ApprovedEmoji:'
SuggestionDeniedEmoji: ':DeniedEmoji:'
SuggestionChannels:
  - '693985384907931719'
SuggestionDeniedChannel: '695294976908722229'
SuggestionApprovedChannel: '695294976908722229'
SuggestionRoles: # These are the roles that are allowed to approve and/or deny suggestions
  - '693833282240118794'

WelcomeMessage:
  Title: 'Welcome {USER-TAG} to Project Badger'
  TitleLink: ''
  Description: "**You're member #{MEMBER-COUNT} :tada:**"
  Footer: 'CollectiveBot by Badger'
  FooterIMG: 'https://i.gyazo.com/981a86c82860fc5ae5859bcd1bb0df09.gif'
  Thumbnail: '{USER-AVATAR}'
  Channel: '693836887651254283'
  Color: '0 254 0'
```

* The keys for most of the configuration are pretty straight forward
* `SuggestionRoles` is a list in which you can add multiple roleIDs under and they will be able to move suggestions to the approved and denied channels by adding the approved or denied emoji to the suggestion
* `SuggestionChannels` is a list in which you can add multiple suggestion channel-IDs and they will then automatically be given an AcceptEmoji and DenyEmoji when a message is posted within that channel

{% hint style="info" %}
**Any further questions and/or concerns?**

You may gather more support personally and from other members of the Badger Developer Community over [here](https://discord.gg/Rmzgwpn).
{% endhint %}


# SimpleRoleBot

## Installation

* Navigate to <https://discordapp.com/developers/applications>&#x20;

![](https://i.gyazo.com/0c17de9c4829923b00be6582d63149f8.png)

* Click on `New Application` then name the bot what you would like (however `SimpleRoleBot` makes the most sense)

![](https://i.gyazo.com/b318fc46b86f4d18d479c157b900e6a4.png)

* Click on `Bot` on the side bar

![](https://i.gyazo.com/5bc9274b7df8cb3e94f883c52a3839a3.png)

* Click on `Add Bot`

![](https://i.gyazo.com/f182331bac6513777b4c8781bd4e2764.png)

* Click on `Copy` to copy your token
* Navigate to <https://github.com/TheWolfBadger/SimpleRoleBot/releases> and download the latest release
* Extract the .zip file you download
* Navigate to the config.yml within the now extracted directory
* You should see something like this:

```
#############################
###     SimpleRoleBot     ###
###      created by       ###
###        Badger         ###
#############################
BotToken: ''
RoleConfiguration:
  693833984173408328: # Staff Role
    - '*' # All Permission for every role below their highest role
  693901091678716006: # National Guard OIC
    - '694065977398132738' # National Guard HC
    - '694065982565515265' # National Guard FTO
    - '694065982565515265' # National Guard Recruiter
    - '694065988206985244' # Military Police
    - '694065994850762794' # Civilian Contractor NG
    - '693900886535307346' # National Guardsmen
  694065977398132738: # National Guard HC
    - '694065982565515265' # National Guard FTO
    - '694065982565515265' # National Guard Recruiter
    - '694065988206985244' # Military Police
    - '694065994850762794' # Civilian Contractor NG
    - '693900886535307346' # National Guardsmen
  693856860750479371: # CHP Commissioner
    - '694648106117103728' # CHP High Command
    - '694648102300287187' # CHP Deputy Commissioner
    - '694648103193804902' # CHP FTO Evaluation Specialist
    - '694648104409890897' # CHP Patrol Administration
    - '694648107018879008' # CHP Assistant Commissioner
    - '694648108671434902' # CHP Chief
    - '694648110437236766' # CHP Colonel
    - '694648111418835076' # CHP Lieutenant Colonel
    - '694648113520181297' # CHP Major
    - '694648114438602804' # CHP Captain
    - '694649104801988618' # CHP Lieutenant
    - '694649105552638043' # CHP Staff Sergeant
    - '694649106391629914' # CHP Supervisor
    - '694649106894815252' # CHP Sergeant
    - '694649107943260170' # CHP Corporal
    - '694649108765343786' # CHP Patrol FTO
    - '694649108778188871' # Trooper First Class
    - '694649109922971669' # Trooper
    - '694649111995220560' # Probationary Trooper
    - '694649112544673850' # CHP Application Handler
    - '694649758584930404' # CHP Recruitment Team
    - '694678105503039519' # CHP Supervisor
    - '693856967445446656' # CHP
  694648106117103728: # CHP High Command
    - '694648102300287187' # CHP Deputy Commissioner
    - '694648103193804902' # CHP FTO Evaluation Specialist
    - '694648104409890897' # CHP Patrol Administration
    - '694648107018879008' # CHP Assistant Commissioner
    - '694648108671434902' # CHP Chief
    - '694648110437236766' # CHP Colonel
    - '694648111418835076' # CHP Lieutenant Colonel
    - '694648113520181297' # CHP Major
    - '694648114438602804' # CHP Captain
    - '694649104801988618' # CHP Lieutenant
    - '694649105552638043' # CHP Staff Sergeant
    - '694649106391629914' # CHP Supervisor
    - '694649106894815252' # CHP Sergeant
    - '694649107943260170' # CHP Corporal
    - '694649108765343786' # CHP Patrol FTO
    - '694649108778188871' # Trooper First Class
    - '694649109922971669' # Trooper
    - '694649111995220560' # Probationary Trooper
    - '694649112544673850' # CHP Application Handler
    - '694649758584930404' # CHP Recruitment Team
    - '694678105503039519' # CHP Supervisor
    - '693856967445446656' # CHP
  693857216725516299: # Sheriff
    - '694654347962876035' # SO High Command
    - '694653003184996423' # Chief Deputy
    - '694653005194199041' # Colonel
    - '694653007698198630' # Major
    - '694653017378521098' # Captain
    - '694653009552211988' # Lieutenant
    - '694653011569541140' # Sergeant
    - '694653013259845723' # Corporal
    - '694653015176773693' # Master Deputy
    - '694653019253506078' # Senior Deputy
    - '694653022525194372' # Deputy
    - '694653021019439174' # Probationary Deputy
    - '694735836456943666' # SO Awaiting Training
    - '694654349309378620' # SO FTO
    - '694654352052322384' # SO Application Handler
    - '694654353763598336' # SO Supervisor
    - '693857339672887367' # Sheriff Department
  694654347962876035: # SO High Command
    - '694653003184996423' # Chief Deputy
    - '694653005194199041' # Colonel
    - '694653007698198630' # Major
    - '694653017378521098' # Captain
    - '694653009552211988' # Lieutenant
    - '694653011569541140' # Sergeant
    - '694653013259845723' # Corporal
    - '694653015176773693' # Master Deputy
    - '694653019253506078' # Senior Deputy
    - '694653022525194372' # Deputy
    - '694653021019439174' # Probationary Deputy
    - '694735836456943666' # SO Awaiting Training
    - '694654349309378620' # SO FTO
    - '694654352052322384' # SO Application Handler
    - '694654353763598336' # SO Supervisor
    - '693857339672887367' # Sheriff Department
  693857132902088736: # LAPD Chief of Police
    - '694650836550287471' # LAPD High Command
    - '694649763156459550' # LAPD Assistant Chief of Police
    - '694650813997383711' # LAPD Deputy Chief of Police
    - '694650815893340271' # LAPD Commander
    - '694650818472837149' # LAPD Captain
    - '694650820532371528' # LAPD Lieutenant
    - '694650822751027200' # LAPD Police Sergeant II
    - '694650824931934248' # LAPD Police Sergeant
    - '694650827435933727' # LAPD Corporal
    - '694650829822623784' # LAPD Police Officer
    - '694650832452321301' # LAPD Trainee
    - '694650834285363200' # LAPD Supervisor
    - '694650838852829268' # LAPD Training Officer
    - '694650841230999553' # LAPD Application Handler
    - '693857015663034429' # LAPD
  694650836550287471: # LAPD High Command
    - '694649763156459550' # LAPD Assistant Chief of Police
    - '694650813997383711' # LAPD Deputy Chief of Police
    - '694650815893340271' # LAPD Commander
    - '694650818472837149' # LAPD Captain
    - '694650820532371528' # LAPD Lieutenant
    - '694650822751027200' # LAPD Police Sergeant II
    - '694650824931934248' # LAPD Police Sergeant
    - '694650827435933727' # LAPD Corporal
    - '694650829822623784' # LAPD Police Officer
    - '694650832452321301' # LAPD Trainee
    - '694650834285363200' # LAPD Supervisor
    - '694650838852829268' # LAPD Training Officer
    - '694650841230999553' # LAPD Application Handler
    - '693857015663034429' # LAPD
  693899388858138685: # Head of Fire/EMS
    - '694655531133960304' # Deputy Head of Fire/EMS
    - '694655532740378644' # High Command Fire/EMS
    - '694655533298483201' # MedEvac Team Leader
    - '694655535018147941' # Fire Commissioner
    - '694655536527966258' # Deputy Fire Commissioner
    - '694655538188779601' # District Chief
    - '694655539111657523' # Assistant District Chief
    - '694655540802093097' # Captain
    - '694655541703606283' # Lieutenant
    - '694655543192715466' # Firefighter
    - '694655544555864179' # Probationary Firefighter
    - '694655545851904011' # Senior Paramedic
    - '694657765888491601' # Paramedic
    - '694657770879975545' # EMT
    - '694657775552430193' # Probationary EMT
    - '694658269062365187' # Fire/EMS FTO
    - '694658273407795257' # Sr.Paramedic
    - '694658277421613056' # Senior Firefighter
    - '694658280454226161' # MedEvac
    - '693899961800327309' # Fire/EMS Department
  694655532740378644: # High Command Fire/EMS
    - '694655531133960304' # Deputy Head of Fire/EMS
    - '694655533298483201' # MedEvac Team Leader
    - '694655535018147941' # Fire Commissioner
    - '694655536527966258' # Deputy Fire Commissioner
    - '694655538188779601' # District Chief
    - '694655539111657523' # Assistant District Chief
    - '694655540802093097' # Captain
    - '694655541703606283' # Lieutenant
    - '694655543192715466' # Firefighter
    - '694655544555864179' # Probationary Firefighter
    - '694655545851904011' # Senior Paramedic
    - '694657765888491601' # Paramedic
    - '694657770879975545' # EMT
    - '694657775552430193' # Probationary EMT
    - '694658269062365187' # Fire/EMS FTO
    - '694658273407795257' # Sr.Paramedic
    - '694658277421613056' # Senior Firefighter
    - '694658280454226161' # MedEvac
    - '693899961800327309' # Fire/EMS Department
  693857605159747646: # FAA Director
    - '693901064847622146' # FAA Deputy Director
    - '693900243238125620' # FAA FTO
    - '693900419432448040' # FAA Flight Instructor
    - '694291765452079166' # FAA Mil-Grade
    - '693900058659127357' # FAA Commercial
    - '693899544513216563' # FAA Aircraft
    - '693899765561294939' # FAA Rotorcraft
    - '693857675888295976' # FAA Certified
    - '693899292716302486' # FAA Recruit
    - '693900790779215912' # FAA
    - '693900832718061638' # ATC FTO
    - '693900658473959496' # ATC
  693900243238125620: # FAA FTO
    - '693900419432448040' # FAA Flight Instructor
    - '694291765452079166' # FAA Mil-Grade
    - '693900058659127357' # FAA Commercial
    - '693899544513216563' # FAA Aircraft
    - '693899765561294939' # FAA Rotorcraft
    - '693857675888295976' # FAA Certified
    - '693899292716302486' # FAA Recruit
    - '693900790779215912' # FAA
    - '693900832718061638' # ATC FTO
    - '693900658473959496' # ATC
    - '693901064847622146' # FAA Deputy Director
```

* You now will want to place that token you copied and place it into the `''` that comes after `BotToken:`&#x20;
* After doing this, save the config.yml file
* Go back to the applications page of the discord developers site
* Click on `OAuth2`&#x20;

![](https://i.gyazo.com/e52825f0f3a4f9bc471533eeeb235d7f.gif)

* Do exactly as is done in the GIF on the `OAuth2`&#x20;
* Paste this link you just copied into your browser, then invite the bot to your discord server you'd like the bot on
* You can invite this bot to as many servers as you'd like, however you will need to set up configurations for roles for each different server you add it to
* After doing all of this, you will have the bot properly set up to run and work on your server.
* All you need to do is click `start_SimpleRoleBot.bat` file to start up the bot

## Configuring Permissions via RoleIDs in config.yml

* You will now navigate to the `config.yml` file and open it
* We now need to understand how the configuration works

```
#############################
###     SimpleRoleBot     ###
###      created by       ###
###        Badger         ###
#############################
BotToken: ''
RoleConfiguration:
  693833984173408328: # Staff Role
    - '*' # All Permission for every role below their highest role
  693901091678716006: # National Guard OIC
    - '694065977398132738' # National Guard HC
```

* The roles under `RoleConfiguration:` are known as the `RoleID` keys
* The `RoleID` keys `693901091678716006` and `693901091678716006` are the ID of roles that you will set up permissions for for adding and removing roles from other users
* All the `RoleID` values which can be displayed as `'*'` and `'694065977398132738'` are also IDs of roles within discord, however these are the IDs of roles that the `RoleID` key role will be able to add and remove from users
* **Note:** `693901091678716006` is the ID of the role `National Guard OIC` within my discord server
* **Note:** `693833984173408328` is the ID of the role `Staff` within my discord server
* If you would like to give a role permissions to add/remove roles to users (so long as the role is below their highest role), you will want to give them the `'*'` permission under their `RoleID` key

{% hint style="info" %}
**Any further questions and/or concerns?**

You may gather more support personally and from other members of the Badger Developer Community over [here](https://discord.gg/Rmzgwpn).
{% endhint %}


# EssentialBot

[![forthebadge](https://forthebadge.com/images/badges/built-with-love.svg)](https://badger.store) [![forthebadge](https://forthebadge.com/images/badges/made-with-java.svg)](https://forthebadge.com)

[![forthebadge](https://forthebadge.com/images/badges/check-it-out.svg)](https://github.com/JaredScar/EssentialBot/releases)

### What is it?

EssentialBot is well, an essential bot for your discord server. All of EssentialBot's commands can be configured to be used by discord roles on your discord server. This is a much more advanced permission system than discord's system considering you can set up permissions for each command and/or action the bot can perform.

**NOTE:** `A web panel for EssentialBot is planned down the line. (The web panel will use the live version and will only work for the live version) The web panel will have some actions be free, but will include an advanced permission system with UI that will be paid monthly to utilize.`

### Features

**Current Possible Permissions:** `permissionSticky`, `permissionKick`, `permissionShadowBan`, `permissionBan`

`=perm toggle <permission> <roleID>` - This command will toggle permissions for the role specified. A role tag or role ID can go in the `<roleID>` parameter.

`=help` - Shows the help menu for EssentialBot

`=sticky <msg>` - Sticky a message to the bottom of the screen, this will also turn the channel into a 15 second slowmode whilst a sticky message is active (by default).

`=unsticky` - This will unsticky a message from a channel (if there is an sticky message active within the channel it is ran in).

`=kick @User <reason>` - This will kick a user from the discord.

\*`=shadowb @User <reason>` - This will shadow ban a user from the discord. Basically they will be denied access to every discord channel within the discord. (Even if they join back!)

\*`=unshadowb @User` - This will unshadow ban a user from the discord.

\*`=ban @User <reason>` - This will ban the user from the discord permanently.

\*`=unban @User` - This will unban the user from the discord.

\*`Command` - This means this command and/or feature has not been implemented as of yet. It is a planned feature coming soon.

### Screenshots

![Using the Help Menu](https://i.gyazo.com/66c6939703788b487a43fdee852cf630.gif)

### Configuration

```yaml
###################
### Bot Details ###
###################
BotToken: ''

###################
### SQL Details ###
###################
Host: 'badger.store'
Database_Name: ''
Username: ''
Password: 'PASSWORD'
Port: 3306 # This is usually the default port for MySQL servers, you will most likely not need to change this
```

### Download

{% embed url="<https://github.com/JaredScar/EssentialBot>" %}

### Invite me to your server:

{% embed url="<https://discord.com/api/oauth2/authorize?client_id=606882845486481448&permissions=8&scope=bot>" %}


