I want to make sure that when players aren’t holding a “Sword” item, the server checks it. However, it causes the server script to crash.
Server script:
while (true) do
for _, v in pairs(game.Players:GetChildren()) do
if v.Character:FindFirstChild("Sword") == nil then -- Crashes here
hideSwordEffects(v)
end
end
RunService.Heartbeat:Wait()
end
I don’t know much of what you’re trying to do but I assume its because you are using Character:FindFirstChild
If the sword your looking for is a tool then search the backpack instead
(v = player, right?)
Try this
while (true) do
for _, v in pairs(game.Players:GetChildren()) do
if v.Backpack:FindFirstChild("Sword") ~= nil then
hideSwordEffects(v)
end
end
RunService.Heartbeat:Wait()
end
--//Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
--//Loops
while true do
for i, Player in ipairs(Players:GetPlayers()) do
if Player.Character and not Player.Character:FindFirstChild("Sword") then
hideSwordEffects(v)
end
end
RunService.Heartbeat:Wait()
end
local Time = 10
function checkItemState(Player: Player, Item)
if Player.Character:FindFirstChild(Item.Name) ~= nil then
return "Item state: Item isn't nil!"
else
hideSwordEffects(Player)
return "Item state: Item is nil!"
end
end
while task.wait(Time / 2) do
task.spawn(function()
for _, Index in ipairs(game.Players:GetPlayers()) do
local ItemState = checkItemState(Index, "Sword")
print(ItemState)
end
end)
end
I assumed he had a reason, like some big server script that handles everything, and he wanted to know when something named sword was removed from the character.
But he was satisfied with your answer so it must have inspired him to go a different direction entirely. Best of luck to him, and thanks.