User:Rain/Sandbox: Difference between revisions

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


{UniqueID} - Player ID (eg. SteamID (PCVR), ??? (Shack), ??? (PSVR))
Values in [square brackets] are placeholders and must be replaced, or will be replaced by the server in a reply.


{GameMode} - See [Gamemodes]
[UniqueID] - Player ID (eg. SteamID (PCVR), ??? (Shack), ??? (PSVR))


{TeamId} - 0 for blue, 1 for red, if there are teams
[GameMode] - See [Gamemodes]


{VehicleId} - See [Vehicles]
[TeamId] - 0 for blue, 1 for red, if there are teams


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


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


{True/False} - Either "True" to enable or "False" to disable
[SkinID] - See [Skins]


{ItemId} - See [Items]
[True/False] - Either "True" to enable or "False" to disable
 
[ItemId] - See [Items]


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:
{
"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.
 
"Command": "{The command you entered}",
 
"Successful": "{True/False}"
 
}


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.
{| class="wikitable"
{| class="wikitable"
|+
|+
Line 47: Line 49:
!Parameters
!Parameters
!Description
!Description
!Example Command
!Example Reply
!Example Reply
|-
|-
Line 52: Line 55:
|none
|none
|Returns the full list of commands and their parameters
|Returns the full list of commands and their parameters
|
Help
|
|
  "Help": [
  "Help": [
"AddMapRotation MapID GameMode",
"AddMapRotation MapID GameMode",
...truncated...
...truncated...
  ],
  ],
|-
|-
|AddMapRotation
|AddMapRotation
|[MapName/ID]
[GameMode]
|Adds the specified map with the specified game mode to the bottom of the server rotation.
Writes the map to <code>Game.ini</code>.
|
|
|
AddMapRotation sand snd
|
|
|-
|-
|AddMod
|AddMod
|[UniqueID]
|Adds the specified user 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 user to <code>mods.txt</code>.
|
|
AddMod 12345678901234567
|
|
|
"AddMod": true,
"UniqueID": "12345678901234567",
|-
|-
|Ban
|Ban
|[UniqueID]
|Kick and permanently ban the specified player from the server. They will not be able to join the server anymore.
Writes the user to <code>blacklist.txt</code>.
|
|
Ban 12345678901234567
|
|
|
"Ban": true,
"UniqueID": "12345678901234567",
|-
|-
|Banlist
|Banlist
|none
|List the currently banned player UniqueIDs from <code>blacklist.txt</code>.
|
|
Banlist
|
|
|
"BanList": [
"12345678901234567",
"12345678901234568",
"12345678901234569"
],
|-
|-
|Disconnect
|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
|EnableCompMode
|[True/False]
|Enable or disable competitive mode.
'''Comment''': Comp mode will be changed on map rotation, this updates the config value
Writes to <code>bCompetitive</code> in <code>Game.ini</code>.
|
|
EnableCompMode true
|
|
|
"CompModeState": true,
"EnableCompMode": true,
|-
|-
|EnableVerboseLogging
|EnableVerboseLogging
|[True/False]
|Enable or disable verbose logging.
Writes to <code>bVerboseLogging</code> in <code>Game.ini</code>.
|
|
EnableVerboseLogging false
|
|
|
"VerboseLoggingState": false,
"EnableVerboseLogging": true,
|-
|-
|EnableWhitelist
|EnableWhitelist
|[True/False]
|Enable or disable whitelist usage.
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>.
|
|
|
|
|
"WhitelistState": true,
"EnableWhitelist": true,
|-
|-
|Gag
|Gag
|[UniqueID]
[True/False]
|Gag or ungag the specified player.
When gagged, players can not use voice chat.
|
|
|
|
|
"Gag": true,
"UniqueID": "12345678901234567",
|-
|-
|GiveAll
|GiveAll
|[TeamID]
[ItemID]
|Gives an item to all players on a team.
|
|
|
|'''TODO: Couldn't get to execute, always Succesful: false'''
|
|-
|-
|GiveCash
|GiveCash
|
|[UniqueID]
[CashAmount]
|Gives the specified amount of cash to the specified player.
|
|
|
|
|-
|-
|GiveItem
|GiveItem
|[UniqueID]
[ItemID]
|
|
|
|
Line 119: Line 177:
|-
|-
|GiveTeamCash
|GiveTeamCash
|
|
|
|
|
Line 124: Line 183:
|-
|-
|InspectAll
|InspectAll
|
|
|
|
|
Line 129: Line 189:
|-
|-
|InspectPlayer
|InspectPlayer
|
|
|
|
|
Line 134: Line 195:
|-
|-
|InspectTeam
|InspectTeam
|
|
|
|
|
Line 139: Line 201:
|-
|-
|ItemList
|ItemList
|
|
|
|
|
Line 144: Line 207:
|-
|-
|Kick
|Kick
|
|
|
|
|
Line 149: Line 213:
|-
|-
|Kill
|Kill
|
|
|
|
|
Line 154: Line 219:
|-
|-
|MapList
|MapList
|
|
|
|
|
Line 159: Line 225:
|-
|-
|ModeratorList
|ModeratorList
|
|
|
|
|
Line 164: Line 231:
|-
|-
|RefreshList
|RefreshList
|
|
|
|
|
Line 169: Line 237:
|-
|-
|RemoveMapRotation
|RemoveMapRotation
|
|
|
|
|
Line 174: Line 243:
|-
|-
|RemoveMod
|RemoveMod
|
|
|
|
|
Line 179: Line 249:
|-
|-
|ResetSND
|ResetSND
|
|
|
|
|
Line 184: Line 255:
|-
|-
|PauseMatch
|PauseMatch
|
|
|
|
|
Line 189: Line 261:
|-
|-
|RotateMap
|RotateMap
|
|
|
|
|
Line 194: Line 267:
|-
|-
|ServerInfo
|ServerInfo
|
|
|
|
|
Line 199: Line 273:
|-
|-
|SetBalanceTableURL
|SetBalanceTableURL
|
|
|
|
|
Line 204: Line 279:
|-
|-
|SetCash
|SetCash
|
|
|
|
|
Line 209: Line 285:
|-
|-
|SetLimitedAmmoType
|SetLimitedAmmoType
|
|
|
|
|
Line 214: Line 291:
|-
|-
|SetMaxPlayers
|SetMaxPlayers
|
|
|
|
|
Line 219: Line 297:
|-
|-
|SetPin
|SetPin
|
|
|
|
|
Line 224: Line 303:
|-
|-
|SetPlayerSkin
|SetPlayerSkin
|
|
|
|
|
Line 229: Line 309:
|-
|-
|SetTimeLimit
|SetTimeLimit
|
|
|
|
|
Line 234: Line 315:
|-
|-
|ShowNametags
|ShowNametags
|
|
|
|
|
Line 239: Line 321:
|-
|-
|ShutdownServer
|ShutdownServer
|
|
|
|
|
Line 244: Line 327:
|-
|-
|Slap
|Slap
|
|
|
|
|
Line 249: Line 333:
|-
|-
|SwitchMap
|SwitchMap
|
|
|
|
|
Line 254: Line 339:
|-
|-
|SwitchTeam
|SwitchTeam
|
|
|
|
|
Line 259: Line 345:
|-
|-
|Teleport
|Teleport
|
|
|
|
|
Line 264: Line 351:
|-
|-
|TTTAlwaysEnableSkinMenu
|TTTAlwaysEnableSkinMenu
|
|
|
|
|
Line 269: Line 357:
|-
|-
|TTTEndRound
|TTTEndRound
|
|
|
|
|
Line 274: Line 363:
|-
|-
|TTTFlushKarma
|TTTFlushKarma
|
|
|
|
|
Line 279: Line 369:
|-
|-
|TTTGiveCredits
|TTTGiveCredits
|
|
|
|
|
Line 284: Line 375:
|-
|-
|TTTPauseTimer
|TTTPauseTimer
|
|
|
|
|
Line 289: Line 381:
|-
|-
|TTTSetKarma
|TTTSetKarma
|
|
|
|
|
Line 294: Line 387:
|-
|-
|TTTSetRole
|TTTSetRole
|
|
|
|
|
Line 299: Line 393:
|-
|-
|Unban
|Unban
|
|
|
|
|
Line 304: Line 399:
|-
|-
|UpdateServerName
|UpdateServerName
|
|
|
|
|

Revision as of 07:20, 18 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), ??? (PSVR))

[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]

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

[ItemId] - See [Items]

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, EnableCompMode for example. This is redundant to field Successful and unknown why it exists.

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

[GameMode]

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

Writes the map to Game.ini.

AddMapRotation sand snd
AddMod [UniqueID] Adds the specified user 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 user to mods.txt.

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

Writes the user to blacklist.txt.

Ban 12345678901234567
"Ban": true,
"UniqueID": "12345678901234567",
Banlist none List the currently banned player UniqueIDs from blacklist.txt.
Banlist
"BanList": [
	"12345678901234567",
	"12345678901234568",
	"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] Enable or disable 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] Enable or disable verbose logging.

Writes to bVerboseLogging in Game.ini.

EnableVerboseLogging false
"VerboseLoggingState": false,
"EnableVerboseLogging": true,
EnableWhitelist [True/False] Enable or disable 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]

Gag or ungag 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.
GiveItem [UniqueID]

[ItemID]

GiveTeamCash
InspectAll
InspectPlayer
InspectTeam
ItemList
Kick
Kill
MapList
ModeratorList
RefreshList
RemoveMapRotation
RemoveMod
ResetSND
PauseMatch
RotateMap
ServerInfo
SetBalanceTableURL
SetCash
SetLimitedAmmoType
SetMaxPlayers
SetPin
SetPlayerSkin
SetTimeLimit
ShowNametags
ShutdownServer
Slap
SwitchMap
SwitchTeam
Teleport
TTTAlwaysEnableSkinMenu
TTTEndRound
TTTFlushKarma
TTTGiveCredits
TTTPauseTimer
TTTSetKarma
TTTSetRole
Unban
UpdateServerName


Commands:

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


PCVR UE5 update RCON CMDS

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]


{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
1 = Limited Generic
2 = Limited Specific
3 = Custom (for modders)
4 = Limited Special
5 = Boxless Mode

Item, skin, and vehicle IDs:

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:
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
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 - Prophunt


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).