فهرست منبع

Added developer mode. Now messages from the bot contains the player
count and maxclients information.

Mihawk 13 سال پیش
والد
کامیت
59d731fdb1
9فایلهای تغییر یافته به همراه63 افزوده شده و 6 حذف شده
  1. 1 1
      ActiveClient.cpp
  2. 4 1
      App.cpp
  3. 31 4
      Client.cpp
  4. 4 0
      Client.h
  5. 11 0
      ServerQuery.cpp
  6. 1 0
      ServerQuery.h
  7. 6 0
      Settings.cpp
  8. 1 0
      Settings.h
  9. 4 0
      SshClient.cpp

+ 1 - 1
ActiveClient.cpp

@@ -75,10 +75,10 @@ void ActiveClient::queryError(ServerQuery::Error)
 
 
 void ActiveClient::queryFinished()
 void ActiveClient::queryFinished()
 {
 {
-
   PlayerList playerList = myQuery->playerList();
   PlayerList playerList = myQuery->playerList();
   int playerCount = playerList.size();
   int playerCount = playerList.size();
   myClient->setPlayerList(playerList);
   myClient->setPlayerList(playerList);
+  myClient->setMaxClients(myQuery->serverRuleValue("maxclients").toInt());
 
 
   myQueryTimer->start(myQueryInterval);
   myQueryTimer->start(myQueryInterval);
 
 

+ 4 - 1
App.cpp

@@ -417,7 +417,10 @@ void App::timerEvent(QTimerEvent *e)
 
 
 void App::requestBroadcast(const QString &type, const QString &user, const QString &server, const QString &message)
 void App::requestBroadcast(const QString &type, const QString &user, const QString &server, const QString &message)
 {
 {
-  myQWNETSshClient->write("REQ_BC QWalt,-" + type + "-,qw://" + server + ",'" + user + "','" + message + "'\n");
+  if(!Settings::globalInstance()->developerMode())
+    myQWNETSshClient->write("REQ_BC QWalt,-" + type + "-,qw://" + server + ",'" + user + "','" + message + "'\n");
+  else
+    myQWNETSshClient->write("REQ_BC QDEV,-dev-,qw://" + server + ",'" + user + "','" + message + "'\n");
 }
 }
 
 
 void App::broadcast(const QString &msg, ActiveClient* ignoredClient)
 void App::broadcast(const QString &msg, ActiveClient* ignoredClient)

+ 31 - 4
Client.cpp

@@ -19,7 +19,8 @@ Client::Client(App *app, ActiveClient* ac):
   myJoinMessageTimer(new QTimer()),
   myJoinMessageTimer(new QTimer()),
   myKeepNickTimer(new QTimer()),
   myKeepNickTimer(new QTimer()),
   myJoinMessagePrinted(false),
   myJoinMessagePrinted(false),
-  myJoinMessageScheduled(false)
+  myJoinMessageScheduled(false),
+  myMaxClients(0)
 {
 {
   myJoinMessageTimer->setSingleShot(true);
   myJoinMessageTimer->setSingleShot(true);
   myKeepNickTimer->setSingleShot(true);
   myKeepNickTimer->setSingleShot(true);
@@ -208,7 +209,7 @@ void Client::parsePrintedLine()
       mySpamBroadcastFloodTime = currentTime.addSecs(Settings::globalInstance()->spamFloodProtTime());
       mySpamBroadcastFloodTime = currentTime.addSecs(Settings::globalInstance()->spamFloodProtTime());
     }
     }
 
 
-    QString server(QString(host()) + ":" + QString::number(port()));
+    QString server(QString(host()) + ":" + QString::number(port()) + " " + QString::number(playerCount()) + "/" + QString::number(myMaxClients));
     QString message("-" + command + "- " + nick + " - " + server + " : " + args.trimmed());
     QString message("-" + command + "- " + nick + " - " + server + " : " + args.trimmed());
 
 
     /* Broadcast within QW servers */
     /* Broadcast within QW servers */
@@ -217,8 +218,11 @@ void Client::parsePrintedLine()
     /* Broadcast outside QW */
     /* Broadcast outside QW */
     nick = parseNameFun(nick); //for the irc message namefun must be removed.
     nick = parseNameFun(nick); //for the irc message namefun must be removed.
     QString parsedMsg = parseNameFun(args.trimmed());
     QString parsedMsg = parseNameFun(args.trimmed());
-    //    myApp->requestBroadcast("dev", nick, server, parsedMsg);
-    myApp->requestBroadcast(command, nick, server, args.trimmed());
+
+    if(!Settings::globalInstance()->developerMode())
+      myApp->requestBroadcast(command, nick, server, args.trimmed());
+    else
+      myApp->requestBroadcast("dev", nick, server, parsedMsg);
 
 
 		return;
 		return;
 	}
 	}
@@ -252,6 +256,29 @@ void Client::parsePrintedLine()
   }
   }
 }
 }
 
 
+int Client::playerCount() const
+{
+  Player c;
+  int pc = 0;
+  foreach(c, myPlayerList)
+  {
+    if(c.spectator)
+      continue;
+    pc++;
+  }
+  return pc;
+}
+
+void Client::setMaxClients(int maxClients)
+{
+  myMaxClients = maxClients;
+}
+
+int Client::maxClients() const
+{
+  return myMaxClients;
+}
+
 void Client::onPrint(int, const char *msg)
 void Client::onPrint(int, const char *msg)
 {
 {
 	if(!strlen(msg))
 	if(!strlen(msg))

+ 4 - 0
Client.h

@@ -30,6 +30,7 @@ public:
   bool isQWMuted() const;
   bool isQWMuted() const;
   bool isSpamMuted() const;
   bool isSpamMuted() const;
   void setPlayerList(PlayerList &playerList);
   void setPlayerList(PlayerList &playerList);
+  void setMaxClients(int maxClients);
 
 
 protected:
 protected:
 	void onLevelChanged(int playerNum, const char *levelName, float gravity, float stopSpeed, float maxSpeed, float spectatorMaxSpeed, float accelerate, float airAccelerate, float waterAccelerate, float friction, float waterFriction, float entGravity);
 	void onLevelChanged(int playerNum, const char *levelName, float gravity, float stopSpeed, float maxSpeed, float spectatorMaxSpeed, float accelerate, float airAccelerate, float waterAccelerate, float friction, float waterFriction, float entGravity);
@@ -64,9 +65,12 @@ private:
   bool              myJoinMessagePrinted;
   bool              myJoinMessagePrinted;
   bool              myJoinMessageScheduled;
   bool              myJoinMessageScheduled;
   PlayerList        myPlayerList;
   PlayerList        myPlayerList;
+  int               myMaxClients;
 
 
   void print(const QString& msg);
   void print(const QString& msg);
 	void parsePrintedLine();
 	void parsePrintedLine();
+  int  playerCount() const;
+  int  maxClients() const;
 
 
   static QString parseNameFun(const QString& string);
   static QString parseNameFun(const QString& string);
 };
 };

+ 11 - 0
ServerQuery.cpp

@@ -269,6 +269,17 @@ ServerRules ServerQuery::serverRules() const
   return myRules;
   return myRules;
 }
 }
 
 
+QString ServerQuery::serverRuleValue(const QString &ruleName) const
+{
+  ServerRule r;
+  foreach(r, myRules)
+  {
+    if(r.rule == ruleName)
+      return r.value;
+  }
+  return QString();
+}
+
 //========================================================================
 //========================================================================
 /* Name fun */
 /* Name fun */
 char ServerQuery::ourReadableCharsTable[256] = {	'.', '_' , '_' , '_' , '_' , '.' , '_' , '_' , '_' , '_' , '\n' , '_' , '\n' , '>' , '.' , '.',
 char ServerQuery::ourReadableCharsTable[256] = {	'.', '_' , '_' , '_' , '_' , '.' , '_' , '_' , '_' , '_' , '\n' , '_' , '\n' , '>' , '.' , '.',

+ 1 - 0
ServerQuery.h

@@ -71,6 +71,7 @@ public:
 
 
   PlayerList    playerList() const;
   PlayerList    playerList() const;
   ServerRules   serverRules() const;
   ServerRules   serverRules() const;
+  QString       serverRuleValue(const QString& ruleName) const;
 
 
 signals:
 signals:
   void          error(ServerQuery::Error err);
   void          error(ServerQuery::Error err);

+ 6 - 0
Settings.cpp

@@ -128,6 +128,11 @@ int Settings::timeToWaitForCountReply() const
   return ourSettings->value("timeToWaitForCountReply", 7).toInt();
   return ourSettings->value("timeToWaitForCountReply", 7).toInt();
 }
 }
 
 
+bool Settings::developerMode() const
+{
+  return ourSettings->value("developerMode", false).toBool();
+}
+
 void Settings::save()
 void Settings::save()
 {
 {
   ourSettings->setValue("quakeFolder", quakeFolder());
   ourSettings->setValue("quakeFolder", quakeFolder());
@@ -142,6 +147,7 @@ void Settings::save()
   ourSettings->setValue("spamFloodProtTime", spamFloodProtTime());
   ourSettings->setValue("spamFloodProtTime", spamFloodProtTime());
   ourSettings->setValue("timeToSayHiAfterConnected", timeToSayHiAfterConnected());
   ourSettings->setValue("timeToSayHiAfterConnected", timeToSayHiAfterConnected());
   ourSettings->setValue("timeToWaitForCountReply", timeToWaitForCountReply());
   ourSettings->setValue("timeToWaitForCountReply", timeToWaitForCountReply());
+  ourSettings->setValue("developerMode", developerMode());
 
 
   QStringList list = serverList();
   QStringList list = serverList();
   setServerList(list);
   setServerList(list);

+ 1 - 0
Settings.h

@@ -44,6 +44,7 @@ public:
   unsigned int      queryInterval() const;
   unsigned int      queryInterval() const;
   int               timeToSayHiAfterConnected() const;
   int               timeToSayHiAfterConnected() const;
   int               timeToWaitForCountReply() const;
   int               timeToWaitForCountReply() const;
+  bool              developerMode() const;
 
 
   void              save();
   void              save();
 
 

+ 4 - 0
SshClient.cpp

@@ -19,6 +19,7 @@ along with this program.  If not, see < http://www.gnu.org/licenses/ >.
 
 
 #include "SshClient.h"
 #include "SshClient.h"
 #include "App.h"
 #include "App.h"
+#include "Settings.h"
 #include <QProcess>
 #include <QProcess>
 #include <QRegExp>
 #include <QRegExp>
 #include <QDateTime>
 #include <QDateTime>
@@ -153,6 +154,9 @@ void SshClient::parse(const QDateTime &time, const QString &command, const QStri
     if(a.indexIn(commandData) == -1)
     if(a.indexIn(commandData) == -1)
       return;
       return;
 
 
+    if(a.cap(2) == "QDEV" && !Settings::globalInstance()->developerMode()) //developer mode not enabled ignore this message from developers
+      return;
+
     int serverCount, userCount;
     int serverCount, userCount;
 
 
     myApp->broadcast(a.cap(3) + " " + a.cap(5) + " - " + a.cap(4) + " : " + a.cap(6), &serverCount, &userCount);
     myApp->broadcast(a.cap(3) + " " + a.cap(5) + " - " + a.cap(4) + " : " + a.cap(6), &serverCount, &userCount);