weld.C0 = CFrame.new(character.Torso.Position.X, character.Torso.Position.Y,     	 character.Torso.Position.Z-3)*CFrame.new(0, 0, 0)

No matter how I change this weld, the barrier always spawns in the sky, at the same spot. I set the position of everything to the character(and even tried torso.CFrame) just to see how ridiculous the bug is. I've been stuck on it for a while. Help is appreciated, thanks.

Local

player = game.Players.LocalPlayer
character = player.Character
repeat wait(.1) until character:FindFirstChild("Bools")
bools = character.Bools
Barrier = bools.Barrier
currentEnergy = bools.currentEnergy
maxEnergy = bools.maxEnergy

function onDown()
	if Barrier.Value == false then
		Barrier.Value = true
		workspace.Events.Barrier:FireServer(player)
		print("Client Barrier")
	end
end

function onUp()
	if Barrier.Value == true then
		workspace.Events.BarrierOff:FireServer(player)
		print("Client Barrier Off")
		wait(.1)
		Barrier.Value = false
	end
end

script.Parent.MouseButton1Down:connect(onDown)
script.Parent.MouseButton1Up:connect(onUp)

Server

script.Parent.OnServerEvent:connect(function(player)
	local Data = player:FindFirstChild("Data")
	local Element1 = Data.Element1
	local Strength = Data.Strength
	local StrengthXP = Data.StrengthXP
	local Defence = Data.Defence
	local DefenceXP = Data.DefenceXP
	local Magika = Data.Magika
	local MagikaXP = Data.MagikaXP
	local Agility = Data.Agility
	local AgilityXP = Data.AgilityXP
	--
	local character = player.Character
	local bools = character.Bools
	local barrier = bools.Barrier
	--
	local currentEnergy = player.Character.Bools.currentEnergy
	local maxEnergy = player.Character.Bools.maxEnergy
	--
	
	if currentEnergy.Value >= maxEnergy.Value*.01 and not character.Torso:FindFirstChild("Barrier") then
	print("Barrier Server")
		local bp = Instance.new("BodyPosition", character.Torso)
		bp.Name = "BodyPosition"
		local p = Instance.new("Part", character.Torso)
		p.Name = "Barrier"
		p.Transparency = 0.6
		p.BrickColor = BrickColor.new("Deep blue")
		local weld = Instance.new("ManualWeld", character.Torso)
		weld.Part0 = character.Torso
		weld.Part1 = p

		p.Size = Vector3.new(3+(Defence.Value/5),3+(Defence.Value/5), 0.5)
		bp.Position = Vector3.new(character.Torso.Position.x, character.Torso.Position.y, character.Torso.Position.z)
		barrier.Value = true
		
		while barrier.Value == true do
			wait(.1)			
			
			weld.C0 = CFrame.new(character.Torso.Position.X, character.Torso.Position.Y, character.Torso.Position.Z-3)*CFrame.new(character.Torso.Position.X, character.Torso.Position.Y, character.Torso.Position.Z)
			
			currentEnergy.Value = currentEnergy.Value-(maxEnergy.Value*.01)
			MagikaXP.Value = MagikaXP.Value+0.025
			DefenceXP.Value = DefenceXP.Value+0.025
			bools.walkSpeed.Multiplier.Value = 0.0625
			
			if currentEnergy.Value <= 0 then
				barrier.Value = false
				p:destroy()
				bp:destroy()
				weld:destroy()
			end
		end
	end
end)

3 comments

0

Sidenote: It CFramed correctly before but it isn't quite working after i made a bugfix to it.. no errors.

1

Not too sure but ':destroy()' should be 'Destroy()'

0

Problem seems to lie in the weld not actually being correctly handled, this is on roblox's part sadly... sigh.