docs & feat: add license & attribution notice (Apache-2.0 / GPL-3.0) and core system enhancements

This commit is contained in:
CAtlas0784 committed 2026-11-01 20:14:36 +07:00
1 parent 507836d367
commit ce6aabfc55
47 files changed
+5674 -724

No files matched your search

+12 -128
View File
@@ -1,141 +1,25 @@
package gameserver
import (
"fmt"
"slices"
"gac-hkrpg-go/internal/common"
pb "gac-hkrpg-go/protocol/proto"
)
import pb "gac-hkrpg-go/protocol/proto"
// The reference talent service is a stub. No revision-bound talent costs,
// prerequisites, refund rules or match effects are available in our catalog.
// Keep the typed callbacks but reject mutation until those contracts exist.
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)))
cwHandle("GridFightPermanentTalentEnable", func(_ *Session, _ *pb.GridFightPermanentTalentEnableCsReq, rsp *pb.GridFightPermanentTalentEnableScRsp) error {
rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_CONF_MISS)
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)))
cwHandle("GridFightSeasonTalentEnable", func(_ *Session, _ *pb.GridFightSeasonTalentEnableCsReq, rsp *pb.GridFightSeasonTalentEnableScRsp) error {
rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_CONF_MISS)
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")
cwHandle("GridFightPermanentTalentReset", func(_ *Session, _ *pb.GridFightPermanentTalentResetCsReq, rsp *pb.GridFightPermanentTalentResetScRsp) error {
rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_CONF_MISS)
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")
cwHandle("GridFightSeasonTalentReset", func(_ *Session, _ *pb.GridFightSeasonTalentResetCsReq, rsp *pb.GridFightSeasonTalentResetScRsp) error {
rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_CONF_MISS)
return nil
})
}