Scripting HelpersARCHIVE
A little piece of Roblox history. Preserved for everyone, one question at a time.Read about the archive →
✓ ANSWER ACCEPTED

Server not recieving RemoteEvent?

So I've been trying to make a knockoff of Arcane Adventures using magic scripts I've ran across via sites such as this website and devforums and mashing them all together. The one problem I ran into recently is that my localscript fires a message when Q is pressed, but the server never receives the message and does not create the magic. Could anyone help me figure out what I'm doing wrong?

Local Script

local debris = game:GetService("Debris")
local cas = game:GetService("ContextActionService")

local fireball = "Fireball"

local tool = script.Parent

local fireballEvent = tool:WaitForChild("FireballEvent")

local function handleAction(actionName, inputState, inputObject)
	if actionName == fireball and inputState == Enum.UserInputState.Begin then
		fireballEvent:FireServer()
		print("Fired")
	end
end
	
--only works if tool is equipped
tool.Equipped:Connect(function()
	cas:BindAction()
end)

tool.Unequipped:Connect(function()
	cas:UnbindAction(fireball)
end)

Server Script

local debris = game:GetService("Debris")

local fireball = "Fireball"

local tool = script.Parent
local anime = script:WaitForChild("Animation")

local speed = 25
local circlesize = Vector3.new(4, 4, .1)
local enabled = true

local fireballEvent = tool:WaitForChild("FireballEvent")

local function onFireballEvent(player)
	local character = player.CharacterAdded:Wait()
	local hrt = character:FindFirstChild("HumanoidRootPart")
	print("Recieved")
	
	if not enabled then return end -- check to see if magic has already been cast
	enabled = false
	
	
	--play animation
	local loadAnim = character.Humanoid:LoadAnimation(anime) 
	loadAnim:Play()
	
	--magic circle
	local c = Instance.new("Part", character)
	c.CFrame = hrt.CFrame * CFrame.new(0, 0, -3)
	c.TopSurface = "Smooth"
	c.BottomSurface = "Smooth"
	c.Size = Vector3.new(.1, .1, .1)
	c.Transparency = (1)
	c.CanCollide = false
	c.Anchored = true
	
	local d = Instance.new("Decal", c) --magic circle image
	d.Face = "Front"
	d.Texture = "http://www.roblox.com/asset/?id=2106074393"
	local d2 = Instance.new("Decal", c)
	d2.Face = "Back"
	d2.Texture = "http://www.roblox.com/asset/?id=2106074393"
	
	local light = Instance.new("PointLight", c)
	light.Color = Color3.new(255, 170, 0)
	
	local attachment = Instance.new("Attachment", c)
	
	local particle = Instance.new("ParticleEmitter", attachment)
	particle.Color = ColorSequence.new(Color3.fromRGB(255, 68, 5))
	particle.LightEmission = 1
	particle.LightInfluence = 0
	local sizesequence = {
		NumberSequenceKeypoint.new(0, 0);
		NumberSequenceKeypoint.new(.75, 6);
		NumberSequenceKeypoint.new(1, 0);
	}
	particle.Size = NumberSequence.new(sizesequence)
	particle.Texture = "rbxassetid://1454292685"
	particle.Transparency = NumberSequence.new(.8)
	particle.EmissionDirection = "Front"
	particle.Enabled = false
	particle.Lifetime = NumberRange.new(.8, .8)
	particle.Speed = NumberRange.new(0, 0)
	particle:Emit()	
	
	--grow magic circle
	local csize = c.Size
	character.HumanoidRootPart.Anchored = true --make sure no one goes anywhere
	
	for i = 1, 7 do
   		c.Size = csize:Lerp(circlesize, i/7)
   		wait(0.08)
	end
	loadAnim:AdjustSpeed(0)
	
	--magic attack
	local p = Instance.new("Part", workspace)
    p.CFrame = c.CFrame
    p.TopSurface = "Smooth" 
    p.BottomSurface = "Smooth" 
    p.Shape = Enum.PartType.Ball 
    p.Size = Vector3.new(2, 2, 2) 
    p.Transparency = (1)
    p.CanCollide = false
    p.BrickColor = BrickColor.new("Really red")
	
	local ParticleEffect = Instance.new("ParticleEmitter", p) --make the attack beautiful
    ParticleEffect.Size = NumberSequence.new(3)
    ParticleEffect.Transparency = NumberSequence.new(0.8)
    ParticleEffect.LightEmission = 0.3
   	ParticleEffect.Rate = 2860
   	ParticleEffect.Acceleration = Vector3.new(0,0,0)
   	ParticleEffect.Lifetime = NumberRange.new(0.2)
   	ParticleEffect.Speed = NumberRange.new(2)
   	ParticleEffect.Rotation = NumberRange.new(-360,360)
   	ParticleEffect.RotSpeed = NumberRange.new(-360,360)
   	ParticleEffect.Texture = "http://www.roblox.com/asset/?id=318675800"
	
	local antigrav = Instance.new("BodyForce", p)
   	antigrav.Force = Vector3.new(0, workspace.Gravity * p:GetMass(), 0)
	local bf = Instance.new("BodyForce", p)
	bf.Force = c.CFrame.lookVector * speed
    debris:AddItem(p, 7)
	
	--shrink circle
	character.HumanoidRootPart.Anchored = false
	for i = 1, 3 do
   		c.Size = circlesize:Lerp(csize, i/3)
   		wait(0.08)
	end
	c:Destroy()
	loadAnim:Stop()
	wait(2)
	enabled = true
end

fireballEvent.OnServerEvent:connect(onFireballEvent)

2 comments

0

you mean remoteevent, correct?

0

Yes, thank you.

1 answer

✓ Accepted answer

local character = player.CharacterAdded:Wait() in your server script may be the issue. The character may already be loaded, and this line will keep waiting for it to spawn again.

Try changing this to local character = player.Character or player.CharacterAdded:Wait().

1 comment

0

Thank you. This fixed it!

This discussion is preserved as it was. New answers, comments, and votes are closed.