From 6e0d3a27098323b7af6d2d3a25f5d9cf1100a063 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 18 Mar 2025 11:14:32 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=9B=BE=E9=89=B4=E6=94=B6?= =?UTF-8?q?=E9=9B=86=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/mergeData/MergeDataCfg.go | 25 +++++++++++++++++++++++ src/server/game/RegisterNetworkFunc.go | 3 ++- src/server/game/mod/handbook/Handbook.go | 7 ++++++- 3 files changed, 33 insertions(+), 2 deletions(-) diff --git a/src/server/conf/mergeData/MergeDataCfg.go b/src/server/conf/mergeData/MergeDataCfg.go index fd1ab192..bb030799 100644 --- a/src/server/conf/mergeData/MergeDataCfg.go +++ b/src/server/conf/mergeData/MergeDataCfg.go @@ -518,3 +518,28 @@ func GetMergeStar(MergeList []int) int { } return Star } + +func GetAllChessBySeries(Series string) []int { + data, err := gamedata.GetData(CFG_NAME) + ProductList := GetEmitProduce(Series) + if err != nil { + return []int{} + } + var r []int + for k, v := range data { + Type := gamedata.GetStringValue(v, "Type") + if Type == "Emitter" { + EmitId := gamedata.GetStringValue(v, "Emit_ID") + if EmitId == Series { + r = append(r, GoUtil.Int(k)) + } + } + if Type == "Product" { + Color := gamedata.GetStringValue(v, "Color") + if GoUtil.InStringArray(Color, ProductList) { + r = append(r, GoUtil.Int(k)) + } + } + } + return r +} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 92ea7093..38364a5a 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -171,7 +171,8 @@ func ReqGetHandbookReward(player *Player, buf []byte) error { func RegHandbookAllReward(player *Player, buf []byte) error { req := &msg.RegHandbookAllReward{} proto.Unmarshal(buf, req) - Items, err := player.PlayMod.getHandbookMod().CollectItem(req.Type) + AllChess := mergeDataCfg.GetAllChessBySeries(req.Type) + Items, err := player.PlayMod.getHandbookMod().CollectItem(req.Type, AllChess) if err != nil { player.SendErrClienRes(&msg.ResHandbookAllReward{ Code: msg.RES_CODE_FAIL, diff --git a/src/server/game/mod/handbook/Handbook.go b/src/server/game/mod/handbook/Handbook.go index d8a469c2..f3a60f9e 100644 --- a/src/server/game/mod/handbook/Handbook.go +++ b/src/server/game/mod/handbook/Handbook.go @@ -58,7 +58,12 @@ func (h *Handbook) GetHandbookReward(Id int) error { return nil } -func (h *Handbook) CollectItem(Id string) ([]*item.Item, error) { +func (h *Handbook) CollectItem(Id string, AllChess []int) ([]*item.Item, error) { + for _, v := range AllChess { + if _, ok := h.BookList[v]; !ok { + return nil, fmt.Errorf("图鉴未解锁") + } + } if _, ok := h.Collect[Id]; ok { return nil, fmt.Errorf("已经领取过该奖励") }