From 69f77548a8a821c2180af2d38460bfb2e02d3fd2 Mon Sep 17 00:00:00 2001 From: in1tiate <radwoodward@vikings.grayson.edu> Date: Fri, 30 Apr 2021 22:58:04 -0500 Subject: [PATCH 1/4] add firstperson variable and command toggle --- include/aoclient.h | 19 ++++++++++++++++++- src/commands/area.cpp | 6 +++--- src/commands/messaging.cpp | 7 +++++++ 3 files changed, 28 insertions(+), 4 deletions(-) diff --git a/include/aoclient.h b/include/aoclient.h index 1c2f799..bfdf32f 100644 --- a/include/aoclient.h +++ b/include/aoclient.h @@ -161,6 +161,13 @@ class AOClient : public QObject { */ bool global_enabled = true; + /** + * @brief If true, the client's messages will be sent in first-person mode. + * + * @see AOClient::cmdFirstPerson + */ + bool first_person = false; + /** * @brief If true, the client may not use in-character chat. */ @@ -1528,6 +1535,15 @@ class AOClient : public QObject { */ void cmdS(int argc, QStringList argv); + /** + * @brief Toggle whether the client's messages will be sent in first person mode. + * + * @details No arguments. + * + * @iscommand + */ + void cmdFirstPerson(int argc, QStringList argv); + ///@} /** @@ -1983,7 +1999,8 @@ class AOClient : public QObject { {"charselect", {ACLFlags.value("NONE"), 0, &AOClient::cmdCharSelect}}, {"togglemusic", {ACLFlags.value("CM"), 0, &AOClient::cmdToggleMusic}}, {"a", {ACLFlags.value("NONE"), 2, &AOClient::cmdA}}, - {"s", {ACLFlags.value("NONE"), 0, &AOClient::cmdS}} + {"s", {ACLFlags.value("NONE"), 0, &AOClient::cmdS}}, + {"firstperson", {ACLFlags.value("NONE"), 0, &AOClient::cmdFirstPerson}}, }; /** diff --git a/src/commands/area.cpp b/src/commands/area.cpp index 8ae19af..705c400 100644 --- a/src/commands/area.cpp +++ b/src/commands/area.cpp @@ -260,14 +260,14 @@ void AOClient::cmdBgLock(int argc, QStringList argv) { AreaData* area = server->areas[current_area]; area->bg_locked = true; - server->broadcast(AOPacket("CT", {"Server", current_char + " locked the background.", "1"}), current_area); + server->broadcast(AOPacket("CT", {server->server_name, current_char + " locked the background.", "1"}), current_area); } void AOClient::cmdBgUnlock(int argc, QStringList argv) { AreaData* area = server->areas[current_area]; area->bg_locked = false; - server->broadcast(AOPacket("CT", {"Server", current_char + " unlocked the background.", "1"}), current_area); + server->broadcast(AOPacket("CT", {server->server_name, current_char + " unlocked the background.", "1"}), current_area); } void AOClient::cmdStatus(int argc, QStringList argv) @@ -291,7 +291,7 @@ void AOClient::cmdStatus(int argc, QStringList argv) return; } arup(ARUPType::STATUS, true); - sendServerMessageArea(ooc_name + " changed status to " + arg); + server->broadcast(AOPacket("CT", {server->server_name, current_char + " changed status to " + arg.toUpper(), "1"}), current_area); } void AOClient::cmdJudgeLog(int argc, QStringList argv) diff --git a/src/commands/messaging.cpp b/src/commands/messaging.cpp index 044169d..2df2c15 100644 --- a/src/commands/messaging.cpp +++ b/src/commands/messaging.cpp @@ -445,3 +445,10 @@ void AOClient::cmdS(int argc, QStringList argv) server->broadcast(AOPacket("CT", {"[CM]" + sender_name, ooc_message}), i); } } + +void AOClient::cmdFirstPerson(int argc, QStringList argv) +{ + first_person = !first_person; + QString str_en = first_person ? "enabled" : "disabled"; + sendServerMessage("First person mode " + str_en + "."); +} From 0e05ed63f24d1886ca12726e85da7e41bc3bcf4a Mon Sep 17 00:00:00 2001 From: in1tiate <radwoodward@vikings.grayson.edu> Date: Fri, 30 Apr 2021 23:01:12 -0500 Subject: [PATCH 2/4] add firstperson cid check --- src/packets.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/packets.cpp b/src/packets.cpp index 10f25c7..2841836 100644 --- a/src/packets.cpp +++ b/src/packets.cpp @@ -568,7 +568,10 @@ AOPacket AOClient::validateIcPacket(AOPacket packet) // char id if (incoming_args[8].toInt() != char_id) return invalid; - args.append(incoming_args[8].toString()); + if (first_person) + args.append("-1"); // messages with a cid of -1 don't update the viewport + else + args.append(incoming_args[8].toString()); // sfx delay args.append(incoming_args[9].toString()); From b6f4982643745c66034ef7ee792c4cc78ae199f7 Mon Sep 17 00:00:00 2001 From: in1tiate <radwoodward@vikings.grayson.edu> Date: Fri, 30 Apr 2021 23:01:52 -0500 Subject: [PATCH 3/4] validate ic packets with a cid of -1 --- src/packets.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/packets.cpp b/src/packets.cpp index 2841836..dceddf2 100644 --- a/src/packets.cpp +++ b/src/packets.cpp @@ -566,7 +566,7 @@ AOPacket AOClient::validateIcPacket(AOPacket packet) args.append(QString::number(emote_mod)); // char id - if (incoming_args[8].toInt() != char_id) + if (incoming_args[8].toInt() != char_id && incoming_args[8].toInt() != -1) return invalid; if (first_person) args.append("-1"); // messages with a cid of -1 don't update the viewport From 05201ac82df36c9a146215f301006122ec15d70b Mon Sep 17 00:00:00 2001 From: in1tiate <radwoodward@vikings.grayson.edu> Date: Fri, 30 Apr 2021 23:05:18 -0500 Subject: [PATCH 4/4] woops, thats not how that works --- src/packets.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/packets.cpp b/src/packets.cpp index dceddf2..e11d3b3 100644 --- a/src/packets.cpp +++ b/src/packets.cpp @@ -502,6 +502,8 @@ AOPacket AOClient::validateIcPacket(AOPacket packet) // emote emote = incoming_args[3].toString(); + if (first_person) + emote = ""; args.append(emote); // message text @@ -566,12 +568,9 @@ AOPacket AOClient::validateIcPacket(AOPacket packet) args.append(QString::number(emote_mod)); // char id - if (incoming_args[8].toInt() != char_id && incoming_args[8].toInt() != -1) + if (incoming_args[8].toInt() != char_id) return invalid; - if (first_person) - args.append("-1"); // messages with a cid of -1 don't update the viewport - else - args.append(incoming_args[8].toString()); + args.append(incoming_args[8].toString()); // sfx delay args.append(incoming_args[9].toString());