Is my code for the battle is good?

I made a script for my battle handler.I would like to ask if this code may be used.Because i get some useless errors for it.

Here’s the script i writed:

local RedTeamCarpet = script.Parent.RedTeamCarpet
local BlueTeamCarpet = script.Parent.BlueTeamCarpet
local RedTeamHitbox = script.Parent.RedTeamHitbox
local BlueTeamHitbox = script.Parent.BlueTeamHitbox
local Screen = script.Parent.Screen
local Event = game.ReplicatedStorage.BattleArena.FightTheme

local Display = Screen.Display
local Frame = Display.Frame
local Player1 = Frame.Player1
local Player2 = Frame.Player2

local Plr1
local Plr2

local RoundGoing = false

local BlueCarpetUsing = false
local RedCarpetUsing = false

RedTeamHitbox.Touched:Connect(function(Hit)
	if RedCarpetUsing then
		return
	end
	
	RedCarpetUsing = true
	
	 if Hit.Parent:FindFirstChild("Humanoid") then
		Player2.Text = Hit.Parent.Name
		RedTeamCarpet.Material = Enum.Material.Neon
	 end
end)

RedTeamHitbox.TouchEnded:Connect(function(Hit)
	Player2.Text = "Nobody"
	RedTeamCarpet.Material = Enum.Material.Fabric
	RedCarpetUsing = false
end)

BlueTeamHitbox.Touched:Connect(function(Hit)
	if BlueCarpetUsing then
		return
	end
	
	BlueCarpetUsing = true
	
	if Hit.Parent:FindFirstChild("Humanoid") then
		Player1.Text = Hit.Parent.Name
		BlueTeamCarpet.Material = Enum.Material.Neon
	end
end)

BlueTeamHitbox.TouchEnded:Connect(function(Hit)
	Player1.Text = "Nobody"
	BlueTeamCarpet.Material = Enum.Material.Fabric
	BlueCarpetUsing = false
end)


spawn(function()
	while true do
		if Player1.Text ~= "Nobody" and Player2.Text ~= "Nobody"  and RoundGoing == false then
			local Plr1UserId = game.Players:GetUserIdFromNameAsync(Player1.Text)
			local Plr2UserId = game.Players:GetUserIdFromNameAsync(Player2.Text)
			Plr1 = game.Players:GetPlayerByUserId(Plr1UserId)
			Plr2 = game.Players:GetPlayerByUserId(Plr2UserId)
			print(Plr1,Plr2)
			wait(1)
			if Player1.Text ~= "Nobody" and Player2.Text ~= "Nobody" then
				RoundGoing = true
				if Plr1.Character:FindFirstChild("Health") and Plr2.Character:FindFirstChild("Health") then
					Plr1.Character.Health:Destroy()
					Plr2.Character.Health:Destroy()
				end
				Event:FireClient(Plr1,"Start")
				Event:FireClient(Plr2,"Start")
				local NewTool = game.ServerStorage.BattleTools.Sword:Clone()
				local NewTool2 = game.ServerStorage.BattleTools.Sword:Clone()
				NewTool.Parent = Plr1.Character
				NewTool2.Parent = Plr2.Character
				Plr1.Character:MoveTo(Vector3.new(-192.5, 58.5, 83.5))
				Plr2.Character:MoveTo(Vector3.new(-283.5, 58.5, -7.5))
			end
		end
		wait()
	end
end)

spawn(function()
	while true do
		if RoundGoing == true then
			Plr1.Character.Humanoid.WalkSpeed = 25
			Plr2.Character.Humanoid.WalkSpeed = 25
			Plr1.Character.Humanoid.JumpPower = 0
			Plr2.Character.Humanoid.JumpPower = 0
			if Plr1.Character.Humanoid.Health == 0 then
				print(Plr2.Name.." Has won the round!")
				wait(1)
				Plr2.Character.Humanoid.Health = 0
				Event:FireClient(Plr1,"Stop")
				Event:FireClient(Plr2,"Stop")
				RoundGoing = false
				Plr1.PlayerGui.Battle.Enabled = false
				Plr2.PlayerGui.Battle.Enabled = false
				workspace["Battle Display"].BattleScreen.Display.Enabled = false
				wait()
				Plr1 = nil Plr2 = nil
			elseif Plr2.Character.Humanoid.Health == 0 then
				print(Plr1.Name.." Has won the round!")
				wait(1)
				Plr1.Character.Humanoid.Health = 0
				Event:FireClient(Plr1,"Stop")
				Event:FireClient(Plr2,"Stop")
				RoundGoing = false
				Plr1.PlayerGui.Battle.Enabled = false
				Plr2.PlayerGui.Battle.Enabled = false
				workspace["Battle Display"].BattleScreen.Display.Enabled = false
				wait()
				Plr1 = nil Plr2 = nil
			end
		end
		wait()
	end
end)

spawn(function()
	while true do
		if RoundGoing == true then
			local UI = Plr1.PlayerGui.Battle
			local UI2 = Plr2.PlayerGui.Battle
			local BattleScreen = workspace["Battle Display"].BattleScreen
			UI.Player1Status.Username.Text = Plr1.Name
			UI.Player2Status.Username.Text = Plr2.Name
			UI2.Player1Status.Username.Text = Plr1.Name
			UI2.Player2Status.Username.Text = Plr2.Name
			UI.Player1Status.Thumbnail.Image = game.Players:GetUserThumbnailAsync(Plr1.UserId,Enum.ThumbnailType.HeadShot,Enum.ThumbnailSize.Size60x60)
			UI.Player2Status.Thumbnail.Image = game.Players:GetUserThumbnailAsync(Plr2.UserId,Enum.ThumbnailType.HeadShot,Enum.ThumbnailSize.Size60x60)
			UI2.Player1Status.Thumbnail.Image = game.Players:GetUserThumbnailAsync(Plr1.UserId,Enum.ThumbnailType.HeadShot,Enum.ThumbnailSize.Size60x60)
			UI2.Player2Status.Thumbnail.Image = game.Players:GetUserThumbnailAsync(Plr2.UserId,Enum.ThumbnailType.HeadShot,Enum.ThumbnailSize.Size60x60)
			UI.Player1Status.Health.Text = string.sub(Plr1.Character.Humanoid.Health,1,4)
			UI.Player2Status.Health.Text = string.sub(Plr2.Character.Humanoid.Health,1,4)
			UI2.Player1Status.Health.Text = string.sub(Plr1.Character.Humanoid.Health,1,4)
			UI2.Player2Status.Health.Text = string.sub(Plr2.Character.Humanoid.Health,1,4)
			BattleScreen.Display.Frame.Player1Thumbnail.Image = game.Players:GetUserThumbnailAsync(Plr1.UserId,Enum.ThumbnailType.HeadShot,Enum.ThumbnailSize.Size150x150)
			BattleScreen.Display.Frame.Player2Thumbnail.Image = game.Players:GetUserThumbnailAsync(Plr2.UserId,Enum.ThumbnailType.HeadShot,Enum.ThumbnailSize.Size150x150)
			BattleScreen.Display.Frame.Player1Health.Text = string.sub(Plr1.Character.Humanoid.Health,1,4)
			BattleScreen.Display.Frame.Player2Health.Text = string.sub(Plr2.Character.Humanoid.Health,1,4)
			UI.Enabled = true
			UI2.Enabled = true
			BattleScreen.Display.Enabled = true
			wait()
		end
		wait()
	end
end)

I’m no longer getting any useless errors but i might get again while adding something on it.

Please don’t ask why it is long cuz i don’t know my fault or it is normal.

What do you guys think about my own script? Do i need to change somethings to improve the script?

1 Like

A lot of things can be improved by just using for loops, also you should start using the task library because functions like wait and spawn are gonna get deprecated.
(Just add “task.” in front of all of your waits and spawns like this:

wait(2) -> task.wait(2), 
spawn(function() -> task.spawn(function()

)

1 Like

Thank you for noticing me about wait and spawn functions are getting deprecated :slight_smile: (Anybody helping and suggesting about my script)

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.