mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-13 15:34:38 +01:00
add KQF command
This commit is contained in:
@@ -46,6 +46,10 @@
|
|||||||
"name": "Reload",
|
"name": "Reload",
|
||||||
"enabled": true,
|
"enabled": true,
|
||||||
"prefix": "!reload"
|
"prefix": "!reload"
|
||||||
|
}, {
|
||||||
|
"name": "KeyQuest",
|
||||||
|
"enabled": false,
|
||||||
|
"prefix": "!kqf"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"database": {
|
"database": {
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
package channelserver
|
package channelserver
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/hex"
|
||||||
|
"erupe-ce/common/byteframe"
|
||||||
|
"erupe-ce/config"
|
||||||
|
"erupe-ce/network/binpacket"
|
||||||
|
"erupe-ce/network/mhfpacket"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math"
|
"math"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"erupe-ce/common/byteframe"
|
|
||||||
"erupe-ce/config"
|
|
||||||
"erupe-ce/network/binpacket"
|
|
||||||
"erupe-ce/network/mhfpacket"
|
|
||||||
|
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -259,6 +259,27 @@ func handleMsgSysCastBinary(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if strings.HasPrefix(chatMessage.Message, commands["KeyQuest"].Prefix) {
|
||||||
|
if commands["KeyQuest"].Enabled {
|
||||||
|
if strings.HasPrefix(chatMessage.Message, "!kqf get") {
|
||||||
|
sendServerChatMessage(s, fmt.Sprintf("KQF: %x", s.kqf))
|
||||||
|
} else if strings.HasPrefix(chatMessage.Message, "!kqf set") {
|
||||||
|
var hexs string
|
||||||
|
n, numerr := fmt.Sscanf(chatMessage.Message, "!kqf set %s", &hexs)
|
||||||
|
if numerr != nil || n != 1 || len(hexs) != 16 {
|
||||||
|
sendServerChatMessage(s, "Error in command. Format: !kqf set xxxxxxxxxxxxxxxx")
|
||||||
|
} else {
|
||||||
|
hexd, _ := hex.DecodeString(hexs)
|
||||||
|
s.kqf = hexd
|
||||||
|
s.kqfOverride = true
|
||||||
|
sendServerChatMessage(s, "KQF set, please switch Land/World")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
sendDisabledCommandMessage(s, commands["KeyQuest"])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if strings.HasPrefix(chatMessage.Message, commands["Rights"].Prefix) {
|
if strings.HasPrefix(chatMessage.Message, commands["Rights"].Prefix) {
|
||||||
// Set account rights
|
// Set account rights
|
||||||
if commands["Rights"].Enabled {
|
if commands["Rights"].Enabled {
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ const (
|
|||||||
pointerWeaponID = 0x1F60A // +2
|
pointerWeaponID = 0x1F60A // +2
|
||||||
pointerHRP = 0x1FDF6 // +2
|
pointerHRP = 0x1FDF6 // +2
|
||||||
pointerGRP = 0x1FDFC // +4
|
pointerGRP = 0x1FDFC // +4
|
||||||
|
pointerKQF = 0x23D20 // +8
|
||||||
)
|
)
|
||||||
|
|
||||||
type CharacterSaveData struct {
|
type CharacterSaveData struct {
|
||||||
@@ -41,6 +42,7 @@ type CharacterSaveData struct {
|
|||||||
WeaponID uint16
|
WeaponID uint16
|
||||||
HRP uint16
|
HRP uint16
|
||||||
GR uint16
|
GR uint16
|
||||||
|
KQF []byte
|
||||||
|
|
||||||
compSave []byte
|
compSave []byte
|
||||||
decompSave []byte
|
decompSave []byte
|
||||||
@@ -80,9 +82,16 @@ func GetCharacterSaveData(s *Session, charID uint32) (*CharacterSaveData, error)
|
|||||||
|
|
||||||
func (save *CharacterSaveData) Save(s *Session) {
|
func (save *CharacterSaveData) Save(s *Session) {
|
||||||
// We need to update the save data byte array before we save it back to the DB
|
// We need to update the save data byte array before we save it back to the DB
|
||||||
save.updateSaveDataWithStruct()
|
|
||||||
save.updateStructWithSaveData()
|
save.updateStructWithSaveData()
|
||||||
|
|
||||||
|
if !s.kqfOverride {
|
||||||
|
s.kqf = save.KQF
|
||||||
|
} else {
|
||||||
|
save.KQF = s.kqf
|
||||||
|
}
|
||||||
|
|
||||||
|
save.updateSaveDataWithStruct()
|
||||||
|
|
||||||
err := save.Compress()
|
err := save.Compress()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
s.logger.Error("Failed to compress savedata", zap.Error(err))
|
s.logger.Error("Failed to compress savedata", zap.Error(err))
|
||||||
@@ -122,6 +131,7 @@ func (save *CharacterSaveData) updateSaveDataWithStruct() {
|
|||||||
rpBytes := make([]byte, 2)
|
rpBytes := make([]byte, 2)
|
||||||
binary.LittleEndian.PutUint16(rpBytes, save.RP)
|
binary.LittleEndian.PutUint16(rpBytes, save.RP)
|
||||||
copy(save.decompSave[pointerRP:pointerRP+2], rpBytes)
|
copy(save.decompSave[pointerRP:pointerRP+2], rpBytes)
|
||||||
|
copy(save.decompSave[pointerKQF:pointerKQF+8], save.KQF)
|
||||||
}
|
}
|
||||||
|
|
||||||
// This will update the save struct with the values stored in the character save
|
// This will update the save struct with the values stored in the character save
|
||||||
@@ -142,6 +152,7 @@ func (save *CharacterSaveData) updateStructWithSaveData() {
|
|||||||
save.WeaponID = binary.LittleEndian.Uint16(save.decompSave[pointerWeaponID : pointerWeaponID+2])
|
save.WeaponID = binary.LittleEndian.Uint16(save.decompSave[pointerWeaponID : pointerWeaponID+2])
|
||||||
save.HRP = binary.LittleEndian.Uint16(save.decompSave[pointerHRP : pointerHRP+2])
|
save.HRP = binary.LittleEndian.Uint16(save.decompSave[pointerHRP : pointerHRP+2])
|
||||||
save.GR = grpToGR(binary.LittleEndian.Uint32(save.decompSave[pointerGRP : pointerGRP+4]))
|
save.GR = grpToGR(binary.LittleEndian.Uint32(save.decompSave[pointerGRP : pointerGRP+4]))
|
||||||
|
save.KQF = save.decompSave[pointerKQF : pointerKQF+8]
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleMsgMhfSexChanger(s *Session, p mhfpacket.MHFPacket) {
|
func handleMsgMhfSexChanger(s *Session, p mhfpacket.MHFPacket) {
|
||||||
|
|||||||
@@ -39,6 +39,8 @@ type Session struct {
|
|||||||
sessionStart int64
|
sessionStart int64
|
||||||
rights uint32
|
rights uint32
|
||||||
token string
|
token string
|
||||||
|
kqf []byte
|
||||||
|
kqfOverride bool
|
||||||
|
|
||||||
semaphore *Semaphore // Required for the stateful MsgSysUnreserveStage packet.
|
semaphore *Semaphore // Required for the stateful MsgSysUnreserveStage packet.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user