[v3!] TopbarPlus v3.0.0 | Construct intuitive topbar icons; customise them with themes, dropdowns, captions, labels and much more

Could exploiters potentially use :BindEvent as a backdoor to the serverside? Can exploiters use the module themselves? Is there any protection from them?

icon:bindEvent simply connects a function to a given signal. Everything is client-sided so there’s nothing (such as remotes) to be exploited.

1 Like

Anyone know why this isn’t auto scaling the TextLabel to the new string?

image
image

local Queue = Icon.new()
:setImage(4400704299, "deselected")
:setImage(3944680095, "selected")
:setLabel("Join Queue", "deselected")
:setLabel("Waiting for available server..", "selected")
:setSize(45)
:setTopPadding(8)
:setMid()

Curious but if anyone knows how to autoscale it, let me know! Thanks in advance : )

Calling setSize before setLabel should do the trick:

local Queue = Icon.new()
	:setImage(4400704299, "deselected")
	:setImage(3944680095, "selected")
	:setSize(45)
	:setLabel("Join Queue", "deselected")
	:setLabel("Waiting for available server..", "selected")
	:setTopPadding(8)
	:setMid()

(this is because calling setSize after setLabel causes the icon to shrink back to an X width of 45)

3 Likes

Hey, so say I have this hierarchy:

  • Button called Potato that can be toggled on/off
  • Button with drop down called carrot
    • Random bobux button
    • Button called tix that opens up a horizontal menu
      • Button called noob that can be toggled

Now when I go toggle “potato” on, then go toggle “noob” on THEN off, all three buttons, “Potato”, “Noob” and “carrot” are now deselected

Any way I can make it so that doesn’t happen? I’d like to only deselect noob without causing the others to be deselected.

Hey, this should be as simple as setting deselectWhenOtherIconSelected to false for all your desired icons (dropdowns and menus automatically apply this to their icon). More info here:

3 Likes

Hey @ForeverHD So im still having troubles with this one part, where Im using a DANCE GUI.

If I set the GUI to “ResetonSpawn” to FALSE then it will stop working.

But that means it stops working after reset for the TOPBAR.

I tried your way -


local icons = Icon.IconController:getIcons()
for _, icon in pairs(icons) do
	Icon.IconController:clearIconOnSpawn(icon)
end

But im getting the message “index nil with getIcons
any idea?

Howdy, :clearIconOnSpawn should only be used when your GUI’s ResetOnSpawn is true. If you’ve set your value to false you shouldn’t need to do anything else (ensuring your LocalScript is located within that particular GUI or StarterPlayerscripts).

1 Like

Hey @ForeverHD u can add to topbar+ “models frame” can rotate, etc u put a model and u view it like a image but the model rotate!, its a suggestion. i dont need use it!

A little nitpicky, but it would be nice if there was a better indication that the module was required on the server.
Instead of this error: Icon.TopbarPlusGui:335: attempt to index nil with 'PlayerGui'.
Took me some time to realize what exactly was going on.

Like ViewportFrames? Sure we can consider that.

Do you mean required on the client? It shouldn’t be required on the server. We do have this message at the very top of the docs although can certainly look at creating a dedicated notice box to make it more visible:

If not, could you explain further what you mean?

2 Likes

I was using a configuration module that is shared between the client and the server.

For some reason I decided to place references to icons inside of it (for the client to access), and I got that rather confusing error.

It’s a small thing but it would be handy if the module detected internally if it is being required by the server RunService:IsServer(), and if it would use error("Topbarplus can only be required by the client!") to alert the user.

It’s a small thing but doing this can save some time to users that (ab)use the system :wink:.

2 Likes

Absolute time-saver. Huge thanks for creating this module, I’ll definitely be using it in the future. Wish I would have found it sooner.

One thing I noticed was when messing around with the 3rd Party NumberSpinnerModule by boatbomber, after using the convertLabelToNumberSpinner() function, any change to the value of the topBar label (Now a Number Spinner) no longer resized the label to an appropriate size. It was also set too far to the right in most cases. This left the frame constantly too big or too small. Obviously I could have setSize() the frame and gotten it to size properly but I wasn’t sure what exact calculations you had done to determine the proper pixel/offset values. Ultimately I wasn’t planning on using the NumberSpinner in the topBar, just messing around with it, but if someone were to they might struggle with the same issue.

It’s also very possible I just used the function wrong so if that’s the case feel free to let me know.

2 Likes

Good spot thanks, I’ll add this to bugs and have it fixed for the next release. In the meantime the best course of action is as you mentioned, using icon:setSize(x, y) to modify it appropriately.

TopbarPlus keeps saying the requested module had trouble when I require it? Should I redownload it to my ReplicatedStorage? It might have broke durning the use of rblx-to-Rojo. Also, this module is amazing.

EDIT: Does this module consider if you have the leaderstats and emotes disabled (as in the three dots icon)?

Can you share the exact error message please. The easiest way to install TopbarPlus is by simply dragging the model (aka Icon module) into ReplicatedStorage.

Yes it accounts for those and virtually everything you’ll encounter on the topbar.

2 Likes

Here is an image (on mobile rn so I am sending a screenshot):

If you’re requiring the Icon module (I’m assuming on line 5 of your localscript) then there should be more output that that. Can you send all of the error messages please.

1 Like

That’s all that shows. I am gonna try to remove the module and add it back it.