Files
GaCy-GO/internal/gameserver/currency_wars_talent.go
T

142 lines
4.4 KiB
Go

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
})
}