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

Is it possible to pass an object from localscript to ModuleScript without an event?

First of all, I have filtering enabled, and everything was working fine till I tried what I'm doing below:

I have some functions I was using within both my server scripts and local scripts. I wanted to consolidate them all to a modulescript.

I thought I could do this within a local script:

							local UT =  require(game.ReplicatedStorage.UtilityCode)
							local model_tool = part.Parent.Parent:Clone()
							local original_name = model_tool.Name
							model_tool.Name = model_tool.Name.."-"..player.Name
							model_tool.Parent = game.ReplicatedStorage
							
							game.ReplicatedStorage:WaitForChild(model_tool.Name)
							
							model_tool.Name = original_name
							
							local tool_in_model = UT:get_tool_from_object(model_tool)
							local GAME_CONFIG = tool_in_model.Game_Config:Clone()

but when I try to do a getChildren on the model_tool object passed into my modulescript, there is an error message saying that the argument passed in is nil, even though I check it for a nil value before it gets that far.

I'm using RemoteFunctions and RemoteEvents, otherwise, but just wanted to try getting around some of that with 3 simple functions I use that I can otherwise make into RemoteFunctions for both Server and Client... Maybe those remote functions could just call my modulescript at that point.

Any thoughts?

-Jason

2 comments

0

ModuleScripts are only started on the server once, and once for each client. Seperately. Are you aware of this fact?

0

Yes I'm using it accordingly

1 answer

Well, I was stubborn, kept testing some obvious things, and as it turned out, my best option was to use tuple on my expected arguments, and it was the second argument of the table that gave me the start of the results, in all cases. I was able to pass in an object to my module script, and used the functions with both my local and server scripts.

Here's a portion of what worked:

local UtilityCode = {}
UtilityCode.obj = {}
function UtilityCode.get_tool_from_object(...)
	
	local tuple = {...}
	local obj = tuple[2]
	local result = nil
	if obj==nil then
		return result
	end
	
	local c= obj:getChildren()
	for i,v in pairs(c) do
		if v:IsA("Tool") then
			result = v
		end
	end
	return result
end
return UtilityCode

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