diff options
| author | Markus Mittendrein <git@maxmitti.tk> | 2015-10-06 15:36:00 +0200 |
|---|---|---|
| committer | Markus Mittendrein <git@maxmitti.tk> | 2015-10-07 14:50:41 +0200 |
| commit | 2d9c8cb998e3eafe2f16d65211fdc28799eda218 (patch) | |
| tree | d9759a8cc6a6510a33bc928ae011d6123085689f /src | |
| parent | 059028b7eb15abeee1b450916215bb5a81cfb3d2 (diff) | |
| download | manager-2d9c8cb998e3eafe2f16d65211fdc28799eda218.tar.gz manager-2d9c8cb998e3eafe2f16d65211fdc28799eda218.zip | |
Restructure commands into groups
Diffstat (limited to 'src')
| -rw-r--r-- | src/crsm.cpp | 104 | ||||
| -rw-r--r-- | src/crsm.hpp | 3 |
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); |
