Mercurial > hg > openttd
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");