DRS Deathscreen
Ecrã de morte moderno com monitor cardíaco ao vivo, temporizador, causa da morte e arma, pedido de ajuda ao INEM e câmara à volta do corpo.
Ecrã de morte moderno que funciona por cima do teu sistema de ambulância: monitor cardíaco ao vivo com som, temporizador circular, causa da morte e arma, INEM de serviço, pedido de ajuda com blip e câmara à volta do corpo. Reviver e fazer respawn continua a ser do teu sistema — sem conflitos.
#Requisitos
| Sistema de ambulância | qb-ambulancejob, qbx_medical, esx_ambulancejob, nenhum (modo standalone) ou outro através de exports |
| Base de dados | Não precisa |
#Instalação
- Coloca a pasta
drs_deathscreenemresourcese adiciona aoserver.cfg, depois do sistema de ambulância:
ensure drs_deathscreen- Desliga o deathscreen antigo, se tiveres.
- Ajusta os empregos do INEM, as teclas, a câmara e o som no
config.lua.
Dica
qb-ambulancejob: os tempos (ReviveInterval e DeathTime) são lidos sozinhos do config dele. O DeathTime é quanto tempo se espera, morto, até poder ir ao hospital.
Atenção
qb-ambulancejob: para esconder o texto antigo e não haver dois alertas ao INEM, comenta em qb-ambulancejob/client/dead.lua as linhas DrawTxt(...) (dentro de if isDead then e elseif InLaststand then) e a linha TriggerServerEvent('hospital:server:ambulanceAlert', Lang:t('info.civ_down')).
#Como funciona
- Ferido (last stand): o monitor bate cada vez mais devagar e o temporizador mostra o tempo até perder os sentidos.
- Inconsciente: linha reta com alarme; o temporizador mostra o tempo até poder ir ao hospital.
- G pede ajuda: os INEM de serviço recebem uma notificação e um blip que desaparece aos poucos. O cooldown é contado no servidor.
- E segurado, quando o tempo acaba, leva ao hospital (no modo nativo é o teu sistema de ambulância que o faz).
- A câmara anda à volta do corpo sem atravessar paredes, e o minimapa é escondido e reposto como estava.
#Causas de morte
Tiro, tiro na cabeça, arma branca, agressão, atropelamento, queda, afogamento, fogo, explosão e animal. O nome da arma vem do framework; quando o framework não o tem, é usada a lista das armas do GTA (PT/EN) incluída no script.
Nota
Em RP o autor da morte fica escondido por defeito (Config.ShowKiller = false).
#Opções principais
| Opção | Por defeito | Descrição |
|---|---|---|
Config.DeathSystem | auto | Sistema de ambulância usado |
Config.Timers | ferido 360 / ajuda 0 / morto 300 | Tempos (com o qb-ambulancejob vêm do config dele) |
Config.CallKey / Config.CallCooldown | G / 60 | Pedir ajuda |
Config.EmsJobs | ambulance, ems, doctor | Quem recebe os alertas |
Config.CustomDispatch | nil | Função para enviar também para outro dispatch (ex.: ps-dispatch) |
Config.ShowKiller / ShowWeapon / ShowDistance | não / sim / sim | O que aparece no ecrã |
Config.DeathCam | ligada | Câmara à volta do corpo |
Config.Sound | ligado, 0.25 | Som do batimento |
#Configuração completa
Config = {}
-- Idioma / Language: 'pt' ou 'en'
Config.Locale = 'pt'
-- Framework: 'auto' deteta Qbox/QBCore/ESX (ou 'qbx' | 'qb' | 'esx' | 'none')
Config.Framework = 'auto'
-- ------------------------------------------------------------------ sistema de morte / death system
-- O DRS Deathscreen é o ecrã; a morte, o reviver e o respawn continuam a ser do teu sistema de ambulância.
-- DRS Deathscreen is the screen; dying, reviving and respawning stay with your ambulance system.
-- 'auto' deteta / detects qb-ambulancejob, qbx_medical, esx_ambulancejob
-- 'qb-ambulancejob' | 'qbx_medical' | 'esx_ambulancejob'
-- 'standalone' sem sistema de ambulância: o próprio script faz o respawn / no ambulance system: this script respawns
-- 'exports' outro script controla o ecrã com exports.drs_deathscreen:SetState(...) / another script drives it
Config.DeathSystem = 'auto'
-- Tempos em segundos. Devem ser iguais aos do teu sistema de ambulância.
-- Times in seconds. They must match your ambulance system.
-- Com o qb-ambulancejob, 'down' e 'dead' são lidos sozinhos do config dele (ReviveInterval e DeathTime).
-- With qb-ambulancejob, 'down' and 'dead' are read from its own config (ReviveInterval and DeathTime).
Config.ReadAmbulanceConfig = true
Config.Timers = {
down = 360, -- ferido no chão (last stand) até morrer / downed (last stand) until dead
helpAfter = 0, -- segundos no chão até poder pedir ajuda (0 = logo) / seconds downed before help can be called (0 = right away)
dead = 300, -- morto até poder fazer respawn / dead until respawn is allowed
}
-- Respawn: tecla e tempo a segurar. No modo nativo, é o sistema de ambulância que faz o respawn
-- (o qb-ambulancejob usa E durante 5 s) e o ecrã só mostra o progresso.
-- Respawn: key and hold time. In native mode the ambulance system does the respawn (qb-ambulancejob uses
-- E for 5 s) and the screen only shows the progress.
Config.RespawnKey = 38 -- E
Config.RespawnKeyLabel = 'E'
Config.RespawnHold = 5
-- Só para 'standalone' / Only for 'standalone'
Config.Standalone = {
hospital = vector4(298.6, -584.5, 43.26, 70.0),
cost = 0, -- preço do respawn (0 = grátis) / respawn price (0 = free)
account = 'bank',
}
-- ------------------------------------------------------------------ pedir ajuda / calling EMS
Config.CallKey = 47 -- G
Config.CallKeyLabel = 'G'
Config.CallCooldown = 60 -- segundos entre pedidos (validado no servidor) / seconds between calls (server-checked)
Config.EmsJobs = { 'ambulance', 'ems', 'doctor' }
Config.EmsRequireDuty = true
-- Alerta para o INEM: notificação e blip no mapa durante estes segundos / EMS alert: notification and map blip for these seconds
Config.AlertBlipTime = 90
Config.AlertBlip = { sprite = 153, color = 1, scale = 1.1 }
-- Enviar também para um dispatch externo. Recebe (src, coords) e corre no SERVIDOR.
-- Also send to an external dispatch. Receives (src, coords) and runs on the SERVER.
Config.CustomDispatch = nil
--[[ exemplo / example (ps-dispatch):
Config.CustomDispatch = function(src, coords)
TriggerEvent('ps-dispatch:server:notify', { message = 'Pessoa inconsciente', codeName = 'civdown', code = '10-52',
icon = 'fas fa-heart-pulse', priority = 1, coords = coords, jobs = { 'ems' } })
end
]]
-- ------------------------------------------------------------------ o que aparece / what is shown
Config.ShowKiller = false -- mostrar o ID de quem matou (em RP costuma ficar desligado) / show the killer's ID (usually off for RP)
Config.ShowWeapon = true
Config.ShowDistance = true
Config.ShowEmsOnline = true
Config.HideRadar = true -- esconder o mapa enquanto está no chão / hide the minimap while down
-- Frases que aparecem por baixo do título (uma ao calhas). Vazio = nenhuma.
-- Lines shown under the title (one at random). Empty = none.
Config.Quotes = {
pt = {
'Aguenta. A ajuda pode estar a caminho.',
'Respira fundo. Ainda não acabou.',
'Alguém há de ouvir o teu pedido.',
},
en = {
'Hold on. Help might be on the way.',
'Breathe. It is not over yet.',
'Someone will hear your call.',
},
}
-- Som do batimento (gerado no ecrã, sem ficheiros) / Heartbeat sound (generated, no files)
Config.Sound = { enabled = true, volume = 0.25 }
-- Câmara à volta do corpo / Camera circling the body
Config.DeathCam = {
enabled = true,
distance = 4.5,
height = 2.2,
speed = 4.0, -- graus por segundo / degrees per second
fov = 55.0,
onlyWhenDead = false, -- true = só depois de morrer, não quando está ferido / only after death, not while downed
}
-- Deixar a rádio ao morrer (pma-voice) / Leave the radio on death (pma-voice)
Config.LeaveRadioOnDeath = false
-- Webhook do Discord para as mortes (vazio = desligado) / Discord webhook for deaths (empty = off)
Config.Webhook = ''
-- Notificações com ox_lib quando estiver a correr / Use ox_lib notifications when it is running
Config.UseOxNotify = false
#Para programadores
-- para ligar outro sistema de morte (Config.DeathSystem = 'exports')
exports.drs_deathscreen:SetState('down', 300) -- 'alive' | 'down' | 'dead', segundos opcionais
exports.drs_deathscreen:GetState()exports.drs_deathscreen:IsDown(src)
exports.drs_deathscreen:GetState(src) -- 'alive' | 'down' | 'dead'#Resolução de problemas
Aparece o texto antigo do qb-ambulancejob por baixo — vê o aviso na instalação.
O INEM recebe dois alertas — comenta o alerta do G no qb-ambulancejob (aviso na instalação).
A arma aparece como "Desconhecida" — a arma não existe no framework nem é uma arma base do GTA (armas addon sem nome); acrescenta-a aos itens/armas do framework.