diff --git a/include/aoclient.h b/include/aoclient.h
index ffe0dce..137ddfd 100644
--- a/include/aoclient.h
+++ b/include/aoclient.h
@@ -1518,6 +1518,24 @@ class AOClient : public QObject {
void cmdUnCharCurse(int argc, QStringList argv);
void cmdCharSelect(int argc, QStringList argv);
+ /**
+ * @brief Sends a message to an area that you a CM in.
+ *
+ * @details Usage: /a
+ *
+ * @iscommand
+ */
+ void cmdA(int argc, QStringList argv);
+
+ /**
+ * @brief Send a message to all areas that you are a CM in.
+ *
+ * @details Usage: /s
+ *
+ * @iscommand
+ */
+ void cmdS(int argc, QStringList argv);
+
///@}
/**
@@ -1969,6 +1987,8 @@ class AOClient : public QObject {
{"charcurse", {ACLFlags.value("MUTE"), 1, &AOClient::cmdCharCurse}},
{"uncharcurse", {ACLFlags.value("MUTE"), 1, &AOClient::cmdUnCharCurse}},
{"charselect", {ACLFlags.value("NONE"), 0, &AOClient::cmdCharSelect}}
+ {"a", {ACLFlags.value("NONE"), 2, &AOClient::cmdA}},
+ {"s", {ACLFlags.value("NONE"), 0, &AOClient::cmdS}}
};
/**
diff --git a/src/commands/messaging.cpp b/src/commands/messaging.cpp
index c335de7..dcd1144 100644
--- a/src/commands/messaging.cpp
+++ b/src/commands/messaging.cpp
@@ -412,3 +412,36 @@ void AOClient::cmdCharSelect(int argc, QStringList argv)
target->sendPacket("DONE");
}
}
+
+void AOClient::cmdA(int argc, QStringList argv)
+{
+ bool ok;
+ int area_id = argv[0].toInt(&ok);
+ if (!ok) {
+ sendServerMessage("This does not look like a valid AreaID.");
+ return;
+ }
+
+ AreaData* area = server->areas[area_id];
+ if (!area->owners.contains(id)) {
+ sendServerMessage("You are not CM in that area.");
+ return;
+ }
+
+ argv.removeAt(0);
+ QString sender_name = ooc_name;
+ QString ooc_message = argv.join(" ");
+ server->broadcast(AOPacket("CT", {"[CM]" + sender_name, ooc_message}), area_id);
+}
+
+void AOClient::cmdS(int argc, QStringList argv)
+{
+ int all_areas = server->areas.size() - 1;
+ QString sender_name = ooc_name;
+ QString ooc_message = argv.join(" ");
+
+ for (int i = 0; i <= all_areas; i++) {
+ if (server->areas[i]->owners.contains(id))
+ server->broadcast(AOPacket("CT", {"[CM]" + sender_name, ooc_message}), i);
+ }
+}
diff --git a/src/commands/moderation.cpp b/src/commands/moderation.cpp
index 6e3b99c..8f57472 100644
--- a/src/commands/moderation.cpp
+++ b/src/commands/moderation.cpp
@@ -179,6 +179,7 @@ void AOClient::cmdBans(int argc, QStringList argv)
banned_until = "The heat death of the universe";
else
banned_until = QDateTime::fromSecsSinceEpoch(ban.time).addSecs(ban.duration).toString("dd.MM.yyyy, hh:mm");
+ recent_bans << "Ban ID: " + QString::number(server->db_manager->getBanID(ban.ipid));
recent_bans << "Affected IPID: " + ban.ipid;
recent_bans << "Affected HDID: " + ban.hdid;
recent_bans << "Reason for ban: " + ban.reason;
diff --git a/src/packets.cpp b/src/packets.cpp
index 5ffede7..284ccc9 100644
--- a/src/packets.cpp
+++ b/src/packets.cpp
@@ -28,7 +28,7 @@ void AOClient::pktHardwareId(AreaData* area, int argc, QStringList argv, AOPacke
{
hwid = argv[0];
if(server->db_manager->isHDIDBanned(hwid)) {
- sendPacket("BD", {server->db_manager->getBanReason(hwid)});
+ sendPacket("BD", {server->db_manager->getBanReason(hwid) + "\nBan ID: " + QString::number(server->db_manager->getBanID(hwid))});
socket->close();
return;
}