TV Admin Portal
From ETQWPro Wiki Pages
![]() |
This feature has been added in Promod Version 0.5 |
Contents |
[edit] What is it, and why would I need it?
- Easy to manage Admin GUI for your TV Server
- Connect your TV Server directly from your Desktop to the Match server.
- No need of any shell scripts.
- No additional binaries / server script needed to get it running. Only set 3 cvars in the server cfg!
- Horrible NetCode (Syntax), i will try to improve this in the next releases.
- A fully useable Client interface. (windows only at the moment) Interface Example
[edit] Server Configuration
You will only have to set 3 cvars, and start the new "server" with a coonsole command.
This console command will be passworded in 0.5 because this feature needs to be tested. If you want to help testing, be sure to Private Message me in #etqwpro @ Quakenet
and i would be happy to share the password with you!
Start your TV Interface in 4 Steps!
- set tv_adminPass to your fav. password
- set tv_adminEnable to 1
- set tv_adminPort to your fav port. Default is 27787
- spawn a map on the server
- start the "server" with the command: startTvAdmin <password>
[edit] Console Example
]startTvAdmin ******* TV Admin spawned on Port 27787
[edit] Client Configuration
There is no client configuration neccessary!
Only download the Client Binaries from HERE (not yet), or write your own Program. For Network Information scroll down!
[edit] What can I do with the Client?
- Connect your server to a matchserver with one click.
- Saves your last server and matchserver in a simple ini file, to prevent entering this info all over again.
- History Log of all issued Command.
- Adjustable cvars
- Max Viewers
- Max Players
- Server Name
- Private viewer Password
- Use Password for the TV Server
- Repeater Password (will get used by other Repeaters that are connecting on your Repeater)
- Viewer Password
- Private Viewers
- Spawn Repeater
- Repeater Port
- Repeater Auto Download
- Switchable Delay between 0 and 90 seconds
- Ability to use the "say" Command on the server
- Disconnect from other servers
- spawn maps on the server
- Update the client from server
- Update the server from client
[edit] I dont want your Interface, can i build my own one?
Yes you can! But I limited the buffer on the server to 64!
Its a simple TCP Socket that waits for your "call".
The network message MUST look like that if you want to request a cvar value:
password|instruction|cvarID
The network message MUST look like that if you want to set a cvar value:
password|instruction|cvarID|value
The network message MUST look like that if you want to issue a command:
password|instruction|command|params
The password can be as long as you want (rember the buffer issue) and must be followed by a "|".
- a valid password would be myPassword|
The instruction has to be excatly 3 chars long and must be followed by a "|".
- a valid instruction would be 000|
The Cvar / Command ID has to be excatly 3 chars long and must be followed by a "|".
- a valid cvar / command ID would be 000|
Any following chars will be interpreted as params!
- a valid param would be welcome to our etqwtv Server
The Message must end with a newline \n
[edit] Cvar / Command / Instruction Code
All Instructions, Cvars and Commands are identified by three unique numbers.
Instructions:
- 000 -> Send Command
- 001 -> Get Cvar
- 002 -> Set Cvar
Commands:
- 000 -> Connect to tv
- 001 -> Disconnect from tv
- 002 -> Spawn Server
- 003 -> Say
- 004 -> Get ViewerCount
Cvars:
- 000 -> ri_maxViewers
- 001 -> ri_name
- 002 -> ri_privateViewers
- 003 -> ri_useViewerPass
- 004 -> g_privateViewerPassword
- 005 -> g_repeaterPassword
- 006 -> g_viewerPassword
- 007 -> si_maxPlayers
- 008 -> net_clientRepeaterDelay
- 009 -> net_spawnRepeater
- 010 -> net_repeaterPort
- 011 -> net_clientRepeaterAutoDownload
- 012 -> net_repeaterSnapshotDelay
[edit] Some examples
You want to say something on the server, and the server password is testPass
testPass|000|003|Hello to all Viewers, have fun on this TV Server
You want to know the value of the net_clientRepeaterDelay Cvar, and the server password is testPass
testPass|001|008|
You want to set the value of the g_privateViewerPassword Cvar to "myPass" , and the server password is testPass
testPass|002|004|myPass
[edit] Code Snippets
I wrote the Client in c#, so to help you get into it, here some maybe important Code snippets.
Enums for the cvars
public enum Cvars : int
{
CVAR_RI_MAX_VIEWERS = 000,
CVAR_RI_NAME = 001,
CVAR_RI_PRIVATE_VIEWERS = 002,
CVAR_RI_USE_VIERWER_PASS = 003,
CVAR_G_PRIVATE_VIEWER_PASS = 004,
CVAR_G_REPEATER_PASSWORD = 005,
CVAR_G_VIEWER_PASSWORD = 006,
CVAR_SI_MAXPLAYERS = 007,
CVAR_NET_CLIENT_REPEATER_DELAY = 008,
CVAR_NET_SPAWN_REPEATER = 009,
CVAR_NET_REPEATER_PORT = 010,
CVAR_NET_CLIENT_REPEATER_AUTO_DOWNLOAD = 011,
CVAR_NET_REPEATER_SNAPSHOT_DELAY = 012,
NUM_CVARS
}
Connect to the server and send message
try {
System.Net.IPEndPoint ep = new System.Net.IPEndPoint(IPAddress.Parse("yourIP"), Int16.Parse(yourPort));
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect(ep);
try
{
socket.Send(Encoding.ASCII.GetBytes("Message"));
}
catch
{
}
}
catch (SecurityException ex)
{
MessageBox.Show("Server Port not available ->" + ex);
}
catch (Exception ex)
{
MessageBox.Show("No Route to Host ->" + ex);
}
Read server message
byte[] bytes = new byte[64];
try
{
int i = socket.Receive(bytes);
socket.Close();
}
catch
{
}
return Encoding.ASCII.GetString(bytes);

