revise command rework

This commit is contained in:
wish
2022-09-30 02:54:37 +10:00
parent 2f123d96df
commit 9b1f3f8012
3 changed files with 53 additions and 99 deletions

View File

@@ -30,31 +30,25 @@
"bottoken": "", "bottoken": "",
"realtimeChannelID": "" "realtimeChannelID": ""
}, },
"ServerCommands": { "Commands": [
"enabled": true, {
"Commands": [ "name": "Rights",
{ "enabled": true,
"name": "Rights", "prefix": "!rights"
"enabled": true, }, {
"prefix": "!rights" "name": "Raviente",
}, "enabled": true,
{ "prefix": "!ravi"
"name": "Ravi", }, {
"enabled": true, "name": "Teleport",
"prefix": "!ravi" "enabled": true,
}, "prefix": "!tele"
{ }, {
"name": "Tele", "name": "Reload",
"enabled": true, "enabled": true,
"prefix": "!tele" "prefix": "!reload"
}, }
{ ],
"name": "Reload",
"enabled": true,
"prefix": "!reload"
}
]
},
"database": { "database": {
"host": "localhost", "host": "localhost",
"port": 5432, "port": 5432,

View File

@@ -19,7 +19,7 @@ type Config struct {
DevModeOptions DevModeOptions DevModeOptions DevModeOptions
Discord Discord Discord Discord
ServerCommands ServerCommands Commands []Command
Database Database Database Database
Launcher Launcher Launcher Launcher
Sign Sign Sign Sign
@@ -64,13 +64,8 @@ type Discord struct {
DevMode bool DevMode bool
} }
// Server commands // Command is a channelserver chat command
type ServerCommands struct { type Command struct {
Enabled bool
Commands []ServerCommand
}
type ServerCommand struct {
Name string Name string
Enabled bool Enabled bool
Prefix string Prefix string
@@ -142,17 +137,6 @@ func init() {
} }
func GetServerCommandByName(cmdName string) ServerCommand {
var val ServerCommand
for _, c := range ErupeConfig.ServerCommands.Commands {
if c.Name == cmdName {
return c
}
}
return val
}
// getOutboundIP4 gets the preferred outbound ip4 of this machine // getOutboundIP4 gets the preferred outbound ip4 of this machine
// From https://stackoverflow.com/a/37382208 // From https://stackoverflow.com/a/37382208
func getOutboundIP4() net.IP { func getOutboundIP4() net.IP {

View File

@@ -32,45 +32,26 @@ const (
BroadcastTypeWorld = 0x0a BroadcastTypeWorld = 0x0a
) )
var raviCmd config.ServerCommand var commands map[string]config.Command
var rightsCmd config.ServerCommand
var teleCmd config.ServerCommand
var reloadCmd config.ServerCommand
var logger *zap.Logger
func init() { func init() {
commands = make(map[string]config.Command)
zapLogger, _ := zap.NewDevelopment() zapLogger, _ := zap.NewDevelopment()
defer zapLogger.Sync() defer zapLogger.Sync()
logger = zapLogger.Named("channelserver") logger := zapLogger.Named("commands")
cmds := config.ErupeConfig.Commands
raviCmd = config.GetServerCommandByName("Ravi") for _, cmd := range cmds {
if raviCmd.Enabled { commands[cmd.Name] = cmd
logger.Info(raviCmd.Name + " command is enabled") if cmd.Enabled {
} else { logger.Info(fmt.Sprintf("%s command is enabled, prefix: %s", cmd.Name, cmd.Prefix))
logger.Info(raviCmd.Name + " command is disabled") } else {
} logger.Info(fmt.Sprintf("%s command is disabled", cmd.Name))
}
rightsCmd = config.GetServerCommandByName("Rights")
if rightsCmd.Enabled {
logger.Info(rightsCmd.Name + " command is enabled")
} else {
logger.Info(rightsCmd.Name + " command is disabled")
}
teleCmd = config.GetServerCommandByName("Tele")
if teleCmd.Enabled {
logger.Info(teleCmd.Name + " command is enabled")
} else {
logger.Info(teleCmd.Name + " command is disabled")
}
reloadCmd = config.GetServerCommandByName("Reload")
if reloadCmd.Enabled {
logger.Info(reloadCmd.Name + " command is enabled")
} else {
logger.Info(reloadCmd.Name + " command is disabled")
} }
}
func sendDisabledCommandMessage(s *Session, cmd config.Command) {
sendServerChatMessage(s, fmt.Sprintf("%s command is disabled", cmd.Name))
} }
func sendServerChatMessage(s *Session, message string) { func sendServerChatMessage(s *Session, message string) {
@@ -209,9 +190,14 @@ func handleMsgSysCastBinary(s *Session, p mhfpacket.MHFPacket) {
fmt.Printf("Got chat message: %+v\n", chatMessage) fmt.Printf("Got chat message: %+v\n", chatMessage)
if strings.HasPrefix(chatMessage.Message, reloadCmd.Prefix) { // Discord integration
if (pkt.BroadcastType == BroadcastTypeStage && s.stage.id == "sl1Ns200p0a0u0") || pkt.BroadcastType == BroadcastTypeWorld {
s.server.DiscordChannelSend(chatMessage.SenderName, chatMessage.Message)
}
if strings.HasPrefix(chatMessage.Message, commands["Reload"].Prefix) {
// Flush all objects and users and reload // Flush all objects and users and reload
if reloadCmd.Enabled { if commands["Reload"].Enabled {
sendServerChatMessage(s, "Reloading players...") sendServerChatMessage(s, "Reloading players...")
var temp mhfpacket.MHFPacket var temp mhfpacket.MHFPacket
deleteNotif := byteframe.NewByteFrame() deleteNotif := byteframe.NewByteFrame()
@@ -269,14 +255,13 @@ func handleMsgSysCastBinary(s *Session, p mhfpacket.MHFPacket) {
reloadNotif.WriteUint16(0x0010) reloadNotif.WriteUint16(0x0010)
s.QueueSend(reloadNotif.Data()) s.QueueSend(reloadNotif.Data())
} else { } else {
sendServerChatMessage(s, reloadCmd.Name+" command is disabled") sendDisabledCommandMessage(s, commands["Reload"])
} }
} }
if strings.HasPrefix(chatMessage.Message, rightsCmd.Prefix) { if strings.HasPrefix(chatMessage.Message, commands["Rights"].Prefix) {
// Set account rights // Set account rights
if rightsCmd.Enabled { if commands["Rights"].Enabled {
var v uint32 var v uint32
n, err := fmt.Sscanf(chatMessage.Message, "!rights %d", &v) n, err := fmt.Sscanf(chatMessage.Message, "!rights %d", &v)
if err != nil || n != 1 { if err != nil || n != 1 {
@@ -288,19 +273,12 @@ func handleMsgSysCastBinary(s *Session, p mhfpacket.MHFPacket) {
} }
} }
} else { } else {
sendServerChatMessage(s, rightsCmd.Name+" command is disabled") sendDisabledCommandMessage(s, commands["Rights"])
} }
} }
// Discord integration if strings.HasPrefix(chatMessage.Message, commands["Raviente"].Prefix) {
if (pkt.BroadcastType == BroadcastTypeStage && s.stage.id == "sl1Ns200p0a0u0") || pkt.BroadcastType == BroadcastTypeWorld { if commands["Raviente"].Enabled {
s.server.DiscordChannelSend(chatMessage.SenderName, chatMessage.Message)
}
if strings.HasPrefix(chatMessage.Message, raviCmd.Prefix) {
// RAVI COMMANDS V2
if raviCmd.Enabled {
if getRaviSemaphore(s) != "" { if getRaviSemaphore(s) != "" {
s.server.raviente.Lock() s.server.raviente.Lock()
if !strings.HasPrefix(chatMessage.Message, "!ravi ") { if !strings.HasPrefix(chatMessage.Message, "!ravi ") {
@@ -358,14 +336,12 @@ func handleMsgSysCastBinary(s *Session, p mhfpacket.MHFPacket) {
sendServerChatMessage(s, "No one has joined the Great Slaying!") sendServerChatMessage(s, "No one has joined the Great Slaying!")
} }
} else { } else {
sendServerChatMessage(s, raviCmd.Name+" command is disabled") sendDisabledCommandMessage(s, commands["Raviente"])
} }
} }
// END RAVI COMMANDS V2 if strings.HasPrefix(chatMessage.Message, commands["Teleport"].Prefix) {
if commands["Teleport"].Enabled {
if strings.HasPrefix(chatMessage.Message, teleCmd.Prefix) {
if teleCmd.Enabled {
var x, y int16 var x, y int16
n, err := fmt.Sscanf(chatMessage.Message, "!tele %d %d", &x, &y) n, err := fmt.Sscanf(chatMessage.Message, "!tele %d %d", &x, &y)
if err != nil || n != 2 { if err != nil || n != 2 {
@@ -388,7 +364,7 @@ func handleMsgSysCastBinary(s *Session, p mhfpacket.MHFPacket) {
}) })
} }
} else { } else {
sendServerChatMessage(s, teleCmd.Name+" command is disabled") sendDisabledCommandMessage(s, commands["Teleport"])
} }
} }
} }