Skip to content

Damage System ​

Retorno de combate: hitmarker e som de acerto, confirmação de abate com sequência, número de dano na tela, passaporte de quem você acertou e mira personalizada com presets. Também traz espiar pela quina, escalada de bordas e inspecionar a arma. Cada jogador ajusta o seu e os ajustes ficam salvos no banco.

Precisa de: oxmysql, ox_lib, krs_helper

Instalação ​

cfg
ensure damage_system

Coloque depois do krs_helper. A tabela é criada sozinha. Veja a ordem de instalação.

Comandos e teclas ​

Comando ou teclaO que faz
/hitAbre o painel de ajustes
/miraAbre o painel na aba da mira
/inspecionarInspeciona a arma. Tecla padrão: botão do meio do mouse
Q e E, mirandoEspia pela esquerda e pela direita

O jogador troca as teclas em Configurações > Teclas > FiveM.

A escalada de bordas não tem tecla. O personagem agarra a borda ao pular ou cair perto dela.

Painel ​

AbaO que tem
Hit e abateVolume, som de abate, som de acerto, efeito de abate, cor, NPCs e passaporte no hit
Dano na telaLiga ou desliga, cor no corpo, cor na cabeça, opacidade e tamanho
MiraForma, tamanho, espaço, espessura, cor, sempre visível e presets salvos

A opção "Sequência" do som de abate toca um som por abate seguido, até 5.

Permissão ​

Por padrão, todos usam tudo. Para restringir, liste os grupos em Groups. O servidor confere.

lua
Config.Groups = {
    Menu = { "Admin" },
    Crosshair = { "Policia", "Admin-2" },
    HitFeed = {}
}
CampoO que libera
MenuAbrir o painel pelo /hit
CrosshairMira personalizada e /mira
HitFeedReceber o passaporte de quem acertou

Sem o grupo de Menu, o /mira abre só a aba da mira, e o servidor grava só os campos da mira.

Sons ​

O script vem sem arquivos de som. Os botões tocam sons nativos do GTA, que não seguem o volume do painel. Volume 0 deixa mudo.

Para usar os seus:

  1. Coloque os arquivos .mp3, .ogg ou .wav em nui/sounds/.
  2. Liste em Config.Sounds:
lua
Config.Sounds = {
    Kill = { "sounds/a.mp3", "sounds/b.mp3" },
    Streak = {}
}
  1. Rode restart damage_system.

Kill aceita até 10 arquivos, na ordem dos botões 01 a 10. Botão sem arquivo usa KillNative. Streak aceita até 5 arquivos, um por abate seguido. Vazio usa StreakNative. Também vale URL https://.

Configuração ​

Tudo fica em config/config.lua. Só precisa ter o que você mudou. Os textos ficam em locales/*.json.

Geral ​

OpçãoPadrãoO que muda
Command"hit"Comando do painel. "" desliga
CrosshairCommand"mira"Comando da mira. "" desliga
InspectCommand"inspecionar"Comando de inspecionar. "" desliga
InspectKey"MOUSE_MIDDLE"Tecla padrão de inspecionar
InspectKeyMapper"MOUSE_BUTTON""MOUSE_BUTTON" para mouse, "keyboard" para teclado
CrosshairPresetSlots3Presets de mira por jogador
StreakWindow30000Tempo entre abates para a sequência subir, em ms
PanelTone = "#b3c0ff", Background = "rgba(12, 13, 17, 0.95)", Text = "#f3f1ed", Font = ""Visual do painel. Font vazio usa a fonte padrão
LogKillsfalseRegistra abates confirmados no log do krs_helper

Detecção e abate ​

OpçãoPadrãoO que muda
HitFeedtruefalse desliga o passaporte no hit para todos
ForceKilltrueO servidor confirma o abate e a vítima cai na hora. false deixa só o jogo decidir
DeathHealth100Vida em que o jogador conta como caído
DeathEventName = "player:Death", Server = trueEvento disparado quando o abate derruba a vítima. Name = "" desliga
MaxHitDistance500.0Distância máxima entre atirador e vítima, em metros
KillDamageWindow1500Janela em que o servidor soma o dano na vítima, em ms
HitCooldown80Intervalo mínimo entre sons de acerto na mesma vítima, em ms
KillDeduplicationTime15000Tempo máximo que um abate fica marcado para não contar de novo, em ms
KillSyncWindow1000Quanto o cliente espera a vítima cair depois de um acerto, em ms
FatalHitWindow300Espera antes de aplicar o abate confirmado na vítima, em ms

Padrões do jogador ​

Ficam em DefaultSettings. O botão "Restaurar padrão" do painel volta para estes valores.

OpçãoPadrãoO que muda
soundId0Som de abate. 0 desligado, 1 a 10 botões, 11 sequência
visualState0Efeito de abate. 0 desligado, 1 a 5 efeitos
bodySound0Som de acerto. 0 desligado, 1 a 10 botões
hitFeedStatefalsePassaporte no hit
volume0.5Volume de 0.0 a 1.0
color"#03ecfc"Cor dos efeitos
npcStatefalseHit, abate e dano também em NPCs
damageStatetrueMostra o dano na tela
damageColor"#DCDCDC"Cor do dano no corpo
headshotColor"#FF3B3B"Cor do dano na cabeça
damageOpacity0.95Opacidade, de 0.1 a 1.0
damageSize15Tamanho, de 10 a 32
crosshairEnabledfalseMira personalizada
crosshairsize = 13, gap = 1, width = 2, height = 2, color = "#FFFFFF", demais falseFormato da mira. Demais: circular, tstyle, bordered, alwaysOn

Movimento ​

Fica em Movement.

OpçãoPadrãoO que muda
Modelsmp_m_freemode_01, mp_f_freemode_01Modelos que podem espiar e escalar
BlockedStatesCarry, Commands, Buttons, CancelStatebags que bloqueiam espiar e escalar
AntiSlidetrueLiga o anti-deslize
PeekPadrãoO que muda
EnabledtrueLiga o espiar
Keysesquerda = "Q", direita = "E"Teclas padrão
AllowFirstPersontruePermite espiar em primeira pessoa
MaxSpeed4.5Acima dessa velocidade, correndo, não espia
MouseSensitivity8.0Sensibilidade da câmera ao espiar
ReticletrueDesenha um ponto na tela quando a mira personalizada está desligada

Peek.Weapons define o perfil por arma ou grupo. default vale para o resto. Pode criar chaves novas:

lua
WEAPON_PISTOL = { lean = 0.8 }
CampoPadrão (default)O que muda
enabledtruePermite espiar com a arma. Sniper, pesada, arremesso, corpo a corpo e desarmado vêm com false
lean1.0Inclinação do corpo, de 0.1 a 1.0
cameraLeft0.20Deslocamento da câmera à esquerda
cameraRight0.30Deslocamento da câmera à direita
clearance0.42Espaço livre exigido ao lado
LedgePadrãoO que muda
EnabledtrueLiga a escalada
ClimbFastfalseUsa a escalada rápida do jogo
Cooldown100Tempo entre escaladas, em ms
MinReach0.0Menor altura da borda, em metros
MaxReach2.0Maior altura da borda, em metros
WallDistance0.8Distância de procura da parede
WallProbeHeight0.2Altura inicial da procura
Prediction0.15Quanto a velocidade aumenta a procura
Angles0.0, -30.0, 30.0Ângulos da procura
MinApproach0.25Velocidade mínima em direção à parede
NoRagdollWhileFallingtrueEvita o ragdoll durante a queda
MaxFallSpeed9.0Caindo mais rápido que isso, não agarra

Para programadores ​

Quando o abate confirmado derruba a vítima, o cliente dela dispara DeathEvent com (atirador, arma):

lua
-- Server = true
RegisterNetEvent("player:Death", function(shooter, weapon) end)

Com Server = false, o evento é local no cliente.

Statebags lidos: Safezone, que impede o abate confirmado, Handcuff e os de Movement.BlockedStates.

Para enviar os abates ao Discord, ligue LogKills e use a convar do krs_helper:

cfg
set krs_helper_webhook "URL_DO_SEU_WEBHOOK"

Problemas comuns ​

MensagemCausa
tabela killconfirm_settings não ficou prontaO banco não respondeu ao iniciar. Os ajustes valem só até o jogador sair
animação krs@peek não carregouA animação não carregou em 5 segundos e o espiar fica desligado até reiniciar