summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Mittendrein <git@maxmitti.tk>2015-10-06 15:36:00 +0200
committerMarkus Mittendrein <git@maxmitti.tk>2015-10-07 14:50:41 +0200
commit2d9c8cb998e3eafe2f16d65211fdc28799eda218 (patch)
treed9759a8cc6a6510a33bc928ae011d6123085689f
parent059028b7eb15abeee1b450916215bb5a81cfb3d2 (diff)
downloadmanager-2d9c8cb998e3eafe2f16d65211fdc28799eda218.tar.gz
manager-2d9c8cb998e3eafe2f16d65211fdc28799eda218.zip
Restructure commands into groups
-rw-r--r--src/crsm.cpp104
-rw-r--r--src/crsm.hpp3
2 files changed, 48 insertions, 59 deletions
diff --git a/src/crsm.cpp b/src/crsm.cpp
index eaa3b71..4e8f723 100644
--- a/src/crsm.cpp
+++ b/src/crsm.cpp
@@ -1364,19 +1364,14 @@ UserType CRSM::clientUserType(const ClientInfo &client)
void CRSM::setupCmds()
{
+ cmds.clear();
+ cmdGroups.clear();
+
addCommand("admin", &CRSM::admin, Clonk | IRC, User, "Ohne Name trägt es den Autor der Nachricht als Rundenadmin ein, bzw. mit Name den Spieler mit entsprechendem Namen, insofern nicht bereits ein Rundenadmin feststeht.", "[Chatnick¦PC-Name]");
addCommand("ingameadmin", &CRSM::ingameadmin, IRC | Management, Admin, "Legt den Ingame-Rundenadmin fest.", "<Ingame-Nick¦PC-Name>");
- if(Config.IRC.Use)
- {
- addCommand("ircadmin", &CRSM::ircadmin, Clonk | Management, Admin, "Legt den IRC-Rundenadmin fest.", "<IRC-Nick>", "Legt den IRC-Rundenadmin fest. Der IRC-Admin kann über den IRC dieselben Aktionen durchführen wie der Ingame-Rundenadmin.");
- }
+
addCommand("noadmin", &CRSM::noadmin, Clonk | IRC | Management, Admin, "Entzieht dem (IRC-)Rundenadmin seine Rechte, damit jemand anders Rundenadmin sein kann.");
addCommand("aliaswish", &CRSM::aliaswish, Clonk | IRC, User, "Deponiert den Wunsch, <Alias> als Alias für <Szenario> einzutragen. Ein Moderator entscheidet darüber.", "<Alias> = <Szenario>");
- if(Config.IRC.UseIngameChat)
- {
- addCommand("ircchat", &CRSM::ircchat, Clonk | Management, Admin, "Schaltet den Irc-Ingame-Chat ein bzw. aus.", "<on¦off>");
- addCommand("ingamechat", &CRSM::ircchat, IRC | Management, Admin, "Schaltet den Irc-Ingame-Chat ein bzw. aus.", "<on¦off>");
- }
addCommand("queue", &CRSM::queue, Clonk | IRC | Management, User, "Zeigt die nächsten " + QString::number(Config.Hosting.UserListLength) + " Szenarien auf der Warteliste.");
addCommand("host", &CRSM::host, Clonk | IRC | Management, User, "Nimmt das angegebene Szenario in die Warteschlange auf. Optional in der Liga, wenn \"--league\" angegeben wird.", "[--league] <Szenarioname¦Alias>");
addCommand("list", &CRSM::list, Clonk | IRC | Management, User, "Listet alle definierten Aliase oder alle möglichen Szenarien und Ordner auf, bzw. alle Szenarien im Ordner oder Rundenordner.", "[Aliase¦Rundenordner[.c4f]]");
@@ -1401,7 +1396,14 @@ void CRSM::setupCmds()
addCommand("nodebug", &CRSM::passToClonk, Clonk | IRC | Management, Admin, "Deaktiviert den Debug-Modus zwingend für alle.");
addCommand("autohost", &CRSM::autohost, Clonk | IRC | Management, Moderator, "Aktiviert Auto-Hosting.");
addCommand("noautohost", &CRSM::autohost, Clonk | IRC | Management, Moderator, "Deaktiviert Auto-Hosting.");
- addCommand("set", &CRSM::set, Clonk | IRC | Management, Admin, "Setzt diverse Einstellungen entsprechend dem /set Befehl von Clonk.", "<maxplayer¦password¦faircrew¦teamcolors¦runtimejoin> [on¦off¦<Passwort>¦<Spieleranzahl>]");
+
+ addCommandGroup("set", Clonk | IRC | Management, Admin, "Setzt diverse Einstellungen entsprechend dem /set Befehl von Clonk.");
+ addCommand("set maxplayer", &CRSM::passToClonkNumeric, Clonk | IRC | Management, Admin, "Setzt die maximale Anzahl an möglichen Spielern in dieser Runde.", "<Spieleranzahl>");
+ addCommand("set password", &CRSM::passToClonk, Clonk | IRC | Management, Admin, "Setzt das Passwort für diese Runde, bzw. entfernt es, wenn kein Passwort angegeben wird.", "[Passwort]");
+ addCommand("set faircrew", &CRSM::passToClonkOnOff, Clonk | IRC | Management, Admin, "De-/aktiviert Faire Crew für diese Runde.", "<on¦off>");
+ addCommand("set teamcolors", &CRSM::passToClonkOnOff, Clonk | IRC | Management, Admin, "De-/aktiviert Teamfarben für diese Runde.", "<on¦off>");
+ addCommand("set runtimejoin", &CRSM::passToClonkOnOff, Clonk | IRC | Management, Admin, "De-/aktiviert Laufzeitbeitritt für diese Runde.", "<on¦off>");
+ addCommand("set comment", &CRSM::passToClonk, Clonk | IRC | Management, Moderator, "Setzt den Netzwerkkommentar, bzw. entfernt ihn, wenn kein Kommentar angegeben wird.", "[Kommentar]");
addCommand("skip", &CRSM::skip, Clonk | IRC | Management, Moderator, "Entfernt das nächste Szenario aus der Wunschliste.");
addCommand("next", &CRSM::next, Clonk | IRC | Management, Moderator, "Versucht das aktuelle Szenario zu überspringen.");
@@ -1410,22 +1412,33 @@ void CRSM::setupCmds()
addCommand("aliaswishes", &CRSM::aliaswishes, IRC | Management, Moderator, "Zum geführten Bearbeiten der Aliaswünsche.");
addCommand("newalias", &CRSM::newalias, Clonk | IRC | Management, Moderator, "Trägt <Alias> als Alias für <Szenario> ein.", "<Alias> = <Szenario>");
addCommand("modinfo", &CRSM::modinfo, IRC | Management, Moderator, "Listet alle Moderatoren auf.");
- addCommand("io", &CRSM::io, IRC, Moderator, "Schaltet den IO-Modus ein bzw. aus.", "", "Schaltet den IO-Modus ein bzw. aus. Im IO-Modus wird die Ausgabe vom Clonk-Server an den Privat-Chat weitergeleitet und der Privat-Chat wird an den Clonk-Server weitergeleitet. Clonk-Befehle mit \\ statt /.");
if(Config.IRC.Use)
{
- addCommand("join", &CRSM::join, IRC | Management, Moderator, "Betritt den angegebenen IRC-Channel, optional mit angegebenem Schlüssel.", "<channel> [channel-key]");
- addCommand("leave", &CRSM::leave, IRC | Management, Moderator, "Verlässt den angegebenen oder aktuellen IRC-Channel, optional mit angegebenem Grund.", "[channel] [reason]");
+ addCommandGroup("irc", Clonk | IRC | Management, Admin, "Die irc-Befehlsgruppe bietet diverse Befehle zur Steuerung der IRC-Funktionen.");
+
+ addCommand("irc admin", &CRSM::ircadmin, Clonk | Management, Admin, "Legt den IRC-Rundenadmin fest.", "<IRC-Nick>", "Legt den IRC-Rundenadmin fest. Der IRC-Admin kann über den IRC dieselben Aktionen durchführen wie der Ingame-Rundenadmin.");
+ addCommand("irc join", &CRSM::join, IRC | Management, Moderator, "Betritt den angegebenen IRC-Channel, optional mit angegebenem Schlüssel.", "<channel> [channel-key]");
+ addCommand("irc leave", &CRSM::leave, IRC | Management, Moderator, "Verlässt den angegebenen oder aktuellen IRC-Channel, optional mit angegebenem Grund.", "[channel] [reason]");
+
+ if(Config.IRC.UseIngameChat)
+ {
+ addCommand("irc ingamechat", &CRSM::ircchat, Clonk | IRC | Management, Admin, "Schaltet den Irc-Ingame-Chat ein bzw. aus.", "<on¦off>");
+ }
+
+ addCommand("irc io", &CRSM::io, IRC, Moderator, "Schaltet den IO-Modus ein bzw. aus.", "", "Schaltet den IO-Modus ein bzw. aus. Im IO-Modus wird die Ausgabe vom Clonk-Server an den Privat-Chat weitergeleitet und der Privat-Chat wird an den Clonk-Server weitergeleitet. Clonk-Befehle mit \\ statt /.");
+ addCommand("irc reconnect", &CRSM::reconnectIrc, Management, UserType::Max, "Stellt die IRC-Verbindung wieder her.");
}
- addCommand("exit", &CRSM::exit, Management, UserType::Max, "Beendet den Server Mananger.", "", "Beendet den Server Mananger und falls ein Clonk-Server läuft auch diesen.");
- addCommand("exitdetach", &CRSM::exitDetach, Management, UserType::Max, "Beendet den Server Mananger, lässt den Clonk-Server weiterlaufen.", "", "Beendet den Server Mananger und falls ein Clonk-Server läuft, läuft dieser weiter.");
- addCommand("exitupdate", &CRSM::exitUpdate, Management, UserType::Max, "Zusätzlich zu exitdetach wird im laufenden Spiel angekündigt, dass der Server-Manager wegen eines Updates beendet wird.");
- addCommand("exitafter", &CRSM::exitAfter, Management, UserType::Max, "Beendet den Server-Manager, sobald das laufende Spiel vorbei ist.");
- addCommand("reload", &CRSM::reload, Management, UserType::Max, "Liest die Konfigurationsdatei neu ein.");
- addCommand("saveconfig", &CRSM::saveConfig, Management, UserType::Max, "Speichert die aktuelle Konfiguration in die Konfigurationsdatei.");
- addCommand("reconnectirc", &CRSM::reconnectIrc, Management, UserType::Max, "Stellt die IRC-Verbindung wieder her.");
+ addCommandGroup("exit", Management, UserType::Max, "Beendet den Server Mananger.", "Beendet den Server Mananger und falls ein Clonk-Server läuft auch diesen. Die Unterbefehle ermöglichen außerdem diverse Zusatzvarienten des Beendens.", &CRSM::exit);
+ addCommand("exit detach", &CRSM::exitDetach, Management, UserType::Max, "Beendet den Server Mananger, lässt den Clonk-Server weiterlaufen.", "", "Beendet den Server Mananger und falls ein Clonk-Server läuft, läuft dieser weiter.");
+ addCommand("exit update", &CRSM::exitUpdate, Management, UserType::Max, "Zusätzlich zu " CMD_SIGN "exit detach wird im laufenden Spiel angekündigt, dass der Server-Manager wegen eines Updates beendet wird.");
+ addCommand("exit after", &CRSM::exitAfter, Management, UserType::Max, "Beendet den Server-Manager, sobald das laufende Spiel vorbei ist.");
+
+ addCommandGroup("config", Management, UserType::Max, "Die config-Befehlsgruppe bietet diverse Befehle zum Verwalten der Konfiguration.");
+ addCommand("config reload", &CRSM::reload, Management, UserType::Max, "Liest die Konfigurationsdatei neu ein.");
+ addCommand("config save", &CRSM::saveConfig, Management, UserType::Max, "Speichert die aktuelle Konfiguration in die Konfigurationsdatei.");
}
void CRSM::respond(const ClientInfo &client, const QString &message, const RespondType type)
@@ -2016,52 +2029,27 @@ CMD_FUNCTION_IMPL(clientlist)
respond(client, response + "\n");
}
-CMD_FUNCTION_IMPL(set)
- QString what = args.left(args.indexOf(QRegExp("\\s"))).trimmed();
- QString newArgs = args.right(args.length() - args.indexOf(QRegExp("\\s"))).trimmed();
-
- if(what == "teamcolors" || what == "runtimejoin" || what == "faircrew")
+CMD_FUNCTION_IMPL(passToClonkNumeric)
+ bool ok;
+ int number = args.toInt(&ok);
+ if(!ok)
{
- if(newArgs != "on" && newArgs != "off")
- {
- respond(client, what + " kann nur auf on oder off gesetzt werden.\n");
- }
- else
- {
- writeToServer("/set " + what + " " + newArgs + "\n");
- }
- }
- else if(what == "maxplayer")
- {
- bool ok;
- int max = newArgs.toInt(&ok);
- if(!ok)
- {
- respond(client, "maxplayer muss eine Zahl sein!\n");
- }
- else
- {
- writeToServer("/set maxplayer " + QString::number(max) + "\n");
- }
+ respond(client, CMD_SIGN + cmd + " kann nur mit einer Zahl verwendet werden!\n");
}
- else if(what == "password")
+ else
{
- writeToServer("/set password " + newArgs + "\n");
+ writeToServer("/" + cmd + " " + QString::number(number) + "\n");
}
- else if(what == "comment")
+}
+
+CMD_FUNCTION_IMPL(passToClonkOnOff)
+ if(args != "on" && args != "off")
{
- if(userType < Moderator)
- {
- rightsFailMessage(client, Moderator);
- }
- else
- {
- writeToServer("/set comment " + newArgs + "\n");
- }
+ respond(client, CMD_SIGN + cmd + " kann nur mit \"on\" oder \"off\" verwendet werden.\n");
}
else
{
- respond(client, "Unbekannte Option: \"" + what + "\"\n");
+ writeToServer("/" + cmd + " " + args + "\n");
}
}
diff --git a/src/crsm.hpp b/src/crsm.hpp
index 508a367..f7736eb 100644
--- a/src/crsm.hpp
+++ b/src/crsm.hpp
@@ -233,6 +233,8 @@ private:
CMD_FUNCTION(help);
CMD_FUNCTION(passToClonk);
+ CMD_FUNCTION(passToClonkOnOff);
+ CMD_FUNCTION(passToClonkNumeric);
CMD_FUNCTION(admin);
CMD_FUNCTION(host);
CMD_FUNCTION(list);
@@ -253,7 +255,6 @@ private:
CMD_FUNCTION(ircadmin);
CMD_FUNCTION(noadmin);
CMD_FUNCTION(clientlist);
- CMD_FUNCTION(set);
CMD_FUNCTION(join);
CMD_FUNCTION(leave);