4 Commits

Author SHA1 Message Date
stratic-dev
952db812ec Merge branch 'feature/earth' of https://github.com/ZeruLight/Erupe into feature/tower 2024-07-31 18:07:07 +01:00
stratic-dev
2d0cce719b Added seiabatu cross event pkt 2024-07-31 18:06:32 +01:00
stratic-dev
2bc31c718a Init tower seperation from tower-experiments 2024-07-31 15:42:29 +01:00
stratic-dev
c6fdf47779 Added earth 2024-07-31 14:56:34 +01:00
16 changed files with 1780 additions and 979 deletions

View File

@@ -22,9 +22,8 @@
"CommandPrefix": "!",
"AutoCreateAccount": true,
"DefaultCourses": [1, 23, 24],
"EarthStatus": 0,
"EarthID": 0,
"EarthMonsters": [0, 0, 0, 0],
"EarthDebug": false,
"EarthMonsters": [116, 107, 2, 36],
"SaveDumps": {
"Enabled": true,
"RawEnabled": false,

View File

@@ -82,8 +82,7 @@ type Config struct {
CommandPrefix string // The prefix for commands
AutoCreateAccount bool // Automatically create accounts if they don't exist
DefaultCourses []uint16
EarthStatus int32
EarthID int32
EarthDebug bool
EarthMonsters []int32
SaveDumps SaveDumpOptions
Screenshots ScreenshotsOptions

View File

@@ -1,20 +1,21 @@
package mhfpacket
import (
"errors"
import (
"errors"
"fmt"
"erupe-ce/network/clientctx"
"erupe-ce/network"
"erupe-ce/common/byteframe"
"erupe-ce/network"
"erupe-ce/network/clientctx"
)
// MsgMhfGetPaperData represents the MSG_MHF_GET_PAPER_DATA
type MsgMhfGetPaperData struct {
// Communicator type, multi-format. This might be valid for only one type.
AckHandle uint32
Unk0 uint32
Type uint32
Unk1 uint32
Unk2 uint32
ID uint32
}
// Opcode returns the ID associated with this packet type.
@@ -25,9 +26,10 @@ func (m *MsgMhfGetPaperData) Opcode() network.PacketID {
// Parse parses the packet from binary
func (m *MsgMhfGetPaperData) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
m.AckHandle = bf.ReadUint32()
m.Unk0 = bf.ReadUint32()
m.Type = bf.ReadUint32()
m.Unk1 = bf.ReadUint32()
m.Unk2 = bf.ReadUint32()
m.ID = bf.ReadUint32()
fmt.Printf("MsgMhfGetPaperData: Type:[%d] Unk1:[%d] ID:[%d] \n\n", m.Type, m.Unk1, m.ID)
return nil
}

View File

@@ -2,6 +2,7 @@ package mhfpacket
import (
"errors"
"fmt"
"erupe-ce/common/byteframe"
"erupe-ce/network"
@@ -28,6 +29,7 @@ func (m *MsgMhfGetTinyBin) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientC
m.Unk0 = bf.ReadUint8()
m.Unk1 = bf.ReadUint8()
m.Unk2 = bf.ReadUint8()
fmt.Printf("MsgMhfGetTinyBin: Unk0:[%d] Unk1:[%d] Unk2:[%d] \n\n", m.Unk0, m.Unk1, m.Unk2)
return nil
}

View File

@@ -2,6 +2,7 @@ package mhfpacket
import (
"errors"
"fmt"
"erupe-ce/common/byteframe"
"erupe-ce/network"
@@ -10,11 +11,11 @@ import (
// MsgMhfGetWeeklySeibatuRankingReward represents the MSG_MHF_GET_WEEKLY_SEIBATU_RANKING_REWARD
type MsgMhfGetWeeklySeibatuRankingReward struct {
AckHandle uint32
Unk0 uint32
Unk1 uint32
Unk2 uint32
Unk3 uint32
AckHandle uint32
Unk0 uint32
Operation uint32
ID uint32
EarthMonster uint32
}
// Opcode returns the ID associated with this packet type.
@@ -26,9 +27,10 @@ func (m *MsgMhfGetWeeklySeibatuRankingReward) Opcode() network.PacketID {
func (m *MsgMhfGetWeeklySeibatuRankingReward) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
m.AckHandle = bf.ReadUint32()
m.Unk0 = bf.ReadUint32()
m.Unk1 = bf.ReadUint32()
m.Unk2 = bf.ReadUint32()
m.Unk3 = bf.ReadUint32()
m.Operation = bf.ReadUint32()
m.ID = bf.ReadUint32()
m.EarthMonster = bf.ReadUint32()
fmt.Printf("MsgMhfGetWeeklySeibatuRankingReward: Unk0:[%d] Operation:[%d] ID:[%d] EarthMonster:[%d]\n\n", m.Unk0, m.Operation, m.ID, m.EarthMonster)
return nil
}

View File

@@ -2,6 +2,7 @@ package mhfpacket
import (
"errors"
"fmt"
"erupe-ce/common/byteframe"
"erupe-ce/network"
@@ -31,6 +32,7 @@ func (m *MsgMhfPostTinyBin) Parse(bf *byteframe.ByteFrame, ctx *clientctx.Client
m.Unk2 = bf.ReadUint8()
m.Unk3 = bf.ReadUint8()
m.Data = bf.ReadBytes(uint(bf.ReadUint16()))
fmt.Printf("MsgMhfPostTinyBin: Unk0:[%d] Unk1:[%d] Unk2:[%d] Unk3:[%d] \n\n", m.Unk0, m.Unk1, m.Unk2, m.Unk3)
return nil
}

View File

@@ -20,7 +20,8 @@ type MsgMhfPostTowerInfo struct {
Unk6 int32
Unk7 int32
Block1 int32
Unk9 int64
TimeTaken int32
CID int32
}
// Opcode returns the ID associated with this packet type.
@@ -40,7 +41,8 @@ func (m *MsgMhfPostTowerInfo) Parse(bf *byteframe.ByteFrame, ctx *clientctx.Clie
m.Unk6 = bf.ReadInt32()
m.Unk7 = bf.ReadInt32()
m.Block1 = bf.ReadInt32()
m.Unk9 = bf.ReadInt64()
m.TimeTaken = bf.ReadInt32()
m.CID = bf.ReadInt32()
return nil
}

View File

@@ -2,6 +2,7 @@ package mhfpacket
import (
"errors"
"fmt"
"erupe-ce/common/byteframe"
"erupe-ce/network"
@@ -10,15 +11,15 @@ import (
// MsgMhfPresentBox represents the MSG_MHF_PRESENT_BOX
type MsgMhfPresentBox struct {
AckHandle uint32
Unk0 uint32
Unk1 uint32
Unk2 uint32
Unk3 uint32
Unk4 uint32
Unk5 uint32
Unk6 uint32
Unk7 []uint32
AckHandle uint32
Unk0 uint32
Operation uint32
PresentCount uint32
Unk3 uint32
Unk4 uint32
Unk5 uint32
Unk6 uint32
PresentType []uint32
}
// Opcode returns the ID associated with this packet type.
@@ -30,14 +31,19 @@ func (m *MsgMhfPresentBox) Opcode() network.PacketID {
func (m *MsgMhfPresentBox) Parse(bf *byteframe.ByteFrame, ctx *clientctx.ClientContext) error {
m.AckHandle = bf.ReadUint32()
m.Unk0 = bf.ReadUint32()
m.Unk1 = bf.ReadUint32()
m.Unk2 = bf.ReadUint32()
m.Operation = bf.ReadUint32()
m.PresentCount = bf.ReadUint32()
m.Unk3 = bf.ReadUint32()
m.Unk4 = bf.ReadUint32()
m.Unk5 = bf.ReadUint32()
m.Unk6 = bf.ReadUint32()
for i := uint32(0); i < m.Unk2; i++ {
m.Unk7 = append(m.Unk7, bf.ReadUint32())
for i := uint32(0); i < m.PresentCount; i++ {
m.PresentType = append(m.PresentType, bf.ReadUint32())
}
fmt.Printf("MsgMhfPresentBox: Unk0:[%d] Unk1:[%d] Unk2:[%d] Unk3:[%d] Unk4:[%d] Unk5:[%d] Unk6:[%d] \n\n", m.Unk0, m.Operation, m.PresentCount, m.Unk3, m.Unk4, m.Unk5, m.Unk6)
for _, mdata := range m.PresentType {
fmt.Printf("MsgMhfPresentBox: PresentType: [%d] \n", mdata)
}
return nil
}

View File

@@ -0,0 +1,752 @@
BEGIN;
INSERT INTO public.paper_data_gifts (gift_id, item_id, unk0,unk1,unk2) VALUES
(6001,11159, 1, 1, 5000),
(6001,11160, 1, 1, 3350),
(6001,11161, 1, 1, 1500),
(6001,11162, 1, 1, 100),
(6001,11163, 1, 1, 50),
(6002,11159, 2, 1, 1800),
(6002,11160, 2, 1, 1200),
(6002,11161, 2, 1, 500),
(6002,11162, 1, 1, 50),
(6002,11037, 1, 1, 150),
(6002,11038, 1, 1, 150),
(6002,11044, 1, 1, 150),
(6002,11057, 1, 1, 150),
(6002,11059, 1, 1, 150),
(6002,11079, 1, 1, 150),
(6002,11098, 1, 1, 150),
(6002,11104, 1, 1, 150),
(6002,11117, 1, 1, 150),
(6002,11128, 1, 1, 150),
(6002,11133, 1, 1, 150),
(6002,11137, 1, 1, 150),
(6002,11143, 1, 1, 150),
(6002,11132, 1, 1, 150),
(6002,11039, 1, 1, 150),
(6002,11040, 1, 1, 150),
(6002,11049, 1, 1, 150),
(6002,11061, 1, 1, 150),
(6002,11063, 1, 1, 150),
(6002,11077, 1, 1, 150),
(6002,11099, 1, 1, 150),
(6002,11105, 1, 1, 150),
(6002,11129, 1, 1, 150),
(6002,11130, 1, 1, 150),
(6002,11131, 1, 1, 150),
(6002,11139, 1, 1, 150),
(6002,11145, 1, 1, 150),
(6002,11096, 1, 1, 150),
(6002,11041, 1, 1, 150),
(6002,11047, 1, 1, 150),
(6002,11054, 1, 1, 150),
(6002,11065, 1, 1, 150),
(6002,11068, 1, 1, 150),
(6002,11075, 1, 1, 150),
(6002,11100, 1, 1, 150),
(6002,11106, 1, 1, 150),
(6002,11119, 1, 1, 150),
(6002,11135, 1, 1, 150),
(6002,11136, 1, 1, 150),
(6002,11138, 1, 1, 150),
(6002,11088, 1, 1, 150),
(6002,10370, 1, 1, 150),
(6002,10368, 1, 1, 150),
(6010,11159, 1, 1, 3700),
(6010,11160, 1, 1, 2900),
(6010,11161, 1, 1, 1300),
(6010,11453, 1, 1, 250),
(6010,11454, 1, 1, 250),
(6010,12055, 1, 1, 250),
(6010,12065, 1, 1, 250),
(6010,12058, 1, 1, 250),
(6010,12068, 1, 1, 250),
(6010,11774, 1, 1, 200),
(6010,11773, 1, 1, 400),
(6011,11159, 1, 1, 3700),
(6011,11160, 1, 1, 2900),
(6011,11161, 1, 1, 1300),
(6011,11453, 1, 1, 250),
(6011,11454, 1, 1, 250),
(6011,12055, 1, 1, 250),
(6011,12065, 1, 1, 250),
(6011,12058, 1, 1, 250),
(6011,12068, 1, 1, 250),
(6011,11774, 1, 1, 200),
(6011,11773, 1, 1, 400),
(6012,11159, 2, 1, 3500),
(6012,11160, 2, 1, 2900),
(6012,11161, 2, 1, 1300),
(6012,12508, 1, 1, 400),
(6012,11453, 1, 1, 200),
(6012,11454, 1, 1, 200),
(6012,12055, 1, 1, 200),
(6012,12065, 1, 1, 200),
(6012,12058, 1, 1, 200),
(6012,12068, 1, 1, 200),
(6012,11775, 1, 1, 400),
(6012,11776, 1, 1, 200),
(6012,11777, 1, 1, 100),
(7001,11037, 1, 1, 290),
(7001,11038, 1, 1, 270),
(7001,11044, 1, 1, 270),
(7001,11057, 1, 1, 290),
(7001,11059, 1, 1, 290),
(7001,11079, 1, 1, 290),
(7001,11098, 1, 1, 280),
(7001,11104, 1, 1, 300),
(7001,11117, 1, 1, 280),
(7001,11128, 1, 1, 290),
(7001,11133, 1, 1, 290),
(7001,11137, 1, 1, 300),
(7001,11143, 1, 1, 290),
(7001,11132, 1, 1, 270),
(7001,11042, 1, 1, 47),
(7001,11045, 1, 1, 47),
(7001,11064, 1, 1, 47),
(7001,11062, 1, 1, 47),
(7001,11070, 1, 1, 48),
(7001,11101, 1, 1, 47),
(7001,11108, 1, 1, 47),
(7001,11109, 1, 1, 47),
(7001,11120, 1, 1, 47),
(7001,11122, 1, 1, 47),
(7001,11134, 1, 1, 47),
(7001,11141, 1, 1, 47),
(7001,11084, 1, 1, 47),
(7001,11087, 1, 1, 47),
(7001,11094, 1, 1, 47),
(7001,10374, 1, 1, 47),
(7001,10375, 1, 1, 47),
(7001,11051, 1, 1, 17),
(7001,11071, 1, 1, 16),
(7001,11076, 1, 1, 16),
(7001,11102, 1, 1, 17),
(7001,11124, 1, 1, 17),
(7001,11090, 1, 1, 17),
(7001,11159, 1, 1, 1200),
(7001,11159, 2, 1, 650),
(7001,11160, 1, 1, 800),
(7001,11160, 2, 1, 300),
(7001,11161, 1, 1, 100),
(7001,11161, 2, 1, 50),
(7001,11164, 1, 1, 100),
(7001,11162, 1, 1, 100),
(7001,11163, 1, 1, 100),
(7001,11158, 1, 1, 300),
(7001,11463, 1, 1, 300),
(7001,11356, 1, 1, 300),
(7001,11464, 1, 1, 300),
(7001,11357, 1, 1, 500),
(7001,11039, 1, 2, 300),
(7001,11040, 1, 2, 270),
(7001,11049, 1, 2, 300),
(7001,11061, 1, 2, 290),
(7001,11063, 1, 2, 290),
(7001,11077, 1, 2, 290),
(7001,11099, 1, 2, 280),
(7001,11105, 1, 2, 300),
(7001,11129, 1, 2, 250),
(7001,11130, 1, 2, 300),
(7001,11131, 1, 2, 280),
(7001,11139, 1, 2, 290),
(7001,11145, 1, 2, 260),
(7001,11096, 1, 2, 300),
(7001,11046, 1, 2, 47),
(7001,11066, 1, 2, 47),
(7001,11067, 1, 2, 47),
(7001,11072, 1, 2, 47),
(7001,11082, 1, 2, 47),
(7001,11103, 1, 2, 47),
(7001,11110, 1, 2, 47),
(7001,11112, 1, 2, 47),
(7001,11114, 1, 2, 47),
(7001,11115, 1, 2, 47),
(7001,11121, 1, 2, 47),
(7001,11144, 1, 2, 48),
(7001,11085, 1, 2, 47),
(7001,11089, 1, 2, 47),
(7001,11091, 1, 2, 47),
(7001,10376, 1, 2, 47),
(7001,10377, 1, 2, 47),
(7001,11127, 1, 2, 17),
(7001,11069, 1, 2, 17),
(7001,11142, 1, 2, 17),
(7001,11078, 1, 2, 17),
(7001,11056, 1, 2, 16),
(7001,11092, 1, 2, 16),
(7001,11159, 1, 2, 1200),
(7001,11159, 2, 2, 650),
(7001,11160, 1, 2, 800),
(7001,11160, 2, 2, 300),
(7001,11161, 1, 2, 100),
(7001,11161, 2, 2, 50),
(7001,11164, 1, 2, 100),
(7001,11162, 1, 2, 100),
(7001,11163, 1, 2, 100),
(7001,11158, 1, 2, 300),
(7001,11463, 1, 2, 300),
(7001,11356, 1, 2, 300),
(7001,11464, 1, 2, 300),
(7001,11357, 1, 2, 500),
(7001,11041, 1, 3, 266),
(7001,11047, 1, 3, 266),
(7001,11054, 1, 3, 266),
(7001,11065, 1, 3, 266),
(7001,11068, 1, 3, 266),
(7001,11075, 1, 3, 266),
(7001,11100, 1, 3, 266),
(7001,11106, 1, 3, 266),
(7001,11119, 1, 3, 266),
(7001,11135, 1, 3, 268),
(7001,11136, 1, 3, 268),
(7001,11138, 1, 3, 268),
(7001,11088, 1, 3, 268),
(7001,10370, 1, 3, 266),
(7001,10368, 1, 3, 268),
(7001,11043, 1, 3, 50),
(7001,11048, 1, 3, 50),
(7001,11050, 1, 3, 50),
(7001,11058, 1, 3, 50),
(7001,11060, 1, 3, 50),
(7001,11074, 1, 3, 50),
(7001,11107, 1, 3, 50),
(7001,11111, 1, 3, 50),
(7001,11113, 1, 3, 50),
(7001,11118, 1, 3, 50),
(7001,11126, 1, 3, 50),
(7001,11140, 1, 3, 50),
(7001,11086, 1, 3, 50),
(7001,11095, 1, 3, 50),
(7001,11055, 1, 3, 50),
(7001,10378, 1, 3, 50),
(7001,11052, 1, 3, 15),
(7001,11073, 1, 3, 15),
(7001,11146, 1, 3, 15),
(7001,11116, 1, 3, 15),
(7001,11123, 1, 3, 15),
(7001,11097, 1, 3, 15),
(7001,10367, 1, 3, 15),
(7001,10371, 1, 3, 15),
(7001,10373, 1, 3, 15),
(7001,10778, 1, 3, 375),
(7001,11209, 1, 3, 375),
(7001,10813, 1, 3, 375),
(7001,11389, 1, 3, 375),
(7001,11159, 1, 3, 1000),
(7001,11159, 2, 3, 250),
(7001,11160, 1, 3, 700),
(7001,11160, 2, 3, 175),
(7001,11161, 1, 3, 300),
(7001,11161, 2, 3, 75),
(7001,11465, 1, 3, 53),
(7001,11466, 1, 3, 27),
(7001,11467, 1, 3, 266),
(7001,11468, 1, 3, 533),
(7001,11469, 1, 3, 186),
(7002,11037, 1, 1, 100),
(7002,11038, 1, 1, 100),
(7002,11044, 1, 1, 100),
(7002,11057, 1, 1, 100),
(7002,11059, 1, 1, 100),
(7002,11079, 1, 1, 100),
(7002,11098, 1, 1, 100),
(7002,11104, 1, 1, 100),
(7002,11117, 1, 1, 100),
(7002,11128, 1, 1, 100),
(7002,11133, 1, 1, 100),
(7002,11137, 1, 1, 100),
(7002,11143, 1, 1, 100),
(7002,11132, 1, 1, 100),
(7002,11042, 1, 1, 60),
(7002,11045, 1, 1, 60),
(7002,11064, 1, 1, 60),
(7002,11062, 1, 1, 60),
(7002,11070, 1, 1, 60),
(7002,11101, 1, 1, 60),
(7002,11108, 1, 1, 60),
(7002,11109, 1, 1, 60),
(7002,11120, 1, 1, 60),
(7002,11122, 1, 1, 60),
(7002,11134, 1, 1, 60),
(7002,11141, 1, 1, 60),
(7002,11084, 1, 1, 60),
(7002,11087, 1, 1, 60),
(7002,11094, 1, 1, 60),
(7002,10374, 1, 1, 60),
(7002,10375, 1, 1, 60),
(7002,11051, 1, 1, 20),
(7002,11071, 1, 1, 20),
(7002,11076, 1, 1, 20),
(7002,11102, 1, 1, 20),
(7002,11124, 1, 1, 20),
(7002,11090, 1, 1, 20),
(7002,11164, 1, 1, 400),
(7002,11162, 1, 1, 200),
(7002,11163, 1, 1, 200),
(7002,11463, 1, 1, 100),
(7002,11464, 1, 1, 150),
(7002,10355, 1, 1, 150),
(7002,12506, 1, 1, 200),
(7002,12507, 1, 1, 300),
(7002,12508, 1, 1, 900),
(7002,13629, 1, 1, 350),
(7002,13628, 1, 1, 200),
(7002,11356, 1, 1, 100),
(7002,11357, 1, 1, 150),
(7002,12014, 1, 1, 250),
(7002,12016, 1, 1, 400),
(7002,12015, 1, 1, 410),
(7002,11159, 2, 1, 500),
(7002,11159, 4, 1, 500),
(7002,11159, 6, 1, 500),
(7002,11160, 2, 1, 400),
(7002,11160, 4, 1, 400),
(7002,11160, 6, 1, 400),
(7002,11161, 2, 1, 100),
(7002,11161, 4, 1, 100),
(7002,11161, 6, 1, 100),
(7002,11039, 1, 2, 100),
(7002,11040, 1, 2, 100),
(7002,11049, 1, 2, 100),
(7002,11061, 1, 2, 100),
(7002,11063, 1, 2, 100),
(7002,11077, 1, 2, 100),
(7002,11099, 1, 2, 100),
(7002,11105, 1, 2, 100),
(7002,11129, 1, 2, 100),
(7002,11130, 1, 2, 100),
(7002,11131, 1, 2, 100),
(7002,11139, 1, 2, 100),
(7002,11145, 1, 2, 100),
(7002,11096, 1, 2, 100),
(7002,11046, 1, 2, 60),
(7002,11066, 1, 2, 60),
(7002,11067, 1, 2, 60),
(7002,11072, 1, 2, 60),
(7002,11082, 1, 2, 60),
(7002,11103, 1, 2, 60),
(7002,11110, 1, 2, 60),
(7002,11112, 1, 2, 60),
(7002,11114, 1, 2, 60),
(7002,11115, 1, 2, 60),
(7002,11121, 1, 2, 60),
(7002,11144, 1, 2, 60),
(7002,11085, 1, 2, 60),
(7002,11089, 1, 2, 60),
(7002,11091, 1, 2, 60),
(7002,10376, 1, 2, 60),
(7002,10377, 1, 2, 60),
(7002,11127, 1, 2, 20),
(7002,11069, 1, 2, 20),
(7002,11142, 1, 2, 20),
(7002,11078, 1, 2, 20),
(7002,11056, 1, 2, 20),
(7002,11092, 1, 2, 20),
(7002,11164, 1, 2, 400),
(7002,11162, 1, 2, 200),
(7002,11163, 1, 2, 200),
(7002,11463, 1, 2, 250),
(7002,11464, 1, 2, 350),
(7002,12506, 1, 2, 150),
(7002,12507, 1, 2, 200),
(7002,12508, 1, 2, 350),
(7002,13629, 1, 2, 250),
(7002,13628, 1, 2, 200),
(7002,10355, 1, 2, 400),
(7002,11158, 1, 2, 100),
(7002,11356, 1, 2, 100),
(7002,11357, 1, 2, 100),
(7002,12014, 1, 2, 300),
(7002,12016, 1, 2, 450),
(7002,12015, 1, 2, 460),
(7002,11159, 2, 2, 500),
(7002,11159, 4, 2, 500),
(7002,11159, 6, 2, 500),
(7002,11160, 2, 2, 400),
(7002,11160, 4, 2, 400),
(7002,11160, 6, 2, 400),
(7002,11161, 2, 2, 100),
(7002,11161, 4, 2, 100),
(7002,11161, 6, 2, 100),
(7002,11041, 1, 3, 120),
(7002,11047, 1, 3, 120),
(7002,11054, 1, 3, 120),
(7002,11065, 1, 3, 120),
(7002,11068, 1, 3, 120),
(7002,11075, 1, 3, 120),
(7002,11100, 1, 3, 120),
(7002,11106, 1, 3, 120),
(7002,11119, 1, 3, 120),
(7002,11135, 1, 3, 120),
(7002,11136, 1, 3, 120),
(7002,11138, 1, 3, 120),
(7002,11088, 1, 3, 120),
(7002,10370, 1, 3, 120),
(7002,10368, 1, 3, 120),
(7002,11043, 1, 3, 65),
(7002,11048, 1, 3, 65),
(7002,11050, 1, 3, 65),
(7002,11058, 1, 3, 65),
(7002,11060, 1, 3, 65),
(7002,11074, 1, 3, 65),
(7002,11107, 1, 3, 65),
(7002,11111, 1, 3, 65),
(7002,11113, 1, 3, 65),
(7002,11118, 1, 3, 65),
(7002,11126, 1, 3, 65),
(7002,11140, 1, 3, 65),
(7002,11086, 1, 3, 65),
(7002,11095, 1, 3, 65),
(7002,11055, 1, 3, 65),
(7002,10378, 1, 3, 65),
(7002,11052, 1, 3, 15),
(7002,11073, 1, 3, 15),
(7002,11146, 1, 3, 15),
(7002,11116, 1, 3, 15),
(7002,11123, 1, 3, 15),
(7002,11097, 1, 3, 15),
(7002,10367, 1, 3, 15),
(7002,10371, 1, 3, 15),
(7002,10373, 1, 3, 15),
(7002,10778, 3, 3, 490),
(7002,11209, 3, 3, 490),
(7002,10813, 3, 3, 490),
(7002,11389, 3, 3, 490),
(7002,12046, 3, 3, 500),
(7002,12503, 3, 3, 500),
(7002,11159, 2, 3, 500),
(7002,11159, 4, 3, 500),
(7002,11159, 6, 3, 500),
(7002,11160, 2, 3, 400),
(7002,11160, 4, 3, 400),
(7002,11160, 6, 3, 400),
(7002,11161, 2, 3, 100),
(7002,11161, 4, 3, 100),
(7002,11161, 6, 3, 100),
(7002,11465, 1, 3, 53),
(7002,11466, 1, 3, 27),
(7002,11467, 1, 3, 266),
(7002,11468, 1, 3, 533),
(7002,11469, 1, 3, 186),
(7011,11037, 1, 1, 290),
(7011,11038, 1, 1, 270),
(7011,11044, 1, 1, 270),
(7011,11057, 1, 1, 290),
(7011,11059, 1, 1, 290),
(7011,11079, 1, 1, 290),
(7011,11098, 1, 1, 280),
(7011,11104, 1, 1, 300),
(7011,11117, 1, 1, 280),
(7011,11128, 1, 1, 290),
(7011,11133, 1, 1, 290),
(7011,11137, 1, 1, 300),
(7011,11143, 1, 1, 290),
(7011,11132, 1, 1, 270),
(7011,11042, 1, 1, 47),
(7011,11045, 1, 1, 47),
(7011,11064, 1, 1, 47),
(7011,11062, 1, 1, 47),
(7011,11070, 1, 1, 48),
(7011,11101, 1, 1, 47),
(7011,11108, 1, 1, 47),
(7011,11109, 1, 1, 47),
(7011,11120, 1, 1, 47),
(7011,11122, 1, 1, 47),
(7011,11134, 1, 1, 47),
(7011,11141, 1, 1, 47),
(7011,11084, 1, 1, 47),
(7011,11087, 1, 1, 47),
(7011,11094, 1, 1, 47),
(7011,10374, 1, 1, 47),
(7011,10375, 1, 1, 47),
(7011,11051, 1, 1, 17),
(7011,11071, 1, 1, 16),
(7011,11076, 1, 1, 16),
(7011,11102, 1, 1, 17),
(7011,11124, 1, 1, 17),
(7011,11090, 1, 1, 17),
(7011,11159, 1, 1, 1200),
(7011,11159, 2, 1, 650),
(7011,11160, 1, 1, 800),
(7011,11160, 2, 1, 300),
(7011,11161, 1, 1, 100),
(7011,11161, 2, 1, 50),
(7011,11164, 1, 1, 100),
(7011,11162, 1, 1, 100),
(7011,11163, 1, 1, 100),
(7011,11158, 1, 1, 300),
(7011,11463, 1, 1, 300),
(7011,11356, 1, 1, 300),
(7011,11464, 1, 1, 300),
(7011,11357, 1, 1, 500),
(7011,11039, 1, 2, 300),
(7011,11040, 1, 2, 270),
(7011,11049, 1, 2, 300),
(7011,11061, 1, 2, 290),
(7011,11063, 1, 2, 290),
(7011,11077, 1, 2, 290),
(7011,11099, 1, 2, 280),
(7011,11105, 1, 2, 300),
(7011,11129, 1, 2, 250),
(7011,11130, 1, 2, 300),
(7011,11131, 1, 2, 280),
(7011,11139, 1, 2, 290),
(7011,11145, 1, 2, 260),
(7011,11096, 1, 2, 300),
(7011,11046, 1, 2, 47),
(7011,11066, 1, 2, 47),
(7011,11067, 1, 2, 47),
(7011,11072, 1, 2, 47),
(7011,11082, 1, 2, 47),
(7011,11103, 1, 2, 47),
(7011,11110, 1, 2, 47),
(7011,11112, 1, 2, 47),
(7011,11114, 1, 2, 47),
(7011,11115, 1, 2, 47),
(7011,11121, 1, 2, 47),
(7011,11144, 1, 2, 48),
(7011,11085, 1, 2, 47),
(7011,11089, 1, 2, 47),
(7011,11091, 1, 2, 47),
(7011,10376, 1, 2, 47),
(7011,10377, 1, 2, 47),
(7011,11127, 1, 2, 17),
(7011,11069, 1, 2, 17),
(7011,11142, 1, 2, 17),
(7011,11078, 1, 2, 17),
(7011,11056, 1, 2, 16),
(7011,11092, 1, 2, 16),
(7011,11159, 1, 2, 1200),
(7011,11159, 2, 2, 650),
(7011,11160, 1, 2, 800),
(7011,11160, 2, 2, 300),
(7011,11161, 1, 2, 100),
(7011,11161, 2, 2, 50),
(7011,11164, 1, 2, 100),
(7011,11162, 1, 2, 100),
(7011,11163, 1, 2, 100),
(7011,11158, 1, 2, 300),
(7011,11463, 1, 2, 300),
(7011,11356, 1, 2, 300),
(7011,11464, 1, 2, 300),
(7011,11357, 1, 2, 500),
(7011,11041, 1, 3, 266),
(7011,11047, 1, 3, 266),
(7011,11054, 1, 3, 266),
(7011,11065, 1, 3, 266),
(7011,11068, 1, 3, 266),
(7011,11075, 1, 3, 266),
(7011,11100, 1, 3, 266),
(7011,11106, 1, 3, 266),
(7011,11119, 1, 3, 266),
(7011,11135, 1, 3, 268),
(7011,11136, 1, 3, 268),
(7011,11138, 1, 3, 268),
(7011,11088, 1, 3, 268),
(7011,10370, 1, 3, 266),
(7011,10368, 1, 3, 268),
(7011,11043, 1, 3, 50),
(7011,11048, 1, 3, 50),
(7011,11050, 1, 3, 50),
(7011,11058, 1, 3, 50),
(7011,11060, 1, 3, 50),
(7011,11074, 1, 3, 50),
(7011,11107, 1, 3, 50),
(7011,11111, 1, 3, 50),
(7011,11113, 1, 3, 50),
(7011,11118, 1, 3, 50),
(7011,11126, 1, 3, 50),
(7011,11140, 1, 3, 50),
(7011,11086, 1, 3, 50),
(7011,11095, 1, 3, 50),
(7011,11055, 1, 3, 50),
(7011,10378, 1, 3, 50),
(7011,11052, 1, 3, 15),
(7011,11073, 1, 3, 15),
(7011,11146, 1, 3, 15),
(7011,11116, 1, 3, 15),
(7011,11123, 1, 3, 15),
(7011,11097, 1, 3, 15),
(7011,10367, 1, 3, 15),
(7011,10371, 1, 3, 15),
(7011,10373, 1, 3, 15),
(7011,10778, 1, 3, 375),
(7011,11209, 1, 3, 375),
(7011,10813, 1, 3, 375),
(7011,11389, 1, 3, 375),
(7011,11159, 1, 3, 1000),
(7011,11159, 2, 3, 250),
(7011,11160, 1, 3, 700),
(7011,11160, 2, 3, 175),
(7011,11161, 1, 3, 300),
(7011,11161, 2, 3, 75),
(7011,11465, 1, 3, 53),
(7011,11466, 1, 3, 27),
(7011,11467, 1, 3, 266),
(7011,11468, 1, 3, 533),
(7011,11469, 1, 3, 186),
(7012,11037, 1, 1, 290),
(7012,11038, 1, 1, 270),
(7012,11044, 1, 1, 270),
(7012,11057, 1, 1, 290),
(7012,11059, 1, 1, 290),
(7012,11079, 1, 1, 290),
(7012,11098, 1, 1, 280),
(7012,11104, 1, 1, 300),
(7012,11117, 1, 1, 280),
(7012,11128, 1, 1, 290),
(7012,11133, 1, 1, 290),
(7012,11137, 1, 1, 300),
(7012,11143, 1, 1, 290),
(7012,11132, 1, 1, 270),
(7012,11042, 1, 1, 47),
(7012,11045, 1, 1, 47),
(7012,11064, 1, 1, 47),
(7012,11062, 1, 1, 47),
(7012,11070, 1, 1, 48),
(7012,11101, 1, 1, 47),
(7012,11108, 1, 1, 47),
(7012,11109, 1, 1, 47),
(7012,11120, 1, 1, 47),
(7012,11122, 1, 1, 47),
(7012,11134, 1, 1, 47),
(7012,11141, 1, 1, 47),
(7012,11084, 1, 1, 47),
(7012,11087, 1, 1, 47),
(7012,11094, 1, 1, 47),
(7012,10374, 1, 1, 47),
(7012,10375, 1, 1, 47),
(7012,11051, 1, 1, 17),
(7012,11071, 1, 1, 16),
(7012,11076, 1, 1, 16),
(7012,11102, 1, 1, 17),
(7012,11124, 1, 1, 17),
(7012,11090, 1, 1, 17),
(7012,11159, 1, 1, 1200),
(7012,11159, 2, 1, 650),
(7012,11160, 1, 1, 800),
(7012,11160, 2, 1, 300),
(7012,11161, 1, 1, 100),
(7012,11161, 2, 1, 50),
(7012,11164, 1, 1, 100),
(7012,11162, 1, 1, 100),
(7012,11163, 1, 1, 100),
(7012,11158, 1, 1, 300),
(7012,11463, 1, 1, 300),
(7012,11356, 1, 1, 300),
(7012,11464, 1, 1, 300),
(7012,11357, 1, 1, 500),
(7012,11039, 1, 2, 300),
(7012,11040, 1, 2, 270),
(7012,11049, 1, 2, 300),
(7012,11061, 1, 2, 290),
(7012,11063, 1, 2, 290),
(7012,11077, 1, 2, 290),
(7012,11099, 1, 2, 280),
(7012,11105, 1, 2, 300),
(7012,11129, 1, 2, 250),
(7012,11130, 1, 2, 300),
(7012,11131, 1, 2, 280),
(7012,11139, 1, 2, 290),
(7012,11145, 1, 2, 260),
(7012,11096, 1, 2, 300),
(7012,11046, 1, 2, 47),
(7012,11066, 1, 2, 47),
(7012,11067, 1, 2, 47),
(7012,11072, 1, 2, 47),
(7012,11082, 1, 2, 47),
(7012,11103, 1, 2, 47),
(7012,11110, 1, 2, 47),
(7012,11112, 1, 2, 47),
(7012,11114, 1, 2, 47),
(7012,11115, 1, 2, 47),
(7012,11121, 1, 2, 47),
(7012,11144, 1, 2, 48),
(7012,11085, 1, 2, 47),
(7012,11089, 1, 2, 47),
(7012,11091, 1, 2, 47),
(7012,10376, 1, 2, 47),
(7012,10377, 1, 2, 47),
(7012,11127, 1, 2, 17),
(7012,11069, 1, 2, 17),
(7012,11142, 1, 2, 17),
(7012,11078, 1, 2, 17),
(7012,11056, 1, 2, 16),
(7012,11092, 1, 2, 16),
(7012,11159, 1, 2, 1200),
(7012,11159, 2, 2, 650),
(7012,11160, 1, 2, 800),
(7012,11160, 2, 2, 300),
(7012,11161, 1, 2, 100),
(7012,11161, 2, 2, 50),
(7012,11164, 1, 2, 100),
(7012,11162, 1, 2, 100),
(7012,11163, 1, 2, 100),
(7012,11158, 1, 2, 300),
(7012,11463, 1, 2, 300),
(7012,11356, 1, 2, 300),
(7012,11464, 1, 2, 300),
(7012,11357, 1, 2, 500),
(7012,11041, 1, 3, 266),
(7012,11047, 1, 3, 266),
(7012,11054, 1, 3, 266),
(7012,11065, 1, 3, 266),
(7012,11068, 1, 3, 266),
(7012,11075, 1, 3, 266),
(7012,11100, 1, 3, 266),
(7012,11106, 1, 3, 266),
(7012,11119, 1, 3, 266),
(7012,11135, 1, 3, 268),
(7012,11136, 1, 3, 268),
(7012,11138, 1, 3, 268),
(7012,11088, 1, 3, 268),
(7012,10370, 1, 3, 266),
(7012,10368, 1, 3, 268),
(7012,11043, 1, 3, 50),
(7012,11048, 1, 3, 50),
(7012,11050, 1, 3, 50),
(7012,11058, 1, 3, 50),
(7012,11060, 1, 3, 50),
(7012,11074, 1, 3, 50),
(7012,11107, 1, 3, 50),
(7012,11111, 1, 3, 50),
(7012,11113, 1, 3, 50),
(7012,11118, 1, 3, 50),
(7012,11126, 1, 3, 50),
(7012,11140, 1, 3, 50),
(7012,11086, 1, 3, 50),
(7012,11095, 1, 3, 50),
(7012,11055, 1, 3, 50),
(7012,10378, 1, 3, 50),
(7012,11052, 1, 3, 15),
(7012,11073, 1, 3, 15),
(7012,11146, 1, 3, 15),
(7012,11116, 1, 3, 15),
(7012,11123, 1, 3, 15),
(7012,11097, 1, 3, 15),
(7012,10367, 1, 3, 15),
(7012,10371, 1, 3, 15),
(7012,10373, 1, 3, 15),
(7012,10778, 1, 3, 375),
(7012,11209, 1, 3, 375),
(7012,10813, 1, 3, 375),
(7012,11389, 1, 3, 375),
(7012,11159, 1, 3, 1000),
(7012,11159, 2, 3, 250),
(7012,11160, 1, 3, 700),
(7012,11160, 2, 3, 175),
(7012,11161, 1, 3, 300),
(7012,11161, 2, 3, 75),
(7012,11465, 1, 3, 53),
(7012,11466, 1, 3, 27),
(7012,11467, 1, 3, 266),
(7012,11468, 1, 3, 533),
(7012,11469, 1, 3, 186);
END;

View File

@@ -0,0 +1,6 @@
BEGIN;
-- Add 'earth' to the event_type ENUM type
ALTER TYPE event_type ADD VALUE 'earth';
END;

View File

@@ -0,0 +1,23 @@
BEGIN;
CREATE TABLE IF NOT EXISTS paper_data_gifts (
id serial PRIMARY KEY,
gift_id integer,
item_id integer,
unk0 integer,
unk1 integer,
chance integer
);
CREATE TABLE IF NOT EXISTS paper_data (
id serial PRIMARY KEY,
paper_type integer,
paper_id integer,
option1 integer,
option2 integer,
option3 integer,
option4 integer,
option5 integer
);
END;

View File

@@ -30,18 +30,6 @@ func stubEnumerateNoResults(s *Session, ackHandle uint32) {
doAckBufSucceed(s, ackHandle, enumBf.Data())
}
func doAckEarthSucceed(s *Session, ackHandle uint32, data []*byteframe.ByteFrame) {
bf := byteframe.NewByteFrame()
bf.WriteUint32(uint32(s.server.erupeConfig.EarthID))
bf.WriteUint32(0)
bf.WriteUint32(0)
bf.WriteUint32(uint32(len(data)))
for i := range data {
bf.WriteBytes(data[i].Data())
}
doAckBufSucceed(s, ackHandle, bf.Data())
}
func doAckBufSucceed(s *Session, ackHandle uint32, data []byte) {
s.QueueSendMHF(&mhfpacket.MsgSysAck{
AckHandle: ackHandle,
@@ -1115,66 +1103,8 @@ func handleMsgMhfUnreserveSrg(s *Session, p mhfpacket.MHFPacket) {
func handleMsgMhfKickExportForce(s *Session, p mhfpacket.MHFPacket) {}
func handleMsgMhfGetEarthStatus(s *Session, p mhfpacket.MHFPacket) {
pkt := p.(*mhfpacket.MsgMhfGetEarthStatus)
bf := byteframe.NewByteFrame()
bf.WriteUint32(uint32(TimeWeekStart().Unix())) // Start
bf.WriteUint32(uint32(TimeWeekNext().Unix())) // End
bf.WriteInt32(s.server.erupeConfig.EarthStatus)
bf.WriteInt32(s.server.erupeConfig.EarthID)
for i, m := range s.server.erupeConfig.EarthMonsters {
if _config.ErupeConfig.RealClientMode <= _config.G9 {
if i == 3 {
break
}
}
if i == 4 {
break
}
bf.WriteInt32(m)
}
doAckBufSucceed(s, pkt.AckHandle, bf.Data())
}
func handleMsgMhfRegistSpabiTime(s *Session, p mhfpacket.MHFPacket) {}
func handleMsgMhfGetEarthValue(s *Session, p mhfpacket.MHFPacket) {
pkt := p.(*mhfpacket.MsgMhfGetEarthValue)
type EarthValues struct {
Value []uint32
}
var earthValues []EarthValues
switch pkt.ReqType {
case 1:
earthValues = []EarthValues{
{[]uint32{1, 312, 0, 0, 0, 0}},
{[]uint32{2, 99, 0, 0, 0, 0}},
}
case 2:
earthValues = []EarthValues{
{[]uint32{1, 5771, 0, 0, 0, 0}},
{[]uint32{2, 1847, 0, 0, 0, 0}},
}
case 3:
earthValues = []EarthValues{
{[]uint32{1001, 36, 0, 0, 0, 0}},
{[]uint32{9001, 3, 0, 0, 0, 0}},
{[]uint32{9002, 10, 300, 0, 0, 0}},
}
}
var data []*byteframe.ByteFrame
for _, i := range earthValues {
bf := byteframe.NewByteFrame()
for _, j := range i.Value {
bf.WriteUint32(j)
}
data = append(data, bf)
}
doAckEarthSucceed(s, pkt.AckHandle, data)
}
func handleMsgMhfDebugPostValue(s *Session, p mhfpacket.MHFPacket) {}
func handleMsgMhfGetRandFromTable(s *Session, p mhfpacket.MHFPacket) {

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,172 @@
package channelserver
import (
"erupe-ce/common/byteframe"
_config "erupe-ce/config"
"erupe-ce/network/mhfpacket"
"log"
"time"
)
func doAckEarthSucceed(s *Session, ackHandle uint32, data []*byteframe.ByteFrame) {
bf := byteframe.NewByteFrame()
bf.WriteUint32(0)
bf.WriteUint32(0)
bf.WriteUint32(0)
bf.WriteUint32(uint32(len(data)))
for i := range data {
bf.WriteBytes(data[i].Data())
}
doAckBufSucceed(s, ackHandle, bf.Data())
}
func handleMsgMhfGetEarthValue(s *Session, p mhfpacket.MHFPacket) {
pkt := p.(*mhfpacket.MsgMhfGetEarthValue)
type EarthValues struct {
Value []uint32
}
var earthValues []EarthValues
switch pkt.ReqType {
case 1:
earthValues = []EarthValues{
// {Block, DureSlays, Unk, Unk, Unk, Unk}
{[]uint32{1, 100, 0, 0, 0, 0}},
{[]uint32{2, 100, 0, 0, 0, 0}},
}
case 2:
earthValues = []EarthValues{
// {Block, Floors?, Unk, Unk, Unk, Unk}
{[]uint32{1, 5771, 0, 0, 0, 0}},
{[]uint32{2, 1847, 0, 0, 0, 0}},
}
case 3:
earthValues = []EarthValues{
{[]uint32{1001, 36, 0, 0, 0, 0}}, //getTouhaHistory
{[]uint32{9001, 3, 0, 0, 0, 0}}, //getKohouhinDropStopFlag // something to do with ttcSetDisableFlag?
{[]uint32{9002, 10, 300, 0, 0, 0}}, //getKohouhinForceValue
}
}
var data []*byteframe.ByteFrame
for _, i := range earthValues {
bf := byteframe.NewByteFrame()
for _, j := range i.Value {
bf.WriteUint32(j)
}
data = append(data, bf)
}
doAckEarthSucceed(s, pkt.AckHandle, data)
}
func cleanupEarthStatus(s *Session) {
s.server.db.Exec(`DELETE FROM events WHERE event_type='earth'`)
}
func generateEarthStatusTimestamps(s *Session, start uint32, debug bool) []uint32 {
timestamps := make([]uint32, 4)
midnight := TimeMidnight()
if start == 0 || TimeAdjusted().Unix() > int64(start)+1814400 {
cleanupEarthStatus(s)
start = uint32(midnight.Add(24 * time.Hour).Unix())
s.server.db.Exec("INSERT INTO events (event_type, start_time) VALUES ('earth', to_timestamp($1)::timestamp without time zone)", start)
}
if debug {
timestamps[0] = uint32(TimeWeekStart().Unix())
timestamps[1] = uint32(TimeWeekNext().Unix())
timestamps[2] = uint32(TimeWeekNext().Add(time.Duration(7) * time.Hour * 24).Unix())
timestamps[3] = uint32(TimeWeekNext().Add(time.Duration(14) * time.Hour * 24).Unix())
} else {
timestamps[0] = start
timestamps[1] = timestamps[0] + 604800
timestamps[2] = timestamps[1] + 604800
timestamps[3] = timestamps[2] + 604800
}
return timestamps
}
func handleMsgMhfGetEarthStatus(s *Session, p mhfpacket.MHFPacket) {
pkt := p.(*mhfpacket.MsgMhfGetEarthStatus)
bf := byteframe.NewByteFrame()
var earthTimestamps []uint32
var debug = s.server.erupeConfig.EarthDebug
earthId, earthStart := int32(0x01BEEFEE), uint32(0)
rows, _ := s.server.db.Queryx("SELECT id, (EXTRACT(epoch FROM start_time)::int) as start_time FROM events WHERE event_type='earth'")
if rows == nil {
log.Println("No rows found")
} else {
for rows.Next() {
rows.Scan(&earthId, &earthStart)
}
}
earthTimestamps = generateEarthStatusTimestamps(s, earthStart, debug)
// Conquest
if uint32(TimeAdjusted().Unix()) > earthTimestamps[0] {
bf.WriteUint32(earthTimestamps[0]) // Start
bf.WriteUint32(earthTimestamps[1]) // End
bf.WriteInt32(1) //Conquest Earth Status ID //1 and 2 UNK the difference
bf.WriteInt32(earthId) //ID
} else {
bf.WriteUint32(earthTimestamps[1]) // Start
bf.WriteUint32(earthTimestamps[2]) // End
bf.WriteInt32(2) //Conquest Earth Status ID //1 and 2 UNK the difference
bf.WriteInt32(earthId) //ID
}
for i, m := range s.server.erupeConfig.EarthMonsters {
//Changed from G9 to G8 to get conquest working in g9.1
if _config.ErupeConfig.RealClientMode <= _config.G8 {
if i == 3 {
break
}
}
if i == 4 {
break
}
bf.WriteInt32(m)
}
// Pallone
if uint32(TimeAdjusted().Unix()) > earthTimestamps[1] {
bf.WriteUint32(earthTimestamps[1]) // Start
bf.WriteUint32(earthTimestamps[2]) // End
bf.WriteInt32(11) //Pallone Earth Status ID //11 is Fest //12 is Reward
bf.WriteInt32(earthId + 1) //ID
} else {
bf.WriteUint32(earthTimestamps[2]) // Start
bf.WriteUint32(earthTimestamps[3]) // End
bf.WriteInt32(12) //Pallone Earth Status ID //11 is Fest //12 is Reward
bf.WriteInt32(earthId + 1) //ID
}
for i, m := range s.server.erupeConfig.EarthMonsters {
//Changed from G9 to G8 to get conquest working in g9.1
if _config.ErupeConfig.RealClientMode <= _config.G8 {
if i == 3 {
break
}
}
if i == 4 {
break
}
bf.WriteInt32(m)
}
// Tower
if uint32(TimeAdjusted().Unix()) > earthTimestamps[2] {
bf.WriteUint32(earthTimestamps[2]) // Start
bf.WriteUint32(earthTimestamps[3]) // End
bf.WriteInt32(21) //Tower Earth Status ID
bf.WriteInt32(earthId + 2) //ID
for i, m := range s.server.erupeConfig.EarthMonsters {
if _config.ErupeConfig.RealClientMode <= _config.G8 {
if i == 3 {
break
}
}
if i == 4 {
break
}
bf.WriteInt32(m)
}
}
doAckBufSucceed(s, pkt.AckHandle, bf.Data())
}

View File

@@ -15,31 +15,546 @@ func handleMsgMhfGetBreakSeibatuLevelReward(s *Session, p mhfpacket.MHFPacket) {
doAckBufSucceed(s, pkt.AckHandle, bf.Data())
}
type WeeklySeibatuRankingReward struct {
Unk0 int32
Unk1 int32
Unk2 uint32
Unk3 int32
Unk4 int32
Unk5 int32
type WeeklySeibatuRankingRewardData struct {
Index0 int32 //Place Start
Index1 int32 //Place Finish
Index2 uint32 // UNK
DistributionType int32 //Type 7201:Item 7202:N Points 7203:Guild Contribution Points
ItemID int32
Amount int32
}
type WeeklySeibatuRankingRewards struct {
Unk0 int32
ItemID int32
Amount uint32
PlaceFrom int32
PlaceTo int32
}
func handleMsgMhfGetWeeklySeibatuRankingReward(s *Session, p mhfpacket.MHFPacket) {
pkt := p.(*mhfpacket.MsgMhfGetWeeklySeibatuRankingReward)
var data []*byteframe.ByteFrame
weeklySeibatuRankingRewards := []WeeklySeibatuRankingReward{
{0, 0, 0, 0, 0, 0},
var weeklySeibatuRankingRewards []WeeklySeibatuRankingRewards
var weeklySeibatuRankingRewardsData []WeeklySeibatuRankingRewardData
switch pkt.Operation {
case 1:
//Conquest Data
switch pkt.ID { // Seems to align with EarthStatus 1 and 2 for Conquest
case 1:
switch pkt.EarthMonster {
case 116:
weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{
{0, 2, 3, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 25, 1, 100},
{0, 2, 2, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 30, 101, 1000},
{0, 2, 2, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 6, 1000, 1001},
{0, 2, 6, 1000, 1001},
}
case 107:
weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{
{0, 2, 3, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 25, 1, 100},
{0, 2, 2, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 30, 101, 1000},
{0, 2, 2, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 6, 1000, 1001},
{0, 2, 6, 1000, 1001},
}
case 2:
weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{
{0, 2, 3, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 25, 1, 100},
{0, 2, 2, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 30, 101, 1000},
{0, 2, 2, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 6, 1000, 1001},
{0, 2, 6, 1000, 1001},
}
case 36:
weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{
{0, 2, 3, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 25, 1, 100},
{0, 2, 2, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 30, 101, 1000},
{0, 2, 2, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 6, 1000, 1001},
{0, 2, 6, 1000, 1001},
}
}
case 2:
switch pkt.EarthMonster {
case 116:
weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{
{0, 2, 3, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 25, 1, 100},
{0, 2, 2, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 30, 101, 1000},
{0, 2, 2, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 6, 1000, 1001},
{0, 2, 6, 1000, 1001},
}
case 107:
weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{
{0, 2, 3, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 25, 1, 100},
{0, 2, 2, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 30, 101, 1000},
{0, 2, 2, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 6, 1000, 1001},
{0, 2, 6, 1000, 1001},
}
case 2:
weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{
{0, 2, 3, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 25, 1, 100},
{0, 2, 2, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 30, 101, 1000},
{0, 2, 2, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 6, 1000, 1001},
{0, 2, 6, 1000, 1001},
}
case 36:
weeklySeibatuRankingRewards = []WeeklySeibatuRankingRewards{
{0, 2, 3, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 6, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 15, 1, 100},
{0, 2, 25, 1, 100},
{0, 2, 2, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 4, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 9, 101, 1000},
{0, 2, 30, 101, 1000},
{0, 2, 2, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 4, 1000, 1001},
{0, 2, 6, 1000, 1001},
{0, 2, 6, 1000, 1001},
}
}
}
case 3:
//Pallone Festival Data
weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{
//Unk0
//Unk1
//Unk2
//Unk3,
//ROUTE, (Crashes if it doesnt exist be careful with values )
//Status 1 = Only Now ! 2= Unk 3= Disabled}
//Route 0
{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0},
//Route 1
{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0},
//Route 2
{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0},
//Route 3
{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0},
//Route 4
{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0},
//Route 5
{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0},
//Route 6
{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0},
//Route 7
{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0},
//Route 8
{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0},
//Route 9
{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0},
//Route 10
{0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0},
}
// 0 = Max 7 Routes so value 6
//ZZ looks like it only works up to Route 2
case 5:
//Event Reward Data
switch pkt.ID {
//243400 = Route 0
//243401 = Route 1
//I have a sneaky suspicion that the above massive array is feeding into this somehow....
case 240031:
weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{
{1, 1, 1, 7201, 12068, 1}}
case 240041:
weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{
{0, 0, 1, 7201, 12068, 1}}
case 240042:
weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{
{0, 0, 2, 7201, 12068, 1}}
case 240051:
weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{
{0, 0, 1, 7201, 12068, 1}}
case 240052:
weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{
{1, 1, 1, 7201, 12068, 1},
}
case 260001:
//Tower Dure Kill Reward
weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{
//Can only have 10 in each dist (It disapears otherwise) Looks like up to dist 4 is implemented
//This is claimable for every Dure Kill, Make cliamable in bulk or mandatory claim per kill
//{unk,unk,dist,seiabtuType,ItemID,Value}
{0, 0, 1, 7201, 11463, 1},
{0, 0, 1, 7201, 11464, 1},
{0, 0, 1, 7201, 11163, 1},
{0, 0, 1, 7201, 11159, 5},
{0, 0, 1, 7201, 11160, 5},
{0, 0, 1, 7201, 11161, 5},
{0, 0, 2, 7201, 12506, 1},
{0, 0, 2, 7201, 10355, 1},
{0, 0, 2, 7201, 11163, 1},
{0, 0, 2, 7201, 11159, 5},
{0, 0, 2, 7201, 11160, 5},
{0, 0, 2, 7201, 11161, 5},
}
case 260003:
//Tower Floor Reward
weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{
//Adjust Floors done in database to make blue
//This is claimable for every Floor Climbed across dist 1 and 2
//{Floor,unk,unk,seiabtuType,ItemID,Value}
{1, 0, 0, 7201, 11158, 1},
{2, 0, 0, 7201, 11173, 1},
{3, 0, 0, 7201, 10813, 3},
{4, 0, 0, 7201, 11163, 1},
{5, 0, 0, 7201, 11164, 1},
{6, 0, 0, 7201, 11389, 3},
{6, 0, 0, 7201, 11381, 1},
{7, 0, 0, 7201, 11384, 1},
{8, 0, 0, 7201, 11159, 10},
{9, 0, 0, 7201, 11160, 10},
{10, 0, 0, 7201, 11161, 10},
{11, 0, 0, 7201, 11265, 2},
{11, 0, 0, 7201, 7279, 2},
{12, 0, 0, 7201, 11381, 1},
{13, 0, 0, 7201, 11384, 1},
{14, 0, 0, 7201, 11381, 1},
{15, 0, 0, 7201, 11384, 1},
{15, 0, 0, 7201, 11464, 1},
{16, 0, 0, 7201, 11381, 1},
{17, 0, 0, 7201, 11384, 1},
{18, 0, 0, 7201, 11381, 1},
{19, 0, 0, 7201, 11384, 1},
{20, 0, 0, 7201, 10778, 3},
{21, 0, 0, 7201, 11265, 2},
{21, 0, 0, 7201, 7279, 2},
{22, 0, 0, 7201, 11381, 1},
{23, 0, 0, 7201, 11384, 1},
{24, 0, 0, 7201, 11381, 1},
{25, 0, 0, 7201, 11389, 3},
{25, 0, 0, 7201, 11286, 4},
{26, 0, 0, 7201, 11384, 1},
{27, 0, 0, 7201, 11381, 1},
{28, 0, 0, 7201, 11384, 1},
{29, 0, 0, 7201, 11381, 1},
{30, 0, 0, 7201, 11209, 3},
{31, 0, 0, 7201, 11265, 2},
{31, 0, 0, 7201, 7279, 2},
{32, 0, 0, 7201, 11159, 10},
{33, 0, 0, 7201, 11463, 1},
{34, 0, 0, 7201, 11160, 10},
{35, 0, 0, 7201, 11286, 4},
{36, 0, 0, 7201, 11161, 10},
{38, 0, 0, 7201, 11384, 1},
{39, 0, 0, 7201, 11164, 1},
{40, 0, 0, 7201, 10813, 3},
{41, 0, 0, 7201, 11265, 2},
{41, 0, 0, 7201, 7280, 2},
{43, 0, 0, 7201, 11381, 1},
{45, 0, 0, 7201, 11286, 4},
{47, 0, 0, 7201, 11384, 1},
{48, 0, 0, 7201, 11358, 1},
{50, 0, 0, 7201, 11356, 1},
{51, 0, 0, 7201, 11265, 2},
{51, 0, 0, 7201, 7280, 2},
{53, 0, 0, 7201, 11381, 2},
{55, 0, 0, 7201, 11357, 1},
{57, 0, 0, 7201, 11384, 1},
{60, 0, 0, 7201, 11286, 4},
{61, 0, 0, 7201, 11265, 2},
{61, 0, 0, 7201, 7280, 2},
{63, 0, 0, 7201, 11381, 2},
{66, 0, 0, 7201, 11463, 1},
{67, 0, 0, 7201, 11384, 1},
{70, 0, 0, 7201, 11286, 4},
{71, 0, 0, 7201, 11265, 2},
{71, 0, 0, 7201, 7280, 2},
{73, 0, 0, 7201, 11381, 2},
{77, 0, 0, 7201, 11384, 1},
{79, 0, 0, 7201, 11164, 1},
{80, 0, 0, 7201, 11286, 6},
{81, 0, 0, 7201, 11265, 2},
{81, 0, 0, 7201, 7281, 1},
{83, 0, 0, 7201, 11381, 2},
{85, 0, 0, 7201, 11464, 1},
{87, 0, 0, 7201, 11384, 1},
{90, 0, 0, 7201, 11286, 6},
{91, 0, 0, 7201, 11265, 2},
{91, 0, 0, 7201, 7281, 1},
{93, 0, 0, 7201, 11381, 2},
{95, 0, 0, 7201, 10778, 3},
{97, 0, 0, 7201, 11384, 1},
{99, 0, 0, 7201, 11463, 1},
{100, 0, 0, 7201, 11286, 6},
{101, 0, 0, 7201, 11265, 2},
{101, 0, 0, 7201, 7281, 1},
{103, 0, 0, 7201, 11381, 2},
{107, 0, 0, 7201, 11384, 1},
{110, 0, 0, 7201, 11286, 6},
{113, 0, 0, 7201, 11381, 2},
{115, 0, 0, 7201, 11164, 1},
{117, 0, 0, 7201, 11384, 1},
{120, 0, 0, 7201, 11286, 12},
{123, 0, 0, 7201, 11381, 2},
{127, 0, 0, 7201, 11384, 1},
{130, 0, 0, 7201, 11286, 12},
{132, 0, 0, 7201, 11381, 2},
{134, 0, 0, 7201, 11384, 1},
{136, 0, 0, 7201, 11381, 2},
{138, 0, 0, 7201, 11384, 1},
{140, 0, 0, 7201, 11286, 12},
{142, 0, 0, 7201, 11382, 1},
{144, 0, 0, 7201, 11385, 1},
{145, 0, 0, 7201, 11464, 1},
{146, 0, 0, 7201, 11382, 1},
{148, 0, 0, 7201, 11385, 1},
{150, 0, 0, 7201, 11164, 1},
{155, 0, 0, 7201, 11382, 1},
{160, 0, 0, 7201, 11209, 3},
{165, 0, 0, 7201, 11385, 1},
{170, 0, 0, 7201, 11159, 10},
{175, 0, 0, 7201, 11382, 1},
{180, 0, 0, 7201, 11160, 10},
{185, 0, 0, 7201, 11385, 1},
{190, 0, 0, 7201, 11161, 10},
{195, 0, 0, 7201, 11382, 1},
{200, 0, 0, 7201, 11159, 15},
{210, 0, 0, 7201, 11160, 15},
{220, 0, 0, 7201, 11385, 1},
{235, 0, 0, 7201, 11382, 2},
{250, 0, 0, 7201, 11161, 15},
{265, 0, 0, 7201, 11159, 20},
{280, 0, 0, 7201, 11385, 1},
{300, 0, 0, 7201, 11160, 20},
{315, 0, 0, 7201, 11382, 2},
{330, 0, 0, 7201, 11385, 1},
{350, 0, 0, 7201, 11161, 20},
{365, 0, 0, 7201, 11382, 2},
{380, 0, 0, 7201, 11385, 1},
{400, 0, 0, 7201, 11159, 25},
{415, 0, 0, 7201, 11382, 2},
{430, 0, 0, 7201, 11385, 1},
{450, 0, 0, 7201, 11160, 25},
{465, 0, 0, 7201, 11382, 2},
{480, 0, 0, 7201, 11385, 1},
{500, 0, 0, 7201, 11161, 25},
{525, 0, 0, 7201, 11382, 2},
{550, 0, 0, 7201, 11385, 1},
{575, 0, 0, 7201, 11159, 25},
{600, 0, 0, 7201, 11382, 2},
{625, 0, 0, 7201, 11385, 1},
{650, 0, 0, 7201, 11160, 25},
{675, 0, 0, 7201, 11382, 2},
{700, 0, 0, 7201, 11385, 1},
{725, 0, 0, 7201, 11161, 25},
{750, 0, 0, 7201, 11382, 2},
{775, 0, 0, 7201, 11385, 1},
{800, 0, 0, 7201, 11159, 25},
{825, 0, 0, 7201, 11382, 2},
{850, 0, 0, 7201, 11385, 1},
{875, 0, 0, 7201, 11160, 25},
{900, 0, 0, 7201, 11382, 2},
{925, 0, 0, 7201, 11385, 1},
{950, 0, 0, 7201, 11161, 25},
{975, 0, 0, 7201, 11382, 2},
{1000, 0, 0, 7201, 11385, 1},
{1025, 0, 0, 7201, 11159, 25},
{1050, 0, 0, 7201, 11382, 2},
{1075, 0, 0, 7201, 11385, 1},
{1100, 0, 0, 7201, 11160, 25},
{1125, 0, 0, 7201, 11382, 2},
{1150, 0, 0, 7201, 11385, 1},
{1200, 0, 0, 7201, 11161, 25},
{1235, 0, 0, 7201, 11382, 2},
{1270, 0, 0, 7201, 11385, 1},
{1305, 0, 0, 7201, 11159, 25},
{1340, 0, 0, 7201, 11382, 2},
{1375, 0, 0, 7201, 11385, 1},
{1410, 0, 0, 7201, 11160, 25},
{1445, 0, 0, 7201, 11382, 2},
{1480, 0, 0, 7201, 11385, 1},
{1500, 0, 0, 7201, 11161, 25},
}
default:
//Covers all Pallone Requests... for now
weeklySeibatuRankingRewardsData = []WeeklySeibatuRankingRewardData{
//1st
{1, 0, 0, 7202, 10, 10000},
{1, 1, 0, 7201, 10, 30},
{1, 1, 0, 7201, 10, 18},
{1, 1, 0, 7201, 10, 18},
//2nd - 3rd
{2, 3, 0, 7202, 10, 6000},
{2, 3, 0, 7201, 10, 15},
{2, 3, 0, 7201, 10, 9},
{2, 3, 0, 7201, 10, 9},
//4th -10th
{4, 10, 0, 7202, 10, 5500},
{4, 10, 0, 7201, 10, 12},
{4, 10, 0, 7201, 10, 9},
}
}
}
for _, reward := range weeklySeibatuRankingRewards {
bf := byteframe.NewByteFrame()
bf.WriteInt32(reward.Unk0)
bf.WriteInt32(reward.Unk1)
bf.WriteUint32(reward.Unk2)
bf.WriteInt32(reward.Unk3)
bf.WriteInt32(reward.Unk4)
bf.WriteInt32(reward.Unk5)
data = append(data, bf)
if pkt.Operation == 1 {
for _, seibatuData := range weeklySeibatuRankingRewards {
bf := byteframe.NewByteFrame()
bf.WriteInt32(seibatuData.Unk0)
bf.WriteInt32(seibatuData.ItemID)
bf.WriteUint32(seibatuData.Amount)
bf.WriteInt32(seibatuData.PlaceFrom)
bf.WriteInt32(seibatuData.PlaceTo)
data = append(data, bf)
}
} else {
for _, seibatuData := range weeklySeibatuRankingRewardsData {
bf := byteframe.NewByteFrame()
bf.WriteInt32(seibatuData.Index0)
bf.WriteInt32(seibatuData.Index1)
bf.WriteUint32(seibatuData.Index2)
bf.WriteInt32(seibatuData.DistributionType)
bf.WriteInt32(seibatuData.ItemID)
bf.WriteInt32(seibatuData.Amount)
data = append(data, bf)
}
}
doAckEarthSucceed(s, pkt.AckHandle, data)
}

View File

@@ -3,10 +3,11 @@ package channelserver
import (
_config "erupe-ce/config"
"fmt"
"go.uber.org/zap"
"strings"
"time"
"go.uber.org/zap"
"erupe-ce/common/byteframe"
"erupe-ce/common/stringsupport"
"erupe-ce/network/mhfpacket"
@@ -23,8 +24,15 @@ type TowerInfoSkill struct {
}
type TowerInfoHistory struct {
Unk0 []int16 // 5
Unk1 []int16 // 5
Unk0 TowerHistory // 5
Unk1 TowerHistory // 5
}
type TowerHistory struct {
Unk0 int16
Unk1 int16
Unk2 int16
Unk3 int16
Unk4 int16
}
type TowerInfoLevel struct {
@@ -51,12 +59,25 @@ func handleMsgMhfGetTowerInfo(s *Session, p mhfpacket.MHFPacket) {
History []TowerInfoHistory
Level []TowerInfoLevel
}
history1 := TowerHistory{
Unk0: 1,
Unk1: 2,
Unk2: 3,
Unk3: 4,
Unk4: 5,
}
history2 := TowerHistory{
Unk0: 1,
Unk1: 2,
Unk2: 3,
Unk3: 4,
Unk4: 5,
}
towerInfo := TowerInfo{
TRP: []TowerInfoTRP{{0, 0}},
Skill: []TowerInfoSkill{{0, make([]int16, 64)}},
History: []TowerInfoHistory{{make([]int16, 5), make([]int16, 5)}},
Level: []TowerInfoLevel{{0, 0, 0, 0}, {0, 0, 0, 0}},
History: []TowerInfoHistory{{history1, history2}},
Level: []TowerInfoLevel{{0, 5, 5, 5}, {0, 5, 5, 5}},
}
var tempSkills string
@@ -94,12 +115,17 @@ func handleMsgMhfGetTowerInfo(s *Session, p mhfpacket.MHFPacket) {
case 4:
for _, history := range towerInfo.History {
bf := byteframe.NewByteFrame()
for i := range history.Unk0 {
bf.WriteInt16(history.Unk0[i])
}
for i := range history.Unk1 {
bf.WriteInt16(history.Unk1[i])
}
bf.WriteInt16(history.Unk0.Unk0)
bf.WriteInt16(history.Unk0.Unk1)
bf.WriteInt16(history.Unk0.Unk2)
bf.WriteInt16(history.Unk0.Unk3)
bf.WriteInt16(history.Unk0.Unk4)
bf.WriteInt16(history.Unk1.Unk0)
bf.WriteInt16(history.Unk1.Unk1)
bf.WriteInt16(history.Unk1.Unk2)
bf.WriteInt16(history.Unk1.Unk3)
bf.WriteInt16(history.Unk1.Unk4)
data = append(data, bf)
}
case 3, 5:
@@ -130,7 +156,8 @@ func handleMsgMhfPostTowerInfo(s *Session, p mhfpacket.MHFPacket) {
zap.Int32("Unk6", pkt.Unk6),
zap.Int32("Unk7", pkt.Unk7),
zap.Int32("Block1", pkt.Block1),
zap.Int64("Unk9", pkt.Unk9),
zap.Int32("TimeTaken", pkt.TimeTaken),
zap.Int32("CID", pkt.CID),
)
}
@@ -388,23 +415,88 @@ func handleMsgMhfPostTenrouirai(s *Session, p mhfpacket.MHFPacket) {
}
}
type PresentBox struct {
ItemClaimIndex uint32
PresentType int32
Unk2 int32
Unk3 int32
Unk4 int32
Unk5 int32
Unk6 int32
Unk7 int32
DistributionType int32 //Same as Siabatu Distribution Type 7201:Item 7202:N Points 7203:Guild Contribution Points
ItemID int32
Amount int32
}
func handleMsgMhfPresentBox(s *Session, p mhfpacket.MHFPacket) {
pkt := p.(*mhfpacket.MsgMhfPresentBox)
var data []*byteframe.ByteFrame
/*
bf.WriteUint32(0)
bf.WriteInt32(0)
bf.WriteInt32(0)
bf.WriteInt32(0)
bf.WriteInt32(0)
bf.WriteInt32(0)
bf.WriteInt32(0)
bf.WriteInt32(0)
bf.WriteInt32(0)
bf.WriteInt32(0)
bf.WriteInt32(0)
*/
var presents []PresentBox
//On Open Operation 1 and 3
//On Accept Operation 1 and 2 (Stop player from reclaiming I assume (Needs a database flag)
switch pkt.Operation {
case 1:
// When Operation is 1, populate presents based on PresentType in packet
//Placed it in a dynamic array for now
//Empty Array shows the No Items to claim message!
for _, presentType := range pkt.PresentType {
presents = []PresentBox{
{1, int32(presentType), 0, 0, 0, 0, 0, 0, 7201, 12893, 1},
{2, int32(presentType), 0, 0, 0, 0, 0, 0, 7201, 12893, 1},
{3, int32(presentType), 0, 0, 0, 0, 0, 0, 7201, 12893, 1},
{4, int32(presentType), 0, 0, 0, 0, 0, 0, 7201, 12893, 1},
{5, int32(presentType), 0, 0, 0, 0, 0, 0, 7201, 12895, 8},
{6, int32(presentType), 0, 0, 0, 0, 0, 0, 7202, 12893, 1},
{7, int32(presentType), 0, 0, 0, 0, 0, 0, 7203, 12895, 8},
}
}
case 2:
// When Operation is 2, populate presents for claiming items
//ItemClaimIndex in Option 1 of the Present Box Call populates pkt.PresentType which triggers this packet notice PresentType is Populated with ItemClaimIndex for a 1 to 1 Relationship
presents = []PresentBox{
{0, 1, 0, 0, 0, 0, 0, 0, 7201, 12893, 1},
{0, 2, 0, 0, 0, 0, 0, 0, 7201, 12893, 1},
{0, 3, 0, 0, 0, 0, 0, 0, 7201, 12893, 1},
{0, 4, 0, 0, 0, 0, 0, 0, 7201, 12893, 1},
{0, 5, 0, 0, 0, 0, 0, 0, 7201, 12895, 8},
{0, 6, 0, 0, 0, 0, 0, 0, 7202, 12893, 1},
{0, 7, 0, 0, 0, 0, 0, 0, 7203, 12895, 8},
}
case 3:
// When Operation is 3, send an empty byte frame (Possibly a better response here)
bf := byteframe.NewByteFrame()
doAckBufSucceed(s, pkt.AckHandle, bf.Data())
return
default:
s.logger.Info("request for unknown type", zap.Uint32("Unk1", pkt.Operation))
}
// Construct and send the response data based on the presents
for _, present := range presents {
bf := byteframe.NewByteFrame()
bf.WriteUint32(present.ItemClaimIndex)
bf.WriteInt32(present.PresentType)
bf.WriteInt32(present.Unk2)
bf.WriteInt32(present.Unk3)
bf.WriteInt32(present.Unk4)
bf.WriteInt32(present.Unk5)
bf.WriteInt32(present.Unk6)
bf.WriteInt32(present.Unk7)
bf.WriteInt32(present.DistributionType)
bf.WriteInt32(present.ItemID)
bf.WriteInt32(present.Amount)
data = append(data, bf)
}
// Send the accumulated data
doAckEarthSucceed(s, pkt.AckHandle, data)
}
type GemInfo struct {