chore(identifier): few fixes

This commit is contained in:
khtsly 2026-02-16 14:41:45 +07:00
parent a34f161cfe
commit b6fa3cf2d7
4 changed files with 20 additions and 18 deletions

View file

@ -84,8 +84,8 @@ end
Client.Destroy = Client.DisconnectAll Client.Destroy = Client.DisconnectAll
Client.Fire = function(remoteName: string, reliable: boolean, ...: any?) Client.Fire = function(remoteName: string, ...: any?)
table.insert(reliable and queueEvent or queueUnreliableEvent, { table.insert(queueEvent, {
Replication.get_id(remoteName), Replication.get_id(remoteName),
{ ... } :: any, { ... } :: any,
}) })

View file

@ -15,15 +15,15 @@ local warp_identifier_registry = shared.__warp_identifier_registry
if RunService:IsServer() then if RunService:IsServer() then
local replication_ready: { Player } = {} local replication_ready: { Player } = {}
local replication_id: number = Identifier.get("id_replication") or 1 local replication_id: number = Identifier.get("id_replication") or 1
if not Identifier.has("id_replication") or not replication_id then if not Identifier.has("id_replication") or not replication_id then
replication_id = Identifier.get("id_replication") or 1 replication_id = Identifier.get("id_replication") or 1
end end
local function replicateToAll(content: any, id: number?) local function replicateToAll(content: any, id: number?)
if #replication_ready == 0 then return end if #replication_ready == 0 then return end
local to_repl: any = type(content) == "string" and { content = id } or content local to_repl: any = type(content) == "string" and { [content] = id } or content
Buffer.writeRepl(writer, to_repl, warp_identifier_registry.counter, identifiers_schema) Buffer.writeRepl(writer, to_repl, 1, identifiers_schema)
do do
local buf = Buffer.build(writer) local buf = Buffer.build(writer)
Buffer.reset(writer) Buffer.reset(writer)
@ -43,17 +43,17 @@ if RunService:IsServer() then
end end
Identifier.on_added(replicateToAll) Identifier.on_added(replicateToAll)
_repl.OnServerEvent:Connect(function(player: Player) _repl.OnServerEvent:Connect(function(player: Player)
if table.find(replication_ready, player) then return end if table.find(replication_ready, player) then return end
table.insert(replication_ready, player) table.insert(replication_ready, player)
replicateTo(player) replicateTo(player)
end) end)
Replication.remove = function(player: Player) Replication.remove = function(player: Player)
table.remove(replication_ready, table.find(replication_ready, player)) table.remove(replication_ready, table.find(replication_ready, player))
end end
elseif RunService:IsClient() then elseif RunService:IsClient() then
_repl.OnClientEvent:Connect(function(b: buffer, id: number) _repl.OnClientEvent:Connect(function(b: buffer, id: number)
if type(b) ~= "buffer" then if type(b) ~= "buffer" then
@ -66,7 +66,7 @@ elseif RunService:IsClient() then
end end
end) end)
_repl:FireServer() _repl:FireServer()
Replication.get_id = function(name: string): number Replication.get_id = function(name: string): number
return warp_identifier_registry.cache[name] return warp_identifier_registry.cache[name]
end end

View file

@ -95,27 +95,26 @@ end
Server.Destroy = Server.DisconnectAll Server.Destroy = Server.DisconnectAll
Server.Fire = function(remoteName: string, reliable: boolean, player: Player, ...: any?) Server.Fire = function(remoteName: string, player: Player, ...: any?)
local targetQueue = reliable and queueEvent or queueUnreliableEvent if not queueEvent[player] then
if not targetQueue[player] then queueEvent[player] = {} :: any
targetQueue[player] = {} :: any
end end
table.insert(targetQueue[player], { table.insert(queueEvent[player], {
Identifier.get(remoteName), Identifier.get(remoteName),
{ ... } :: any, { ... } :: any,
}) })
end end
Server.Fires = function(remoteName: string, reliable: boolean, ...: any?) Server.Fires = function(remoteName: string, ...: any?)
for _, player: Player in players_ready do for _, player: Player in players_ready do
Server.Fire(remoteName, reliable, player, ...) Server.Fire(remoteName, player, ...)
end end
end end
Server.FireExcept = function(remoteName: string, reliable: boolean, except: { Player }, ...: any?) Server.FireExcept = function(remoteName: string, except: { Player }, ...: any?)
for _, player: Player in players_ready do for _, player: Player in players_ready do
if table.find(except, player) then continue end if table.find(except, player) then continue end
Server.Fire(remoteName, reliable, player, ...) Server.Fire(remoteName, player, ...)
end end
end end

View file

@ -3,6 +3,9 @@
local Remote = {} local Remote = {}
if game.RunService:IsServer() then if game.RunService:IsServer() then
if not script:FindFirstChild("_repl") then
Instance.new("RemoteEvent", script).Name = "_repl"
end
if not script:FindFirstChild("Event") then if not script:FindFirstChild("Event") then
Instance.new("RemoteEvent", script).Name = "Event" Instance.new("RemoteEvent", script).Name = "Event"
end end