fdhgfdgjfghjn
🧩 Syntax:
if getgenv().StratXLibrary and getgenv().StratXLibrary.Executed then
if StratXLibrary.Strat[#StratXLibrary.Strat].Active then
return Strat.new()
else
return StratXLibrary.Strat[#StratXLibrary.Strat]
end
end
local Version = "Version: 0.3.9 [Alpha]"
local Items = {
Enabled = false,
Name = "Cookie"
}
local LoadLocal = false
local MainLink = LoadLocal and "" or "https://raw.githubusercontent.com/Sigmanic/Strategies-X/main/"
local OldTime = os.clock()
if not isfolder("StrategiesX") then
makefolder("StrategiesX")
makefolder("StrategiesX/UserLogs")
makefolder("StrategiesX/UserConfig")
elseif not isfolder("StrategiesX/UserLogs") then
makefolder("StrategiesX/UserLogs")
elseif not isfolder("StrategiesX/UserConfig") then
makefolder("StrategiesX/UserConfig")
end
getgenv().StratXLibrary = {Functions = {}}
--getgenv().StratXLibrary.ExecutedCount = 0
getgenv().Functions = StratXLibrary.Functions
StratXLibrary["TowersContained"] = {}
StratXLibrary["TowersContained"].Index = 0
getgenv().TowersContained = StratXLibrary["TowersContained"]
StratXLibrary["ActionInfo"] = {
["Place"] = {0,0},
["Upgrade"] = {0,0},
["Sell"] = {0,0},
["Skip"] = {0,0},
["Ability"] = {0,0},
["Target"] = {0,0},
["AutoChain"] = {0,0},
["SellAllFarms"] = {0,0},
["Option"] = {0,0},
}
StratXLibrary.UI = {}
StratXLibrary.RestartCount = 0
StratXLibrary.CurrentCount = StratXLibrary.RestartCount
--StratXLibrary.MultiStratEnabled = getgenv().IsMultiStrat or false
--[[StratXLibrary.MultiStratEnabled = true
getgenv().GameSpoof = "Lobby"]]
StratXLibrary.UtilitiesConfig = {
Camera = tonumber(getgenv().DefaultCam) or 2,
LowGraphics = getgenv().PotatoPC or false,
BypassGroup = false,
AutoBuyMissing = false,
AutoPickups = false,
RestartMatch = true,
TowersPreview = false,
Webhook = {
Enabled = false,
Link = (isfile("TDS_AutoStrat/Webhook (Logs).txt") and readfile("TDS_AutoStrat/Webhook (Logs).txt")) or "",
HideUser = false,
UseNewFormat = false,
PlayerInfo = true,
GameInfo = true,
TroopsInfo = true,
DisableCustomLog = true,
},
}
if not game:IsLoaded() then
game["Loaded"]:Wait()
end
local SpoofEvent = {}
if GameSpoof then
function SpoofEvent:InvokeServer(...)
print("InvokeServer",...)
end
function SpoofEvent:FireServer(...)
print("FireServer",...)
end
end
local Workspace = game:GetService("Workspace")
local Players = game:GetService("Players")
local LocalPlayer = Players.LocalPlayer
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local RemoteFunction = if not GameSpoof then ReplicatedStorage:WaitForChild("RemoteFunction") else SpoofEvent
local RemoteEvent = if not GameSpoof then ReplicatedStorage:WaitForChild("RemoteEvent") else SpoofEvent
local Lighting = game:GetService("Lighting")
local TeleportService = game:GetService("TeleportService")
local UserInputService = game:GetService("UserInputService")
local Mouse = LocalPlayer:GetMouse()
local CurrentCamera = Workspace.CurrentCamera
local OldCameraOcclusionMode = LocalPlayer.DevCameraOcclusionMode
local UILibrary = getgenv().UILibrary or loadstring(game:HttpGet("https://raw.githubusercontent.com/Sigmanic/ROBLOX/main/ModificationWallyUi", true))()
UILibrary.options.toggledisplay = 'Fill'
UI = StratXLibrary.UI
UtilitiesConfig = StratXLibrary.UtilitiesConfig
local Patcher = loadstring(game:HttpGet(MainLink.."TDS/ConvertFunc.lua", true))()--loadstring(game:HttpGet("https://raw.githubusercontent.com/Sigmanic/Strategies-X/main/ConvertFunc.lua", true))()
function ParametersPatch(FuncsName,...)
if type(...) == "table" and #{...} == 1 then --select("#",...)
return ...
end
local GetFuncName = FuncsName --debug.getinfo(4,"n").name
if StratXLibrary.Functions[GetFuncName] and Patcher[GetFuncName] then
return Patcher[GetFuncName](...)
else
return {...}
end
end
loadstring(game:HttpGet(MainLink.."ConsoleLibrary.lua", true))()
loadstring(game:HttpGet(MainLink.."TDS/JoinLessServer.lua", true))()
function prints(...)
local TableText = {...}
for i,v in next, TableText do
if type(v) ~= "string" then
TableText[i] = tostring(v)
end
end
local Text = table.concat(TableText, " ")
--appendfile("StratLoader/UserLogs/PrintLog.txt", Text.."\n")
--print(Text)
ConsoleInfo(Text)
end
getgenv().output = function(Text,Color)
ConsolePrint(Color,"Info",Text)
end
if isfile("StrategiesX/UserConfig/UtilitiesConfig.txt") then
local Check = pcall(function()
UtilitiesConfig = game:GetService("HttpService"):JSONDecode(readfile("StrategiesX/UserConfig/UtilitiesConfig.txt"))
end)
if not (Check and type(UtilitiesConfig) == "table") then
UtilitiesConfig = {
Camera = tonumber(getgenv().DefaultCam) or 2,
LowGraphics = getgenv().PotatoPC or false,
BypassGroup = false,
AutoBuyMissing = false,
AutoPickups = false,
RestartMatch = true,
TowersPreview = false,
Webhook = {
Enabled = false,
Link = (isfile("TDS_AutoStrat/Webhook (Logs).txt") and readfile("TDS_AutoStrat/Webhook (Logs).txt")) or "",
HideUser = false,
UseNewFormat = false,
PlayerInfo = true,
GameInfo = true,
TroopsInfo = true,
DisableCustomLog = true,
},
}
end
if tonumber(getgenv().DefaultCam) and tonumber(getgenv().DefaultCam) <= 3 and tonumber(getgenv().DefaultCam) ~= UtilitiesConfig.Camera then
UtilitiesConfig.Camera = tonumber(getgenv().DefaultCam)
end
if getgenv().PotatoPC then
UtilitiesConfig.LowGraphics = true
end
else
writefile("StrategiesX/UserConfig/UtilitiesConfig.txt", game:GetService("HttpService"):JSONEncode(UtilitiesConfig))
end
ConsolePrint("WHITE","Table",UtilitiesConfig)
function SaveUtilitiesConfig()
UtilitiesTab = UI.UtilitiesTab
local WebSetting = UI.WebSetting
StratXLibrary.UtilitiesConfig = {
Camera = tonumber(getgenv().DefaultCam) or 2,
LowGraphics = UtilitiesTab.flags.LowGraphics,
BypassGroup = UtilitiesTab.flags.BypassGroup,
AutoBuyMissing = UtilitiesTab.flags.AutoBuyMissing,
AutoPickups = UtilitiesConfig.AutoPickups or UtilitiesTab.flags.AutoPickups,
RestartMatch = UtilitiesTab.flags.RestartMatch,
TowersPreview = UtilitiesTab.flags.TowersPreview,
Webhook = {
Enabled = WebSetting.flags.Enabled or false,
UseNewFormat = WebSetting.flags.UseNewFormat or false,
Link = (#WebSetting.flags.Link ~= 0 and WebSetting.flags.Link) or (isfile("TDS_AutoStrat/Webhook (Logs).txt") and readfile("TDS_AutoStrat/Webhook (Logs).txt")) or "",
HideUser = WebSetting.flags.HideUser or false,
PlayerInfo = if type(WebSetting.flags.PlayerInfo) == "boolean" then WebSetting.flags.PlayerInfo else true,
GameInfo = if type(WebSetting.flags.GameInfo) == "boolean" then WebSetting.flags.GameInfo else true,
TroopsInfo = if type(WebSetting.flags.TroopsInfo) == "boolean" then WebSetting.flags.TroopsInfo else true,
DisableCustomLog = if type(WebSetting.flags.DisableCustomLog) == "boolean" then WebSetting.flags.DisableCustomLog else true,
},
}
UtilitiesConfig = StratXLibrary.UtilitiesConfig
writefile("StrategiesX/UserConfig/UtilitiesConfig.txt", game:GetService("HttpService"):JSONEncode(UtilitiesConfig))
end
function CheckPlace()
return if not GameSpoof then (game.PlaceId == 5591597781) else if GameSpoof == "Ingame" then true else false
end
loadstring(game:HttpGet(MainLink.."TDS/LowGraphics.lua", true))()
local GameInfo
getgenv().GetGameInfo = function()
if not CheckPlace() then
return
end
if GameInfo then
return GameInfo
end
repeat
for i,v in next, ReplicatedStorage.StateReplicators:GetChildren() do
if v:GetAttribute("TimeScale") then
GameInfo = v
return v
end
end
task.wait()
until GameInfo
end
local VoteState
getgenv().GetVoteState = function()
if not CheckPlace() then
return
end
if VoteState then
return VoteState
end
repeat
for i,v in next, ReplicatedStorage.StateReplicators:GetChildren() do
if v:GetAttribute("MaxVotes") then
VoteState = v
return v
end
end
task.wait()
until VoteState
end
local TimerCheck = false
function CheckTimer(bool)
return (bool and TimerCheck) or true
end
function TimePrecise(Number)
--return math.round((math.ceil(Number) - Number)*1000)/1000 --more the decimal, long wait
return (Number - math.floor(Number) - 0.13) + 0.5 --more the decimal, less wait, wtf is this mathematic, 0.7 is random error of Timer <= 1
end
function TotalSec(Minute,Second)
return (Minute*60) + math.ceil(Second)
end
function TowersCheckHandler(...)
local CurrentCount = StratXLibrary.CurrentCount
for i,v in next, {...} do
local Id = tonumber(v) or 0
local SkipTowerCheck
if not (TowersContained[Id] and typeof(TowersContained[Id].Instance) == "Instance") then
task.delay(45,function() --game has wave 0 now so increase it to make it works
SkipTowerCheck = true
end)
if CurrentCount == StratXLibrary.RestartCount and not TowersContained[Id] then
ConsoleWarn(`Tower Index: {Id} Hasn't Created Yet`)
repeat task.wait() until (CurrentCount == StratXLibrary.RestartCount and TowersContained[Id]) or SkipTowerCheck
end
if (CurrentCount == StratXLibrary.RestartCount and TowersContained[Id].Placed == false) and not SkipTowerCheck then
ConsoleWarn(`Tower Index: {Id}, Type: \"{TowersContained[Id].TowerName}\" Hasn't Been Placed Yet. Waiting It To Be Placed`)
repeat task.wait() until (CurrentCount == StratXLibrary.RestartCount and TowersContained[Id].Instance and TowersContained[Id].Placed) or SkipTowerCheck
end
if not (CurrentCount == StratXLibrary.RestartCount) then
return false
end
if SkipTowerCheck then
ConsoleError(`Can't Find Tower Index "{Id}" Instance`)
ConsoleWarn(`Tower Index: {Id}, Table {TowersContained[Id]}, Instance: {TowersContained[Id] and TowersContained[Id].Instance or "Nil"}`)
return false
end
end
end
return true
end
function GetTypeIndex(string,Id)
if type(string) == "string" and #string > 0 then
return string
end
return TowersContained[Id].TypeIndex
end
function ConvertTimer(number : number)
return math.floor(number/60), number % 60
end
function TimeWaveWait(Wave,Min,Sec,InWave,Debug)
if Debug or GetGameInfo():GetAttribute("Wave") > Wave then
return true
end
local CurrentCount = StratXLibrary.CurrentCount
repeat
task.wait()
if CurrentCount ~= StratXLibrary.RestartCount then
return false
end
until tonumber(GetGameInfo():GetAttribute("Wave")) == Wave and CheckTimer(InWave) --CheckTimer will return true when in wave and false when not in wave
if ReplicatedStorage.State.Timer.Time.Value - TotalSec(Min,Sec) < -1 then
return true
end
local Timer = 0
repeat
task.wait()
if CurrentCount ~= StratXLibrary.RestartCount then
return false
end
Timer = ReplicatedStorage.State.Timer.Time.Value - TotalSec(Min,Sec) --math.abs(ReplicatedStorage.State.Timer.Time.Value - TotalSec(Min,Sec))
until Timer <= 1
--until (ReplicatedStorage.State.Timer.Time.Value + 1 == TotalSec(Min,Sec) or ReplicatedStorage.State.Timer.Time.Value == TotalSec(Min,Sec))
task.wait(TimePrecise(Sec))
--local ConvertMin, ConvertSec = ConvertTimer(ReplicatedStorage.State.Timer.Time.Value)
--prints(Wave,Min,Sec,InWave, ConvertMin, ConvertSec,Timer)
return true
end
function SetActionInfo(String,Type)
task.spawn(function()
local ActionInfoTable = StratXLibrary["ActionInfo"]
local Current = ActionInfoTable[String][1]
local Total = ActionInfoTable[String][2]
local Type = Type or "Current"
if Type == "Total" then
Total += 1
ActionInfoTable[String][2] = Total
else
Current += 1
ActionInfoTable[String][1] = Current
end
if Total == 1 then
if not UI.ActInfo then
repeat task.wait() until UI.ActInfo
end
if not ActionInfoTable[String][3] then
ActionInfoTable[String][3] = UI.ActInfo:Section(`{String} : 0 / 1`)
end
elseif Total > 1 and not ActionInfoTable[String][3] then
repeat task.wait() until ActionInfoTable[String][3]
end
ActionInfoTable[String][3].Text = `{String} : {Current}/{Total}`
end)
end
--Main Ui Setup
local maintab = UILibrary:CreateWindow("Strategies X")
local BypassGroup
local IsPlayerInGroup
if not UtilitiesConfig.BypassGroup then
prints("Checking Player Is In Paradoxum Group")
local Success
repeat
Success = pcall(function()
IsPlayerInGroup = LocalPlayer:IsInGroup(4914494)
end)
task.wait()
until Success ~= nil or UtilitiesConfig.BypassGroup
if not (UtilitiesConfig.BypassGroup or IsPlayerInGroup) then
if CheckPlace() then
maintab:Section("[WARN] Extra Money Not Actived")
maintab:Section("Strat May Broken Due To This")
else
maintab:Section("You Need To Join")
maintab:Section("Paradoxum Games Group")
local JoinButton = maintab:DropSection("Join The Group")
JoinButton:Button("Copy Link Group", function()
setclipboard("https://www.roblox.com/groups/4914494/Paradoxum-Games")
end)
JoinButton:Button("Continue To Use Script", function()
BypassGroup = true
end)
repeat
task.wait()
until BypassGroup or UtilitiesConfig.BypassGroup
end
end
else
prints("Bypassed Group Checking")
end
prints("Group Checking Completed")
maintab:Section(Version)
maintab:Section(`Current Place: {CheckPlace() and "Ingame" or "Lobby"}`)
UI.UtilitiesTab = UILibrary:CreateWindow("Utilities")
UtilitiesTab = UI.UtilitiesTab
--InGame Core
if CheckPlace() then
if #Players:GetChildren() > 1 and getgenv().Multiplayer["Enabled"] == false then
TeleportService:Teleport(3260590327, LocalPlayer)
end
--Disable Auto Skip Feature
local AutoSkipCheck
task.spawn(function()
local Success, Skip
task.delay(10,function()
if not Success then
ConsoleError(`Auto Skip [VIP] Check Errored`)
Skip = true
end
end)
repeat
task.wait(1)
Success = pcall(function()
AutoSkipCheck = (LocalPlayer.PlayerGui.RoactUniversal:WaitForChild("Settings"):WaitForChild("window"):WaitForChild("scrollingFrame"):WaitForChild("Unknown")["Auto Skip"].button.toggle[1][2].Text == "Enabled")
end)
until Success or Skip
if AutoSkipCheck then
RemoteFunction:InvokeServer("Settings","Update","Auto Skip",false)
end
end)
--Check if InWave or not
StratXLibrary.TimerConnection = ReplicatedStorage.StateReplicators.ChildAdded:Connect(function(object)
if object:GetAttribute("Duration") and object:GetAttribute("Duration") == 5 then
TimerCheck = true
elseif object:GetAttribute("Duration") and object:GetAttribute("Duration") > 5 then
TimerCheck = false
end
end)
if GetVoteState():GetAttribute("Title") == "Ready?" then --Hardcore/Event Solo
task.spawn(function()
repeat task.wait() until StratXLibrary.Executed
RemoteFunction:InvokeServer("Voting", "Skip")
end)
end
StratXLibrary.ReadyState = false
StratXLibrary.VoteState = GetVoteState():GetAttributeChangedSignal("Enabled"):Connect(function()
if GetVoteState():GetAttribute("Title") == "Ready?" then --Hardcore/Event GameMode
task.wait(1.5)
--[[if not UtilitiesConfig.RestartMatch then
repeat task.wait() until UtilitiesConfig.RestartMatch
end]]
RemoteFunction:InvokeServer("Voting", "Skip")
StratXLibrary.ReadyState = true
prints("Ready Signal Fired")
end
end)
task.spawn(function()
--repeat task.wait() until Workspace.Map:FindFirstChild("Environment"):FindFirstChild("SpawnLocation")
local Part = Instance.new("Part")
Part.Size = Vector3.new(10, 2, 10)
Part.CFrame = CFrame.new(0, 30, 0) --Workspace.Map.Environment:FindFirstChild("SpawnLocation").CFrame + Vector3.new(0, 30, 0)
Part.Anchored = true
Part.CanCollide = true
Part.Transparency = 1
Part.Parent = Workspace
Part.Name = "PlatformPart"
StratXLibrary.PlatformPart = Part
local OutlineBox = Instance.new("SelectionBox")
OutlineBox.Parent = Part
OutlineBox.Adornee = Part
OutlineBox.LineThickness = 0.05
repeat task.wait() until LocalPlayer.Character and LocalPlayer.Character:FindFirstChild("HumanoidRootPart") and LocalPlayer.Character:FindFirstChild("Humanoid")
LocalPlayer.Character.Humanoid.PlatformStand = true
LocalPlayer.Character.HumanoidRootPart.Anchored = true
LocalPlayer.Character.HumanoidRootPart.CFrame = Part.CFrame + Vector3.new(0, 3.5, 0)
end)
task.spawn(function()
loadstring(game:HttpGet(MainLink.."TDS/FreeCam.lua", true))()
local ModeSection = maintab:Section("Mode: Voting")
task.spawn(function()
repeat task.wait() until GetGameInfo():GetAttribute("Difficulty")
ModeSection.Text = `Mode: {GetGameInfo():GetAttribute("Difficulty")}`
end)
maintab:Section(`Map: {ReplicatedStorage.State.Map.Value}`)
maintab:Section("Tower Info:")
StratXLibrary.TowerInfo = {}
for i,v in next, RemoteFunction:InvokeServer("Session","Search","Inventory.Troops") do
if v.Equipped then
StratXLibrary.TowerInfo[i] = {maintab:Section(i.." : 0"), 0, i}
end
end
UI.ActInfo = maintab:DropSection("Actions Info")
if UtilitiesConfig.Camera == 1 then
LocalPlayer.Character.Humanoid.PlatformStand = false
LocalPlayer.Character.HumanoidRootPart.Anchored = false
CurrentCamera.CameraSubject = LocalPlayer.Character.Humanoid
CurrentCamera.CameraType = "Follow"
elseif UtilitiesConfig.Camera == 2 then
LocalPlayer.Character.Humanoid.PlatformStand = true
LocalPlayer.Character.HumanoidRootPart.Anchored = true
LocalPlayer.DevCameraOcclusionMode = "Invisicam"
CurrentCamera.CameraType = "Follow"
end
repeat task.wait() until Workspace:FindFirstChild("NPCs")
task.spawn(function()
local ViewCeck
while true do
for i,v in next, Workspace.NPCs:GetChildren() do
if v:FindFirstChild("HumanoidRootPart") and v:FindFirstChild("HumanoidRootPart").CFrame.Y > -5 then
if not v.RootPointer.Value.Parent then --Clean model that's no longer used by game
v:Destroy()
continue
end
if UtilitiesConfig.Camera == 2 and not ViewCeck then
ViewCeck = true
task.spawn(function()
repeat
CurrentCamera.CameraSubject = v:FindFirstChild("HumanoidRootPart")
task.wait()
until UtilitiesConfig.Camera ~= 2 or not (v:FindFirstChild("HumanoidRootPart") and v.RootPointer.Value.Parent)
ViewCeck = false
end)
end
end
--CurrentCamera.CameraSubject = LocalPlayer.Character:FindFirstChild("Humanoid")
end
task.wait(.8)
end
end)
--End Of Match
StratXLibrary.SignalEndMatch = GetGameInfo():GetAttributeChangedSignal("GameOver"):Connect(function()
prints("GameOver Changed")
task.wait(.5)
if not GetGameInfo():GetAttribute("GameOver") then --true/false like Value,but not check this Attribute exists
return
end
StratXLibrary.RestartCount += 1 --need to stop handler, timewavewait
task.wait(1)
if not type(GetGameInfo():GetAttribute("Won")) == "boolean" then
repeat task.wait() until type(GetGameInfo():GetAttribute("Won")) == "boolean"
task.wait(1.3)
end
if UtilitiesConfig.Webhook.Enabled then
task.spawn(function()
loadstring(game:HttpGet("https://pastebin.com/raw/YMzP8zX7", true))()
prints("Sent Webhook Log")
end)
end
if not (UtilitiesConfig.RestartMatch or StratXLibrary.RejoinLobby) then
repeat task.wait() until (UtilitiesConfig.RestartMatch or StratXLibrary.RejoinLobby)
end
--[[local PlayerInfo = StratXLibrary.UI.PlayerInfo
for i,v in next, PlayerInfo.Property do
PlayerInfo[i].Text = `{i}: {v.Value}`
]]
prints("GameOver Changed1")
if UtilitiesConfig.RestartMatch and GetGameInfo():GetAttribute("Won") == false then --StratXLibrary.RestartCount <= UtilitiesConfig.RestartTimes
prints(`Match Lose. Strat Will Restart Shortly`)
StratXLibrary.ReadyState = false
task.wait()
for i,v in ipairs(TowersContained) do
if v.TowerModel then
v.TowerModel:Destroy()
end
if v.ErrorModel then
v.ErrorModel:Destroy()
end
end
table.clear(TowersContained)
TowersContained.Index = 0
prints("TowersContained",#TowersContained)
for i,v in next, StratXLibrary["ActionInfo"] do
StratXLibrary["ActionInfo"][i][1] = 0
StratXLibrary["ActionInfo"][i][2] = 0
end
for i,v in next, StratXLibrary.TowerInfo do
v[2] = 0
end
task.wait(4.5)
prints("VoteCheck")
task.spawn(function()
local VoteCheck
repeat
VoteCheck = ReplicatedStorage.RemoteFunction:InvokeServer("Voting", "Skip")
task.wait()
until VoteCheck
prints("VoteCheck Passed")
end)
repeat task.wait() until StratXLibrary.ReadyState
prints("Prepare Set All ListNum To 1")
StratXLibrary.CurrentCount = StratXLibrary.RestartCount
for i,v in next, StratXLibrary.Strat[StratXLibrary.Strat.ChosenID] do
if type(v) == "table" and v.ListNum and type(v.ListNum) == "number" then
v.ListNum = 1
end
end
prints("Set All ListNum To 1")
task.wait(5)
StratXLibrary.ReadyState = false
--[[StratXLibrary.CurrentCount = StratXLibrary.RestartCount
for i,v in next, StratXLibrary.Strat[StratXLibrary.Strat.ChosenID] do
if type(v) == "table" and v.ListNum and type(v.ListNum) == "number" then
task.delay(3, function()
v.ListNum = 1
end)
end
end]]
--prints("RestartCount",StratXLibrary.RestartCount)
else
prints(`Match {if GetGameInfo():GetAttribute("Won") then "Won" else "Lose"}`)
if AutoSkipCheck then
RemoteFunction:InvokeServer("Settings","Update","Auto Skip",true)
end
task.wait(.5)
if type(FeatureConfig) == "table" and FeatureConfig["JoinLessFeature"].Enabled then
return
end
prints("Rejoining To Lobby")
TeleportHandler(3260590327,2,7)
--TeleportService:Teleport(3260590327)
--StratXLibrary.SignalEndMatch:Disconnect()
end
end)
end)
prints("Loaded InGame Core")
end
--UI Setup
--getgenv().PlayersSection = {}
if not CheckPlace() then
RemoteFunction:InvokeServer("Login", "Claim")
RemoteFunction:InvokeServer("Session", "Search", "Login")
UI.EquipStatus = maintab:DropSection("Troops Loadout Status")
UI.TowersStatus = {
[1] = UI.EquipStatus:Section("Empty"),
[2] = UI.EquipStatus:Section("Empty"),
[3] = UI.EquipStatus:Section("Empty"),
[4] = UI.EquipStatus:Section("Empty"),
[5] = UI.EquipStatus:Section("Empty"),
}
maintab:Section("Elevator Status:")
UI.JoiningStatus = maintab:Section("Trying Elevator: 0")
UI.TimerLeft = maintab:Section("Time Left: NaN")
UI.MapFind = maintab:Section("Map: ")
UI.CurrentPlayer = maintab:Section("Player Joined: 0")
--[[task.spawn(function()
repeat task.wait(.3)
until getgenv().StratCreditsAuthor ~= nil
local multitab = UtilitiesTab:DropSection("Multiplayer: Off")
if getgenv().Mulitplayer.Enabled then
multitab:SetText("Multiplayer: On")
multitab:Section("Host:"..Players:GetNameFromUserIdAsync(getgenv().Mulitplayer.Host))
for i =1, getgenv().Mulitplayer.Players do
getgenv().PlayersSection[v] = multitab:Section("")
end
end
end)]]
end
if CheckPlace() then
UtilitiesTab:Section("Game Settings")
UtilitiesTab:Toggle("Rejoin Lobby After Match",{default = true, location = StratXLibrary, flag = "RejoinLobby"})
UtilitiesTab:Toggle("Show Towers Preview", {flag = "TowersPreview", default = UtilitiesConfig.TowersPreview}, function(bool)
local TowersFolder = if bool then Workspace.PreviewFolder else ReplicatedStorage.PreviewHolder
local ErrorsFolder = if bool then Workspace.PrewviewErrorFolder else ReplicatedStorage.PreviewHolder
for i,v in ipairs(TowersContained) do
if v.DebugTag then
v.DebugTag.Enabled = bool
end
if v.Placed then
continue
end
if v.ErrorModel then
v.ErrorModel.Parent = ErrorsFolder
elseif v.TowerModel then
v.TowerModel.Parent = TowersFolder
end
end
end)
UtilitiesTab:Button("Teleport Back To Platform",function()
LocalPlayer.Character:FindFirstChild("HumanoidRootPart").CFrame = StratXLibrary.PlatformPart.CFrame + Vector3.new(0, 3.3, 0)
end)
if Items.Enabled then
UtilitiesTab:Toggle("Auto Pick Items[EVENT]",{default = UtilitiesConfig.AutoPickups or false, flag = "AutoPickups"})
end
local CamSetting = UtilitiesTab:DropSection("Camera Settings")
CamSetting:Button("Normal Camera",function()
getgenv().DefaultCam = 1
SaveUtilitiesConfig()
LocalPlayer.Character.Humanoid.PlatformStand = false
LocalPlayer.Character.HumanoidRootPart.Anchored = false
CurrentCamera.CameraSubject = LocalPlayer.Character.Humanoid
CurrentCamera.CameraType = "Follow"
LocalPlayer.DevCameraOcclusionMode = OldCameraOcclusionMode
end)
CamSetting:Button("Follow Enemies",function()
getgenv().DefaultCam = 2
SaveUtilitiesConfig()
LocalPlayer.Character.Humanoid.PlatformStand = true
LocalPlayer.Character.HumanoidRootPart.Anchored = true
LocalPlayer.DevCameraOcclusionMode = "Invisicam"
CurrentCamera.CameraType = "Follow"
end)
CamSetting:Button("Free Camera",function()
getgenv().DefaultCam = 3
SaveUtilitiesConfig()
LocalPlayer.Character.HumanoidRootPart.Anchored = true
LocalPlayer.Character.Humanoid.PlatformStand = true
CurrentCamera.CameraType = Enum.CameraType.Scriptable
LocalPlayer.DevCameraOcclusionMode = OldCameraOcclusionMode
end)
if Items.Enabled then
task.spawn(function()
local Pickups = Workspace.Pickups
while true do
for Index, Object in next, Pickups:GetChildren() do
if UtilitiesConfig.AutoPickups and Object:IsA("MeshPart") and string.find(Object.Name:lower(),Items.Name:lower()) and Object.CFrame.Y < 200 then
if not LocalPlayer.Character:FindFirstChild("HumanoidRootPart") then
repeat task.wait() until LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
end
repeat
game:GetService("TweenService"):Create(LocalPlayer.Character:FindFirstChild("HumanoidRootPart"), TweenInfo.new(.5, Enum.EasingStyle.Linear), {CFrame = Object.CFrame}):Play()
task.wait(.5)
until Object.CFrame.Y >= 200 or not LocalPlayer.Character:FindFirstChild("HumanoidRootPart")
end
end
if getgenv().DefaultCam ~= 1 then
game:GetService("TweenService"):Create(LocalPlayer.Character:FindFirstChild("HumanoidRootPart"), TweenInfo.new(0, Enum.EasingStyle.Linear), {CFrame = StratXLibrary.PlatformPart.CFrame + Vector3.new(0, 3.3, 0)}):Play()
task.wait(.1)
end
task.wait()
end
end)
end
end
UI.WebSetting = UtilitiesTab:DropSection("Webhook Settings")
local WebSetting = UI.WebSetting
WebSetting:Toggle("Enabled",{default = UtilitiesConfig.Webhook.Enabled or false, flag = "Enabled"})
WebSetting:Toggle("Apply New Format",{default = UtilitiesConfig.Webhook.UseNewFormat or false, flag = "UseNewFormat"})
WebSetting:Section("Webhook Link: ")
WebSetting:TypeBox("Webhook Link",{default = UtilitiesConfig.Webhook.Link, cleartext = false, flag = "Link"})
if getgenv().FeatureConfig and getgenv().FeatureConfig.CustomLog then
WebSetting:Toggle("Disable SL's Custom Log",{default = UtilitiesConfig.Webhook.DisableCustomLog or false, flag = "DisableCustomLog"})
end
WebSetting:Toggle("Hide Username",{default = UtilitiesConfig.Webhook.HideUser or false, flag = "HideUser"})
WebSetting:Toggle("Player Info",{default = UtilitiesConfig.Webhook.PlayerInfo or false, flag = "PlayerInfo"})
WebSetting:Toggle("Game Info",{default = UtilitiesConfig.Webhook.GameInfo or false, flag = "GameInfo"})
WebSetting:Toggle("Troops Info",{default = UtilitiesConfig.Webhook.TroopsInfo or false, flag = "TroopsInfo"})
UtilitiesTab:Section("Universal Settings")
UtilitiesTab:Toggle("Low Graphics Mode",{default = UtilitiesConfig.LowGraphics or false ,flag = "LowGraphics"}, function(bool)
StratXLibrary.LowGraphics(bool)
end)
UtilitiesTab:Toggle("Bypass Group Checking",{default = UtilitiesConfig.BypassGroup or false, flag = "BypassGroup"})
UtilitiesTab:Toggle("Auto Buy Missing Tower",{default = UtilitiesConfig.AutoBuyMissing or false, flag = "AutoBuyMissing"})
UtilitiesTab:Toggle("Auto Restart When Lose", {flag = "RestartMatch", default = UtilitiesConfig.RestartMatch})
UtilitiesTab:Button("Rejoin To Lobby",function()
task.wait()
TeleportHandler(3260590327,2,7)
--TeleportService:Teleport(3260590327)
end)
UI.PlayerInfo = {}
UI.PlayerInfo.UI = maintab:DropSection("Player Info")
local PlayerInfoUI = UI.PlayerInfo.UI
task.spawn(function()
UI.PlayerInfo.Level = PlayerInfoUI:Section(`Level: {LocalPlayer:WaitForChild("Level").Value}`)
UI.PlayerInfo.Coins = PlayerInfoUI:Section(`Coins: {LocalPlayer:WaitForChild("Coins").Value}`)
UI.PlayerInfo.Gems = PlayerInfoUI:Section(`Gems: {LocalPlayer:WaitForChild("Gems").Value}`)
UI.PlayerInfo.Triumphs = PlayerInfoUI:Section(`Wins: {LocalPlayer:WaitForChild("Triumphs").Value}`)
UI.PlayerInfo.Loses = PlayerInfoUI:Section(`Loses: {LocalPlayer:WaitForChild("Loses").Value}`)
UI.PlayerInfo.Property = {
["Level"] = LocalPlayer.Level,
["Coins"] = LocalPlayer.Coins,
["Gems"] = LocalPlayer.Gems,
["Triumphs"] = LocalPlayer.Triumphs,
["Loses"] = LocalPlayer.Loses,
}
end)
--[[for i,v in next, UI.PlayerInfo.Property do
UI.PlayerInfo[i] = PlayerInfoUI:Section(`{i}: {v.Value}`)
end]]
task.spawn(function()
repeat task.wait(.3)
until getgenv().StratCreditsAuthor ~= nil
local multitab = UtilitiesTab:DropSection("Multiplayer: Off")
if getgenv().Mulitplayer.Enabled then
multitab:SetText("Multiplayer: On")
multitab:Section("Host:"..Players:GetNameFromUserIdAsync(getgenv().Mulitplayer.Host))
for i =1, getgenv().Mulitplayer.Players do
getgenv().PlayersSection[v] = multitab:Section("")
end
end
if (type(getgenv().StratCreditsAuthor) == "string" and #getgenv().StratCreditsAuthor > 0) or type(getgenv().StratCreditsAuthor) == "number" then
UtilitiesTab:Section("==Strat Creators==")
UtilitiesTab:Section(tostring(getgenv().StratCreditsAuthor))
elseif type(getgenv().StratCreditsAuthor) == "table" then
for i,v in next, getgenv().StratCreditsAuthor do
if (type(v) == "string" and #v > 0) or type(v) == "number" then
UtilitiesTab:Section(tostring(v))
end
end
end
end)
prints("Loaded GUI")
Functions.Map = loadstring(game:HttpGet(MainLink.."TDS/Functions/Map.lua", true))()
Functions.Loadout = loadstring(game:HttpGet(MainLink.."TDS/Functions/Loadout.lua", true))()
Functions.Mode = loadstring(game:HttpGet(MainLink.."TDS/Functions/Mode.lua", true))()
Functions.Place = loadstring(game:HttpGet(MainLink.."TDS/Functions/Place.lua", true))()
Functions.Upgrade = loadstring(game:HttpGet(MainLink.."TDS/Functions/Upgrade.lua", true))()
Functions.Sell = loadstring(game:HttpGet(MainLink.."TDS/Functions/Sell.lua", true))()
Functions.Skip = loadstring(game:HttpGet(MainLink.."TDS/Functions/Skip.lua", true))()
Functions.Ability = loadstring(game:HttpGet(MainLink.."TDS/Functions/Ability.lua", true))()
Functions.Target = loadstring(game:HttpGet(MainLink.."TDS/Functions/Target.lua", true))()
Functions.AutoChain = loadstring(game:HttpGet(MainLink.."TDS/Functions/AutoChain.lua", true))()
Functions.SellAllFarms = loadstring(game:HttpGet(MainLink.."TDS/Functions/SellAllFarms.lua", true))()
Functions.Option = loadstring(game:HttpGet(MainLink.."TDS/Functions/Option.lua", true))()
Functions.MatchMaking = function()
local MapProps,Index
local SpecialMap = {
"Pizza Party",
"Badlands II",
"Polluted Wastelands II",
"Huevous Hunt",
}
if table.find(SpecialMap,ReplicatedStorage.State.Map.Value) then
return
end
repeat
task.wait()
for i,v in ipairs(StratXLibrary.Strat) do
if v.Map.Lists[#v.Map.Lists] and v.Map.Lists[#v.Map.Lists].Mode == "Survival" and not MapProps then-- string.find(i:lower(),"survival")
MapProps = v.Map.Lists[#v.Map.Lists]
Index = i
end
end
until MapProps
RemoteFunction:InvokeServer("LobbyVoting", "Override", MapProps.Map)
RemoteEvent:FireServer("LobbyVoting", "Vote", MapProps.Map, LocalPlayer.Character.HumanoidRootPart.Position)
RemoteEvent:FireServer("LobbyVoting","Ready")
task.wait(6)
ConsoleInfo(`Map Selected: {ReplicatedStorage.State.Map.Value}, Mode: {MapProps.Mode}, Solo Only: {MapProps.Solo}`)
StratXLibrary.Strat.ChosenID = Index
end
prints("Loaded Functions")
local GetConnects = getconnections or get_signal_cons
if GetConnects then
for i,v in next, GetConnects(LocalPlayer.Idled) do
if v["Disable"] then
v["Disable"](v)
elseif v["Disconnect"] then
v["Disconnect"](v)
end
end
end
LocalPlayer.Idled:Connect(function()
game:GetService("VirtualUser"):ClickButton2(Vector2.new())
end)
game:GetService("CoreGui").RobloxPromptGui.promptOverlay.ChildAdded:Connect(function(object)
if object.Name == "ErrorPrompt" and object:FindFirstChild("MessageArea") and object.MessageArea:FindFirstChild("ErrorFrame") then
TeleportService:Teleport(3260590327, LocalPlayer)
end
end)
task.spawn(function()
while true do
SaveUtilitiesConfig()
task.wait(.7)
end
end)
StratXLibrary.Strat = {}
StratXLibrary.Global = {Map = {}}
StratXLibrary.__index = StratXLibrary
getgenv().Strat = {Lib = StratXLibrary}
Strat.__index = Strat;
function Strat.new()
local t = setmetatable({}, Strat)
for Funcname, Functable in next, StratXLibrary.Functions do
t[Funcname] = {
Name = Funcname,
--InQueue = {},
--Loaded = {},
Lists = {}
}
setmetatable(t[Funcname], {
__call = function(self,...) --self is Functions, ...[1] is parent of self
local tableinfo = (select(1,...) == t) and (select(2,...) == StratXLibrary and {select(3,...)} or {select(2,...)}) or {...}
table.insert(t[Funcname].Lists, ParametersPatch(Funcname,unpack(tableinfo)))
t.Active = true
--print(t[Funcname].Lists,#t[Funcname].Lists)
end
})
end
table.insert(StratXLibrary.Strat, t)
t.Index = #StratXLibrary.Strat
return t
end
prints("Loaded Proxy Strat")
task.spawn(function()
local StratsListNum = 1
prints("Loading Strat Data")
while not CheckPlace() do
task.wait()
if not StratXLibrary.Strat[StratsListNum] then
continue
end
local Strat = StratXLibrary.Strat[StratsListNum]
for i,v in next, Functions do
task.spawn(function()
if not Strat[i] then
repeat task.wait() until Strat[i]
end
local ListNum = 1
while true do
if ListNum > #Strat[i].Lists then
repeat task.wait() until ListNum <= #Strat[i].Lists
end
if not Strat[i].Lists[ListNum] then
ListNum += 1
continue
end
Functions[i](Strat,Strat[i].Lists[ListNum])
ListNum += 1
task.wait()
end
end)
end
StratsListNum += 1
end
if Matchmaking then
prints("MatchMaking Enabled")
Functions.MatchMaking()
end
--print("ID1",StratXLibrary.Strat.ChosenID)
if not StratXLibrary.Strat.ChosenID then
prints("Strat ID Not Set. Now Checking")
repeat
task.wait()
for i,v in ipairs(StratXLibrary.Strat) do
if v.Map.Lists[#v.Map.Lists] and v.Map.Lists[#v.Map.Lists].Map == ReplicatedStorage.State.Map.Value and not StratXLibrary.Strat.ChosenID then -- not apply same map dfferent mode
StratXLibrary.Strat.ChosenID = i
end
end
until StratXLibrary.Strat.ChosenID
end
prints("Selected Strat ID",StratXLibrary.Strat.ChosenID)
StratXLibrary.Executed = true
local Strat = StratXLibrary.Strat[StratXLibrary.Strat.ChosenID]
for i,v in next, Functions do
task.spawn(function()
if not Strat[i] then
repeat task.wait() until Strat[i]
end
Strat[i].ListNum = 1
while true do
if Strat[i].ListNum > #Strat[i].Lists then
repeat task.wait() until Strat[i].ListNum <= #Strat[i].Lists
end
if not Strat[i].Lists[Strat[i].ListNum] then
Strat[i].ListNum += 1
continue
end
Functions[i](Strat,Strat[i].Lists[Strat[i].ListNum])
Strat[i].ListNum += 1
task.wait()
end
end)
end
end)
prints(`Loaded Library. Took: {math.floor((os.clock() - OldTime)*1000)/1000}s`)
return Strat.new()