Moje Aplikacje
Zarządzaj swoimi oficjalnymi aplikacjami, botami, intencjami oraz kluczami dostępowymi API.
Ładowanie aplikacji...
Kreator Embedów (Rich Embed Builder)
Modułowy kreator wiadomości bota z możliwością dowolnego dodawania, usuwania i układania bloków.
Biblioteka linkup-node (Node.js SDK)
Oficjalna biblioteka typu open-source w standardzie Discord.js v14 stworzona do budowy botów w LinkUp.
Instalacja Biblioteki
1. Inicjalizacja Klienta & Pierwszy Bot (Ping-Pong)
const { Client, Intents, EmbedBuilder } = require('linkup-node');
const client = new Client({
intents: [
Intents.Guilds,
Intents.GuildMessages,
Intents.MessageContent
],
// Domyślny adres bramy Gateway LinkUp
gatewayUrl: 'wss://api.link-up.lol'
});
client.on('ready', () => {
console.log(`[LinkUp] Zalogowano pomyślnie jako ${client.user.tag}!`);
client.user.setActivity('Zintegrowano z FiveM | dev.link-up.lol');
});
client.on('messageCreate', async (message) => {
// Ignoruj wiadomości od botów
if (message.author.bot) return;
if (message.content === '!ping') {
const embed = new EmbedBuilder()
.setTitle('Pong!')
.setDescription(`Opóźnienie bota wynosi: **${client.ws.ping}ms**`)
.setColor('#6366F1')
.setFooter({ text: 'LinkUp Official SDK' })
.setTimestamp();
await message.reply({ embeds: [embed] });
}
});
// Zaloguj się tokenem wygenerowanym w zakładce "Moje Aplikacje"
client.login('TWÓJ_TOKEN_BOTA_Z_DEVELOPER_PORTALU');
2. Rejestracja i Obsługa Komend Ukośnika (Slash Commands)
// Rejestracja komendy /status
client.on('ready', async () => {
await client.application.commands.create({
name: 'serwer',
description: 'Sprawdza aktualny status serwera FiveM oraz liczbę graczy online'
});
console.log('[SlashCommands] Komenda /serwer została zarejestrowana!');
});
// Obsługa interakcji użytkownika
client.on('interactionCreate', async (interaction) => {
if (!interaction.isCommand()) return;
if (interaction.commandName === 'serwer') {
await interaction.reply({
content: 'Serwer FiveM jest aktywny: **64/128 graczy online**.',
ephemeral: true
});
}
});
Wprowadzenie & Architektura
Kompleksowy most komunikacyjny łączący serwer gry FiveM z platformą LinkUp.
LinkUp_Panel jest w pełni wolnym oprogramowaniem pozbawionym jakichkolwiek mocków czy zaciemnionego kodu (brak obfuskacji), gotowym do publikacji na GitHubie.
Jak działa połączenie?
Integracja LinkUp z FiveM opiera się na architekturze dwukierunkowej:
- Outbound Telemetry (FiveM → LinkUp): Serwer FiveM w pętli co 1.5s zbiera współrzędne 3D (X, Y, Z), kierunek patrzenia (Heading), prędkość w km/h, zdrowie i pancerz każdego gracza, wysyłając bezpieczny raport HTTP do API LinkUp.
- Inbound Commands (LinkUp → FiveM): LinkUp komunikuje się z FiveM za pośrednictwem natywnego serwera HTTP w FiveM (
SetHttpCallback) na porcie serwera, umożliwiając restartowanie zasobów, wykonywanie komend konsoli czy wywoływanie akcji administratorskich. - Permission Bridge: Podczas dołączania gracza (
playerConnecting) skrypt odpytuje LinkUp o identyfikatory Steam/Discord/License gracza i automatycznie przyznaje mu uprawnienia ACE, rangę administracyjną ESX lub QBCore.
Wymagania Systemowe
| Komponent | Wymaganie minimalne | Zalecane |
|---|---|---|
| Wersja FXServer | FXServer Artifact 12000+ (Linux / Windows) | FXServer Artifact 14300+ (Najnowszy master release) |
| Standard Lua | Lua 5.4 | Lua 5.4 (cerulean manifest) |
| Framework | Standalone / ESX Legacy 1.10+ / QBCore | Dowolny (automatyczna detekcja) |
| Połączenie HTTP | cURL wbudowany w FXServer | Włączony HTTPS |
Instalacja LinkUp_Panel
Instrukcja krok po kroku instalacji zasobu na serwerze FiveM.
Krok 1: Pobranie lub skopiowanie folderu
Skopiuj folder LinkUp_Panel do katalogu zasobów Twojego serwera FiveM:
Krok 2: Dodanie do server.cfg
Otwórz plik server.cfg i upewnij się, że zasób uruchamia się po Twoim głównym frameworku (np. po es_extended lub qb-core):
# Uruchomienie frameworku
ensure es_extended
# Uruchomienie LinkUp Panel
ensure LinkUp_Panel
Krok 3: Nadanie uprawnień ACE w server.cfg
Aby zasób mógł restartować inne skrypty i nadawać permisje graczom, nadaj uprawnienia zasobowi:
add_ace resource.LinkUp_Panel command allow
add_ace resource.LinkUp_Panel command.restart allow
add_ace resource.LinkUp_Panel command.start allow
add_ace resource.LinkUp_Panel command.stop allow
Konfiguracja config.lua
Szczegółowy opis wszystkich opcji konfiguracyjnych w pliku config.lua.
Config = {}
-- Adres URL Twojego backendu LinkUp (używaj domeny HTTPS zamiast surowego IP)
Config.ApiUrl = "https://link-up.lol"
-- Tajny token autoryzacyjny Twojego serwera FiveM (generowany w panelu LinkUp)
Config.ServerToken = "linkup_fivem_sec_abc123xyz"
-- Częstotliwość odświeżania telemetrii graczy (w milisekundach)
Config.TelemetryInterval = 1500
-- Mapowanie ról z LinkUp na permisje FiveM
Config.RoleMapping = {
["Zarząd"] = { aceGroup = "group.admin", esxGroup = "admin", qbPermission = "admin" },
["Support"] = { aceGroup = "group.mod", esxGroup = "mod", qbPermission = "mod" },
["VIP"] = { aceGroup = "group.vip", esxGroup = "user", qbPermission = "user" }
}
-- Klawisz otwierania dashboardu NUI w grze
Config.MenuKey = "F10"
Synchronizacja Ról & Uprawnień
Automatyczne nadawanie uprawnień administratora na podstawie ról w LinkUp.
LinkUp_Panel wysyła zapytanie do API LinkUp, sprawdzając identyfikator Discorda lub Steam gracza. Jeśli użytkownik posiada rolę np. "Zarząd", w FiveM natychmiast otrzymuje grupę admin.
Wspierane Frameworki
- Natywne ACE (Standalone): Wywołanie
ExecuteCommand(('add_principal identifier.%s %s'):format(license, aceGroup)) - ESX Legacy: Automatyczna aktualizacja obiektu
xPlayer.setGroup(esxGroup) - QBCore: Przypisanie
QBCore.Functions.AddPermission(source, qbPermission)
Telemetria 3D & Radar na Żywo
Śledzenie lokalizacji, prędkości pojazdów i stanu zdrowia graczy na żywo.
Struktura Payloadu Telemetrii
{
"serverToken": "linkup_fivem_sec_abc123xyz",
"playersCount": 32,
"telemetry": [
{
"source": 1,
"name": "Jan_Kowalski",
"coords": { "x": 215.3, "y": -810.4, "z": 30.5 },
"heading": 182.4,
"health": 200,
"armor": 100,
"inVehicle": true,
"vehicleSpeed": 85.4
}
]
}
Zarządzanie Zasobami & HTTP Bridge
Zdalne sterowanie stanem skryptów (Start, Stop, Restart) z poziomu panelu LinkUp.
Zdalny Restart Skryptu przez API
POST /LinkUp_Panel/resources/control
Headers:
Authorization: Bearer linkup_fivem_sec_abc123xyz
Content-Type: application/json
Payload:
{
"resource": "es_extended",
"action": "restart"
}
Bezpieczeństwo & Bearer Tokens
Jak chronione jest połączenie między LinkUp a FiveM.
Config.ServerToken na publicznych repozytoriach. Każde zapytanie HTTP bez poprawnego nagłówka Bearer jest natychmiast odrzucane z kodem 401 Unauthorized.
Lua Exports & Przykłady
Eksporty Lua do wykorzystania we własnych skryptach FiveM.
Wysłanie logu akcji do LinkUp
-- Wywołanie z dowolnego skryptu serwerowego
exports['LinkUp_Panel']:SendLinkUpLog({
action = "GRACZ_UKARANY",
admin = "Janusz",
target = "Piotr",
reason = "VDM na zielonej strefie"
})
Pobranie ról gracza z LinkUp
local roles = exports['LinkUp_Panel']:GetPlayerLinkUpRoles(source)
if roles["Zarząd"] then
print("Gracz posiada rangę Zarządu w LinkUp!")
end