open source
Key Required

open source

[INFINITE & GUN] SLAPinstaniiinstanii 3.6K views 553 executesUpdated Mar 23, 2026
5.0/ 5(5 votes)
50100% Positive
Lua Script•697 lines (23819 chars)
local HttpService = game:GetService("HttpService")
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local TweenService = game:GetService("TweenService")
local RunService = game:GetService("RunService")
local CoreGui = game:GetService("CoreGui")

local LocalPlayer = Players.LocalPlayer

local request = syn and syn.request or http_request or request

local BASE_URL = "https://roblox-chat-4ens.onrender.com"

local SoundIds = {
    Msg = "rbxassetid://5797533311",
    Open = "rbxassetid://6895079685",
    Click = "rbxassetid://6895079853"
}

local StickerIds = {
    "rbxassetid://11432924199",
    "rbxassetid://11432924681",
    "rbxassetid://14643093229",
    "rbxassetid://10906232386",
    "rbxassetid://9072382902",
    "rbxassetid://14394625232",
    "rbxassetid://12506240217",
    "rbxassetid://7335532598",
    "rbxassetid://12799984903"
}

local Colors = {
    Background = Color3.fromRGB(25, 25, 30),
    Accent = Color3.fromRGB(0, 120, 255),
    Text = Color3.fromRGB(240, 240, 240),
    GradientStart = Color3.fromRGB(35, 35, 40),
    GradientEnd = Color3.fromRGB(20, 20, 25),
    InputBackground = Color3.fromRGB(40, 40, 45),
    AvatarBackground = Color3.fromRGB(50, 50, 60),
    CloseButton = Color3.fromRGB(200, 80, 80),
    IconColor = Color3.fromRGB(150, 150, 160),
    NotificationRed = Color3.fromRGB(255, 60, 60),
    FrameBorder = Color3.fromRGB(60, 60, 70)
}

local existingGui = CoreGui:FindFirstChild("GC_V16")
if existingGui then
    existingGui:Destroy()
end

local ScreenGui = Instance.new("ScreenGui")
ScreenGui.Name = "GC_V16"
ScreenGui.ResetOnSpawn = false
ScreenGui.Parent = CoreGui

local MainShadow = Instance.new("ImageLabel")
MainShadow.Name = "MainShadow"
MainShadow.Parent = ScreenGui
MainShadow.Size = UDim2.new(0, 440, 0, 350)
MainShadow.Position = UDim2.new(0.5, 0, 0.5, 0)
MainShadow.AnchorPoint = Vector2.new(0.5, 0.5)
MainShadow.BackgroundTransparency = 1
MainShadow.Image = "rbxassetid://6015897843"
MainShadow.ImageTransparency = 0.4
MainShadow.ScaleType = Enum.ScaleType.Slice
MainShadow.SliceCenter = Rect.new(47, 47, 450, 450)

local MainFrame = Instance.new("Frame")
MainFrame.Name = "MainFrame"
MainFrame.Parent = MainShadow
MainFrame.Size = UDim2.new(0, 400, 0, 310)
MainFrame.Position = UDim2.new(0.5, -200, 0.5, -155)
MainFrame.BackgroundColor3 = Colors.Background

local MainGradient = Instance.new("UIGradient")
MainGradient.Parent = MainFrame
MainGradient.Rotation = 45
MainGradient.Color = ColorSequence.new({
    ColorSequenceKeypoint.new(0, Colors.GradientStart),
    ColorSequenceKeypoint.new(1, Colors.GradientEnd)
})

local MainCorner = Instance.new("UICorner")
MainCorner.Parent = MainFrame
MainCorner.CornerRadius = UDim.new(0, 14)

local MinimizeButton = Instance.new("ImageButton")
MinimizeButton.Name = "MinimizeButton"
MinimizeButton.Parent = ScreenGui
MinimizeButton.Size = UDim2.new(0, 45, 0, 45)
MinimizeButton.Position = UDim2.new(0.9, -10, 0.85, -10)
MinimizeButton.BackgroundColor3 = Colors.Background
MinimizeButton.Image = "rbxassetid://3926305904"
MinimizeButton.Visible = false

local MinimizeCorner = Instance.new("UICorner")
MinimizeCorner.Parent = MinimizeButton
MinimizeCorner.CornerRadius = UDim.new(1, 0)

local MinimizeStroke = Instance.new("UIStroke")
MinimizeStroke.Parent = MinimizeButton
MinimizeStroke.Color = Colors.Accent
MinimizeStroke.Thickness = 2

local NotificationBadge = Instance.new("Frame")
NotificationBadge.Name = "NotificationBadge"
NotificationBadge.Parent = MinimizeButton
NotificationBadge.Size = UDim2.new(0, 20, 0, 20)
NotificationBadge.Position = UDim2.new(1, -12, 0, -5)
NotificationBadge.BackgroundColor3 = Colors.NotificationRed
NotificationBadge.Visible = false

local NotificationCorner = Instance.new("UICorner")
NotificationCorner.Parent = NotificationBadge
NotificationCorner.CornerRadius = UDim.new(1, 0)

local NotificationLabel = Instance.new("TextLabel")
NotificationLabel.Name = "NotificationLabel"
NotificationLabel.Parent = NotificationBadge
NotificationLabel.Size = UDim2.new(1, 0, 1, 0)
NotificationLabel.BackgroundTransparency = 1
NotificationLabel.TextColor3 = Color3.new(1, 1, 1)
NotificationLabel.Text = "0"
NotificationLabel.Font = Enum.Font.GothamBold
NotificationLabel.TextSize = 12

local TitleBar = Instance.new("Frame")
TitleBar.Name = "TitleBar"
TitleBar.Parent = MainFrame
TitleBar.Size = UDim2.new(1, 0, 0, 40)
TitleBar.BackgroundTransparency = 1

local TitleLabel = Instance.new("TextLabel")
TitleLabel.Name = "TitleLabel"
TitleLabel.Parent = TitleBar
TitleLabel.Text = "全局聊天 <font color='#0078ff'>V16.3</font>"
TitleLabel.RichText = true
TitleLabel.Size = UDim2.new(0, 200, 1, 0)
TitleLabel.Position = UDim2.new(0, 15, 0, 0)
TitleLabel.BackgroundTransparency = 1
TitleLabel.TextColor3 = Colors.Text
TitleLabel.Font = Enum.Font.GothamBlack
TitleLabel.TextSize = 16
TitleLabel.TextXAlignment = Enum.TextXAlignment.Left

local CloseButton = Instance.new("ImageButton")
CloseButton.Name = "CloseButton"
CloseButton.Parent = TitleBar
CloseButton.Image = "rbxassetid://7743878857"
CloseButton.Size = UDim2.new(0, 20, 0, 20)
CloseButton.Position = UDim2.new(1, -35, 0.5, -10)
CloseButton.BackgroundTransparency = 1
CloseButton.ImageColor3 = Colors.CloseButton

local PlayersButton = Instance.new("ImageButton")
PlayersButton.Name = "PlayersButton"
PlayersButton.Parent = TitleBar
PlayersButton.Visible = false
PlayersButton.Image = "rbxassetid://7734053495"
PlayersButton.Size = UDim2.new(0, 20, 0, 20)
PlayersButton.Position = UDim2.new(1, -65, 0.5, -10)
PlayersButton.BackgroundTransparency = 1
PlayersButton.ImageColor3 = Colors.IconColor

local ChatContainer = Instance.new("Frame")
ChatContainer.Name = "ChatContainer"
ChatContainer.Parent = MainFrame
ChatContainer.Size = UDim2.new(1, -20, 1, -110)
ChatContainer.Position = UDim2.new(0, 10, 0, 50)
ChatContainer.BackgroundTransparency = 1

local ChatScrollingFrame = Instance.new("ScrollingFrame")
ChatScrollingFrame.Name = "ChatScrollingFrame"
ChatScrollingFrame.Parent = ChatContainer
ChatScrollingFrame.Size = UDim2.new(1, 0, 1, 0)
ChatScrollingFrame.BackgroundTransparency = 1
ChatScrollingFrame.ScrollBarThickness = 4
ChatScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, 0)

local ChatListLayout = Instance.new("UIListLayout")
ChatListLayout.Parent = ChatScrollingFrame
ChatListLayout.Padding = UDim.new(0, 8)
ChatListLayout.SortOrder = Enum.SortOrder.LayoutOrder

local InputContainer = Instance.new("Frame")
InputContainer.Name = "InputContainer"
InputContainer.Parent = MainFrame
InputContainer.Size = UDim2.new(1, -24, 0, 40)
InputContainer.Position = UDim2.new(0, 12, 1, -52)
InputContainer.BackgroundColor3 = Colors.InputBackground

local InputCorner = Instance.new("UICorner")
InputCorner.Parent = InputContainer
InputCorner.CornerRadius = UDim.new(1, 0)

local StickerButton = Instance.new("ImageButton")
StickerButton.Name = "StickerButton"
StickerButton.Parent = InputContainer
StickerButton.Size = UDim2.new(0, 24, 0, 24)
StickerButton.Position = UDim2.new(0, 10, 0.5, -12)
StickerButton.BackgroundTransparency = 1
StickerButton.Image = "rbxassetid://7733955740"
StickerButton.ImageColor3 = Colors.IconColor

local MessageInput = Instance.new("TextBox")
MessageInput.Name = "MessageInput"
MessageInput.Parent = InputContainer
MessageInput.Size = UDim2.new(1, -80, 1, 0)
MessageInput.Position = UDim2.new(0, 42, 0, 0)
MessageInput.BackgroundTransparency = 1
MessageInput.TextColor3 = Colors.Text
MessageInput.PlaceholderText = "在此输入..."
MessageInput.Font = Enum.Font.GothamBold
MessageInput.TextSize = 14
MessageInput.TextXAlignment = Enum.TextXAlignment.Left

local SendButton = Instance.new("ImageButton")
SendButton.Name = "SendButton"
SendButton.Parent = InputContainer
SendButton.Image = "rbxassetid://7733919156"
SendButton.Size = UDim2.new(0, 24, 0, 24)
SendButton.Position = UDim2.new(1, -32, 0.5, -12)
SendButton.BackgroundTransparency = 1
SendButton.ImageColor3 = Colors.Accent

local StickerPanel = Instance.new("Frame")
StickerPanel.Name = "StickerPanel"
StickerPanel.Parent = MainShadow
StickerPanel.Size = UDim2.new(0, 180, 0, 130)
StickerPanel.Position = UDim2.new(0.5, -200, 0.5, 100)
StickerPanel.BackgroundColor3 = Colors.Background
StickerPanel.Visible = false
StickerPanel.ClipsDescendants = true

local StickerPanelCorner = Instance.new("UICorner")
StickerPanelCorner.Parent = StickerPanel
StickerPanelCorner.CornerRadius = UDim.new(0, 10)

local StickerPanelStroke = Instance.new("UIStroke")
StickerPanelStroke.Parent = StickerPanel
StickerPanelStroke.Color = Colors.FrameBorder

local StickerPanelGradient = Instance.new("UIGradient")
StickerPanelGradient.Parent = StickerPanel
StickerPanelGradient.Rotation = 45
StickerPanelGradient.Color = ColorSequence.new({
    ColorSequenceKeypoint.new(0, Colors.GradientStart),
    ColorSequenceKeypoint.new(1, Colors.GradientEnd)
})

local StickerScrollingFrame = Instance.new("ScrollingFrame")
StickerScrollingFrame.Name = "StickerScrollingFrame"
StickerScrollingFrame.Parent = StickerPanel
StickerScrollingFrame.Size = UDim2.new(1, -10, 1, -10)
StickerScrollingFrame.Position = UDim2.new(0, 5, 0, 5)
StickerScrollingFrame.BackgroundTransparency = 1
StickerScrollingFrame.ScrollBarThickness = 3

local StickerGridLayout = Instance.new("UIGridLayout")
StickerGridLayout.Parent = StickerScrollingFrame
StickerGridLayout.CellSize = UDim2.new(0, 50, 0, 50)
StickerGridLayout.CellPadding = UDim2.new(0, 5, 0, 5)

local ActivePlayersPanel = Instance.new("Frame")
ActivePlayersPanel.Name = "ActivePlayersPanel"
ActivePlayersPanel.Parent = MainShadow
ActivePlayersPanel.Size = UDim2.new(0, 0, 0, 310)
ActivePlayersPanel.Position = UDim2.new(0.5, 210, 0.5, -155)
ActivePlayersPanel.BackgroundColor3 = Colors.Background
ActivePlayersPanel.ClipsDescendants = true

local ActivePlayersPanelCorner = Instance.new("UICorner")
ActivePlayersPanelCorner.Parent = ActivePlayersPanel
ActivePlayersPanelCorner.CornerRadius = UDim.new(0, 14)

local ActivePlayersPanelGradient = Instance.new("UIGradient")
ActivePlayersPanelGradient.Parent = ActivePlayersPanel
ActivePlayersPanelGradient.Rotation = 45
ActivePlayersPanelGradient.Color = ColorSequence.new({
    ColorSequenceKeypoint.new(0, Colors.GradientStart),
    ColorSequenceKeypoint.new(1, Colors.GradientEnd)
})

local ActivePlayersScrollingFrame = Instance.new("ScrollingFrame")
ActivePlayersScrollingFrame.Name = "ActivePlayersScrollingFrame"
ActivePlayersScrollingFrame.Parent = ActivePlayersPanel
ActivePlayersScrollingFrame.Size = UDim2.new(1, 0, 1, 0)
ActivePlayersScrollingFrame.BackgroundTransparency = 1
ActivePlayersScrollingFrame.ScrollBarThickness = 2

local ActivePlayersListLayout = Instance.new("UIListLayout")
ActivePlayersListLayout.Parent = ActivePlayersScrollingFrame
ActivePlayersListLayout.Padding = UDim.new(0, 8)
ActivePlayersListLayout.HorizontalAlignment = Enum.HorizontalAlignment.Center

local ActivePlayersPadding = Instance.new("UIPadding")
ActivePlayersPadding.Parent = ActivePlayersScrollingFrame
ActivePlayersPadding.PaddingTop = UDim.new(0, 15)

local function playSound(soundId)
    local sound = Instance.new("Sound")
    sound.Parent = workspace
    sound.SoundId = soundId
    sound.Volume = 0.5
    sound.PlayOnRemove = true
    sound:Destroy()
end

local function sendMessage(message)
    spawn(function()
        pcall(function()
            request({
                Url = BASE_URL .. "/chat",
                Method = "POST",
                Headers = {
                    ["Content-Type"] = "application/json"
                },
                Body = HttpService:JSONEncode({
                    message = message,
                    player = LocalPlayer.Name
                })
            })
        end)
    end)
end

local function sendSticker(stickerAssetId)
    playSound(SoundIds.Click)
    sendMessage("||STICKER||" .. stickerAssetId)
    StickerPanel.Visible = false
end

for i, stickerId in ipairs(StickerIds) do
    local stickerButton = Instance.new("ImageButton")
    stickerButton.Name = "Sticker" .. i
    stickerButton.Parent = StickerScrollingFrame
    stickerButton.Image = stickerId
    stickerButton.BackgroundTransparency = 1
    stickerButton.BackgroundColor3 = Colors.AvatarBackground
    
    local stickerCorner = Instance.new("UICorner")
    stickerCorner.Parent = stickerButton
    stickerCorner.CornerRadius = UDim.new(0, 6)
    
    stickerButton.MouseButton1Click:Connect(function()
        sendSticker(stickerId)
    end)
end

StickerGridLayout:GetPropertyChangedSignal("AbsoluteContentSize"):Connect(function()
    StickerScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, StickerGridLayout.AbsoluteContentSize.Y + 20)
end)

StickerButton.MouseButton1Click:Connect(function()
    StickerPanel.Visible = not StickerPanel.Visible
    playSound(SoundIds.Click)
end)

CloseButton.MouseButton1Click:Connect(function()
    playSound(SoundIds.Open)
    MainShadow.Visible = false
    MinimizeButton.Visible = true
end)

MinimizeButton.MouseButton1Click:Connect(function()
    playSound(SoundIds.Open)
    MainShadow.Visible = true
    MinimizeButton.Visible = false
    NotificationBadge.Visible = false
    NotificationLabel.Text = "0"
end)

PlayersButton.MouseButton1Click:Connect(function()
    local targetSize = UDim2.new(0, 150, 0, 310)
    local tween = TweenService:Create(ActivePlayersPanel, TweenInfo.new(0.5, Enum.EasingStyle.Quart), {
        Size = targetSize
    })
    tween:Play()
end)

local function handleSendMessage()
    local message = MessageInput.Text
    if message == "" then return end
    
    playSound(SoundIds.Click)
    StickerPanel.Visible = false
    sendMessage(message)
    MessageInput.Text = ""
end

SendButton.MouseButton1Click:Connect(handleSendMessage)

MessageInput.FocusLost:Connect(function(enterPressed)
    if enterPressed then
        handleSendMessage()
    end
end)

local function getPlayerAvatarUrl(userId)
    return "https://www.roblox.com/headshot-thumbnail/image?userId=" .. userId .. "&width=150&height=150&format=png"
end

local function formatTimestamp(timestamp)
    local date = os.date("*t", timestamp / 1000)
    return string.format("%02d:%02d", date.hour, date.min)
end

local function getRolePrefix(role)
    if role == "DEV" then
        return "[开发者] ", "#fff"
    elseif role == "ADMIN" then
        return "[管理员] ", "#ff5555"
    else
        return "", "#00a8ff"
    end
end

local function createMessageFrame(messageData, layoutOrder)
    local playerName = messageData.player
    local message = messageData.msg
    local timestamp = messageData.timestamp
    local messageType = messageData.type
    local role = messageData.role or "USER"
    
    local isSystem = playerName == "SYSTEM"
    local isAnnouncement = playerName == "ANNOUNCEMENT"
    local isSticker = message and string.find(message, "||STICKER||")
    
    local frameHeight = 30
    if isSticker then
        frameHeight = 60
    elseif message then
        local textLength = #message
        local estimatedLines = math.ceil(textLength / 50)
        frameHeight = math.max(30, 14 * estimatedLines + 16)
    end
    
    local messageFrame = Instance.new("Frame")
    messageFrame.Name = "MessageFrame"
    messageFrame.Parent = ChatScrollingFrame
    messageFrame.Size = UDim2.new(1, 0, 0, frameHeight)
    messageFrame.BackgroundTransparency = 1
    messageFrame.LayoutOrder = layoutOrder or 0
    
    local avatarImage = Instance.new("ImageLabel")
    avatarImage.Name = "AvatarImage"
    avatarImage.Parent = messageFrame
    avatarImage.Size = UDim2.new(0, 28, 0, 28)
    avatarImage.Position = UDim2.new(0, 2, 0, 0)
    avatarImage.BackgroundColor3 = Colors.AvatarBackground
    avatarImage.Image = "rbxassetid://0"
    
    local avatarCorner = Instance.new("UICorner")
    avatarCorner.Parent = avatarImage
    avatarCorner.CornerRadius = UDim.new(1, 0)
    
    if isSystem or isAnnouncement then
        avatarImage.Visible = false
    else
        task.spawn(function()
            pcall(function()
                local userId = Players:GetUserIdFromNameAsync(playerName)
                avatarImage.Image = getPlayerAvatarUrl(userId)
            end)
        end)
    end
    
    local contentFrame = Instance.new("Frame")
    contentFrame.Name = "ContentFrame"
    contentFrame.Parent = messageFrame
    contentFrame.Size = UDim2.new(1, -35, 1, 0)
    contentFrame.Position = UDim2.new(0, 35, 0, 0)
    contentFrame.BackgroundTransparency = 1
    
    if isSystem or isAnnouncement then
        contentFrame.Position = UDim2.new(0, 5, 0, 0)
    end
    
    if isSticker then
        local stickerAssetId = string.gsub(message, "||STICKER||", "")
        
        local nameLabel = Instance.new("TextLabel")
        nameLabel.Parent = contentFrame
        nameLabel.Text = string.format("<font color=\"#666677\" size=\"10\">%s</font> <font color=\"#00a8ff\"><b>%s</b></font>", 
            formatTimestamp(timestamp), playerName)
        nameLabel.Size = UDim2.new(1, 0, 0, 15)
        nameLabel.BackgroundTransparency = 1
        nameLabel.RichText = true
        nameLabel.TextXAlignment = Enum.TextXAlignment.Left
        
        local stickerImage = Instance.new("ImageLabel")
        stickerImage.Parent = contentFrame
        stickerImage.Size = UDim2.new(0, 45, 0, 45)
        stickerImage.Position = UDim2.new(0, 0, 0, 15)
        stickerImage.BackgroundTransparency = 1
        stickerImage.Image = stickerAssetId
        stickerImage.ScaleType = Enum.ScaleType.Fit
    else
        local textLabel = Instance.new("TextLabel")
        textLabel.Name = "TextLabel"
        textLabel.Parent = contentFrame
        textLabel.Size = UDim2.new(1, 0, 1, 0)
        textLabel.BackgroundTransparency = 1
        textLabel.RichText = true
        textLabel.Font = Enum.Font.Gotham
        textLabel.TextSize = 14
        textLabel.TextWrapped = true
        textLabel.TextXAlignment = Enum.TextXAlignment.Left
        textLabel.TextYAlignment = Enum.TextYAlignment.Top
        
        if messageType == "sys" then
            textLabel.Text = string.format("<i><font color=\"#ff5555\">%s</font></i>", message)
        elseif messageType == "announce" then
            textLabel.Text = string.format("<font color=\"#ffaa00\"><b>📢 %s</b></font>", message)
        else
            local prefix, nameColor = getRolePrefix(role)
            textLabel.Text = string.format(
                "<font color=\"#666677\" size=\"10\">%s</font> <font color=\"%s\"><b>%s%s:</b></font> <font color=\"#e0e0e0\">%s</font>",
                formatTimestamp(timestamp),
                nameColor,
                prefix,
                playerName,
                message or ""
            )
        end
    end
    
    local replyButton = Instance.new("TextButton")
    replyButton.Name = "ReplyButton"
    replyButton.Parent = messageFrame
    replyButton.Size = UDim2.new(1, 0, 1, 0)
    replyButton.BackgroundTransparency = 1
    replyButton.Text = ""
    
    replyButton.MouseButton1Click:Connect(function()
        MessageInput.Text = "> " .. playerName .. ": "
        MessageInput:CaptureFocus()
    end)
    
    return messageFrame
end

local lastMessageCount = 0
local unreadCount = 0

local function fetchAndDisplayMessages()
    spawn(function()
        local success, response = pcall(function()
            return request({
                Url = BASE_URL .. "/chat?nocache=" .. tick(),
                Method = "GET"
            })
        end)
        
        if success and response and response.StatusCode == 200 then
            local messages = HttpService:JSONDecode(response.Body)
            
            for _, child in ipairs(ChatScrollingFrame:GetChildren()) do
                if child:IsA("Frame") then
                    child:Destroy()
                end
            end
            
            for i, messageData in ipairs(messages) do
                createMessageFrame(messageData, i)
            end
            
            ChatListLayout:ApplyLayout()
            ChatScrollingFrame.CanvasSize = UDim2.new(0, 0, 0, ChatListLayout.AbsoluteContentSize.Y + 20)
            
            local newMessageCount = #messages
            if newMessageCount > lastMessageCount then
                local newMessages = newMessageCount - lastMessageCount
                
                if lastMessageCount > 0 then
                    unreadCount = unreadCount + newMessages
                    
                    if not MainShadow.Visible then
                        NotificationBadge.Visible = true
                        NotificationLabel.Text = tostring(unreadCount)
                    end
                    
                    playSound(SoundIds.Msg)
                end
                
                task.delay(0.05, function()
                    ChatScrollingFrame.CanvasPosition = Vector2.new(0, ChatListLayout.AbsoluteContentSize.Y + 100)
                end)
            end
            lastMessageCount = newMessageCount
            
            ChatContainer.Visible = true
        end
    end)
end

local function checkUserRole()
    spawn(function()
        local success, response = pcall(function()
            return request({
                Url = BASE_URL .. "/check-role?player=" .. LocalPlayer.Name .. "&nocache=" .. tostring(tick()),
                Method = "GET"
            })
        end)
        
        if success and response and response.StatusCode == 200 then
            local roleData = HttpService:JSONDecode(response.Body)
            
            if roleData.role == "ADMIN" or roleData.role == "DEV" then
                PlayersButton.Visible = true
            end
        end
    end)
end

RunService.RenderStepped:Connect(function()
    local time = tick() * 3
end)

spawn(function()
    wait(1)
    fetchAndDisplayMessages()
    
    while true do
        wait(1)
        fetchAndDisplayMessages()
    end
end)

spawn(function()
    wait(3)
    while true do
        checkUserRole()
        wait(3)
    end
end)

local dragWindow = nil
local dragInput = nil
local dragStart = nil
local startPos = nil

local function updateDrag(input, frame)
    local delta = input.Position - dragStart
    frame.Position = UDim2.new(
        startPos.X.Scale,
        startPos.X.Offset + delta.X,
        startPos.Y.Scale,
        startPos.Y.Offset + delta.Y
    )
end

TitleBar.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragWindow = MainShadow
        dragStart = input.Position
        startPos = MainShadow.Position
        
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragWindow = nil
            end
        end)
    end
end)

TitleBar.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
        dragInput = input
    end
end)

MinimizeButton.InputBegan:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseButton1 or input.UserInputType == Enum.UserInputType.Touch then
        dragWindow = MinimizeButton
        dragStart = input.Position
        startPos = MinimizeButton.Position
        
        input.Changed:Connect(function()
            if input.UserInputState == Enum.UserInputState.End then
                dragWindow = nil
            end
        end)
    end
end)

MinimizeButton.InputChanged:Connect(function(input)
    if input.UserInputType == Enum.UserInputType.MouseMovement or input.UserInputType == Enum.UserInputType.Touch then
        dragInput = input
    end
end)

UserInputService.InputChanged:Connect(function(input)
    if input == dragInput and dragWindow then
        updateDrag(input, dragWindow)
    end
end)

Features & Information

auto dodge open source
#idk

Community Comments (15)

instaniiinstaniiMar 24, 2026

@buddyidontgottimeto really useless, you won’t change it yourself? i already open sourced it lmao

instaniiinstaniiMar 24, 2026

@buddyidontgottimeto and if it was really useless why would i even post it or open source it

instaniiinstaniiMar 24, 2026(edited)

@buddyidontgottimetohave have you ever considered it's your dog* delay and trashy injector's unc issues lol

instaniiinstaniiMar 24, 2026(edited)

@buddyidontgottimetogo go back to school before you come here typing, your iq isn't high enough to play with scripts, your spelling looks like it came from you just finishing jerking off

instaniiinstaniiMar 24, 2026

honestly, i kindly gave your open source features and keyless scripts and you act out this unreasonable farce, it is either these *ed comments or malicious reviews

Replying to @instanii
acedabladeacedabladeApr 6, 2026

@kanl w response

toreoscar2toreoscar2Mar 28, 2026

*nnnn bro get cooked btw can you update the script if you have time? Like a new gun future soemthing

acedabladeacedabladeApr 6, 2026

after a while it kicked me from the game to save me from getting banned, very useful and it works but only has auto dodge.

FriedRiceIsYummyFriedRiceIsYummyApr 7, 2026

add more features

instaniiinstaniiApr 8, 2026

@buddyidontgottimeto how about we see who’s acting like a weirdo here

instaniiinstaniiApr 8, 2026

@buddyidontgottimeto you post some meaningless script here and then say it doesn’t work dude why don’t you think maybe it’s your own problem why does it work for others but not for you

instaniiinstaniiApr 8, 2026

@buddyidontgottimeto it took you this many days just to reply with these dumb messages what were you doing the days you didn’t reply jerking off lmao

instaniiinstaniiApr 8, 2026

@buddyidontgottimeto if it doesn’t work for you then go find another script if it doesn’t work just deal with it

quackers129quackers129Jul 31, 2026

doesn't work (doesn't load(

jhfgbnkjhfgbnkAug 19, 2026

不知道怎么用

More Scripts for [INFINITE & GUN] SLAP