So basically i have a local script and i have a script keep in mind that this is filtering enabled and this is a fireball script. But the script only works in Roblox Studio and not ingame in a roblox server. Whenever i load it in a roblox server it says Players.Player1.Backack.Fireball.LocalScript:6: attempt to index global 'char' (a nil value)
Heres the scripts
Local script here
--Local Script
local Tool = script.Parent
play = game.Players.LocalPlayer
local mouse = play:GetMouse()
char = play.Character
hum = char.Humanoid
root = char.HumanoidRootPart
local en = true
Tool.Activated:connect(function()
if not en then return end
en = false
Tool.RemoteEvent:FireServer(mouse.Hit)
wait(0.5)
en = true
end)
Server script here
--Server Script
local Tool = script.Parent
play = Tool.Parent.Parent
char = play.Character
hum = char.Humanoid
root = char.HumanoidRootPart
local en = true
Tool.RemoteEvent.OnServerEvent:connect(function(play,mousehit)
local a = hum:LoadAnimation(Tool.Throw)
a:Play()
root.CFrame = CFrame.new(root.Position,root.Position + Vector3.new(mousehit.lookVector.x,0,mousehit.lookVector.z))
wait(0.7)
local fireball = Tool.Handle:clone()
fireball.CFrame = Tool.Handle.CFrame
local bv = Instance.new("BodyVelocity")
bv.MaxForce = Vector3.new(1e8,1e8,1e8)
bv.Velocity = mousehit.lookVector * 50
bv.Parent = fireball
fireball.CanCollide = false
fireball.Parent = game.Workspace
game.Debris:AddItem(fireball,4)
local ten = true
fireball.Touched:connect(function(hit)
if not ten then return end
ten = false
local ehum = hit.Parent:findFirstChild("Humanoid") or hit.Parent.Parent:findFirstChild("Humanoid")
if ehum and ehum ~= hum then
ehum:TakeDamage(10)
elseif hit.Anchored == true and hit.CanCollide == true then
for i=1,10 do
local part = fireball:clone()
part.Size = Vector3.new(0.5,0.5,0.5)
part.CFrame = fireball.CFrame
--part.BodyVelcoity.MaxForce = Vector3.new(1e8,0,1e8)
part.ParticleEmitter.LockedToPart = false
part.BodyVelocity.Velocity = Vector3.new(math.random(-30,30),math.random(-30,30),math.random(-30,30))
part.Parent = game.Workspace
game.Debris:AddItem(part,1)
end
end
wait()
ten = true
end)

2 comments
Thanks it worked!
If you're wondering why, it's because Player.Character is not guaranteed to return a valid Character model. In this case, your LocalScript was running before the player's Character was created, so play.Character was nil. The solution was to wait until play.Character was anything but nil, which is what my line of code essentially does.