Add cli character:copy-character and #copycharacter

This commit is contained in:
Akkadius
2020-07-18 21:07:22 -05:00
parent 880b19cc7f
commit 2e0c892b07
8 changed files with 270 additions and 18 deletions
+45 -3
View File
@@ -54,6 +54,7 @@ namespace WorldserverCommandHandler {
* Register commands
*/
function_map["world:version"] = &WorldserverCommandHandler::Version;
function_map["character:copy-character"] = &WorldserverCommandHandler::CopyCharacter;
function_map["database:version"] = &WorldserverCommandHandler::DatabaseVersion;
function_map["database:set-account-status"] = &WorldserverCommandHandler::DatabaseSetAccountStatus;
function_map["database:schema"] = &WorldserverCommandHandler::DatabaseGetSchema;
@@ -240,12 +241,12 @@ namespace WorldserverCommandHandler {
"--compress"
};
if (argc < 3 || cmd[{"-h", "--help"}]) {
EQEmuCommand::ValidateCmdInput(arguments, options, cmd, argc, argv);
if (cmd[{"-h", "--help"}]) {
return;
}
EQEmuCommand::ValidateCmdInput(arguments, options, cmd, argc, argv);
auto database_dump_service = new DatabaseDumpService();
bool dump_all = cmd[{"-a", "--all"}];
@@ -453,4 +454,45 @@ namespace WorldserverCommandHandler {
}
}
/**
* @param argc
* @param argv
* @param cmd
* @param description
*/
void CopyCharacter(int argc, char **argv, argh::parser &cmd, std::string &description)
{
description = "Copies a character into a destination account";
std::vector<std::string> arguments = {
"source_character_name",
"destination_character_name",
"destination_account_name"
};
std::vector<std::string> options = { };
if (cmd[{"-h", "--help"}]) {
return;
}
EQEmuCommand::ValidateCmdInput(arguments, options, cmd, argc, argv);
std::string source_character_name = cmd(2).str();
std::string destination_character_name = cmd(3).str();
std::string destination_account_name = cmd(4).str();
LogInfo(
"Attempting to copy character [{}] to [{}] via account [{}]",
source_character_name,
destination_character_name,
destination_account_name
);
database.CopyCharacter(
source_character_name,
destination_character_name,
destination_account_name
);
}
}