Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow server to supply a reason to kicked / banned clients #7756

Closed
duckfullstop opened this issue Sep 30, 2019 · 0 comments
Closed

Allow server to supply a reason to kicked / banned clients #7756

duckfullstop opened this issue Sep 30, 2019 · 0 comments

Comments

@duckfullstop
Copy link
Contributor

@duckfullstop duckfullstop commented Sep 30, 2019

The problem

Right now, when a server operator wants to kick or ban a client, the client is booted straight back to the main menu with a simple "You have been kicked" UI message.

This is fine for basic usage, but quite often it is extremely useful to provide the client with extra context as to why they have been kicked or banned, so that they may learn from their misdemeanours. Right now, the only way to achieve this is to send a direct message to the client immediately before kicking them - however, this isn't particularly obvious to the offending client, because it is only visible in two places:

  • for (potentially fractions of) a second while the client is disconnecting and the screen is frozen, in the chat area
  • in the console, which the end user may not think / know to check

The suggested solution

It would be incredibly helpful to operators to be able to define a reason alongside kick / ban commands that are then displayed to the user (and to the rest of the server in the disconnect reason posted in chat).

For example, a player breaching rules may get a UI console prompt with something like You have been kicked: 'Please don't destroy trees', or You have been banned: 'The administrator didn't like the cup of tea you made for them'. The message would also be displayed in the server chat for everyone else, for example: * Player has left the game (Kicked: 'Please don't destroy trees').

This will probably involve adding message data to a kick packet, so it'll need a networking change.

The console commands kick and ban could simply be extended to the format [kick|ban] [clientid|ipaddress] (reason) (where the reason is optional), allowing backwards compatibility with existing scripts that call these commands.

Bonus points

For extra bonus points, adding functionality to the ban system to record that reason with the IP address in openttd.cfg (so that when the client tries to reconnect they get the same message) would round off this new functionality exceptionally well.

bjarnithor99 added a commit to bjarnithor99/OpenTTD that referenced this issue Dec 12, 2019
…d clients

This commit adds the missing feature of allowing the server owner to
provide a reason for kicking/banning a client. The implementation
extends the network protocol by adding a new network action called
NETWORK_ACTION_KICKED that is capable of having an error string, unlike
the other network error packages. Additionally, the kick function
broadcasts a message to all clients about the kicked client and the
reason for the kick.
bjarnithor99 added a commit to bjarnithor99/OpenTTD that referenced this issue Jan 13, 2020
…d clients

This commit adds the missing feature of allowing the server owner to
provide a reason for kicking/banning a client, which the client sees in
a pop-up window after being kicked. The implementation extends the
network protocol by adding a new network action called
NETWORK_ACTION_KICKED that is capable of having an error string, unlike
the other network error packages.  Additionally, the kick function
broadcasts a message to all clients about the kicked client and the
reason for the kick.
bjarnithor99 added a commit to bjarnithor99/OpenTTD that referenced this issue Jan 21, 2020
…d clients

    This commit adds the missing feature of allowing the server owner to
    provide a reason for kicking/banning a client, which the client sees in
    a pop-up window after being kicked. The implementation extends the
    network protocol by adding a new network action called
    NETWORK_ACTION_KICKED that is capable of having an error string, unlike
    the other network error packages.  Additionally, the kick function
    broadcasts a message to all clients about the kicked client and the
    reason for the kick.
@LordAro LordAro closed this in #7859 Feb 4, 2020
LordAro added a commit that referenced this issue Feb 4, 2020
    This commit adds the missing feature of allowing the server owner to
    provide a reason for kicking/banning a client, which the client sees in
    a pop-up window after being kicked. The implementation extends the
    network protocol by adding a new network action called
    NETWORK_ACTION_KICKED that is capable of having an error string, unlike
    the other network error packages.  Additionally, the kick function
    broadcasts a message to all clients about the kicked client and the
    reason for the kick.
douiwby added a commit to douiwby/OpenTTD that referenced this issue Apr 16, 2020
…d clients

    This commit adds the missing feature of allowing the server owner to
    provide a reason for kicking/banning a client, which the client sees in
    a pop-up window after being kicked. The implementation extends the
    network protocol by adding a new network action called
    NETWORK_ACTION_KICKED that is capable of having an error string, unlike
    the other network error packages.  Additionally, the kick function
    broadcasts a message to all clients about the kicked client and the
    reason for the kick.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

1 participant
You can’t perform that action at this time.