changeset 17118:fd7c1739ca1a draft

(svn r21855) -Feature [FS#4368]: [Network] Console command to change the password of other companies for servers (dihedral)
author rubidium <rubidium@openttd.org>
date Wed, 19 Jan 2011 16:52:57 +0000
parents a6550c45bdb2
children 342dacb475e6
files src/console_cmds.cpp
diffstat 1 files changed, 29 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/console_cmds.cpp
+++ b/src/console_cmds.cpp
@@ -1518,19 +1518,43 @@
 DEF_CONSOLE_CMD(ConCompanyPassword)
 {
 	if (argc == 0) {
-		IConsoleHelp("Change the password of your company. Usage: 'company_pw \"<password>\"'");
+		const char *helpmsg;
+
+		if (_network_dedicated) {
+			helpmsg = "Change the password of a company. Usage: 'company_pw <company-no> \"<password>\"";
+		} else if (_network_server) {
+			helpmsg = "Change the password of your or any other company. Usage: 'company_pw [<company-no>] \"<password>\"'";
+		} else {
+			helpmsg = "Change the password of your company. Usage: 'company_pw \"<password>\"'";
+		}
+
+		IConsoleHelp(helpmsg);
 		IConsoleHelp("Use \"*\" to disable the password.");
 		return true;
 	}
 
-	if (argc != 2) return false;
+	CompanyID company_id;
+	const char *password;
+	const char *errormsg;
 
-	if (!Company::IsValidID(_local_company)) {
-		IConsoleError("You have to own a company to make use of this command.");
+	if (argc == 2) {
+		company_id = _local_company;
+		password = argv[1];
+		errormsg = "You have to own a company to make use of this command.";
+	} else if (argc == 3 && _network_server) {
+		company_id = (CompanyID)(atoi(argv[1]) - 1);
+		password = argv[2];
+		errormsg = "You have to specify the ID of a valid human controlled company.";
+	} else {
 		return false;
 	}
 
-	const char *password = NetworkChangeCompanyPassword(_local_company, argv[1], false);
+	if (!Company::IsValidHumanID(company_id)) {
+		IConsoleError(errormsg);
+		return false;
+	}
+
+	password = NetworkChangeCompanyPassword(company_id, password, false);
 
 	if (StrEmpty(password)) {
 		IConsolePrintF(CC_WARNING, "Company password cleared");