-- ╔══════════════════════════════════════╗ -- ║ 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")