eqemu-server/zone/gm_commands/set/set_auto_login.cpp

55 lines
1.3 KiB
C++

#include "../../client.h"
#include "../../groups.h"
#include "../../raids.h"
#include "../../raids.h"
#include "../../../common/repositories/account_repository.h"
void SetAutoLogin(Client* c, const Seperator* sep)
{
if (!RuleB(World, EnableAutoLogin)) {
c->Message(Chat::White, "Auto login is disabled.");
return;
}
const uint16 arguments = sep->argnum;
if (arguments < 2 || !sep->IsNumber(2)) {
c->Message(Chat::White, "Usage: #set auto_login [0|1]");
c->Message(Chat::White, "0 = Disable auto login for your account");
c->Message(Chat::White, "1 = Set auto login character to your current character");
return;
}
Client* t = c;
if (c->GetGM() && c->GetTarget() && c->GetTarget()->IsClient()) {
t = c->GetTarget()->CastToClient();
}
auto e = AccountRepository::FindOne(database, t->AccountID());
if (!e.id) {
c->Message(
Chat::White,
fmt::format(
"Failed to find an account entry for {}.",
c->GetTargetDescription(t)
).c_str()
);
return;
}
const bool set_login = Strings::ToBool(sep->arg[2]);
e.auto_login_charname = set_login ? t->GetCleanName() : std::string();
AccountRepository::UpdateOne(database, e);
c->Message(
Chat::White,
fmt::format(
"Auto login character has been set to '{}' for {}.",
e.auto_login_charname,
c->GetTargetDescription(t)
).c_str()
);
}