local Players = game:GetService("Players") local RunService = game:GetService("RunService") local MOLYN_PREFIX = "MOLYN_" local MOLYN_FAN_TEXT = "MOLYN FAN" local CHECK_INTERVAL = 0.25 -- ربع ثانية local hue = 0 local lastCheckTime = 0 -- قاموس لحفظ البيلبوردز النشطة local activeBillboards = {} -- وظيفة إنشاء النص العائم local function createBillboard(player, displayText) local character = player.Character if not character then return end local humanoidRootPart = character:FindFirstChild("HumanoidRootPart") if not humanoidRootPart then return end -- إزالة البيلبورد السابق إذا كان موجود if activeBillboards[player.Name] then activeBillboards[player.Name]:Destroy() end -- إنشاء BillboardGui local billboardGui = Instance.new("BillboardGui") billboardGui.Size = UDim2.new(0, 200, 0, 50) billboardGui.StudsOffset = Vector3.new(0, 3.5, 0) billboardGui.AlwaysOnTop = true billboardGui.Adornee = humanoidRootPart -- إنشاء TextLabel local textLabel = Instance.new("TextLabel") textLabel.Size = UDim2.new(1, 0, 1, 0) textLabel.Text = displayText textLabel.Font = Enum.Font.GothamBold textLabel.TextScaled = true textLabel.TextColor3 = Color3.new(1, 1, 1) textLabel.BackgroundTransparency = 1 textLabel.TextStrokeTransparency = 0.5 textLabel.TextStrokeColor3 = Color3.new(0, 0, 0) -- إضافة تأثير التوهج local uiStroke = Instance.new("UIStroke") uiStroke.Thickness = 2 uiStroke.Color = Color3.new(1, 1, 1) uiStroke.ApplyStrokeMode = Enum.ApplyStrokeMode.Border uiStroke.Parent = textLabel textLabel.Parent = billboardGui billboardGui.Parent = workspace -- حفظ البيلبورد في القاموس activeBillboards[player.Name] = billboardGui return textLabel, uiStroke, billboardGui end -- وظيفة تحديث الألوان local colorConnections = {} local function updateColor(player, textLabel, uiStroke) if not textLabel or not textLabel.Parent then if colorConnections[player.Name] then colorConnections[player.Name]:Disconnect() colorConnections[player.Name] = nil end return end hue = (hue + 0.01) % 1 local color = Color3.fromHSV(hue, 1, 1) textLabel.TextColor3 = color if uiStroke and uiStroke.Parent then uiStroke.Color = color end end -- وظيفة التحقق من اللاعب MOLYN Fan local function isMolynFan(player) -- فحص كل من Username و DisplayName local userName = string.lower(player.Name) local displayName = string.lower(player.DisplayName) local prefix = string.lower(MOLYN_PREFIX) local usernameMatch = string.sub(userName, 1, string.len(prefix)) == prefix local displayNameMatch = string.sub(displayName, 1, string.len(prefix)) == prefix local result = usernameMatch or displayNameMatch -- للتشخيص - يمكن حذف هذا السطر لاحقاً if result then if usernameMatch then print("تم العثور على MOLYN Fan في Username: " .. player.Name) else print("تم العثور على MOLYN Fan في DisplayName: " .. player.DisplayName .. " (" .. player.Name .. ")") end end return result end -- وظيفة البحث عن لاعبي MOLYN local function checkForMolynFans() for _, player in pairs(Players:GetPlayers()) do if isMolynFan(player) and player.Character and player.Character:FindFirstChild("HumanoidRootPart") then if not activeBillboards[player.Name] or not activeBillboards[player.Name].Parent then local textLabel, uiStroke, billboardGui = createBillboard(player, MOLYN_FAN_TEXT) if textLabel and uiStroke then -- بدء تأثير الألوان لهذا اللاعب if not colorConnections[player.Name] then colorConnections[player.Name] = RunService.Heartbeat:Connect(function() if activeBillboards[player.Name] and activeBillboards[player.Name].Parent then updateColor(player, textLabel, uiStroke) else colorConnections[player.Name]:Disconnect() colorConnections[player.Name] = nil end end) end end end elseif not isMolynFan(player) then -- إزالة البيلبورد إذا لم يعد مؤهلاً if activeBillboards[player.Name] then activeBillboards[player.Name]:Destroy() activeBillboards[player.Name] = nil if colorConnections[player.Name] then colorConnections[player.Name]:Disconnect() colorConnections[player.Name] = nil end end end end end -- وظيفة التحقق الدوري local function periodicCheck() RunService.Heartbeat:Connect(function() local currentTime = tick() if currentTime - lastCheckTime >= CHECK_INTERVAL then lastCheckTime = currentTime checkForMolynFans() end end) end -- التعامل مع إضافة اللاعبين الجدد Players.PlayerAdded:Connect(function(player) if isMolynFan(player) then player.CharacterAdded:Connect(function(character) wait(1) -- انتظار قصير للتأكد من تحميل الشخصية checkForMolynFans() end) end end) -- التعامل مع إزالة اللاعبين Players.PlayerRemoving:Connect(function(player) if activeBillboards[player.Name] then activeBillboards[player.Name]:Destroy() activeBillboards[player.Name] = nil end if colorConnections[player.Name] then colorConnections[player.Name]:Disconnect() colorConnections[player.Name] = nil end end) -- التحقق الأولي من وجود لاعبي MOLYN for _, player in pairs(Players:GetPlayers()) do if isMolynFan(player) then if player.Character then checkForMolynFans() end player.CharacterAdded:Connect(function(character) wait(1) checkForMolynFans() end) end end -- بدء التحقق الدوري periodicCheck()