That’s not possible at this stage in time as some internal workings would have to be modified. I’d recommend submitting a feature request for that at the repository (although I couldn’t guarantee it being completed anytime soon).
With v2.5.1 you can now convert icon labels into spinners by utilising the new convertLabelToNumberSpinner method and @boatbomber’s epic Number Spinner module:
(A coded example can be found at the playground)
Credit to @apenzijncoolenleuk1 for the feature suggestion!
I’ve been experiencing 2 problems with this module. With update v2.5.1 I’ve been experiencing clipping issues on some of the letters after this latest update. (Ex. G, Y) (Image attached below)
Newest update [v2.5.1]
Older update
The second problem I have is if edit the text of an button and the new text had more letters than the original one it would have a ton of space in between. [See example below]
Button with alot of letters Lets call this button A.
Button B Text is shorter than button A although the button size itself stays the same.
Code
local player = game:GetService("Players").LocalPlayer
local playerGui = player.PlayerGui
local replicatedStorage = game:GetService("ReplicatedStorage")
local iconModule = replicatedStorage.Icon
local Icon = require(iconModule)
local IconController = require(iconModule.IconController)
local Themes = require(iconModule.Themes)
local Hi = replicatedStorage:FindFirstChild("MusicTitle")
-- Apply BlueGradient Theme
IconController.setGameTheme(Themes.BlueGradient)
local Ye = Icon.new()
:setLabel('Song: ' .. Hi.Value)
:setOrder(3)
:bindEvent("selected", function()
print("selected!")
end)
:bindEvent("deselected", function()
print("deselected!")
end)
Hi.Changed:Connect(function()
Ye:setLabel("Song".. Hi.Value)
end)
Apart from that as of right now I’ve been experiencing no issues; Thanks for making a great module!
Is it possible to make a FPS counter with Topbar like how Criminality does? If so i would like to know. Thanks!
Thanks for the report, I’ve opened up a ticket which I’ll aim to complete for sometime this week:
Are you still experiencing this issue in v2.5.1? This bug should have been patched for that. If so, can you provide more example code which reproduces that bug. Thanks!
You can retrieve a clients FPS using this method by pobammer then with topbarplus simply construct your icon and whenever the FPS changes do:
icon:setLabel(tostring(FPSValue))
I’m no longer experiencing the second issue with v2.5.1, apologies for that.
Thank you this will help a lot!
Ok i still don’t know how to uses it. Is it something like this?
local Icon = require(game:GetService("ReplicatedStorage").Icon)
Icon.new()
:setLabel("FPS")
:setCaption("FPS")
local RunService = game:GetService("RunService")
local FpsLabel = icon:setLabel(tostring())
local TimeFunction = RunService:IsRunning() and time or os.clock
local LastIteration, Start
local FrameUpdateTable = {}
local function HeartbeatUpdate()
LastIteration = TimeFunction()
for Index = #FrameUpdateTable, 1, -1 do
FrameUpdateTable[Index + 1] = FrameUpdateTable[Index] >= LastIteration - 1 and FrameUpdateTable[Index] or nil
end
FrameUpdateTable[1] = LastIteration
FpsLabel.Text = tostring(math.floor(TimeFunction() - Start >= 1 and #FrameUpdateTable or #FrameUpdateTable / (TimeFunction() - Start))) .. " FPS"
end
Start = TimeFunction()
RunService.Heartbeat:Connect(HeartbeatUpdate)
Try this instead:
local UPDATE_LABEL_COOLDOWN = 0.1
local runService = game:GetService("RunService")
local replicatedStorage = game:GetService("ReplicatedStorage")
local timeFunction = runService:IsRunning() and time or os.clock
local Icon = require(replicatedStorage.Icon)
local fpsIcon = Icon.new()
local nextLabelUpdate = 0
local lastIteration, start
local frameUpdateTable = {}
start = timeFunction()
runService.Heartbeat:Connect(function()
lastIteration = timeFunction()
for Index = #frameUpdateTable, 1, -1 do
frameUpdateTable[Index + 1] = frameUpdateTable[Index] >= lastIteration - 1 and frameUpdateTable[Index] or nil
end
frameUpdateTable[1] = lastIteration
local labelText = tostring(math.floor(timeFunction() - start >= 1 and #frameUpdateTable or #frameUpdateTable / (timeFunction() - start))) .. " FPS"
if lastIteration >= nextLabelUpdate then
nextLabelUpdate = lastIteration + UPDATE_LABEL_COOLDOWN
fpsIcon:setLabel(labelText)
end
end)
I recommend checking out the Introduction and Features pages to understand what each icon method does:
This should be fixed now in v2.5.2:
Works perfectly, thank you and have a great rest of your day!
Thank you it worked! I’ve been looking for this for so long!
This is really good but how would you be able to make a ping counter?
If you find a method of reliably measuring a player’s ping, yes.
Just ran upon that since the Topbar goes along with Roblox’s current state it’s impossible to natively make a topbar 100% out of this.
I’ve since changed a few lines of code in the module thinking that Roblox’s topbar is on and remove the additional spacing on the left and right sides.
Would be nice to have a native feature to not turn the topbar off along with Roblox’s topbar.
Sure that’s a good idea, I’ve opened up a ticket here:
Feel free to expand upon that or open up additional issues if you have any further ideas.
The more I use it the more useful it gets!
The only bug I’ve found is that the documentation says passing nil to :setTip() or :setCaption() will remove the tip/caption, although doing so throws an error. Once a tip is assigned it cannot be removed.
Excellent module, I will definitely be using this in my games.
Good spot thanks! I’ve opened up a ticket and will have it fixed for the next update:
Hey, Is there a setting wheel icon? I really need one for my game atm. Cant find any good ones lol
(image label, asset id, website id)