DUXPLIMA Documentation

The interface

The two frames, the instance names each one needs, and the progress bar.

Client/uxrLevelGui is a ScreenGui with two frames: the player's XP display and the staff panel. You own how both look.

MainFrame

The XP display. It appears on an XP gain or a level up and hides itself again.

uxrLevelGui
  MainFrame
    LevelLabel          "LEVEL 3", or "LEVEL UP!" on a rank change
    NextRank            "Cadet > Officer"
    XPValue             "+75", or "LEVEL 4" on a rank change
    XPAmountLabel       "1240/2000"
    Progressbar
      Bar               resized by scale, 0 to 1 on the X axis
InstanceWhat the code writes
LevelLabelText
NextRankText
XPValueText
XPAmountLabelText
Progressbar.BarSize, tweened

Everything else is yours: the background, the frame's position, the fonts, a stroke, an icon. The code writes text and one size.

The progress bar

Bar is resized with UDim2.fromScale(fraction, 1), so it must be a child of Progressbar and sized by scale on the X axis for the animation to read correctly. Give it an anchor point on the left, otherwise it grows from its centre.

On an XP gain the bar is snapped to the old value and then tweened over two seconds to the new one, which is why a gain that crosses a rank boundary is shown as a fill followed by the level-up frame rather than a single jump.

AdminFrame

The staff panel, opened by the admin chat command.

uxrLevelGui
  AdminFrame
    PlayerFrame
      SelectedPlayerValue     a StringValue holding the chosen player's name
    TeamFrame
      SelectedValue           a StringValue holding the chosen team
    XPFrame
      TextBox                 digits only, defaults to 1

The panel also needs the buttons that submit the three actions, and the lists it fills with online players and configured teams. Rows are built by cloning your template, and any UIListLayout or UIPadding in the container is left alone.

The two chat commands

CommandOpensConfigured in
!xp, !showxpMainFrame, the player's own XPLevels.GuiCommand.Aliases
!xppanelAdminFrameAdmin.AdminCommand

Both are exact string matches on the whole chat message. !xp please does not match.

Re-skinning it

Edit the copy under ServerScriptService/uxrLevelSystem/Client/, not the one in StarterGui. The bootstrap clones the package copy into StarterGui at startup and only when no ScreenGui of that name is already there, so edits to the StarterGui copy survive until the next Play.

The CoreScript folder is code. Do not rename it or move it out of the ScreenGui.

Missing instances warn rather than error

The context waits ten seconds for MainFrame and AdminFrame and then carries on. If you rename a frame, the parts of the interface that use it stop updating while the rest of the system, XP, ranks, tools and saving, keeps working normally.

That is worth knowing when something looks broken: check Output before assuming the server side is at fault.