-- ModuleScript Config (via decompile) local MarketplaceService_upv_1 = game:GetService("MarketplaceService") local CollectionService_upv_1 = game:GetService("CollectionService") local ReplicatedStorage_upv_1 = game:GetService("ReplicatedStorage") local TweenService_upv_1 = game:GetService("TweenService") local SoundService_upv_1 = game:GetService("SoundService") local Chat_upv_1 = game:GetService("Chat") local GuiService_upv_1 = game:GetService("GuiService") local Players_upv_1 = game:GetService("Players") local BattlePass_1 = require(ReplicatedStorage_upv_1:WaitForChild("Components"):WaitForChild("BattlePass")) local u1 = ("[%*]"):format(script.Name) local PlaceId_1 = game.PlaceId local function getComponentInitAttributeName(a1) --[[ name: getComponentInitAttributeName line: 17 ]] return "__ComponentInit_" .. string.gsub(a1, "[^%w_]", "_") end local tbl_upv_1 = {} tbl_upv_1.LobbyID = 14772802900 tbl_upv_1.InGameID = 14939963714 tbl_upv_1.Season = BattlePass_1.Season tbl_upv_1.SeasonActive = true tbl_upv_1.SeasonEndDate = 1100 tbl_upv_1.SeasonFeaturedItem = "Combat" tbl_upv_1.SeasonFont = Enum.Font.Oswald tbl_upv_1.SeasonColorTheme = Color3.fromRGB(255, 128, 0) tbl_upv_1.SeasonImage = "rbxassetid://131745180336846" tbl_upv_1.SeasonFeaturedKnife = "Geometric" tbl_upv_1.BattlepassRewards = BattlePass_1.GetBattlePassIndex() tbl_upv_1.Vaulting = true tbl_upv_1.HitMarker = true tbl_upv_1.Crosshair = true tbl_upv_1.JumpCooldown = 0.8 tbl_upv_1.JumpPower = 25 tbl_upv_1.ProneCooldown = 0.5 tbl_upv_1.RunWalkSpeed = 13.5 tbl_upv_1.NormalWalkSpeed = 10 tbl_upv_1.SlowPaceWalkSpeed = 6 tbl_upv_1.CrouchWalkSpeed = 5 tbl_upv_1.ProneWalksSpeed = 2.5 tbl_upv_1.DefaultEffectiveRange = 250 tbl_upv_1.HeadDamage = 200 tbl_upv_1.VaultPromptDistance = 4 tbl_upv_1.DefaultVaultDistance = 4.5 tbl_upv_1.KnifeDistance = 5 tbl_upv_1.KnifeCooldown = 0.8 tbl_upv_1.LeanAngle = 10 tbl_upv_1.BulletHoleDespawnTime = 10 tbl_upv_1.BulletHoleTreshold = 200 tbl_upv_1.BulletHolePerShooterCap = 16 tbl_upv_1.ImpactEffectPerShooterCap = 12 tbl_upv_1.ImpactSoundPoolSize = 4 tbl_upv_1.ImpactSoundStandbyPoolSize = 4 tbl_upv_1.ImpactSoundPreloadEnabled = true tbl_upv_1.ImpactSoundVolumeMultiplier = 1 tbl_upv_1.ImpactSoundPlaybackSpeedMin = 0.95 tbl_upv_1.ImpactSoundPlaybackSpeedMax = 1.05 tbl_upv_1.MaxSimultaneousImpactVoices = 2 tbl_upv_1.WeaponSoundPoolSize = 6 tbl_upv_1.MaxSimultaneousGunfireVoices = 3 tbl_upv_1.LocalGunfireMaxVoices = 4 tbl_upv_1.RemoteGunfireMaxVoices = 3 tbl_upv_1.GunClickMaxVoices = 1 tbl_upv_1.GunfireVoiceSteal = true tbl_upv_1.RaycastRetryLimit = 12 tbl_upv_1.ThreeDimensionDespawnTime = 3 tbl_upv_1.ThreeDimensionTreshold = 200 tbl_upv_1.BloodCooldown = 0.5 tbl_upv_1.EffectCooldown = 3 tbl_upv_1.DamageFeedbackMode = "FakeBlood" tbl_upv_1.FakeBloodHighlightColor = Color3.fromRGB(255, 60, 60) tbl_upv_1.FakeBloodHighlightFlashTime = 0.12 tbl_upv_1.FakeBloodHighlightFadeTime = 0.24 tbl_upv_1.FakeBloodHighlightStartTransparency = 0.5 tbl_upv_1.FakeBloodHighlightOutlineStartTransparency = 0.5 tbl_upv_1.FakeBloodHighlightOutlineEndTransparency = 1 tbl_upv_1.FakeBloodHighlightPoolSize = 12 tbl_upv_1.RagdollGravityScale = 0.6 tbl_upv_1.RagdollCorpseLifetime = 5 tbl_upv_1.RagdollFadeDuration = 0.75 tbl_upv_1.AllowWeaponKnockback = true tbl_upv_1.AllowExplosionKnockback = true tbl_upv_1.RagdollHeadKnockback = 30 tbl_upv_1.RagdollTorsoKnockback = 30 tbl_upv_1.RagdollExplosionKnockback = 90 tbl_upv_1.RagdollExplosionKnockbackY = 30 tbl_upv_1.RagdollOwnershipMode = "KillerLifetime" tbl_upv_1.RagdollSettleLinearThreshold = 1.5 tbl_upv_1.RagdollSettleAngularThreshold = 3 tbl_upv_1.RagdollSettleTime = 0.5 tbl_upv_1.MaxPartySize = 5 tbl_upv_1.RankedLevelRequirement = 15 tbl_upv_1.RankedAbandonPenalty = 20 tbl_upv_1.StarterRankedRatingBase = 65 tbl_upv_1.StarterRankedMaxMatches = 10 tbl_upv_1.RankedRatingBase = 40 tbl_upv_1.RankedMaxRating = 1e+05 tbl_upv_1.RankedPlayers = 10 tbl_upv_1.MininmumPlayersForServerHost = 1 tbl_upv_1.TeamColors = {Blue = Color3.fromRGB(55, 130, 185), Red = Color3.fromRGB(160, 65, 65)} tbl_upv_1.BrightTeamColors = {Blue = Color3.fromRGB(85, 175, 235), Red = Color3.fromRGB(255, 135, 135)} tbl_upv_1.VoteKickTimer = 20 tbl_upv_1.FriendlyFire = false tbl_upv_1.GangTagCharacterLimit = 5 tbl_upv_1.GangTagCooldown = 20 tbl_upv_1.GangPrice = 700 tbl_upv_1.MinimumQueueAmount = 2 tbl_upv_1.QueueCooldown = 2 tbl_upv_1.Matchmaking = { AdmissionLeaseSeconds = 60, RequeuePrioritySeconds = 20, TeleportDispatchRetryBaseSeconds = 3, TeleportDispatchRetryMaxSeconds = 20, TeleportDispatchSuccessTtlSeconds = 15, HostLoopIntervalSeconds = 10, ObserverLoopIntervalSeconds = 10, LobbyHostCheckIntervalSeconds = 5, LobbyQueueHeartbeatIntervalSeconds = 5, LobbyMatchmakingIntervalSeconds = 5, VisibleServerDirectHydrateIntervalSeconds = 10, CasualDirectHydrateIntervalSeconds = 10, ServerStatePublishInterval = 10, HostHeartbeatStaleSeconds = 12, ReleaseVersion = 14, QueuedWithoutHostThreshold = 1, CasualBrowserFreshnessSeconds = 12, QueueScanSizePerShard = 60, ServerScanWindow = 40, CasualFillAttemptsPerPartyPerCycle = 3, RankedCandidatePartyLimit = 50, QueueTeleportLeaseSeconds = 20, SafeTeleportPayloadBytes = 900, CasualJoinableTargetCount = 30, CasualRawServerScanCapPerRegion = 60, CasualImmediateGlobalScoringEnabled = true, TeleportPublishWindowSeconds = 10, MaxTeleportPublishesPerWindow = 60, ServerWarningPublishWindowSeconds = 10, MaxServerWarningPublishesPerWindow = 10, EnableServerUpdateTopic = false, ModeOrder = {"Casual", "Skirmish", "Ranked", "Custom"}, Modes = {Casual = {Queueable = true, CasualLike = true, ServerBrowserVisible = true, DirectJoinAllowed = true}, Skirmish = {Queueable = true, CasualLike = true, ServerBrowserVisible = true, DirectJoinAllowed = true}, Ranked = {Queueable = true, CasualLike = false, ServerBrowserVisible = false, DirectJoinAllowed = false}, Custom = {Queueable = false, CasualLike = false, ServerBrowserVisible = true, DirectJoinAllowed = true}}, Casual = {RegionFallbackSeconds = 10, Cat1Max = 1, Cat2Max = 1.5, RegionExpansionStepSeconds = 10, InitialRegionCount = 1, Regions = {"NA", "EU", "Asia", "Oceania", "SouthAmerica"}, RegionFallbackOrder = {NA = {"SouthAmerica", "EU", "Asia", "Oceania"}, EU = {"NA", "Asia", "SouthAmerica", "Oceania"}, Asia = {"Oceania", "EU", "NA", "SouthAmerica"}, Oceania = {"Asia", "NA", "EU", "SouthAmerica"}, SouthAmerica = {"NA", "EU", "Asia", "Oceania"}}, CountryRegionOverrides = {}}, Ranked = {TeamKDRGapFallbackSeconds = 60, TeamKDRGapDefault = 1.5, TeamKDRGapFallback = 2} } tbl_upv_1.DailyAdvertisementClaimMax = 2 tbl_upv_1.LeaderboardList = {"Level", "Kills", "RankedRating", "SupportValue", "GameTime"} tbl_upv_1.WeeklyLeaderboardList = {"WeeklyKills", "WeeklySupportValue", "WeeklyGameTime"} tbl_upv_1.NumberSuffixes = {"K", "M", "B", "T", "Qa", "Qi", "Sx", "Sp", "Oc", "No", "Dc", "Ud", "Dd", "Td", "Qad", "Qid", "Sxd", "Spd", "Ocd", "Nod", "Vg", "Uvg", "Dvg", "Tvg"} tbl_upv_1.BirthTime = 1696248000 tbl_upv_1.LatestAnnouncement = 0 tbl_upv_1.LatestAnnouncementTitle = "" tbl_upv_1.LatestAnnouncementMessage = "" tbl_upv_1.LatestAnnouncementPicture = "" tbl_upv_1.BodyColors = {Brown = Color3.fromRGB(124, 92, 70), ["Light Orange"] = Color3.fromRGB(234, 184, 146), ["Pastel Brown"] = Color3.fromRGB(255, 204, 153), ["Medium Orange"] = Color3.fromRGB(222, 161, 111), ["Reddish Brown"] = Color3.fromRGB(105, 64, 40), ["Fawn Brown"] = Color3.fromRGB(147, 123, 82), ["Warm Yellowish Orange"] = Color3.fromRGB(255, 189, 134), Burlap = Color3.fromRGB(189, 177, 133), ["Medium Brown"] = Color3.fromRGB(80, 59, 44)} tbl_upv_1.PremiumBodyColors = {["Black Metallic"] = Color3.fromRGB(12, 35, 72), Cocoa = Color3.fromRGB(86, 36, 36), ["Flame Reddish Orange"] = Color3.fromRGB(210, 115, 35), ["Tr. Brown"] = Color3.fromRGB(189, 181, 142), ["Lemon Metalic"] = Color3.fromRGB(130, 124, 91)} tbl_upv_1.RewardPoints = {Headshot = 50, Kill = 100, Deployable = 10, Capture = 150, Throwable = 10, Barricade = 10} tbl_upv_1.RewardCash = {Headshot = 5, Kill = 10, EndMatch = 50} tbl_upv_1.RewardExperience = {Headshot = 10, Kill = 30, EndMatch = 400} tbl_upv_1.RewardEvent = {Headshot = 2, Kill = 5, EndMatch = 50} tbl_upv_1.BattlepassExperienceToHit = 3500 tbl_upv_1.BattlepassExperienceEndMatchReward = 1000 tbl_upv_1.RecoilMultiplier = 0.7 tbl_upv_1.FireRateMultiplier = 0.9 tbl_upv_1.PingLocationCooldown = 2.5 tbl_upv_1.PingLocationMax = 3 tbl_upv_1.BulletDistance = 500 tbl_upv_1.HeadRotationDecimal = 0.01 tbl_upv_1.PlayerDataStore = "PlayerData_01" tbl_upv_1.GangDataStore = "GangData_01" tbl_upv_1.LeaderboardStore = "Leaderboard_01" tbl_upv_1.WeeklyLeaderboardStore = "WeeklyLeaderboard_01" tbl_upv_1.ModStore = "ModStore_01" tbl_upv_1.ReportStore = "ReportStore_01" tbl_upv_1.ServerHostStore = "ServerHost_01" tbl_upv_1.ServerUpdateTopic = "ServerUpdate_03" tbl_upv_1.ServerTeleportTopic = "ServerTeleport_03" tbl_upv_1.RankedTeleportTopic = "RankedTeleport_03" tbl_upv_1.ServerMessageTopic = "ServerMessage_03" tbl_upv_1.DailyRewardGameTimeGoal = 14400 tbl_upv_1.DailyRewardItem = "Regular Crate" tbl_upv_1.WeeklyLeaderboardRewards = {[1] = {Type = "Credit", Name = "Credit", Amount = 500}, [2] = {Type = "Credit", Name = "Credit", Amount = 300}, [3] = {Type = "Credit", Name = "Credit", Amount = 150}} tbl_upv_1.MaxFieldOfView = 90 tbl_upv_1.MinFieldOfView = 70 tbl_upv_1.MaxBrightness = 10 tbl_upv_1.MinBrightness = -10 tbl_upv_1.RoleSettings = { Founder = {TagText = "Owner", TagColor = Color3.fromRGB(255, 105, 150)}, ["Head Admin"] = {TagText = "Head Admin", TagColor = Color3.fromRGB(255, 130, 45)}, Admin = {TagText = "Admin", TagColor = Color3.fromRGB(220, 162, 69)}, Moderator = {TagText = "Moderator", TagColor = Color3.fromRGB(90, 205, 163)}, ["Content Creator"] = {TagText = "Content Creator", TagColor = Color3.fromRGB(66, 149, 205)}, ["Server Booster"] = {TagText = "Nitro", TagColor = Color3.fromRGB(143, 105, 255)}, ["Game Tester"] = {TagText = "Tester", TagColor = Color3.fromRGB(160, 220, 40)} } tbl_upv_1.CustomGrenade = false tbl_upv_1.CustomWalkspeed = false tbl_upv_1.CustomJump = false tbl_upv_1.Tips = { [1] = "Snipers can break 3 planks with one shot.", [2] = "Each Plank has 3 health. A bullet has 1 - 3 damage depending on the weapon.", [3] = "Smart Barricades. Barricade doorways strategically to control access and slow down the attackers.", [5] = "Prioritize defending the objective or coordinate with teammates to make sure objective is protected at all times.", [6] = "Monitor your ammo. It's important to decide whether to reload when necessary. Timing is key.", [7] = "Map Mastery. Learn the map layout and callouts. You can access them in Jailbird Official discord server.", [8] = "Stay alert. Be vigilant and watch for flanks. Situational awareness should never be neglected.", [9] = "Optimize loadout to suit your playstyle. Aggressive playstyle require weapons with high plank damage.", [10] = "Stealth play can be highly intimidating. Use cover and sneak strategies to eliminate your opponents.", [11] = "Ping feature can be used 3 times instantly with no cooldown. Use them wisely.", [12] = "A frag grenade can destroy up to 3 nearby planks.", [13] = "Minimal noise is essential when committing a sneak attack. Crouch for softer steps.", [14] = "Cover Utilization. Master the use of cover. It's crucial for survival.", [15] = "Custom gamemode allows you to Master map layouts and practice your aim in training ground.", [16] = "Gang Alliances. Form or join a gang and conquer Jailbird.", [17] = "Our store refreshes daily. Do check on them so you don't miss any stocks.", [18] = "Frag Grenade deals full damage within core range and partial damage within proximity." } tbl_upv_1.EndGameRewardsAmount = 3 tbl_upv_1.EndGameRewards = { [1] = {Type = "Cash", Name = "Cash", Amount = 100, Chance = 900, Rarity = "Common"}, [2] = {Type = "Crate", Name = "Rookie", Amount = 1, Chance = 700, Rarity = "Common"}, [3] = {Type = "Cash", Name = "Cash", Amount = 250, Chance = 400, Rarity = "Uncommon"}, [4] = {Type = "Crate", Name = "Regular", Amount = 1, Chance = 200, Rarity = "Rare"}, [5] = {Type = "Credit", Name = "Credit", Amount = 20, Chance = 100, Rarity = "Rare"}, [6] = {Type = "Crate", Name = "Group", Amount = 1, Chance = 200, Rarity = "Rare"} } tbl_upv_1.Rarity = { Common = {Credit = 200, Cash = 1500, CrateToken = 1, Percentage = 200, Color = Color3.fromRGB(135, 145, 125), Sound = script:WaitForChild("Audio"):WaitForChild("RewardSoundlist"):WaitForChild("RewardLevel1")}, Uncommon = {Credit = 290, Cash = 3000, CrateToken = 2, Percentage = 120, Color = Color3.fromRGB(90, 145, 200), Sound = script:WaitForChild("Audio"):WaitForChild("RewardSoundlist"):WaitForChild("RewardLevel1")}, Rare = {Credit = 640, Cash = 7500, CrateToken = 4, Percentage = 50, Color = Color3.fromRGB(190, 85, 85), Sound = script:WaitForChild("Audio"):WaitForChild("RewardSoundlist"):WaitForChild("RewardLevel2")}, Epic = {Credit = 2800, Cash = 25000, CrateToken = 7, Percentage = 10, Color = Color3.fromRGB(165, 75, 255), Sound = script:WaitForChild("Audio"):WaitForChild("RewardSoundlist"):WaitForChild("RewardLevel2")}, Legendary = {Credit = 6000, Cash = 80000, CrateToken = 15, Percentage = 4, Color = Color3.fromRGB(255, 150, 0), Sound = script:WaitForChild("Audio"):WaitForChild("RewardSoundlist"):WaitForChild("RewardLevel3")}, Divine = {Credit = 20000, Cash = 250000, CrateToken = 40, Percentage = 1, Color = Color3.fromRGB(255, 40, 115), Sound = script:WaitForChild("Audio"):WaitForChild("RewardSoundlist"):WaitForChild("RewardLevel3")}, Limited = {Credit = 0, CrateToken = 5, Cash = 0, Percentage = 20, Color = Color3.fromRGB(45, 205, 155)}, Grand = {Cash = 0, Credit = 0, Percentage = 0, Color = Color3.fromRGB(255, 210, 0)}, Battlepass = {Cash = 0, Credit = 0, Percentage = 0, Color = Color3.fromRGB(0, 200, 255)}, Contraband = {Cash = 0, Credit = 0, Percentage = 0, Color = Color3.fromRGB(255, 0, 50)} } tbl_upv_1.ColorCodes = {Regular = Color3.fromRGB(30, 30, 30), Warn = Color3.fromRGB(205, 120, 70), Personal = Color3.fromRGB(55, 145, 45), PersonalWarn = Color3.fromRGB(205, 120, 70), Announcement = Color3.fromRGB(185, 150, 55), Ban = Color3.fromRGB(170, 65, 65), SelectedColor = Color3.fromRGB(80, 190, 210), SelectedTextColor = Color3.fromRGB(255, 255, 255), DeselectedColor = Color3.fromRGB(240, 240, 240), DeselectedTextColor = Color3.fromRGB(20, 20, 20)} tbl_upv_1.PriceMultiplier = {Top = 0.6, Charm = 1, Title = 0.4, Bottom = 0.6, Knife = 1, Skin = 0.5, Banner = 0.4, Head = 1} tbl_upv_1.CurrencyImage = {Credit = "rbxassetid://14832021061", CrateToken = "rbxassetid://90873375085082", CampaignPoints = "rbxassetid://14915583580", Scrap = "rbxassetid://14831988987", Cash = "rbxassetid://14831951512"} tbl_upv_1.Audio = script:WaitForChild("Audio") tbl_upv_1.LeaderboardPageSize = 25 if PlaceId_1 == 85947802478535 or PlaceId_1 == 116897522239921 then print((("%* Game is running in test server. Applying correct place IDs"):format(u1))) tbl_upv_1.LobbyID = 85947802478535 tbl_upv_1.InGameID = 116897522239921 end if PlaceId_1 == 111502595339836 or PlaceId_1 == 85333342663673 then print((("%* Game is running in test server. Applying correct place IDs"):format(u1))) tbl_upv_1.LobbyID = 111502595339836 tbl_upv_1.InGameID = 85333342663673 end function tbl_upv_1.CalculateRankedRatingReward(a1, a2, a3) --[[ name: CalculateRankedRatingReward line: 545 upvalues: tbl_upv_1 (copy, index: 1) ]] local v1 = tbl_upv_1.RankedRatingBase if a1 <= tbl_upv_1.StarterRankedMaxMatches then v1 = tbl_upv_1.StarterRankedRatingBase end if a2 ~= true then return -(a3 * 5) - v1 end return ((13 - a3) * 5) + v1 end function tbl_upv_1.CheckPlayerOwnGamepass(a1, a2) --[[ name: CheckPlayerOwnGamepass line: 567 upvalues: MarketplaceService_upv_1 (copy, index: 1) ]] return MarketplaceService_upv_1:UserOwnsGamePassAsync(a1.UserId, a2) end function tbl_upv_1.CheckPlayerOwnShirt(a1, a2) --[[ name: CheckPlayerOwnShirt line: 571 ]] return nil end function tbl_upv_1.CheckPlayerBoostActive(a1, a2) --[[ name: CheckPlayerBoostActive line: 575 ]] if a1:WaitForChild("PlayerData"):WaitForChild("Stats"):GetAttribute("Booster" .. a2 .. "Time") > 0 then return true end return false end function tbl_upv_1.CheckLowLevelBonusExperience(a1) --[[ name: CheckLowLevelBonusExperience line: 586 ]] local v2 = a1:WaitForChild("PlayerData"):WaitForChild("Stats"):GetAttribute("Level") local v3 = typeof(v2) == "number" assert(v3, "CheckLowLevelBonusExperience failed because GetAttribute \"level\" is invalid: " .. tostring(v2)) if v2 <= 2 then return 900 end if v2 <= 5 then return 700 end if v2 <= 10 then return 400 end if v2 <= 15 then return 300 end if v2 <= 25 then return 200 elseif v2 <= 35 then return 100 else return 0 end end function tbl_upv_1.GetCurrentEvent() --[[ name: GetCurrentEvent line: 610 ]] return nil end function tbl_upv_1.CheckSeasonActive() --[[ name: CheckSeasonActive line: 615 upvalues: tbl_upv_1 (copy, index: 1) ]] local v4 = (tbl_upv_1.SeasonActive == true) and (tbl_upv_1.GetCurrentDay() <= tbl_upv_1.SeasonEndDate) return v4 end function tbl_upv_1.RoundTo(a1, a2) --[[ name: RoundTo line: 619 ]] local v5 = 10 ^ a2 return math.round((a1 + 1e-10) * v5) / v5 end function tbl_upv_1.RoundToNearest(a1, a2) --[[ name: RoundToNearest line: 624 ]] return math.round(a1 / a2) * a2 end function tbl_upv_1.GetTimeUntilTomorrow() --[[ name: GetTimeUntilTomorrow line: 628 ]] local v6 = os.date("!*t", os.time() + 86400) return os.time({min = 0, sec = 0, hour = 0, year = v6.year, month = v6.month, day = v6.day}) - os.time() end function tbl_upv_1.GetDateFromOsTime(a1) --[[ name: GetDateFromOsTime line: 637 ]] local v7 = os.date("!*t", a1) return ("%02i"):format(v7.day) .. "/" .. ("%02i"):format(v7.month) .. "/" .. v7.year end function tbl_upv_1.GetCurrentWeek() --[[ name: GetCurrentWeek line: 644 upvalues: tbl_upv_1 (copy, index: 1) ]] return (math.floor((os.time() - tbl_upv_1.BirthTime) / 604800)) end function tbl_upv_1.GetCurrentDay() --[[ name: GetCurrentDay line: 648 upvalues: tbl_upv_1 (copy, index: 1) ]] return (math.floor((os.time() - tbl_upv_1.BirthTime) / 86400)) end function tbl_upv_1.GetDayFromFormat(a1) --[[ name: GetDayFromFormat line: 652 upvalues: tbl_upv_1 (copy, index: 1) ]] return (math.floor((os.time(a1) - tbl_upv_1.BirthTime) / 86400)) end function tbl_upv_1.GetItemDataFromPlayerInventoryItem(a1) --[[ name: GetItemDataFromPlayerInventoryItem line: 656 upvalues: ReplicatedStorage_upv_1 (copy, index: 1) tbl_upv_1 (copy, index: 2) ]] if a1:GetAttribute("Type") ~= nil and a1:GetAttribute("Name") ~= nil then local v8 = tbl_upv_1.GetItemDataFromObject(ReplicatedStorage_upv_1.Items[a1:GetAttribute("Type")][a1:GetAttribute("Name")]) if tbl_upv_1.CheckIfItemIsWeaponExclusive(v8) then v8.Weapon = a1:GetAttribute("Weapon") end v8.Quantity = a1:GetAttribute("Quantity") or 1 return v8 end a1:Destroy() return nil end function tbl_upv_1.GetItemDataFromObject(a1) --[[ name: GetItemDataFromObject line: 670 ]] local tbl_2 = {} tbl_2.Name = a1.Name for key_1, value_1 in pairs(a1:GetAttributes()) do tbl_2[key_1] = value_1 end return tbl_2 end function tbl_upv_1.GetItemDataPrice(a1) --[[ name: GetItemDataPrice line: 683 upvalues: tbl_upv_1 (copy, index: 1) ]] local v9 = ((a1.Crate ~= "Featured") and "Cash") or "Credit" local v10 = tbl_upv_1.PriceMultiplier[a1.Type] if v10 == nil then v10 = 1 end return v9, math.ceil((tbl_upv_1.Rarity[a1.Rarity][v9] * v10) / 10) * 10 end function tbl_upv_1.GetObjectFromItemData(a1) --[[ name: GetObjectFromItemData line: 699 upvalues: ReplicatedStorage_upv_1 (copy, index: 1) ]] return ReplicatedStorage_upv_1.Items[a1.Type][a1.Name] end function tbl_upv_1.CheckIfItemIsWeaponExclusive(a1) --[[ name: CheckIfItemIsWeaponExclusive line: 703 ]] if a1.Type ~= "Skin" and a1.Type ~= "Muzzle" and a1.Type ~= "Grip" and a1.Type ~= "Sight" and a1.Type ~= "Extra" then return false end return true end function tbl_upv_1.GetItemIDFromItemData(a1) --[[ name: GetItemIDFromItemData line: 711 upvalues: tbl_upv_1 (copy, index: 1) ]] local v11 = a1.Name .. a1.Type if tbl_upv_1.CheckIfItemIsWeaponExclusive(a1) then if a1.Weapon ~= nil and a1.Weapon ~= "" then return a1.Name .. a1.Type .. a1.Weapon end return nil end if a1.Type == "AttachmentSkin" then v11 = a1.Name .. a1.Slot .. a1.Weapon end return v11 end function tbl_upv_1.RayCast(a1, a2, a3, a4) --[[ name: RayCast line: 726 ]] local v12 = RaycastParams.new() v12.FilterType = Enum.RaycastFilterType.Exclude v12.FilterDescendantsInstances = a4 v12.IgnoreWater = false local v13 = workspace:Raycast(a1, a2 * a3, v12) local v14 = nil if v13 and v13.Instance then while not (v14) do if v13 and v13.Instance and v13.Instance.Transparency >= 1 then table.insert(a4, v13.Instance) v12.FilterDescendantsInstances = a4 v14 = true end if v14 then local v15 = workspace:Raycast(a1, a2 * a3, v12) v14 = false v13 = v15 continue else break end end end return v13 end function tbl_upv_1.RegularRayCast(a1, a2, a3, a4) --[[ name: RegularRayCast line: 756 ]] local v16 = RaycastParams.new() v16.FilterType = Enum.RaycastFilterType.Exclude v16.FilterDescendantsInstances = a4 v16.IgnoreWater = false return (workspace:Raycast(a1, a2 * a3, v16)) end function tbl_upv_1.GivePlayerNotice(a1, a2, a3, a4) --[[ name: GivePlayerNotice line: 767 ]] local tbl_3 = {} tbl_3.Title = a2 tbl_3.Message = a3 tbl_3.Image = a4 local v17 = Instance.new("StringValue", a1:WaitForChild("PlayerData"):WaitForChild("Notice")) v17.Name = a2 v17.Value = a2 for key_2, value_2 in tbl_3 do v17:SetAttribute(key_2, value_2) end end function tbl_upv_1.GetEarnings(a1, a2) --[[ name: GetEarnings line: 782 upvalues: tbl_upv_1 (copy, index: 1) ]] local v18 = a1:WaitForChild("ServerData", 5) local v19 = 1 if a2 == "Cash" or a2 == "Experience" then v19 = (tbl_upv_1.CheckPlayerBoostActive(a1, a2) and 2) or v19 end return ((v18:GetAttribute("Kills") * tbl_upv_1["Reward" .. a2].Kill) + (v18:GetAttribute("Headshots") * tbl_upv_1["Reward" .. a2].Headshot)) * v19 end function tbl_upv_1.GetExperienceToHit(a1) --[[ name: GetExperienceToHit line: 794 ]] return 1000 + (a1:WaitForChild("PlayerData", 5).Stats:GetAttribute("Level") * 500) end function tbl_upv_1.TweenOnce(a1, a2, a3, a4, a5, a6) --[[ name: TweenOnce line: 802 upvalues: TweenService_upv_1 (copy, index: 1) ]] TweenService_upv_1:Create(a1, TweenInfo.new(a3, a4, a5), a2):Play() if not a6 then return end task.wait(a3) end function tbl_upv_1.CloseSound(a1, a2) --[[ name: CloseSound line: 808 upvalues: SoundService_upv_1 (copy, index: 1) tbl_upv_1 (copy, index: 2) ]] for _, value_3 in SoundService_upv_1:GetChildren() do if value_3.Name == a1 then tbl_upv_1.TweenOnce(value_3, {Volume = 0}, a2, Enum.EasingStyle.Sine, Enum.EasingDirection.InOut, false) end end end function tbl_upv_1.AddSound(a1, a2, a3, a4, a5) --[[ name: AddSound line: 816 upvalues: tbl_upv_1 (copy, index: 1) SoundService_upv_1 (copy, index: 2) Players_upv_1 (copy, index: 3) ]] local v20 = tbl_upv_1.Audio:FindFirstChild(a1) ~= nil if not v20 then return nil end local u2 = tbl_upv_1.Audio[a1]:Clone() if a4 == nil then u2.Parent = SoundService_upv_1 else u2.Parent = a4 end if a3 then u2.PlaybackSpeed = u2.PlaybackSpeed + (math.random(-100, 100) / 1000) end if Players_upv_1.LocalPlayer then u2.Volume = u2.Volume * Players_upv_1.LocalPlayer.PlayerData.Settings:GetAttribute("MasterVolume") end u2:Play() if not (a5) then u2.Ended:Connect( function() --[[ line: 837 upvalues: u2 (copy, index: 1) ]] u2:Destroy() end ) end return u2 end function tbl_upv_1.WeldObject(a1, a2, a3) --[[ name: WeldObject line: 845 ]] local v21 = Instance.new("WeldConstraint") v21.Part0 = a1 v21.Part1 = a2 v21.Parent = a3 end function tbl_upv_1.GetFilteredText(a1, a2) --[[ name: GetFilteredText line: 852 upvalues: Chat_upv_1 (copy, index: 1) u1 (copy, index: 2) ]] local u3 = a2 local success_1, v22 = pcall( function() --[[ line: 855 upvalues: u3 (ref, index: 1) Chat_upv_1 (copy, index: 2) a2 (copy, index: 3) a1 (copy, index: 4) ]] u3 = Chat_upv_1:FilterStringForBroadcast(a2, a1) end ) if not (success_1) then print(u1 .. "Failed to filter text") print(u1 .. "Error:", (tostring(v22))) print(u1 .. "Filtered text:", (tostring(u3))) end if success_1 then local v23 = u3 return v23, nil else u3 = "" local v24 = u3 return v24, true end end function tbl_upv_1.GetFilteredTextOrNil(a1, a2, a3) --[[ name: GetFilteredTextOrNil line: 873 upvalues: tbl_upv_1 (copy, index: 1) ]] local v25, v26 = tbl_upv_1.GetFilteredText(a1, a2) local _ = string.gsub(v25, "%w", "") if v26 or v25 ~= "" and v25:sub(1, 1) ~= "#" then return v25, v26 end return nil, false end function tbl_upv_1.toHMS(a1) --[[ name: toHMS line: 885 ]] return string.format("%02i:%02i:%02i", a1 / 3600, (a1 / 60) % 60, a1 % 60) end function tbl_upv_1.toMS(a1) --[[ name: toMS line: 889 ]] return string.format("%1i:%02i", (a1 / 60) % 60, a1 % 60) end function tbl_upv_1.AddComponents(a1) --[[ name: AddComponents line: 893 upvalues: CollectionService_upv_1 (copy, index: 1) ReplicatedStorage_upv_1 (copy, index: 2) u1 (copy, index: 3) ]] for _, value_4 in ipairs(CollectionService_upv_1:GetTags(a1)) do local u4 = ReplicatedStorage_upv_1.Components:FindFirstChild(value_4) if not (u4) then continue end local v27 = "__ComponentInit_" .. string.gsub(value_4, "[^%w_]", "_") local v28 = a1:GetAttribute(v27) if v28 == true or v28 == "Loading" then continue end a1:SetAttribute(v27, "Loading") local success_2, v29 = pcall( function() --[[ line: 905 upvalues: u4 (copy, index: 1) a1 (copy, index: 2) ]] require(u4).new(a1):Init() end ) if success_2 then a1:SetAttribute(v27, true) else a1:SetAttribute(v27, nil) warn((("%* Failed to add component \"%*\" to \"%*\": %*"):format(u1, value_4, a1:GetFullName(), tostring(v29)))) end end end function tbl_upv_1.Lerp(a1, a2, a3) --[[ name: Lerp line: 921 ]] return a1 + ((a2 - a1) * a3) end function tbl_upv_1.ReturnStringCurrency(a1) --[[ name: ReturnStringCurrency line: 925 ]] local v30 = tostring(a1) local v31 repeat local v32 v32, v31 = v30:gsub("^(-?%d+)(%d%d%d)", "%1,%2") v30 = v32 until v31 == 0 return v30 end function tbl_upv_1.ConfigTopInset(a1) --[[ name: ConfigTopInset line: 937 upvalues: GuiService_upv_1 (copy, index: 1) ]] if not a1 then return end local v33 = 50 while GuiService_upv_1.TopbarInset.Max.Y <= 0 do if v33 > 0 then task.wait(0.1) v33 = v33 - 1 continue else break end end a1.Position = UDim2.new(0.5, 0, 0, -GuiService_upv_1.TopbarInset.Max.Y) local function Refresh() --[[ name: Refresh line: 940 upvalues: GuiService_upv_1 (copy, index: 1) a1 (copy, index: 2) ]] a1.Position = UDim2.new(0.5, 0, 0, -GuiService_upv_1.TopbarInset.Max.Y) end GuiService_upv_1:GetPropertyChangedSignal("TopbarInset"):Connect(Refresh) end function tbl_upv_1.TweenCreate(a1, a2, a3, a4, a5, a6, a7, a8) --[[ name: TweenCreate line: 956 upvalues: TweenService_upv_1 (copy, index: 1) ]] local v34 = a4 or (Enum.EasingStyle.Sine) local v35 = a5 or (Enum.EasingDirection.InOut) local v36 = TweenService_upv_1:Create(a1, TweenInfo.new(a3, v34, v35, (a7 and -1) or 0, a8 or false), a2) v36:Play() if a6 then wait(a3 * ((a8 and 2) or 1)) end return v36 end function tbl_upv_1.AddItemsLog(a1, a2, a3) --[[ name: AddItemsLog line: 966 upvalues: tbl_upv_1 (copy, index: 1) ]] local v37 = a2.ID or (tbl_upv_1.GetItemIDFromItemData(a2)) if not v37 then return nil end local v38 = a1.PlayerData.ItemsLog:FindFirstChild(v37) local v39 = Instance.new("StringValue") v39.Name = v37 v39:SetAttribute("Name", a2.Name) v39:SetAttribute("Type", a2.Type) v39:SetAttribute("Weapon", a2.Weapon) v39:SetAttribute("Amount", a2.Amount) v39:SetAttribute("Seen", false) v39.Parent = a1.PlayerData.ItemsLog if v38 then v39:SetAttribute("Delete", true) end if a3 == true then v39:SetAttribute("Delete", true) end return v39 end function tbl_upv_1.StringToNumber(a1) --[[ name: StringToNumber line: 995 ]] local v40, v41 = string.match(string.lower(a1), "^(%D*)(%d*)$") local v42 = v40 or "" local v43 = tonumber(v41) or 0 local v44 = 0 v44 = v44 for n_1 = 1, #v42 do v44 = v44 + string.byte(v42, n_1) end return (v44 * 1000) + v43 end function tbl_upv_1.FindNameAndType(a1, a2, a3) --[[ name: FindNameAndType line: 1011 ]] for _, value_5 in pairs(a3:GetChildren()) do if value_5:GetAttribute("Name") ~= a1 or value_5:GetAttribute("Type") ~= a2 then continue end return value_5 end end function tbl_upv_1.toSuffixString(a1) --[[ name: toSuffixString line: 1019 upvalues: tbl_upv_1 (copy, index: 1) ]] if a1 < 1 then return (tostring(a1)) end local v45 = math.floor(math.log(a1, 1000)) local v46 = ("%.2f"):format(a1 / math.pow(10, v45 * 3)):gsub("%.?0+$", "") .. (tbl_upv_1.NumberSuffixes[v45] or "") if a1 == 0 then v46 = "0" end return v46 end function tbl_upv_1.GetSyncedTip() --[[ name: GetSyncedTip line: 1028 upvalues: tbl_upv_1 (copy, index: 1) ]] local v47 = Random.new(math.floor(os.time() / 300)) local v48 = 0 for _ in pairs(tbl_upv_1.Tips) do v48 = v48 + 1 end if v48 == 0 then return "" end local v49 = v47:NextInteger(1, v48) local v50 = 0 v47 = v50 for _, value_6 in pairs(tbl_upv_1.Tips) do v47 = v47 + 1 if v47 ~= v49 then continue end return value_6 end return "" end function tbl_upv_1.CreateRandomSerialID() --[[ name: CreateRandomSerialID line: 1054 upvalues: tbl_upv_1 (copy, index: 1) ]] local u5 = Random.new() local function GetRandomLetter() --[[ name: GetRandomLetter line: 1057 upvalues: tbl_upv_1 (copy, index: 1) u5 (copy, index: 2) ]] return tbl_upv_1.NumberSuffixes[u5:NextInteger(1, #tbl_upv_1.NumberSuffixes)] end local function GetRandomNumber() --[[ name: GetRandomNumber line: 1061 upvalues: u5 (copy, index: 1) ]] return (math.floor(u5:NextNumber(1, 999))) end local function GetRandomString(a1, a2) --[[ name: GetRandomString line: 1065 upvalues: tbl_upv_1 (copy, index: 1) u5 (copy, index: 2) ]] local v51 = "" local v52 = nil for _ = 1, a1 or 10 do v52 = tbl_upv_1.NumberSuffixes[u5:NextInteger(1, #tbl_upv_1.NumberSuffixes)] if not (a2) then v51 = v51 .. v52 continue end if u5:NextNumber() > 0.5 then v52 = string.upper(v52) end v51 = v51 .. v52 end return v51 end return tbl_upv_1.NumberSuffixes[u5:NextInteger(1, #tbl_upv_1.NumberSuffixes)] .. math.floor(u5:NextNumber(1, 999)) .. tbl_upv_1.NumberSuffixes[u5:NextInteger(1, #tbl_upv_1.NumberSuffixes)] .. math.floor(u5:NextNumber(1, 999)) .. math.floor(u5:NextNumber(1, 999)) .. tbl_upv_1.NumberSuffixes[u5:NextInteger(1, #tbl_upv_1.NumberSuffixes)] end function tbl_upv_1.SetTitle(a1, a2) --[[ name: SetTitle line: 1082 ]] if not a1 then return end if a2 then a1.TextColor3 = a2.TextColor3 a1.Text = a2.Text a1.Font = a2.Font a1.TextStrokeColor3 = a2.TextStrokeColor3 a1.TextStrokeTransparency = a2.TextStrokeTransparency a1.UIGradient.Color = a2.UIGradient.Color a1.UIGradient.Rotation = a2.UIGradient.Rotation else a1.Text = "" end end function tbl_upv_1.GetEndGameRewardTotalChance() --[[ name: GetEndGameRewardTotalChance line: 1103 upvalues: tbl_upv_1 (copy, index: 1) ]] local v53 = 0 for _, value_7 in ipairs(tbl_upv_1.EndGameRewards) do v53 = v53 + (value_7.Chance or 0) end return v53 end function tbl_upv_1.GetEndGameRewardChancePercentage(a1) --[[ name: GetEndGameRewardChancePercentage line: 1113 upvalues: tbl_upv_1 (copy, index: 1) ]] if not a1 then return 0 end local v54 = tbl_upv_1.GetEndGameRewardTotalChance() if v54 <= 0 then return 0 end return ((a1.Chance or 0) / v54) * 100 end function tbl_upv_1.RollEndGameRewardIndex(a1) --[[ name: RollEndGameRewardIndex line: 1122 upvalues: tbl_upv_1 (copy, index: 1) ]] local v55 = 0 for key_3, value_8 in ipairs(tbl_upv_1.EndGameRewards) do if not (a1[key_3]) then v55 = v55 + (value_8.Chance or 0) end end if v55 <= 0 then return nil end local v56 = math.random(1, v55) v55 = 0 for key_4, value_9 in ipairs(tbl_upv_1.EndGameRewards) do if a1[key_4] then continue end v55 = v55 + (value_9.Chance or 0) if not (v56 <= v55) then continue end return key_4 end return nil end function tbl_upv_1.RollUniqueEndGameRewardIndexes(a1) --[[ name: RollUniqueEndGameRewardIndexes line: 1149 upvalues: tbl_upv_1 (copy, index: 1) ]] local tbl_4 = {} local tbl_5 = {} for _ = 1, math.min(a1 or (tbl_upv_1.EndGameRewardsAmount or 3), #tbl_upv_1.EndGameRewards) do local v57 = tbl_upv_1.RollEndGameRewardIndex(tbl_5) if v57 then tbl_5[v57] = true table.insert(tbl_4, v57) end end return tbl_4 end local u6 = false function tbl_upv_1.PromptUpcomingEvents() --[[ name: PromptUpcomingEvents line: 1170 upvalues: u6 (ref, index: 1) ]] local SocialService_upv_1 = game:GetService("SocialService") if u6 == true then return end u6 = true local v58 = 0 local success_3, v59 = pcall( function() --[[ line: 1185 upvalues: SocialService_upv_1 (copy, index: 1) ]] return SocialService_upv_1:GetUpcomingExperienceEventsAsync() end ) if success_3 == true and type(v59) == "table" then for _, value_10 in ipairs(v59) do if v58 >= 3 then break end if type(value_10) ~= "table" then continue end local u7 = value_10.Id or (value_10.id) if type(u7) ~= "string" or u7 == "" then continue end local success_4, v60 = pcall( function() --[[ line: 1210 upvalues: SocialService_upv_1 (copy, index: 1) u7 (copy, index: 2) ]] return SocialService_upv_1:GetEventRsvpStatusAsync(u7) end ) if success_4 ~= true or v60 == Enum.RsvpStatus.Going then continue end if pcall( function() --[[ line: 1222 upvalues: SocialService_upv_1 (copy, index: 1) u7 (copy, index: 2) ]] SocialService_upv_1:PromptRsvpToEventAsync(u7) end ) == true then local v61 = v58 + 1 task.wait(0.25) v58 = v61 end end end u6 = false end return tbl_upv_1