Merge remote-tracking branch 'upstream/master' into Testimony-Loading/Saving
This commit is contained in:
commit
558dcc3378
@ -219,7 +219,8 @@ class AOClient : public QObject {
|
|||||||
{"ANNOUNCE", 1ULL << 8 },
|
{"ANNOUNCE", 1ULL << 8 },
|
||||||
{"MODCHAT", 1ULL << 9 },
|
{"MODCHAT", 1ULL << 9 },
|
||||||
{"MUTE", 1ULL << 10},
|
{"MUTE", 1ULL << 10},
|
||||||
{"SAVETEST", 1ULL << 11},
|
{"UNCM", 1ULL << 11},
|
||||||
|
{"SAVETEST", 1ULL << 12},
|
||||||
{"SUPER", ~0ULL },
|
{"SUPER", ~0ULL },
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1453,6 +1454,15 @@ class AOClient : public QObject {
|
|||||||
*/
|
*/
|
||||||
void cmdUnShake(int argc, QStringList argv);
|
void cmdUnShake(int argc, QStringList argv);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Toggles whether this client is considered AFK.
|
||||||
|
*
|
||||||
|
* @details No arguments.
|
||||||
|
*
|
||||||
|
* @iscommand
|
||||||
|
*/
|
||||||
|
void cmdAfk(int argc, QStringList argv);
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1620,16 +1630,6 @@ class AOClient : public QObject {
|
|||||||
*/
|
*/
|
||||||
void cmdCurrentMusic(int argc, QStringList argv);
|
void cmdCurrentMusic(int argc, QStringList argv);
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Toggles whether this client is considered AFK.
|
|
||||||
*
|
|
||||||
* @details No arguments.
|
|
||||||
*
|
|
||||||
* @iscommand
|
|
||||||
*/
|
|
||||||
void cmdAfk(int argc, QStringList argv);
|
|
||||||
|
|
||||||
///@}
|
///@}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1886,6 +1886,18 @@ class AOClient : public QObject {
|
|||||||
{"savetestimony", {ACLFlags.value("NONE"), 1, &AOClient::cmdSaveTestimony}},
|
{"savetestimony", {ACLFlags.value("NONE"), 1, &AOClient::cmdSaveTestimony}},
|
||||||
{"loadtestimony", {ACLFlags.value("CM"), 1, &AOClient::cmdLoadTestimony}},
|
{"loadtestimony", {ACLFlags.value("CM"), 1, &AOClient::cmdLoadTestimony}},
|
||||||
{"permitsaving", {ACLFlags.value("MODCHAT"), 1, &AOClient::cmdPermitSaving}},
|
{"permitsaving", {ACLFlags.value("MODCHAT"), 1, &AOClient::cmdPermitSaving}},
|
||||||
|
{"oocmute", {ACLFlags.value("MUTE"), 1, &AOClient::cmdOocMute}},
|
||||||
|
{"ooc_mute", {ACLFlags.value("MUTE"), 1, &AOClient::cmdOocMute}},
|
||||||
|
{"oocunmute", {ACLFlags.value("MUTE"), 1, &AOClient::cmdOocUnMute}},
|
||||||
|
{"ooc_unmute", {ACLFlags.value("MUTE"), 1, &AOClient::cmdOocUnMute}},
|
||||||
|
{"blockwtce", {ACLFlags.value("MUTE"), 1, &AOClient::cmdBlockWtce}},
|
||||||
|
{"block_wtce", {ACLFlags.value("MUTE"), 1, &AOClient::cmdBlockWtce}},
|
||||||
|
{"unblockwtce", {ACLFlags.value("MUTE"), 1, &AOClient::cmdUnBlockWtce}},
|
||||||
|
{"unblock_wtce", {ACLFlags.value("MUTE"), 1, &AOClient::cmdUnBlockWtce}},
|
||||||
|
{"blockdj", {ACLFlags.value("MUTE"), 1, &AOClient::cmdBlockDj}},
|
||||||
|
{"block_dj", {ACLFlags.value("MUTE"), 1, &AOClient::cmdBlockDj}},
|
||||||
|
{"unblockdj", {ACLFlags.value("MUTE"), 1, &AOClient::cmdUnBlockDj}},
|
||||||
|
{"unblock_dj", {ACLFlags.value("MUTE"), 1, &AOClient::cmdUnBlockDj}},
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1944,6 +1956,13 @@ class AOClient : public QObject {
|
|||||||
* @param action String containing the info that is being recorded.
|
* @param action String containing the info that is being recorded.
|
||||||
*/
|
*/
|
||||||
void updateJudgeLog(AreaData* area, AOClient* client, QString action);
|
void updateJudgeLog(AreaData* area, AOClient* client, QString action);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief A helper function for decoding AO encoding from a QString.
|
||||||
|
*
|
||||||
|
* @param incoming_message QString to be decoded.
|
||||||
|
*/
|
||||||
|
QString decodeMessage(QString incoming_message);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // AOCLIENT_H
|
#endif // AOCLIENT_H
|
||||||
|
@ -61,9 +61,36 @@ void AOClient::cmdCM(int argc, QStringList argv)
|
|||||||
void AOClient::cmdUnCM(int argc, QStringList argv)
|
void AOClient::cmdUnCM(int argc, QStringList argv)
|
||||||
{
|
{
|
||||||
AreaData* area = server->areas[current_area];
|
AreaData* area = server->areas[current_area];
|
||||||
int removed = area->owners.removeAll(id);
|
int uid;
|
||||||
area->invited.removeAll(id);
|
|
||||||
sendServerMessage("You are no longer CM in this area.");
|
if (area->owners.isEmpty()) {
|
||||||
|
sendServerMessage("There are no CMs in this area.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if (argc == 0) {
|
||||||
|
uid = id;
|
||||||
|
sendServerMessage("You are no longer CM in this area.");
|
||||||
|
}
|
||||||
|
else if (checkAuth(ACLFlags.value("UNCM")) && argc == 1) {
|
||||||
|
bool conv_ok = false;
|
||||||
|
uid = argv[0].toInt(&conv_ok);
|
||||||
|
if (!conv_ok) {
|
||||||
|
sendServerMessage("Invalid user ID.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!area->owners.contains(uid)) {
|
||||||
|
sendServerMessage("That user is not CMed.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
AOClient* target = server->getClientByID(uid);
|
||||||
|
target->sendServerMessage("You have been unCMed by a moderator.");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sendServerMessage("Invalid command.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
area->owners.removeAll(uid);
|
||||||
|
area->invited.removeAll(uid);
|
||||||
arup(ARUPType::CM, true);
|
arup(ARUPType::CM, true);
|
||||||
if (area->owners.isEmpty()) {
|
if (area->owners.isEmpty()) {
|
||||||
area->invited.clear();
|
area->invited.clear();
|
||||||
@ -283,9 +310,3 @@ void AOClient::cmdJudgeLog(int argc, QStringList argv)
|
|||||||
sendServerMessage(filteredmessage);
|
sendServerMessage(filteredmessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void AOClient::cmdAfk(int argc, QStringList argv)
|
|
||||||
{
|
|
||||||
is_afk = true;
|
|
||||||
sendServerMessage("You are now AFK.");
|
|
||||||
}
|
|
||||||
|
@ -274,3 +274,9 @@ void AOClient::cmdUnShake(int argc, QStringList argv)
|
|||||||
}
|
}
|
||||||
target->is_shaken = false;
|
target->is_shaken = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AOClient::cmdAfk(int argc, QStringList argv)
|
||||||
|
{
|
||||||
|
is_afk = true;
|
||||||
|
sendServerMessage("You are now AFK.");
|
||||||
|
}
|
||||||
|
@ -22,6 +22,10 @@
|
|||||||
|
|
||||||
void AOClient::cmdPlay(int argc, QStringList argv)
|
void AOClient::cmdPlay(int argc, QStringList argv)
|
||||||
{
|
{
|
||||||
|
if (is_dj_blocked) {
|
||||||
|
sendServerMessage("You are blocked from changing the music.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
AreaData* area = server->areas[current_area];
|
AreaData* area = server->areas[current_area];
|
||||||
QString song = argv.join(" ");
|
QString song = argv.join(" ");
|
||||||
area->current_music = song;
|
area->current_music = song;
|
||||||
|
@ -62,7 +62,10 @@ int main(int argc, char* argv[])
|
|||||||
}
|
}
|
||||||
|
|
||||||
server = new Server(settings.port, settings.ws_port);
|
server = new Server(settings.port, settings.ws_port);
|
||||||
QObject::connect(server, &Server::reloadRequest, advertiser, &Advertiser::reloadRequested);
|
|
||||||
|
if (advertiser != nullptr) {
|
||||||
|
QObject::connect(server, &Server::reloadRequest, advertiser, &Advertiser::reloadRequested);
|
||||||
|
}
|
||||||
server->start();
|
server->start();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -210,10 +210,6 @@ void AOClient::pktPing(AreaData* area, int argc, QStringList argv, AOPacket pack
|
|||||||
|
|
||||||
void AOClient::pktChangeMusic(AreaData* area, int argc, QStringList argv, AOPacket packet)
|
void AOClient::pktChangeMusic(AreaData* area, int argc, QStringList argv, AOPacket packet)
|
||||||
{
|
{
|
||||||
if (is_dj_blocked) {
|
|
||||||
sendServerMessage("You are blocked from changing the music.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Due to historical reasons, this
|
// Due to historical reasons, this
|
||||||
// packet has two functions:
|
// packet has two functions:
|
||||||
// Change area, and set music.
|
// Change area, and set music.
|
||||||
@ -225,6 +221,10 @@ void AOClient::pktChangeMusic(AreaData* area, int argc, QStringList argv, AOPack
|
|||||||
for (QString song : server->music_list) {
|
for (QString song : server->music_list) {
|
||||||
if (song == argument || song == "~stop.mp3") { // ~stop.mp3 is a dummy track used by 2.9+
|
if (song == argument || song == "~stop.mp3") { // ~stop.mp3 is a dummy track used by 2.9+
|
||||||
// We have a song here
|
// We have a song here
|
||||||
|
if (is_dj_blocked) {
|
||||||
|
sendServerMessage("You are blocked from changing the music.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
QString effects;
|
QString effects;
|
||||||
if (argc >= 4)
|
if (argc >= 4)
|
||||||
effects = argv[3];
|
effects = argv[3];
|
||||||
@ -724,8 +724,9 @@ AOPacket AOClient::validateIcPacket(AOPacket packet)
|
|||||||
area->statement = area->statement - 1;
|
area->statement = area->statement - 1;
|
||||||
args = playTestimony();
|
args = playTestimony();
|
||||||
}
|
}
|
||||||
|
QString decoded_message = decodeMessage(args[4]); //Get rid of that pesky encoding first.
|
||||||
QRegularExpression jump("(?<arrow>>)(?<int>[0,1,2,3,4,5,6,7,8,9]+)");
|
QRegularExpression jump("(?<arrow>>)(?<int>[0,1,2,3,4,5,6,7,8,9]+)");
|
||||||
QRegularExpressionMatch match = jump.match(args[4]);
|
QRegularExpressionMatch match = jump.match(decoded_message);
|
||||||
if (match.hasMatch()) {
|
if (match.hasMatch()) {
|
||||||
pos = "wit";
|
pos = "wit";
|
||||||
area->statement = match.captured("int").toInt();
|
area->statement = match.captured("int").toInt();
|
||||||
@ -773,3 +774,12 @@ void AOClient::updateJudgeLog(AreaData* area, AOClient* client, QString action)
|
|||||||
}
|
}
|
||||||
else area->judgelog.append(logmessage);
|
else area->judgelog.append(logmessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString AOClient::decodeMessage(QString incoming_message)
|
||||||
|
{
|
||||||
|
QString decoded_message = incoming_message.replace("<num>", "#")
|
||||||
|
.replace("<percent>", "%")
|
||||||
|
.replace("<dollar>", "$")
|
||||||
|
.replace("<and>", "&");
|
||||||
|
return decoded_message;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user