CommunismGG
Key RequiredUniversal

CommunismGG

Universal ScriptPhotonPhoton 1K views 49 executesUpdated May 9, 2026
Unrated
00
Lua Script•493 lines (12804 chars)
-- COMMUNISM.GG - OUR GAME                                 
                                  
--            @@@@@@@@@@@@@         
--                      @@@@@       
--                        @@@@      
--                         @@@@     
--                @@@@@@    @@@@    
--              @@@@@@@     @@@@    
--             @@@@@@@      @@@@    
--              @@@@@@@@   @@@@@    
--                @    @@@@@@@@     
--                       @@@@@      
--         @@@        @@@@@@@@@     
--      @@@@@ @@@@@@@@@@@   @@@@@  
--      @@@@@                  @@   
--    @@@@@@                        
--   @@@@@@                         
--   @@@@@                          
-- COMMUNISM.GG - THE SOVIET UNION IS COMING TO ROBLOX
local Rayfield = loadstring(game:HttpGet('https://sirius.menu/rayfield'))()
local Window = Rayfield:CreateWindow({
   Name = "Communism.GG",
   Icon = 0, -- Icon in Topbar. Can use Lucide Icons (string) or Roblox Image (number). 0 to use no icon (default).
   LoadingTitle = "Communism.GG",
   LoadingSubtitle = "OUR script",
   ShowText = "Communism.GG", -- for mobile users to unhide Rayfield, change if you'd like
   Theme = "AmberGlow", -- Check https://docs.sirius.menu/rayfield/configuration/themes

   ToggleUIKeybind = "K", -- The keybind to toggle the UI visibility (string like "K" or Enum.KeyCode)

   DisableRayfieldPrompts = false,
   DisableBuildWarnings = false, -- Prevents Rayfield from emitting warnings when the script has a version mismatch with the interface.

   -- ScriptID = "sid_xxxxxxxxxxxx", -- Your Script ID from developer.sirius.menu — enables analytics, managed keys, and script hosting

   ConfigurationSaving = {
      Enabled = true,
      FolderName = nil, -- Create a custom folder for your hub/game
      FileName = "Communism.GG"
   },

   Discord = {
      Enabled = false, -- Prompt the user to join your Discord server if their executor supports it
      Invite = "noinvitelink", -- The Discord invite code, do not include Discord.gg/. E.g. Discord.gg/ABCD would be ABCD
      RememberJoins = true -- Set this to false to make them join the Discord every time they load it up
   },

   KeySystem = false, -- Set this to true to use our key system
   KeySettings = {
      Title = "Untitled",
      Subtitle = "Key System",
      Note = "No method of obtaining the key is provided", -- Use this to tell the user how to get a key
      FileName = "Key", -- It is recommended to use something unique, as other scripts using Rayfield may overwrite your key file
      SaveKey = true, -- The user's key will be saved, but if you change the key, they will be unable to use your script
      GrabKeyFromSite = false, -- If this is true, set Key below to the RAW site you would like Rayfield to get the key from
      Key = {"Hello"} -- List of keys that the system will accept, can be RAW file links (pastebin, github, etc.) or simple strings ("hello", "key22")
   }
})


local MainTab = Window:CreateTab("Movement", "axis-3d")
local VisualTab = Window:CreateTab("Visual", "eye")


local UIS = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local Players = game:GetService("Players")

local player = Players.LocalPlayer
local camera = workspace.CurrentCamera

local flying = false
local speed = 50

local linearVelocity
local alignOrientation
local attachment
local flyConnection
local deathConnection

local function stopFly()
	flying = false

	if flyConnection then
		flyConnection:Disconnect()
		flyConnection = nil
	end

	if deathConnection then
		deathConnection:Disconnect()
		deathConnection = nil
	end

	local character = player.Character
	if character then
		local humanoid = character:FindFirstChild("Humanoid")

		if humanoid then
			humanoid.PlatformStand = false
			humanoid.AutoRotate = true
		end
	end

	if linearVelocity then
		linearVelocity:Destroy()
		linearVelocity = nil
	end

	if alignOrientation then
		alignOrientation:Destroy()
		alignOrientation = nil
	end

	if attachment then
		attachment:Destroy()
		attachment = nil
	end
end

local function startFly()
	if flying then return end
	flying = true

	local character = player.Character or player.CharacterAdded:Wait()
	local humanoid = character:WaitForChild("Humanoid")
	local rootPart = character:WaitForChild("HumanoidRootPart")

	humanoid.PlatformStand = true
	humanoid.AutoRotate = false

	attachment = Instance.new("Attachment")
	attachment.Parent = rootPart

	linearVelocity = Instance.new("LinearVelocity")
	linearVelocity.Attachment0 = attachment
	linearVelocity.RelativeTo = Enum.ActuatorRelativeTo.World
	linearVelocity.VelocityConstraintMode = Enum.VelocityConstraintMode.Vector
	linearVelocity.MaxForce = math.huge
	linearVelocity.Parent = rootPart

	alignOrientation = Instance.new("AlignOrientation")
	alignOrientation.Attachment0 = attachment
	alignOrientation.Mode = Enum.OrientationAlignmentMode.OneAttachment
	alignOrientation.MaxTorque = math.huge
	alignOrientation.Responsiveness = 15
	alignOrientation.Parent = rootPart

	deathConnection = humanoid.Died:Connect(function()
		stopFly()
	end)

	flyConnection = RunService.RenderStepped:Connect(function()
		if not flying then return end

		local moveDirection = Vector3.new(
			(UIS:IsKeyDown(Enum.KeyCode.A) and -1 or 0) + (UIS:IsKeyDown(Enum.KeyCode.D) and 1 or 0),
			(UIS:IsKeyDown(Enum.KeyCode.Space) and 1 or 0) + (UIS:IsKeyDown(Enum.KeyCode.LeftShift) and -1 or 0),
			(UIS:IsKeyDown(Enum.KeyCode.W) and -1 or 0) + (UIS:IsKeyDown(Enum.KeyCode.S) and 1 or 0)
		)

		if moveDirection.Magnitude > 0 then
			local worldDirection = camera.CFrame:VectorToWorldSpace(moveDirection)

			linearVelocity.VectorVelocity = worldDirection.Unit * speed

			alignOrientation.CFrame = CFrame.lookAt(
				rootPart.Position,
				rootPart.Position + Vector3.new(worldDirection.X, 0, worldDirection.Z)
			)
		else
			linearVelocity.VectorVelocity = Vector3.zero
		end
	end)
end

-- RAYFIELD FLIGHT TOGGLE

MainTab:CreateToggle({
	Name = "Flight",
	CurrentValue = false,
	Flag = "FlyToggle",
	Callback = function(Value)
		if Value then
			startFly()
		else
			stopFly()
		end
	end,
})


local Players = game:GetService("Players")
local RunService = game:GetService("RunService")
local Camera = workspace.CurrentCamera

local LocalPlayer = Players.LocalPlayer

local espEnabled = false
local espCache = {}
local renderConnection

local function createESP(player)
	if player == LocalPlayer then return end

	local box = Drawing.new("Square")
	box.Thickness = 1
	box.Filled = false
	box.Visible = false

	local tracer = Drawing.new("Line")
	tracer.Thickness = 1
	tracer.Visible = false

	local name = Drawing.new("Text")
	name.Size = 13
	name.Center = true
	name.Outline = true
	name.Visible = false
	name.Text = player.Name

	espCache[player] = {
		Box = box,
		Tracer = tracer,
		Name = name
	}
end

local function removeESP(player)
	if espCache[player] then
		for _, drawing in pairs(espCache[player]) do
			drawing:Remove()
		end

		espCache[player] = nil
	end
end

local function enableESP()
	for _, player in ipairs(Players:GetPlayers()) do
		createESP(player)
	end

	renderConnection = RunService.RenderStepped:Connect(function()
		for player, drawings in pairs(espCache) do
			local character = player.Character
			local root = character and character:FindFirstChild("HumanoidRootPart")
			local humanoid = character and character:FindFirstChild("Humanoid")

			if character and root and humanoid and humanoid.Health > 0 then
				local pos, onScreen = Camera:WorldToViewportPoint(root.Position)

				if onScreen then
					local scale = 1 / (pos.Z * math.tan(math.rad(Camera.FieldOfView * 0.5)) * 2) * 100
					local width = math.floor(35 * scale)
					local height = math.floor(55 * scale)

					-- BOX
					drawings.Box.Size = Vector2.new(width, height)
					drawings.Box.Position = Vector2.new(
						pos.X - width / 2,
						pos.Y - height / 2
					)
					drawings.Box.Visible = true

					-- TRACER
					drawings.Tracer.From = Vector2.new(
						Camera.ViewportSize.X / 2,
						Camera.ViewportSize.Y
					)

					drawings.Tracer.To = Vector2.new(pos.X, pos.Y)
					drawings.Tracer.Visible = true

					-- NAME
					drawings.Name.Position = Vector2.new(
						pos.X,
						pos.Y - height / 2 - 14
					)

					drawings.Name.Visible = true
				else
					drawings.Box.Visible = false
					drawings.Tracer.Visible = false
					drawings.Name.Visible = false
				end
			else
				drawings.Box.Visible = false
				drawings.Tracer.Visible = false
				drawings.Name.Visible = false
			end
		end
	end)
end

local function disableESP()
	if renderConnection then
		renderConnection:Disconnect()
		renderConnection = nil
	end

	for player in pairs(espCache) do
		removeESP(player)
	end
end

Players.PlayerAdded:Connect(function(player)
	if espEnabled then
		createESP(player)
	end
end)

Players.PlayerRemoving:Connect(function(player)
	removeESP(player)
end)

-- RAYFIELD TOGGLE

VisualTab:CreateToggle({
	Name = "ESP",
	CurrentValue = false,
	Flag = "ESPToggle",
	Callback = function(Value)
		espEnabled = Value

		if Value then
			enableESP()
		else
			disableESP()
		end
	end,
})


local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer

local playerList = {}

local function refreshPlayerList()
	table.clear(playerList)

	for _, player in ipairs(Players:GetPlayers()) do
		if player ~= LocalPlayer then
			table.insert(playerList, player.Name)
		end
	end
end

refreshPlayerList()

Players.PlayerAdded:Connect(refreshPlayerList)
Players.PlayerRemoving:Connect(refreshPlayerList)

local TeleportDropdown = MainTab:CreateDropdown({
	Name = "Teleport To Player",
	Options = playerList,
	CurrentOption = {},
	MultipleOptions = false,
	Flag = "PlayerTeleportDropdown",
	Callback = function(selected)
		local targetName = typeof(selected) == "table" and selected[1] or selected
		local target = Players:FindFirstChild(targetName)

		if not target then return end
		if not target.Character then return end

		local targetRoot = target.Character:FindFirstChild("HumanoidRootPart")
		local localCharacter = LocalPlayer.Character

		if targetRoot and localCharacter then
			local localRoot = localCharacter:FindFirstChild("HumanoidRootPart")

			if localRoot then
				localRoot.CFrame = targetRoot.CFrame + Vector3.new(0, 3, 0)
			end
		end
	end,
})
local Divider = MainTab:CreateDivider()


-- Services
local Players = game:GetService("Players")
local RunService = game:GetService("RunService")

local LocalPlayer = Players.LocalPlayer

-- State
local targetPlayer = nil
local flingConnection = nil
local flingActive = false
local angle = 0

local function getPlayerNames()
	local names = {}
	for _, p in ipairs(Players:GetPlayers()) do
		if p ~= LocalPlayer then
			table.insert(names, p.Name)
		end
	end
	return names
end

local function startFling()
	if flingConnection then flingConnection:Disconnect() end
	flingActive = true

	flingConnection = RunService.Heartbeat:Connect(function(dt)
		if not flingActive or not targetPlayer then return end

		local targetChar = targetPlayer.Character
		local localChar = LocalPlayer.Character
		if not targetChar or not localChar then return end

		local targetRoot = targetChar:FindFirstChild("HumanoidRootPart")
		local localRoot = localChar:FindFirstChild("HumanoidRootPart")
		if not targetRoot or not localRoot then return end

		angle = angle + dt * 2000

		local yBounce = math.sin(math.rad(angle)) * 10
		local jitter = Vector3.new(
			math.random(-3, 3),
			yBounce,
			math.random(-3, 3)
		)

		local randomRotation = CFrame.Angles(
			math.rad(math.random(0, 360)),
			math.rad(math.random(0, 360)),
			math.rad(math.random(0, 360))
		)

		localRoot.CFrame = CFrame.new(targetRoot.Position + jitter) * randomRotation
	end)
end

local function stopFling()
	flingActive = false
	if flingConnection then
		flingConnection:Disconnect()
		flingConnection = nil
	end
end

local FlingToggle

local PlayerDropdown = MainTab:CreateDropdown({
	Name = "Select Player",
	Options = getPlayerNames(),
	CurrentOption = {""},
	MultipleOptions = false,
	Flag = "TargetPlayer",
	Callback = function(options)
		local found = Players:FindFirstChild(options[1])
		stopFling()
		targetPlayer = nil
		angle = 0

		if not found or found == LocalPlayer then
			if FlingToggle then FlingToggle:Set(false) end
			return
		end

		targetPlayer = found
	end,
})

FlingToggle = MainTab:CreateToggle({
	Name = "Enable Fling",
	CurrentValue = false,
	Flag = "FlingToggle",
	Callback = function(value)
		if value then
			if targetPlayer then
				startFling()
			else
				FlingToggle:Set(false)
			end
		else
			stopFling()
		end
	end,
})

Players.PlayerRemoving:Connect(function(p)
	if p == targetPlayer then
		stopFling()
		targetPlayer = nil
		FlingToggle:Set(false)
		PlayerDropdown:Refresh(getPlayerNames())
	end
end)

Features & Information

Flight, ESP, Fling (WIP), Teleport to Player

Community Comments (0)

No comments yet for this script.

More Scripts for Universal Scripts