Damagevg2
Key RequiredUniversal

Damagevg2

Universal Scriptdavyramos14davyramos14 9.4K views 2.6K executesUpdated Sep 27, 2025
Unrated
00
Lua Script•32 lines (1530 chars)
-- Script que Lança o Projétil (Exemplo de um Script de Servidor)

local RemoteEvent = game.ReplicatedStorage:WaitForChild("LancarProjetil") -- Supondo que você tem um RemoteEvent
local ProjetilModelo = game.ServerStorage:WaitForChild("SeuProjetil") -- O projétil com o script de dano dentro

RemoteEvent.OnServerEvent:Connect(function(jogador, posicaoAlvo)
    local personagem = jogador.Character
    if not personagem then return end
    
    local novoProjetil = ProjetilModelo:Clone()
    novoProjetil.Parent = workspace
    
    -- Define a posição inicial e move o projétil (exemplo simplificado)
    local posicaoInicial = personagem.HumanoidRootPart.Position + Vector3.new(0, 3, 0)
    novoProjetil.Position = posicaoInicial
    
    -- === IMPORTANTE: CONFIGURA O CRIADOR NO SCRIPT DO PROJÉTIL ===
    local scriptDano = novoProjetil:FindFirstChildOfClass("Script")
    if scriptDano and scriptDano.JOGADOR_CRIADOR then
        scriptDano.JOGADOR_CRIADOR = jogador
    end
    
    -- Use BodyVelocity/LinearVelocity, ou TweenService para mover o projétil até o alvo
    -- Exemplo de movimento simples:
    local velocidade = Instance.new("BodyVelocity")
    velocidade.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
    velocidade.Velocity = (posicaoAlvo - posicaoInicial).Unit * 50 -- 50 é a velocidade
    velocidade.Parent = novoProjetil
    
    -- Adiciona um atraso para remover o BodyVelocity e deixar o projétil voar um pouco antes de cair.
    game:GetService("Debris"):AddItem(velocidade, 0.2) 
end)

Features & Information

--[[ Script de Servidor (Server Script) para o Projétil Deve ser colocado DENTRO da Part ou MeshPart que é o projétil. ]] local Projetil = script.Parent -- === CONFIGURAÇÕES === local RAIO_MAXIMO_DANO = 10 -- O raio (em studs) a partir do centro do projétil para causar dano. local DANO_MAXIMO = 30 -- O dano máximo que pode ser causado (no centro). local TEMPO_VIDA = 3 -- Tempo em segundos até o projétil ser destruído se não atingir nada. local JOGADOR_CRIADOR = nil -- Será preenchido quando o projétil for criado. -- Função para aplicar dano aos jogadores próximos local function aplicarDanoEmArea(posicaoExplosao) local jogadores = game:GetService("Players"):GetPlayers() for _, jogador in ipairs(jogadores) do -- Ignora o jogador que criou o projétil if JOGADOR_CRIADOR and jogador == JOGADOR_CRIADOR then continue end local personagem = jogador.Character -- Verifica se o personagem existe e tem um HumanoidRootPart if personagem and personagem:FindFirstChild("HumanoidRootPart") then local humanoide = personagem:FindFirstChildOfClass("Humanoid") local raizPersonagem = personagem.HumanoidRootPart -- 1. Calcula a distância entre o projétil e o centro do jogador. local distancia = (raizPersonagem.Position - posicaoExplosao).Magnitude -- 2. Verifica se a distância está dentro do raio máximo de dano. if distancia <= RAIO_MAXIMO_DANO and humanoide and humanoide.Health > 0 then -- 3. Calcula o dano com base na distância (Dano decresce com a distância). -- (1 - (distancia / RAIO_MAXIMO_DANO)) => Isso retorna 1 no centro e 0 no limite. local fatorDistancia = 1 - (distancia / RAIO_MAXIMO_DANO) local danoFinal = DANO_MAXIMO * fatorDistancia -- O dano mínimo é 1, para garantir que cause algum dano. if danoFinal < 1 then danoFinal = 1 end -- Aplica o dano ao Humanoid humanoide:TakeDamage(danoFinal) print(jogador.Name .. " levou " .. math.floor(danoFinal) .. " de dano.") end end end end -- Função que ocorre quando o projétil é destruído ou atinge algo local function onProjetilFim(posicao) -- Evita que o dano seja aplicado múltiplas vezes if Projetil:GetAttribute("DanoAplicado") then return end Projetil:SetAttribute("DanoAplicado", true) -- Aplica o dano na área antes de destruir aplicarDanoEmArea(posicao) -- Efeitos visuais/sonoros de explosão (Opcional: adicione um Explosion, partículas, etc.) -- Destrói o projétil Projetil:Destroy() end -- 1. Detecta colisão (se o projétil tocar em algo, aplica o dano e destrói) Projetil.Touched:Connect(function(parteTocou) -- Impede a colisão com o criador (opcional) if JOGADOR_CRIADOR and parteTocou.Parent == JOGADOR_CRIADOR.Character then return end onProjetilFim(Projetil.Position) end) -- 2. Limite de tempo (se o projétil durar demais sem atingir nada, destrói e aplica dano) game:GetService("Debris"):AddItem(Projetil, TEMPO_VIDA) Projetil.Destroying:Connect(function() onProjetilFim(Projetil.Position) end) -- *** ATENÇÃO: Você precisa definir a variável JOGADOR

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts