This commit is contained in:
EternityDev 2024-03-13 08:01:27 +07:00
parent f5bb1df4b0
commit 563af05c62
9 changed files with 102 additions and 5 deletions

BIN
Warp.rbxm

Binary file not shown.

View file

@ -1,5 +1,6 @@
--!strict --!strict
--!native --!native
--!optimize 2
local Server = {} local Server = {}
Server.__index = Server Server.__index = Server
@ -11,12 +12,16 @@ local ServerProcess = require(script.Parent.ServerProcess)
local Assert = require(Util.Assert) local Assert = require(Util.Assert)
local Key = require(Util.Key) local Key = require(Util.Key)
local Serdes = require(Util.Serdes) local Serdes = require(Util.Serdes)
local Buffer = require(Util.Buffer)
function Server.new(Identifier: string, rateLimit: Type.rateLimitArg?) function Server.new(Identifier: string, rateLimit: Type.rateLimitArg?)
local self = setmetatable({}, Server) local self = setmetatable({}, Server)
self.id = Serdes(Identifier) self._buffer = Buffer.new()
self._buffer:writeu8(Serdes(Identifier))
self.id = Buffer.convert(self._buffer:build())
self.fn = {} self.fn = {}
ServerProcess.add(self.id, Identifier, rateLimit or { maxEntrance = 200, interval = 2 }) ServerProcess.add(self.id, Identifier, rateLimit or { maxEntrance = 200, interval = 2 })
self._buffer:remove()
return self return self
end end

View file

@ -1,5 +1,6 @@
--!strict --!strict
--!native --!native
--!optimize 2
local Dedicated = {} local Dedicated = {}
Dedicated.__index = Dedicated Dedicated.__index = Dedicated

View file

@ -1,5 +1,6 @@
--!strict --!strict
--!native --!native
--!optimize 2
local Signal = {} local Signal = {}
Signal.__index = Signal Signal.__index = Signal

View file

@ -0,0 +1,64 @@
--!strict
--!native
--!optimize 2
local DedicatedBuffer = {}
DedicatedBuffer.__index = DedicatedBuffer
local create = buffer.create
local copy = buffer.copy
local writeu8 = buffer.writeu8
local tostring = buffer.tostring
local default = {
point = 0,
size = 256,
}
function DedicatedBuffer.alloc(self: any, byte: number)
local size: number = self.size
local b: buffer = self.buffer
while self.point + byte >= size do
size = math.floor(size * 1.5)
end
local newBuffer: buffer = create(size)
copy(newBuffer, 0, b)
b = newBuffer
end
function DedicatedBuffer.build(self: any): buffer
local p: number = self.point
local build: buffer = create(p)
copy(build, 0, self.buffer, 0, p)
return build
end
function DedicatedBuffer.writeu8(self: any, val: number)
DedicatedBuffer.alloc(self, 1)
writeu8(self.buffer, self.point, val)
self.point += 1
end
function DedicatedBuffer.flush(self: any)
self.point = default.point
self.size = default.size
self.buffer = create(256)
end
function DedicatedBuffer.new()
return setmetatable({
point = default.point,
size = default.size,
buffer = create(256)
}, DedicatedBuffer)
end
function DedicatedBuffer.remove(self: any)
self:flush()
setmetatable(self, nil)
end
return DedicatedBuffer.new :: typeof(DedicatedBuffer.new)

View file

@ -0,0 +1,24 @@
--!strict
--!native
--!optimize 2
local Buffer = {}
Buffer.__index = Buffer
local Dedicated = require(script.Dedicated)
local tostring = buffer.tostring
local fromstring = buffer.fromstring
function Buffer.new()
return Dedicated()
end
function Buffer.convert(b: buffer): string
return tostring(b)
end
function Buffer.revert(s: string): buffer
return fromstring(s)
end
return Buffer :: typeof(Buffer)

View file

@ -11,7 +11,8 @@ return function(Identifier: string): string
if RunService:IsServer() then if RunService:IsServer() then
if not Event:GetAttribute(Identifier) then if not Event:GetAttribute(Identifier) then
SerInt += 1 SerInt += 1
Event:SetAttribute(Identifier, string.pack("I1", SerInt)) -- I1 -> 255 max, I2 -> ~ 6.5e4 max. (SerInt) Event:SetAttribute(Identifier, SerInt)
--Event:SetAttribute(Identifier, string.pack("I1", SerInt)) -- I1 -> 255 max, I2 -> ~ 6.5e4 max. (SerInt)
end end
else else
while not Event:GetAttribute(Identifier) do while not Event:GetAttribute(Identifier) do

View file

@ -1,5 +1,6 @@
--!native --!native
--!strict --!strict
--!optimize 2
local thread: thread? = nil local thread: thread? = nil
local function passer(fn, ...): () local function passer(fn, ...): ()
@ -20,7 +21,7 @@ if not thread then
coroutine.resume(thread :: any, thread) coroutine.resume(thread :: any, thread)
end end
return function(fn: (...any) -> (), ...: any): () return function(fn: (...any) -> (...any?), ...: any): ()
if not thread then if not thread then
thread = coroutine.create(yield) thread = coroutine.create(yield)
coroutine.resume(thread :: any, thread) coroutine.resume(thread :: any, thread)

View file

@ -1,6 +1,6 @@
[package] [package]
name = "imezx/warp" name = "imezx/warp"
version = "1.0.5" version = "1.0.7"
registry = "https://github.com/UpliftGames/wally-index" registry = "https://github.com/UpliftGames/wally-index"
realm = "shared" realm = "shared"
license = "MIT" license = "MIT"