aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHimbeerserverDE <himbeerserverde@gmail.com>2021-09-10 11:57:31 +0200
committerHimbeerserverDE <himbeerserverde@gmail.com>2021-09-10 11:57:31 +0200
commitd9496ac2b54acb558bce5c0c1fe0d8d9461a64e5 (patch)
treee40e00a6bcc871c3d9d82dc9c1577495f4af1a87
parent8576d696e884a713bde6be3407f629f1f4b5537d (diff)
Add help and usage commands
-rw-r--r--chatcommands.go131
-rw-r--r--go.mod4
-rw-r--r--go.sum6
3 files changed, 120 insertions, 21 deletions
diff --git a/chatcommands.go b/chatcommands.go
index c8d7485..e585e11 100644
--- a/chatcommands.go
+++ b/chatcommands.go
@@ -10,8 +10,10 @@ import (
func init() {
proxy.RegisterChatCmd(proxy.ChatCmd{
- Name: "shutdown",
- Perm: "cmd_shutdown",
+ Name: "shutdown",
+ Perm: "cmd_shutdown",
+ Help: "Disconnect all clients and stop the server.",
+ Usage: "shutdown",
Handler: func(cc *proxy.ClientConn, args ...string) string {
proc, err := os.FindProcess(os.Getpid())
if err != nil {
@@ -23,8 +25,10 @@ func init() {
},
})
proxy.RegisterChatCmd(proxy.ChatCmd{
- Name: "find",
- Perm: "cmd_find",
+ Name: "find",
+ Perm: "cmd_find",
+ Help: "Check whether a player is connected and report their upstream server if they are.",
+ Usage: "find <name>",
Handler: func(cc *proxy.ClientConn, args ...string) string {
if len(args) != 1 {
return "Usage: find <name>"
@@ -39,8 +43,10 @@ func init() {
},
})
proxy.RegisterChatCmd(proxy.ChatCmd{
- Name: "addr",
- Perm: "cmd_addr",
+ Name: "addr",
+ Perm: "cmd_addr",
+ Help: "Find the network address of a player if they're connected.",
+ Usage: "addr <name>",
Handler: func(cc *proxy.ClientConn, args ...string) string {
if len(args) != 1 {
return "Usage: addr <name>"
@@ -55,14 +61,18 @@ func init() {
},
})
proxy.RegisterChatCmd(proxy.ChatCmd{
- Name: "alert",
- Perm: "cmd_alert",
+ Name: "alert",
+ Perm: "cmd_alert",
+ Help: "Send a message to all connected clients regardless of their upstream server.",
+ Usage: "alert <message>",
Handler: func(cc *proxy.ClientConn, args ...string) string {
if len(args) <= 0 {
return "Usage: alert <message>"
}
- msg := strings.Join(args, " ")
+ msg := "[ALERT] "
+ msg += strings.Join(args, " ")
+
for clt := range proxy.Clts() {
clt.SendChatMsg(msg)
}
@@ -71,8 +81,10 @@ func init() {
},
})
proxy.RegisterChatCmd(proxy.ChatCmd{
- Name: "send",
- Perm: "cmd_send",
+ Name: "send",
+ Perm: "cmd_send",
+ Help: "Send player(s) to a new server. player causes a single player to be redirected, current affects all players that are on your current server and all affects everyone.",
+ Usage: "send <player <server> <name> | current <server> | all <server>>",
Handler: func(cc *proxy.ClientConn, args ...string) string {
if len(args) < 2 {
return "Usage: send <player <server> <name> | current <server> | all <server>>"
@@ -144,10 +156,16 @@ func init() {
},
})
proxy.RegisterChatCmd(proxy.ChatCmd{
- Name: "players",
- Perm: "cmd_players",
+ Name: "players",
+ Perm: "cmd_players",
+ Help: "Show the player list of every server.",
+ Usage: "players",
Handler: func(cc *proxy.ClientConn, args ...string) string {
srvs := make(map[string][]*proxy.ClientConn)
+ for _, srv := range proxy.Conf().Servers {
+ srvs[srv.Name] = []*proxy.ClientConn{}
+ }
+
for clt := range proxy.Clts() {
srv := clt.ServerName()
srvs[srv] = append(srvs[srv], clt)
@@ -165,8 +183,10 @@ func init() {
},
})
proxy.RegisterChatCmd(proxy.ChatCmd{
- Name: "reload",
- Perm: "cmd_reload",
+ Name: "reload",
+ Perm: "cmd_reload",
+ Help: "Reload the configuration file. You should restart the proxy instead if possible.",
+ Usage: "reload",
Handler: func(cc *proxy.ClientConn, args ...string) string {
if err := proxy.LoadConfig(); err != nil {
return "Configuration could not be reloaded. Old config is still active. Error: " + err.Error()
@@ -176,15 +196,19 @@ func init() {
},
})
proxy.RegisterChatCmd(proxy.ChatCmd{
- Name: "perms",
- Perm: "cmd_perms",
+ Name: "perms",
+ Perm: "cmd_perms",
+ Help: "Show the permissions of a player. Show your permissions if no player name is specified.",
+ Usage: "perms [name]",
Handler: func(cc *proxy.ClientConn, args ...string) string {
return "Your permissions: " + strings.Join(cc.Perms(), ", ")
},
})
proxy.RegisterChatCmd(proxy.ChatCmd{
- Name: "server",
- Perm: "cmd_server",
+ Name: "server",
+ Perm: "cmd_server",
+ Help: "Display your current upstream server and all other configured servers. If a valid server name is specified, switch to that server.",
+ Usage: "server [server]",
Handler: func(cc *proxy.ClientConn, args ...string) string {
if len(args) == 0 {
srvs := make([]string, len(proxy.Conf().Servers))
@@ -207,4 +231,73 @@ func init() {
return ""
},
})
+
+ proxy.RegisterChatCmd(proxy.ChatCmd{
+ Name: "help",
+ Perm: "cmd_help",
+ Help: "Show help for a command (all commands if unspecified).",
+ Usage: "help [command]",
+ Handler: func(cc *proxy.ClientConn, args ...string) string {
+ cmds := proxy.ChatCmds()
+
+ help := func(name string) string {
+ str := proxy.Colorize(name+": ", "#6FF")
+ str += cmds[name].Help
+
+ return str
+ }
+
+ if len(args) != 1 {
+ if len(args) > 1 {
+ return "Usage: help [command]"
+ }
+
+ for cmd := range cmds {
+ cc.SendChatMsg(help(cmd))
+ }
+ } else {
+ if _, ok := cmds[args[0]]; !ok {
+ return "Inexistent command."
+ }
+
+ return help(args[0])
+ }
+
+ return ""
+ },
+ })
+ proxy.RegisterChatCmd(proxy.ChatCmd{
+ Name: "usage",
+ Perm: "cmd_usage",
+ Help: "Show the usage string of a command (all commands if unspecified).",
+ Usage: "usage [command]",
+ Handler: func(cc *proxy.ClientConn, args ...string) string {
+ cmds := proxy.ChatCmds()
+
+ usage := func(name string) string {
+ str := proxy.Colorize(name+": ", "#6F3")
+ str += cmds[name].Usage
+
+ return str
+ }
+
+ if len(args) != 1 {
+ if len(args) > 1 {
+ return "Usage: usage [command]"
+ }
+
+ for cmd := range cmds {
+ cc.SendChatMsg(usage(cmd))
+ }
+ } else {
+ if _, ok := cmds[args[0]]; !ok {
+ return "Inexistent command."
+ }
+
+ return usage(args[0])
+ }
+
+ return ""
+ },
+ })
}
diff --git a/go.mod b/go.mod
index 5e1c7ce..ee81e04 100644
--- a/go.mod
+++ b/go.mod
@@ -2,10 +2,10 @@ module github.com/HimbeerserverDE/mt-multiserver-chatcommands
go 1.17
-require github.com/HimbeerserverDE/mt-multiserver-proxy v0.0.0-20210909190608-30ba9fb975f4
+require github.com/HimbeerserverDE/mt-multiserver-proxy v0.0.0-20210910092542-04d33fd100b6
require (
github.com/HimbeerserverDE/srp v0.0.0-20210331172529-2b5dbec6b82b // indirect
- github.com/anon55555/mt v0.0.0-20210623155243-152b6697e62c // indirect
+ github.com/anon55555/mt v0.0.0-20210909184202-d6ba88b091f6 // indirect
github.com/mattn/go-sqlite3 v1.14.8 // indirect
)
diff --git a/go.sum b/go.sum
index d5b9b3e..ad0fac6 100644
--- a/go.sum
+++ b/go.sum
@@ -22,9 +22,15 @@ github.com/HimbeerserverDE/mt-multiserver-proxy v0.0.0-20210909185315-5067bf9440
github.com/HimbeerserverDE/mt-multiserver-proxy v0.0.0-20210909185315-5067bf94403c/go.mod h1:8xnFy8wsJTDIUkMExnTq5fdiUNbnL6udwytjRM6woDw=
github.com/HimbeerserverDE/mt-multiserver-proxy v0.0.0-20210909190608-30ba9fb975f4 h1:Snh7nClp3v8Q/NnfDW96BPEt/RDWIq15w8yXPecsu0g=
github.com/HimbeerserverDE/mt-multiserver-proxy v0.0.0-20210909190608-30ba9fb975f4/go.mod h1:8xnFy8wsJTDIUkMExnTq5fdiUNbnL6udwytjRM6woDw=
+github.com/HimbeerserverDE/mt-multiserver-proxy v0.0.0-20210910085031-1c5a72c3ef28 h1:WNkWZShOYp5tb1FfL7VxwjcOfGQJu4/9yF2vzHtRnwI=
+github.com/HimbeerserverDE/mt-multiserver-proxy v0.0.0-20210910085031-1c5a72c3ef28/go.mod h1:ZzKonpQA3kCRaL9oXnASb1EL3c4kKmqiN2I7WHtDA3Q=
+github.com/HimbeerserverDE/mt-multiserver-proxy v0.0.0-20210910092542-04d33fd100b6 h1:yh+5rQGP/Nt6DDBVfqKUTCNCDoYq+ffRfha1Z5MA7YA=
+github.com/HimbeerserverDE/mt-multiserver-proxy v0.0.0-20210910092542-04d33fd100b6/go.mod h1:ZzKonpQA3kCRaL9oXnASb1EL3c4kKmqiN2I7WHtDA3Q=
github.com/HimbeerserverDE/srp v0.0.0-20210331172529-2b5dbec6b82b h1:xqNC1S76U5U+eFyzr5Ld+8aPOLaDFCw6f1uddjui+h8=
github.com/HimbeerserverDE/srp v0.0.0-20210331172529-2b5dbec6b82b/go.mod h1:pxNH8S2nh4n2DWE0ToX5GnnDr/uEAuaAhJsCpkDLIWw=
github.com/anon55555/mt v0.0.0-20210623155243-152b6697e62c h1:+T4M4zm8QMMnH56jopsKcCBxItSsb6jtulB3ZKFYETU=
github.com/anon55555/mt v0.0.0-20210623155243-152b6697e62c/go.mod h1:jH4ER+ahjl7H6TczzK+q4V9sXY++U2Geh6/vt3r4Xvs=
+github.com/anon55555/mt v0.0.0-20210909184202-d6ba88b091f6 h1:JcKyABhWe6hGGA4IUqoCidNiKT1CCT6Sgp4D0VY7ako=
+github.com/anon55555/mt v0.0.0-20210909184202-d6ba88b091f6/go.mod h1:jH4ER+ahjl7H6TczzK+q4V9sXY++U2Geh6/vt3r4Xvs=
github.com/mattn/go-sqlite3 v1.14.8 h1:gDp86IdQsN/xWjIEmr9MF6o9mpksUgh0fu+9ByFxzIU=
github.com/mattn/go-sqlite3 v1.14.8/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=