Tool events not connecting i've tried to script this, but from nowhere, the tool events(equipped, unequipped, Inputbegan etc.) dont respond anymore, i've put a function on equip to see if it works, but it didnt, for some reason, beyondan line no prints, even the ones out an condition, dont respond.
--LEIA ISSO:
--ao inserir esse script em outras armas, lembre-se se trocar algumas coisas:
--1.Referencias ao rifle anterior (Cheque a local Tool)
--2.Status como Dano, range etc.
--3.acho que só isso :^
local Players = game:GetService("Players")
local player = game.Players.LocalPlayer
local backpack = player.Backpack
local tool = script.Parent
local animacoes = tool.Animacoes
local PlayerCharacter = player.Character or player.CharacterAdded:Wait()
local Playerhumanoid = PlayerCharacter:WaitForChild("Humanoid")
local UserInputService = game:GetService("UserInputService")
local mouse = player:GetMouse()
local TimeDoAtirador = (player.Team)
local AplicarDano = game.ReplicatedStorage:WaitForChild("AplicarDano")
--right, check.
print ("Time do player:"..tostring(TimeDoAtirador))
--relacionado á reload c/weld.
local head = PlayerCharacter:FindFirstChild("Head")
-- Status da arma
local equipado = false
local disparavel = true
local municao = 7--antes era 5, mas vamos por 7, vai deixar o rifle mais unico e é legal haha
local reserva = 30
local recarregando = false
local capacidadeMax = 7
local ciclando = false
local Dano = 70
local ReloadTime = 2
local TipoDeDano = "Chumbo"
local TarefaAtual = nil
local PossuiBaioneta = false
local BaionetaLigada = false
local LadoDaArma = "Fratis"
--não se julgue, você já fez muito por hoje, parabéns. -O
if not Playerhumanoid then
error("Humanoid do player indef")
end
-- Animações
local IdleAnim = Playerhumanoid:LoadAnimation(tool.Animacoes.Idle)
local AnimationTracks = {
Shoot = Playerhumanoid:LoadAnimation(tool.Animacoes.Shoot),
OpenBolt = Playerhumanoid:LoadAnimation(tool.Animacoes.OpenBolt),
CloseBolt = Playerhumanoid:LoadAnimation(tool.Animacoes.CloseBolt),
InsertAmmo = Playerhumanoid:LoadAnimation(tool.Animacoes.InsertAmmoSingle),
InsertClip = Playerhumanoid:LoadAnimation(tool.Animacoes.InsertClip),
Cycle = Playerhumanoid:LoadAnimation(tool.Animacoes.Cycle)
}
--os sons da Bixinho (darling, i, keep falling in love...)
local puxarAudio = tool.Som
local Tirosom = puxarAudio.Shoot
local CiclarSom = puxarAudio.Ciclar
local OpenBoltSom = puxarAudio.OpenBolt
local InsertClipSom = puxarAudio.InsertClip
local function InsertSingleTocarSom()
local InserSingleSom = puxarAudio.InsertSingle
local MaxPitch = 1.5
local MinPitch = 0.8
InserSingleSom.PlaybackSpeed = math.random()\*(MaxPitch - MinPitch) + MinPitch
InserSingleSom:Play()
end
--função para chamar funções ----------------------------------------------------------------------------------------------------
local function executarTarefa(acao)
local tarefa = {}
tarefa.Cancelada = false
tarefa.Coroutine = coroutine.create(function()
acao()
if not tarefa.Cancelada then
TarefaAtual = nil
end
end)
TarefaAtual = tarefa
coroutine.resume(tarefa.Coroutine)
end
--função de Flash
local function LigarFlash()
local Flash = tool.Muzzle.ParticleEmitter
local LuzDoFlash = tool.Muzzle.PointLight
Flash.Lifetime = NumberRange.new(0.1)
LuzDoFlash.Brightness = 4.76
task.wait(0.2)
Flash.Lifetime = NumberRange.new(0)
LuzDoFlash.Brightness = 0
end
-- GUI
local gui = tool:WaitForChild("WeaponGui")
local Pente = gui:WaitForChild("Pente")
local Reserva = gui:WaitForChild("Reserva")
local Status = gui:WaitForChild("Status")
-- Função para configurar o Motor6D (Weld)
local function WeldUpNiceNClean()
print ("Cola aqui.")
local Weld = tool.WEmpunhadura
Weld.Part0 = head
end
-- Atualiza UI da arma
local function atualizarUI()
Pente.Text = "Ammo: " .. tostring(municao)
Reserva.Text = "Reserve: " .. tostring(reserva)
if disparavel then
Status.Image = "rbxassetid://125129346196868"
else
Status.Image = "rbxassetid://140072019296693"
end
end
-- Função de Ciclar
local function Ciclar()
TarefaAtual = Ciclar
ciclando = true
recarregando = false
AnimationTracks.Cycle:Play()
CiclarSom:Play()
AnimationTracks.Cycle.Ended:Connect(function()
print ("Thack Tchak!")
disparavel = true
ciclando = false
TarefaAtual = nil
atualizarUI()
end)
end
print (tool.Name)
-- Equipar e desequipar a arma
local function aoEquipar()
print("Tool equipada!")
WeldUpNiceNClean()
local playerGui = player:WaitForChild("PlayerGui")
equipado = true
IdleAnim:Play()
if not playerGui:FindFirstChild(gui.Name) then
gui.Parent = playerGui
gui.Enabled = true
atualizarUI()
end
end
local function aoDesEquipar()
local playerGui = player:WaitForChild("PlayerGui")
equipado = false
recarregando = false
if gui.Parent == playerGui then
IdleAnim:Stop()
gui.Parent = tool
gui.Enabled = false
end
if TarefaAtual then
task.cancel(TarefaAtual.Coroutine)
for \_, track in pairs(AnimationTracks) do
track:Stop()
end
else if TarefaAtual == nil then return end
end
\-- Função de disparo AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA, ALGUÉM ME AJUDA! AQUI É A FUNÇÃO DO DISPARO!, ESSAS LETRAS LONGAS SÃO PARA MARCAR QUE AQUI É A FUNÇÃO DE ATIRAR! DEVE TER ALGUM JEITO MAIS FACIL DE MARCAR, EU IMPLORO POR ALGÚEM ME EXPLICAR!
local function Atirar()
print("Tentando atirar...")
if municao <= 0 then
disparavel = false
atualizarUI()
return
end
if not disparavel then
if ciclando then return end
executarTarefa(Ciclar)
return
end
if recarregando then
end
local head = PlayerCharacter:FindFirstChild("Head")
if not head then
print("eu sou burro ou você NÃO TEM UMA CABEÇA?!")
return
end
local rayOrigin = head.Position
local rayCastParams = RaycastParams.new()
rayCastParams.FilterDescendantsInstances = {PlayerCharacter}
rayCastParams.FilterType = Enum.RaycastFilterType.Exclude
local rayDirection = (mouse.Hit.Position -rayOrigin).unit \* 600
local raycastResult = workspace:Raycast(rayOrigin,rayDirection,rayCastParams)
Tirosom:Play()
task.spawn(LigarFlash)
if raycastResult then
local hit = raycastResult.Instance
print("Acertou:",hit.Name)
local hitHumanoid = hit.Parent:FindFirstChild("Humanoid")
if hitHumanoid then
print("HUMANOID DETECTED, IT IS:".. tostring(hitHumanoid))
AplicarDano:FireServer(TimeDoAtirador,hitHumanoid,Dano,TipoDeDano)
else
print("Nenhum humanoid achado no personagem.")
end
else
print("não é um personagem.")
end
AnimationTracks.Shoot:Play()
municao = municao - 1
disparavel = false
print("atirou.")
atualizarUI()
end
local function BotarBalas()
if not recarregando or reserva <=0 or not equipado then
print("PARO!")
return
end
local BalasPRecarregar = math.min(capacidadeMax - municao,reserva )
for i = 1, BalasPRecarregar do
if not recarregando or reserva <= 0 or not equipado then
print "você está equipando essa arma, você tem munição nessa budega? seu animal."
return
end
wait(ReloadTime/(capacidadeMax - municao))
AnimationTracks.InsertAmmo:Play()--bota
InsertSingleTocarSom()
task.wait(AnimationTracks.InsertAmmo.Length)--------------------------------------------------------------ESTAVAS TRABALHANO AQUI--------------------------------
reserva = reserva - 1
municao = municao + 1
atualizarUI()
end
end
\--Função para se recarregar parcial
local function RelParcial()
recarregando = true
disparavel = false
AnimationTracks.OpenBolt:Play()
OpenBoltSom:Play()
task.wait(AnimationTracks.OpenBolt.Length)
BotarBalas()
TarefaAtual = RelParcial
AnimationTracks.CloseBolt:Play()
task.wait(AnimationTracks.CloseBolt.Length)
recarregando = false
disparavel = true
TarefaAtual = nil
atualizarUI()
end
\-- Função para se Recarregar vazio VOCÊ ESTÁ MECHENDO COM O SOM AQUI! ESSE É O MARCADOR AAAAAAAAAAAAAAAAAAA ALGUÉM ME AJUDA! EU IMPLORO! POR FAVOR!
local function RelVazio()
recarregando = true
disparavel = false
TarefaAtual = RelVazio
AnimationTracks.OpenBolt:Play()
OpenBoltSom:Play()
task.wait(AnimationTracks.OpenBolt.Length)
local QuantidadeArecarregar = math.min(capacidadeMax, reserva)
AnimationTracks.InsertClip:Play()
InsertClipSom:Play()
municao = QuantidadeArecarregar
reserva = reserva - QuantidadeArecarregar
task.wait(AnimationTracks.InsertClip.Length)
AnimationTracks.CloseBolt:Play()
task.wait(AnimationTracks.CloseBolt.Length)
TarefaAtual = nil
disparavel = true
recarregando = false
atualizarUI()
end
\-- Evento para recarregar
local function onKeyRPress(input, gameProcessed)
if input.KeyCode == Enum.KeyCode.R then
if not equipado then
print("Arma não está equipada.")
return
end
if recarregando then
print("PARA! SUSSEGA!")
return
end
if reserva == 0 then return end
if municao == capacidadeMax then
return
end
if municao == 0 then
RelVazio()
end
if municao < capacidadeMax then
RelParcial()
AnimationTracks.CloseBolt:Play()
end
end
end
\-- Eventos para correr
local function Correr(input, gameProcessed)
if input.KeyCode == Enum.KeyCode.LeftShift then
player.Character.Humanoid.WalkSpeed = 25
end
end
local function PararCorrer(input, gameProcessed)
if not gameProcessed and input.KeyCode == Enum.KeyCode.LeftShift then
player.Character.Humanoid.WalkSpeed = 16
end
end
\-- Conexões de eventos
UserInputService.InputBegan:Connect(function(input: InputObject, gameProcessedEvent: boolean)
executarTarefa(function()
onKeyRPress(input, gameProcessedEvent)
end)
end)
tool.Activated:Connect(Atirar)
tool.Equipped:Connect(function()
print("essa budega funciona :D")
end)
tool.Unequipped:Connect(aoDesEquipar)
UserInputService.InputBegan:Connect(Correr)
UserInputService.InputEnded:Connect(PararCorrer)
end