Trollge client sided
Key RequiredUniversal

Trollge client sided

Universal Scriptstupidmango8stupidmango8 1.2K views 294 executesUpdated Dec 21, 2025
0.0/ 5(1 votes)
010% Positive
Lua Script•191 lines (4697 chars)
--// SERVICES
local Players = game:GetService("Players")
local TweenService = game:GetService("TweenService")
local UserInputService = game:GetService("UserInputService")
local Lighting = game:GetService("Lighting")

local player = Players.LocalPlayer

--// IDS
local FACE_IMAGE = "rbxassetid://6862780932"
local FULL_IMAGE = "rbxassetid://10396152149"
local SKY_IMAGE = "rbxassetid://13675428955"

local MUSIC_ID = "rbxassetid://77586042839973"
local RANDOM_SOUND_ID = "rbxassetid://8389041427"
local JUMPSCARE_SOUND_ID = "rbxassetid://6787686247"

--// STATE
local trollStarted = false

--// GUI
local gui = Instance.new("ScreenGui")
gui.ResetOnSpawn = false
gui.Parent = player.PlayerGui

-- Start Button
local button = Instance.new("TextButton")
button.Size = UDim2.fromScale(0.25, 0.08)
button.Position = UDim2.fromScale(0.05, 0.1)
button.BackgroundColor3 = Color3.new(0,0,0)
button.Text = "Start Troll"
button.TextColor3 = Color3.new(1,1,1)
button.TextScaled = true
button.Parent = gui

-- Overlay
local overlay = Instance.new("ImageLabel")
overlay.Size = UDim2.fromScale(1,1)
overlay.BackgroundTransparency = 1
overlay.Visible = false
overlay.Parent = gui

-- Jumpscare
local jumpscare = Instance.new("ImageLabel")
jumpscare.Size = UDim2.fromScale(1,1)
jumpscare.BackgroundTransparency = 1
jumpscare.Visible = false
jumpscare.Parent = gui

--// SOUNDS
local music = Instance.new("Sound", workspace)
music.SoundId = MUSIC_ID
music.Looped = true
music.PlaybackSpeed = 0.15

local randomSound = Instance.new("Sound", workspace)
randomSound.SoundId = RANDOM_SOUND_ID

local jumpscareSound = Instance.new("Sound", workspace)
jumpscareSound.SoundId = JUMPSCARE_SOUND_ID

--// DRAG BUTTON
local dragging, dragStart, startPos
button.InputBegan:Connect(function(i)
	if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then
		dragging = true
		dragStart = i.Position
		startPos = button.Position
	end
end)

button.InputEnded:Connect(function(i)
	if i.UserInputType == Enum.UserInputType.MouseButton1 or i.UserInputType == Enum.UserInputType.Touch then
		dragging = false
	end
end)

UserInputService.InputChanged:Connect(function(i)
	if dragging and (i.UserInputType == Enum.UserInputType.MouseMovement or i.UserInputType == Enum.UserInputType.Touch) then
		local delta = i.Position - dragStart
		button.Position = UDim2.new(
			startPos.X.Scale, startPos.X.Offset + delta.X,
			startPos.Y.Scale, startPos.Y.Offset + delta.Y
		)
	end
end)

--// FACE IMAGE
local function addFaceImage(character)
	local head = character:FindFirstChild("Head")
	if not head or head:FindFirstChild("TrollFace") then return end

	local bb = Instance.new("BillboardGui")
	bb.Name = "TrollFace"
	bb.Adornee = head
	bb.Size = UDim2.new(3,0,3,0)
	bb.AlwaysOnTop = true
	bb.Parent = head

	local img = Instance.new("ImageLabel")
	img.Size = UDim2.fromScale(1,1)
	img.BackgroundTransparency = 1
	img.Image = FACE_IMAGE
	img.Parent = bb
end

local function applyFaces()
	for _, plr in pairs(Players:GetPlayers()) do
		if plr.Character then
			addFaceImage(plr.Character)
		end
		plr.CharacterAdded:Connect(addFaceImage)
	end
end

--// PART EFFECTS
local function trollParts()
	for _, obj in pairs(workspace:GetDescendants()) do
		if obj:IsA("BasePart") then
			for _, face in pairs(Enum.NormalId:GetEnumItems()) do
				local d = Instance.new("Decal")
				d.Texture = FACE_IMAGE
				d.Face = face
				d.Parent = obj
			end

			local p = Instance.new("ParticleEmitter")
			p.Texture = FULL_IMAGE
			p.Rate = 10
			p.Parent = obj
		end
	end
end

--// SKYBOX
local function changeSky()
	local sky = Lighting:FindFirstChildOfClass("Sky") or Instance.new("Sky")
	for _, f in pairs({"Bk","Dn","Ft","Lf","Rt","Up"}) do
		sky["Skybox"..f] = SKY_IMAGE
	end
	sky.Parent = Lighting
end

--// RANDOM SOUND LOOP (ONLY AFTER START)
task.spawn(function()
	while true do
		task.wait(10)
		if trollStarted and math.random(1,2) == 1 then
			randomSound:Play()
		end
	end
end)

--// JUMPSCARE LOOP (ONLY AFTER START)
task.spawn(function()
	while true do
		task.wait(15)
		if trollStarted then
			local images = {FACE_IMAGE, FULL_IMAGE, SKY_IMAGE}
			jumpscare.Image = images[math.random(#images)]
			jumpscare.Visible = true
			jumpscareSound:Play()

			task.wait(3)
			jumpscare.Visible = false
		end
	end
end)

--// BUTTON CLICK
button.MouseButton1Click:Connect(function()
	if trollStarted then return end
	trollStarted = true

	overlay.Image = FULL_IMAGE
	overlay.Visible = true
	overlay.ImageTransparency = 0

	task.delay(5, function()
		TweenService:Create(
			overlay,
			TweenInfo.new(2),
			{ImageTransparency = 1}
		):Play()
	end)

	music:Play()
	changeSky()
	trollParts()
	applyFaces()
end)

Features & Information

Trolling client sided

Community Comments (3)

stupidmango8stupidmango8Dec 21, 2025

@bigpapa1212 what

c00lVoid_8c00lVoid_8Jan 13, 2026

@bigpapa1212 bruh is a bot

Replying to @c00lVoid_8
stupidmango8stupidmango8Jan 14, 2026

@c00lVoid_8 ok sry

More Scripts for Universal Scripts