DRS Loading Screen
Ecrã de carregamento moderno:
- progresso real com as fases (recursos, mapa, mundo, entrada na cidade);
- boas-vindas com o nome do jogador e quantos estão online;
- imagem de fundo incluída, diaporama de imagens, vídeo ou o fundo animado da DRS;
- leitor de música (pausa com ESPAÇO, faixa seguinte, volume);
- separadores de Novidades, Regras, Teclas e Equipa e dicas que vão rodando;
- botões para o Discord, site, loja, TikTok, YouTube, Instagram e Twitch;
- saída suave, e deixa o multicharacter fechá-lo quando existe.
Não depende de framework.
#Requisitos
Nada obrigatório.
#Instalação
- Coloca
drs_loadingscreenemresources. - Desliga o outro ecrã de carregamento (só pode haver um).
- Põe o logótipo, imagens, vídeo e músicas em
html/assets/e editahtml/config.js. - Adiciona
ensure drs_loadingscreenaoserver.cfg.
Dica
Os ficheiros de html/assets/ são descarregados por cada jogador antes de entrar: usa música em mp3 (128 kbps chega) e vídeos curtos para não atrasar a entrada.
#Aspeto (html/config.js)
Tudo o que aparece no ecrã está neste ficheiro:
| Opção | O que faz |
|---|---|
serverName, tagline, logo | Nome, frase e logótipo (vazio = inicial do nome) |
accent, accent2 | Cores |
video / backgrounds | Vídeo ou lista de imagens; lista vazia = fundo animado |
dim | Quanto escurece o fundo (0 a 0.9) |
music | Faixas, volume, ordem aleatória, tocar sozinho |
tips | Dicas junto à barra |
news, rules, keybinds, team | Separadores (uma lista vazia esconde o separador) |
socials | Botões das redes (discord, website, store, tiktok, youtube, instagram, twitch) |
locale | pt ou en |
#Quem fecha o ecrã (config.lua)
'detect'(por defeito): se houver um multicharacter ligado, é ele que fecha; senão fecha sozinho quando o jogador entra;'auto': fecha sempre sozinho;'external': outro script fecha, e fecha à força ao fim deFailsafeSeconds.
#Configuração
config.lua
-- DRS Loading Screen — configuração do lado do jogo / game-side configuration
-- O aspeto (nome, cores, música, notícias, regras...) está em html/config.js.
-- The look (name, colours, music, news, rules...) lives in html/config.js.
Config = {}
-- Quem fecha o ecrã de carregamento / who closes the loading screen:
-- 'detect' : se houver um multicharacter ligado, é ele que fecha; senão fecha sozinho
-- if a multicharacter resource is running it closes it; otherwise it closes by itself
-- 'auto' : fecha sempre sozinho quando o jogador entra / always closes by itself when the player joins
-- 'external' : outro script fecha (com segurança ao fim de FailsafeSeconds) / another script closes it (failsafe after FailsafeSeconds)
Config.Shutdown = 'detect'
Config.Multicharacters = {
'qb-multicharacter', 'um-multicharacter', 'qbx_core', 'esx_multicharacter', 'ps-multicharacter',
'bl_multicharacter', '0r-multicharacter', 'ak47_multicharacter', 'okokMulticharacter',
}
Config.DelayMs = 1500 -- espera depois de o jogador entrar (modo auto) / wait after joining (auto mode)
Config.FailsafeSeconds = 90 -- fecha à força se ninguém o fechar / force-close if nobody does
-- Mostrar o nome do jogador e quantos estão online no ecrã / show the player name and online count
Config.Handover = true#html/config.js
config.js
// DRS Loading Screen — configuração / configuration
// Os ficheiros locais (imagens, vídeo, música) vão para html/assets/ e ficam incluídos pelo fxmanifest (html/assets/*).
// Local files (images, video, music) go in html/assets/ and are included by the fxmanifest (html/assets/*).
window.DRS_LOADING = {
locale: "pt", // "pt" | "en"
serverName: "O Meu Servidor",
tagline: "Roleplay a sério, desde 2024.",
logo: "", // ex.: "assets/logo.png" (vazio = inicial do nome / empty = name initial)
accent: "#7c5cff",
accent2: "#22d3ee",
// Fundo: vídeo (mp4/webm) OU imagens em diaporama. Lista vazia = fundo animado da DRS.
// Background: video (mp4/webm) OR image slideshow. Empty list = DRS animated background.
video: "", // ex.: "assets/fundo.mp4"
backgrounds: ["assets/bg-default.jpg"], // ex.: ["assets/bg1.jpg", "assets/bg2.jpg"]
slideSeconds: 8,
dim: 0.55, // escurecer o fundo (0 a 0.9) / darken the background
music: {
enabled: true,
autoplay: true,
volume: 0.3,
shuffle: true,
tracks: [
// { title: "Nome da música", artist: "Artista", file: "assets/musica1.mp3" },
],
},
// Dicas que vão rodando junto à barra / tips rotating next to the bar
tips: [
"Usa /report para falar com a staff a qualquer momento.",
"Lê as regras antes de entrar: poupam-te avisos e banimentos.",
"Guarda os veículos na garagem antes de sair do servidor.",
"Precisas de ajuda? O nosso Discord tem um canal de suporte 24/7.",
],
tipSeconds: 7,
// Separadores do painel (apaga uma lista para esconder o separador) / panel tabs (empty a list to hide the tab)
news: [
{ tag: "Atualização", date: "06/10", title: "Nova temporada de Halloween", text: "Abóboras pela cidade, missões diárias e prémios exclusivos até 5 de novembro." },
{ tag: "Evento", date: "04/10", title: "Corrida de rua no sábado", text: "Inscrições no Discord. Prémio de 50 000 $ para o primeiro lugar." },
{ tag: "Servidor", date: "01/10", title: "Novo stand de veículos", text: "Test drives, financiamento e propostas de vendedores." },
],
rules: [
"Respeita todos os jogadores e a staff, dentro e fora do personagem.",
"Sem RDM nem VDM: tem sempre um motivo de roleplay.",
"Metagaming e powergaming dão banimento.",
"Não uses bugs nem programas externos.",
"Fica no personagem; para assuntos fora do jogo usa o /report.",
],
keybinds: [
{ key: "F1", label: "Menu do telemóvel" },
{ key: "TAB", label: "Inventário" },
{ key: "HOME", label: "Lista de jogadores" },
{ key: "L", label: "Trancar o veículo" },
{ key: "Z", label: "Menu rápido" },
{ key: "T", label: "Chat" },
],
team: [
{ name: "Fundador", role: "Fundador", avatar: "" },
{ name: "Administrador", role: "Administração", avatar: "" },
{ name: "Moderador", role: "Moderação", avatar: "" },
],
// type: discord | website | tiktok | youtube | instagram | twitch | store
socials: [
{ type: "discord", label: "Discord", url: "https://discord.gg/" },
{ type: "website", label: "Site", url: "https://" },
{ type: "store", label: "Loja", url: "https://" },
],
};