
Keyless

local Players = game:GetService("Players")
local CoreGui = game:GetService("CoreGui")
local TweenService = game:GetService("TweenService")
local localPlayer = Players.LocalPlayer
-- Asset ID текстур и лиц
local NORMAL_FACE = "rbxassetid://75149787879884"
local ANGER_FACE = "rbxassetid://118957392764865"
local ANGER_TEXTURE = "rbxassetid://116081942235328"
-- Координаты точек телепортации
local posMain = Vector3.new(-179.4, 15, -133.11)
local posBox = Vector3.new(-145.64, 13, -125.47)
local posEnd = Vector3.new(-122, 15, 182.15)
-- GUI Контейнер
local screenGui = Instance.new("ScreenGui")
screenGui.Name = "SphereTeleportGui"
screenGui.ResetOnSpawn = false
screenGui.Parent = (gethui and gethui()) or CoreGui or localPlayer:WaitForChild("PlayerGui")
local mainFrame = Instance.new("Frame")
mainFrame.Size = UDim2.new(0, 220, 0, 310)
mainFrame.Position = UDim2.new(0.05, 0, 0.18, 0)
mainFrame.BackgroundTransparency = 1
mainFrame.Active = true
mainFrame.Draggable = true
mainFrame.Parent = screenGui
-- Телепорт с сохранением скорости
local function teleportTo(targetPos)
local character = localPlayer.Character
if not character then return end
local rootPart = character:FindFirstChild("HumanoidRootPart")
local humanoid = character:FindFirstChildOfClass("Humanoid")
if rootPart then
local savedLinearVelocity = rootPart.AssemblyLinearVelocity
local savedAngularVelocity = rootPart.AssemblyAngularVelocity
if humanoid then
humanoid:ChangeState(Enum.HumanoidStateType.Running)
end
character:PivotTo(CFrame.new(targetPos))
rootPart.AssemblyLinearVelocity = savedLinearVelocity
rootPart.AssemblyAngularVelocity = savedAngularVelocity
end
end
local buttonDataList = {}
-- Создание круглой кнопки
local function createSphereButton(name, text, yPos, targetVector, normalBg, gloomyBg, strokeHueCenter)
local container = Instance.new("Frame")
container.Name = name .. "_Container"
container.Size = UDim2.new(1, 0, 0, 95)
container.Position = UDim2.new(0, 0, 0, yPos)
container.BackgroundTransparency = 1
container.Parent = mainFrame
-- Основа кнопки
local button = Instance.new("ImageButton")
button.Name = name
button.Size = UDim2.new(0, 58, 0, 58)
button.Position = UDim2.new(0.5, -29, 0, 0)
button.BackgroundColor3 = normalBg
button.AutoButtonColor = false
button.BackgroundTransparency = 1
button.Parent = container
local buttonCorner = Instance.new("UICorner")
buttonCorner.CornerRadius = UDim.new(1, 0)
buttonCorner.Parent = button
-- Слой полупрозрачной текстуры Anger (зажата в круг собственным UICorner)
local angerOverlay = Instance.new("ImageLabel")
angerOverlay.Name = "AngerTextureOverlay"
angerOverlay.Size = UDim2.new(1, 0, 1, 0)
angerOverlay.Position = UDim2.new(0, 0, 0, 0)
angerOverlay.BackgroundTransparency = 1
angerOverlay.Image = ANGER_TEXTURE
angerOverlay.ImageTransparency = 1
angerOverlay.ScaleType = Enum.ScaleType.Crop
angerOverlay.ZIndex = 2
angerOverlay.Parent = button
local textureCorner = Instance.new("UICorner")
textureCorner.CornerRadius = UDim.new(1, 0)
textureCorner.Parent = angerOverlay
-- Слой лица (поверх текстуры)
local faceLabel = Instance.new("ImageLabel")
faceLabel.Name = "FaceImage"
faceLabel.Size = UDim2.new(1, 0, 1, 0)
faceLabel.Position = UDim2.new(0, 0, 0, 0)
faceLabel.BackgroundTransparency = 1
faceLabel.Image = NORMAL_FACE
faceLabel.ImageTransparency = 1
faceLabel.ScaleType = Enum.ScaleType.Fit
faceLabel.ZIndex = 3
faceLabel.Parent = button
local faceCorner = Instance.new("UICorner")
faceCorner.CornerRadius = UDim.new(1, 0)
faceCorner.Parent = faceLabel
-- Переливающийся контур
local stroke = Instance.new("UIStroke")
stroke.Thickness = 3
stroke.Transparency = 1
stroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border
stroke.Parent = button
-- Текст снизу (Minecraft Arcade)
local label = Instance.new("TextLabel")
label.Name = "Label"
label.Size = UDim2.new(1, 0, 0, 30)
label.Position = UDim2.new(0, 0, 0, 63)
label.BackgroundTransparency = 1
label.TextColor3 = normalBg
label.TextSize = 13
label.Font = Enum.Font.Arcade
label.Text = text
label.TextTransparency = 1
label.TextWrapped = true
label.Parent = container
-- Чёрный контур у текста
local textStroke = Instance.new("UIStroke")
textStroke.Color = Color3.fromRGB(0, 0, 0)
textStroke.Thickness = 1.5
textStroke.Transparency = 1
textStroke.Parent = label
-- Быстрое покачивание
local swayRight = TweenService:Create(button, TweenInfo.new(0.9, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut), {Rotation = 6})
local swayLeft = TweenService:Create(button, TweenInfo.new(0.9, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut), {Rotation = -6})
task.spawn(function()
while button and button.Parent do
swayRight:Play()
swayRight.Completed:Wait()
swayLeft:Play()
swayLeft.Completed:Wait()
end
end)
button.MouseButton1Click:Connect(function()
teleportTo(targetVector)
end)
local data = {
button = button,
angerOverlay = angerOverlay,
faceLabel = faceLabel,
stroke = stroke,
label = label,
textStroke = textStroke,
normalBg = normalBg,
gloomyBg = gloomyBg,
strokeHueCenter = strokeHueCenter,
isAnger = false,
isAnimating = false
}
table.insert(buttonDataList, data)
return data
end
-- Кнопки
createSphereButton("MainTP", "TELEPORT 1\n[-179.4, 15, -133.11]", 0, posMain,
Color3.fromRGB(0, 200, 255), Color3.fromRGB(15, 30, 60), 0.55)
createSphereButton("BoxTP", "Оставить коробку чтобы помочь новичкам", 102, posBox,
Color3.fromRGB(255, 45, 70), Color3.fromRGB(55, 10, 15), 0.98)
createSphereButton("EndTP", "TELEPORT TO END OF MAP", 204, posEnd,
Color3.fromRGB(0, 230, 100), Color3.fromRGB(10, 45, 20), 0.38)
-- Плавное появление интерфейса
task.spawn(function()
for step = 1, 120 do
local alpha = step / 120
for _, data in ipairs(buttonDataList) do
data.button.BackgroundTransparency = 1 - alpha
data.faceLabel.ImageTransparency = 1 - alpha
data.stroke.Transparency = 1 - alpha
data.label.TextTransparency = 1 - alpha
data.textStroke.Transparency = 1 - alpha
end
task.wait(0.008)
end
end)
-- Переливание контура
task.spawn(function()
local timeOffset = 0
while true do
timeOffset = timeOffset + 0.03
for _, data in ipairs(buttonDataList) do
local wave = math.sin(timeOffset) * 0.12
local currentHue = (data.strokeHueCenter + wave) % 1
local val = data.isAnger and 0.5 or 1.0
data.stroke.Color = Color3.fromHSV(currentHue, 0.85, val)
end
task.wait(0.02)
end
end)
-- Анимация смены состояний (повышена прозрачность текстуры)
local function setAngerState(toAnger)
for _, data in ipairs(buttonDataList) do
if data.isAnger ~= toAnger and not data.isAnimating then
data.isAnger = toAnger
data.isAnimating = true
task.spawn(function()
local startBg = data.button.BackgroundColor3
local targetBg = toAnger and data.gloomyBg or data.normalBg
local targetFace = toAnger and ANGER_FACE or NORMAL_FACE
-- Этап 1: Старое лицо уходит, текстура проявляется до легкой видимости (0.75 прозрачности / 25% видимости)
for step = 1, 120 do
local alpha = step / 120
data.faceLabel.ImageTransparency = alpha
data.angerOverlay.ImageTransparency = toAnger and (1 - alpha * 0.25) or (0.75 + alpha * 0.25)
data.button.BackgroundColor3 = startBg:Lerp(targetBg, alpha)
task.wait(0.008)
end
data.faceLabel.Image = targetFace
-- Этап 2: Новое лицо проявляется поверх текстуры
for step = 1, 120 do
local alpha = step / 120
data.faceLabel.ImageTransparency = 1 - alpha
task.wait(0.008)
end
data.isAnimating = false
end)
end
end
end
-- Отслеживание текста Anger
task.spawn(function()
local pGui = localPlayer:WaitForChild("PlayerGui", 10)
if not pGui then return end
local mainGui = pGui:WaitForChild("MainGui", 10)
local uiTop = mainGui and mainGui:WaitForChild("UITop", 10)
local frame = uiTop and uiTop:WaitForChild("Frame", 10)
local angerBar = frame and frame:WaitForChild("AngerBar", 10)
local angerTextLabel = angerBar and angerBar:WaitForChild("Anger", 10)
if angerTextLabel then
local function checkAnger()
local txt = angerTextLabel.Text
local is100 = string.find(txt, "100%%") ~= nil or (string.find(txt, "100") ~= nil and not string.find(txt, "1000"))
setAngerState(is100)
end
angerTextLabel:GetPropertyChangedSignal("Text"):Connect(checkAnger)
checkAnger()
end
end)No comments yet for this script.
