Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Why are my bullet's being raycasted slowly?

Asked by 4 years ago

In short terms there is this issue of the bullets which are being shot from a gun which i had scripted and the bullets appear laggy and behind the player and not exact where the player had shot it.

Sorry my about my code being unclean.

Server CODE:




--main local remote = game.ReplicatedStorage.RemoteEwents.Remote1 disabled = false remote.OnServerEvent:connect(function(player,barrelpos,mousepos,distance,name) local plr = game.Players.LocalPlayer local chr = player.Character local tool = chr:FindFirstChild(name) local dmg = tool.Handle.Damage.Value local ammo = tool.Handle.Ammo local reloadtime = tool.Handle.Reloadtime local reloading = false local maxammo = tool.Handle.MaxAmmo local function reload() reloading = false ammo.Value = maxammo.Value disabled = true tool.Handle.Reload:Play() wait(tool.Handle.Reloadtime.Value) disabled = false end --creator if ammo.Value <= 0 then reloading = true if reloading == true then reload() wait(reloadtime.Value) end end local function onKeyPress(inputObject, gameProcessedEvent) if inputObject.KeyCode == Enum.KeyCode.R then reloading = true if reloading == true then reload() wait(reloadtime.Value) end end end game:GetService("UserInputService").InputBegan:connect(onKeyPress) if ammo.Value >=1 and reloading == false and disabled == false then local ray = Ray.new(barrelpos, (mousepos - barrelpos).unit * 3000) local part,position = game.Workspace:FindPartOnRay(ray, player.Character,false,true) local bullet = Instance.new("Part") ammo.Value = ammo.Value - 1 tool.Handle.Fire:Play() bullet.Anchored = true bullet.CanCollide = false bullet.BrickColor = player.TeamColor bullet.FormFactor = "Custom" local dist = (barrelpos - mousepos).magnitude bullet.Size = Vector3.new(0.3,0.3,dist) bullet.Parent = workspace bullet.TopSurface = "Smooth" bullet.BottomSurface = "Smooth" bullet.Transparency = 0.5 game.Debris:AddItem(bullet,0.1) for i = 0, dist,6 do bullet.CFrame = CFrame.new(tool.Barrel.CFrame.p,position) * CFrame.new(0,0, -dist/2) end if part then local humanoid = part.Parent:FindFirstChild("Humanoid") if humanoid then local plrname = part.Parent.Name local players = game.Players:FindFirstChild(plrname) print(plrname) local plrname1 = player.Name if player.TeamColor ~= players.TeamColor and tool.Handle.Teamkill.Value == false then humanoid:TakeDamage(dmg) tool.Handle.Click:Play() else print("isinteam") if tool.Handle.Teamkill.Value == true then humanoid:TakeDamage(dmg) end end local killed = false local creator = Instance.new("StringValue") if humanoid.Health <= 0 then end end end end end)

Client code:

local Player = game.Players.LocalPlayer
wait(0.5)
local gun = script.Parent
local remote = game.ReplicatedStorage.RemoteEwents.Remote1
local pgui = Player.PlayerGui.ammo.Frame
local maxammo = script.Parent.Handle.MaxAmmo
local ammo = script.Parent.Handle.Ammo


gun.Equipped:Connect(function(mouse)

    pgui.Visible = true
    gun.Unequipped:connect(function()
        pgui.Visible = false
    end)

    mouse.Icon = 'rbxassetid://131581677'
    local friendly = "http://www.roblox.com/asset/?id=131718487"
    local enemy = "http://www.roblox.com/asset/?id=131718495"


    local auto = script.Parent.Handle.Auto
    mouse.Button1Down:connect(function()


        if auto.Value == false then
            local name = gun.Name
            local distance1 = require(script.ModuleScript)
            local distance = nil
            remote:FireServer(gun.Barrel.CFrame.p, mouse.Hit.p, distance,name)

        end

    end)
    -- if its auto
    local inptSrvc = game:GetService("UserInputService")
    local name = gun.Name
    local distance1 = require(script.ModuleScript)
    local distance = nil
    local firerate =  script.Parent.Handle.FireRate

        while true do
            wait(0)
            if inptSrvc:IsMouseButtonPressed(0) then

                if auto.Value == true then
                    wait(firerate.Value)
                    local function update()



                        -- 

                        pgui:WaitForChild("Maxammo")
                        pgui:WaitForChild("Maxammo")
                        pgui.Maxammo.Text = maxammo.Value
                        pgui.ammoval.Text = ammo.Value
                        if pgui.ammoval.Text == 0 then
                            wait(2)
                        end     
                    end


                    -- Whilewait
                    update()


                    remote:FireServer(gun.Barrel.CFrame.p, mouse.Hit.p, distance,name)
                end
            end
       end
end)

Answer this question