When a player presses a key, it fires an event. The event runs whatever code is in the modulescript. But I always get the same error - about the Player, no matter how I go about it.
Client:
local key = "z"
local Mouse = game.Players.LocalPlayer:GetMouse()
local Player = game.Players.LocalPlayer
SpellDisableCheck = false
Mouse.KeyDown:Connect(function(Key)
if Key:lower() == key and SpellDisableCheck == false then
SpellDisableCheck = true
game.ReplicatedStorage.Resources.MagicEvents.WaterSlicer:FireServer(Player, script.Damage)
SpellDisableCheck = false
end
end)
Module:
local WaterMagic = {}
function WaterMagic.Slicer(Player, damage)
print("z pressed")
local Animation = Instance.new("Animation")
Animation.AnimationId = "http://www.roblox.com/asset/?id=357408908"
local track = Player.Character.Humanoid:LoadAnimation(Animation)
track:Play()
local Torso = Player.Character.Torso
local rand = {0, 15, -15, 45, -45}
local Part = game.ReplicatedStorage.Resources.Parts:FindFirstChild("WaterSlicer")
for i = 1, 10 do
local b = Part:Clone()
b.CFrame = Torso.CFrame * CFrame.new(math.random(-3, 3), math.random(0, 3), -3) * CFrame.Angles(180, math.rad(rand[math.random(1, #rand)]), 0)
local f= Instance.new("StringValue", damage)
f.Name = "Creator"
f.Value = Player.Name
local Damage = Instance.new("IntValue", damage)
Damage.Name = "Damage"
Damage.Value = 1 + (game.ReplicatedStorage.Resources.Remotes.Functions.GetPlayerStrength:InvokeServer() / 100)
damage.Disabled = false
local v = Instance.new("BodyVelocity", b)
v.maxForce = Vector3.new(math.huge, math.huge, math.huge)
v.velocity = Torso.CFrame.lookVector * 125
b.Anchored = false
game:GetService("Debris"):AddItem(b, 4)
b.Parent = workspace
wait()
end
track:Stop()
end
return WaterMagic
The serverscript is basically creating a remotevent which requires the module script, and runs the respective function. Just incase I explained this bad, here is the serverscript.
local EventStore = game.ReplicatedStorage.Resources.MagicEvents
local Modules = game.ServerStorage.Magics
---Water Magic
local Water = require(Modules.Water)
local slicer = Instance.new("RemoteEvent", EventStore)
slicer.Name = "WaterSlicer"
slicer.OnServerEvent:Connect(function(Player, Damage)
Water.Slicer()
end)

4 comments
can we see what the output says?
can we see what the output says?
What does the error say? At which line in your code is it?
Line 6 of the modulescript - 'attempt to index player was nil'