mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r15200) -Feature: give server admins a tool to combat profanity in nick names (based on patch by dihedral)
This commit is contained in:
parent
0fa6e050e4
commit
f2777cd02d
|
@ -555,6 +555,33 @@ DEF_CONSOLE_CMD(ConServerInfo)
|
|||
return true;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConClientNickChange)
|
||||
{
|
||||
if (argc != 3) {
|
||||
IConsoleHelp("Change the nickname of a connected client. Usage: 'client_name <client-id> <new-name>'");
|
||||
IConsoleHelp("For client-id's, see the command 'clients'");
|
||||
return true;
|
||||
}
|
||||
|
||||
ClientID client_id = (ClientID)atoi(argv[1]);
|
||||
|
||||
if (client_id == CLIENT_ID_SERVER) {
|
||||
IConsoleError("Please use the command 'name' to change your own name!");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (NetworkFindClientInfoFromClientID(client_id) == NULL) {
|
||||
IConsoleError("Invalid client");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!NetworkServerChangeClientName(client_id, argv[2])) {
|
||||
IConsoleError("Cannot give a client a duplicate name");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
DEF_CONSOLE_CMD(ConKick)
|
||||
{
|
||||
NetworkClientInfo *ci;
|
||||
|
@ -1690,6 +1717,8 @@ void IConsoleStdLibRegister()
|
|||
IConsoleCmdRegister("reset_company", ConResetCompany);
|
||||
IConsoleCmdHookAdd("reset_company", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
|
||||
IConsoleAliasRegister("clean_company", "reset_company %A");
|
||||
IConsoleCmdRegister("client_name", ConClientNickChange);
|
||||
IConsoleCmdHookAdd("client_name", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
|
||||
IConsoleCmdRegister("kick", ConKick);
|
||||
IConsoleCmdHookAdd("kick", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
|
||||
IConsoleCmdRegister("ban", ConBan);
|
||||
|
|
|
@ -50,6 +50,7 @@ void NetworkServerYearlyLoop();
|
|||
void NetworkServerChangeOwner(Owner current_owner, Owner new_owner);
|
||||
void NetworkServerShowStatusToConsole();
|
||||
bool NetworkServerStart();
|
||||
bool NetworkServerChangeClientName(ClientID client_id, const char *new_name);
|
||||
|
||||
NetworkClientInfo *NetworkFindClientInfoFromIndex(ClientIndex index);
|
||||
NetworkClientInfo *NetworkFindClientInfoFromClientID(ClientID client_id);
|
||||
|
|
|
@ -1442,6 +1442,31 @@ bool NetworkFindName(char new_name[NETWORK_CLIENT_NAME_LENGTH])
|
|||
return found_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change the client name of the given client
|
||||
* @param client_id the client to change the name of
|
||||
* @param new_name the new name for the client
|
||||
* @return true iff the name was changed
|
||||
*/
|
||||
bool NetworkServerChangeClientName(ClientID client_id, const char *new_name)
|
||||
{
|
||||
NetworkClientInfo *ci;
|
||||
/* Check if the name's already in use */
|
||||
FOR_ALL_CLIENT_INFOS(ci) {
|
||||
if (strcmp(ci->client_name, new_name) == 0) return false;
|
||||
}
|
||||
|
||||
ci = NetworkFindClientInfoFromClientID(client_id);
|
||||
if (ci == NULL) return false;
|
||||
|
||||
NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, CC_DEFAULT, true, ci->client_name, new_name);
|
||||
|
||||
strecpy(ci->client_name, new_name, lastof(ci->client_name));
|
||||
|
||||
NetworkUpdateClientInfo(client_id);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Reads a packet from the stream
|
||||
bool NetworkServer_ReadPackets(NetworkClientSocket *cs)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue