Run it
Copy the script and paste it into your executor.
Players = :()
RunService = :()
Debris = :()
UserInputService = :()
ContentProvider = :()
TweenService = :()
Lighting = :()
SoundService = :()
lp = Players.LocalPlayer
playerGui = lp:()
camera = .CurrentCamera
().forsakenthingyguys
().forsakenthingyguys =
ins = .new
c3 = .fromRGB
ud2 = .new
v2 = .new
v3 = .new
isMobile = UserInputService.TouchEnabled UserInputService.KeyboardEnabled
(desktop, mobile)
isMobile mobile desktop
(obj, t, props)
TweenService:(obj,
TweenInfo.(t, .EasingStyle.Quint, .EasingDirection.Out),
props
):()
(id, vol, pitch)
s = ()
s.SoundId = .. (id)
s.Volume = vol
s.PlaybackSpeed = pitch
s.Parent = SoundService
s:()
Debris:(s, )
SFX_CLICK =
SFX_OPEN =
SFX_CLOSE =
P_ID =
B_ID =
I_ID =
W_ID =
R_ID =
SL_ID =
E1_ID =
C_ID =
H_ID =
BU_ID =
MM_ID =
S3_ID =
CD_ID =
UN_ID =
DP_ID =
WW_ID =
X_ID =
LW_ID =
S_ID =
RI_ID =
FACE_IDLE_ID =
FACE_EMOTE_ID=
ANIM_LIBRARY = {
idle = {
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
},
walk = {
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
},
run = {
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
},
punch = {
{ name = , combo = { } },
{ name = , combo = { } },
{ name = , combo = { } },
{ name = ,combo = { } },
{ name = , combo = { } },
{ name = , combo = { } },
{ name = , combo = { } },
{ name = , combo = { } },
},
block = {
{ name = , id = },
{ name = , id = },
{ name = , id = },
{ name = , id = },
},
}
activeAnims = { idle=, walk=, run=, punch=, block= }
LIVE = { idle=I_ID, walk=W_ID, run=R_ID, punch=P_ID, block=B_ID }
preloadIds = {
P_ID, B_ID, I_ID, W_ID, R_ID,
E1_ID, C_ID, H_ID, BU_ID, MM_ID,
S3_ID, CD_ID, UN_ID, DP_ID,
FACE_IDLE_ID, FACE_EMOTE_ID
}
active =
isSL =
ca =
st = {}
ir =
isConga =
headTrackRef =
faceTrackRef =
renderConn =
animateConns = {}
charAddedConn =
punchComboIndex =
lastPunchTime =
COMBO_WINDOW =
loadGui = ()
loadGui.Name =
loadGui.DisplayOrder =
loadGui.ResetOnSpawn =
loadGui.IgnoreGuiInset =
loadGui.Parent = playerGui
loadBg = ()
loadBg.Size = (,,,)
loadBg.BackgroundColor3= (,,)
loadBg.BorderSizePixel =
loadBg.Parent = loadGui
loadCard = ()
loadCard.Size = (,,,)
loadCard.Position = (,,,)
loadCard.AnchorPoint = (,)
loadCard.BackgroundColor3= (,,)
loadCard.BorderSizePixel =
loadCard.Parent = loadGui
lcc = (); lcc.CornerRadius = .(,); lcc.Parent = loadCard
lcs = (); lcs.Color = (,,); lcs.Thickness = ; lcs.Transparency = ; lcs.Parent = loadCard
loadTitle = ()
loadTitle.Size = (,,,); loadTitle.Position = (,,,)
loadTitle.BackgroundTransparency = ; loadTitle.Text =
loadTitle.TextColor3 = (,,); loadTitle.Font = .Font.GothamBlack
loadTitle.TextSize = ; loadTitle.Parent = loadCard
loadSub = ()
loadSub.Size = (,,,); loadSub.Position = (,,,)
loadSub.BackgroundTransparency = ; loadSub.Text =
loadSub.TextColor3 = (,,); loadSub.Font = .Font.GothamBold
loadSub.TextSize = ; loadSub.Parent = loadCard
barTrack = ()
barTrack.Size = (,,,); barTrack.Position = (,,,)
barTrack.AnchorPoint = (,); barTrack.BackgroundColor3 = (,,)
barTrack.BorderSizePixel = ; barTrack.Parent = loadCard
bttc = (); bttc.CornerRadius = .(,); bttc.Parent = barTrack
barFill = ()
barFill.Size = (,,,); barFill.BackgroundColor3 = (,,)
barFill.BorderSizePixel = ; barFill.Parent = barTrack
bfc = (); bfc.CornerRadius = .(,); bfc.Parent = barFill
loadPct = ()
loadPct.Size = (,,,); loadPct.Position = (,,,)
loadPct.BackgroundTransparency = ; loadPct.Text =
loadPct.TextColor3 = (,,); loadPct.Font = .Font.Gotham
loadPct.TextSize = ; loadPct.Parent = loadCard
animObjects = {}
_, id (preloadIds)
a = (); a.AnimationId = id; .(animObjects, a)
i, animObj (animObjects)
ContentProvider:({animObj})
progress = i / #animObjects
TweenService:(barFill, TweenInfo.(, .EasingStyle.Quad), {Size = (progress,,,)}):()
loadSub.Text = .. .(progress*) ..
loadPct.Text = .(progress*) ..
.()
(loadCard, , {BackgroundTransparency=})
(loadTitle, , {TextTransparency=}); (loadSub, , {TextTransparency=})
(loadPct, , {TextTransparency=}); (barTrack, , {BackgroundTransparency=})
(barFill, , {BackgroundTransparency=}); (loadBg, , {BackgroundTransparency=})
.()
loadGui:()
gui = ()
gui.Name = ; gui.ResetOnSpawn =
gui.IgnoreGuiInset = ; gui.ZIndexBehavior = .ZIndexBehavior.Sibling
gui.Parent = playerGui
blur = (); blur.Size = ; blur.Parent = Lighting
hudW = (, .(.CurrentCamera.ViewportSize.X - , ))
hudH = (, )
holder = ()
holder.AnchorPoint = (,)
holder.Position = (,-,,-)
holder.Size = (,hudW,,hudH)
holder.BackgroundTransparency =
holder.Visible =
holder.Parent = gui
isMobile
holder.AnchorPoint = (,)
holder.Position = (,,,- )
bg = ()
bg.Size = (,,,)
bg.BackgroundColor3= (,,)
bg.BackgroundTransparency =
bg.BorderSizePixel =
bg.Parent = holder
bgInner = ()
bgInner.Size = (,-,,-); bgInner.Position = (,,,)
bgInner.BackgroundColor3 = (,,); bgInner.BackgroundTransparency =
bgInner.BorderSizePixel = ; bgInner.Parent = holder
(, bg).CornerRadius = .(,)
(, bgInner).CornerRadius = .(,)
portraitSize = (, )
portraitHolder = ()
portraitHolder.Size = (,portraitSize,,portraitSize)
portraitHolder.Position = (,,,-portraitSize/)
portraitHolder.BackgroundColor3= (,,)
portraitHolder.BorderSizePixel =
portraitHolder.Parent = holder
(, portraitHolder).CornerRadius = .(,)
ring = (); ring.Color = (,,); ring.Thickness = ; ring.Parent = portraitHolder
avatar = ()
avatar.BackgroundTransparency = ; avatar.Size = (,-,,-); avatar.Position = (,,,)
avatar.Parent = portraitHolder
(, avatar).CornerRadius = .(,)
ok, thumb = (()
Players:(lp.UserId, .ThumbnailType.HeadShot, .ThumbnailSize.Size420x420)
)
avatar.Image = ok thumb
nameLabel = ()
nameLabel.BackgroundTransparency =
nameLabel.Position = (,,,portraitSize + )
nameLabel.Size = (,portraitSize+,,)
nameLabel.Font = .Font.GothamBold
nameLabel.Text = lp.DisplayName
nameLabel.TextColor3= (,,)
nameLabel.TextSize = (, )
nameLabel.TextXAlignment = .TextXAlignment.Center
nameLabel.Parent = holder
barXOffset = portraitSize +
barW = (, hudW - barXOffset - )
(yOffset, iconText, iconColor, fillColor, lowColor)
icon = ()
icon.BackgroundTransparency =
icon.Position = (, portraitSize + , , yOffset)
icon.Size = (, , , )
icon.Text = iconText
icon.TextScaled =
icon.Font = .Font.GothamBold
icon.TextColor3 = iconColor
icon.Parent = holder
track = ()
track.Size = (, barW, , (,))
track.Position = (, barXOffset + , , yOffset + )
track.BackgroundColor3= (,,)
track.BorderSizePixel =
track.Parent = holder
(, track).CornerRadius = .(,)
fill = ()
fill.Size = (,,,)
fill.BackgroundColor3= fillColor
fill.BorderSizePixel =
fill.Parent = track
(, fill).CornerRadius = .(,)
shine = ()
shine.Size = (,,,); shine.BackgroundColor3 = (,,)
shine.BackgroundTransparency = ; shine.BorderSizePixel =
shine.ZIndex = ; shine.Parent = fill
(, shine).CornerRadius = .(,)
valLabel = ()
valLabel.BackgroundTransparency =
valLabel.Position = (, , , -)
valLabel.Size = (, , , )
valLabel.Font = .Font.GothamBold
valLabel.TextSize = (,)
valLabel.TextColor3 = (,,)
valLabel.Text =
valLabel.TextXAlignment = .TextXAlignment.Left
valLabel.Parent = track
fill, valLabel, fillColor, lowColor
barY1 = (, )
barY2 = (, )
healthFill, healthText, hpNorm, hpLow = (barY1, , (,,), (,,), (,,))
staminaFill, staminaText, stNorm, stLow = (barY2, , (,,),(,,),(,,))
watermark = ()
watermark.BackgroundTransparency =
watermark.Size = (,,,)
watermark.Position = (,,,-)
watermark.Font = .Font.GothamBold
watermark.Text =
watermark.TextColor3 = (,,)
watermark.TextSize =
watermark.TextXAlignment = .TextXAlignment.Center
watermark.Parent = gui
sg = ()
sg.Name = ; sg.ResetOnSpawn = ; sg.Parent = playerGui
BTN_MAIN = ((,,,), (,,,))
BTN_SMALL = ((,,,), (,,,))
(p, t)
isMobile
h = ()
h.Size = (,,,); h.Position = (,,,-)
h.BackgroundTransparency = ; h.Text = .. t ..
h.TextColor3 = (,,); h.TextStrokeTransparency =
h.Font = .Font.GothamBold; h.TextSize = ; h.Parent = p
(parent, zIdx)
b = ()
b.BackgroundColor3 = (,,); b.BackgroundTransparency =
b.BorderSizePixel = ; b.ZIndex = zIdx ; b.Parent = parent
(, b).CornerRadius = .(, (, ))
s = (); s.Color = (,,); s.Thickness = ; s.Transparency = ; s.Parent = b
b, s
mobileBar
mobileSprint, mobileBlock, mobilePunch, mobileShiftlock, mobileEmote, mobileAnims
isMobile
mobileBar = ()
mobileBar.AnchorPoint = (, )
mobileBar.Position = (, , , -)
mobileBar.Size = (, -, , )
mobileBar.BackgroundColor3= (, , )
mobileBar.BackgroundTransparency =
mobileBar.BorderSizePixel =
mobileBar.ZIndex =
mobileBar.Parent = sg
(, mobileBar).CornerRadius = .(, )
mbs = (); mbs.Color = (,,); mbs.Thickness = ; mbs.Transparency = ; mbs.Parent = mobileBar
barList = ()
barList.FillDirection = .FillDirection.Horizontal
barList.HorizontalAlignment = .HorizontalAlignment.Center
barList.VerticalAlignment = .VerticalAlignment.Center
barList.Padding = .(, )
barList.Parent = mobileBar
barPad = ()
barPad.PaddingLeft = .(,); barPad.PaddingRight = .(,)
barPad.Parent = mobileBar
(label, color, accent)
btn = ()
btn.Size = (, , , )
btn.BackgroundColor3 = color (,,)
btn.BackgroundTransparency =
btn.Text = label
btn.TextColor3 = accent (, , )
btn.Font = .Font.GothamBlack
btn.TextSize =
btn.BorderSizePixel =
btn.AutoButtonColor =
btn.ZIndex =
btn.Parent = mobileBar
(, btn).CornerRadius = .(, )
s = (); s.Color = accent (,,); s.Thickness = ; s.Transparency = ; s.Parent = btn
btn.MouseButton1Down:(() (btn,,{BackgroundTransparency=}) )
btn.MouseButton1Up:(() (btn,,{BackgroundTransparency=}) )
btn
mobileSprint = (, (,,), (,,))
mobilePunch = (, (,,), (,,))
mobileBlock = (, (,,), (,,))
mobileEmote = (, (,,), (,,))
mobileShiftlock = (, (,,), (,,))
mobileAnims = (, (,,), (,,))
rb, slb, pb, bb
isMobile
(n, id, pos, size, hotkey)
b = ()
b.Name = n; b.Size = size; b.Position = pos
b.Image = ((id)== id:() id) ..(id)
b.BackgroundColor3 = (,,); b.BackgroundTransparency =
b.BorderSizePixel = ; b.ImageColor3 = (,,); b.Parent = sg
(, b).CornerRadius = .(,)
bs = (); bs.Color = (,,); bs.Thickness = ; bs.Transparency = ; bs.Parent = b
b.MouseEnter:(()
(b, , {BackgroundTransparency=})
(SFX_CLICK, , )
)
b.MouseLeave:(() (b, , {BackgroundTransparency=}) )
b.MouseButton1Click:(() (SFX_CLICK, , ) )
hotkey (b, hotkey)
b
rb = (, , (,-,,-), BTN_MAIN, ); rb.AnchorPoint = (,)
slb = (, SL_ID, (,-,,-), BTN_SMALL, ); slb.AnchorPoint = (,)
pb = (, , (,-,,-), BTN_SMALL, ); pb.AnchorPoint = (,)
bb = (, , (,-,,-), BTN_SMALL, ); bb.AnchorPoint = (,)
eb
isMobile
eb = ()
eb.Name = ; eb.Size = BTN_SMALL
eb.Position = (, , , -); eb.AnchorPoint = (,)
eb.BackgroundColor3 = (,,); eb.BackgroundTransparency =
eb.Text = ; eb.TextColor3 = (,,)
eb.Font = .Font.GothamBold; eb.TextSize =
eb.BorderSizePixel = ; eb.AutoButtonColor = ; eb.Parent = sg
(, eb).CornerRadius = .(,)
ebs = (); ebs.Color = (,,); ebs.Thickness = ; ebs.Transparency = ; ebs.Parent = eb
dragHint = ()
dragHint.BackgroundTransparency = ; dragHint.Size = (,,,)
dragHint.Position = (,,,); dragHint.Text =
dragHint.TextColor3 = (,,); dragHint.Font = .Font.Gotham
dragHint.TextSize = ; dragHint.Parent = eb
eb.MouseEnter:(()
(eb, , {BackgroundTransparency=})
(SFX_CLICK, , )
)
eb.MouseLeave:(() (eb, , {BackgroundTransparency=}) )
draggingEmote =
dragStartPos
dragMoved =
eb.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1
input.UserInputType == .UserInputType.Touch
draggingEmote =
dragMoved =
absPos = eb.AbsolutePosition
absSize = sg.AbsoluteSize
dragStartPos = {
x = absPos.X / absSize.X,
y = absPos.Y / absSize.Y,
mx = input.Position.X,
my = input.Position.Y
}
)
UserInputService.InputChanged:((input)
draggingEmote
input.UserInputType == .UserInputType.MouseMovement
input.UserInputType == .UserInputType.Touch
dx = input.Position.X - dragStartPos.mx
dy = input.Position.Y - dragStartPos.my
.(dx*dx + dy*dy) >
dragMoved =
screenSize = sg.AbsoluteSize
newX = .(dragStartPos.x + dx/screenSize.X, , -(eb.AbsoluteSize.X/screenSize.X))
newY = .(dragStartPos.y + dy/screenSize.Y, , -(eb.AbsoluteSize.Y/screenSize.Y))
eb.AnchorPoint = (,)
eb.Position = (newX,,newY,)
)
UserInputService.InputEnded:((input)
input.UserInputType == .UserInputType.MouseButton1
input.UserInputType == .UserInputType.Touch
draggingEmote =
)
eb.MouseButton1Click:(()
dragMoved
ef.Visible = ef.Visible
ef.Visible animPanel.Visible =
(ef.Visible SFX_OPEN SFX_CLOSE, , )
)
emoteMenuW = (, .(.CurrentCamera.ViewportSize.X - , ))
emoteMenuH = (, )
ef = ()
ef.Name =
ef.Size = (, emoteMenuW, , emoteMenuH)
ef.BackgroundColor3 = (,,); ef.BackgroundTransparency =
ef.BorderSizePixel = ; ef.Visible = ; ef.Parent = sg; ef.ZIndex =
(, ef).CornerRadius = .(,)
efs = (); efs.Color = (,,); efs.Thickness = ; efs.Transparency = ; efs.Parent = ef
isMobile
ef.AnchorPoint = (, )
ef.Position = (, , , -)
ef.Position = (, , , -); ef.AnchorPoint = (,)
efTitle = ()
efTitle.Size = (,,,); efTitle.Position = (,,,)
efTitle.BackgroundTransparency = ; efTitle.Text =
efTitle.TextColor3 = (,,); efTitle.Font = .Font.GothamBlack
efTitle.TextSize = ; efTitle.ZIndex = ; efTitle.Parent = ef
sf = ()
sf.Size = (,-,,-); sf.Position = (,,,)
sf.BackgroundTransparency = ; sf.CanvasSize = (,,,)
sf.AutomaticCanvasSize = .AutomaticSize.Y; sf.ScrollBarThickness =
sf.ScrollBarImageColor3 = (,,); sf.ZIndex = ; sf.Parent = ef
uiList = (); uiList.Padding = .(,); uiList.Parent = sf
stopE = ()
stopE.Name =
stopE.Size = (,,,(,))
stopE.BackgroundColor3 = (,,); stopE.BackgroundTransparency =
stopE.Text = ; stopE.TextColor3 = (,,)
stopE.Font = .Font.GothamBold; stopE.TextSize = (,)
stopE.BorderSizePixel = ; stopE.AutoButtonColor =
stopE.Visible = ; stopE.ZIndex = ; stopE.Parent = sg
(, stopE).CornerRadius = .(,)
stopE.MouseEnter:(() (stopE,,{BackgroundColor3=(,,)}); (SFX_CLICK,,) )
stopE.MouseLeave:(() (stopE,,{BackgroundColor3=(,,)}) )
stopE.MouseButton1Click:(() (SFX_CLICK,,) )
isMobile
stopE.AnchorPoint = (,)
stopE.Position = (,,,-)
stopE.Size = (,,,)
stopE.AnchorPoint = (,)
stopE.Position = (,,,-)
animBtn
isMobile
animBtn = ()
animBtn.Name = ; animBtn.Size = BTN_SMALL
animBtn.Position = (,,,-); animBtn.AnchorPoint = (,)
animBtn.BackgroundColor3 = (,,); animBtn.BackgroundTransparency =
animBtn.Text = ; animBtn.TextColor3 = (,,)
animBtn.Font = .Font.GothamBold; animBtn.TextSize =
animBtn.BorderSizePixel = ; animBtn.AutoButtonColor = ; animBtn.Parent = sg
(, animBtn).CornerRadius = .(,)
animBtnS = (); animBtnS.Color = (,,); animBtnS.Thickness = ; animBtnS.Transparency = ; animBtnS.Parent = animBtn
animBtn.MouseEnter:(() (animBtn,,{BackgroundTransparency=}); (SFX_CLICK,,) )
animBtn.MouseLeave:(() (animBtn,,{BackgroundTransparency=}) )
animBtn.MouseButton1Click:(() (SFX_CLICK,,) )
panelW = (, .(.CurrentCamera.ViewportSize.X - , ))
panelH = (, .(.CurrentCamera.ViewportSize.Y - , ))
animPanel = ()
animPanel.Name =
animPanel.Size = (,panelW,,panelH)
animPanel.Position = (,,,); animPanel.AnchorPoint = (,)
animPanel.BackgroundColor3 = (,,); animPanel.BackgroundTransparency =
animPanel.BorderSizePixel = ; animPanel.Visible = ; animPanel.ZIndex =
animPanel.Parent = sg
(, animPanel).CornerRadius = .(,)
aps = (); aps.Color = (,,); aps.Thickness = ; aps.Transparency = ; aps.Parent = animPanel
apTitleBar = ()
apTitleBar.Size = (,,,); apTitleBar.BackgroundColor3 = (,,)
apTitleBar.BorderSizePixel = ; apTitleBar.ZIndex = ; apTitleBar.Parent = animPanel
(, apTitleBar).CornerRadius = .(,)
apTitleBarFill = ()
apTitleBarFill.Size = (,,,); apTitleBarFill.Position = (,,,-)
apTitleBarFill.BackgroundColor3 = (,,); apTitleBarFill.BorderSizePixel =
apTitleBarFill.ZIndex = ; apTitleBarFill.Parent = apTitleBar
apAccent = ()
apAccent.Size = (,,,); apAccent.Position = (,,,)
apAccent.AnchorPoint = (,); apAccent.BackgroundColor3 = (,,)
apAccent.BorderSizePixel = ; apAccent.ZIndex = ; apAccent.Parent = animPanel
(, apAccent).CornerRadius = .(,)
apTitle = ()
apTitle.BackgroundTransparency = ; apTitle.Size = (,-,,)
apTitle.Position = (,,,); apTitle.Text =
apTitle.TextColor3 = (,,); apTitle.Font = .Font.GothamBlack
apTitle.TextSize = (,); apTitle.TextXAlignment = .TextXAlignment.Left
apTitle.ZIndex = ; apTitle.Parent = apTitleBar
apCloseBtn = ()
apCloseBtn.Size = (,(,),,(,))
apCloseBtn.Position = (,-,,-((,)/))
apCloseBtn.BackgroundColor3 = (,,); apCloseBtn.BackgroundTransparency =
apCloseBtn.Text = ; apCloseBtn.TextColor3 = (,,)
apCloseBtn.Font = .Font.GothamBold; apCloseBtn.TextSize = (,)
apCloseBtn.BorderSizePixel = ; apCloseBtn.AutoButtonColor =
apCloseBtn.ZIndex = ; apCloseBtn.Parent = apTitleBar
(, apCloseBtn).CornerRadius = .(,)
apCloseBtn.MouseEnter:(() (apCloseBtn,,{BackgroundColor3=(,,)}); (SFX_CLICK,,) )
apCloseBtn.MouseLeave:(() (apCloseBtn,,{BackgroundColor3=(,,)}) )
apCloseBtn.MouseButton1Click:(()
(SFX_CLOSE,,); animPanel.Visible =
)
TAB_NAMES = {,,,,}
TAB_SLOTS = {,,,,}
TAB_COLORS = {
idle = (,,), walk = (,,),
run = (,,), punch = (,,), block = (,,),
}
tabHolder = ()
tabHolder.Size = (,-,,); tabHolder.Position = (,,,)
tabHolder.BackgroundTransparency = ; tabHolder.ZIndex = ; tabHolder.Parent = animPanel
tabLayout = ()
tabLayout.FillDirection = .FillDirection.Horizontal
tabLayout.Padding = .(,); tabLayout.Parent = tabHolder
currentTab =
tabBtns = {}
slotFrames = {}
(slot)
currentTab = slot
s, f (slotFrames) f.Visible = (s == slot)
s, btn (tabBtns)
col = TAB_COLORS[s]
s == slot
(btn,,{BackgroundColor3=col,BackgroundTransparency=})
btn.TextColor3 = (,,)
(btn,,{BackgroundColor3=(,,),BackgroundTransparency=})
btn.TextColor3 = (,,)
tabBtnW = .((panelW - - *) / )
i, name (TAB_NAMES)
slot = TAB_SLOTS[i]
tb = ()
tb.Size = (, tabBtnW, , )
tb.BackgroundColor3 = (,,); tb.BackgroundTransparency =
tb.Text = name; tb.TextColor3 = (,,)
tb.Font = .Font.GothamBold; tb.TextSize = (,)
tb.BorderSizePixel = ; tb.AutoButtonColor = ; tb.ZIndex = ; tb.Parent = tabHolder
(, tb).CornerRadius = .(,)
tb.MouseEnter:(() (SFX_CLICK,,) )
tb.MouseButton1Click:(()
(SFX_CLICK,,); (slot)
)
tabBtns[slot] = tb
contentArea = ()
contentArea.Size = (,-,,-); contentArea.Position = (,,,)
contentArea.BackgroundTransparency = ; contentArea.ZIndex = ; contentArea.Parent = animPanel
(parent, label, subLabel, zIdx)
rowH = (, )
row = ()
row.Size = (,,,rowH)
row.BackgroundColor3 = (,,); row.BackgroundTransparency =
row.Text = ; row.BorderSizePixel = ; row.AutoButtonColor =
row.ZIndex = zIdx; row.Parent = parent
(, row).CornerRadius = .(,)
rs = (); rs.Color = (,,); rs.Thickness = ; rs.Transparency = ; rs.Parent = row
nameL = ()
nameL.BackgroundTransparency = ; nameL.Size = (,-,,)
nameL.Position = (,,,(,)); nameL.Text = label
nameL.TextColor3 = (,,); nameL.Font = .Font.GothamBold
nameL.TextSize = (,); nameL.TextXAlignment = .TextXAlignment.Left
nameL.ZIndex = zIdx+; nameL.Parent = row
subLabel subLabel ~=
subL = ()
subL.BackgroundTransparency = ; subL.Size = (,-,,)
subL.Position = (,,,(,)); subL.Text = subLabel
subL.TextColor3 = (,,); subL.Font = .Font.Gotham
subL.TextSize = (,); subL.TextXAlignment = .TextXAlignment.Left
subL.ZIndex = zIdx+; subL.Parent = row
check = ()
check.BackgroundTransparency = ; check.Size = (,,,)
check.Position = (,-,,); check.Text =
check.TextColor3 = (,,); check.Font = .Font.GothamBold
check.TextSize = ; check.ZIndex = zIdx+; check.Parent = row
row.MouseEnter:(() (row,,{BackgroundColor3=(,,)}); (SFX_CLICK,,) )
row.MouseLeave:(() (row,,{BackgroundColor3=(,,)}) )
row, check, rs
activeLabels = {}
(slot, zOff)
frame = ()
frame.Size = (,,,); frame.BackgroundTransparency =
frame.CanvasSize = (,,,); frame.AutomaticCanvasSize = .AutomaticSize.Y
frame.ScrollBarThickness = ; frame.ScrollBarImageColor3 = (,,)
frame.ZIndex = +zOff; frame.Visible = ; frame.Parent = contentArea
fLayout = (); fLayout.Padding = .(,); fLayout.Parent = frame
activeLbl = ()
activeLbl.BackgroundTransparency = ; activeLbl.Size = (,,,)
activeLbl.Text = .. ANIM_LIBRARY[slot][activeAnims[slot]].name
activeLbl.TextColor3 = TAB_COLORS[slot]; activeLbl.Font = .Font.GothamBold
activeLbl.TextSize = ; activeLbl.TextXAlignment = .TextXAlignment.Left
activeLbl.ZIndex = +zOff; activeLbl.Parent = frame
activeLabels[slot] = activeLbl
checkRefs = {}
()
idx, refs (checkRefs)
refs.check.Text = (idx == activeAnims[slot])
refs.stroke.Color = (idx == activeAnims[slot]) TAB_COLORS[slot] (,,)
refs.stroke.Transparency = (idx == activeAnims[slot])
activeLbl.Text = .. ANIM_LIBRARY[slot][activeAnims[slot]].name
idx, entry (ANIM_LIBRARY[slot])
sub =
entry.combo
sub = #entry.combo == (#entry.combo .. )
btn, check, stroke = (frame, entry.name, sub, +zOff)
.(checkRefs, { check=check, stroke=stroke })
capturedIdx = idx
btn.MouseButton1Click:(()
(SFX_CLICK,,)
activeAnims[slot] = capturedIdx
slot ==
LIVE.punch = entry.combo entry.combo[] entry.id
LIVE[slot] = entry.id
st = {}
slot == punchComboIndex=; lastPunchTime=
()
)
()
frame
i, slot (TAB_SLOTS)
slotFrames[slot] = (slot, i)
()
animPanelOpen =
()
animPanelOpen = animPanelOpen
animPanel.Visible = animPanelOpen
animPanelOpen
(SFX_OPEN,,)
ef.Visible =
credPanel credPanel.Visible =
(SFX_CLOSE,,)
animBtn
animBtn.MouseButton1Click:(toggleAnimPanel)
mobileAnims
mobileAnims.MouseButton1Click:(()
(SFX_CLICK,,); ()
)
credBtn = ()
credBtn.Size = (,,,); credBtn.Position = (,,,)
credBtn.AnchorPoint = (,); credBtn.BackgroundColor3 = (,,)
credBtn.BackgroundTransparency = ; credBtn.Text =
credBtn.TextColor3 = (,,); credBtn.Font = .Font.GothamBold
credBtn.TextSize = ; credBtn.BorderSizePixel = ; credBtn.AutoButtonColor =
credBtn.Parent = sg
(, credBtn).CornerRadius = .(,)
cbs = (); cbs.Color = (,,); cbs.Thickness = ; cbs.Transparency = ; cbs.Parent = credBtn
credBtn.MouseEnter:(() (credBtn,,{BackgroundTransparency=}); (SFX_CLICK,,) )
credBtn.MouseLeave:(() (credBtn,,{BackgroundTransparency=}) )
credPanel = ()
credPanel.Size = (,,,); credPanel.Position = (,,,)
credPanel.AnchorPoint = (,); credPanel.BackgroundColor3 = (,,)
credPanel.BackgroundTransparency = ; credPanel.BorderSizePixel =
credPanel.Visible = ; credPanel.ZIndex = ; credPanel.Parent = sg
(, credPanel).CornerRadius = .(,)
cps = (); cps.Color = (,,); cps.Thickness = ; cps.Transparency = ; cps.Parent = credPanel
credAccent = ()
credAccent.Size = (,,,); credAccent.Position = (,,,)
credAccent.AnchorPoint = (,); credAccent.BackgroundColor3 = (,,)
credAccent.BorderSizePixel = ; credAccent.ZIndex = ; credAccent.Parent = credPanel
(, credAccent).CornerRadius = .(,)
credTitle = ()
credTitle.BackgroundTransparency = ; credTitle.Size = (,,,)
credTitle.Position = (,,,); credTitle.Text =
credTitle.TextColor3 = (,,); credTitle.Font = .Font.GothamBlack
credTitle.TextSize = ; credTitle.ZIndex = ; credTitle.Parent = credPanel
credEntries = {
{, , (,,)},
{, , (,,)},
{, , (,,)},
}
i, entry (credEntries)
row = ()
row.Size = (,-,,); row.Position = (,,,+(i-)*)
row.BackgroundTransparency = ; row.ZIndex = ; row.Parent = credPanel
roleLabel = ()
roleLabel.BackgroundTransparency = ; roleLabel.Size = (,,,)
roleLabel.Text = entry[]; roleLabel.TextColor3 = (,,)
roleLabel.Font = .Font.GothamBold; roleLabel.TextSize =
roleLabel.TextXAlignment = .TextXAlignment.Left; roleLabel.ZIndex = ; roleLabel.Parent = row
nameL = ()
nameL.BackgroundTransparency = ; nameL.Size = (,,,)
nameL.Position = (,,,); nameL.Text = entry[]
nameL.TextColor3 = entry[]; nameL.Font = .Font.GothamBold
nameL.TextSize = ; nameL.TextXAlignment = .TextXAlignment.Right
nameL.ZIndex = ; nameL.Parent = row
closeCredBtn = ()
closeCredBtn.Size = (,,,); closeCredBtn.Position = (,,,-)
closeCredBtn.AnchorPoint = (,); closeCredBtn.BackgroundColor3 = (,,)
closeCredBtn.BackgroundTransparency = ; closeCredBtn.Text =
closeCredBtn.TextColor3 = (,,); closeCredBtn.Font = .Font.GothamBold
closeCredBtn.TextSize = ; closeCredBtn.BorderSizePixel = ; closeCredBtn.AutoButtonColor =
closeCredBtn.ZIndex = ; closeCredBtn.Parent = credPanel
(, closeCredBtn).CornerRadius = .(,)
closeCredBtn.MouseEnter:(() (closeCredBtn,,{BackgroundColor3=(,,)}); (SFX_CLICK,,) )
closeCredBtn.MouseLeave:(() (closeCredBtn,,{BackgroundColor3=(,,)}) )
closeCredBtn.MouseButton1Click:(()
(SFX_CLOSE,,); credPanel.Visible =
)
credBtn.MouseButton1Click:(()
(SFX_OPEN,,)
credPanel.Visible = credPanel.Visible
credPanel.Visible animPanel.Visible =
)
xb = ()
xb.Size = (,,,); xb.Position = (,,,)
xb.AnchorPoint = (,); xb.Image =
xb.BackgroundColor3 = (,,); xb.BackgroundTransparency =
xb.BorderSizePixel = ; xb.Parent = sg
(, xb).CornerRadius = .(,)
xb.MouseEnter:(() (SFX_CLICK,,) )
xb.MouseButton1Click:(() (SFX_CLICK,,) )
cf = ()
cf.Size = (,,,); cf.Position = (,-,,-)
cf.BackgroundColor3 = (,,); cf.BackgroundTransparency =
cf.BorderSizePixel = ; cf.Visible = ; cf.ZIndex = ; cf.Parent = sg
(, cf).CornerRadius = .(,)
cfs2 = (); cfs2.Color = (,,); cfs2.Thickness = ; cfs2.Transparency = ; cfs2.Parent = cf
cl = ()
cl.Size = (,-,,); cl.Position = (,,,)
cl.BackgroundTransparency = ; cl.Text =
cl.TextColor3 = (,,); cl.TextWrapped =
cl.Font = .Font.GothamBold; cl.TextSize = ; cl.ZIndex = ; cl.Parent = cf
(n, t, xpos, clr)
b = ()
b.Name = n; b.Size = (,,,); b.Position = (,xpos,,)
b.BackgroundColor3 = clr; b.BackgroundTransparency =
b.Text = t; b.TextColor3 = (,,)
b.Font = .Font.GothamBold; b.TextSize =
b.BorderSizePixel = ; b.AutoButtonColor = ; b.ZIndex = ; b.Parent = cf
(, b).CornerRadius = .(,)
b.MouseEnter:(() (SFX_CLICK,,) )
b.MouseButton1Click:(() (SFX_CLICK,,) )
b
bn = (, , , (,,))
by = (, , , (,,))
bn.MouseEnter:(() (bn,,{BackgroundColor3=(,,)}) )
bn.MouseLeave:(() (bn,,{BackgroundColor3=(,,)}) )
by.MouseEnter:(() (by,,{BackgroundColor3=(,,)}) )
by.MouseLeave:(() (by,,{BackgroundColor3=(,,)}) )
(name, id)
btnH = (, )
b = ()
b.Size = (,,,btnH); b.BackgroundColor3 = (,,)
b.BackgroundTransparency = ; b.Text = name
b.TextColor3 = (,,); b.Font = .Font.GothamBold
b.TextSize = (,); b.BorderSizePixel =
b.AutoButtonColor = ; b.ZIndex = ; b.Parent = sf
(, b).CornerRadius = .(,)
b.MouseEnter:(() (b,,{BackgroundTransparency=}); (SFX_CLICK,,) )
b.MouseLeave:(() (b,,{BackgroundTransparency=}) )
b.MouseButton1Click:(()
(SFX_OPEN,,)
(id)
)
(animator, id)
anim = (); anim.AnimationId = id
animator:(anim)
(animator)
_, t (animator:())
t ~= headTrackRef t ~= ca t ~= faceTrackRef t:()
()
ca ca:(); ca =
(isEmoting, animator)
animator
isEmoting
faceTrackRef
ok2, fid = (() faceTrackRef.Animation.AnimationId )
ok2 fid == FACE_IDLE_ID faceTrackRef:(); faceTrackRef =
faceTrackRef
fa = (); fa.AnimationId = FACE_EMOTE_ID
faceTrackRef = animator:(fa)
faceTrackRef.Priority = .AnimationPriority.Action4; faceTrackRef.Looped =
faceTrackRef:()
faceTrackRef
ok2, fid = (() faceTrackRef.Animation.AnimationId )
ok2 fid == FACE_EMOTE_ID faceTrackRef:(); faceTrackRef =
faceTrackRef
fa = (); fa.AnimationId = FACE_IDLE_ID
faceTrackRef = animator:(fa)
faceTrackRef.Priority = .AnimationPriority.Action4; faceTrackRef.Looped =
faceTrackRef:()
(track)
track
ok2, id = (() track.Animation.AnimationId )
ok2 id
(char, hum, animator)
active char hum animator
ca ca.IsPlaying
rp = char:()
rp
vel = (rp.AssemblyLinearVelocity.X, , rp.AssemblyLinearVelocity.Z)
moving = vel.Magnitude >
state =
moving state = ir
liveIdle = LIVE.idle
liveWalk = LIVE.walk
liveRun = LIVE.run
k, t (st)
k ~= state t t.IsPlaying t:()
state ==
st.idle st.idle.IsPlaying (st.idle) ~= liveIdle
st.idle:(); st.idle =
st.idle st.idle.IsPlaying
(animator)
st.idle = (animator, liveIdle)
st.idle.Priority = .AnimationPriority.Idle; st.idle:()
hum.WalkSpeed =
state ==
st.walk st.walk.IsPlaying (st.walk) ~= liveWalk
st.walk:(); st.walk =
st.walk st.walk.IsPlaying
(animator)
st.walk = (animator, liveWalk)
st.walk.Priority = .AnimationPriority.Movement; st.walk:()
st.walk:(); hum.WalkSpeed =
state ==
st.run st.run.IsPlaying (st.run) ~= liveRun
st.run:(); st.run =
st.run st.run.IsPlaying
(animator)
st.run = (animator, liveRun)
st.run.Priority = .AnimationPriority.Movement; st.run:()
st.run:()
hum.WalkSpeed =
(id)
char = lp.Character
hum = char char:()
anim = hum hum:()
anim
ef.Visible = ; (); (anim)
t = (anim, id); ca = t
t.Looped = ; t.Priority = .AnimationPriority.Action3
isConga = (id == C_ID)
hum.WalkSpeed = isConga
t:(); stopE.Visible = ; (, anim)
.(()
ca == t t.IsPlaying (anim); .()
)
()
(); isConga = ; stopE.Visible =
(SFX_CLOSE, , )
char = lp.Character
hum = char char:()
anim = hum hum:()
hum hum.WalkSpeed = ir
anim (, anim)
()
stopE.Visible
char = lp.Character
hum = char char:()
rp = char char:()
anim = hum hum:()
anim rp
comboEntry = ANIM_LIBRARY.punch[activeAnims.punch]
combo = comboEntry.combo { comboEntry.id }
now = ()
now - lastPunchTime > COMBO_WINDOW punchComboIndex =
lastPunchTime = now
hitId = combo[punchComboIndex]
punchComboIndex = punchComboIndex % #combo +
(); (anim)
t = (anim, hitId); ca = t
t.Priority = .AnimationPriority.Action2
t.Length == t:():()
PUNCH_SPEED =
hum.WalkSpeed =
t:(); t:(PUNCH_SPEED)
(, anim)
att = (, rp)
vl = ()
vl.MaxForce =
vl.VectorVelocity = rp.CFrame.LookVector *
vl.Attachment0 = att; vl.Parent = rp
Debris:(vl, ); Debris:(att, )
.(t.Length / PUNCH_SPEED)
ca == t
t:(); ca =
hum.WalkSpeed = ir
(, anim)
()
stopE.Visible
char = lp.Character
hum = char char:()
anim = hum hum:()
anim
(); (anim)
t = (anim, LIVE.block); ca = t
t.Priority = .AnimationPriority.Action2
t.Length == t:():()
hum.WalkSpeed = ; t:(); t:()
(, anim)
.((t.Length * ) / ); t:(); t.Stopped:()
.()
ca == t ca = ; hum.WalkSpeed = ir ; (, anim)
(state)
ir = state
rb rb.ImageColor3 = ir (,,) (,,)
mobileSprint
mobileSprint.BackgroundColor3 = ir (,,) (,,)
char = lp.Character
hum = char char:()
hum (ca ca.IsPlaying) hum.WalkSpeed = ir
UserInputService.InputBegan:((input, gp)
gp active
input.KeyCode == .KeyCode.LeftShift ()
input.KeyCode == .KeyCode.E ()
input.KeyCode == .KeyCode.Q ()
input.KeyCode == .KeyCode.LeftControl
isSL = isSL
slb slb.ImageColor3 = isSL (,,) (,,)
)
UserInputService.InputEnded:((input, gp)
gp active
input.KeyCode == .KeyCode.LeftShift ()
)
rb rb.MouseButton1Down:(() () )
rb.MouseButton1Up:(() () )
rb.MouseLeave:(() ir () )
slb slb.MouseButton1Click:(()
isSL = isSL
slb.ImageColor3 = isSL (,,) (,,)
(SFX_CLICK, , isSL )
)
pb pb.MouseButton1Click:(doPunch)
bb bb.MouseButton1Click:(doBlock)
mobileSprint
mobileSprint.MouseButton1Down:(() () )
mobileSprint.MouseButton1Up:(() () )
mobileSprint.TouchLongPress:(() () )
mobilePunch mobilePunch.MouseButton1Click:(doPunch)
mobileBlock mobileBlock.MouseButton1Click:(doBlock)
mobileShiftlock
mobileShiftlock.MouseButton1Click:(()
isSL = isSL
mobileShiftlock.BackgroundColor3 = isSL (,,) (,,)
(SFX_CLICK,,isSL )
)
mobileEmote
mobileEmote.MouseButton1Click:(()
ef.Visible = ef.Visible
ef.Visible animPanel.Visible =
(ef.Visible SFX_OPEN SFX_CLOSE,,)
)
stopE.MouseButton1Click:(clearEmote)
xb.MouseButton1Click:(() cf.Visible = )
bn.MouseButton1Click:(() cf.Visible = )
(, E1_ID)
(, C_ID)
(, BU_ID)
(, MM_ID)
(, S3_ID)
(, CD_ID)
(, UN_ID)
(, DP_ID)
(, WW_ID)
(, X_ID)
(, LW_ID)
(, S_ID)
(, RI_ID)
hudConnections = {}
hudHidden =
buttonHolder = ()
buttonHolder.Size = (,,,); buttonHolder.Position = (,,,)
buttonHolder.BackgroundTransparency = ; buttonHolder.Parent = gui
bLayout = ()
bLayout.FillDirection = .FillDirection.Horizontal
bLayout.HorizontalAlignment = .HorizontalAlignment.Right
bLayout.Padding = .(,); bLayout.Parent = buttonHolder
(text)
btn = ()
btn.Size = (,,,); btn.BackgroundColor3 = (,,)
btn.Text = text; btn.TextColor3 = (,,)
btn.Font = .Font.GothamBold; btn.TextSize =
btn.BorderSizePixel = ; btn.AutoButtonColor =
(, btn).CornerRadius = .(,)
bs = (); bs.Color = (,,); bs.Thickness = ; bs.Transparency = ; bs.Parent = btn
btn.MouseEnter:(() (btn,,{BackgroundColor3=(,,)}); (SFX_CLICK,,) )
btn.MouseLeave:(() (btn,,{BackgroundColor3=(,,28)}) end)
btn.MouseButton1Click:Connect(function() playSound(SFX_CLICK,0.4,1) end)
return btn
end
local hideButton = makeHudBtn("Hide HUD")
local unloadButton = makeHudBtn("Unload HUD")
hideButton.Parent = buttonHolder; unloadButton.Parent = buttonHolder
local hudHidePos = isMobile and ud2(0.5,0,0,-500) or ud2(0,-500,1,-20)
local hudShowPos = isMobile and ud2(0.5,0,0,16) or ud2(0,18,1,-20)
table.insert(hudConnections, hideButton.MouseButton1Click:Connect(function()
hudHidden = not hudHidden
if hudHidden then
tw(holder,0.35,{Position=hudHidePos}); hideButton.Text = "Show HUD"
else
tw(holder,0.5,{Position=hudShowPos}); hideButton.Text = "Hide HUD"
end
end))
table.insert(hudConnections, unloadButton.MouseButton1Click:Connect(function()
tw(holder,0.35,{Position=hudHidePos})
tw(buttonHolder,0.3,{Position=ud2(1,60,0,20)})
task.wait(0.4)
for _, c in pairs(hudConnections) do c:Disconnect() end
gui:Destroy()
end))
-- ─────────────────────────────────────────────────────────
-- SPLASH SCREEN
-- ─────────────────────────────────────────────────────────
local splashBG = ins("Frame")
splashBG.Size = ud2(1,0,1,0); splashBG.BackgroundColor3 = c3(6,6,10)
splashBG.BackgroundTransparency = 0; splashBG.ZIndex = 100; splashBG.Parent = gui
local splashW = mobScale(420, math.min(workspace.CurrentCamera.ViewportSize.X - 20, 360))
local splash = ins("Frame")
splash.AnchorPoint = v2(0.5,0.5); splash.Position = ud2(0.5,0,0.58,0)
splash.Size = ud2(0,splashW,0,268); splash.BackgroundColor3 = c3(14,12,22)
splash.BackgroundTransparency = 1; splash.BorderSizePixel = 0
splash.ZIndex = 101; splash.Parent = gui
ins("UICorner", splash).CornerRadius = UDim.new(0,14)
local sps = ins("UIStroke"); sps.Color = c3(90,60,150); sps.Thickness = 1.5; sps.Transparency = 0.3; sps.Parent = splash
local splashAccent = ins("Frame")
splashAccent.Size = ud2(0,0,0,2); splashAccent.Position = ud2(0.5,0,0,0)
splashAccent.AnchorPoint = v2(0.5,0); splashAccent.BackgroundColor3 = c3(130,80,230)
splashAccent.BorderSizePixel = 0; splashAccent.ZIndex = 102; splashAccent.Parent = splash
ins("UICorner", splashAccent).CornerRadius = UDim.new(1,0)
local function makeSplashLbl(text, size, color, yPos, font)
local lbl = ins("TextLabel")
lbl.BackgroundTransparency = 1; lbl.Position = ud2(0,0,0,yPos)
lbl.Size = ud2(1,0,0,size+10); lbl.Font = font or Enum.Font.GothamBlack
lbl.Text = text; lbl.TextColor3 = color; lbl.TextSize = size
lbl.TextTransparency = 1; lbl.ZIndex = 102; lbl.Parent = splash
return lbl
end
local titleLbl = makeSplashLbl("FORSAKEN", mobScale(44,38), c3(255,255,255), 36)
local subtitleLbl = makeSplashLbl("GUEST FE USE • R15", 14, c3(140,90,230), 90, Enum.Font.GothamBold)
local versionLbl = makeSplashLbl("v5.1 — Fixed + Mobile UI", 11, c3(90,75,115), 118, Enum.Font.Gotham)
local splashDiv = ins("Frame")
splashDiv.Size = ud2(0,0,0,1); splashDiv.Position = ud2(0.5,0,0,112)
splashDiv.AnchorPoint = v2(0.5,0); splashDiv.BackgroundColor3 = c3(60,50,85)
splashDiv.BackgroundTransparency = 1; splashDiv.BorderSizePixel = 0
splashDiv.ZIndex = 102; splashDiv.Parent = splash
local startBtn = ins("TextButton")
startBtn.AnchorPoint = v2(0.5,0); startBtn.Position = ud2(0.5,0,0,155)
startBtn.Size = ud2(0,mobScale(180,220),0,mobScale(46,54))
startBtn.BackgroundColor3 = c3(100,60,195); startBtn.BackgroundTransparency = 1
startBtn.Text = "START"; startBtn.TextColor3 = c3(255,255,255); startBtn.TextTransparency = 1
startBtn.Font = Enum.Font.GothamBlack; startBtn.TextSize = mobScale(15,17)
startBtn.BorderSizePixel = 0; startBtn.AutoButtonColor = false
startBtn.ZIndex = 102; startBtn.Parent = splash
ins("UICorner", startBtn).CornerRadius = UDim.new(0,10)
local sbtnS = ins("UIStroke"); sbtnS.Color = c3(160,110,255); sbtnS.Thickness = 1; sbtnS.Transparency = 0.4; sbtnS.Parent = startBtn
startBtn.MouseEnter:Connect(function()
tw(startBtn,0.15,{BackgroundColor3=c3(120,78,215)})
tw(startBtn,0.15,{Size=ud2(0,mobScale(190,230),0,mobScale(46,54))})
playSound(SFX_CLICK,0.12,1.4)
end)
startBtn.MouseLeave:Connect(function()
tw(startBtn,0.15,{BackgroundColor3=c3(100,60,195)})
tw(startBtn,0.15,{Size=ud2(0,mobScale(180,220),0,mobScale(46,54))})
end)
task.defer(function()
tw(blur,0.6,{Size=28})
tw(splash,0.4,{Position=ud2(0.5,0,0.5,0),BackgroundTransparency=0})
task.wait(0.3)
tw(splashAccent,0.5,{Size=ud2(0,splashW-60,0,2)})
task.wait(0.18)
tw(titleLbl,0.35,{TextTransparency=0}); task.wait(0.1)
tw(subtitleLbl,0.35,{TextTransparency=0}); task.wait(0.1)
tw(splashDiv,0.35,{Size=ud2(0,splashW-60,0,1),BackgroundTransparency=0}); task.wait(0.08)
tw(versionLbl,0.3,{TextTransparency=0}); task.wait(0.12)
tw(startBtn,0.35,{TextTransparency=0,BackgroundTransparency=0})
end)
startBtn.MouseButton1Click:Connect(function()
playSound(SFX_OPEN,0.5,1)
tw(startBtn,0.1,{BackgroundColor3=c3(200,160,255)})
task.wait(0.1)
TweenService:Create(splash,TweenInfo.new(0.25,Enum.EasingStyle.Quint),{BackgroundTransparency=1,Position=ud2(0.5,0,0.44,0)}):Play()
TweenService:Create(splashBG,TweenInfo.new(0.25,Enum.EasingStyle.Quint),{BackgroundTransparency=1}):Play()
for _, lbl in ipairs({titleLbl,subtitleLbl,versionLbl}) do tw(lbl,0.2,{TextTransparency=1}) end
tw(startBtn,0.2,{TextTransparency=1,BackgroundTransparency=1})
tw(splashDiv,0.2,{BackgroundTransparency=1})
tw(splashAccent,0.2,{BackgroundTransparency=1})
tw(blur,0.7,{Size=0})
task.wait(0.4)
splashBG:Destroy(); splash:Destroy(); blur:Destroy()
-- Animate HUD in
if isMobile then
tw(holder,0.55,{Position=ud2(0.5,0,0,16)})
else
tw(holder,0.55,{Position=ud2(0,18,1,-20)})
end
task.wait(0.15)
tw(buttonHolder,0.45,{Position=ud2(1,-280,0,20)})
end)
-- ─────────────────────────────────────────────────────────
-- HUD BARS UPDATE
-- ─────────────────────────────────────────────────────────
local MAX_STAMINA = 100
local stamina = 100
local function tweenBar(bar, pct)
TweenService:Create(bar,
TweenInfo.new(0.13,Enum.EasingStyle.Sine),
{Size=ud2(math.clamp(pct,0,1),0,1,0)}
):Play()
end
local prevHp = -1
local function updateHealthBar()
local char = lp.Character
local hum = char and char:FindFirstChildOfClass("Humanoid")
if not hum then return end
local hp, max = hum.Health, hum.MaxHealth
if math.abs(hp - prevHp) < 0.1 then return end
prevHp = hp
local pct = hp / max
tweenBar(healthFill, pct)
healthText.Text = math.floor(hp) .. "/" .. math.floor(max)
tw(healthFill,0.15,{BackgroundColor3 = pct < 0.3 and c3(255,30,30) or hpNorm})
end
local prevSt = -1
local function updateStaminaBar()
local pct = stamina / MAX_STAMINA
if math.abs(pct - prevSt) < 0.005 then return end
prevSt = pct
tweenBar(staminaFill, pct)
staminaText.Text = math.floor(stamina) .. "/" .. MAX_STAMINA
tw(staminaFill,0.15,{BackgroundColor3 = pct < 0.15 and stLow or stNorm})
end
-- ─────────────────────────────────────────────────────────
-- UNLOAD YES
-- ─────────────────────────────────────────────────────────
by.MouseButton1Click:Connect(function()
active = false; getgenv().forsakenthingyguys = nil
-- Stop the render loop
if renderConn then renderConn:Disconnect(); renderConn = nil end
local char = lp.Character
if char then
local hum = char:FindFirstChildOfClass("Humanoid")
local anim = hum and hum:FindFirstChildOfClass("Animator")
if anim then for _, t in ipairs(anim:GetPlayingAnimationTracks()) do t:Stop(0) end end
if hum then hum.WalkSpeed = 16; hum.JumpPower = 50; hum:SetStateEnabled(Enum.HumanoidStateType.Seated,true) end
for _, s in ipairs(char:GetDescendants()) do
if s:IsA("Script") and s.Name == "Animate" then s.Disabled=false; s.Enabled=false; s.Enabled=true; break end
end
end
for _, c in pairs(animateConns) do c:Disconnect() end
animateConns = {}
if charAddedConn then charAddedConn:Disconnect(); charAddedConn = nil end
sg:Destroy(); gui:Destroy()
end)
-- ─────────────────────────────────────────────────────────
-- CHARACTER MAIN (all the bug fixes live here)
-- ─────────────────────────────────────────────────────────
local function watchAnimate(char)
-- Disconnect old per-character animate watchers before adding new ones
for _, c in pairs(animateConns) do c:Disconnect() end
animateConns = {}
local conn = char.DescendantAdded:Connect(function(d)
if d:IsA("Script") and d.Name == "Animate" then d.Disabled = true end
end)
table.insert(animateConns, conn)
for _, o in ipairs(char:GetDescendants()) do
if o:IsA("Script") and o.Name == "Animate" then o.Disabled = true end
end
end
local function main(char)
local hum = char:WaitForChild("Humanoid")
-- ── CRITICAL: reset all animation state for this new character ──
if renderConn then renderConn:Disconnect(); renderConn = nil end
ca = nil
st = {}
headTrackRef = nil
faceTrackRef = nil
isConga = false
ir = false
punchComboIndex = 1
lastPunchTime = 0
-- ────────────────────────────────────────────────────────────────
if hum.RigType == Enum.HumanoidRigType.R6 then
sg.Enabled = false
local wGui = ins("ScreenGui"); wGui.Name = "R6Warning"; wGui.Parent = playerGui
local wBg = ins("Frame"); wBg.Size = ud2(0,300,0,75); wBg.Position = ud2(0.5,0,0.15,0)
wBg.AnchorPoint = v2(0.5,0.5); wBg.BackgroundColor3 = c3(10,9,16); wBg.BorderSizePixel = 0; wBg.Parent = wGui
ins("UICorner", wBg).CornerRadius = UDim.new(0,10)
local ws = ins("UIStroke"); ws.Color = c3(160,30,60); ws.Thickness = 1; ws.Parent = wBg
local wTxt = ins("TextLabel"); wTxt.Size = ud2(1,0,1,0); wTxt.BackgroundTransparency = 1
wTxt.Text = "R15 REQUIRED — R6 NOT SUPPORTED"; wTxt.TextColor3 = c3(255,60,80)
wTxt.Font = Enum.Font.GothamBold; wTxt.TextSize = 16; wTxt.Parent = wBg
task.spawn(function()
task.wait(3); tw(wBg,1,{BackgroundTransparency=1}); tw(wTxt,1,{TextTransparency=1}); task.wait(1); wGui:Destroy()
end)
return
else
sg.Enabled = true
local old = playerGui:FindFirstChild("R6Warning")
if old then old:Destroy() end
end
local animator = hum:WaitForChild("Animator")
-- Kill the default Animate script and stop all existing tracks
for _, o in ipairs(char:GetDescendants()) do
if o:IsA("Script") and o.Name == "Animate" then o.Disabled = true; break end
end
for _, t in ipairs(animator:GetPlayingAnimationTracks()) do t:Stop(0) end
for _, t in ipairs(hum:GetPlayingAnimationTracks()) do t:Stop(0) end
hum.JumpPower = 0; hum:SetStateEnabled(Enum.HumanoidStateType.Seated, false)
-- Load initial idle
local it = loadAnim(animator, LIVE.idle)
it.Priority = Enum.AnimationPriority.Idle; it:Play(0.25); st.idle = it
-- Head turn track
local headAnim = ins("Animation"); headAnim.AnimationId = H_ID
headTrackRef = animator:LoadAnimation(headAnim)
headTrackRef.Priority = Enum.AnimationPriority.Action4
headTrackRef:Play(0,1,0); headTrackRef:AdjustWeight(0.2)
updateFace(false, animator)
-- Per-frame state
local currentYaw = 0; local targetYaw = 0
local yawVelocity = 0; local yawAccel = 0; local prevTarget = 0
-- ── Single RenderStepped connection stored at module scope ──────
renderConn = RunService.RenderStepped:Connect(function(dt)
if not active or not char or not char.Parent then
renderConn:Disconnect(); renderConn = nil; return
end
updateLocomotion(char, hum, animator)
updateHealthBar()
stamina = math.clamp(stamina + (ir and -12 or 9)*dt, 0, MAX_STAMINA)
updateStaminaBar()
local rp = char:FindFirstChild("HumanoidRootPart")
if not rp then return end
local targetFov = (ir and hum.MoveDirection.Magnitude > 0) and 80 or 70
camera.FieldOfView = camera.FieldOfView + (targetFov - camera.FieldOfView) * math.min(dt*2,1)
if isSL then
local cl = camera.CFrame.LookVector
local targetCF = CFrame.lookAt(rp.Position, rp.Position + v3(cl.X,0,cl.Z))
rp.CFrame = rp.CFrame:Lerp(targetCF, 0.5)
elseif hum.MoveDirection.Magnitude > 0 then
local targetCF = CFrame.lookAt(rp.Position, rp.Position + hum.MoveDirection)
rp.CFrame = rp.CFrame:Lerp(targetCF, 0.1)
end
if isConga then hum:Move(rp.CFrame.LookVector) end
if not (ca and ca.IsPlaying) then
local camObj = rp.CFrame:VectorToObjectSpace(camera.CFrame.LookVector)
targetYaw = math.clamp(-math.atan2(camObj.X,-camObj.Z), -math.rad(75), math.rad(75))
local delta = targetYaw - currentYaw
local pred = (targetYaw - prevTarget) * 8
prevTarget = targetYaw
yawAccel = (yawAccel + (delta+pred)*12*dt) * 0.92
yawVelocity = yawVelocity*0.98 + yawAccel*dt
currentYaw = currentYaw + yawVelocity*dt
currentYaw = currentYaw + (targetYaw-currentYaw)*math.min(dt*3,0.15)
else
yawAccel = (yawAccel + (0-currentYaw)*12*dt) * 0.92
yawVelocity = yawVelocity*0.98 + yawAccel*dt
currentYaw = currentYaw + yawVelocity*dt
currentYaw = currentYaw + (0-currentYaw)*math.min(dt*3,0.15)
end
local yawMapped = currentYaw < 0 and currentYaw + math.pi*2 or currentYaw
if headTrackRef and headTrackRef.Length > 0 then
headTrackRef.TimePosition = (yawMapped/(math.pi*2)) * headTrackRef.Length
end
end)
end
charAddedConn = lp.CharacterAdded:Connect(function(char)
watchAnimate(char); main(char)
end)
if lp.Character then
watchAnimate(lp.Character); task.spawn(main, lp.Character)
endA custom FE animation script for R15 avatars. Includes visible animations that everyone in the server can see, along with custom running, punching, blocking, emotes, and more. you can fling you need to be using your own fling script for it.