mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-13 15:34:38 +01:00
revise command rework
This commit is contained in:
44
config.json
44
config.json
@@ -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,
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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"])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user