153 lines
5.1 KiB
Markdown
153 lines
5.1 KiB
Markdown
|
|
# ConnectQueue
|
|||
|
|
---
|
|||
|
|
Easy to use queue system for FiveM with:
|
|||
|
|
- Simple API
|
|||
|
|
- Priority System
|
|||
|
|
- **Advanced Logging System** 🆕
|
|||
|
|
- Config
|
|||
|
|
- Ability for whitelist only
|
|||
|
|
- Require steam
|
|||
|
|
- Language options
|
|||
|
|
|
|||
|
|
**Please report any bugs on the release thread [Here](https://forum.fivem.net/t/alpha-connectqueue-a-server-queue-system-fxs/22228) or through [GitHub](https://github.com/Nick78111/ConnectQueue/issues).**
|
|||
|
|
|
|||
|
|
## How to install
|
|||
|
|
---
|
|||
|
|
- Drop the folder inside your resources folder.
|
|||
|
|
- Add `start connectqueue` inside your server.cfg. - *Preferrably at the top*
|
|||
|
|
- Set convars to your liking.
|
|||
|
|
- Open `connectqueue/server/sv_queue_config.lua` and edit to your liking.
|
|||
|
|
- Renaming the resource may cause problems.
|
|||
|
|
|
|||
|
|
## ConVars
|
|||
|
|
---
|
|||
|
|
set sv_debugqueue true # prints debug messages to console
|
|||
|
|
set sv_displayqueue true # shows queue count in the server name '[count] server name'
|
|||
|
|
|
|||
|
|
## Advanced Logging System 🆕
|
|||
|
|
---
|
|||
|
|
The queue now features a comprehensive logging system with:
|
|||
|
|
|
|||
|
|
### Log Levels & Colors
|
|||
|
|
| Level | Color | Icon | Description |
|
|||
|
|
|-------|-------|------|-------------|
|
|||
|
|
| DEBUG | ^5 (Cyan) | 🔍 | Detailed debug information |
|
|||
|
|
| INFO | ^2 (Green) | ℹ️ | General information |
|
|||
|
|
| WARN | ^3 (Yellow) | ⚠️ | Warning messages |
|
|||
|
|
| ERROR | ^1 (Red) | ❌ | Error messages |
|
|||
|
|
| SUCCESS | ^2 (Green) | ✅ | Successful operations |
|
|||
|
|
| PLAYER | ^6 (Purple) | 👤 | Player-related events |
|
|||
|
|
| QUEUE | ^4 (Blue) | 📋 | Queue operations |
|
|||
|
|
| PRIORITY | ^8 (Orange) | ⭐ | Priority-related events |
|
|||
|
|
| TIMEOUT | ^1 (Red) | ⏱️ | Timeout events |
|
|||
|
|
| SYSTEM | ^9 (Pink) | ⚙️ | System messages |
|
|||
|
|
|
|||
|
|
### Log Format
|
|||
|
|
```
|
|||
|
|
[HH:MM:SS] [LEVEL] 🔍 Message
|
|||
|
|
├─ Key1: Value1
|
|||
|
|
├─ Key2: Value2
|
|||
|
|
└─ Key3: Value3
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Console Commands
|
|||
|
|
Use `rcon queue <command>` to access these debug commands:
|
|||
|
|
| Command | Description |
|
|||
|
|
|---------|-------------|
|
|||
|
|
| `addq` | Add debug queue entry |
|
|||
|
|
| `removeq <index>` | Remove from queue by index |
|
|||
|
|
| `printq` | Print formatted queue list |
|
|||
|
|
| `addc` | Add debug connecting entry |
|
|||
|
|
| `removec <index>` | Remove from connecting by index |
|
|||
|
|
| `printc` | Print formatted connecting list |
|
|||
|
|
| `printl` | Print active players list |
|
|||
|
|
| `printp` | Print priority list |
|
|||
|
|
| `printcount` / `stats` | Print server statistics |
|
|||
|
|
| `printtp` | Print temp priority list |
|
|||
|
|
| `removetp <id>` | Remove temp priority |
|
|||
|
|
| `setpos <index> <newpos>` | Set queue position |
|
|||
|
|
| `setdata <index> <field> <value>` | Modify player data |
|
|||
|
|
| `commands` | Show all available commands |
|
|||
|
|
|
|||
|
|
### Example Output
|
|||
|
|
```
|
|||
|
|
╔══════════════════════════════════════════════════════════════╗
|
|||
|
|
║ 📊 QUEUE STATISTICS ║
|
|||
|
|
╚══════════════════════════════════════════════════════════════╝
|
|||
|
|
Players Online: 45 / 64
|
|||
|
|
Queue Size: 12
|
|||
|
|
Connecting: 2
|
|||
|
|
Available Slots: 17
|
|||
|
|
──────────────────────────────────────────────────────────────
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## How to use / Examples
|
|||
|
|
---
|
|||
|
|
To use the API add `server_script "@connectqueue/connectqueue.lua"` at the top of the `__resource.lua` file in question.
|
|||
|
|
I would also suggest adding `dependency "connectqueue"` to it aswell.
|
|||
|
|
You may now use any of the functions below, anywhere in that resource.
|
|||
|
|
|
|||
|
|
### OnReady
|
|||
|
|
This is called when the queue functions are ready to be used.
|
|||
|
|
```Lua
|
|||
|
|
Queue.OnReady(function()
|
|||
|
|
print("HI")
|
|||
|
|
end)
|
|||
|
|
```
|
|||
|
|
All of the functions below must be called **AFTER** the queue is ready.
|
|||
|
|
|
|||
|
|
### OnJoin
|
|||
|
|
This is called when a player tries to join the server.
|
|||
|
|
Calling `allow` with no arguments will let them through.
|
|||
|
|
Calling `allow` with a string will prevent them from joining with the given message.
|
|||
|
|
`allow` must be called or the player will hang on connecting...
|
|||
|
|
```Lua
|
|||
|
|
Queue.OnJoin(function(source, allow)
|
|||
|
|
allow("No, you can't join")
|
|||
|
|
end)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## AddPriority
|
|||
|
|
Call this to add an identifier to the priority list.
|
|||
|
|
The integer is how much power they have over other users with priority.
|
|||
|
|
This function can take a table of ids or individually.
|
|||
|
|
```Lua
|
|||
|
|
-- individual
|
|||
|
|
Queue.AddPriority("STEAM_0:1:33459672", 100)
|
|||
|
|
Queue.AddPriority("steam:110000103fd1bb1", 10)
|
|||
|
|
Queue.AddPriority("ip:127.0.0.1", 25)
|
|||
|
|
|
|||
|
|
-- table
|
|||
|
|
local prioritize = {
|
|||
|
|
["STEAM_0:1:33459672"] = 100,
|
|||
|
|
["steam:110000103fd1bb1"] = 10,
|
|||
|
|
["ip:127.0.0.1"] = 25,
|
|||
|
|
}
|
|||
|
|
Queue.AddPriority(prioritize)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## RemovePriority
|
|||
|
|
Removes priority from a user.
|
|||
|
|
```Lua
|
|||
|
|
Queue.RemovePriority("STEAM_0:1:33459672")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## IsReady
|
|||
|
|
Will return whether or not the queue's exports are ready to be called.
|
|||
|
|
```Lua
|
|||
|
|
print(Queue.IsReady())
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Other Queue Functions
|
|||
|
|
You can call every queue function within sh_queue.lua.
|
|||
|
|
```Lua
|
|||
|
|
local ids = Queue.Exports:GetIds(src)
|
|||
|
|
|
|||
|
|
-- sets the player to position 1 in queue
|
|||
|
|
Queue.Exports:SetPos(ids, 1)
|
|||
|
|
-- returns whether or not the player has any priority
|
|||
|
|
Queue.Exports:IsPriority(ids)
|
|||
|
|
--- returns size of queue
|
|||
|
|
Queue.Exports:GetSize()
|
|||
|
|
-- plus many more...
|
|||
|
|
```
|