mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-11 21:01:29 +00:00
* [CPP] Enable and build compliance with cpp20 * Windows build fix * bump fmt version * Updated fmt to 9.1, updated cmake minimum and verified preprocessor stuff works. * Missing : * Fix warning: top-level comma expression in array subscript is deprecated * Fix warning: top-level comma expression in array subscript is deprecated Co-authored-by: KimLS <KimLS@peqtgc.com>
77 lines
2.4 KiB
C++
Executable File
77 lines
2.4 KiB
C++
Executable File
#include "../client.h"
|
|
#include "../worldserver.h"
|
|
|
|
extern WorldServer worldserver;
|
|
|
|
void command_zonelock(Client *c, const Seperator *sep)
|
|
{
|
|
int arguments = sep->argnum;
|
|
if (!arguments) {
|
|
c->Message(Chat::White, "Usage: #zonelock list - Lists Locked Zones");
|
|
if (c->Admin() >= commandLockZones) {
|
|
c->Message(
|
|
Chat::White,
|
|
"Usage: #zonelock lock [Zone ID] or #zonelock lock [Zone Short Name] - Locks a Zone by ID or Short Name"
|
|
);
|
|
c->Message(
|
|
Chat::White,
|
|
"Usage: #zonelock unlock [Zone ID] or #zonelock unlock [Zone Short Name] - Unlocks a Zone by ID or Short Name"
|
|
);
|
|
}
|
|
return;
|
|
}
|
|
|
|
std::string lock_type = Strings::ToLower(sep->arg[1]);
|
|
bool is_list = lock_type.find("list") != std::string::npos;
|
|
bool is_lock = lock_type.find("lock") != std::string::npos;
|
|
bool is_unlock = lock_type.find("unlock") != std::string::npos;
|
|
if (!is_list && !is_lock && !is_unlock) {
|
|
c->Message(Chat::White, "Usage: #zonelock list - Lists Locked Zones");
|
|
if (c->Admin() >= commandLockZones) {
|
|
c->Message(
|
|
Chat::White,
|
|
"Usage: #zonelock lock [Zone ID] or #zonelock lock [Zone Short Name] - Locks a Zone by ID or Short Name"
|
|
);
|
|
c->Message(
|
|
Chat::White,
|
|
"Usage: #zonelock unlock [Zone ID] or #zonelock unlock [Zone Short Name] - Unlocks a Zone by ID or Short Name"
|
|
);
|
|
}
|
|
return;
|
|
}
|
|
|
|
auto pack = new ServerPacket(ServerOP_LockZone, sizeof(ServerLockZone_Struct));
|
|
ServerLockZone_Struct *lock_zone = (ServerLockZone_Struct *) pack->pBuffer;
|
|
strn0cpy(lock_zone->adminname, c->GetName(), sizeof(lock_zone->adminname));
|
|
|
|
if (is_list) {
|
|
lock_zone->op = ServerLockType::List;
|
|
worldserver.SendPacket(pack);
|
|
}
|
|
else if (!is_list && c->Admin() >= commandLockZones) {
|
|
auto zone_id = (
|
|
sep->IsNumber(2) ?
|
|
static_cast<uint16>(std::stoul(sep->arg[2])) :
|
|
static_cast<uint16>(ZoneID(sep->arg[2]))
|
|
);
|
|
std::string zone_short_name = Strings::ToLower(ZoneName(zone_id, true));
|
|
bool is_unknown_zone = zone_short_name.find("unknown") != std::string::npos;
|
|
if (zone_id && !is_unknown_zone) {
|
|
lock_zone->op = is_lock ? ServerLockType::Lock : ServerLockType::Unlock;
|
|
lock_zone->zoneID = zone_id;
|
|
worldserver.SendPacket(pack);
|
|
}
|
|
else {
|
|
c->Message(
|
|
Chat::White,
|
|
fmt::format(
|
|
"Usage: #zonelock {0} [Zone ID] or #zonelock {0} [Zone Short Name]",
|
|
is_lock ? "lock" : "unlock"
|
|
).c_str()
|
|
);
|
|
}
|
|
}
|
|
safe_delete(pack);
|
|
}
|
|
|