1. Obtain your premium key from the store.
2. Load the recorder script in your executor:
3. Configure global settings (_G) and use TDS methods to build your strategy.
4. For 24/7 auto-farm, place in autoexec folder with _G.AutoRejoin = true.
*executor/workspace/Space-Hub/Games/TDS V2/script.lua
put script.lua in *executor/autoexec or use just like script
| Variable | Type | Description |
|---|---|---|
| _G.AutoPickups | bool | Auto‑collect SnowCharms / Lorebooks |
| _G.AutoSkip | bool | Automatically vote to skip waves |
| _G.AutoChain | bool | Cycle Commander "Call Of Arms" |
| _G.AutoDJ | bool | Auto‑activate DJ Booth "Drop The Beat" |
| _G.AutoNecro | bool | Auto‑activate Necromancer "Raise The Dead" |
| _G.AutoMercenary | bool | Auto Air‑Drop from Mercenary Base (uses _G.MercenaryPath) |
| _G.AutoMilitary | bool | Auto Airstrike from Military Base (uses _G.MilitaryPath) |
| _G.AntiLag | bool | Remove effects/projectiles to reduce lag |
| _G.AutoRejoin | bool | 24/7 loop: auto‑rejoin after match + webhook logging |
| _G.SendWebhook | bool | Send match results to Discord |
| _G.Webhook | string | Discord webhook URL |
| Method | Parameters | Description |
|---|---|---|
| TDS:Place(name, x, y, z) | name, coordinates | Place tower, returns index (1‑based). |
| TDS:Upgrade(idx, path) | index, path (1/2, default 1) | Upgrade tower. |
| TDS:Sell(idx, reqWave) | index, optional wave requirement | Sell tower, removes from list. |
| TDS:SellAll(reqWave) | optional wave | Sell all placed towers. |
| TDS:SetTarget(idx, mode, reqWave) | "First","Strong","Last","Random" | Set targeting mode. |
| TDS:GetWave() | — | Returns current wave number. |
| TDS:VoteSkip(start, end) | start wave, optional end wave | Auto vote‑skip from wave start to end. |
| TDS:UnlockTimeScale() | — | Unlock timescale tickets. |
| TDS:TimeScale(val) | 0.5, 1, 1.5, 2 | Cycle to desired speed. |
| TDS:Ready() | — | Ready up during match intermission. |
TDS:SetOption(index, "OptionName", "Value", requiredWave)
| Tower | Option | Values |
|---|---|---|
| Mercenary Base | "Unit 1" / "Unit 2" / "Unit 3" | "Grenadier","Rifleman","Riot Guard","Field Medic" |
| Trapper | "Trap" | "Spike" or "Landmine" |
| DJ Booth | "Track" | "Green","Red","Purple" |
TDS:Ability(index, "AbilityName", dataTable, loop)
| Tower | Ability | Data format |
|---|---|---|
| Commander | "Call Of Arms" / "Support Caravan" | no data |
| DJ Booth | "Drop The Beat" | no data |
| Medic | "Ubercharge" | no data |
| Hacker | "Hologram Tower" | { towerToClone = index, towerPosition = Vector3 } |
| Pursuit | "Patrol" | { ["position"] = Vector3 } |
| Gatling Gun | "FPS" | { ["enabled"] = true } |
| Brawler | "Reposition" | { ["position"] = Vector3 } |
| Mercenary/Military | "Air‑Drop"/"Airstrike" | { pathName = 1, dist = number, directionCFrame = CFrame.new() } |
Place the main script into your executor’s Autoexec folder and set _G.AutoRejoin = true.
dist (Mercenary Base) and pointToEnd (Military Base) define where ability triggers on path.
🔍 How to find exact values: Use SimpleSpy / Hydroxide, manually use ability, locate RemoteFunction "Troops" with action "Abilities", check the 'Data' table for exact numbers.
| Method | Description |
|---|---|
| TDS:GetGameState() | Returns "LOBBY" or "GAME". |
| TDS:GetRewards() | Parses post‑game screen → table [Coins, Gems, XP, Wave, Time, Status, Others]. |
| TDS:RestartWithRejoin() | Resets and teleports back to game. |
| Method | Parameters | Description |
|---|---|---|
| TDS:Mode(difficulty) | string (e.g. "Frost","Hardcore","Pizza Party") | Select matchmaking mode. Maps "Hardcore"→hardcore, "Pizza Party"→halloween, "Polluted"→polluted etc. |
| TDS:Loadout(...) | list of tower names | Equip towers (unequips current). Returns success + results table. |
| TDS:GameInfo(map, modifiers) | map name (string), modifiers table | Vote for map and modifiers. If VIP, uses override. |
| TDS:StartGame() | — | Send "Ready" in lobby. |