package gameserver import ( "fmt" "slices" "gac-hkrpg-go/internal/common" pb "gac-hkrpg-go/protocol/proto" ) func init() { cwHandle("GridFightPermanentTalentEnable", func(s *Session, req *pb.GridFightPermanentTalentEnableCsReq, rsp *pb.GridFightPermanentTalentEnableScRsp) error { rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_PARAM_NOT_MATCH) if req == nil || req.CKHCLKOALKE == 0 { return nil } catalog, err := common.LoadCurrencyWarsCatalog() if err != nil { return err } data, revision, err := readCurrencyWarsData(catalog) if err != nil { return err } if data == nil { data, err = newCurrencyWarsData(catalog) if err != nil { return err } } s.currencyWarsRevision = revision if data.LFLCDNGALME == nil { data.LFLCDNGALME = &pb.CLEDCMIOIPF{} } if data.LFLCDNGALME.PKELAIPIHMF == nil { data.LFLCDNGALME.PKELAIPIHMF = &pb.CKPOBLIFMGN{} } if data.LFLCDNGALME.PKELAIPIHMF.MHFHLBHFIBC == nil { data.LFLCDNGALME.PKELAIPIHMF.MHFHLBHFIBC = &pb.FMNKKAMOHEE{} } list := &data.LFLCDNGALME.PKELAIPIHMF.MHFHLBHFIBC.BDGMNPIJDDL if !slices.Contains(*list, req.CKHCLKOALKE) { *list = append(*list, req.CKHCLKOALKE) } if err = s.saveCurrencyWarsData(data, catalog); err != nil { rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_CONF_MISS) return nil } rsp.CKHCLKOALKE = req.CKHCLKOALKE rsp.Retcode = 0 PacketLog(fmt.Sprintf("CW_PERMANENT_TALENT_ENABLE node=%d total=%d", req.CKHCLKOALKE, len(*list))) return nil }) cwHandle("GridFightSeasonTalentEnable", func(s *Session, req *pb.GridFightSeasonTalentEnableCsReq, rsp *pb.GridFightSeasonTalentEnableScRsp) error { rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_PARAM_NOT_MATCH) if req == nil || req.CKHCLKOALKE == 0 { return nil } catalog, err := common.LoadCurrencyWarsCatalog() if err != nil { return err } data, revision, err := readCurrencyWarsData(catalog) if err != nil { return err } if data == nil { data, err = newCurrencyWarsData(catalog) if err != nil { return err } } s.currencyWarsRevision = revision if data.LFLCDNGALME == nil { data.LFLCDNGALME = &pb.CLEDCMIOIPF{} } if data.LFLCDNGALME.HFPEJIDDDJG == nil { data.LFLCDNGALME.HFPEJIDDDJG = &pb.AMEEHIIPMFP{} } if data.LFLCDNGALME.HFPEJIDDDJG.MHFHLBHFIBC == nil { data.LFLCDNGALME.HFPEJIDDDJG.MHFHLBHFIBC = &pb.FMNKKAMOHEE{} } list := &data.LFLCDNGALME.HFPEJIDDDJG.MHFHLBHFIBC.BDGMNPIJDDL if !slices.Contains(*list, req.CKHCLKOALKE) { *list = append(*list, req.CKHCLKOALKE) } if err = s.saveCurrencyWarsData(data, catalog); err != nil { rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_CONF_MISS) return nil } rsp.CKHCLKOALKE = req.CKHCLKOALKE rsp.Retcode = 0 PacketLog(fmt.Sprintf("CW_SEASON_TALENT_ENABLE node=%d total=%d", req.CKHCLKOALKE, len(*list))) return nil }) cwHandle("GridFightPermanentTalentReset", func(s *Session, _ *pb.GridFightPermanentTalentResetCsReq, rsp *pb.GridFightPermanentTalentResetScRsp) error { catalog, err := common.LoadCurrencyWarsCatalog() if err != nil { return err } data, revision, err := readCurrencyWarsData(catalog) if err != nil { return err } s.currencyWarsRevision = revision if data != nil && data.LFLCDNGALME != nil && data.LFLCDNGALME.PKELAIPIHMF != nil && data.LFLCDNGALME.PKELAIPIHMF.MHFHLBHFIBC != nil { data.LFLCDNGALME.PKELAIPIHMF.MHFHLBHFIBC.BDGMNPIJDDL = nil if err = s.saveCurrencyWarsData(data, catalog); err != nil { rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_CONF_MISS) return nil } } rsp.Retcode = 0 PacketLog("CW_PERMANENT_TALENT_RESET completed") return nil }) cwHandle("GridFightSeasonTalentReset", func(s *Session, _ *pb.GridFightSeasonTalentResetCsReq, rsp *pb.GridFightSeasonTalentResetScRsp) error { catalog, err := common.LoadCurrencyWarsCatalog() if err != nil { return err } data, revision, err := readCurrencyWarsData(catalog) if err != nil { return err } s.currencyWarsRevision = revision if data != nil && data.LFLCDNGALME != nil && data.LFLCDNGALME.HFPEJIDDDJG != nil && data.LFLCDNGALME.HFPEJIDDDJG.MHFHLBHFIBC != nil { data.LFLCDNGALME.HFPEJIDDDJG.MHFHLBHFIBC.BDGMNPIJDDL = nil if err = s.saveCurrencyWarsData(data, catalog); err != nil { rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_CONF_MISS) return nil } } rsp.Retcode = 0 PacketLog("CW_SEASON_TALENT_RESET completed") return nil }) }