So I made a module where it has 2 constructor functions with their own unique functions, The problem I have right now Is I don’t know how to return 2 metatables so I can use else where.
local rs = game:GetService("ReplicatedStorage")
--Remotes
local RemoteEvent = rs:WaitForChild("RemoteEvent")
--Modules
local spawnfireball = require(rs:WaitForChild("ModuleScript")) -- this line is causing the error
local spawnFireball = spawnfireball.SpawnFireball
RemoteEvent.OnServerEvent:Connect(function(player)
spawnFireball.new(player)
end)
This is the module script if you want to see
local fireball = {}
fireball.__index = fireball
local spawnFireball = {}
spawnFireball.__index = spawnFireball
--Services
local rs = game:GetService("ReplicatedStorage")
local starterPack = game:GetService("StarterPack")
local tweenService = game:GetService("TweenService")
local runService = game:GetService("RunService")
local Players = game:GetService("Players")
--Remotes
local remoteEvent = rs:WaitForChild("RemoteEvent")
local Player = Players.LocalPlayer
function spawnFireball.new(player, size)
local newFireball = {}
setmetatable(newFireball, spawnFireball)
local char = player.Character
local hmr = char.HumanoidRootPart
local rightHand = char.RightHand
local leftHand = char.LeftHand
local fireParticle = rs:WaitForChild("Part")
fireParticle.CanCollide = false
local clone = fireParticle:Clone()
clone.Parent = rightHand
local clone2 = fireParticle:Clone()
clone2.Parent = leftHand
runService.RenderStepped:Connect(function()
clone.CFrame = rightHand.CFrame
clone2.CFrame = leftHand.CFrame
end)
newFireball.Clone = clone
newFireball.Clone2 = clone2
return newFireball
end
function fireball.new(player)
local newFireball = {}
setmetatable(newFireball, fireball)
local tool = rs:WaitForChild("Tool")
local tool = tool:Clone()
tool.RequiresHandle = false
tool.Parent = player.Backpack
newFireball.Tool = tool
return newFireball
end
function fireball:OnEquipped()
self.Tool.Equipped:Connect(function()
print("Equipped Tool")
--local fireHand = spawnFireball.new(Player)
remoteEvent:FireServer()
end)
end
return fireball, spawnFireball