User:Rain/Sandbox: Difference between revisions

From Pavlov VR Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 7: Line 7:


== RCON Commands ==
== RCON Commands ==


'''Hypothesis: PSVR and Shack players can not crossplay-connect to dedicated servers. Requires confirmation.'''
'''Hypothesis: PSVR and Shack players can not crossplay-connect to dedicated servers. Requires confirmation.'''


Placeholder:
'''Placeholder'''


Values in [square brackets] are placeholders and must be replaced, or will be replaced by the server in a reply.
Values in [square brackets] are placeholders and must be replaced, or will be replaced by the server in a reply.


[UniqueID] - Player ID (eg. SteamID (PCVR), ??? (Shack), ??? (PSVR))
[UniqueID] - Player ID (eg. SteamID (PCVR), ??? (Shack))


[GameMode] - See [Gamemodes]
[GameMode] - See [Gamemodes]


[TeamId] - 0 for blue, 1 for red, if there are teams
[TeamID] - 0 for blue, 1 for red, if there are teams


[VehicleId] - See [Vehicles]
[VehicleID] - See [Vehicles]


[MapName/ID] - See [Default maps] or find the Map ID on Mod.io (put example)
[MapName/ID] - See [Default maps] or find the Map ID on Mod.io (put example)


[SkinID] - See [Skins]
[SkinID] - See [Skins]
[RoleID] - See [TTT Roles]
[ItemID] - See [Items]


[True/False] - Either "True" to enable or "False" to disable
[True/False] - Either "True" to enable or "False" to disable


[ItemId] - See [Items]
[Amount] - A number indicating an amount of something


Format:
'''Format'''


All command replies are formatted as JSON and inherit this base format:
All command replies are formatted as JSON and inherit this base format:
Line 43: Line 46:
Additional command output is added to the above format. The Example Reply column below only contains this additional command output.
Additional command output is added to the above format. The Example Reply column below only contains this additional command output.


Often, commands will contain a field with their own name and a boolean value, EnableCompMode for example. This is redundant to field Successful and unknown why it exists.
Often, commands will contain a field with their own name and a boolean value. This is a very inconsistent value. For example in <code>SetMaxPlayers</code>, if the amount is set to the same as the current slot count, <code>Successful</code> will be <code>true</code> but <code>SetMaxPlayers</code> will be <code>false</code>. However for <code>SwitchTeam</code> for example, if a player is switched to the same team they are already in, <code>SwitchTeam</code> is true anyway.
{| class="wikitable"
{| class="wikitable"
|+
|+RCON Commands
!Command
!Command
!Parameters
!Parameters
Line 59: Line 62:
|
|
  "Help": [
  "Help": [
"AddMapRotation MapID GameMode",
  "AddMapRotation MapID GameMode",
...truncated...
  ...truncated...
  "UpdateServerName ServerName"
  ],
  ],
|-
|-
Line 66: Line 70:
|[MapName/ID]
|[MapName/ID]
[GameMode]
[GameMode]
|Adds the specified map with the specified game mode to the bottom of the server rotation.
|Adds the specified map with the specified game mode to the bottom of the map rotation.
Writes the map to <code>Game.ini</code>.
Writes the map to <code>Game.ini</code>.
|
|
Line 74: Line 78:
|AddMod
|AddMod
|[UniqueID]
|[UniqueID]
|Adds the specified user to the moderator list, making them an admin.
|Adds the specified player to the moderator list, making them an admin.
Allows them to use the admin menu in the pause menu and be immune to being vote-kicked.
Allows them to use the admin menu in the pause menu and be immune to being vote-kicked.
Writes the user to <code>mods.txt</code>.
 
Writes the player to <code>mods.txt</code>.
|
|
  AddMod 12345678901234567
  AddMod 12345678901234567
Line 85: Line 90:
|Ban
|Ban
|[UniqueID]
|[UniqueID]
|Kick and permanently ban the specified player from the server. They will not be able to join the server anymore.
|Kicks and permanently bans the specified player from the server. They will not be able to join the server anymore.
Writes the user to <code>blacklist.txt</code>.
Writes the player to <code>blacklist.txt</code>.
|
|
  Ban 12345678901234567
  Ban 12345678901234567
Line 95: Line 100:
|Banlist
|Banlist
|none
|none
|List the currently banned player UniqueIDs from <code>blacklist.txt</code>.
|Lists the currently banned player UniqueIDs from <code>blacklist.txt</code>.
|
|
  Banlist
  Banlist
|
|
  "BanList": [
  "BanList": [
"12345678901234567",
  "12345678901234567",
"12345678901234568",
  "12345678901234568",
"12345678901234569"
  ...truncated...
  "12345678901234569"
  ],
  ],
|-
|-
Line 109: Line 115:
|Closes the RCON connection.
|Closes the RCON connection.
This should always be used when done.
This should always be used when done.
'''TODO: This is probably not true and there is no disadvantage to just disconnecting. Needs clarification from dev.'''
'''TODO: This is probably not true and there is no disadvantage to just disconnecting. Needs clarification from dev.'''
|
|
Line 116: Line 123:
|EnableCompMode
|EnableCompMode
|[True/False]
|[True/False]
|Enable or disable competitive mode.
|Enables or disables competitive mode.
'''Comment''': Comp mode will be changed on map rotation, this updates the config value
'''Comment''': Comp mode will be changed on map rotation, this updates the config value
Writes to <code>bCompetitive</code> in <code>Game.ini</code>.
Writes to <code>bCompetitive</code> in <code>Game.ini</code>.
Line 127: Line 134:
|EnableVerboseLogging
|EnableVerboseLogging
|[True/False]
|[True/False]
|Enable or disable verbose logging.
|Enables or disables verbose logging.
Writes to <code>bVerboseLogging</code> in <code>Game.ini</code>.
Writes to <code>bVerboseLogging</code> in <code>Game.ini</code>.
|
|
Line 137: Line 144:
|EnableWhitelist
|EnableWhitelist
|[True/False]
|[True/False]
|Enable or disable whitelist usage.
|Enables or disables whitelist usage.
When enabled, only players who are listed in <code>whitelist.txt</code> can join the server.
When enabled, only players who are listed in <code>whitelist.txt</code> can join the server.
Writes to <code>bWhitelist</code> in <code>Game.ini</code>.
Writes to <code>bWhitelist</code> in <code>Game.ini</code>.
Line 148: Line 155:
|[UniqueID]
|[UniqueID]
[True/False]
[True/False]
|Gag or ungag the specified player.
|Gags or ungags the specified player.
When gagged, players can not use voice chat.
When gagged, players can not use voice chat.
|
|
Line 167: Line 174:
|Gives the specified amount of cash to the specified player.
|Gives the specified amount of cash to the specified player.
|
|
GiveCash 12345678901234567 200
|
|
"GiveCash": true,
"UniqueID": "12345678901234567",
|-
|-
|GiveItem
|GiveItem
|[UniqueID]
|[UniqueID]
[ItemID]
[ItemID]
|Equippes the specified item to the specified player to the corresponding item slot.
'''TODO: Test for dropping when slot is occupied. Primary weapons are put directly into players hands, old weapon is dropped if hands are full.'''
'''Utilities are put on the chest. Are new items dropped when chest is full?What about secondary?'''
|
|
GiveItem 12345678901234567 syringe
|
|
|
"GiveItem": true,
"UniqueID": "12345678901234567",
|-
|-
|GiveTeamCash
|GiveTeamCash
|[TeamID]
[CashAmount]
|Adds the specified amount of cash to each member of the specified team.
|
|
GiveTeamCash 0 200
|
|
|
"GiveTeamCash": true,
|
"TeamID": "0",
|-
|-
|InspectAll
|InspectAll
|none
|Returns a list of InspectPlayer blocks for all players on the server.
|
|
InspectAll
|
|
|
"InspectList": [
|
  {
    "PlayerName": "Username",
    "UniqueId": "12345678901234567",
    "KDA": "3/1/2",
    "Score": "50",
    "Dead": false,
    "Cash": "3450",
    "TeamId": "1",
    "Ping": 39.857143402099609,
    "Gag": false
  },
  ...truncated...
],
|-
|-
|InspectPlayer
|InspectPlayer
|[UniqueID]
|Returns a detailed status for the specified player.
The player must be listed in RefreshList.
|
|
InspectPlayer 12345678901234567
|
|
|
"PlayerInfo":
|
{
 
  "PlayerInfo":
{
  "PlayerName": "Username",
  "UniqueId": "12345678901234567",
  "KDA": "3/1/2",
  "Score": "50",
  "Dead": false,
  "Cash": "3450",
  "TeamId": "1",
  "Ping": 39.857143402099609,
  "Gag": false
},
|-
|-
|InspectTeam
|InspectTeam
|[TeamID]
|Returns a list of InspectPlayer blocks for all player on the specified team.
|
|
InspectTeam 1
|
|
|
"InspectList": [
|
  {
    "PlayerName": "Username",
    "UniqueId": "12345678901234567",
    "KDA": "3/1/2",
    "Score": "50",
    "Dead": false,
    "Cash": "3450",
    "TeamId": "1",
    "Ping": 39.857143402099609,
    "Gag": false
  },
  ...truncated...
],
|-
|-
|ItemList
|ItemList
|none
|Lists all items in the game and the current map.
Custom items built into the map will be listed.
|
|
ItemList
|
|
|
"ItemList": [
|
  "1911",
  "57",
  "acog",
  "adrenaline",
  ...truncated...
  "ww2knife",
  "ww2medkit",
  "ww2painkillers",
  "ww2syringe"
],
|-
|-
|Kick
|Kick
|[UniqueID]
|Kicks the specified player from the server.
|
|
Kick 12345678901234567
|
|
|
"UniqueID": "12345678901234567",
|
"Kick": true,
|-
|-
|Kill
|Kill
|[UniqueID]
|Kills the specified player.
|
|
Kill 12345678901234567
|
|
|
"UniqueID": "12345678901234567",
|
"Kill": true,
|-
|-
|MapList
|MapList
|none
|Returns the current map rotation from Game.ini.
'''TODO: test if it really returns from game.ini or if it returns from memory.'''
|
|
MapList
|
|
|
"MapList": [
|
  {
    "MapId": "UGC2863450",
    "GameMode": "SND"
  },
  ...truncated...
  {
    "MapId": "sand",
    "GameMode": "snd"
  }
],
|-
|-
|ModeratorList
|ModeratorList
|none
|Returns a list of UniqueIDs of all moderators from <code>mods.txt</code>.
|
|
ModeratorList
|
|
|
"ModeratorList": [
|
  "12345678901234567",
  ...truncated...
  "12345678901234568"
],
|-
|-
|RefreshList
|RefreshList
|none
|Returns a list of all connected player names and their corresponding UniqueIDs.
|
|
RefreshList
|
|
|
"PlayerList": [
|
  {
    "Username": "Username",
    "UniqueId": "12345678901234567"
  },
  ...truncated...
  {
    "Username": "Username2",
    "UniqueId": "12345678901234568"
  }
],
|-
|-
|RemoveMapRotation
|RemoveMapRotation
|[MapName/ID]
[GameMode]
|Removes the first occurrence of the specified map and game mode combination from the map rotation.
[MapName/ID] and [GameMode]  are case sensitive to the entries in <code>Game.ini</code> or <code>MapList</code> respectively.
Writes the change to <code>Game.ini</code>.
|
|
|
RemoveMapRotation sand snd
|
|
|
|-
|-
|RemoveMod
|RemoveMod
|[UniqueID]
|Removes the specified player from the moderator list.
Writes the change to <code>mods.txt</code>.
|
|
RemoveMod 12345678901234567
|
|
|
"RemoveMod": true,
|
"UniqueID": "12345678901234567",
|-
|-
|ResetSND
|ResetSND
|none
|Reset the currently running SND match.
All players will have starting cash, no kills, deaths, assists or score.
All players are killed.
The score is reset to 0 all.
|
|
ResetSND
|
|
|
"ResetSND": true,
|
|-
|-
|PauseMatch
|PauseMatch
|[Optional Amount]
|Pauses the currently running match for the specified amount of seconds.
The game is frozen and displays a "Game is paused" countdown timer.
The game is unpaused when amount is not specified or 0.
Unpausing starts a countdown timer at 15 seconds before unpausing.
Minimum: 0
Maximum: 3600
'''TODO: What does pausing do? Can you unpause using this command? (eg. PauseMatch 0 or just PauseMatch)'''
|
|
PauseMatch 60
|
|
|
"PauseTime": 60,
|
"PauseMatch": true,
|-
|-
|RotateMap
|RotateMap
|none
|Immediately changes the current map to the next map in the map rotation.
If the current map was changed to using <code>SwitchMap</code>, the next map will be the one after the previously switched map instead of the immediate map after the current one.
'''TODO: Test if this ends match or changes immediately.'''
|
|
RotateMap
|
|
|
"RotateMap": true,
|
|-
|-
|ServerInfo
|ServerInfo
|none
|Returns server information such as server name, player count, current map and mode, and more.
|
|
ServerInfo
|
|
|
"ServerInfo":
|
{
  "MapLabel": "datacenter",
  "GameMode": "snd",
  "ServerName": "Server name",
  "Teams": true,
  "Team0Score": "4",
  "Team1Score": "1",
  "Round": "6",
  "RoundState": "Started",
  "PlayerCount": "8/10"
},
|-
|-
|SetBalanceTableURL
|SetBalanceTableURL
|[GithubURL]
|Sets the balance table to load from the specified URL.
The URL has the format <code>user/repo/branch</code> and must contain a <code>BalancingTable.csv</code>. For example, the [https://github.com/vankruptgames/BalancingTable/blob/Beta_5.1/BalancingTable.csv official balancing table] has the URL <code>vankruptgames/BalancingTable/Beta_5.1</code>.
The balance table contains the values for the prices in the buy wheel, how much money is gained from which actions and how much damage is dealt by each weapon including damage falloff and more.
Writes to <code>BalanceTableURL</code> in <code>Game.ini</code>.
'''TODO: Test if full github urls (eg. https://...) work.'''
|
|
SetBalanceTableURL vankruptgames/BalancingTable/Beta_5.1
|
|
|
"GithubURL": "<nowiki>https://raw.githubusercontent.com/vankruptgames/BalancingTable/Beta_5.1</nowiki>",
|
"SetBalanceTableURL": true,
|-
|-
|SetCash
|SetCash
|[UniqueID]
[CashAmount]
|Sets the cash of the specified player to the specified amount.
Minimum: 0
Maximum: 16000
|
|
SetCash 12345678901234567 1000
|
|
|
"SetCash": true,
|
"UniqueID": "12345678901234567",
|-
|-
|SetLimitedAmmoType
|SetLimitedAmmoType
|[AmmoType]
|Sets the ammo limitation type.
0 for unlimited, 1 for limited generic, 2 for limited specific, 3 for custom, 4 for limited special, 5 for boxless.
See [Limited Ammo Type] for details.
Writes to <code>LimitedAmmoType</code> in <code>Game.ini</code>.
|
|
SetLimitedAmmoType 0
|
|
|
"SetLimitedAmmoType": true,
|
"LimitedAmmoType": "0",
|-
|-
|SetMaxPlayers
|SetMaxPlayers
|[Amount]
|Sets the amount of slots on the server to the specified amount.
Minimum: 1
Maximum: 50 (PCVR), 10 (Shack)
Writes to <code>MaxPlayers</code> in <code>Game.ini</code>.
|
|
SetMaxPlayers 10
|
|
|
"SetMaxPlayers": true,
|
"MaxPlayers": 10,
|-
|-
|SetPin
|SetPin
|[Optional PinNumber]
|Sets the server pin to the specified pin number.
Supplying a pin number locks the server so that player have to enter a pin to join.
Not supplying a pin number unlocks the server so that players do not have to enter a pin.
PinNumber can be any whole number between 1 and 9999 and may not contain leading zeroes such as <code>0001</code> which would get trimmed to <code>1</code>.
Setting the pin to <code>0</code> or <code>0000</code> does not remove the pin but sets it to <code>0</code>.
Writes to <code>Password</code> in <code>Game.ini</code>.
|
|
|
SetPin 69
|
|
|
|-
|-
|SetPlayerSkin
|SetPlayerSkin
|[UniqueID]
[SkinID]
|Sets the player skin of the specified player to the specified skin.
The skin is automatically removed if the player leaves the server or switches teams.
'''TODO: Test if there are other conditions where the skin is removed.'''
|
|
SetPlayerSkin 12345678901234567 kevin
|
|
|
"SetPlayerSkin": true,
|
"UniqueID": "12345678901234567",
|-
|-
|SetTimeLimit
|SetTimeLimit
|[Amount]
|Sets the time limit of the current match to the specified amount in seconds.
The match will end once the time limit has counted down to 0.
|
|
|
|'''TODO: Couldn't get to execute, always Succesful: false'''
|
|
|-
|-
|ShowNametags
|ShowNametags
|[True/False]
|Enables or disables name tags above friendly players.
|
|
ShowNametags true
|
|
|
"NametagsEnabled": true,
|
"ShowNametags": true,
|-
|-
|ShutdownServer
|ShutdownServer
|none
|Immediately shuts down the server.
|
|
|
ShutdownServer
|
|
|
|-
|-
|Slap
|Slap
|[UniqueID]
[Amount]
|Deals the specified amount of damage to the specified player. Can be lethal if the amount exceeds the current health of the player.
The damage is dealt directly to health and ignores armor.
|
|
Slap 12345678901234567
|
|
|
"UniqueID": "12345678901234567",
|
|-
|-
|SwitchMap
|SwitchMap
|[MapID]
[GameMode]
|Immediately switches to the specified map and game mode.
TDM is automatically selected if no game mode has been specified.
|
|
SwitchMap datacenter snd
|
|
|
"SwitchMap": true,
|
|-
|-
|SwitchTeam
|SwitchTeam
|[UniqueID]
[TeamID]
|Kills and moves the specified player into the specified team.
It will be as if the player has just joined (that team) or if they switched themselves, losing all money, kills, deaths, assists, score and gear.
|
|
SwitchTeam 12345678901234567 1
|
|
|
"SwitchTeam": true,
|
"UniqueID": "12345678901234567",
|-
|-
|Teleport
|Teleport
|[Source UniqueID]
[Target UniqueID]
|Teleports the specified source player to the position of the specified target player.
Only works when both the source player and the target player are alive.
|
|
Teleport 12345678901234567 12345678901234568
|
|
|
"MoveUniqueID": "12345678901234567",
|
"ToUniqueID": "12345678901234568",
"Teleport": true,
|-
|-
|TTTAlwaysEnableSkinMenu
|TTTAlwaysEnableSkinMenu
|
|[True/False]
|
|Trouble in Terrorist Town: Enables or disables the skin menu mid-round.
|
|
|
|
|-
|-
|TTTEndRound
|TTTEndRound
|
|[TeamID]
|
|Trouble in Terrorist Town: Ends the round.
|
|
|
|
|-
|-
|TTTFlushKarma
|TTTFlushKarma
|none
|Trouble in Terrorist Town: Resets the karma of the specified player.
'''TODO: According to <code>Help</code> this command does not take any parameters. Previous wiki entries specified [UniqueID] as parameter. Verify whether or not there's a parameter for this command. Send bug report to Dave.'''
|
|
|
|
|-
|TTTGiveCredits
|[UniqueID]
[Amount]
|Trouble in Terrorist Town: Adds the specified amount of credits to the specified player.
'''TODO: Are credits and cash two different things?'''
|
|
|
|
|-
|-
|TTTGiveCredits
|TTTPauseTimer
|[True/False]
|Trouble in Terrorist Town: Pauses the timer.
|
|
|
|
|-
|TTTSetKarma
|[UniqueID]
[Amount]
|Trouble in Terrorist Town: Sets the karma of the specified player to the specified amount.
|
|
|
|
|-
|-
|TTTPauseTimer
|TTTSetRole
|[UniqueID]
[RoleID]
|Trouble in Terrorist Town: Currently broken.
'''TODO: Test if still broken or if this does something now.'''
|
|
|
|
|-
|Unban
|[UniqueID]
|Unbans the specified player so that they can join again.
Writes the change to <code>blacklist.txt</code>.
|
|
Unban 12345678901234567
|
|
"Unban": true,
"UniqueID": "12345678901234567",
|-
|-
|TTTSetKarma
|UpdateServerName
|[Name]
|Changes the server name to the specified name.
Writes to <code>ServerName</code> in <code>Game.ini</code>.
|
|
UpdateServerName My server name
|
|
"ServerName": "My server name",
"UpdateServerName": true,
|}
{| class="wikitable"
|+Limited Ammo Types
!AmmoType
!Name
!Description
|-
|0
|Unlimited
|Players have unlimited ammo, carry no ammo boxes and do not display an ammo count on the wrist.
|-
|1
|Limited Generic
|Players carry ammo boxes with a limited amount of ammo.
One box for each weapon class (Pistol, Submachine gun, Rifles/MGs, Shotgun, Sniper).
Mags and ammo boxes can be put on the chest of the player to consolidate the ammo.
An ammo count is displayed on the wrist.
|-
|2
|Limited Specific
|Players carry ammo boxes with a limited amount of ammo.
One box for each weapon.
Mags and ammo boxes can be put on the chest of the player to consolidate the ammo.
An ammo count is displayed on the wrist.
|-
|3
|Custom
|Allows for full control over ammo by the map.
|-
|4
|Limited Special
|'''All weapons except "special" weapons are unlimited, more clarification is needed.'''
|-
|5
|Boxless
|'''Like limited generic but without boxes? Clarification is needed.'''
|}
{| class="wikitable"
|+Game modes
!GameMode
!Name
!Description
|-
|DM
|Death match
|
|
|-
|KOTH
|King of the hill
|
|
|-
|-
|TTTSetRole
|GUN
|Gun game
|
|
|-
|OITC
|One in the chamber
|
|
|-
|SND
|Search and destroy
|
|
|-
|TANKTDM
|WW2 Team Death Match
'''TODO: WTF?'''
|
|
|-
|-
|Unban
|TDM
|Team Death Match
|
|
|-
|TTT
|Trouble in Terrorist Town
|
|
|-
|WW2GUN
|WW2 gun game
|
|
|-
|ZWV
|Zombie wave survival
|
|
|-
|-
|UpdateServerName
|HIDE
|The Hidden
|
|
|-
|INFECTION
|Hidden infection
|
|
|-
|PUSH
|Push
|
|
|-
|PH
|Prop hunt
|
|
|}
|}
'''TODO: This definitely belongs on a whole different page as game modes are not specific to RCON.'''


'''TODO: Check and update list of game modes against latest update.'''


Commands:<pre>
Help                                -Returns the full list of commands
Ban {UniqueID}                      -Bans the player from the server (adds them to blacklist.txt)
Kick {UniqueID}                    -Kicks the player from the server
Kill {UniqueID}                    -Kills the player
Unban {UniqueID}                    -Unbans the player from the server (tries to remove the unique id from blacklist.txt)'
Banlist                            -Shows the current list of banned players
AddMod {UniqueID}                  -Adds a mod ID to the mods.txt file
RemoveMod {UniqueID}                -Removes a mod ID to the mods.txt file
ItemList                            -Shows available items for GiveItem command
RotateMap                          -Rotates to the next map in the game.ini
SwitchMap {MapName/ID} {GameMode}  -Switches to the map/gamemode specified, ex "SwitchMap DataCenter TDM" or "SwitchMap UGC1080326389 DM"
SwitchTeam {UniqueID} {TeamId}      -Switches the specified players team
GiveItem {UniqueID} {ItemId}        -Give the specified player the Item
GiveCash {UniqueID} {CashAmt}      -Give the specified player cash
GiveTeamCash {TeamId} {CashAmt}    -Gives all members of the teamId cash
GiveVehicle {UniqueID} {VehicleID}  -Spawns Vehicle on top of player, see below for vehicle IDs
InspectPlayer {UniqueID}            -Returns information about the player specified (PlayerName, Cash, KDA, TeamId etc)
RefreshList                        -Returns a list of players on the server (unique/steamId)
Slap {UniqueID} {damage amt}        -Inflicts damage amount on player.  From zero to 100.
ServerInfo                          -Returns information about the server (ServerName, CurrentMap, PlayerCount/MaxPlayerCount etc)
Disconnect                          -Disconnects the player from Rcon
ResetSND                            -Resets the match back to round 1 keeping the same teams
SetPlayerSkin {UniqueID} {SkinId}  -Sets the skin for the specified player, see below for IDs
SetLimitedAmmoType {0-5}            -Sets the limited ammo type for the duration of the match. See below for the different ammo types available
SetPin {####}                      -Sets the password on your server, must be 4 digits e.g. "SetPin 0000". Running SetPin without a number will remove the pin from the server.
Shownametags {True/False}          -Toggles if nametags are visible or not. Useful for tactical/realistic servers, or making trailers and taking screenshots for your maps.
Shutdown                            -Shuts down the server (Shack RC only, currently untested).
TTT-only commands:
tttflushkarma {UniqueID}            -Resets a player's karma
tttsetkarma {UniqueID} {####}      -Sets the karma of a player to a value
tttsetrole {UniqueID}              -Currently broken
tttendround                        -Ends the round
tttpausetimer                      -Pauses the timer
TTTAlwaysEnableSkinMenu            -Enables the skin menu mid-round
</pre>
PCVR UE5 update RCON CMDS<pre>
AddMapRotation [MapID] [GameMode] # add a map to the servers rotation from Mod.io
AddMod [UniqueID] # add user to mods.txt on server (make an admin) and allows them to use admin menu in pause menu
Ban [UniqueID] # ban player permanently and add there ID to blacklist.txt on server
Banlist # shows current banned players
Disconnect # close rcon connection (should always be used when done)
EnableCompMode [True/False]
EnableVerboseLogging [True/False] # more info printed to log file on server
EnableWhitelist [True/False] # only players who are on the whitelist.txt on server may join
Gag [UniqueID] [True/False] # player cant use mic
GiveAll [TeamID] [ItemID] # give all players on team a item
GiveCash [UniqueID] CashAmt # give player cash
GiveItem [UniqueID] [ItemID] # give player item
GiveTeamCash [TeamId] [CashAmt] # give team cash
InspectAll # prints detailed status for each connected player
InspectPlayer [UniqueID] # prints detailed status for a connected player
InspectTeam [TeamID] # prints detailed status for one team of connected players
ItemList # list items in game / map (custom items built into map will list too )
Kick [UniqueID] # remove player from game
Kill [UniqueID] # kills player
MapList # shows current map rotation
ModeratorList # shows current server admins
RefreshList # shows all connected players and ID
RemoveMapRotation [MapID] [GameMode] # remove map from rotation
RemoveMod [UniqueID] # remove admin
ResetSND
PauseMatch [TimeInSeconds]
RotateMap
ServerInfo
SetBalanceTableURL [GithubURL]
SetCash [UniqueID] [CashAmt]
SetLimitedAmmoType [AmmoType]
SetMaxPlayers [MaxPlayerNumber]
SetPin [PinNumber]
SetPlayerSkin [UniqueID] [SkinID]
SetTimeLimit [TimeLimitAmount]
ShowNametags [True/False]
ShutdownServer
Slap [UniqueID] [DamageAmount]
SwitchMap [MapId] [GameMode]
SwitchTeam [UniqueID] [TeamID]
Teleport [MoveUniqueID] [ToUniqueID]
TTTAlwaysEnableSkinMenu [True/False]
TTTEndRound [WinningTeamID]
TTTFlushKarma
TTTGiveCredits [UniqueID] [CreditAmount]
TTTPauseTimer [True/False]
TTTSetKarma [UniqueID] [KarmaAmt]
TTTSetRole [UniqueID] [RoleID]
Unban [UniqueID]
UpdateServerName [ServerName]
</pre>
{UniqueID} is a player's Steam ID 64. It's the 17-digit number that appears next to their names in most Rcon tools. Alternatively, if you have a player's profile URL, you can find their ID at: https://steamid.xyz/
'''Limited ammo types:'''
0 = Unlimited<br />
1 = Limited Generic<br />
2 = Limited Specific<br />
3 = Custom (for modders)<br />
4 = Limited Special<br />
5 = Boxless Mode
'''Item, skin, and vehicle IDs:'''
[http://wiki.pavlov-vr.com/index.php?title=ItemIDs A full list of all items, vehicles, and skin can be found here.]
You can also run the ItemList command through Rcon to receive the most recent and up to date list of all items.
'''Game Modes:''' <br />
DM        - Death Match <br />
KOTH      - King Of The Hill <br />
GUN      - Gun Game <br />
OITC      - One In The Chamber <br />
SND      - Search and Destroy <br />
TANKTDM  - WW2 Team Death Match <br />
TDM      - Team Death Match <br />
TTT      - Trouble in Terrorist Town <br />
WW2GUN    - WW2 Gun Game <br />
ZWV      - Zombie Wave Survival <br />
HIDE      - The Hidden <br />
INFECTION - Hidden Infection <br />
PUSH      - Push <br />
PH        - Prophunt <br />
----
----



Revision as of 06:22, 20 June 2023

RCON (Remote Console) is the method Pavlov VR servers can be controlled from outside of VR.

RCON Tools

- http://pavlovrcon.com/

- TBD: add more

RCON Commands

Hypothesis: PSVR and Shack players can not crossplay-connect to dedicated servers. Requires confirmation.

Placeholder

Values in [square brackets] are placeholders and must be replaced, or will be replaced by the server in a reply.

[UniqueID] - Player ID (eg. SteamID (PCVR), ??? (Shack))

[GameMode] - See [Gamemodes]

[TeamID] - 0 for blue, 1 for red, if there are teams

[VehicleID] - See [Vehicles]

[MapName/ID] - See [Default maps] or find the Map ID on Mod.io (put example)

[SkinID] - See [Skins]

[RoleID] - See [TTT Roles]

[ItemID] - See [Items]

[True/False] - Either "True" to enable or "False" to disable

[Amount] - A number indicating an amount of something

Format

All command replies are formatted as JSON and inherit this base format:

{
	"Command": "[The command you entered]",
	"Comment": "[An optional comment about the command]",
	"Successful": "[True/False]"
}

Comment will not exist if the command does not output a comment.

Additional command output is added to the above format. The Example Reply column below only contains this additional command output.

Often, commands will contain a field with their own name and a boolean value. This is a very inconsistent value. For example in SetMaxPlayers, if the amount is set to the same as the current slot count, Successful will be true but SetMaxPlayers will be false. However for SwitchTeam for example, if a player is switched to the same team they are already in, SwitchTeam is true anyway.

RCON Commands
Command Parameters Description Example Command Example Reply
Help none Returns the full list of commands and their parameters
Help
"Help": [
  "AddMapRotation MapID GameMode",
  ...truncated...
  "UpdateServerName ServerName"
],
AddMapRotation [MapName/ID]

[GameMode]

Adds the specified map with the specified game mode to the bottom of the map rotation.

Writes the map to Game.ini.

AddMapRotation sand snd
AddMod [UniqueID] Adds the specified player to the moderator list, making them an admin.

Allows them to use the admin menu in the pause menu and be immune to being vote-kicked.

Writes the player to mods.txt.

AddMod 12345678901234567
"AddMod": true,
"UniqueID": "12345678901234567",
Ban [UniqueID] Kicks and permanently bans the specified player from the server. They will not be able to join the server anymore.

Writes the player to blacklist.txt.

Ban 12345678901234567
"Ban": true,
"UniqueID": "12345678901234567",
Banlist none Lists the currently banned player UniqueIDs from blacklist.txt.
Banlist
"BanList": [
  "12345678901234567",
  "12345678901234568",
  ...truncated...
  "12345678901234569"
],
Disconnect none Closes the RCON connection.

This should always be used when done.

TODO: This is probably not true and there is no disadvantage to just disconnecting. Needs clarification from dev.

Disconnect
EnableCompMode [True/False] Enables or disables competitive mode.

Comment: Comp mode will be changed on map rotation, this updates the config value Writes to bCompetitive in Game.ini.

EnableCompMode true
"CompModeState": true,
"EnableCompMode": true,
EnableVerboseLogging [True/False] Enables or disables verbose logging.

Writes to bVerboseLogging in Game.ini.

EnableVerboseLogging false
"VerboseLoggingState": false,
"EnableVerboseLogging": true,
EnableWhitelist [True/False] Enables or disables whitelist usage.

When enabled, only players who are listed in whitelist.txt can join the server. Writes to bWhitelist in Game.ini.

"WhitelistState": true,
"EnableWhitelist": true,
Gag [UniqueID]

[True/False]

Gags or ungags the specified player.

When gagged, players can not use voice chat.

"Gag": true,
"UniqueID": "12345678901234567",
GiveAll [TeamID]

[ItemID]

Gives an item to all players on a team. TODO: Couldn't get to execute, always Succesful: false
GiveCash [UniqueID]

[CashAmount]

Gives the specified amount of cash to the specified player.
GiveCash 12345678901234567 200
"GiveCash": true,
"UniqueID": "12345678901234567",
GiveItem [UniqueID]

[ItemID]

Equippes the specified item to the specified player to the corresponding item slot.

TODO: Test for dropping when slot is occupied. Primary weapons are put directly into players hands, old weapon is dropped if hands are full. Utilities are put on the chest. Are new items dropped when chest is full?What about secondary?

GiveItem 12345678901234567 syringe
"GiveItem": true,
"UniqueID": "12345678901234567",
GiveTeamCash [TeamID]

[CashAmount]

Adds the specified amount of cash to each member of the specified team.
GiveTeamCash 0 200
"GiveTeamCash": true,
"TeamID": "0",
InspectAll none Returns a list of InspectPlayer blocks for all players on the server.
InspectAll
"InspectList": [
  {
    "PlayerName": "Username",
    "UniqueId": "12345678901234567",
    "KDA": "3/1/2",
    "Score": "50",
    "Dead": false,
    "Cash": "3450",
    "TeamId": "1",
    "Ping": 39.857143402099609,
    "Gag": false
  },
  ...truncated...
],
InspectPlayer [UniqueID] Returns a detailed status for the specified player.

The player must be listed in RefreshList.

InspectPlayer 12345678901234567
"PlayerInfo":
{
 "PlayerInfo":
{
  "PlayerName": "Username",
  "UniqueId": "12345678901234567",
  "KDA": "3/1/2",
  "Score": "50",
  "Dead": false,
  "Cash": "3450",
  "TeamId": "1",
  "Ping": 39.857143402099609,
  "Gag": false
},
InspectTeam [TeamID] Returns a list of InspectPlayer blocks for all player on the specified team.
InspectTeam 1
"InspectList": [
  {
    "PlayerName": "Username",
    "UniqueId": "12345678901234567",
    "KDA": "3/1/2",
    "Score": "50",
    "Dead": false,
    "Cash": "3450",
    "TeamId": "1",
    "Ping": 39.857143402099609,
    "Gag": false
  },
  ...truncated...
],
ItemList none Lists all items in the game and the current map.

Custom items built into the map will be listed.

ItemList
"ItemList": [
  "1911",
  "57",
  "acog",
  "adrenaline",
  ...truncated...
  "ww2knife",
  "ww2medkit",
  "ww2painkillers",
  "ww2syringe"
],
Kick [UniqueID] Kicks the specified player from the server.
Kick 12345678901234567
"UniqueID": "12345678901234567",
"Kick": true,
Kill [UniqueID] Kills the specified player.
Kill 12345678901234567
"UniqueID": "12345678901234567",
"Kill": true,
MapList none Returns the current map rotation from Game.ini.

TODO: test if it really returns from game.ini or if it returns from memory.

MapList
"MapList": [
  {
    "MapId": "UGC2863450",
    "GameMode": "SND"
  },
  ...truncated...
  {
    "MapId": "sand",
    "GameMode": "snd"
  }
],
ModeratorList none Returns a list of UniqueIDs of all moderators from mods.txt.
ModeratorList
"ModeratorList": [
  "12345678901234567",
  ...truncated...
  "12345678901234568"
],
RefreshList none Returns a list of all connected player names and their corresponding UniqueIDs.
RefreshList
"PlayerList": [
  {
    "Username": "Username",
    "UniqueId": "12345678901234567"
  },
  ...truncated...
  {
    "Username": "Username2",
    "UniqueId": "12345678901234568"
  }
],
RemoveMapRotation [MapName/ID]

[GameMode]

Removes the first occurrence of the specified map and game mode combination from the map rotation.

[MapName/ID] and [GameMode] are case sensitive to the entries in Game.ini or MapList respectively. Writes the change to Game.ini.

RemoveMapRotation sand snd
RemoveMod [UniqueID] Removes the specified player from the moderator list.

Writes the change to mods.txt.

RemoveMod 12345678901234567
"RemoveMod": true,
"UniqueID": "12345678901234567",
ResetSND none Reset the currently running SND match.

All players will have starting cash, no kills, deaths, assists or score. All players are killed. The score is reset to 0 all.

ResetSND
"ResetSND": true,
PauseMatch [Optional Amount] Pauses the currently running match for the specified amount of seconds.

The game is frozen and displays a "Game is paused" countdown timer. The game is unpaused when amount is not specified or 0. Unpausing starts a countdown timer at 15 seconds before unpausing. Minimum: 0 Maximum: 3600 TODO: What does pausing do? Can you unpause using this command? (eg. PauseMatch 0 or just PauseMatch)

PauseMatch 60
"PauseTime": 60,
"PauseMatch": true,
RotateMap none Immediately changes the current map to the next map in the map rotation.

If the current map was changed to using SwitchMap, the next map will be the one after the previously switched map instead of the immediate map after the current one. TODO: Test if this ends match or changes immediately.

RotateMap
"RotateMap": true,
ServerInfo none Returns server information such as server name, player count, current map and mode, and more.
ServerInfo
"ServerInfo":
{
  "MapLabel": "datacenter",
  "GameMode": "snd",
  "ServerName": "Server name",
  "Teams": true,
  "Team0Score": "4",
  "Team1Score": "1",
  "Round": "6",
  "RoundState": "Started",
  "PlayerCount": "8/10"
},
SetBalanceTableURL [GithubURL] Sets the balance table to load from the specified URL.

The URL has the format user/repo/branch and must contain a BalancingTable.csv. For example, the official balancing table has the URL vankruptgames/BalancingTable/Beta_5.1. The balance table contains the values for the prices in the buy wheel, how much money is gained from which actions and how much damage is dealt by each weapon including damage falloff and more. Writes to BalanceTableURL in Game.ini. TODO: Test if full github urls (eg. https://...) work.

SetBalanceTableURL vankruptgames/BalancingTable/Beta_5.1
"GithubURL": "https://raw.githubusercontent.com/vankruptgames/BalancingTable/Beta_5.1",
"SetBalanceTableURL": true,
SetCash [UniqueID]

[CashAmount]

Sets the cash of the specified player to the specified amount.

Minimum: 0 Maximum: 16000

SetCash 12345678901234567 1000
"SetCash": true,
"UniqueID": "12345678901234567",
SetLimitedAmmoType [AmmoType] Sets the ammo limitation type.

0 for unlimited, 1 for limited generic, 2 for limited specific, 3 for custom, 4 for limited special, 5 for boxless. See [Limited Ammo Type] for details. Writes to LimitedAmmoType in Game.ini.

SetLimitedAmmoType 0
"SetLimitedAmmoType": true,
"LimitedAmmoType": "0",
SetMaxPlayers [Amount] Sets the amount of slots on the server to the specified amount.

Minimum: 1 Maximum: 50 (PCVR), 10 (Shack) Writes to MaxPlayers in Game.ini.

SetMaxPlayers 10
"SetMaxPlayers": true,
"MaxPlayers": 10,
SetPin [Optional PinNumber] Sets the server pin to the specified pin number.

Supplying a pin number locks the server so that player have to enter a pin to join. Not supplying a pin number unlocks the server so that players do not have to enter a pin. PinNumber can be any whole number between 1 and 9999 and may not contain leading zeroes such as 0001 which would get trimmed to 1. Setting the pin to 0 or 0000 does not remove the pin but sets it to 0.

Writes to Password in Game.ini.

SetPin 69
SetPlayerSkin [UniqueID]

[SkinID]

Sets the player skin of the specified player to the specified skin.

The skin is automatically removed if the player leaves the server or switches teams. TODO: Test if there are other conditions where the skin is removed.

SetPlayerSkin 12345678901234567 kevin
"SetPlayerSkin": true,
"UniqueID": "12345678901234567",
SetTimeLimit [Amount] Sets the time limit of the current match to the specified amount in seconds.

The match will end once the time limit has counted down to 0.

TODO: Couldn't get to execute, always Succesful: false
ShowNametags [True/False] Enables or disables name tags above friendly players.
ShowNametags true
"NametagsEnabled": true,
"ShowNametags": true,
ShutdownServer none Immediately shuts down the server.
ShutdownServer
Slap [UniqueID]

[Amount]

Deals the specified amount of damage to the specified player. Can be lethal if the amount exceeds the current health of the player.

The damage is dealt directly to health and ignores armor.

Slap 12345678901234567 
"UniqueID": "12345678901234567",
SwitchMap [MapID]

[GameMode]

Immediately switches to the specified map and game mode.

TDM is automatically selected if no game mode has been specified.

SwitchMap datacenter snd
"SwitchMap": true,
SwitchTeam [UniqueID]

[TeamID]

Kills and moves the specified player into the specified team.

It will be as if the player has just joined (that team) or if they switched themselves, losing all money, kills, deaths, assists, score and gear.

SwitchTeam 12345678901234567 1
"SwitchTeam": true,
"UniqueID": "12345678901234567",
Teleport [Source UniqueID]

[Target UniqueID]

Teleports the specified source player to the position of the specified target player.

Only works when both the source player and the target player are alive.

Teleport 12345678901234567 12345678901234568
"MoveUniqueID": "12345678901234567",
"ToUniqueID": "12345678901234568",
"Teleport": true,
TTTAlwaysEnableSkinMenu [True/False] Trouble in Terrorist Town: Enables or disables the skin menu mid-round.
TTTEndRound [TeamID] Trouble in Terrorist Town: Ends the round.
TTTFlushKarma none Trouble in Terrorist Town: Resets the karma of the specified player.

TODO: According to Help this command does not take any parameters. Previous wiki entries specified [UniqueID] as parameter. Verify whether or not there's a parameter for this command. Send bug report to Dave.

TTTGiveCredits [UniqueID]

[Amount]

Trouble in Terrorist Town: Adds the specified amount of credits to the specified player.

TODO: Are credits and cash two different things?

TTTPauseTimer [True/False] Trouble in Terrorist Town: Pauses the timer.
TTTSetKarma [UniqueID]

[Amount]

Trouble in Terrorist Town: Sets the karma of the specified player to the specified amount.
TTTSetRole [UniqueID]

[RoleID]

Trouble in Terrorist Town: Currently broken.

TODO: Test if still broken or if this does something now.

Unban [UniqueID] Unbans the specified player so that they can join again.

Writes the change to blacklist.txt.

Unban 12345678901234567
"Unban": true,
"UniqueID": "12345678901234567",
UpdateServerName [Name] Changes the server name to the specified name.

Writes to ServerName in Game.ini.

UpdateServerName My server name
"ServerName": "My server name",
"UpdateServerName": true,
Limited Ammo Types
AmmoType Name Description
0 Unlimited Players have unlimited ammo, carry no ammo boxes and do not display an ammo count on the wrist.
1 Limited Generic Players carry ammo boxes with a limited amount of ammo.

One box for each weapon class (Pistol, Submachine gun, Rifles/MGs, Shotgun, Sniper). Mags and ammo boxes can be put on the chest of the player to consolidate the ammo. An ammo count is displayed on the wrist.

2 Limited Specific Players carry ammo boxes with a limited amount of ammo.

One box for each weapon. Mags and ammo boxes can be put on the chest of the player to consolidate the ammo. An ammo count is displayed on the wrist.

3 Custom Allows for full control over ammo by the map.
4 Limited Special All weapons except "special" weapons are unlimited, more clarification is needed.
5 Boxless Like limited generic but without boxes? Clarification is needed.
Game modes
GameMode Name Description
DM Death match
KOTH King of the hill
GUN Gun game
OITC One in the chamber
SND Search and destroy
TANKTDM WW2 Team Death Match

TODO: WTF?

TDM Team Death Match
TTT Trouble in Terrorist Town
WW2GUN WW2 gun game
ZWV Zombie wave survival
HIDE The Hidden
INFECTION Hidden infection
PUSH Push
PH Prop hunt

TODO: This definitely belongs on a whole different page as game modes are not specific to RCON.

TODO: Check and update list of game modes against latest update.


Connecting to RCON

Make sure whatever port you used is open in your firewall for TCP connections. Connections are simple TCP port/telnet style connections.

To test connecting to the rcon port and issuing simple commands use netcat or telnet:

nc {ip address} {port}
telnet {ip address} {port}

For the password use the md5 hash of the password in the file (this may change in the future). You can get this using

echo -n password | md5sum

If successful you should get an Authenticated=1 reply


Tools available to access Rcon interface

A good first place to start is the RCON web interface run by ArcticVR. You do this at http://pavlovrcon.com/.

If you want private control of your server, you will need to do a bit more work for it. At the simplest, using netcat (nc) or telnet as described above will give you basic access to all commands

If you want to batch commands (i.e. for moving players on to teams and triggering ResetSnd) the following script can be useful to call a pre-written batch files of commands. Call with your batch file as the first argument to the script. The file should have one command per line with first line being the hashed password as above.

 
#!/bin/bash
function slowcat(){ while read; do sleep .05; echo "$REPLY"; done; }
cat  $1 | slowcat | nc {ip address} {port}

Example batchfile:

8b96753b29612d8c98d6b696140b5d9f
ResetSnd
Disconnect




There is a very brief example above but it was not very detailed so i wanted to add a more detailed explanation

be aware that connecting and disconnecting a lot can hurt server performance

first you need to make a shell script

nano /home/steam/test.sh
#!/bin/bash
function slowcat(){ while read; do sleep .15; echo "$REPLY"; done; }
cat $1 | slowcat | nc {SERVER IP} {SERVER RCON PORT}

now exit and save the test.sh

here will will make a batch file that will just hold the rcon password and cmds we want to issue

nano /home/steam/batch
{RCON PASSWORD CONVERTED TO MD5 HASH}
{RCON CMD}
{RCON CMD}
Disconnect

here the first line has to be the rcon password converted to MD5 HASH https://www.md5hashgenerator.com/ then each line after that u can use any rcon commands the last line must be disconnect

now we need to give the sh permissions to run

sudo chmod +x /home/steam/test.sh

to run the bash script

./home/steam/test.sh /home/steam/batch

so to run the script we need to ./ the .sh then after a space we need to pass the batch

Rcon access from within VR

PavlovRconWebserver, pavlov-vr-rcon and pavlov_rcon_tcl have been designed to be accessible within VR using virtual desktop view.


pavlov_rcon_tcl: This is a tool designed to run on your desktop for access within VR

https://github.com/Oakraven79/pavlov_rcon_tcl


PavlovRconWebserver is an interface designed to be usable from everywhere all the time. (also in VR over desktop view)

Features: 
Manage multiple Linux servers with multiple pavlov servers.
Start / Stop / Update
Public player lists
Do almost all rcon commands
Change the map rotation
Determine which users can do what via roles
Manage whitelists and blacklists
Integrate the player lists on all other websites
Requirements:
Good Linux knowledge
SSH access to a linux server

https://github.com/devinSpitz/PavlovRconWebserver

While functional, the PavlovRconWebserver is still in development.

If you do plan on using this tool, we recommend asking for help on the official Discord or http://discord.spitzen.solutions, or contacting the creator on the Github page (devinspitz) for the latest info on how to use it. Failing to do so will likely result in you breaking your servers.


pavlov-vr-rcon: This is tool designed to run on your desktop for access from within VR with SND team setup

https://github.com/Krzychu81/pavlov-vr-rcon

RCON access from Discord

For the ultimate in both control and complexity of setup, use the open-source pavlov-bot. This is a discord bot that will listen for commands in your discord and execute them. Supports all RCON commands with handy features such as discord role based authentication and authorisation, player, map and team aliases (No more SteamIDs or UGC####) and enhanced "all" and team based commands. Has support for flushing non-registered players from server. Advanced features to include alerting when servers are kicking off, team killing player kick/ban and large server (PUSH/RUSH/TankTDM) player balance (count) control.

For shack users it has been updated to support Oculus ids and map aliases, so is fully functional for both server versions. See Readme.md for shack specific tweaks.

https://github.com/makupi/pavlov-bot

Horde also offers a Discord Bot to grant RCON permissions to friends in Discord, and run commands from specific channels. Invite the Horde Bot to your Discord server with this link: https://discord.com/oauth2/authorize?client_id=780880728992383077&scope=bot&permissions=199744

Tips on developing apps to use RCON

What is important if you are issuing commands using a program at high frequency is that you open one connection and put all of the commands through that open connection with a small (.1 sec is fine) delay. What you don't want to do is open a new connection for each command or shove all of the commands through super fast. First causes performance issues and the second dropped commands.


Ban/Unban

If you want Ban/Unban to work file /home/steam/pavlovserver/Pavlov/Saved/Config/blacklist.txt needs to be writable by user running server. (If you followed the instructions on the wiki, username steam is running the server and creates the file).