reupdate v1.0.7

This commit is contained in:
EternityDev 2024-03-13 08:13:01 +07:00
parent 563af05c62
commit ae1754d616
2 changed files with 21 additions and 12 deletions

View file

@ -1,5 +1,6 @@
--!native
--!strict
--!optimize 2
local ClientProcess = {}
local RunService = game:GetService("RunService")
@ -10,6 +11,7 @@ local Event = require(script.Parent.Parent.Event)
local Spawn = require(Util.Spawn)
local Key = require(Util.Key)
local RateLimit = require(Util.RateLimit)
local Buffer = require(Util.Buffer)
local clientRatelimit: Type.StoredRatelimit = {}
local clientQueue: Type.QueueMap = {}
@ -99,7 +101,7 @@ function ClientProcess.start()
for Identifier: string, data: any in unreliableClientQueue do
if #data > 0 then
if clientRatelimit[Identifier](#data) then
UnreliableEvent:FireServer(Identifier, data)
UnreliableEvent:FireServer(Buffer.revert(Identifier), data)
end
table.clear(data)
end
@ -107,7 +109,7 @@ function ClientProcess.start()
for Identifier: string, data: any in clientQueue do
if #data > 0 then
if clientRatelimit[Identifier](#data) then
ReliableEvent:FireServer(Identifier, data)
ReliableEvent:FireServer(Buffer.revert(Identifier), data)
end
table.clear(data)
end
@ -170,17 +172,18 @@ function ClientProcess.start()
end
for Identifier: string, requestsData in queueOutRequest[1] do
if #requestsData == 0 then continue end
RequestEvent:FireServer(Identifier, "\1", requestsData)
RequestEvent:FireServer(Buffer.revert(Identifier), "\1", requestsData)
table.clear(queueOutRequest[1][Identifier])
end
for Identifier: string, requestsData in queueOutRequest[2] do
if #requestsData == 0 then continue end
RequestEvent:FireServer(Identifier, "\0", requestsData)
RequestEvent:FireServer(Buffer.revert(Identifier), "\0", requestsData)
table.clear(queueOutRequest[2][Identifier])
end
end)
local function onClientNetworkReceive(Identifier: string, data: any)
local function onClientNetworkReceive(Identifier: any, data: any)
if not Identifier or not data then return end
Identifier = Buffer.convert(Identifier)
if not queueIn[Identifier] then
queueIn[Identifier] = {}
end
@ -195,8 +198,9 @@ function ClientProcess.start()
end
ReliableEvent.OnClientEvent:Connect(onClientNetworkReceive)
UnreliableEvent.OnClientEvent:Connect(onClientNetworkReceive)
RequestEvent.OnClientEvent:Connect(function(Identifier: string, action: string, returnDatas)
RequestEvent.OnClientEvent:Connect(function(Identifier: any, action: string, returnDatas)
if not Identifier or not returnDatas then return end
Identifier = Buffer.convert(Identifier)
if action == "\1" then
table.insert(queueInRequest[1][Identifier], returnDatas)
else

View file

@ -1,5 +1,6 @@
--!native
--!strict
--!optimize 2
local ServerProcess = {}
local RunService = game:GetService("RunService")
@ -11,6 +12,7 @@ local Event = require(script.Parent.Parent.Event)
local Spawn = require(Util.Spawn)
local Key = require(Util.Key)
local RateLimit = require(Util.RateLimit)
local Buffer = require(Util.Buffer)
local serverQueue: Type.QueueMap = {}
local unreliableServerQueue: Type.QueueMap = {}
@ -130,6 +132,7 @@ function ServerProcess.add(Identifier: string, originId: string, ratelimit: Type
end
function ServerProcess.addCallback(Identifier: string, key: string, callback)
print(serverCallback, Identifier)
serverCallback[Identifier][key] = callback
end
@ -142,7 +145,7 @@ function ServerProcess.start()
for Identifier: string, players in unreliableServerQueue do
for player: Player, data: any in players do
if #data == 0 then continue end
UnreliableEvent:FireClient(player, Identifier, data)
UnreliableEvent:FireClient(player, Buffer.revert(Identifier), data)
table.clear(data)
end
end
@ -150,7 +153,7 @@ function ServerProcess.start()
if not queueOut[player] then continue end
for Identifier: string, data: any in queueOut[player] do
if #data == 0 then continue end
ReliableEvent:FireClient(player, Identifier, data)
ReliableEvent:FireClient(player, Buffer.revert(Identifier), data)
table.clear(data)
end
end
@ -210,20 +213,21 @@ function ServerProcess.start()
end
for player: Player, requestsData: any in queueOutRequest[1][Identifier] do
if #requestsData == 0 then continue end
RequestEvent:FireClient(player, Identifier, "\1", requestsData)
RequestEvent:FireClient(player, Buffer.revert(Identifier), "\1", requestsData)
table.clear(requestsData)
end
for player: Player, toReturnDatas: any in queueOutRequest[2][Identifier] do
if #toReturnDatas == 0 then continue end
RequestEvent:FireClient(player, Identifier, "\0", toReturnDatas)
RequestEvent:FireClient(player, Buffer.revert(Identifier), "\0", toReturnDatas)
table.clear(toReturnDatas)
end
end
end
end
end)
local function onServerNetworkReceive(player: Player, Identifier: string, data: any)
local function onServerNetworkReceive(player: Player, Identifier: any, data: any)
if not Identifier or not data then return end
Identifier = Buffer.convert(Identifier)
if not serverQueue[Identifier] then
serverQueue[Identifier] = {}
end
@ -237,8 +241,9 @@ function ServerProcess.start()
end
ReliableEvent.OnServerEvent:Connect(onServerNetworkReceive)
UnreliableEvent.OnServerEvent:Connect(onServerNetworkReceive)
RequestEvent.OnServerEvent:Connect(function(player: Player, Identifier: string, action: string, data: any)
RequestEvent.OnServerEvent:Connect(function(player: Player, Identifier: any, action: string, data: any)
if not Identifier or not data then return end
Identifier = Buffer.convert(Identifier)
if not queueInRequest[1][Identifier][player] then
queueInRequest[1][Identifier][player] = {}
queueInRequest[2][Identifier][player] = {}