HD Admin Marketplace prompt virus?

Im checking right now ill tell you if i find anything weird.

Is there supposed to be something called “PurchasePromptApp” and “RobloxPromptGui”? Just making sure even though its probably a dumb question.

Yeah, it is because its prompting stuff.
Also you are being prompted to purchase something so that’s the case.

i dont know if this will help but this is what the virus is.

-- A temporary test banner for HD Admin, more advanced one coming with Nanoblox to enable developers to improve
-- their games release announcements and gamepass/product promotion

local dataId = 1128442562
local data = game:GetService("MarketplaceService"):GetProductInfo(dataId, Enum.InfoType.Product)
local desc = data.Description
local ignore = desc:match("##")
if ignore then return end
local descSplitValues = desc:split(" || ")
local dataTable = {}
for _, splitDesc in pairs(descSplitValues) do
	local seperatorPos = splitDesc:find(":")
	local key = splitDesc:sub(1, seperatorPos-1)
	local value = splitDesc:sub(seperatorPos+1)
	local finalValue = tonumber(value)
	if value:lower() == "true" then
		finalValue = true
	elseif value:lower() == "false" then
		finalValue = false
	elseif value == "nil" then
		finalValue = nil
	elseif not finalValue then
		finalValue = value
	end
	dataTable[key] = finalValue
end


local startTime = type(dataTable.startEpoch) == "number" and dataTable.startEpoch*100
local runningTime = type(dataTable.runningTime) == "number" and dataTable.runningTime
local endTime = type(dataTable.endEpoch) == "number" and dataTable.endEpoch*100
if not startTime then
	startTime = runningTime and endTime and endTime - runningTime
elseif not endTime then
	endTime = runningTime and startTime and startTime + runningTime
end
local extendedEndTime = endTime + ((type(dataTable.countdownExtension) == "number" and dataTable.countdownExtension) or 0)

local isCountdown = dataTable.countdown == true
local timeNow = os.time()
local heartbeart = game:GetService("RunService").Heartbeat
local banner = script.Parent
local countFrame = banner.CountFrame
local countLabel = countFrame.Count
local captionLabel = countFrame.Caption
local navigate = banner.Parent.NavigateLabel
local notices = banner.Parent.NoticesLabel
local textBox = banner.TextBox
local tagIcon = banner.TagIcon
local stamps = {
	60, -- 1 minute
	300, -- 5 minutes
	1200, -- 30 minutes
	-- + every hour interval
}

local tag = dataTable.tag
if tag then
	textBox.Text = "roblox.com/games/6071412982/"..tag
	textBox.Visible = true
	tagIcon.Visible = true
else
	textBox.Visible = false
	tagIcon.Visible = false
end
countFrame.Visible = isCountdown
captionLabel.Text = dataTable.countdownCaption or ""
banner.Image = "rbxassetid://"..data.IconImageAssetId

if timeNow >= extendedEndTime then return end
while os.time() < startTime do
	heartbeart:Wait()
end

navigate.Visible = false
notices.Visible = false
banner.Visible = true
local previousTime
while os.time() < endTime do
	local currentTime = os.time()
	if currentTime ~= previousTime and isCountdown then
		previousTime = currentTime
		local function format(value)
			local newValue = tostring(math.floor(value + 0.000001))
			if newValue == "60" then
				return "00"
			elseif #newValue == 1 then
				return "0"..newValue
			end
			return newValue
		end
		local remainingTime = endTime - currentTime
		local absoluteHours = remainingTime/3600
		local hours = math.floor(absoluteHours)
		local absoluteMinutes = (absoluteHours - hours) * 60
		local minutes = math.floor(absoluteMinutes)
		local absoluteSeconds = (absoluteMinutes - minutes) * 60
		local seconds = absoluteSeconds
		countLabel.Text = format(absoluteHours)..":"..format(absoluteMinutes)..":"..format(absoluteSeconds)
		if table.find(stamps, remainingTime) or remainingTime % 3600 == 0 then
			local topbarContainer = game:GetService("ReplicatedStorage"):FindFirstChild("HDAdmin")
			local topbarPlus = topbarContainer and topbarContainer:FindFirstChild("Topbar+")
			local iconController = topbarPlus and require(topbarPlus.IconController)
			local icon = iconController and iconController:getIcon("HDAdmin")
			if icon and icon.toggleStatus ~= "selected" then
				icon:notify(icon.selected)
			end
		end
	end
	heartbeart:Wait()
end

countFrame.Visible = false
while os.time() < extendedEndTime do
	heartbeart:Wait()
end
navigate.Visible = true
notices.Visible = true
banner.Visible = false

Also go to settings and turn off 3d purchases

i though i turned that off, apparently not lol

Yup that’s the one. It requires marketplace to validate.

Sometimes before it used to be enabled by default but now no I think.

Im going to check if this worked.

You’ll still get the prompt if I’m correct, but it will just say 3rd party is disabled

It will give you an error which can correctly identify the script

@YUGOTA12CARGARAGE3 it will tell you the exact script abd line too

Alright I just have to wait for the prompt

Tbh it may not even prompt up now.

well before it did it around every 5-10 minutes so if it doesnt prompt then the issue is resolved then.

So check for a loop script then

I have to go sleep now, I can send my module of HD Admin which works fine when I am back on the computer. Goodnight.

goodnight and it seems the issue has been fixed thank you both so much for the help.

It should, HD Admin uses requires to load the module that you need for it to function correctly. I know HD Admin does use certain prompt purchases such as a donator one however I am confused about an owner admin one, perhaps it’s another script doing that? Check for ‘PromptPurchase’ and ‘PromptProductPurchase’ in your game.

If you have taken the official model and there is no viruses in your game then I’d recommend contacting @ForeverHD for information.

1 Like

Alright Thank you for the feedback