From 2287e5a6b1332ac8acc3671b89009694867c6e6a Mon Sep 17 00:00:00 2001 From: wish Date: Sun, 12 Feb 2023 01:27:49 +1100 Subject: [PATCH] implement additional currency distribution handling --- server/channelserver/handlers_distitem.go | 29 +++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/server/channelserver/handlers_distitem.go b/server/channelserver/handlers_distitem.go index 91c980cff..0da9347fa 100644 --- a/server/channelserver/handlers_distitem.go +++ b/server/channelserver/handlers_distitem.go @@ -94,6 +94,35 @@ func handleMsgMhfApplyDistItem(s *Session, p mhfpacket.MHFPacket) { return } + if len(dist.Data) >= 2 { + distData := byteframe.NewByteFrameFromBytes(dist.Data) + distItems := int(distData.ReadUint16()) + for i := 0; i < distItems; i++ { + if len(dist.Data) >= 2+(i*13) { + itemType := distData.ReadUint8() + _ = distData.ReadBytes(6) + quantity := int(distData.ReadUint16()) + _ = distData.ReadBytes(4) + switch itemType { + case 17: + _ = addPointNetcafe(s, quantity) + case 19: + s.server.db.Exec("UPDATE users u SET gacha_premium=gacha_premium+$1 WHERE u.id=(SELECT c.user_id FROM characters c WHERE c.id=$2)", quantity, s.charID) + case 20: + s.server.db.Exec("UPDATE users u SET gacha_trial=gacha_trial+$1 WHERE u.id=(SELECT c.user_id FROM characters c WHERE c.id=$2)", quantity, s.charID) + case 21: + s.server.db.Exec("UPDATE users u SET frontier_points=frontier_points+$1 WHERE u.id=(SELECT c.user_id FROM characters c WHERE c.id=$2)", quantity, s.charID) + case 23: + saveData, err := GetCharacterSaveData(s, s.charID) + if err == nil { + saveData.RP += uint16(quantity) + saveData.Save(s) + } + } + } + } + } + bf := byteframe.NewByteFrame() bf.WriteUint32(pkt.DistributionID) bf.WriteBytes(dist.Data)