Skip to content

Intro: SquadJS

SquadJS is a program that runs in the background of Squad and is linked to our Discord. It reads through and monitors Squad’s game logs, using these logs to automatically perform actions (seeding messages, server name and auto afk kick), create easy to read chat logs on discord that include TKs and admin broadcast(BM doesn’t track either), send !admin pings to a special discord channel, gives live server status updates, and allows ingame administration using the ChatToAdmin chat with specific commands.

SquadJS Interactions

The syntax to send commands through admin chat is: ![command] [playername] [reason]

The [reason] must be more than one word unless you send a shortcut.

!warn playername unlock will warn a player to unlock their squad with the “unlock” shortcut

!warn playername stop will return an error message, because there is no “stop” shortcut

!warn playername Stop locking your RWS squad, you must unlock will successfully warn a player with the written message

Remove spaces in a playername to warn players with spaces. For a player named “Bravo Delta”, the interaction would be: [command] BravoDelta [reason]. To kick “Bravo Delta” using a solo (solo’ing vehicle) shortcut, use !kick BravoDelta solo.

SquadJS will attempt to match incomplete player names. This means you may not have to type a full player name. If we want to warn player Randy Newman with an SLkit shortcut, we can use !warn randy SLkit. If SquadJS returns an error message, because there is another player named Randy Fuming, we can get more specific and use !warn RandyNew SLkit

SquadJS Commands (all players)

Command Description
!help Self warns the player with the commands they can use, depending on which chat they issue the command in. Different options for admin chat
!discord Self warns the player TT discord information
!whitelist Self warns the player TT whitelist information
!admin Send an admin ping in-game and to our #admin-ping Discord channel
!reset Lets a player teamswitch themselves twice, essentially a glorified suicide. Fixes “running man” bug
!shownext Self warns the player information about the next map, and which faction they will play

Console (~) admin commands

Command Description Example
AdminRenameSquad Reset a custom squad name to a default (Squad 5, Squad 9, etc) AdminRenameSquad 1 4
AdminTeleportToPlayer While in admin camera (Shift+P) teleport to a player. Server will try to guess incomplete names AdminTeleportToPlayer Bob

Admin Commands (sent through admin chat)

Command Description
!kill playername reason Automatically teamswitches a player twice so that they return on their original team, but dead and not in a squad. Used if players are glitched and can’t use the respawn console command or as a light punishment when dealing with seeding issues. Reason is not required
!kick playername reason Kicks player from server, reason required. No timeout, players can rejoin instantly
!yeet playername reason Kicks player from server, reason required. Natural 5 minute re-join cooldown. Reason REQUIRED
!timeout playername reason Kicks and bans a player from the server for 1 hour. When used this command prevents the player from accruing points on SCBL. A “timeout” for more minor infractions.
!unyeet Wipes the !timeout/!yeet command ban list
!randomize (Use !randomizenext below) Randomizes the teams. Best use for this is after a map change, when people load into the server, but before too many squads are created. If you execute this mid-game, on average half the server will immediately die on the teamswap
!randomizenext Updated version of !randomize. This command will automatically shuffle the teams after the map switch.
!vote option1 option2 [[option3] ...] Initiates a 3 minute server wide vote. Used for map votes. Remember to set the next map in BattleMetrics after the vote is completed. Example(s):
!vote belaya kamdesh kohat
!vote urban desert forest
!endvote Prematurely ends a vote in progress. End a vote early if you are cutting it close with the 3 minute map vote and the game’s end approaches
!runoff Starts a runoff vote in the event of a tie in the vote. Works for both regular/standard votes(using !vote) and mappool votes(started by !rtv).
!fog [1/0] This will reveal the flag sequence of a RAAS layer on the map for all players. Essentially turns a RAAS game into an AAS layer, but with different patterns. Announce fog off round before with admin consensus
!broadcast, !broad, !b Message Sends a broadcast with whatever custom message is written
!disband [#] Disbands the targeted squad of the executor’s team
!enemydisband [#] Disbands the targeted squad of the executor’s opposing team
!shownext Shows the next map, factions and subfactions. Note: This is no longer an admin exclusive command
!w, !warn playername message Send a written message to a player. This can be a shortcut listed below, or a custom sentence:
!w drewpro SLkit
!warn drewpro Please grab an SL kit your next spawn
!maps Shows the last 6 maps, factions and end times. Retrieves match history from the squadjs database. Repeats 3 times
!tickets Displays detailed information about the past 6 games, including layer, factions and ticket differential. Repeats 3 times
!switchnext playername This command will automatically switch a player to the other team at the beginning of the next map
!switchnow playername Switches a player instantly from one team to another
!autofog !autofog toggle will turn off the fog on RAAS automagically. !autofog status will show you the current setting (should be off by default) !autofog save will save the status to JS. This is used to ensure the setting stays through SquadJS crashes, but will require it be turned off
!rotation !rotation toggle will turn on the server map rotation for Fogless Friday. !rotation status will show the current status. !rotation save will save the current status to JS and works the same as autofog. Saving it will require the setting be turned off to return to normal play

[Reason] Shortcuts

Instead of typing a reason/message in your !warn, !kick or !kill, you can type any of these shorthands. It will only work as a solo word, not in combo with anything.

Shortcut Message
tk teamkilling. Please review our rules on discord.io/trig
abandon creating and abandoning a squad. Please review our rules on discord.io/trig
unlock one man locked squad. Unlock your one man locked squad or join another squad. We don't allow one man locked squads unless for helo, logi or cmd
solo soloing. Return to main NOW, you are soloing a 2 man crewman vehicle, this is against server rules, ...
slkit not having an SL kit. Please pickup an Inf SL kit ASAP. Infantry squads must be actively led by inf SLs, not SLs in vehicles
base base camping. Back off the enemy main base, you are too close and !w camping their main
spam spamming. Please stop spamming chat or voice immediately. We focus on mature gameplay on this server, join our discord for out of game conversations
teamwork lack of teamwork. Please communicate and coordinate with your teammates and fellow SLs. Teamwork is required on this server and will be enforced if necessary
appeal raising admin issues in-game. Please bring all appeals and issues with admin action to discord and keep it out of in-game chat. We will gladly deal with it there and welcome constructive mature feedback
comms lack of comms. All players must be able and willing to communicate in some way(voice or text). SLs must be responsive and communicate in SL channel
advertise advertising. We do not allow advertising websites, streams or recruiting on our server. Please keep this off our server. Thank you
mess messing around. Stop messing around and help your team. This is a mature teamwork server
waste wasting assets. Please be more careful with your vehicles and make sure you are helping the team and not wasting assets
pilotsl SLing as a pilot. Pilot led squads can not contain more than 3 total squad members
hab attacking the enemy HAB or main when seeding. Keep the fight to the dictated flag and not pushing enemy spawns
ramming intentional helicopter ramming. This is prohibited on the TT server
troll your behavior is detracting from the quality of the game. Tone it down or you will be removed
trolling your behavior is detracting from the quality of the game. Tone it down or you will be removed
crewsl The majority of your squad is infantry. You cannot lead as a crewman in a vic. Pass Gunner/driver to another and get an infantry SL
baiting creating and abandoning a squad. Please review our rules on discord.io/trig
sexism excessive sexism. Sexism is not allowed on the serverthank
homophobia excessively homophobic remarks. That level of language is not allowed on the server
toxic toxicity, take a step back and calm down. Please review our rules on discord.io/trig
toxicity toxicity, take a step back and calm down. Please review our rules on discord.io/trig
newsl losing your SL. Please figure out who would like to lead the squad. Don't pass it randomly
hacking/cheating Cheating. Player has been removed for using third party assistance

Pre-made broadcasts (typed into admin chat)

Shortcut Message
!slkit Squads containing a majority of infantry roles must be led by an infantry SL kit
!music Please do not spam music in comms - this is considered mic spamming and can result in admin action against you
!spam Please do not spam in comms - this can result in admin action against you
!seeding Displays a pre-formatted seeding message broadcast
!live Displays a pre-formatted live message broadcast
!discord Broadcast the TT discord information to the server
!whitelist Broadcast the TT whitelist information to the server
!allchat Displays a pre-formatted message telling all chat to stop
!advertise We do not allow advertising websites, streams or recruiting on our server. Please keep this off our server. Thank you
!appeal Please bring all arguments, appeals and issues with admin action to discord and keep it out of in-game chat. We will gladly deal with it there and welcome constructive mature feedback. discord.io/trig
!teamwork Communicate and coordinate with your teammates and fellow SLs. Teamwork is required on this server and will be enforced if necessary
!balance We will be balancing the teams at the beginning of the next round to fix balance issues. We take server balance seriously at TT
!comms All players must be able and willing to communicate in some way(voice or text). SLs must be responsive and communicate in the SL channel
!solo Do not solo vehicles that require a crewman kit. Never leave main without a gunner. If you find yourself soloing, return to the main base
!ramming Intentionally ramming enemy helicopters is prohibited
!teamkilling Apologize for ALL TK's in ALL CHAT or action will be taken
!report Please report any troublemaker or rule breaker with !admin Their name and details of what’s happening. This will allow the admins to deal with them
!feedback Please post constructive feedback and concerns about the TT server and any issues you have had @ discord.gg/TACTRIG
!baiting Creating a squad to pass SL off to someone else is against the rules. This is considered squad baiting/seeding and can result in removal
!language Do not use bigoted language on this server. More info @ discord.gg/TACTRIG
!sl SLs must actively lead their squads and work with the team. They should primarily have a SL kit and actively communicate. Squads without proper SLs may be disbanded

Custom Map Vote Plugin

OWI’s voting allows blueberries to choose wildly unbalanced matchups, degrading players’ experiences. To combat this, TT implemented an overhauled voting system that uses javascript commands. Here’s how it works and how to use it.

What’s under the hood

Each sub-faction is assigned a “strength score” based on its characteristics e.g., number of heavily armored vehicles. Similarly-scored (and theoretically balanced) sub-factions are matched with each other and listed in a spreadsheet, here.

TT admins can use a series of javascript commands to pull a list of three balanced match ups from the spreadsheet, creating a pool of layer options, and then command the server to run a vote on this pool, and set the winner as the next layer.

How to run a vote

No one likes repetition: start with the command !maps to review what layers have been played recently.Then, generate a pool of voting options with !genpool.

To see what the current pool is, run !pool. Not happy with the options? Use !genpool again, or use !reroll if you want to run the same parameters that was run last. This command will preserve the filters you had previously added to !genpool (more on that below)

!rockthevote will open the polls: the server will run a vote using the pool’s layers and then automatically set the winner.

How to use filters

Admins can add filters to the !genpool command to customize the layer pool.

Filter Text Effect
small, medium, large Select layers on maps of a certain size
symm, sym, symmetrical Only allow mirror matches (e.g. TLF Light Inf. vs USA Light Inf.) as options in the generated pool
aas, raas, invasion, insurgency, tc Define the game mode in the pool. Currently, only AAS and RAAS are supported
Any map name e.g. basra, fallujah, gorodok Select the maps that should be in the pool. These can be strung together to define the voting options e.g. !genpool basra fallujah gorodok. Common abbreviations and misspellings may be accepted
new Filters layers with the newest released subfactions, provided they are updated in the config. These are WPMC - CombinedArms, LightInfantry and AirAssault as of patch 8.2

To use these filters, simply add additional text to the command, separated by spaces. For example:

Example command Effect
!genpool medium The pool’s maps will be a mixture of matchups and game modes, but only medium-sized maps will be added to this pool
!genpool medium gorodok This pool will consist of a Gorodok option and two medium options: map filters are prioritized by the plugin
!genpool gorodok fallujah basra The pool’s maps will consist of a Gorodok option, a Fallujah option, and an Al Basra option
!genpool gorodok fallujah basra aas The same as above, but every option in the pool will be AAS
!genpool gorodok fallujah basra aas sym The same as above, but with mirror matchups only (e.g. a light infantry sub-faction vs. another light infantry sub-faction.)

List of commands

Command Effect
!pool View the generated pool of layers
!genpool Generates a pool of maps using the TT approved map list
!reroll Regenerate the layer pool using the same filters used in the previous !genpool, saving you time
!reroll <1, 2, 3> Rerolls the map pool with the previous parameters, AND rerolls the option with given indexes. For example, !reroll 2 3 would run the pool generation with the previous commands and reroll the 2nd and 3rd pick in the pool
!rockthevote OR !rtv Run the vote using the generated pool
!setnext <1, 2, 3> Sets next map to whatever index indicated in the parameter (1, 2, or 3)
!runoff Starts a runoff vote in the event of a tie in the vote. Works for both regular/standard votes(using !vote) and mappool votes(started by !rtv)
!setwinner Sets the next map to the winner of the vote. Currently mostly redundant, since this is set to happen automatically, but is kept as a redundancy/fallback option should the automation of it be turned off in the future

Set a layer (without a vote)

Even if it’s the depths of gremlin hours, you can use this system to generate and set particular layers.

If it's too late in the round to run a map vote—or you are in gremlin hours—use the command !setpool <1, 2, or 3> to set the next layer from the generated map pool. Each number refers to the index of the generated map pool.

Server Admin Console Commands

Warning

KEEP USE OF THESE MINIMAL. ONLY USE THESE IF THE OTHER SERVICES GO DOWN OR DON’T WORK

See Gamepedia's Reference for Server Administration Commands