Roblox Scripet - Universal Stream Sniper

 


Be able to stream snipe players.
Enter Their Name/UserID
Enter THeir Place ID

Press Start and wait.


Script:

-- Old Version: https://raw.githubusercontent.com/Acrillis/SynapseX/master/Synapse%20Scripts/StreamSniper.lua

local Screenguini = Instance.new("ScreenGui")

local Frame = Instance.new("Frame")

local TextLabel = Instance.new("TextLabel")

local TextLabel_2 = Instance.new("TextLabel")

local UsernameBox = Instance.new("TextBox")

local TextLabel_3 = Instance.new("TextLabel")

local PlaceIdBox = Instance.new("TextBox")

local StartButton = Instance.new("TextButton")

local TextLabel_4 = Instance.new("TextLabel")

local UsernameLabel = Instance.new("TextLabel")

local TextLabel_5 = Instance.new("TextLabel")

local UserIdLabel = Instance.new("TextLabel")

local GamerPicture = Instance.new("ImageLabel")


local HttpService = game:GetService("HttpService")

local Players = game:GetService("Players")

local TeleportService = game:GetService("TeleportService")


Screenguini.Name = HttpService:GenerateGUID(false)

Screenguini.Parent = game:GetService("CoreGui")


Frame.Parent = Screenguini

Frame.Active = true

Frame.BackgroundColor3 = Color3.fromRGB(31, 31, 31)

Frame.BorderColor3 = Color3.fromRGB(31, 31, 31)

Frame.Draggable = true

Frame.Size = UDim2.new(0, 400, 0, 260)


TextLabel.Parent = Frame

TextLabel.Active = true

TextLabel.BackgroundColor3 = Color3.fromRGB(255, 170, 0)

TextLabel.BorderColor3 = Color3.fromRGB(31, 31, 40)

TextLabel.Size = UDim2.new(0, 400, 0, 40)

TextLabel.Font = Enum.Font.SourceSansLight

TextLabel.Text = "Synapse X Stream Sniper"

TextLabel.TextSize = 24.000


TextLabel_2.Parent = Frame

TextLabel_2.Active = true

TextLabel_2.BackgroundColor3 = Color3.fromRGB(31, 31, 31)

TextLabel_2.BorderColor3 = Color3.fromRGB(31, 31, 31)

TextLabel_2.Position = UDim2.new(0, 10, 0, 49)

TextLabel_2.Size = UDim2.new(0, 150, 0, 20)

TextLabel_2.Font = Enum.Font.SourceSansLight

TextLabel_2.Text = "Username/UserId:"

TextLabel_2.TextColor3 = Color3.fromRGB(255, 255, 255)

TextLabel_2.TextSize = 16.000


UsernameBox.Name = "UsernameBox"

UsernameBox.Parent = Frame

UsernameBox.BackgroundColor3 = Color3.fromRGB(61, 61, 61)

UsernameBox.BorderColor3 = Color3.fromRGB(31, 31, 31)

UsernameBox.Position = UDim2.new(0, 10, 0, 80)

UsernameBox.Size = UDim2.new(0, 150, 0, 35)

UsernameBox.Font = Enum.Font.SourceSansLight

UsernameBox.PlaceholderColor3 = Color3.fromRGB(255, 255, 255)

UsernameBox.PlaceholderText = "Enter Username Here"

UsernameBox.Text = ""

UsernameBox.TextColor3 = Color3.fromRGB(255, 255, 255)

UsernameBox.TextSize = 18.000


TextLabel_3.Parent = Frame

TextLabel_3.Active = true

TextLabel_3.BackgroundColor3 = Color3.fromRGB(31, 31, 31)

TextLabel_3.BorderColor3 = Color3.fromRGB(31, 31, 31)

TextLabel_3.Position = UDim2.new(0, 10, 0, 130)

TextLabel_3.Size = UDim2.new(0, 150, 0, 20)

TextLabel_3.Font = Enum.Font.SourceSansLight

TextLabel_3.Text = "Place Id:"

TextLabel_3.TextColor3 = Color3.fromRGB(255, 255, 255)

TextLabel_3.TextSize = 16.000


PlaceIdBox.Name = "PlaceIdBox"

PlaceIdBox.Parent = Frame

PlaceIdBox.BackgroundColor3 = Color3.fromRGB(61, 61, 61)

PlaceIdBox.BorderColor3 = Color3.fromRGB(31, 31, 31)

PlaceIdBox.Position = UDim2.new(0, 10, 0, 157)

PlaceIdBox.Size = UDim2.new(0, 150, 0, 35)

PlaceIdBox.Font = Enum.Font.SourceSansLight

PlaceIdBox.PlaceholderColor3 = Color3.fromRGB(255, 255, 255)

PlaceIdBox.PlaceholderText = "Enter PlaceId Here"

PlaceIdBox.Text = ""

PlaceIdBox.TextColor3 = Color3.fromRGB(255, 255, 255)

PlaceIdBox.TextSize = 18.000


StartButton.Name = "StartButton"

StartButton.Parent = Frame

StartButton.BackgroundColor3 = Color3.fromRGB(40, 40, 40)

StartButton.BorderColor3 = Color3.fromRGB(31, 31, 31)

StartButton.Position = UDim2.new(0, 10, 0, 210)

StartButton.Size = UDim2.new(0, 380, 0, 40)

StartButton.Font = Enum.Font.SourceSansLight

StartButton.Text = "Start"

StartButton.TextColor3 = Color3.fromRGB(255, 255, 255)

StartButton.TextSize = 24.000


TextLabel_4.Parent = Frame

TextLabel_4.Active = true

TextLabel_4.BackgroundColor3 = Color3.fromRGB(31, 31, 31)

TextLabel_4.BackgroundTransparency = 1.000

TextLabel_4.BorderColor3 = Color3.fromRGB(31, 31, 31)

TextLabel_4.Position = UDim2.new(0, 200, 0, 49)

TextLabel_4.Size = UDim2.new(0, 0, 0, 20)

TextLabel_4.AutomaticSize = Enum.AutomaticSize.X

TextLabel_4.Font = Enum.Font.SourceSansBold

TextLabel_4.Text = "Username:"

TextLabel_4.TextColor3 = Color3.fromRGB(255, 255, 255)

TextLabel_4.TextSize = 16.000

TextLabel_4.TextWrapped = true

TextLabel_4.TextXAlignment = Enum.TextXAlignment.Left


UsernameLabel.Name = "UsernameLabel"

UsernameLabel.Parent = TextLabel_4

UsernameLabel.Active = true

UsernameLabel.BackgroundColor3 = Color3.fromRGB(31, 31, 31)

UsernameLabel.BackgroundTransparency = 1.000

UsernameLabel.BorderColor3 = Color3.fromRGB(31, 31, 31)

UsernameLabel.Position = UDim2.new(0.5, 0, 0, 0)

UsernameLabel.Size = UDim2.new(0, 150, 0, 20)

UsernameLabel.Font = Enum.Font.SourceSansLight

UsernameLabel.Text = ""

UsernameLabel.TextColor3 = Color3.fromRGB(255, 255, 255)

UsernameLabel.TextSize = 16.000

UsernameLabel.TextXAlignment = Enum.TextXAlignment.Left


TextLabel_5.Parent = Frame

TextLabel_5.Active = true

TextLabel_5.BackgroundColor3 = Color3.fromRGB(31, 31, 31)

TextLabel_5.BackgroundTransparency = 1.000

TextLabel_5.BorderColor3 = Color3.fromRGB(31, 31, 31)

TextLabel_5.Position = UDim2.new(0, 200, 0, 69)

TextLabel_5.Size = UDim2.new(0, 0, 0, 20)

TextLabel_5.AutomaticSize = Enum.AutomaticSize.X

TextLabel_5.Font = Enum.Font.SourceSansBold

TextLabel_5.Text = "UserId:"

TextLabel_5.TextColor3 = Color3.fromRGB(255, 255, 255)

TextLabel_5.TextSize = 16.000

TextLabel_5.TextWrapped = true

TextLabel_5.TextXAlignment = Enum.TextXAlignment.Left


UserIdLabel.Name = "UserIdLabel"

UserIdLabel.Parent = TextLabel_5

UserIdLabel.Active = true

UserIdLabel.BackgroundColor3 = Color3.fromRGB(31, 31, 31)

UserIdLabel.BackgroundTransparency = 1.000

UserIdLabel.BorderColor3 = Color3.fromRGB(31, 31, 31)

UserIdLabel.Position = UDim2.new(0.5, 0, 0, 0)

UserIdLabel.Size = UDim2.new(0, 150, 0, 20)

UserIdLabel.Font = Enum.Font.SourceSansLight

UserIdLabel.Text = ""

UserIdLabel.TextColor3 = Color3.fromRGB(255, 255, 255)

UserIdLabel.TextSize = 16.000

UserIdLabel.TextXAlignment = Enum.TextXAlignment.Left


GamerPicture.Name = "GamerPicture"

GamerPicture.Parent = Frame

GamerPicture.BackgroundColor3 = Color3.fromRGB(255, 255, 255)

GamerPicture.Position = UDim2.new(0, 200, 0, 95)

GamerPicture.Size = UDim2.new(0, 97, 0, 97)

GamerPicture.Image = "rbxasset://textures/ui/GuiImagePlaceholder.png"


if shared.STREAM_SNIPER then

   shared.STREAM_SNIPER:Destroy()

end

shared.STREAM_SNIPER = Screenguini


local searching = false

local confirm = false


local function HttpGet(url)

return pcall(HttpService.JSONDecode, HttpService, game:HttpGet(url))

end


local function Status(text, tout)

StartButton.Text = text


   if tout then

       task.delay(tout, function()

           if StartButton.Text == text then

               searching = false

               StartButton.Text = "Start"    

           end

       end)

   end

end


local function getServers(id, cursor)

   local fullurl = "https://games.roblox.com/v1/games/".. id .."/servers/Public?limit=100"

   if cursor then

       fullurl = "&cursor=".. cursor

   end


   return HttpGet(fullurl)

end


local function fetchThumbs(tokens)

   local payload = {

       Url = "https://thumbnails.roblox.com/v1/batch",

       Headers = {

           ["Content-Type"] = "application/json"

       },

       Method = "POST",


       Body = {}

   }


   for _, token in ipairs(tokens) do

       table.insert(payload.Body, {

           requestId = "0:".. token ..":AvatarHeadshot:150x150:png:regular",

           type = "AvatarHeadShot",

           targetId = 0,

           token = token,

           format = "png",

           size = "150x150"

       })

   end


   payload.Body = HttpService:JSONEncode(payload.Body)

   local result = syn.request(payload)

   local s, data = pcall(HttpService.JSONDecode, HttpService, result.Body)

   return s, data and data.data or data

end


local function teleport(placeId, guid)

   TeleportService:TeleportToPlaceInstance(placeId, guid)

end



local threads = 30


StartButton.MouseButton1Click:Connect(function()

   if confirm then

       confirm = false

       searching = false

       Status("Cancelled")

       return

   end


   if searching then

       confirm = true

       local old = StartButton.Text

       Status("Click again to confirm.")

       task.delay(5, function()

           if "Click again to confirm." == StartButton.Text then

               confirm = false

               StartButton.Text = old

           end

       end)

       return

   end


   searching = true


   -- User ID

   Status("Getting user id...")


   local s, Username, UserId = pcall(function() -- TODO FIX: fix for only numbers players

       local userId = tonumber(UsernameBox.Text) or Players:GetUserIdFromNameAsync(UsernameBox.Text)

       local username = Players:GetNameFromUserIdAsync(userId)


return username, userId

end)


if not s then

return Status("Username or UserId does not exist!", 3)

end


   local s, thumbUrl = pcall(Players.GetUserThumbnailAsync, Players, UserId, Enum.ThumbnailType.HeadShot, Enum.ThumbnailSize.Size150x150)


   UsernameLabel.Text = Username

   UserIdLabel.Text = UserId

   GamerPicture.Image = s and thumbUrl or ""


   Status("Getting user's thumbnail...")

   local s, response = HttpGet("https://thumbnails.roblox.com/v1/users/avatar-headshot?userIds=" .. UserId .. "&format=Png&size=150x150&isCircular=false")

   --local s, response = HttpGet("https://www.roblox.com/headshot-thumbnail/json?userId=" .. UserId .. "&width=150&height=150")

   local thumbnail = s and response['data'][1].imageUrl


   Status("Searching for (".. UserId ..")")

   

   -- Place ID

   Status("Getting place id...")

   

   local placeId = tonumber(PlaceIdBox.Text)


   if PlaceIdBox.Text:gsub("%s", "") == "" then

       placeId = game.PlaceId


   elseif not placeId then

       Status("Invalid place id", 3)

       return

   end

   

   Status("Searching...")

   local cursor = nil

   local searched = 0

   local maxSearchs = 0

   local players = 0

   -- Server search

   while searching do

       if not Screenguini or not Screenguini.Parent then

           break

       end

       local s, result = getServers(placeId, cursor)


       if s then

           local servers = result.data

           cursor = result.nextPageCursor

           

           if StartButton.Text:match("Searching") then

               maxSearchs = maxSearchs + #servers

               Status(searched .."/".. maxSearchs .." servers scanned, players found: ".. players)

           end


           -- Search all servers

           for index, server in ipairs(servers) do

               local function fetchServer()

                   local s, thumbs = fetchThumbs(server.playerTokens)

                   if s then

                       players = players + #thumbs

                       for _, playerThumb in ipairs(thumbs) do

                           if playerThumb.imageUrl then

                               if playerThumb.imageUrl == thumbnail then

                                   searching = false

                                   Status("Found player, teleporting...")


                                   teleport(placeId, server.id)

                                   local try = 0

                                   Player.OnTeleport:Connect(function(teleportState)

                                       if teleportState == Enum.TeleportState.Failed then

                                           try = try + 1

                                           Status("Teleport failed, try #".. try)

                                           teleport(placeId, server.id)

                                       end

                                   end)

                               end

                           else

                               Status("token failed, id:", playerThumb.requestId, playerThumb.state, playerThumb.errorMessage)

                               --print("token failed, id:", playerThumb.requestId, playerThumb.state, playerThumb.errorMessage)

                           end

                       end

                   else

                       Status("token failed", s, thumb)

                       --print("token failed", s, thumbs)

                   end

               end

               searched = searched + 1

               if index % threads ~= 0 then

                   task.spawn(fetchServer)

                   task.wait()


               else

                   fetchServer()

               end


               if searching then

                   Status(searched .."/".. maxSearchs .." servers scanned, players found: ".. players)

               end

           end

           

           -- Player not found

           if not cursor then

               break

           end

       else

           return Status("Failed to find servers", 3)

       end


       task.wait()

   end

   

   if searching then

       Status("Failed to find ".. Username ..", maybe in a vip server", 3)

   end

end)

Previous Post Next Post