Untitled

mail@pastecode.io avatar
unknown
lua
2 years ago
1.6 kB
3
Indexable
Never
local MessagingService = game:GetService("MessagingService")

local MESSAGING_TOPIC_SERVER_START = "StartedServerInstance"
local MESSAGING_TOPIC_SERVER_RESPONSE = "ResponseServerInstance"

local GROUP_CONTROL = "Control"
local GROUP_TEST = "Test"

local cachedServers = {
	Test = 0,
	Control = 0,
}
local testGroup = nil

MessagingService:SubscribeAsync(MESSAGING_TOPIC_SERVER_START, function(message)
	print("When this is fired, it means a new server started and it wants to check how many instances are there")
	
	MessagingService:PublishAsync(MESSAGING_TOPIC_SERVER_RESPONSE, testGroup)
end)

MessagingService:SubscribeAsync(MESSAGING_TOPIC_SERVER_RESPONSE, function(message)
	print("###########################")
	if message.Data then
		cachedServers[message.Data] += 1	
	end
	print("###########################")
end)

MessagingService:PublishAsync(MESSAGING_TOPIC_SERVER_START, nil)


-- Process what kind of server instance this will be
task.delay(5, function()
	if testGroup then
		local serversCount = cachedServers[GROUP_TEST] + cachedServers[GROUP_CONTROL]
		
		local testPercentage = (cachedServers[GROUP_TEST] / serversCount) * 100
		local controlPercentage = (cachedServers[GROUP_CONTROL] / serversCount) * 100
		
		if testPercentage <= 50 then
			testGroup = GROUP_TEST
		end
		
		return
	end
	
	print("If no response from servers them randomly assign a group")
	local random = math.random(1, 10)
	
	print("Assuming this is a 50% chance of being control")
	if random <= 5 then
		testGroup = GROUP_CONTROL
	else
		testGroup = GROUP_TEST
	end
	
	task.wait(1)
	print(cachedServers)
end)