mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-14 16:04:38 +01:00
Make char savedata persistent
This commit is contained in:
6
migrations/000003_character_savedata.down.sql
Normal file
6
migrations/000003_character_savedata.down.sql
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
BEGIN;
|
||||||
|
|
||||||
|
ALTER TABLE characters
|
||||||
|
DROP COLUMN savedata;
|
||||||
|
|
||||||
|
END;
|
||||||
6
migrations/000003_character_savedata.up.sql
Normal file
6
migrations/000003_character_savedata.up.sql
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
BEGIN;
|
||||||
|
|
||||||
|
ALTER TABLE characters
|
||||||
|
ADD COLUMN savedata bytea;
|
||||||
|
|
||||||
|
END;
|
||||||
@@ -6,7 +6,9 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// MsgMhfLoaddata represents the MSG_MHF_LOADDATA
|
// MsgMhfLoaddata represents the MSG_MHF_LOADDATA
|
||||||
type MsgMhfLoaddata struct{}
|
type MsgMhfLoaddata struct {
|
||||||
|
AckHandle uint32
|
||||||
|
}
|
||||||
|
|
||||||
// Opcode returns the ID associated with this packet type.
|
// Opcode returns the ID associated with this packet type.
|
||||||
func (m *MsgMhfLoaddata) Opcode() network.PacketID {
|
func (m *MsgMhfLoaddata) Opcode() network.PacketID {
|
||||||
@@ -15,10 +17,11 @@ func (m *MsgMhfLoaddata) Opcode() network.PacketID {
|
|||||||
|
|
||||||
// Parse parses the packet from binary
|
// Parse parses the packet from binary
|
||||||
func (m *MsgMhfLoaddata) Parse(bf *byteframe.ByteFrame) error {
|
func (m *MsgMhfLoaddata) Parse(bf *byteframe.ByteFrame) error {
|
||||||
panic("Not implemented")
|
m.AckHandle = bf.ReadUint32()
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Build builds a binary packet from the current data.
|
// Build builds a binary packet from the current data.
|
||||||
func (m *MsgMhfLoaddata) Build(bf *byteframe.ByteFrame) error {
|
func (m *MsgMhfLoaddata) Build(bf *byteframe.ByteFrame) error {
|
||||||
panic("Not implemented")
|
panic("Not implemented")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import (
|
|||||||
"encoding/base64"
|
"encoding/base64"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@@ -633,12 +632,28 @@ func handleMsgMhfSavedata(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
pkt := p.(*mhfpacket.MsgMhfSavedata)
|
pkt := p.(*mhfpacket.MsgMhfSavedata)
|
||||||
err := ioutil.WriteFile(fmt.Sprintf("savedata\\%d.bin", time.Now().Unix()), pkt.RawDataPayload, 0644)
|
err := ioutil.WriteFile(fmt.Sprintf("savedata\\%d.bin", time.Now().Unix()), pkt.RawDataPayload, 0644)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
s.logger.Fatal("Error dumping savedata", zap.Error(err))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_, err = s.server.db.Exec("UPDATE characters SET is_new_character=false, savedata=$1 WHERE id=$2", pkt.RawDataPayload, s.charID)
|
||||||
|
if err != nil {
|
||||||
|
s.logger.Fatal("Failed to update savedata in db", zap.Error(err))
|
||||||
|
}
|
||||||
|
|
||||||
s.QueueAck(pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
|
s.QueueAck(pkt.AckHandle, []byte{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00})
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleMsgMhfLoaddata(s *Session, p mhfpacket.MHFPacket) {}
|
func handleMsgMhfLoaddata(s *Session, p mhfpacket.MHFPacket) {
|
||||||
|
pkt := p.(*mhfpacket.MsgMhfLoaddata)
|
||||||
|
|
||||||
|
var data []byte
|
||||||
|
err := s.server.db.QueryRow("SELECT savedata FROM characters WHERE id = $1", s.charID).Scan(&data)
|
||||||
|
if err != nil {
|
||||||
|
s.logger.Fatal("Failed to get savedata from db", zap.Error(err))
|
||||||
|
}
|
||||||
|
|
||||||
|
doSizedAckResp(s, pkt.AckHandle, data)
|
||||||
|
}
|
||||||
|
|
||||||
func handleMsgMhfListMember(s *Session, p mhfpacket.MHFPacket) {}
|
func handleMsgMhfListMember(s *Session, p mhfpacket.MHFPacket) {}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user