
KeylessUniversal

-- ╔══════════════════════════════════════╗
-- ║ IGRIS FLY - MOBILE UI ║
-- ╚══════════════════════════════════════╝
local Players = game:GetService("Players")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")
local LocalPlayer = Players.LocalPlayer
local FlyGui = Instance.new("ScreenGui")
FlyGui.Name = "IgrisFlyWidget"
FlyGui.ResetOnSpawn = false
FlyGui.IgnoreGuiInset = true
FlyGui.DisplayOrder = 1000
local ok = pcall(function() FlyGui.Parent = game:GetService("CoreGui") end)
if not ok then FlyGui.Parent = LocalPlayer:WaitForChild("PlayerGui") end
-- =================== دالة خلية ===================
local function makeCell(parent, text, order, textSize, w, h)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0, w or 55, 0, h or 38)
btn.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
btn.Text = text
btn.TextColor3 = Color3.fromRGB(255, 255, 255)
btn.TextSize = textSize or 15
btn.Font = Enum.Font.GothamBold
btn.BorderSizePixel = 0
btn.LayoutOrder = order
btn.ZIndex = 11
btn.Parent = parent
local st = Instance.new("UIStroke", btn)
st.Color = Color3.fromRGB(255, 255, 255)
st.Thickness = 1.5
return btn
end
-- =================== الإطار الرئيسي ===================
local Widget = Instance.new("Frame")
Widget.Size = UDim2.new(0, 165, 0, 152)
Widget.Position = UDim2.new(0, 10, 0.5, -76)
Widget.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
Widget.BorderSizePixel = 0
Widget.ZIndex = 10
Widget.ClipsDescendants = true
Widget.Parent = FlyGui
local WidgetStroke = Instance.new("UIStroke")
WidgetStroke.Color = Color3.fromRGB(255, 255, 255)
WidgetStroke.Thickness = 2
WidgetStroke.Parent = Widget
local Grid = Instance.new("UIGridLayout")
Grid.CellSize = UDim2.new(0, 55, 0, 38)
Grid.CellPadding = UDim2.new(0, 0, 0, 0)
Grid.SortOrder = Enum.SortOrder.LayoutOrder
Grid.Parent = Widget
-- ====== الصف الأول: [X] [-] [IGRIS] ======
local CloseBtn = makeCell(Widget, "X", 1, 17)
local TopMinus = makeCell(Widget, "-", 2, 24)
local IGRISCell = makeCell(Widget, "IGRIS", 3, 13)
-- ====== الصف الثاني: [أعلى] [+] [IGRIS وسط] ======
local UpBtn = makeCell(Widget, "أعلى", 4, 13)
local PlusBtn = makeCell(Widget, "+", 5, 24)
-- خلية IGRIS الوسطى (جزء من الدمج البصري)
local IGRISMid = makeCell(Widget, "", 6, 13)
-- ====== الصف الثالث: [أسفل] [-] [رقم] ======
local DownBtn = makeCell(Widget, "أسفل", 7, 13)
local MinusBtn = makeCell(Widget, "-", 8, 24)
local SpeedCell = makeCell(Widget, "1", 9, 18)
SpeedCell.TextColor3 = Color3.fromRGB(255, 255, 255)
-- ====== الصف الرابع: [طيران - يمتد على الكل] ======
local FlyBtn = Instance.new("TextButton")
FlyBtn.Size = UDim2.new(0, 165, 0, 38)
FlyBtn.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
FlyBtn.Text = "طيران"
FlyBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
FlyBtn.TextSize = 16
FlyBtn.Font = Enum.Font.GothamBold
FlyBtn.BorderSizePixel = 0
FlyBtn.LayoutOrder = 10
FlyBtn.ZIndex = 11
FlyBtn.Parent = Widget
local fst = Instance.new("UIStroke", FlyBtn)
fst.Color = Color3.fromRGB(255, 255, 255)
fst.Thickness = 1.5
-- =================== دمج IGRIS بصرياً (فريم فوق الخليتين) ===================
local IGRISOverlay = Instance.new("TextLabel")
IGRISOverlay.Size = UDim2.new(0, 55, 0, 76)
IGRISOverlay.Position = UDim2.new(0, 110, 0, 0)
IGRISOverlay.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
IGRISOverlay.Text = "IGRIS"
IGRISOverlay.TextColor3 = Color3.fromRGB(255, 255, 255)
IGRISOverlay.TextSize = 13
IGRISOverlay.Font = Enum.Font.GothamBold
IGRISOverlay.BorderSizePixel = 0
IGRISOverlay.ZIndex = 13
IGRISOverlay.Parent = Widget
local iovst = Instance.new("UIStroke", IGRISOverlay)
iovst.Color = Color3.fromRGB(255, 255, 255)
iovst.Thickness = 1.5
-- =================== سحب الواجهة ===================
local wDrag, wDragStart, wStartPos = false, nil, nil
Widget.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.Touch then
wDrag = true; wDragStart = i.Position; wStartPos = Widget.Position
end
end)
Widget.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.Touch then wDrag = false end
end)
UserInputService.InputChanged:Connect(function(i)
if wDrag and i.UserInputType == Enum.UserInputType.Touch then
local d = i.Position - wDragStart
Widget.Position = UDim2.new(
wStartPos.X.Scale, wStartPos.X.Offset + d.X,
wStartPos.Y.Scale, wStartPos.Y.Offset + d.Y
)
end
end)
-- =================== منطق الطيران ===================
local flyLevel = 1
local flyEnabled = false
local flyConn = nil
local bodyVel = nil
local bodyGyro = nil
local goUp = false
local goDown = false
local function getSpeed() return flyLevel * 25 end
local function updateDisplay()
SpeedCell.Text = tostring(flyLevel)
end
local function stopFly()
flyEnabled = false
goUp = false; goDown = false
if flyConn then flyConn:Disconnect(); flyConn = nil end
if bodyVel then bodyVel:Destroy(); bodyVel = nil end
if bodyGyro then bodyGyro:Destroy(); bodyGyro = nil end
local char = LocalPlayer.Character
if char then
local hum = char:FindFirstChildOfClass("Humanoid")
if hum then hum.PlatformStand = false end
end
FlyBtn.Text = "طيران"
FlyBtn.TextColor3 = Color3.fromRGB(255, 255, 255)
FlyBtn.BackgroundColor3 = Color3.fromRGB(0, 0, 0)
end
local function startFly()
local char = LocalPlayer.Character
if not char then return end
local hrp = char:FindFirstChild("HumanoidRootPart")
local hum = char:FindFirstChildOfClass("Humanoid")
if not hrp or not hum then return end
flyEnabled = true
hum.PlatformStand = true
bodyVel = Instance.new("BodyVelocity")
bodyVel.Velocity = Vector3.new(0,0,0)
bodyVel.MaxForce = Vector3.new(1e5,1e5,1e5)
bodyVel.Parent = hrp
bodyGyro = Instance.new("BodyGyro")
bodyGyro.MaxTorque = Vector3.new(1e5,1e5,1e5)
bodyGyro.D = 100
bodyGyro.CFrame = hrp.CFrame
bodyGyro.Parent = hrp
FlyBtn.Text = "✔ طيران"
FlyBtn.TextColor3 = Color3.fromRGB(0, 0, 0)
FlyBtn.BackgroundColor3 = Color3.fromRGB(100, 255, 150)
flyConn = RunService.RenderStepped:Connect(function()
if not flyEnabled then return end
local char2 = LocalPlayer.Character
if not char2 then return end
local hum2 = char2:FindFirstChildOfClass("Humanoid")
if not hum2 then return end
local spd = getSpeed()
local md = hum2.MoveDirection
local vel = Vector3.new(0,0,0)
if md.Magnitude > 0.1 then
vel = Vector3.new(md.X, 0, md.Z) * spd
end
if goUp then
vel = Vector3.new(vel.X, spd, vel.Z)
elseif goDown then
vel = Vector3.new(vel.X, -spd * 0.6, vel.Z)
else
vel = Vector3.new(vel.X, 0, vel.Z)
end
bodyVel.Velocity = vel
bodyGyro.CFrame = workspace.CurrentCamera.CFrame
end)
end
-- =================== أحداث ===================
FlyBtn.MouseButton1Click:Connect(function()
if flyEnabled then stopFly() else startFly() end
end)
IGRISOverlay.Active = true
IGRISOverlay.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.Touch then
if flyEnabled then stopFly() else startFly() end
end
end)
UpBtn.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.Touch then goUp = true end
end)
UpBtn.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.Touch then goUp = false end
end)
DownBtn.InputBegan:Connect(function(i)
if i.UserInputType == Enum.UserInputType.Touch then goDown = true end
end)
DownBtn.InputEnded:Connect(function(i)
if i.UserInputType == Enum.UserInputType.Touch then goDown = false end
end)
PlusBtn.MouseButton1Click:Connect(function()
if flyLevel < 20 then flyLevel += 1; updateDisplay() end
end)
TopMinus.MouseButton1Click:Connect(function()
if flyLevel > 1 then flyLevel -= 1; updateDisplay() end
end)
MinusBtn.MouseButton1Click:Connect(function()
if flyLevel > 1 then flyLevel -= 1; updateDisplay() end
end)
CloseBtn.MouseButton1Click:Connect(function()
stopFly(); Widget.Visible = false
end)
LocalPlayer.CharacterAdded:Connect(function() stopFly() end)
updateDisplay()
print("✅ IGRIS Fly Mobile Loaded")No comments yet for this script.



