mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 16:51:29 +00:00
54 lines
1.9 KiB
C++
Executable File
54 lines
1.9 KiB
C++
Executable File
#include "../client.h"
|
|
#include "../worldserver.h"
|
|
|
|
extern WorldServer worldserver;
|
|
|
|
void command_flag(Client *c, const Seperator *sep)
|
|
{
|
|
if (sep->arg[2][0] == 0) {
|
|
if (!c->GetTarget() || (c->GetTarget() && c->GetTarget() == c)) {
|
|
c->UpdateAdmin();
|
|
c->Message(Chat::White, "Refreshed your admin flag from DB.");
|
|
}
|
|
else if (c->GetTarget() && c->GetTarget() != c && c->GetTarget()->IsClient()) {
|
|
c->GetTarget()->CastToClient()->UpdateAdmin();
|
|
c->Message(Chat::White, "%s's admin flag has been refreshed.", c->GetTarget()->GetName());
|
|
c->GetTarget()->Message(Chat::White, "%s refreshed your admin flag.", c->GetName());
|
|
}
|
|
}
|
|
else if (!sep->IsNumber(1) || atoi(sep->arg[1]) < -2 || atoi(sep->arg[1]) > 255 || strlen(sep->arg[2]) == 0) {
|
|
c->Message(Chat::White, "Usage: #flag [status] [acctname]");
|
|
}
|
|
|
|
else if (c->Admin() < commandChangeFlags) {
|
|
//this check makes banning players by less than this level
|
|
//impossible, but i'll leave it in anyways
|
|
c->Message(Chat::White, "You may only refresh your own flag, doing so now.");
|
|
c->UpdateAdmin();
|
|
}
|
|
else {
|
|
if (atoi(sep->arg[1]) > c->Admin()) {
|
|
c->Message(Chat::White, "You cannot set people's status to higher than your own");
|
|
}
|
|
else if (atoi(sep->arg[1]) < 0 && c->Admin() < commandBanPlayers) {
|
|
c->Message(Chat::White, "You have too low of status to suspend/ban");
|
|
}
|
|
else if (!database.SetAccountStatus(sep->argplus[2], atoi(sep->arg[1]))) {
|
|
c->Message(Chat::White, "Unable to set GM Flag.");
|
|
}
|
|
else {
|
|
c->Message(Chat::White, "Set GM Flag on account.");
|
|
|
|
std::string user;
|
|
std::string loginserver;
|
|
ParseAccountString(sep->argplus[2], user, loginserver);
|
|
|
|
ServerPacket pack(ServerOP_FlagUpdate, 6);
|
|
*((uint32 *) pack.pBuffer) = database.GetAccountIDByName(user.c_str(), loginserver.c_str());
|
|
*((int16 *) &pack.pBuffer[4]) = atoi(sep->arg[1]);
|
|
worldserver.SendPacket(&pack);
|
|
}
|
|
}
|
|
}
|
|
|