eqemu-server/zone/gm_commands/exptoggle.cpp
Alex King a6fa6084fa
[Feature] Add Experience Gain Toggle. (#2676)
* [Feature] Add Experience Gain Toggle.

# Perl
- Add `$client->IsEXPEnabled()`.
- Add `$client->SetEXPEnabled(is_exp_enabled)`.

# Lua
- Add `client:IsEXPEnabled()`.
- Add `client:SetEXPEnabled(is_exp_enabled)`.

# Commands
- Add `#exptoggle [Toggle] - Toggle your or your target's experience gain.`.

# Notes
- Allows operators to turn on/off a player's experience gain individually without changing their rule values.
- The command allows operators to give players access to the command to disable their own experience gain.
2022-12-30 17:30:23 -05:00

29 lines
687 B
C++

#include "../client.h"
void command_exptoggle(Client *c, const Seperator *sep)
{
auto arguments = sep->argnum;
if (!arguments || arguments > 1) {
c->Message(Chat::White, "Usage: #exptoggle [Toggle] - Toggle your or your target's experience gain.");
return;
}
auto t = c;
if (c->GetTarget() && c->GetTarget()->IsClient() && c->GetGM()) {
t = c->GetTarget()->CastToClient();
}
const auto is_exp_enabled = Strings::ToBool(sep->arg[1]);
t->SetEXPEnabled(is_exp_enabled);
c->Message(
Chat::White,
fmt::format(
"Experience gain for {} is now {}abled.",
c->GetTargetDescription(t, TargetDescriptionType::LCSelf),
is_exp_enabled ? "en" : "dis"
).c_str()
);
}