add global chat toggle

This commit is contained in:
in1tiate 2021-03-09 18:40:58 -06:00
parent d1918e50a9
commit 49071e6936
3 changed files with 19 additions and 2 deletions

View File

@ -58,6 +58,7 @@ class AOClient : public QObject {
QString moderator_name = "";
QString ooc_name = "";
QString showname = "";
bool global_enabled = true;
QMap<QString, unsigned long long> ACLFlags {
{"NONE", 0ULL},
@ -212,6 +213,7 @@ class AOClient : public QObject {
void cmdSwitch(int argc, QStringList argv);
void cmdRandomChar(int argc, QStringList argv);
void cmdG(int argc, QStringList argv);
void cmdToggleGlobal(int argc, QStringList argv);
// Command helper functions
QString getAreaTimer(int area_idx, QTimer* timer);
@ -267,6 +269,7 @@ class AOClient : public QObject {
{"areakick", {ACLFlags.value("CM"), 1, &AOClient::cmdAreaKick}},
{"randomchar", {ACLFlags.value("NONE"), 0, &AOClient::cmdRandomChar}},
{"switch", {ACLFlags.value("NONE"), 1, &AOClient::cmdSwitch}},
{"toggleglobal", {ACLFlags.value("NONE"), 0, &AOClient::cmdToggleGlobal}},
};
QString partial_packet;

View File

@ -373,7 +373,10 @@ void AOClient::cmdG(int argc, QStringList argv)
QString sender_name = ooc_name;
QString sender_area = server->area_names.value(current_area);
QString sender_message = argv.join(" ");
server->broadcast(AOPacket("CT", {"[" + sender_area + "]" + sender_name, sender_message}));
for (AOClient* client : server->clients) {
if (client->global_enabled)
client->sendPacket("CT", {"[G][" + sender_area + "]" + sender_name, sender_message});
}
return;
}
@ -682,6 +685,13 @@ void AOClient::cmdRandomChar(int argc, QStringList argv)
changeCharacter(char_id);
}
void AOClient::cmdToggleGlobal(int argc, QStringList argv)
{
global_enabled = !global_enabled;
QString str_en = global_enabled ? "shown" : "hidden";
sendServerMessage("Global chat set to " + str_en);
}
QStringList AOClient::buildAreaList(int area_idx)
{
QStringList entries;

View File

@ -136,7 +136,11 @@ void AOClient::pktIcChat(AreaData* area, int argc, QStringList argv, AOPacket pa
void AOClient::pktOocChat(AreaData* area, int argc, QStringList argv, AOPacket packet)
{
ooc_name = dezalgo(argv[0]);
ooc_name = dezalgo(argv[0]).replace(QRegExp("\\[|\\]|\\{|\\}|\\#|\\$|\\%|\\&"), ""); // no fucky wucky shit here
if (ooc_name == server->getServerName()) // impersonation prevention
return;
QString message = dezalgo(argv[1]);
AOPacket final_packet("CT", {ooc_name, message, "0"});
if(message.at(0) == '/') {