mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-14 07:55:33 +01:00
Fix for Festa Rewards and House Visit MHF-F5
Partial Fix for Forward 5
This commit is contained in:
@@ -83,6 +83,17 @@ func getPointers() map[SavePointer]int {
|
|||||||
pointers[pGardenData] = 106424
|
pointers[pGardenData] = 106424
|
||||||
pointers[pRP] = 106614
|
pointers[pRP] = 106614
|
||||||
pointers[pKQF] = 110720
|
pointers[pKQF] = 110720
|
||||||
|
case _config.F5:
|
||||||
|
pointers[pWeaponID] = 60522
|
||||||
|
pointers[pWeaponType] = 60789
|
||||||
|
pointers[pHouseTier] = 61900
|
||||||
|
pointers[pToreData] = 60550
|
||||||
|
pointers[pHRP] = 62550
|
||||||
|
pointers[pHouseData] = 62651
|
||||||
|
pointers[pBookshelfData] = 71928
|
||||||
|
pointers[pGalleryData] = 72064
|
||||||
|
pointers[pGardenData] = 74424
|
||||||
|
pointers[pRP] = 74614
|
||||||
}
|
}
|
||||||
return pointers
|
return pointers
|
||||||
}
|
}
|
||||||
@@ -206,6 +217,17 @@ func (save *CharacterSaveData) updateStructWithSaveData() {
|
|||||||
save.GR = grpToGR(binary.LittleEndian.Uint32(save.decompSave[save.Pointers[pGRP] : save.Pointers[pGRP]+4]))
|
save.GR = grpToGR(binary.LittleEndian.Uint32(save.decompSave[save.Pointers[pGRP] : save.Pointers[pGRP]+4]))
|
||||||
}
|
}
|
||||||
save.KQF = save.decompSave[save.Pointers[pKQF] : save.Pointers[pKQF]+8]
|
save.KQF = save.decompSave[save.Pointers[pKQF] : save.Pointers[pKQF]+8]
|
||||||
|
} else if _config.ErupeConfig.RealClientMode < _config.G10 {
|
||||||
|
save.RP = binary.LittleEndian.Uint16(save.decompSave[save.Pointers[pRP] : save.Pointers[pRP]+2])
|
||||||
|
save.HouseTier = save.decompSave[save.Pointers[pHouseTier] : save.Pointers[pHouseTier]+5]
|
||||||
|
save.HouseData = save.decompSave[save.Pointers[pHouseData] : save.Pointers[pHouseData]+195]
|
||||||
|
save.BookshelfData = save.decompSave[save.Pointers[pBookshelfData] : save.Pointers[pBookshelfData]+2576]
|
||||||
|
save.GalleryData = save.decompSave[save.Pointers[pGalleryData] : save.Pointers[pGalleryData]+1748]
|
||||||
|
save.ToreData = save.decompSave[save.Pointers[pToreData] : save.Pointers[pToreData]+240]
|
||||||
|
save.GardenData = save.decompSave[save.Pointers[pGardenData] : save.Pointers[pGardenData]+68]
|
||||||
|
save.WeaponType = save.decompSave[save.Pointers[pWeaponType]]
|
||||||
|
save.WeaponID = binary.LittleEndian.Uint16(save.decompSave[save.Pointers[pWeaponID] : save.Pointers[pWeaponID]+2])
|
||||||
|
save.HRP = binary.LittleEndian.Uint16(save.decompSave[save.Pointers[pHRP] : save.Pointers[pHRP]+2])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -162,6 +162,14 @@ type FestaReward struct {
|
|||||||
Unk7 uint8
|
Unk7 uint8
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type FestaRewardF5 struct {
|
||||||
|
Unk0 uint8
|
||||||
|
Unk1 uint8
|
||||||
|
ItemType uint16
|
||||||
|
Quantity uint16
|
||||||
|
ItemID uint16
|
||||||
|
}
|
||||||
|
|
||||||
func handleMsgMhfInfoFesta(s *Session, p mhfpacket.MHFPacket) {
|
func handleMsgMhfInfoFesta(s *Session, p mhfpacket.MHFPacket) {
|
||||||
pkt := p.(*mhfpacket.MsgMhfInfoFesta)
|
pkt := p.(*mhfpacket.MsgMhfInfoFesta)
|
||||||
bf := byteframe.NewByteFrame()
|
bf := byteframe.NewByteFrame()
|
||||||
@@ -254,18 +262,37 @@ func handleMsgMhfInfoFesta(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
{5, 0, 13, 0, 0, 0, 0, 0},
|
{5, 0, 13, 0, 0, 0, 0, 0},
|
||||||
//{5, 0, 1, 0, 0, 0, 0, 0},
|
//{5, 0, 1, 0, 0, 0, 0, 0},
|
||||||
}
|
}
|
||||||
bf.WriteUint16(uint16(len(rewards)))
|
|
||||||
for _, reward := range rewards {
|
rewardsF5 := []FestaRewardF5{
|
||||||
bf.WriteUint8(reward.Unk0)
|
{1, 0, 7, 250, 1520},
|
||||||
bf.WriteUint8(reward.Unk1)
|
{1, 0, 12, 250, 0},
|
||||||
bf.WriteUint16(reward.ItemType)
|
{1, 0, 12, 250, 0},
|
||||||
bf.WriteUint16(reward.Quantity)
|
{1, 0, 12, 250, 0},
|
||||||
bf.WriteUint16(reward.ItemID)
|
{1, 0, 12, 250, 0},
|
||||||
bf.WriteUint16(reward.Unk5)
|
|
||||||
bf.WriteUint16(reward.Unk6)
|
|
||||||
bf.WriteUint8(reward.Unk7)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if _config.ErupeConfig.RealClientMode >= _config.G1 {
|
||||||
|
bf.WriteUint16(uint16(len(rewards)))
|
||||||
|
for _, reward := range rewards {
|
||||||
|
bf.WriteUint8(reward.Unk0)
|
||||||
|
bf.WriteUint8(reward.Unk1)
|
||||||
|
bf.WriteUint16(reward.ItemType)
|
||||||
|
bf.WriteUint16(reward.Quantity)
|
||||||
|
bf.WriteUint16(reward.ItemID)
|
||||||
|
bf.WriteUint16(reward.Unk5)
|
||||||
|
bf.WriteUint16(reward.Unk6)
|
||||||
|
bf.WriteUint8(reward.Unk7)
|
||||||
|
}
|
||||||
|
} else if _config.ErupeConfig.RealClientMode == _config.F5{
|
||||||
|
bf.WriteUint16(uint16(len(rewardsF5)))
|
||||||
|
for _, reward := range rewardsF5 {
|
||||||
|
bf.WriteUint8(reward.Unk0)
|
||||||
|
bf.WriteUint8(reward.Unk1)
|
||||||
|
bf.WriteUint16(reward.ItemType)
|
||||||
|
bf.WriteUint16(reward.Quantity)
|
||||||
|
bf.WriteUint16(reward.ItemID)
|
||||||
|
}
|
||||||
|
}
|
||||||
if _config.ErupeConfig.RealClientMode <= _config.G61 {
|
if _config.ErupeConfig.RealClientMode <= _config.G61 {
|
||||||
if s.server.erupeConfig.GameplayOptions.MaximumFP > 0xFFFF {
|
if s.server.erupeConfig.GameplayOptions.MaximumFP > 0xFFFF {
|
||||||
s.server.erupeConfig.GameplayOptions.MaximumFP = 0xFFFF
|
s.server.erupeConfig.GameplayOptions.MaximumFP = 0xFFFF
|
||||||
|
|||||||
@@ -119,7 +119,10 @@ func handleMsgMhfEnumerateHouse(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
bf.WriteUint8(0)
|
bf.WriteUint8(0)
|
||||||
}
|
}
|
||||||
bf.WriteUint16(house.HRP)
|
bf.WriteUint16(house.HRP)
|
||||||
bf.WriteUint16(house.GR)
|
//to skip GR for client below G1
|
||||||
|
if _config.ErupeConfig.RealClientMode >= _config.G1{
|
||||||
|
bf.WriteUint16(house.GR)
|
||||||
|
}
|
||||||
ps.Uint8(bf, house.Name, true)
|
ps.Uint8(bf, house.Name, true)
|
||||||
}
|
}
|
||||||
bf.Seek(0, 0)
|
bf.Seek(0, 0)
|
||||||
|
|||||||
Reference in New Issue
Block a user