diff --git a/bin/config_sample/config.ini b/bin/config_sample/config.ini index a33f95d..65ed954 100644 --- a/bin/config_sample/config.ini +++ b/bin/config_sample/config.ini @@ -9,6 +9,7 @@ ms_port=27016 port=27016 server_description=This is a placeholder server description. Tell the world of AO who you are here! server_name=An Unnamed Server +motd=Sample MOTD. webao_enable=true webao_port=27017 auth=simple diff --git a/include/aoclient.h b/include/aoclient.h index a7d987f..fa8f91d 100644 --- a/include/aoclient.h +++ b/include/aoclient.h @@ -183,6 +183,7 @@ class AOClient : public QObject { //// Commands void cmdDefault(int argc, QStringList argv); void cmdHelp(int argc, QStringList argv); + void cmdMOTD(int argc, QStringList argv); // Authentication void cmdLogin(int argc, QStringList argv); void cmdChangeAuth(int argc, QStringList argv); @@ -298,7 +299,8 @@ class AOClient : public QObject { {"forcepos", {ACLFlags.value("CM"), 2, &AOClient::cmdForcePos}}, {"currentmusic", {ACLFlags.value("NONE"), 0, &AOClient::cmdCurrentMusic}}, {"pm", {ACLFlags.value("NONE"), 2, &AOClient::cmdPM}}, - {"evidence_mod", {ACLFlags.value("CHANGE_EVI_MOD"), 1, &AOClient::cmdEvidenceMod}} + {"evidence_mod", {ACLFlags.value("CHANGE_EVI_MOD"), 1, &AOClient::cmdEvidenceMod}}, + {"motd", {ACLFlags.value("NONE"), 0, &AOClient::cmdMOTD}} }; QString partial_packet; diff --git a/include/server.h b/include/server.h index 152fc37..cd003b3 100644 --- a/include/server.h +++ b/include/server.h @@ -52,6 +52,7 @@ class Server : public QObject { void broadcast(AOPacket packet, int area_index); void broadcast(AOPacket packet); QString getServerName(); + QString getMOTD(); int getDiceValue(QString value_type); int getCharID(QString char_name); diff --git a/src/commands.cpp b/src/commands.cpp index 1b173d9..cb213b8 100644 --- a/src/commands.cpp +++ b/src/commands.cpp @@ -857,6 +857,12 @@ void AOClient::cmdPM(int arc, QStringList argv) target_client->sendServerMessage("Message from " + ooc_name + " (" + QString::number(id) + "): " + message); } +void AOClient::cmdMOTD(int argc, QStringList argv) +{ + QString MOTD = server->getMOTD(); + sendServerMessage(MOTD); +} + QStringList AOClient::buildAreaList(int area_idx) { QStringList entries; diff --git a/src/packets.cpp b/src/packets.cpp index cabbb8c..6628b43 100644 --- a/src/packets.cpp +++ b/src/packets.cpp @@ -112,6 +112,7 @@ void AOClient::pktLoadingDone(AreaData* area, int argc, QStringList argv, AOPack sendPacket("BN", {area->background}); sendPacket("OPPASS", {"DEADBEEF"}); sendPacket("DONE"); + sendServerMessage(server->getMOTD()); } void AOClient::pktCharPassword(AreaData* area, int argc, QStringList argv, AOPacket packet) diff --git a/src/server.cpp b/src/server.cpp index 0f4d23a..5c036dc 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -182,6 +182,15 @@ int Server::getDiceValue(QString value_type) return value; } +QString Server::getMOTD() +{ + QSettings settings("config/config.ini", QSettings::IniFormat); + settings.beginGroup("Options"); + QString MOTD = settings.value("motd", "No MOTD has been set.").toString(); + QString f_MOTD = "=== MOTD ===\r\n" + MOTD + "\r\n============='"; + return f_MOTD; +} + AOClient* Server::getClient(QString ipid) { for (AOClient* client : clients) {