Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/netserver.cc')
-rw-r--r--src/core/netserver.cc30
1 files changed, 29 insertions, 1 deletions
diff --git a/src/core/netserver.cc b/src/core/netserver.cc
index 62d9b74..5b3a991 100644
--- a/src/core/netserver.cc
+++ b/src/core/netserver.cc
@@ -525,7 +525,7 @@ void NetServer::send_player_update(NetClient *client)
void NetServer::send_player_update(NetClient *client, Player *player)
{
std::ostringstream msg;
- msg << "pif " << player->id() << " ";
+ msg << "pif " << player->id() << ' ';
client->player()->serialize_server_update(msg);
msg << '\n';
client->send_raw(msg.str());
@@ -539,6 +539,16 @@ void NetServer::send_player_disconnect_info(NetClient *client, Player *player)
client->send_raw(msg.str());
}
+// send a "inf" info record
+void NetServer::send_info_update(NetClient *client, Info *info)
+{
+ std::ostringstream msg;
+ msg << "inf " << '"' << info->label() << '"' << ' ';
+ info->serialize_server_update(msg);
+ msg << '\n';
+ client->send_raw(msg.str());
+}
+
// parse incoming client messages
/**
@@ -547,6 +557,7 @@ void NetServer::send_player_disconnect_info(NetClient *client, Player *player)
* disconnect
* cmd <game command>
* cup
+ * inf
* pif
* ping
* say <text>
@@ -641,6 +652,23 @@ void NetServer::parse_incoming_message(NetClient *client, const std::string & me
return;
}
+ if (command == "inf") {
+ std::string n;
+ char c;
+
+ while ( (msgstream.get(c)) && (c != '"'));
+ while ( (msgstream.get(c)) && (c != '"'))
+ n += c;
+
+ if (n.size()) {
+ Info *info = Info::find(n);
+ if (info) {
+ send_info_update(client, info);
+ client->transmit();
+ }
+ }
+ }
+
if (command == "rcon") {
if ((message.size() > command.size()+1) && Cvar::sv_password->str().size()) {
if ((Cvar::sv_password->str().compare(client->player()->rconpassword()) == 0)) {