Run it
Copy the script and paste it into your executor.
Players = :()
LocalPlayer = Players.LocalPlayer
UserInputService = :()
RunService = :()
StarterGui = :()
TweenService = :()
Lighting = :()
Workspace = :()
VirtualUser = :()
VirtualInputManager = :()
HttpService = :()
()
()
()
LANG =
Translations = {
ar = {
madeBy = ,
chooseLang = ,
langDesc = ,
lockTitle = ,
lockDesc = ,
pwPlaceholder = ,
unlockBtn = ,
pwWrong = ,
pwRight = ,
pwEmpty = ,
welcome = ,
shortcuts = ,
notifAll = ,
notifImp = ,
notifOff = ,
smartRouter = ,
levelBtn = ,
helps = ,
myBadge = ,
shown = ,
hidden = ,
othersBadges = ,
shown2 = ,
hidden2 = ,
resetLevel = ,
chooseFrog = ,
testFrog = ,
frogIs = ,
autoEscape = ,
escapeDist = ,
clearFrog = ,
autoTP = ,
autoRevive = ,
merge = ,
mergeOffset = ,
tpNow = ,
speed = ,
speedChange = ,
infJump = ,
fly = ,
esp = ,
antiAFK = ,
fullbright = ,
noclip = ,
destroy = ,
changelog = ,
statusWatch = ,
statusRescue = ,
meters = ,
seconds = ,
noDowned = ,
frogFirst = ,
fallDetected = ,
fellPlayer = ,
remaining = ,
wokeUp = ,
recovered = ,
groupRevive = ,
points = ,
wokeWith = ,
helpedBy = ,
players = ,
reviveSuccess = ,
helper = ,
died = ,
timeUp = ,
escaped = ,
frogClose = ,
movedSafe = ,
frogComing = ,
awayFromYou = ,
iFell = ,
movingYou = ,
movedTo = ,
nowNext = ,
askRevive = ,
merged = ,
mergedWith = ,
stayTill = ,
tpQuick = ,
movedAbove = ,
standing = ,
wasDist = ,
alreadyWith = ,
frogGuards = ,
waitLeave = ,
frogLeft = ,
canRescue = ,
levelUp = ,
roseTo = ,
nextGoal = ,
helpsWord = ,
maxLevel = ,
reachedMax = ,
yourLevel = ,
level = ,
progress = ,
needMore = ,
pointForYou = ,
pointFor = ,
levelUp2 = ,
reached = ,
langChanged = ,
},
en = {
madeBy = ,
chooseLang = ,
langDesc = ,
lockTitle = ,
lockDesc = ,
pwPlaceholder = ,
unlockBtn = ,
pwWrong = ,
pwRight = ,
pwEmpty = ,
welcome = ,
shortcuts = ,
notifAll = ,
notifImp = ,
notifOff = ,
smartRouter = ,
levelBtn = ,
helps = ,
myBadge = ,
shown = ,
hidden = ,
othersBadges = ,
shown2 = ,
hidden2 = ,
resetLevel = ,
chooseFrog = ,
testFrog = ,
frogIs = ,
autoEscape = ,
escapeDist = ,
clearFrog = ,
autoTP = ,
autoRevive = ,
merge = ,
mergeOffset = ,
tpNow = ,
speed = ,
speedChange = ,
infJump = ,
fly = ,
esp = ,
antiAFK = ,
fullbright = ,
noclip = ,
destroy = ,
changelog = ,
statusWatch = ,
statusRescue = ,
meters = ,
seconds = ,
noDowned = ,
frogFirst = ,
fallDetected = ,
fellPlayer = ,
remaining = ,
wokeUp = ,
recovered = ,
groupRevive = ,
points = ,
wokeWith = ,
helpedBy = ,
players = ,
reviveSuccess = ,
helper = ,
died = ,
timeUp = ,
escaped = ,
frogClose = ,
movedSafe = ,
frogComing = ,
awayFromYou = ,
iFell = ,
movingYou = ,
movedTo = ,
nowNext = ,
askRevive = ,
merged = ,
mergedWith = ,
stayTill = ,
tpQuick = ,
movedAbove = ,
standing = ,
wasDist = ,
alreadyWith = ,
frogGuards = ,
waitLeave = ,
frogLeft = ,
canRescue = ,
levelUp = ,
roseTo = ,
nextGoal = ,
helpsWord = ,
maxLevel = ,
reachedMax = ,
yourLevel = ,
level = ,
progress = ,
needMore = ,
pointForYou = ,
pointFor = ,
levelUp2 = ,
reached = ,
langChanged = ,
}
}
(key)
(Translations[LANG] Translations[LANG][key]) (Translations.ar[key]) key
IntroGui = .()
IntroGui.Name = ..(.(, ))
IntroGui.ResetOnSpawn =
IntroGui.ZIndexBehavior = .ZIndexBehavior.Sibling
IntroGui.DisplayOrder =
IntroGui.Parent = LocalPlayer:()
IntroBg = .()
IntroBg.Size = .(, , , )
IntroBg.BackgroundColor3 = .(, , )
IntroBg.BackgroundTransparency =
IntroBg.BorderSizePixel =
IntroBg.Parent = IntroGui
MadeByLabel = .()
MadeByLabel.Size = .(, , , )
MadeByLabel.Position = .(, , , )
MadeByLabel.BackgroundTransparency =
MadeByLabel.Text =
MadeByLabel.TextColor3 = .(, , )
MadeByLabel.TextSize =
MadeByLabel.Font = .Font.GothamBold
MadeByLabel.TextTransparency =
MadeByLabel.Parent = IntroBg
NameLabel = .()
NameLabel.Size = .(, , , )
NameLabel.Position = .(, , , )
NameLabel.BackgroundTransparency =
NameLabel.Text =
NameLabel.TextColor3 = .(, , )
NameLabel.TextSize =
NameLabel.Font = .Font.GothamBlack
NameLabel.TextTransparency =
NameLabel.Parent = IntroBg
GlowLabel = .()
GlowLabel.Size = .(, , , )
GlowLabel.Position = .(, , , )
GlowLabel.BackgroundTransparency =
GlowLabel.Text =
GlowLabel.TextColor3 = .(, , )
GlowLabel.TextSize =
GlowLabel.Font = .Font.GothamBold
GlowLabel.TextTransparency =
GlowLabel.Parent = IntroBg
.(()
.()
TweenService:(MadeByLabel, TweenInfo.(), {TextTransparency = }):()
TweenService:(NameLabel, TweenInfo.(), {TextTransparency = }):()
TweenService:(GlowLabel, TweenInfo.(), {TextTransparency = }):()
.()
TweenService:(IntroBg, TweenInfo.(), {BackgroundTransparency = }):()
TweenService:(MadeByLabel, TweenInfo.(), {TextTransparency = }):()
TweenService:(NameLabel, TweenInfo.(), {TextTransparency = }):()
TweenService:(GlowLabel, TweenInfo.(), {TextTransparency = }):()
.()
IntroGui:()
)
()
.()
LangGui = .()
LangGui.Name = ..(.(, ))
LangGui.ResetOnSpawn =
LangGui.ZIndexBehavior = .ZIndexBehavior.Sibling
LangGui.DisplayOrder =
LangGui.Parent = LocalPlayer:()
LangBg = .()
LangBg.Size = .(, , , )
LangBg.BackgroundColor3 = .(, , )
LangBg.BackgroundTransparency =
LangBg.BorderSizePixel =
LangBg.Parent = LangGui
LangBox = .()
LangBox.Size = .(, , , )
LangBox.Position = .(, -, , -)
LangBox.BackgroundColor3 = .(, , )
LangBox.BorderSizePixel =
LangBox.Parent = LangBg
LCorner = .()
LCorner.CornerRadius = .(, )
LCorner.Parent = LangBox
LStroke = .()
LStroke.Color = .(, , )
LStroke.Thickness =
LStroke.Parent = LangBox
CreditLabel = .()
CreditLabel.Size = .(, , , )
CreditLabel.Position = .(, , , )
CreditLabel.BackgroundTransparency =
CreditLabel.Text =
CreditLabel.TextColor3 = .(, , )
CreditLabel.TextSize =
CreditLabel.Font = .Font.GothamBold
CreditLabel.Parent = LangBox
LangTitle = .()
LangTitle.Size = .(, , , )
LangTitle.Position = .(, , , )
LangTitle.BackgroundTransparency =
LangTitle.Text =
LangTitle.TextColor3 = .(, , )
LangTitle.TextSize =
LangTitle.Font = .Font.GothamBlack
LangTitle.Parent = LangBox
LangDesc = .()
LangDesc.Size = .(, , , )
LangDesc.Position = .(, , , )
LangDesc.BackgroundTransparency =
LangDesc.Text =
LangDesc.TextColor3 = .(, , )
LangDesc.TextSize =
LangDesc.Font = .Font.Gotham
LangDesc.Parent = LangBox
ArBtn = .()
ArBtn.Size = .(, -, , )
ArBtn.Position = .(, , , )
ArBtn.BackgroundColor3 = .(, , )
ArBtn.BorderSizePixel =
ArBtn.Text =
ArBtn.TextColor3 = .(, , )
ArBtn.TextSize =
ArBtn.Font = .Font.GothamBlack
ArBtn.Parent = LangBox
AC1 = .() AC1.CornerRadius = .(, ) AC1.Parent = ArBtn
EnBtn = .()
EnBtn.Size = .(, -, , )
EnBtn.Position = .(, , , )
EnBtn.BackgroundColor3 = .(, , )
EnBtn.BorderSizePixel =
EnBtn.Text =
EnBtn.TextColor3 = .(, , )
EnBtn.TextSize =
EnBtn.Font = .Font.GothamBlack
EnBtn.Parent = LangBox
AC2 = .() AC2.CornerRadius = .(, ) AC2.Parent = EnBtn
LangSelected =
(lang)
LangSelected
LangSelected =
LANG = lang
(..string.(lang))
LangGui:()
ArBtn.MouseButton1Click:(()
()
)
EnBtn.MouseButton1Click:(()
()
)
LangSelected
.()
.()
PASSWORD_HASH = {
, , , , , , , , , , , , , , , , , ,
}
()
s =
_, c (PASSWORD_HASH)
s = s .. .(c)
s
(s)
s = (s )
s = s:()
s = s:(, )
s = s:(, )
s = s:(, )
s = s:(, )
s = s:(, )
s = s:(, )
s = s:(, )
s = s:(, )
s = s:(, )
s = s:(, )
s = s:(, )
s
StartMainScript
LockGui = .()
LockGui.Name = ..(.(, ))
LockGui.ResetOnSpawn =
LockGui.ZIndexBehavior = .ZIndexBehavior.Sibling
LockGui.DisplayOrder =
ok = (()
target = (gethui ()) :()
LockGui.Parent = target
)
ok LockGui.Parent ==
LockGui.Parent = LocalPlayer:()
LockBackground = .()
LockBackground.Size = .(, , , )
LockBackground.BackgroundColor3 = .(, , )
LockBackground.BackgroundTransparency =
LockBackground.BorderSizePixel =
LockBackground.Parent = LockGui
LockBox = .()
LockBox.Size = .(, , , )
LockBox.Position = .(, -, , )
LockBox.BackgroundColor3 = .(, , )
LockBox.BorderSizePixel =
LockBox.Parent = LockBackground
LockCorner = .()
LockCorner.CornerRadius = .(, )
LockCorner.Parent = LockBox
LockStroke = .()
LockStroke.Color = .(, , )
LockStroke.Thickness =
LockStroke.Parent = LockBox
LockIcon = .()
LockIcon.Size = .(, , , )
LockIcon.Position = .(, , , )
LockIcon.BackgroundTransparency =
LockIcon.Text =
LockIcon.TextSize =
LockIcon.Font = .Font.GothamBlack
LockIcon.Parent = LockBox
LockTitle = .()
LockTitle.Size = .(, , , )
LockTitle.Position = .(, , , )
LockTitle.BackgroundTransparency =
LockTitle.Text = ()
LockTitle.TextColor3 = .(, , )
LockTitle.TextSize =
LockTitle.Font = .Font.GothamBlack
LockTitle.Parent = LockBox
LockDesc = .()
LockDesc.Size = .(, -, , )
LockDesc.Position = .(, , , )
LockDesc.BackgroundTransparency =
LockDesc.Text = ()
LockDesc.TextColor3 = .(, , )
LockDesc.TextSize =
LockDesc.Font = .Font.Gotham
LockDesc.Parent = LockBox
PasswordBox = .()
PasswordBox.Size = .(, -, , )
PasswordBox.Position = .(, , , )
PasswordBox.BackgroundColor3 = .(, , )
PasswordBox.BorderSizePixel =
PasswordBox.Text =
PasswordBox.PlaceholderText = ()
PasswordBox.PlaceholderColor3 = .(, , )
PasswordBox.TextColor3 = .(, , )
PasswordBox.TextSize =
PasswordBox.Font = .Font.GothamBold
PasswordBox.ClearTextOnFocus =
PasswordBox.Parent = LockBox
PwCorner = .()
PwCorner.CornerRadius = .(, )
PwCorner.Parent = PasswordBox
SubmitBtn = .()
SubmitBtn.Size = .(, -, , )
SubmitBtn.Position = .(, , , )
SubmitBtn.BackgroundColor3 = .(, , )
SubmitBtn.BorderSizePixel =
SubmitBtn.Text = ()
SubmitBtn.TextColor3 = .(, , )
SubmitBtn.TextSize =
SubmitBtn.Font = .Font.GothamBlack
SubmitBtn.Parent = LockBox
SubmitCorner = .()
SubmitCorner.CornerRadius = .(, )
SubmitCorner.Parent = SubmitBtn
StatusMsg = .()
StatusMsg.Size = .(, -, , )
StatusMsg.Position = .(, , , )
StatusMsg.BackgroundTransparency =
StatusMsg.Text =
StatusMsg.TextColor3 = .(, , )
StatusMsg.TextSize =
StatusMsg.TextWrapped =
StatusMsg.Font = .Font.GothamBold
StatusMsg.Parent = LockBox
AccessGranted =
()
originalPos = LockBox.Position
LockStroke.Color = .(, , )
TweenService:(LockBox, TweenInfo.(), {Position = originalPos + .(, , , )}):()
.()
TweenService:(LockBox, TweenInfo.(), {Position = originalPos + .(, -, , )}):()
.()
TweenService:(LockBox, TweenInfo.(), {Position = originalPos + .(, , , )}):()
.()
TweenService:(LockBox, TweenInfo.(), {Position = originalPos}):()
.(, ()
AccessGranted
LockStroke.Color = .(, , )
)
()
AccessGranted
entered = (PasswordBox.Text)
correct = (())
entered == correct
AccessGranted =
()
StatusMsg.Text = ()
StatusMsg.TextColor3 = .(, , )
LockStroke.Color = .(, , )
PasswordBox.Text =
.()
LockGui:()
ok, err = (StartMainScript)
ok
(..(err))
codes = {}
i = , .(#entered, )
codes[#codes + ] = .(entered, i)
(..#entered....#correct)
#entered >
(..table.(codes, ))
(..())
StatusMsg.Text = ()
StatusMsg.TextColor3 = .(, , )
()
SubmitBtn.MouseButton1Click:(()
.(TryUnlock)
)
PasswordBox.FocusLost:((enterPressed)
enterPressed
.(TryUnlock)
)
.(, ()
(()
PasswordBox:()
)
)
()
StartMainScript = ()
REVIVE_KEY = .KeyCode.E
E_HOLD_MAX =
SpeedValue =
FlySpeed =
DANGER_RADIUS =
GUARD_RADIUS =
ESCAPE_COOLDOWN =
WARN_RADIUS =
HELPER_RADIUS =
HELPER_FRESH =
NotifyLevel =
Stats = {
escapes = ,
rescues = ,
reviveSuccess = ,
warnings = ,
}
States = {
AutoTP = , AutoRevive = , Speed = , InfJump = ,
Fly = , ESP = , AntiAFK = , Fullbright = ,
Noclip = , SelfEscape = , Underground = ,
}
FrogPlayer =
FrogSelectBtn =
followActive, followTarget, followConn, followManual = , , ,
IsReviving =
(msgType, title, text, duration)
NotifyLevel ==
NotifyLevel == msgType ==
.(()
_ = ,
ok = (()
StarterGui:(, {
Title = title, Text = text, Duration = duration ,
})
)
ok
.()
)
(..title....text)
(title, text, duration)
(, title, text, duration)
(studs)
.(studs)....()
(plr1, plr2)
r1 = plr1.Character plr1.Character:()
r2 = plr2.Character plr2.Character:()
r1 r2
(r1.Position - r2.Position).Magnitude
MyLevel =
MyHelps =
ShowMyBadge =
ShowOthersBadge =
LevelData = {}
creditedByMe = {}
downedHelpers = {}
maxLevelNotified =
LEVEL_FILE = ..LocalPlayer.UserId..
(level)
level *
(plr)
LevelData[plr]
LevelData[plr] = {level = , helps = }
LevelData[plr]
()
(()
writefile isfolder makefolder
()
()
(LEVEL_FILE, HttpService:({
level = MyLevel, helps = MyHelps,
}))
)
(()
readfile isfile (LEVEL_FILE)
data = HttpService:((LEVEL_FILE))
data.level
MyLevel = .(.(data.level), , )
data.helps
MyHelps = .(, .(data.helps))
(..MyLevel....MyHelps....(MyLevel))
)
ScreenGui = .()
ScreenGui.Name = ..(.(, ))
ScreenGui.ResetOnSpawn =
ScreenGui.ZIndexBehavior = .ZIndexBehavior.Sibling
ScreenGui.DisplayOrder =
ok = (()
target = (gethui ()) :()
ScreenGui.Parent = target
)
ok ScreenGui.Parent ==
ScreenGui.Parent = LocalPlayer:()
_, child (ScreenGui.Parent:())
child ~= ScreenGui child:() .(child.Name, , ) ==
child:()
_, plr (Players:())
plr.Character
_, d (plr.Character:())
d.Name ==
d:()
MainFrame = .()
MainFrame.Size = .(, , , )
MainFrame.Position = .(, -, , -)
MainFrame.BackgroundColor3 = .(, , )
MainFrame.BorderSizePixel =
MainFrame.ClipsDescendants =
MainFrame.Parent = ScreenGui
MainCorner = .() MainCorner.CornerRadius = .(, ) MainCorner.Parent = MainFrame
MainStroke = .() MainStroke.Color = .(, , ) MainStroke.Thickness = MainStroke.Transparency = MainStroke.Parent = MainFrame
TitleBar = .()
TitleBar.Size = .(, , , )
TitleBar.BackgroundColor3 = .(, , )
TitleBar.BorderSizePixel =
TitleBar.Parent = MainFrame
TitleCorner = .() TitleCorner.CornerRadius = .(, ) TitleCorner.Parent = TitleBar
TitleFix = .()
TitleFix.Size = .(, , , )
TitleFix.Position = .(, , , -)
TitleFix.BackgroundColor3 = .(, , )
TitleFix.BorderSizePixel =
TitleFix.Parent = TitleBar
TitleLabel = .()
TitleLabel.Size = .(, -, , )
TitleLabel.Position = .(, , , )
TitleLabel.BackgroundTransparency =
TitleLabel.Text =
TitleLabel.TextColor3 = .(, , )
TitleLabel.TextSize =
TitleLabel.Font = .Font.GothamBlack
TitleLabel.TextXAlignment = .TextXAlignment.Left
TitleLabel.Parent = TitleBar
SubLabel = .()
SubLabel.Size = .(, -, , )
SubLabel.Position = .(, , , )
SubLabel.BackgroundTransparency =
SubLabel.Text = ..LocalPlayer.Name
SubLabel.TextColor3 = .(, , )
SubLabel.TextSize =
SubLabel.Font = .Font.Gotham
SubLabel.TextXAlignment = .TextXAlignment.Left
SubLabel.Parent = TitleBar
MinimizeButton = .()
MinimizeButton.Size = .(, , , )
MinimizeButton.Position = .(, -, , )
MinimizeButton.BackgroundColor3 = .(, , )
MinimizeButton.BorderSizePixel =
MinimizeButton.Text =
MinimizeButton.TextColor3 = .(, , )
MinimizeButton.TextSize =
MinimizeButton.Font = .Font.GothamBold
MinimizeButton.Parent = TitleBar
MinCorner = .() MinCorner.CornerRadius = .(, ) MinCorner.Parent = MinimizeButton
Content = .()
Content.Size = .(, -, , -)
Content.Position = .(, , , )
Content.BackgroundTransparency =
Content.BorderSizePixel =
Content.ScrollBarThickness =
Content.ScrollBarImageColor3 = .(, , )
Content.CanvasSize = .(, , , )
Content.Parent = MainFrame
UIList = .()
UIList.SortOrder = .SortOrder.LayoutOrder
UIList.Padding = .(, )
UIList.Parent = Content
UIList:():(()
Content.CanvasSize = .(, , , UIList.AbsoluteContentSize.Y + )
)
StatusLabel = .()
StatusLabel.Size = .(, -, , )
StatusLabel.Position = .(, , , -)
StatusLabel.BackgroundTransparency =
StatusLabel.Text = ()
StatusLabel.TextColor3 = .(, , )
StatusLabel.TextSize =
StatusLabel.Font = .Font.Gotham
StatusLabel.TextXAlignment = .TextXAlignment.Left
StatusLabel.Parent = MainFrame
dragging, dragStart, startPosition = , ,
TitleBar.InputBegan:((input)
input.UserInputType == .UserInputType.MouseButton1
input.UserInputType == .UserInputType.Touch
dragging =
dragStart = input.Position
startPosition = MainFrame.Position
input.Changed:(()
input.UserInputState == .UserInputState.End
dragging =
)
)
UserInputService.InputChanged:((input)
dragging (input.UserInputType == .UserInputType.MouseMovement
input.UserInputType == .UserInputType.Touch)
delta = input.Position - dragStart
MainFrame.Position = .(
startPosition.X.Scale, startPosition.X.Offset + delta.X,
startPosition.Y.Scale, startPosition.Y.Offset + delta.Y
)
)
(text, callback, startOn)
button = .()
button.Size = .(, -, , )
button.BackgroundColor3 = startOn .(, , ) .(, , )
button.BorderSizePixel =
button.AutoButtonColor =
button.TextColor3 = .(, , )
button.TextSize =
button.Font = .Font.GothamBold
button.TextXAlignment = .TextXAlignment.Left
button.Parent = Content
corner = .() corner.CornerRadius = .(, ) corner.Parent = button
padding = .() padding.PaddingLeft = .(, ) padding.Parent = button
state = startOn
()
button.Text = text..(state )
()
button.MouseButton1Click:(()
state = state
()
TweenService:(button, TweenInfo.(), {
BackgroundColor3 = state .(, , ) .(, , )
}):()
(callback, state)
)
{ SetText = (newText) text = newText () }
(text, bgColor, callback)
button = .()
button.Size = .(, -, , )
button.BackgroundColor3 = bgColor .(, , )
button.BorderSizePixel =
button.Text = text
button.TextColor3 = .(, , )
button.TextSize =
button.Font = .Font.GothamBold
button.Parent = Content
corner = .() corner.CornerRadius = .(, ) corner.Parent = button
button.MouseButton1Click:(() (callback) )
button
(title, presets, onPreset)
holder = .()
holder.Size = .(, -, , )
holder.BackgroundColor3 = .(, , )
holder.BorderSizePixel =
holder.Parent = Content
rc = .() rc.CornerRadius = .(, ) rc.Parent = holder
titleLbl = .()
titleLbl.Size = .(, -, , )
titleLbl.Position = .(, , , )
titleLbl.BackgroundTransparency =
titleLbl.Text = title
titleLbl.TextColor3 = .(, , )
titleLbl.TextSize =
titleLbl.Font = .Font.Gotham
titleLbl.Parent = holder
count = #presets
btnW = ( - ) / count
i, preset (presets)
btn = .()
btn.Size = .(btnW, -, , )
btn.Position = .((i - ) * btnW + , , , )
btn.BackgroundColor3 = .(, , )
btn.BorderSizePixel =
btn.Text = preset.label
btn.TextColor3 = .(, , )
btn.TextSize =
btn.Font = .Font.GothamBold
btn.Parent = holder
c = .() c.CornerRadius = .(, ) c.Parent = btn
btn.MouseButton1Click:(()
(..title....(preset.value))
(onPreset, preset.value)
)
()
holder = .()
holder.Size = .(, -, , )
holder.BackgroundColor3 = .(, , )
holder.BorderSizePixel =
holder.Parent = Content
rc = .() rc.CornerRadius = .(, ) rc.Parent = holder
bar = .()
bar.Size = .(, , , -)
bar.Position = .(, , , )
bar.BackgroundColor3 = .(, , )
bar.BorderSizePixel =
bar.Parent = holder
bc = .() bc.CornerRadius = .(, ) bc.Parent = bar
lbl = .()
lbl.Size = .(, -, , -)
lbl.Position = .(, , , )
lbl.BackgroundTransparency =
lbl.TextColor3 = .(, , )
lbl.TextSize =
lbl.Font = .Font.GothamBold
lbl.Text =
lbl.ZIndex =
lbl.Parent = holder
{
Set = (frac, text)
frac < frac =
frac > frac =
bar.Size = .(frac, -, , -)
bar.Position = .(, , , )
lbl.Text = text
}
LevelHeaderBtn =
LevelBar =
(char)
first =
extras = {}
_, d (char:())
d.Name == d:()
first
first = d
.(extras, d)
_, e (extras)
e:()
first
(head, isMine)
bb = .()
bb.Name =
bb.Size = isMine .(, , , ) .(, , , )
bb.StudsOffset = .(, isMine , )
bb.AlwaysOnTop =
bb.Enabled =
bb.Parent = head
lbl = .()
lbl.Name =
lbl.Size = .(, , , )
lbl.BackgroundTransparency =
lbl.TextColor3 = isMine .(, , ) .(, , )
lbl.TextStrokeTransparency =
lbl.TextSize = isMine
lbl.Font = .Font.GothamBold
lbl.Text =
lbl.Parent = bb
bb
()
myChar = LocalPlayer.Character
myChar
head = myChar:() myChar:()
head
badge = (myChar)
ShowMyBadge
badge badge.Enabled =
badge
badge = (head, )
badge.Enabled =
MyLevel >=
badge.Label.Text =
badge.Label.Text = ..MyLevel....MyHelps....(MyLevel)
()
_, plr (Players:())
plr ~= LocalPlayer plr.Character
head = plr.Character:() plr.Character:()
head
badge = (plr.Character)
ShowOthersBadge
badge badge:()
badge
badge = (head, )
data = (plr)
badge.Label.Text = ..plr.Name....data.level....data.helps....(data.level)
()
target = (MyLevel)
MyLevel >=
LevelHeaderBtn
LevelHeaderBtn.Text = ..()..
LevelBar
LevelBar.(, )
LevelHeaderBtn
LevelHeaderBtn.Text = ()....MyLevel....()....MyHelps....target
LevelBar
frac =
target > frac = MyHelps / target
frac > frac =
LevelBar.(frac, MyHelps....target....(MyLevel + ))
()
(plr, amount)
amount <=
plr == LocalPlayer
MyLevel >=
maxLevelNotified
maxLevelNotified =
(, (), (), )
MyHelps = MyHelps + amount
target = (MyLevel)
MyHelps >= target MyLevel <
MyHelps = MyHelps - target
MyLevel = MyLevel +
(, (), ()....MyLevel....()....(MyLevel)....(), )
target = (MyLevel)
MyLevel >=
MyHelps =
maxLevelNotified
maxLevelNotified =
(, (), (), )
()
()
(..MyLevel....MyHelps....(MyLevel))
data = (plr)
data.level >=
data.helps = data.helps + amount
target = (data.level)
data.helps >= target data.level <
data.helps = data.helps - target
data.level = data.level +
(, ()....plr.Name.., ()....data.level.., )
target = (data.level)
data.level >= data.helps =
()
PlayerListFrame = .()
PlayerListFrame.Size = .(, , , )
PlayerListFrame.Position = .(, -, , -)
PlayerListFrame.BackgroundColor3 = .(, , )
PlayerListFrame.BorderSizePixel =
PlayerListFrame.Visible =
PlayerListFrame.ZIndex =
PlayerListFrame.Parent = ScreenGui
c = .() c.CornerRadius = .(, ) c.Parent = PlayerListFrame
s = .() s.Color = .(, , ) s.Thickness = s.Parent = PlayerListFrame
ListTitle = .()
ListTitle.Size = .(, -, , )
ListTitle.Position = .(, , , )
ListTitle.BackgroundTransparency =
ListTitle.Text = LANG ==
ListTitle.TextColor3 = .(, , )
ListTitle.TextSize =
ListTitle.Font = .Font.GothamBlack
ListTitle.TextXAlignment = .TextXAlignment.Left
ListTitle.ZIndex =
ListTitle.Parent = PlayerListFrame
CloseListBtn = .()
CloseListBtn.Size = .(, , , )
CloseListBtn.Position = .(, -, , )
CloseListBtn.BackgroundColor3 = .(, , )
CloseListBtn.BorderSizePixel =
CloseListBtn.Text =
CloseListBtn.TextColor3 = .(, , )
CloseListBtn.TextSize =
CloseListBtn.Font = .Font.GothamBold
CloseListBtn.ZIndex =
CloseListBtn.Parent = PlayerListFrame
c = .() c.CornerRadius = .(, ) c.Parent = CloseListBtn
PlayerScroll = .()
PlayerScroll.Size = .(, -, , -)
PlayerScroll.Position = .(, , , )
PlayerScroll.BackgroundTransparency =
PlayerScroll.BorderSizePixel =
PlayerScroll.ScrollBarThickness =
PlayerScroll.ScrollBarImageColor3 = .(, , )
PlayerScroll.CanvasSize = .(, , , )
PlayerScroll.ZIndex =
PlayerScroll.Parent = PlayerListFrame
CloseListBtn.MouseButton1Click:(()
PlayerListFrame.Visible =
)
()
_, child (PlayerScroll:())
child:() child:()
count =
_, plr (Players:())
plr ~= LocalPlayer
isFrog = (plr == FrogPlayer)
data = (plr)
btn = .()
btn.Size = .(, -, , )
btn.Position = .(, , , count * )
btn.BackgroundColor3 = isFrog .(, , ) .(, , )
btn.BorderSizePixel =
dist = (LocalPlayer, plr)
distTxt = dist (..math.(dist)..)
btn.Text = (isFrog )..plr.Name....data.level..distTxt
btn.TextColor3 = .(, , )
btn.TextSize =
btn.Font = .Font.GothamBold
btn.TextXAlignment = .TextXAlignment.Left
btn.ZIndex =
btn.Parent = PlayerScroll
c = .() c.CornerRadius = .(, ) c.Parent = btn
btn.MouseButton1Click:(()
FrogPlayer = plr
PlayerListFrame.Visible =
d = (LocalPlayer, plr)
dTxt = d (..(d))
(..plr.Name)
(, , ()....plr.Name..dTxt.., )
FrogSelectBtn
FrogSelectBtn.Text = ..plr.Name
()
)
count = count +
PlayerScroll.CanvasSize = .(, , , count * + )
(text)
text ==
t = (text):(, )
t == #t >
n = (t)
n n > n <= n
m, s = t:()
m s
total = (m) * + (s)
total > total <= total
(obj)
current = obj
steps =
current steps <
current:() current:() current:()
current.Enabled
current:()
current.Visible
current = current.Parent
steps = steps +
DownedConfirm = {}
(player)
char = player.Character
char char.Parent
DownedConfirm[player] =
_, d (char:())
d:() d:()
anc = d:()
d:()
anc (d)
num = (d.Text)
num num
hum = char:()
root = char:()
hum root
vel = root.AssemblyLinearVelocity
horizontal = .(vel.X, , vel.Z).Magnitude
horizontal > hum:() == .HumanoidStateType.Running hum.PlatformStand
DownedConfirm[player] =
_, d (char:())
d:() d.Enabled
iAmFollowing = (player == LocalPlayer) followActive
hum hum.Health > (hum.PlatformStand hum:() == .HumanoidStateType.Physics)
iAmFollowing
DownedConfirm[player] = DownedConfirm[player] .()
.() - DownedConfirm[player] >=
iAmFollowing DownedConfirm[player] =
()
FrogPlayer
char = FrogPlayer.Character
char
char:()
(pos, radius)
root = ()
root
(root.Position - pos).Magnitude < radius
()
rayParams = RaycastParams.()
rayParams.FilterType = .RaycastFilterType.Exclude
exclude = {}
_, plr (Players:())
plr.Character .(exclude, plr.Character)
rayParams.FilterDescendantsInstances = exclude
rayParams
()
character = LocalPlayer.Character
character
_, part (character:())
part:() part.Name ~=
part.Parent:()
part.CanCollide =
FOLLOW_OFFSET = -
(tRoot)
pos = tRoot.Position + .(, FOLLOW_OFFSET, )
.(pos) * .(.(-), , )
()
followConn followConn:() followConn =
wasActive = followActive
followActive =
followTarget =
followManual =
wasActive
(()
myChar = LocalPlayer.Character
myRoot = myChar myChar:()
myRoot
myRoot.Anchored =
)
States.Noclip (RestoreCollision)
lastFollowCheck =
(target, manual)
()
myChar = LocalPlayer.Character
myRoot = myChar myChar:()
tChar = target.Character
tRoot = tChar tChar:()
(myRoot tRoot)
(()
myRoot.Anchored =
_, part (myChar:())
part:() part.CanCollide =
myRoot.CFrame = (tRoot)
)
followTarget = target
followManual = manual
followActive =
followConn = RunService.RenderStepped:(()
mChar = LocalPlayer.Character
mRoot = mChar mChar:()
mHum = mChar mChar:()
tc = followTarget followTarget.Character
tRoot2 = tc tc:()
(mRoot mHum tRoot2) mHum.Health <=
()
mRoot.Anchored mRoot.Anchored =
.() - lastFollowCheck >
lastFollowCheck = .()
(followTarget) ==
()
States.Fly ()
(LocalPlayer) ~= ()
followManual
States.Underground ()
(States.AutoTP States.AutoRevive) ()
(()
_, part (mChar:())
part:() part.CanCollide part.CanCollide =
)
mRoot.CFrame = (tRoot2)
)
lastSafePos =
(centerPos, searchRadii, frogPos, minFrogDist)
rayParams = ()
angles = {, , , , , , , , , , , }
bestSpot, bestFrogDist = ,
_, r (searchRadii)
_, a (angles)
ok, result = (()
rad = .(a)
candidateX = centerPos.X + .(rad) * r
candidateZ = centerPos.Z + .(rad) * r
fromY = centerPos.Y +
hit = Workspace:(.(candidateX, fromY, candidateZ), .(, -, ), rayParams)
hit
groundY = hit.Position.Y
flat =
checks = {{, }, {-, }, {, }, {, -}}
_, ck (checks)
h2 = Workspace:(.(candidateX + ck[], fromY, candidateZ + ck[]), .(, -, ), rayParams)
h2 flat =
.(h2.Position.Y - groundY) > flat =
flat
.(candidateX, groundY + , candidateZ)
)
ok result
frogPos
fd = (.(result.X, , result.Z) - .(frogPos.X, , frogPos.Z)).Magnitude
fd >= minFrogDist fd > bestFrogDist
bestSpot, bestFrogDist = result, fd
result
bestSpot
()
myChar = LocalPlayer.Character
myRoot = myChar myChar:()
fRoot = ()
(myRoot fRoot)
lastSafePos
currentFrog = ()
currentFrog (currentFrog.Position - lastSafePos).Magnitude > DANGER_RADIUS +
(()
myRoot.CFrame = .(lastSafePos)
)
spot = (myRoot.Position, {, }, fRoot.Position, DANGER_RADIUS + )
spot
(()
myRoot.CFrame = .(spot)
)
spot = (myRoot.Position, {, }, fRoot.Position, )
spot
(()
myRoot.CFrame = .(spot)
)
bestHelper, bestDist = ,
_, plr (Players:())
plr ~= LocalPlayer plr ~= FrogPlayer
c = plr.Character
hum = c c:()
root = c c:()
root hum hum.Health >
fd = (root.Position - fRoot.Position).Magnitude
fd > DANGER_RADIUS fd > bestDist
bestHelper, bestDist = plr, fd
bestHelper
hRoot = bestHelper.Character:()
hRoot
(()
myRoot.CFrame = .(hRoot.Position + .(, , ))
)
lastSafePos
(()
myRoot.CFrame = .(lastSafePos)
)
(target)
char = target.Character
char
prompt
_, d (char:())
d:() d.Enabled
prompt = d
prompt
(()
(prompt)
)
(()
prompt.HoldDuration prompt.HoldDuration >
prompt:()
.(.(prompt.HoldDuration, ) + )
prompt:()
)
(()
VirtualInputManager:(, REVIVE_KEY, , )
)
t0 = .()
taps =
.() - t0 < E_HOLD_MAX
.()
taps = taps +
(target) ==
creditedByMe[target] =
Stats.reviveSuccess = Stats.reviveSuccess +
(, (), ()....target.Name.., )
(LocalPlayer) ~=
tChar = target.Character
tRoot = tChar tChar:()
mChar = LocalPlayer.Character
mRoot = mChar mChar:()
tRoot mRoot
d = (tRoot.Position - mRoot.Position).Magnitude
followActive
(tRoot.Position, GUARD_RADIUS)
d >
(()
mRoot.CFrame = .(tRoot.Position + .(, , ))
)
d >
prompt taps % ==
(()
(prompt)
)
(()
VirtualInputManager:(, REVIVE_KEY, , )
)
(target)
IsReviving =
(DoRevive, target)
IsReviving =
()
myChar = LocalPlayer.Character
myRoot = myChar myChar:()
myRoot
best, bestDist = , .huge
_, plr (Players:())
plr ~= LocalPlayer plr ~= FrogPlayer
c = plr.Character
hum = c c:()
root = c c:()
root hum hum.Health > (plr) ==
d = (root.Position - myRoot.Position).Magnitude
(root.Position, DANGER_RADIUS + )
d < bestDist best, bestDist = plr, d
best
()
helper = ()
helper ,
myChar = LocalPlayer.Character
local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
local hChar = helper.Character
local hRoot = hChar and hChar:FindFirstChild("HumanoidRootPart")
if not (myRoot and hRoot) then return false, nil end
pcall(function()
myRoot.CFrame = CFrame.new(hRoot.Position + hRoot.CFrame.LookVector * 2.5 + Vector3.new(0, 1.5, 0))
end)
return true, helper
end
--═════════ 🚀 الانتقال السريع ═════════--
local lastManualTP = 0
local function GetBestRescueTarget()
local myChar = LocalPlayer.Character
local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
if not myRoot then return nil end
local best, bestNum, bestDist = nil, math.huge, math.huge
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and plr ~= FrogPlayer then
local num = GetDownedInfo(plr)
if num then
local tRoot = plr.Character and plr.Character:FindFirstChild("HumanoidRootPart")
local guarded = tRoot and IsFrogNear(tRoot.Position, GUARD_RADIUS)
if not guarded and tRoot then
local dist = (myRoot.Position - tRoot.Position).Magnitude
if num < bestNum or (num == bestNum and dist < bestDist) then
best, bestNum, bestDist = plr, num, dist
end
end
end
end
end
return best
end
local function ManualTeleport(fromButton, skipIfClose)
if os.clock() - lastManualTP < 0.6 then return end
local myChar = LocalPlayer.Character
local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
local myHum = myChar and myChar:FindFirstChildOfClass("Humanoid")
if not (myRoot and myHum and myHum.Health > 0) then return end
if GetDownedInfo(LocalPlayer) then return end
local best = GetBestRescueTarget()
if not best then
if fromButton then
NotifyMsg("info", "🚀", T("noDowned"), 2)
end
return
end
if skipIfClose then
local tRoot = best.Character and best.Character:FindFirstChild("HumanoidRootPart")
if tRoot and (tRoot.Position - myRoot.Position).Magnitude < 12 then
return
end
end
if followActive and followManual and followTarget == best then
if fromButton then
NotifyMsg("info", "🚀", T("alreadyWith"), 2)
end
return
end
lastManualTP = os.clock()
local dist = GetPlayersDistance(LocalPlayer, best)
local distTxt = dist and (" • "..T("wasDist").." "..FormatDistance(dist)) or ""
if States.Underground then
if StartFollow(best, true) then
Stats.rescues = Stats.rescues + 1
NotifyMsg("rescue", T("merged"), T("mergedWith").." "..best.Name..distTxt, 3)
end
else
local tChar = best.Character
local tRoot = tChar and tChar:FindFirstChild("HumanoidRootPart")
if tRoot and myRoot then
pcall(function()
myRoot.CFrame = CFrame.new(tRoot.Position + Vector3.new(0, 2.5, 0))
end)
Stats.rescues = Stats.rescues + 1
NotifyMsg("rescue", T("tpQuick"), T("movedAbove").." "..best.Name..distTxt.." "..T("standing"), 2)
end
end
end
--═════════ 🧠 الحلقة الرئيسية ═════════--
local announcedDown = {}
local guardAnnounced = {}
local currentTarget = nil
local selfDownNotified = false
local lastHelpMeTP = 0
local lastEscapeAttempt = 0
local lastWarnTime = 0
local StatusFlags = { danger = 0, guardName = nil, helpme = false, warned = false }
task.spawn(function()
while ScreenGui.Parent do
task.wait(0.2)
pcall(function()
local myChar = LocalPlayer.Character
local myHum = myChar and myChar:FindFirstChildOfClass("Humanoid")
local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
if not (myRoot and myHum) then return end
StatusFlags.helpme = false
StatusFlags.guardName = nil
if myHum.Health <= 0 then return end
-- ⓪ تنبيه مسبق
if States.SelfEscape and not followActive then
local fRootNow = GetFrogRoot()
if fRootNow then
local dw = (fRootNow.Position - myRoot.Position).Magnitude
if dw < WARN_RADIUS and dw >= DANGER_RADIUS then
if os.clock() - lastWarnTime > 10 then
lastWarnTime = os.clock()
Stats.warnings = Stats.warnings + 1
StatusFlags.warned = true
NotifyMsg("danger", T("frogComing"), FormatDistance(dw).." "..T("awayFromYou"), 3)
end
end
end
end
-- ① الهروب
if States.SelfEscape and not followActive then
local fRootNow = GetFrogRoot()
if fRootNow then
local d = (fRootNow.Position - myRoot.Position).Magnitude
if d < DANGER_RADIUS then
if os.clock() - lastEscapeAttempt > ESCAPE_COOLDOWN then
lastEscapeAttempt = os.clock()
StatusFlags.danger = os.clock()
local escaped = EscapeFromFrog()
if escaped then
Stats.escapes = Stats.escapes + 1
NotifyMsg("danger", T("escaped"), T("frogClose").." ("..FormatDistance(d)..") - "..T("movedSafe"), 3)
end
end
return
end
end
end
-- ② أنا ساقط؟
local myInfo = GetDownedInfo(LocalPlayer)
if myInfo then
StatusFlags.helpme = true
if followActive then StopFollow() end
if not selfDownNotified then
selfDownNotified = true
currentTarget = nil
NotifyMsg("rescue", T("iFell"), T("movingYou"), 5)
end
if (States.AutoTP or States.AutoRevive) and os.clock() - lastHelpMeTP > 2 then
lastHelpMeTP = os.clock()
local ok, helper = TeleportToHelperForRescue()
if ok and helper then
local d = GetPlayersDistance(LocalPlayer, helper)
local dTxt = d and (" • "..FormatDistance(d)) or ""
NotifyMsg("rescue", T("movedTo"), T("nowNext").." "..helper.Name..dTxt.." - "..T("askRevive"), 4)
end
end
return
end
selfDownNotified = false
-- ③ كشف الساقطين + النقاط
local downed = {}
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and plr ~= FrogPlayer then
local num = GetDownedInfo(plr)
if num then
local tRoot = plr.Character and plr.Character:FindFirstChild("HumanoidRootPart")
local guarded = tRoot and IsFrogNear(tRoot.Position, GUARD_RADIUS)
if guarded then
if not guardAnnounced[plr] then
guardAnnounced[plr] = true
NotifyMsg("rescue", T("frogGuards").." "..plr.Name, T("waitLeave"), 3)
end
StatusFlags.guardName = plr.Name
if currentTarget == plr then currentTarget = nil end
else
downed[plr] = num
if guardAnnounced[plr] then
guardAnnounced[plr] = nil
NotifyMsg("rescue", T("frogLeft").." "..plr.Name, T("canRescue"), 3)
end
if not announcedDown[plr] then
announcedDown[plr] = {t = os.clock(), char = plr.Character}
local d = GetPlayersDistance(LocalPlayer, plr)
local dTxt = d and (" • "..FormatDistance(d)) or ""
local timerTxt = (num <= 99) and (" • "..T("remaining")..": "..math.floor(num).." "..T("seconds")) or ""
NotifyMsg("rescue", T("fallDetected")..": "..plr.Name, T("fellPlayer")..dTxt..timerTxt.." 🏃", 3)
end
if tRoot then
downedHelpers[plr] = downedHelpers[plr] or {}
for _, other in ipairs(Players:GetPlayers()) do
if other ~= plr and other ~= FrogPlayer then
local oc = other.Character
local oroot = oc and oc:FindFirstChild("HumanoidRootPart")
if oroot then
local dd = (oroot.Position - tRoot.Position).Magnitude
if dd < HELPER_RADIUS then
downedHelpers[plr][other] = os.clock()
end
end
end
end
end
end
else
local info = announcedDown[plr]
announcedDown[plr] = nil
guardAnnounced[plr] = nil
if info and os.clock() - info.t > 1.5 then
local c = plr.Character
local h = c and c:FindFirstChildOfClass("Humanoid")
if h and h.Health > 0 and info.char == c then
local helpers = downedHelpers[plr] or {}
if creditedByMe[plr] then
helpers[LocalPlayer] = os.clock()
creditedByMe[plr] = nil
end
local tRoot = c:FindFirstChild("HumanoidRootPart")
if tRoot then
for _, other in ipairs(Players:GetPlayers()) do
if other ~= plr and other ~= FrogPlayer then
local oc = other.Character
local oroot = oc and oc:FindFirstChild("HumanoidRootPart")
if oroot then
local dd = (oroot.Position - tRoot.Position).Magnitude
if dd < HELPER_RADIUS then
helpers[other] = os.clock()
end
end
end
end
end
local count = 0
local names = {}
for helper, lastSeen in pairs(helpers) do
if os.clock() - lastSeen < HELPER_FRESH then
AddHelpForPlayer(helper, 1)
count = count + 1
table.insert(names, helper.Name)
end
end
if count > 1 then
NotifyMsg("rescue", T("groupRevive").." +"..count.." "..T("points"), T("wokeWith").." "..plr.Name.." "..T("helpedBy").." "..count.." "..T("players")..": "..table.concat(names, ", "), 5)
elseif count == 1 then
NotifyMsg("rescue", T("reviveSuccess"), T("wokeWith").." "..plr.Name.." • "..T("helper")..": "..names[1], 4)
else
NotifyMsg("rescue", T("wokeUp").." "..plr.Name, T("recovered"), 2)
end
elseif info.char ~= c then
NotifyMsg("rescue", T("died"), T("timeUp").." "..plr.Name.."...", 2)
end
end
downedHelpers[plr] = nil
end
end
end
-- ④ أفعال الإنقاذ
if not (States.AutoTP or States.AutoRevive) then
if followActive and not followManual then StopFollow() end
currentTarget = nil
return
end
if currentTarget and not downed[currentTarget] then
currentTarget = nil
end
if not currentTarget then
local bestNum = math.huge
for plr, num in pairs(downed) do
if num < bestNum then
bestNum = num
currentTarget = plr
end
end
end
if currentTarget then
local theirChar = currentTarget.Character
local theirRoot = theirChar and theirChar:FindFirstChild("HumanoidRootPart")
if theirRoot and myRoot then
if States.Underground then
if not followActive or followTarget ~= currentTarget then
if StartFollow(currentTarget, false) then
Stats.rescues = Stats.rescues + 1
local d = GetPlayersDistance(LocalPlayer, currentTarget)
local dTxt = d and (" • "..FormatDistance(d)) or ""
NotifyMsg("rescue", T("merged"), T("mergedWith").." "..currentTarget.Name..dTxt.." - "..T("stayTill"), 3)
end
end
if States.AutoRevive then
SafeRevive(currentTarget)
end
else
local dist = (theirRoot.Position - myRoot.Position).Magnitude
if States.AutoTP and dist > 9 then
pcall(function()
myRoot.CFrame = CFrame.new(theirRoot.Position + Vector3.new(0, 2.5, 0))
end)
end
if States.AutoRevive and dist <= 15 then
if not IsFrogNear(myRoot.Position, DANGER_RADIUS) then
SafeRevive(currentTarget)
end
end
end
else
currentTarget = nil
end
end
end)
end
end)
Players.PlayerRemoving:Connect(function(plr)
announcedDown[plr] = nil
guardAnnounced[plr] = nil
DownedConfirm[plr] = nil
creditedByMe[plr] = nil
downedHelpers[plr] = nil
LevelData[plr] = nil
if currentTarget == plr then currentTarget = nil end
if followTarget == plr then StopFollow() end
if FrogPlayer == plr then
FrogPlayer = nil
if FrogSelectBtn then
FrogSelectBtn.Text = T("chooseFrog")
end
NotifyMsg("info", "⚠️", LANG == "ar" and "غادر الضفدع - اختر ضفدعاً جديداً" or "Frog left - select new frog", 4)
end
for _, helpers in pairs(downedHelpers) do
helpers[plr] = nil
end
end)
--═════════ شريط الحالة ═════════--
task.spawn(function()
while ScreenGui.Parent do
task.wait(0.5)
pcall(function()
if StatusFlags.helpme then
StatusLabel.Text = "😴 "..(LANG == "ar" and "سقطت - جارٍ نقلك..." or "You fell - moving you...")
StatusLabel.TextColor3 = Color3.fromRGB(255, 160, 80)
elseif followActive then
StatusLabel.Text = "🔘 "..(followTarget and followTarget.Name or "؟").." • ⭐ Lv "..MyLevel
StatusLabel.TextColor3 = Color3.fromRGB(120, 220, 160)
elseif os.clock() - StatusFlags.danger < 2.5 then
StatusLabel.Text = "🛡️ "..T("escaped").." ("..Stats.escapes..")"
StatusLabel.TextColor3 = Color3.fromRGB(255, 80, 80)
elseif StatusFlags.warned and os.clock() - lastWarnTime < 5 then
StatusLabel.Text = "⚠️ "..T("frogComing").." ("..WARN_RADIUS.."m)"
StatusLabel.TextColor3 = Color3.fromRGB(255, 200, 80)
StatusFlags.warned = false
elseif StatusFlags.guardName then
StatusLabel.Text = "⏳ "..T("frogGuards").." "..StatusFlags.guardName
StatusLabel.TextColor3 = Color3.fromRGB(255, 200, 80)
elseif currentTarget then
local num = GetDownedInfo(currentTarget)
local timerTxt = (num and num <= 99) and (" ⏱️"..math.floor(num).."s") or ""
StatusLabel.Text = "📍 "..currentTarget.Name..timerTxt
StatusLabel.TextColor3 = Color3.fromRGB(255, 100, 100)
elseif FrogPlayer then
local fRoot = GetFrogRoot()
local myChar = LocalPlayer.Character
local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
if fRoot and myRoot then
local d = math.floor((fRoot.Position - myRoot.Position).Magnitude)
StatusLabel.Text = "👹 "..FrogPlayer.Name.." • "..d.."m • ⭐ Lv "..MyLevel
else
StatusLabel.Text = "👹 "..FrogPlayer.Name.." • ⭐ Lv "..MyLevel
end
StatusLabel.TextColor3 = Color3.fromRGB(130, 170, 130)
else
StatusLabel.Text = "👀 • ⭐ Lv "..MyLevel.." ("..MyHelps.."/"..GetLevelTarget(MyLevel)..") • "..Stats.rescues.." "..T("statusRescue")
StatusLabel.TextColor3 = Color3.fromRGB(85, 220, 130)
end
end)
end
end)
--═════════ ⚡ السرعة + القفز + Anti-AFK ═════════--
task.spawn(function()
while ScreenGui.Parent do
RunService.Heartbeat:Wait()
if States.Speed and not followActive then
local character = LocalPlayer.Character
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if humanoid and humanoid.WalkSpeed ~= SpeedValue then
humanoid.WalkSpeed = SpeedValue
end
end
end
end)
UserInputService.JumpRequest:Connect(function()
if followActive then StopFollow() end
if States.InfJump then
local character = LocalPlayer.Character
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if humanoid then
humanoid:ChangeState(Enum.HumanoidStateType.Jumping)
end
end
end)
LocalPlayer.Idled:Connect(function()
if States.AntiAFK then
VirtualUser:CaptureController()
VirtualUser:ClickButton2(Vector2.new())
end
end)
RunService.Stepped:Connect(function()
if (States.Noclip or followActive) and LocalPlayer.Character then
for _, part in pairs(LocalPlayer.Character:GetDescendants()) do
if part:IsA("BasePart") and part.CanCollide then
part.CanCollide = false
end
end
end
end)
--═════════ 💡 الإضاءة ═════════--
local OriginalLighting = {
Brightness = Lighting.Brightness,
ClockTime = Lighting.ClockTime,
FogEnd = Lighting.FogEnd,
GlobalShadows = Lighting.GlobalShadows,
}
local function SetFullbright(enabled)
if enabled then
Lighting.Brightness = 3
Lighting.ClockTime = 14
Lighting.FogEnd = 100000
Lighting.GlobalShadows = false
else
Lighting.Brightness = OriginalLighting.Brightness
Lighting.ClockTime = OriginalLighting.ClockTime
Lighting.FogEnd = OriginalLighting.FogEnd
Lighting.GlobalShadows = OriginalLighting.GlobalShadows
end
end
task.spawn(function()
while ScreenGui.Parent do
task.wait(1)
if States.Fullbright then pcall(SetFullbright, true) end
end
end)
--═════════ 👁️ ESP ═════════--
local ESPHighlights = {}
local function CleanESP(player)
if player.Character then
for _, object in pairs(player.Character:GetDescendants()) do
if object.Name == "FroggeHub_ESP" then object:Destroy() end
end
end
ESPHighlights[player] = nil
end
local function UpdateESP()
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and plr.Character then
local hl = ESPHighlights[plr]
if States.ESP then
if not hl or not hl.Parent then
local newHl = Instance.new("Highlight")
newHl.Name = "FroggeHub_ESP"
newHl.FillTransparency = 0.75
newHl.OutlineColor = Color3.fromRGB(255, 255, 255)
newHl.DepthMode = Enum.HighlightDepthMode.AlwaysOnTop
newHl.Parent = plr.Character
ESPHighlights[plr] = newHl
hl = newHl
end
if plr == FrogPlayer then
hl.FillColor = Color3.fromRGB(170, 60, 200)
elseif GetDownedInfo(plr) then
hl.FillColor = Color3.fromRGB(255, 85, 85)
else
hl.FillColor = Color3.fromRGB(85, 255, 127)
end
else
CleanESP(plr)
end
end
end
end
task.spawn(function()
while ScreenGui.Parent do
task.wait(1)
pcall(UpdateESP)
end
end)
--═════════ 🕊️ الطيران ═════════--
local FlyUp, FlyDown = false, false
local FlyUpBtn, FlyDownBtn
do
local function MakeFlyBtn(text, posY)
local btn = Instance.new("TextButton")
btn.Size = UDim2.new(0, 46, 0, 46)
btn.Position = UDim2.new(1, -60, 0.45, posY)
btn.BackgroundColor3 = Color3.fromRGB(38, 122, 72)
btn.BorderSizePixel = 0
btn.Text = text
btn.TextSize = 20
btn.Font = Enum.Font.GothamBold
btn.TextColor3 = Color3.new(1, 1, 1)
btn.Visible = false
btn.ZIndex = 40
btn.Parent = ScreenGui
local c = Instance.new("UICorner") c.CornerRadius = UDim.new(1, 0) c.Parent = btn
return btn
end
FlyUpBtn = MakeFlyBtn("▲", -52)
FlyDownBtn = MakeFlyBtn("▼", 4)
local function BindHold(btn, setState)
btn.InputBegan:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
setState(true)
end
end)
btn.InputEnded:Connect(function(input)
if input.UserInputType == Enum.UserInputType.MouseButton1
or input.UserInputType == Enum.UserInputType.Touch then
setState(false)
end
end)
end
BindHold(FlyUpBtn, function(v) FlyUp = v end)
BindHold(FlyDownBtn, function(v) FlyDown = v end)
end
UserInputService.InputBegan:Connect(function(input)
if States.Fly then
if input.KeyCode == Enum.KeyCode.Space then FlyUp = true
elseif input.KeyCode == Enum.KeyCode.LeftShift then FlyDown = true end
end
end)
UserInputService.InputEnded:Connect(function(input)
if input.KeyCode == Enum.KeyCode.Space then FlyUp = false
elseif input.KeyCode == Enum.KeyCode.LeftShift then FlyDown = false end
end)
local function StartFly()
local character = LocalPlayer.Character
local rootPart = character and character:FindFirstChild("HumanoidRootPart")
if not rootPart then return end
local bodyVelocity = Instance.new("BodyVelocity")
bodyVelocity.Name = "FroggeHub_Fly"
bodyVelocity.MaxForce = Vector3.new(math.huge, math.huge, math.huge)
bodyVelocity.Velocity = Vector3.new()
bodyVelocity.Parent = rootPart
local bodyGyro = Instance.new("BodyGyro")
bodyGyro.Name = "FroggeHub_Gyro"
bodyGyro.MaxTorque = Vector3.new(math.huge, math.huge, math.huge)
bodyGyro.P = 9000
bodyGyro.D = 500
bodyGyro.Parent = rootPart
task.spawn(function()
while States.Fly and ScreenGui.Parent do
RunService.RenderStepped:Wait()
local currentChar = LocalPlayer.Character
local currentRoot = currentChar and currentChar:FindFirstChild("HumanoidRootPart")
local humanoid = currentChar and currentChar:FindFirstChildOfClass("Humanoid")
local camera = Workspace.CurrentCamera
if currentRoot and humanoid and camera then
if bodyVelocity.Parent ~= currentRoot then
bodyVelocity.Parent = currentRoot
bodyGyro.Parent = currentRoot
end
bodyGyro.CFrame = camera.CFrame
local velocity = humanoid.MoveDirection * FlySpeed
if FlyUp then velocity = velocity + Vector3.new(0, FlySpeed, 0) end
if FlyDown then velocity = velocity - Vector3.new(0, FlySpeed, 0) end
bodyVelocity.Velocity = velocity
end
end
bodyVelocity:Destroy()
bodyGyro:Destroy()
end)
end
--═════════ 🚀 زر الانتقال السريع ═════════--
local QuickTPButton = Instance.new("TextButton")
QuickTPButton.Size = UDim2.new(0, 58, 0, 58)
QuickTPButton.Position = UDim2.new(1, -74, 0.6, 0)
QuickTPButton.BackgroundColor3 = Color3.fromRGB(205, 115, 40)
QuickTPButton.BorderSizePixel = 0
QuickTPButton.Text = "🚀"
QuickTPButton.TextSize = 26
QuickTPButton.Font = Enum.Font.GothamBold
QuickTPButton.TextColor3 = Color3.new(1, 1, 1)
QuickTPButton.ZIndex = 50
QuickTPButton.Parent = ScreenGui
do
local c = Instance.new("UICorner") c.CornerRadius = UDim.new(1, 0) c.Parent = QuickTPButton
local s = Instance.new("UIStroke") s.Color = Color3.fromRGB(255, 170, 80) s.Thickness = 2 s.Parent = QuickTPButton
end
QuickTPButton.MouseButton1Click:Connect(function()
ManualTeleport(true, false)
end)
--═════════ أزرار القائمة ═════════--
local NotifyLevelBtn = AddButton(T("notifAll"), Color3.fromRGB(60, 80, 140), function()
if NotifyLevel == "all" then
NotifyLevel = "important"
NotifyLevelBtn.Text = T("notifImp")
elseif NotifyLevel == "important" then
NotifyLevel = "off"
NotifyLevelBtn.Text = T("notifOff")
else
NotifyLevel = "all"
NotifyLevelBtn.Text = T("notifAll")
end
end)
AddButton(T("smartRouter"), Color3.fromRGB(90, 60, 130), function()
local fRoot = GetFrogRoot()
local frogDist = 0
if fRoot then
local myChar = LocalPlayer.Character
local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
if myRoot then
frogDist = math.floor((fRoot.Position - myRoot.Position).Magnitude)
end
end
local downedCount = 0
for _, plr in ipairs(Players:GetPlayers()) do
if plr ~= LocalPlayer and GetDownedInfo(plr) then
downedCount = downedCount + 1
end
end
local report = "📊 "..(LANG == "ar" and "تقرير" or "Report")..":\n"..
"⭐ "..T("level")..": "..MyLevel.." ("..MyHelps.."/"..GetLevelTarget(MyLevel)..")\n"..
"🚀 "..(LANG == "ar" and "هروبات" or "Escapes")..": "..Stats.escapes.." | "..(LANG == "ar" and "تحذيرات" or "Warns")..": "..Stats.warnings.."\n"..
"💚 "..(LANG == "ar" and "إنقاذات" or "Rescues")..": "..Stats.rescues.." | "..(LANG == "ar" and "إحياءات" or "Revives")..": "..Stats.reviveSuccess.."\n"..
"🛡️ "..T("frogIs")..": "..(FrogPlayer and FrogPlayer.Name or (LANG == "ar" and "غير محدد" or "N/A")).." • "..frogDist.."m\n"..
"🚨 "..(LANG == "ar" and "ساقطين" or "Downed")..": "..downedCount
print(report)
NotifyMsg("info", "📊", report, 8)
end)
LevelHeaderBtn = AddButton(T("levelBtn")..": "..MyLevel.." • "..T("helps")..": "..MyHelps.."/"..GetLevelTarget(MyLevel), Color3.fromRGB(120, 90, 25), function()
local target = GetLevelTarget(MyLevel)
if MyLevel >= 999 then
NotifyMsg("info", T("maxLevel"), T("reachedMax"), 5)
else
NotifyMsg("info", T("yourLevel"), T("level")..": "..MyLevel.." • "..T("progress")..": "..MyHelps.."/"..target.." • "..(target - MyHelps).." "..T("needMore"), 5)
end
end)
LevelBar = AddProgressBar()
local MyBadgeBtn = AddButton(T("myBadge")..": "..T("shown"), Color3.fromRGB(45, 90, 130), function()
ShowMyBadge = not ShowMyBadge
MyBadgeBtn.Text = T("myBadge")..": "..(ShowMyBadge and T("shown") or T("hidden"))
UpdateMyBadge()
end)
local OthersBadgeBtn = AddButton(T("othersBadges")..": "..T("shown2"), Color3.fromRGB(45, 90, 130), function()
ShowOthersBadge = not ShowOthersBadge
OthersBadgeBtn.Text = T("othersBadges")..": "..(ShowOthersBadge and T("shown2") or T("hidden2"))
UpdateOthersBadges()
end)
AddButton(T("resetLevel"), Color3.fromRGB(80, 50, 50), function()
MyLevel = 1
MyHelps = 0
maxLevelNotified = false
SaveMyLevel()
RefreshLevelUI()
end)
FrogSelectBtn = AddButton(T("chooseFrog"), Color3.fromRGB(170, 80, 30), function()
RefreshPlayerList()
PlayerListFrame.Visible = true
end)
AddButton(T("testFrog"), Color3.fromRGB(70, 90, 160), function()
local myChar = LocalPlayer.Character
local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
if not FrogPlayer then
NotifyMsg("info", "🧪", T("frogFirst"), 4)
return
end
local fRoot = GetFrogRoot()
if fRoot and myRoot then
local d = math.floor((fRoot.Position - myRoot.Position).Magnitude)
NotifyMsg("info", "🧪", T("frogIs").." "..d.."m • "..T("escaped").." < "..DANGER_RADIUS.."m", 5)
end
end)
AddToggle(T("autoEscape"), function(on)
States.SelfEscape = on
if on and not FrogPlayer then
NotifyMsg("info", "⚠️", T("frogFirst"), 6)
end
end, true)
AddPresetRow(T("escapeDist"), {
{label = "10m", value = 10},
{label = "20m", value = 20},
{label = "35m", value = 35},
{label = "50m", value = 50},
{label = "80m", value = 80},
}, function(v)
DANGER_RADIUS = v
print("[FroggeHub] 🛡️ Escape: "..v.."m")
end)
AddButton(T("clearFrog"), Color3.fromRGB(80, 50, 50), function()
FrogPlayer = nil
FrogSelectBtn.Text = T("chooseFrog")
end)
AddToggle(T("autoTP"), function(on)
States.AutoTP = on
end, true)
AddToggle(T("autoRevive"), function(on)
States.AutoRevive = on
end, true)
AddToggle(T("merge"), function(on)
States.Underground = on
if not on and followActive then StopFollow() end
end)
AddPresetRow(T("mergeOffset"), {
{label = "-1", value = -1},
{label = "-0.5", value = -0.5},
{label = "0", value = 0},
{label = "+0.5", value = 0.5},
{label = "+1", value = 1},
}, function(v)
FOLLOW_OFFSET = v
end)
AddButton(T("tpNow"), Color3.fromRGB(38, 122, 72), function()
ManualTeleport(true, false)
end)
local SpeedToggle = AddToggle(T("speed").." ["..SpeedValue.."]", function(on)
States.Speed = on
if not on then
local character = LocalPlayer.Character
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if humanoid then humanoid.WalkSpeed = 16 end
end
end)
AddPresetRow(T("speedChange"), {
{label = "16", value = 16},
{label = "30", value = 30},
{label = "50", value = 50},
{label = "75", value = 75},
{label = "100", value = 100},
}, function(v)
SpeedValue = v
SpeedToggle.SetText(T("speed").." ["..SpeedValue.."]")
end)
AddToggle(T("infJump"), function(on)
States.InfJump = on
end)
AddToggle(T("fly"), function(on)
States.Fly = on
FlyUpBtn.Visible = on
FlyDownBtn.Visible = on
if on then
if followActive then StopFollow() end
StartFly()
end
end)
AddToggle(T("esp"), function(on)
States.ESP = on
if not on then
for _, plr in ipairs(Players:GetPlayers()) do
CleanESP(plr)
end
end
end)
AddToggle(T("antiAFK"), function(on)
States.AntiAFK = on
end)
AddToggle(T("fullbright"), function(on)
States.Fullbright = on
pcall(SetFullbright, on)
end)
AddToggle(T("noclip"), function(on)
States.Noclip = on
if not on and not followActive then pcall(RestoreCollision) end
end)
AddButton(T("destroy"), Color3.fromRGB(150, 45, 50), function()
for key in pairs(States) do States[key] = false end
pcall(StopFollow)
for _, plr in ipairs(Players:GetPlayers()) do
CleanESP(plr)
end
pcall(function() SetFullbright(false) end)
pcall(RestoreCollision)
local character = LocalPlayer.Character
local humanoid = character and character:FindFirstChildOfClass("Humanoid")
if humanoid then pcall(function() humanoid.WalkSpeed = 16 end) end
ScreenGui:Destroy()
end)
--═════════ 📜 سجل التحديثات ═════════--
AddButton(T("changelog"), Color3.fromRGB(50, 60, 100), function()
local changelog = "📜 Changelog v8.0 → v20.0\n\n"..
"🆕 v20.0:\n"..
"• 🌍 AR/EN Language System\n"..
"• 🎬 Made by romal3m607 intro\n\n"..
"v19.3: Escape 10m\n"..
"v19.2: Standing TP (no merge)\n"..
"v19.0: Smart escape + router\n"..
"v18.2: Anti-fall (5 layers)\n"..
"v18.0: Password lock\n"..
"v16.0: Group points\n"..
"v14.0: Level system\n"..
"v13.0: Arabic notifications\n"..
"v11.0: Frog = player\n"..
"v8.0: Merge system + E key"
print(changelog)
NotifyMsg("info", "📜", "Printed to Delta log 📋", 4)
end)
RefreshLevelUI()
--═════════ الزر العائم 🐸 ═════════--
local FloatingButton = Instance.new("TextButton")
FloatingButton.Size = UDim2.new(0, 50, 0, 50)
FloatingButton.Position = UDim2.new(0, 12, 0.35, 0)
FloatingButton.BackgroundColor3 = Color3.fromRGB(38, 122, 72)
FloatingButton.BorderSizePixel = 0
FloatingButton.Text = "🐸"
FloatingButton.TextSize = 28
FloatingButton.Font = Enum.Font.GothamBold
FloatingButton.ZIndex = 50
FloatingButton.Parent = ScreenGui
do
local c = Instance.new("UICorner") c.CornerRadius = UDim.new(1, 0) c.Parent = FloatingButton
local s = Instance.new("UIStroke") s.Color = Color3.fromRGB(85, 220, 130) s.Thickness = 2 s.Parent = FloatingButton
end
FloatingButton.MouseButton1Click:Connect(function()
MainFrame.Visible = not MainFrame.Visible
end)
MinimizeButton.MouseButton1Click:Connect(function()
MainFrame.Visible = false
end)
--═════════ ⌨️ الاختصارات ═════════--
UserInputService.InputBegan:Connect(function(input, gameProcessed)
if gameProcessed then return end
if input.KeyCode == REVIVE_KEY then
if not IsReviving then
ManualTeleport(true, true)
end
elseif input.KeyCode == Enum.KeyCode.K then
MainFrame.Visible = not MainFrame.Visible
elseif input.KeyCode == Enum.KeyCode.H then
local myChar = LocalPlayer.Character
local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
if myRoot then
EscapeFromFrog()
end
elseif input.KeyCode == Enum.KeyCode.F then
local fRoot = GetFrogRoot()
local frogDist = 0
if fRoot then
local myChar = LocalPlayer.Character
local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
if myRoot then
frogDist = math.floor((fRoot.Position - myRoot.Position).Magnitude)
end
end
NotifyMsg("info", "📊", "Lv "..MyLevel.." • "..Stats.escapes.." escapes • "..frogDist.."m", 5)
end
end)
--═════════ ⭐ محدث الشعارات ═════════--
LocalPlayer.CharacterAdded:Connect(function(char)
task.wait(1)
pcall(UpdateMyBadge)
end)
Players.PlayerAdded:Connect(function(plr)
plr.CharacterAdded:Connect(function()
task.wait(1)
pcall(UpdateOthersBadges)
end)
end)
task.spawn(function()
while ScreenGui.Parent do
task.wait(1)
pcall(UpdateMyBadge)
pcall(UpdateOthersBadges)
pcall(function()
local myChar = LocalPlayer.Character
local myRoot = myChar and myChar:FindFirstChild("HumanoidRootPart")
local myHum = myChar and myChar:FindFirstChildOfClass("Humanoid")
if myRoot and myHum and myHum.Health > 0 and not followActive then
local fRoot = GetFrogRoot()
if fRoot and (fRoot.Position - myRoot.Position).Magnitude > DANGER_RADIUS + 30 then
local ok, hit = pcall(function()
return Workspace:Raycast(myRoot.Position, Vector3.new(0, -8, 0), GetRayParams())
end)
if ok and hit then
lastSafePos = hit.Position + Vector3.new(0, 3.5, 0)
end
end
end
end)
end
end)
NotifyMsg("info", "🐸 Frogge Hub v20.0", T("welcome").." "..LocalPlayer.Name.." 🎉 • Lv "..MyLevel.." • Made by romal3m607", 5)
NotifyMsg("info", "⌨️", T("shortcuts"), 8)
print("🐸 Frogge Hub v20.0 - Loaded! ✅")
print("🌍 Language: "..string.upper(LANG))
print("👤 Made by romal3m607")
end -- نهاية StartMainScript
print("🔐 Waiting for password...")Auto assistant helps injured players Me Username: romal3m607 Own: romal Note there is a password in the script and you can find it in the script in a specific place the first person to find it will get the VIP copy