WinMX Chat Server
Setup Guide
Full Documentation
User Discussions

WinMX Chat Server Documentation

General Information

Type /help in the channel for a list of commands you have access to

The Server comes with an example Config file, edit this to your channels details before you open the server (you can type /reload from an admined client with 'r' access to reload the config without restarting the server).

Configuration File

A default example configuration file is included with WCS, you can edit this file in any standard text editor to configure your room.

The following configuration options can be used in the config.ini file: (click for a description)

This option can be used to set the name of the channel, for example:
ChannelName=The Great Room
this sets the channel name to "The Great Room"

This option can be used to set the room topic, for example:
Topic=The Greatest Room on WinMX
this would show the topic in the channel list and in the room upon entry as "The Greatest Room on WinMX"

This option can be used to set the port that WCS uses to listen for connections. This is the port that must be allowed in any firewalls and/or forwarded in any NAT routers.

This option can be used to set the the channels Message Of The Day (The text that shows to users when they enter)

This is an alternate way of setting the channel MOTD, this is simpler than using MOTD= for long MOTDs
MOTDLine=Line one of the motd
MOTDLine=this is an additional line
This would show the MOTD as 2 lines:
Line one of the MOTD
this is an additional line

This option reduces the number of connections WCS makes to the WPN to 3 connections, this reduced the bandwidth usage low enough that dialup users can host. Note: hosting a channel on dialup is not recommended and should only be used as a temporary measure.

This option can be used to set WCS in offline mode, in ths mode WCS will not connect to the internet and the channel will not show in the channel list. Useful for something i'm sure...
Default is online mode, set Offline=1 to take the channel offline.

This allows you to specify how many connections WCS should make to the WPN (maximum 6 in normal mode, 3 in dialup mode). It is recommended to keep this value above 3, as values below this cause extremely poor channel listings.

This option can be used to set the maximum number of users that can be in the channel.
This will allow 75 users in to the channel, if any more users attempt to enter they will be refused entry.

This option can be used to set the number of fake users that will appear in the channel list.
This will allow you to display your channel as having more users in it than it really does
would show on the channel list as the channel having 120 users.

Please don't be stupid and set this to rediculous values, there are already enough rooms spamming the channel list pretending to have 600 users - nobody is dumb enough to believe it and anyone with any sense avoids channels with fake listings.

This allows you to adjust how many users can join the channel from a single IP Address. Default is 3 users per IP Address.

Enable/Disable join flood protection (it is recomended that you leave this set to "1" - Enabled)

Allows you to change how many messages a user can send in 10 seconds before it is considered flooding and the users text starts being ignored, Default is 5. Users with F access can continue to flood messages beyond this limit.

Allows you to specify additional DNS servers to use for reverse DNS lookups (gettign users hostnames). Useful if your default DNS servers are slow.

Allows you to specify a different peer cache to use for initial connection (unlike other servers WCS does not need to use the cache again once connected).

You can either specify an IP Address to set 1 cache, or you can specify a hostname to use. If you specify a hostname that resolves to several IP Addresses then it will query them all.

Specifies if WCS should use the file count the client reports, or the actual number of files the user has shared.

The main noticeable difference is when users have WinMX set to share more files than the limit for their connection type, set to 0 it will display the reported file count, set to 1 it will display the actual shared files.

Additionally if set to 1 if users change their shared file count it will update the user list with their new file count automatically.

If not specified this defaults to 0 (display reported count) however for newly set up channels the default configuration sets this to 1 (use real count).

This option can be used to set a second and third channelname in the channel list, so that the channel appears more than once in the channel list. The syntax is:
ChannelName2=Great Room Back Door
ChannelName3=Great Room Side Door

NOTE: Channel names 2 and 3 will alternate with each one showing 50% of the time, If you always want a second listing, use ChannelName2 and ChannelName3 set to the same.

These options can be used to set the topic of the ChannelName2 and ChannelName3 listings on the channel list. See ChannelName2=/ChannelName3= above.

When banning a user the duration of the ban can be specified in the ban command, however if no time is specified then this value is used instead.

this ban duration is specified as the number of minutes to ban for, 0 minutes is a perminent ban, the highest value that can be set is 2 days.

This allows RCMS style command syntax to be used in the channel. Basically allows #usercmd and #admincmd to be placed in front of commands. Can be useful for rooms transitioning from RCMS style servers.

Limits the colour codes that can be used in the channel to only valid ones.

Strips the color codes from user names in text within the channel.

This allows you to enable logging of the channel. Valid values:
0 No logging (default)
1 A single log file named log.txt
2 Log files for each day, files are named Log-DD-MM-YY.txt with the current date in the filename

This option can be used to set the path to store the log files in (required Logging to be enabled, see Logging=).

This option can be used to set the number of characters to trim from the end of user names.
0 will show the full name, 5 will show the name plus first 3 numbers, 9 will show the short name.
For instance:
A user with the name 'User000_12345' will appear as 'User' in the channel when they type.

This is the 'Name' that shows when typing from the WCS console on windows, also on server output in bot mode, and any other place text or commands come from the server.

Default Value is
Which shows as
<Server> I am typing from the WCS server.

For servers with multiple network interfaces, allows you to specify which interface to use for WCS, it will use this interface for both inbound and outbound connections. Value must be the IP Address of an interface.

Default is (any IP Address)

These options are used to change the formatting of text within the channel.
You can change the format for text in the room, so you can have it show as for example <<<Name>>> Text
instead of <Name> Text - Although i'm sure you can come up with something a little more creative.

Use $NAME$ for the name (or $RAWNAME$ if you want the entire username with ID) and $TEXT$ for the users text.

The Default for this setting (so you can see an example of its usage) is
TextFormat=#c2#<$NAME$#c2#> #c1#$TEXT$

Multiple Text Formats

As well as the TextFormat= you can also use TextFormat1= TextFormat2=, up to TextFormat9= users with "1" Access (a standard access level such as those used for access to commands) would then have their text formatted as the TextFormat1= setting instead, and an admin with "7" access would have their text formatted as the TextFormat7= setting.

An example of where this would be useful is if you had 2 levels of admins, you could have the users text in one colour, the full admins in another colour, and the other admins in another colour. Or you can just use it so when you type it looks better than when everyone else types :-D

If you are using different formats for different users then it is better to use text formats for each login. See Password= below.

Enable/Disable the Fancy Join messages. These allow you to customise the appearance of the "User has entered" messages. Default is 0 (disabled) set to 1 to enable.

Sets the format for the join message that normal users see.

Default Value:
FancyEntryMessage=#c4#$RAWNAME$ ($LINE$ $FILES$ files) has entered
Requires FancyEntry=1 to be set (see above)

For the possible variables that can be used see Variables below

Sets the format for the join message that users with I access see, used for those who can see IP Addresses.

Default Value:
FancyEntryMessageIP=#c4#$RAWNAME$ ($LINE$ $FILES$ files) has entered #c5#($IP$)
Requires FancyEntry=1 to be set (see above)

For the possible variables that can be used see Variables below

This sets the default access for any user when they enter. Refer to list below for access descriptions. Example:

This will give a user AaC access when they enter the channel.

Syntax is: Password=<Access level>=<Password>=<Text Format>=<Login Announcement>
For example:
Password=AaCSsIK+=thisismypassword=#c5#<#c1#$NAME$#c5#>#c2# $TEXT$=$NAME$ has logged in

This creates a password of "thisismypassword", an admin would log in using the command /login thisismypassword for this access.

Once logged in with that password the user would have an access level of AaCSsIK+, their text format would be set to "#c5#<#c1#$NAME$#c5#>#c2# $TEXT$" (See TextFormat= above) and it would announce "UserName has logged in!" to the channel.


This would create a password of "Host" (usage: /login Host) with * access (full access) and an @, you should have a login like ths for yourself. Note: you should not give out * access to just every admin, yes it may seem like the easy way out but you'll regret it the first time an admin does something stupid, they will have *full* access to *everything*

You can create as many passwords as you like, and use any combination of access levels that you want to for each, it is common for rooms to have a couple of "Full" admins with full access to everything, and several limited access admins who have access only to commands they need to control the users.

Refer to list below for access levels.

This allows you to replace words in text a user types with something else. Replace=FindWord=ReplaceWord

Whenever anyone types in the FindWord it will be replaced as ReplaceWord.

For example Replace=Hello=Bye

if someone typed Hello bob then it would come out as <Name> Bye bob

You can add as many Replace= lines as you like, they are then processed in the order they appear within the config file. This allows multiple replacements to occur to the same word if you wish, or allows you to replace "Hell" with "Whatever" without replacing "Hello" with "Whatevero" (by adding replacements for Hello as well)

This allows you to block certain words from being used in the channel. You can block as many words as you like, if the text a user types contains any of these then it will not appear in the channel.
BlockedWord=<the word>

Here are some examples:

Similar to BlockedWords= above, this allows you to block certain words from appearing in a users name. For example:
would prevent IdiotUser000_00000 and IAmAMoron000_00000 from entering.

Note: don't use this to ban users (as they will just change their name), use bans for that - just use this to stop general words from appearing in a users name.

See Custom Commands below.

Channel Commands

Once in the channel you can use various commands in the room. Access to these commands is restricted only to users with the relevant access level (usually obtained through logging in).

For commands which require a username you can either use the complete username or any part of the username.

The following commands are avaliable: (click for a description)

Gives you the full name of the channel you are in

Displays the Message of the Day

Gives a list of avaliable colour codes you can use

Gives a list of commands avaliable to you

Enables bot mode (disables features such as coloured text that many bots dislike)

Displays your current access level

/login <password>
Allows you to log in using a password from the config file

/forcelogin <username> <password> (f access)
Allows you to force another user to login as if they had used the /login command

/me /action /emote (A access)
Used for Action text (purple text for doing something as apposed to normal text for saying something)

/opmsg <text>
Sends a message that only admins that have O access or @ can see.

/hidecmd (H access)
Use this before a command to hide the command from others with watch command access
For example:
/hidecmd /notice hi there
This will do the command "/notice hi there", but wouldn't show to the admins who have watchcommands access who typed the command

/message <username> <text> (m access)
Used to send a private message only to the user given as <username>

/hide (h access)
This allows you to hide, you appear to leave the channel and vanish from the user list. Use again to unhide and appear to rejoin the channel.

/hide <username> (h access)
Allows you to hide another user from the channel, they appear to leave the channel. Use a second time to unhide a user.

/exile <username> <channel> (e access)
This command will send a user to another room

/exile User000_12345 AMuchBetterRoom_0100007F0001
Sends the user to the channel AMuchBetterRoom_0100007F0001

/kick <username> (k or K access for normal users, k to kick @ or P users)
Kicks the user out of the room. To kick users with P or @ access you need k access as apposed to K which can only kick normal users.

/ban <username> [duration] (B access)
Bans the user for the specified duration. If no duration is specified then it uses the default value from the config file.

/kickban <username> [duration] (B and k or K for normal users, B and k for @ or P users)
Kicks the user and bans them at the same time. Refer to /kick and /ban commands.

/banip <IP> [duration] (B access)
This allows you to manually ban an IP Address, this is useful to ban users who aren't in the channel. If ban duration is not specified it uses the default from the config file.

/listbans (L access)
This command lists the current bans in the channel.

/unban <username/IP> (U access)
This command removes an active ban for the specified user or IP Address

/clearbans (U access)
Use this command to remove all current bans

/topic <text> (T access)
Used to change the topic of the room.

/topic2 <text> (T access)
Used to change the topic2 of the room.

/topic3 <text> (T access)
Used to change the topic3 of the room.

/notice <text> (n access)
Sends a public notice to the room, without the senders name.

/gnotice <access> <text> (G access)
Sends a notice to everyone with the <access> access letter.

Note: for the purpose of this command, * access is considered a standard access letter, and as such * will not let you see the notice unless you also have the other access letter.

/privnotice <name> <text> (m and n access)
Used to send a notice to a single user

/setmotd <text> (M access)
This command changed the Message Of The Day.

/addmotd <text> (M access)
This command is used to add text on to the end of the MOTD. This is useful for setting a long MOTD in the channel that can not be entered in a single command.

/reload (r access)
This command is used to reload the config file for the room.

/redirect <channel> (R access)
This command redirects everyong in the channel to a new channel

/stats (S access)
Displays the current channel statistics

/stats <username> (s access)
Displays the stats for the specified user

/who (s S and I access)
This command gives a list of the users in the room, useful as a quick user summary.

/limit (l access)
This command is used to alter the maximum number of users in the room from the original setting given in the config.ini file.

/setformat <username> <format> (z access)
This command is used to set ausers text format. See the TextFormat= config file option.

/setaccess <username> <access> (* access)
Use this command to change the access level of another user.

Access Letters
@ Has @ symbol on user list.
+ Has + symbol on user list.
a Can Talk
A Can use action text
C Can use coloured text
N Can use multi-line text (#\n#)
F Can flood text (Can send faster than the normal flood limit)
b Is a bot
I Can see IP Addresses
f Can use /forcelogin
O Can see opmsg
m Can use /message to send private messages
H Can use /hidecmd
W Can see other users commands
h Can hide/hide other users
e Can exile users
P Protected from /kick by K (but not k)
K Can kick normal users
k Can kick all users (including P users)
B Can ban users
L Can see ban list
U Can unban users
T Can change the channel topic
n Can use /notice
G Can use /gnotice
M Can change the MOTD
r Can reload the server config
R Can redirect the channel
S Can see channel stats
s Can see user stats
l Can set channel limit
z Can set users text formats
* Can do everything
0-9 Text Formats (see above)

The following variables can be used within an MOTD or an Entry Message.
$NAME$ Users name without colours
$COLNAME$ Users name coloured
$RAWNAME$ Raw username without colours
$COLRAWNAME$ Raw username coloured
$LINE$ Connection speed
$FILES$ File count
$PRIMIP$ Primary Users IP (Decimal)
$PRIMUDPPORT$ Primary Users UDP Port (Decimal)
$PRIMIPHEX$ Primary Users IP (Hexadecimal)
$PRIMUDPPORTHEX$ Primary Users UDP Port (Hexadecimal)
$IP$ Users IP Address
$HOSTNAME$ Users Hostname
$ISP$ Users ISP
$HOSTUPTIME$ Hosts Uptime
$ROOMUPTIME$ Channel Uptime
$ROOMNAME$ Channel name user entered with
$ROOMIP$ IP Address of host
$ROOMPORT$ Port channel is on
$CHANNELNAME$ Channel Name
$CHANNELNAME2$ Channel Name 2
$CHANNELNAME3$ Channel Name 3
$COUNTRYNAME$ Users Country Name (requires country database)
$COUNTRY2$ Users Country 2 letter code (requires country database)
$COUNTRY3$ Users Country 3 letter code (requires country database)

Custom Commands
If you have a bot in your channel then you can configure WCS to send certain commands to the bot to handle instead of being handled by WCS. This allows you to customise existing commands or to create your own new commands.

To set up a custom command add a CustomCommand=<command>=<password> line to your channel config. The password should be set to the password that the bot uses to log in.


If your bots login was set up as Password=*+=Botty (For a password of Botty) then you could add the following:
Then whenever anyone types the /kick command instead of being handled by the server as usual it would be sent to the bot for it to handle it (and the server would not act on the /kick command, nor would it return access denied if you didn't have access).

As a precaution and to make it more flexible, if the bot were to then leave the channel, the server would begin handling the /kick command again as usual. Additionally if the bot itself used the /kick command then it would be handled by the server (instead of being sent back to the bot).

Note: you can also use * at the end of the command, so if you wanted your bot to handle /kick and /kickban you could simply set it to handle /kick* and it would handle all commands that begin with /kick. Also note that parameters are not part of the command, if you type "/kick John" then the command is "/kick" and the parameters are "John". Both will be sent to the bot, however the server will only use the /kick part when deciding what to do with the command.

You can also set a command to point to another command!


CustomCommand=/hi=/me welcomes $PARAMS$ to the channel with open arms.

If you typed "/hi John", then the command that would be executed would be "/me welcomes John to the channel with open arms."

This can be useful to create your own shotcuts for commands, for example /k as a shortcut for /kick.

© Copyright 2007 All rights reserved. Page Generated Sat, 17 Apr 2021 19:20:24 in 0.703 seconds.