Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

ModulScript only runs once per call?

Asked by 7 years ago
Edited 7 years ago

Hi ScriptingHelpers Community,

I'm attempting to create a hotel room door which can be purchased by other users, but won't give them the source code.

I've successfully created a module which runs all the functions needed by the model, but for some reason there's an unusual error which I can't get my head around.

If I try and run the script twice in one game, it will only run once. Please see the example below for some context.

Example:

}Player 1 swipes their room key on Door 1.

}Door 1 opens.

}Player 2 swipes their room key on Door 2 a short time after Player 1.

}Door 2 opens.

}Player 1 and Player 2 swipe their keys at the same time at both Door 1 and Door 2.

}The door which was swiped first opens, the other does nothing.

}Once the door has completed the opening function, the other door functions again.

I've tried looking at global functions, but I can't see any relevant materials which I can see that relate to my issue, either that or I'm just being blind.

Thank you in advance.

1 answer

Log in to vote
1
Answered by
Pyrondon 2089 Game Jam Winner Moderation Voter Community Moderator
7 years ago

This is simply how ModuleScripts work.
From the wiki: "Its code is executed at the point it is required, and will only be executed once per peer (server/client)."

To avoid this, you can wrap the ModuleScript's code in a function which you can call directly after requiring. This function would contain the module's original body, and return whatever you initially had it return. Example:

(Module)

return function()
    --// The module code
end

(Usage)

require(location)() --// Note the parentheses; this requires the module then calls the function it returned.

Hope this helped.

Ad

Answer this question