mirror of
https://github.com/Mezeporta/Erupe.git
synced 2025-12-13 15:34:38 +01:00
Merge pull request #126 from ZeruLight/fix/quest-stamps
fix/quest-stamps
This commit is contained in:
@@ -37,13 +37,16 @@ func (m *MsgMhfStampcardStamp) Parse(bf *byteframe.ByteFrame, ctx *clientctx.Cli
|
|||||||
}
|
}
|
||||||
m.Stamps = bf.ReadUint16()
|
m.Stamps = bf.ReadUint16()
|
||||||
bf.ReadUint16() // Zeroed
|
bf.ReadUint16() // Zeroed
|
||||||
if _config.ErupeConfig.RealClientMode > _config.Z1 {
|
if _config.ErupeConfig.RealClientMode >= _config.Z2 {
|
||||||
m.Reward1 = uint16(bf.ReadUint32())
|
m.Reward1 = uint16(bf.ReadUint32())
|
||||||
m.Reward2 = uint16(bf.ReadUint32())
|
m.Reward2 = uint16(bf.ReadUint32())
|
||||||
m.Item1 = uint16(bf.ReadUint32())
|
m.Item1 = uint16(bf.ReadUint32())
|
||||||
m.Item2 = uint16(bf.ReadUint32())
|
m.Item2 = uint16(bf.ReadUint32())
|
||||||
m.Quantity1 = uint16(bf.ReadUint32())
|
m.Quantity1 = uint16(bf.ReadUint32())
|
||||||
m.Quantity2 = uint16(bf.ReadUint32())
|
m.Quantity2 = uint16(bf.ReadUint32())
|
||||||
|
} else {
|
||||||
|
m.Reward1 = 10
|
||||||
|
m.Reward2 = 10
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1078,30 +1078,31 @@ func handleMsgMhfStampcardStamp(s *Session, p mhfpacket.MHFPacket) {
|
|||||||
|
|
||||||
bf := byteframe.NewByteFrame()
|
bf := byteframe.NewByteFrame()
|
||||||
bf.WriteUint16(pkt.HR)
|
bf.WriteUint16(pkt.HR)
|
||||||
var stamps uint16
|
|
||||||
_ = s.server.db.QueryRow(`SELECT stampcard FROM characters WHERE id = $1`, s.charID).Scan(&stamps)
|
|
||||||
if _config.ErupeConfig.RealClientMode >= _config.G1 {
|
if _config.ErupeConfig.RealClientMode >= _config.G1 {
|
||||||
bf.WriteUint16(pkt.GR)
|
bf.WriteUint16(pkt.GR)
|
||||||
}
|
}
|
||||||
|
var stamps, rewardTier, rewardUnk uint16
|
||||||
|
reward := mhfitem.MHFItemStack{Item: mhfitem.MHFItem{}}
|
||||||
|
s.server.db.QueryRow(`UPDATE characters SET stampcard = stampcard + $1 WHERE id = $2 RETURNING stampcard`, pkt.Stamps, s.charID).Scan(&stamps)
|
||||||
|
bf.WriteUint16(stamps - pkt.Stamps)
|
||||||
bf.WriteUint16(stamps)
|
bf.WriteUint16(stamps)
|
||||||
stamps += pkt.Stamps
|
|
||||||
bf.WriteUint16(stamps)
|
if stamps/30 > (stamps-pkt.Stamps)/30 {
|
||||||
s.server.db.Exec(`UPDATE characters SET stampcard = $1 WHERE id = $2`, stamps, s.charID)
|
rewardTier = 2
|
||||||
if stamps%30 == 0 {
|
rewardUnk = pkt.Reward2
|
||||||
bf.WriteUint16(2)
|
reward = mhfitem.MHFItemStack{Item: mhfitem.MHFItem{ItemID: pkt.Item2}, Quantity: pkt.Quantity2}
|
||||||
bf.WriteUint16(pkt.Reward2)
|
addWarehouseItem(s, reward)
|
||||||
bf.WriteUint16(pkt.Item2)
|
} else if stamps/15 > (stamps-pkt.Stamps)/15 {
|
||||||
bf.WriteUint16(pkt.Quantity2)
|
rewardTier = 1
|
||||||
addWarehouseItem(s, mhfitem.MHFItemStack{Item: mhfitem.MHFItem{ItemID: pkt.Item2}, Quantity: pkt.Quantity2})
|
rewardUnk = pkt.Reward1
|
||||||
} else if stamps%15 == 0 {
|
reward = mhfitem.MHFItemStack{Item: mhfitem.MHFItem{ItemID: pkt.Item1}, Quantity: pkt.Quantity1}
|
||||||
bf.WriteUint16(1)
|
addWarehouseItem(s, reward)
|
||||||
bf.WriteUint16(pkt.Reward1)
|
|
||||||
bf.WriteUint16(pkt.Item1)
|
|
||||||
bf.WriteUint16(pkt.Quantity1)
|
|
||||||
addWarehouseItem(s, mhfitem.MHFItemStack{Item: mhfitem.MHFItem{ItemID: pkt.Item1}, Quantity: pkt.Quantity1})
|
|
||||||
} else {
|
|
||||||
bf.WriteBytes(make([]byte, 8))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bf.WriteUint16(rewardTier)
|
||||||
|
bf.WriteUint16(rewardUnk)
|
||||||
|
bf.WriteUint16(reward.Item.ItemID)
|
||||||
|
bf.WriteUint16(reward.Quantity)
|
||||||
doAckBufSucceed(s, pkt.AckHandle, bf.Data())
|
doAckBufSucceed(s, pkt.AckHandle, bf.Data())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user