Popbox v2
Key RequiredUniversal

Popbox v2

Universal ScriptHappykidHappykid 725 views 922 executesUpdated Feb 18, 2026
Unrated
00
Lua Script•154 lines (4722 chars)
-- ============================================
-- ROBLOX P2P SYNC REAL (CHAT ANTIGO + EVENTOS)
-- Sala fixa: room_1771375142143_egez7i58n
-- ============================================

local ROOM_ID = "room_1771375142143_egez7i58n"
local SERVER_URL = "https://preview-sandbox--fc671c8f1b2aaed12b176e9b14797ff5.base44.app"

local HttpService = game:GetService("HttpService")
local Players = game:GetService("Players")
local Chat = game:GetService("Chat")
local player = Players.LocalPlayer

local CLIENT_ID = HttpService:GenerateGUID(false)
local lastChatId = ""
local lastEventId = ""

print("===================================")
print("SYNC REAL ATIVO")
print("Sala:", ROOM_ID)
print("Player:", player.Name)
print("Client ID:", CLIENT_ID)
print("===================================")

------------------------------------------------
-- ENVIAR CHAT (CHAT PADRÃO ROBLOX)
------------------------------------------------
player.Chatted:Connect(function(msg)
    pcall(function()
        HttpService:RequestAsync({
            Url = SERVER_URL .. "/api/chat/send",
            Method = "POST",
            Headers = {["Content-Type"] = "application/json"},
            Body = HttpService:JSONEncode({
                room_id = ROOM_ID,
                client_id = CLIENT_ID,
                sender = player.Name,
                message = msg,
                time = os.time()
            })
        })
    end)
end)

------------------------------------------------
-- RECEBER CHAT (MOSTRA BOLHA NORMAL)
------------------------------------------------
local function pollChat()
    local ok, res = pcall(function()
        return HttpService:RequestAsync({
            Url = SERVER_URL .. "/api/chat/messages?room_id=" .. ROOM_ID .. "&after=" .. lastChatId,
            Method = "GET"
        })
    end)

    if ok and res.Success then
        local data = HttpService:JSONDecode(res.Body)
        for _, msg in ipairs(data.messages or {}) do
            if msg.client_id ~= CLIENT_ID then
                local target = Players:FindFirstChild(msg.sender)
                if target and target.Character and target.Character:FindFirstChild("Head") then
                    Chat:Chat(target.Character.Head, msg.message, Enum.ChatColor.White)
                end
            end
            lastChatId = msg.id or lastChatId
        end
    end
end

------------------------------------------------
-- ENVIAR EVENTOS VISUAIS
------------------------------------------------
local function sendEvent(eventType, data)
    pcall(function()
        HttpService:RequestAsync({
            Url = SERVER_URL .. "/api/events/smart",
            Method = "POST",
            Headers = {["Content-Type"] = "application/json"},
            Body = HttpService:JSONEncode({
                room_id = ROOM_ID,
                client_id = CLIENT_ID,
                event_type = eventType,
                event_data = data,
                time = os.time()
            })
        })
    end)
end

------------------------------------------------
-- RECEBER EVENTOS VISUAIS
------------------------------------------------
local function pollEvents()
    local ok, res = pcall(function()
        return HttpService:RequestAsync({
            Url = SERVER_URL .. "/api/events/smart?room_id=" .. ROOM_ID .. "&after=" .. lastEventId,
            Method = "GET"
        })
    end)

    if ok and res.Success then
        local data = HttpService:JSONDecode(res.Body)
        for _, ev in ipairs(data.events or {}) do
            if ev.client_id ~= CLIENT_ID then
                local d = ev.event_data or {}

                if ev.event_type == "block_created" then
                    local part = Instance.new("Part")
                    part.Size = Vector3.new(d.sx or 4, d.sy or 4, d.sz or 4)
                    part.Position = Vector3.new(d.x or 0, d.y or 5, d.z or 0)
                    part.Anchored = true
                    part.Parent = workspace
                end
            end
            lastEventId = ev.id or lastEventId
        end
    end
end

------------------------------------------------
-- API PÚBLICA PRA USAR
------------------------------------------------
local Sync = {}

function Sync.CreateBlock(pos)
    sendEvent("block_created", {
        x = pos.X,
        y = pos.Y,
        z = pos.Z,
        sx = 4,
        sy = 4,
        sz = 4
    })
end

------------------------------------------------
-- LOOPS
------------------------------------------------
task.spawn(function()
    while true do
        pollChat()
        task.wait(0.5)
    end
end)

task.spawn(function()
    while true do
        pollEvents()
        task.wait(1)
    end
end)

print("SYNC TOTAL INICIADO (SEM DEMO)")
return Sync

Features & Information

E nessesario entra em uma sala recomendando entra em https://roblox-sync-zone.base44.app copiar o id da sala (temos uma sala de exemplo na versão demo não a nesecidade de edição) O script não foi testado caso tenha erros fique tranquilo o erro ou coisa mal feito será removido O script que você está a ver sincroniza clientes no msm jogo e servidor assim fazendo com que um ver oque o outro faz ou executa esse scritp não afeta outros jogadores

Community Comments (1)

HappykidHappykidFeb 18, 2026

Legal de mais

More Scripts for Universal Scripts