From 5b0d4ee6907de0e9adbd2aa5049f3218c402387b Mon Sep 17 00:00:00 2001 From: EternityDev Date: Mon, 18 Mar 2024 12:50:04 +0700 Subject: [PATCH] 1.0.8 --- Warp.rbxm | Bin 12441 -> 12759 bytes src/Index/Client/ClientProcess.luau | 27 +++++++++++++++------------ src/Index/Server/ServerProcess.luau | 21 +++++++++++++-------- src/Index/Util/Serdes.luau | 2 +- 4 files changed, 29 insertions(+), 21 deletions(-) diff --git a/Warp.rbxm b/Warp.rbxm index 8acdfa8353cfb09447a0a2dce898f3fb17b32a9f..aeb626b60d016fb415a71477b2d8e3d0d1fa7f7c 100644 GIT binary patch delta 7247 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 delta 6967 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 diff --git a/src/Index/Client/ClientProcess.luau b/src/Index/Client/ClientProcess.luau index 43228d9..5d43449 100644 --- a/src/Index/Client/ClientProcess.luau +++ b/src/Index/Client/ClientProcess.luau @@ -99,12 +99,11 @@ end function ClientProcess.start() RunService.PostSimulation:Connect(function() for Identifier: string, data: any in unreliableClientQueue do - if #data > 0 then - if clientRatelimit[Identifier](#data) then - UnreliableEvent:FireServer(Buffer.revert(Identifier), data) - end - table.clear(data) + if #data == 0 then continue end + if clientRatelimit[Identifier](#data) then + UnreliableEvent:FireServer(Buffer.revert(Identifier), data) end + table.clear(data) end for Identifier: string, data: any in clientQueue do if #data > 0 then @@ -131,9 +130,9 @@ function ClientProcess.start() if #queueIn[Identifier] > 0 then for _, packedDatas: any in queueIn[Identifier] do if #packedDatas == 0 then continue end - for _, v: any in packedDatas do - for _, fn: any in clientCallback[Identifier] do - Spawn(fn, table.unpack(v)) + for _, fn: any in clientCallback[Identifier] do + for i=1,math.min(1e3, #packedDatas) do + Spawn(fn, table.unpack(packedDatas[i] or {})) end end end @@ -142,8 +141,10 @@ function ClientProcess.start() if #queueInRequest[1][Identifier] > 0 then for idx, packetDatas: any in queueInRequest[1][Identifier] do if #packetDatas == 0 then continue end - for _, packetData in packetDatas do - for _, fn: any in clientCallback[Identifier] do + for _, fn: any in clientCallback[Identifier] do + for i=1,math.min(1e3, #packetDatas) do + local packetData = packetDatas[i] + if not packetData then continue end Spawn(function() local requestReturn = { fn(table.unpack(packetData[2])) } table.insert(queueOutRequest[2][Identifier], { packetData[1], requestReturn }) @@ -157,10 +158,12 @@ function ClientProcess.start() for _, packetDatas: any in queueInRequest[2][Identifier] do for _, packetData in packetDatas do if #packetData == 1 then continue end - for idx, clientRequest in clientRequestQueue[Identifier] do + for y=1, math.min(1e3, #clientRequestQueue[Identifier]) do + local clientRequest = clientRequestQueue[Identifier][y] + if not clientRequest then continue end if clientRequest[1] == packetData[1] then Spawn(clientRequest[2], table.unpack(packetData[2])) - table.remove(clientRequestQueue[Identifier], idx) + table.remove(clientRequestQueue[Identifier], y) break end end diff --git a/src/Index/Server/ServerProcess.luau b/src/Index/Server/ServerProcess.luau index 2cf1c17..3614246 100644 --- a/src/Index/Server/ServerProcess.luau +++ b/src/Index/Server/ServerProcess.luau @@ -173,9 +173,9 @@ function ServerProcess.start() if #queueIn[Identifier][player] > 0 then for _, packedDatas: any in queueIn[Identifier][player] do if #packedDatas == 0 then continue end - for _, v: any in packedDatas do - for _, fn: any in serverCallback[Identifier] do - Spawn(fn, player, table.unpack(v)) + for _, fn: any in serverCallback[Identifier] do + for i=1,math.min(1e3, #packedDatas) do + Spawn(fn, player, table.unpack(packedDatas[i] or {})) end end end @@ -184,8 +184,10 @@ function ServerProcess.start() if #queueInRequest[1][Identifier][player] > 0 then for idx, packetDatas: any in queueInRequest[1][Identifier][player] do if #packetDatas == 0 then continue end - for _, packetData in packetDatas do - for _, fn: any in serverCallback[Identifier] do + for _, fn: any in serverCallback[Identifier] do + for i=1,math.min(1e3, #packetDatas) do + local packetData = packetDatas[i] + if not packetData then continue end Spawn(function() local requestReturn = { fn(player, table.unpack(packetData[2])) } table.insert(queueOutRequest[2][Identifier][player], { packetData[1], requestReturn }) @@ -197,12 +199,15 @@ function ServerProcess.start() end if #queueInRequest[2][Identifier][player] > 0 then for _, packetDatas: any in queueInRequest[2][Identifier][player] do - for _, packetData in packetDatas do + for idx, packetData in packetDatas do if #packetData == 1 then continue end - for idx, serverRequest in serverRequestQueue[Identifier][player] do + for y=1, math.min(1e3, #serverRequestQueue[Identifier][player]) do + local serverRequest = serverRequestQueue[Identifier][player][y] + if not serverRequest then continue end if serverRequest[1] == packetData[1] then Spawn(serverRequest[2], table.unpack(packetData[2])) - table.remove(serverRequestQueue[Identifier], idx) + table.remove(packetDatas, idx) + table.remove(serverRequestQueue[Identifier][player], y) break end end diff --git a/src/Index/Util/Serdes.luau b/src/Index/Util/Serdes.luau index 2b5db61..d71743b 100644 --- a/src/Index/Util/Serdes.luau +++ b/src/Index/Util/Serdes.luau @@ -5,7 +5,7 @@ local SerInt = 0 local Event = require(script.Parent.Parent.Event).Reliable local Assert = require(script.Parent.Assert) -return function(Identifier: string): string +return function(Identifier: string): number Assert(typeof(Identifier) == "string", "Identifier must be a string type.") Assert(SerInt < 255, "reached max 255 identifiers.") if RunService:IsServer() then