diff --git a/common/constant.go b/common/constant.go index 730ae3d..6a5e340 100644 --- a/common/constant.go +++ b/common/constant.go @@ -793,3 +793,5 @@ const ( ) const PermitStartTsKey = "permit_start_ts" + +const PermitAdd = 0.2 // 典藏通行证赛季积分多加,百分比 diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index 8a642d9..a89e39f 100644 Binary files a/data/DB_PropExchange.dat and b/data/DB_PropExchange.dat differ diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 1271acc..a8e54c0 100644 Binary files a/data/DB_Task.dat and b/data/DB_Task.dat differ diff --git a/dbproxy/svc/u_gamedata.go b/dbproxy/svc/u_gamedata.go index c3fe78e..7d5e286 100644 --- a/dbproxy/svc/u_gamedata.go +++ b/dbproxy/svc/u_gamedata.go @@ -53,6 +53,16 @@ func (svc *GameKVDataSvc) UptGameKVData(args *model.GameKVData, ret *bool) error return nil } +func (svc *GameKVDataSvc) GetGameKVData(args *model.GameKVData, ret *model.GameKVData) error { + c := GameKVDatasCollection() + if c != nil { + err := c.Find(bson.M{"key": args.Key}).One(ret) + logger.Logger.Tracef("GetGameKVData: %#v %v", ret, err) + return err + } + return nil +} + var _GameKVDataSvc = &GameKVDataSvc{} func init() { diff --git a/model/gamedata.go b/model/gamedata.go index 020f8e7..09d626b 100644 --- a/model/gamedata.go +++ b/model/gamedata.go @@ -63,6 +63,23 @@ func GetStrKVGameData(key string) string { return "" } +func GetStrKVGameDataDB(key string) (string, error) { + if rpcCli == nil { + logger.Logger.Error("model.GetStrKVGameDataDB rpcCli == nil") + return "", ErrRPClientNoConn + } + req := &GameKVData{ + Key: key, + } + ret := &GameKVData{} + err := rpcCli.CallWithTimeout("GameKVDataSvc.GetGameKVData", req, ret, time.Second*30) + if err != nil { + logger.Logger.Error("model.GetStrKVGameDataDB err:", err, key) + return "", err + } + return ret.StrVal, err +} + func GetFloatKVGameData(key string) float64 { if val, exist := gameKVDatas.Load(key); exist { if data, ok := val.(*GameKVData); ok { diff --git a/ranksrv/rank/rankpermit.go b/ranksrv/rank/rankpermit.go index 121e4a7..aa4db47 100644 --- a/ranksrv/rank/rankpermit.go +++ b/ranksrv/rank/rankpermit.go @@ -16,7 +16,10 @@ var RankPermitMgrInstance = com.NewListMgr[*model.PermitScore]( func(platform string, index int32) ([]*model.PermitScore, error) { logger.Logger.Tracef("load rank permit platform:%s rankType:%d", platform, index) se := new(model.PermitStartTs) - b := model.GetStrKVGameData(common.PermitStartTsKey + platform) + b, err := model.GetStrKVGameDataDB(common.PermitStartTsKey + platform) + if err != nil { + return nil, err + } json.Unmarshal([]byte(b), se) seasonList, err := model.FindPlayerPermitList(&model.FindPlayerPermitListArgs{ Platform: platform, diff --git a/worldsrv/action_friend.go b/worldsrv/action_friend.go index 254752d..13dc9e9 100644 --- a/worldsrv/action_friend.go +++ b/worldsrv/action_friend.go @@ -532,6 +532,22 @@ func (this *CSInviteFriendOpHandler) Process(s *netlib.Session, packetid int, da opRetCode = friend.OpResultCode_OPRC_Error //进入房间失败 send(p) return nil + } else { + // 进入成功 + for _, v := range scene.players { + if v == nil || len(v.TaskInviteList) == 0 || v.SnId == p.SnId { + continue + } + if v.TaskInviteList[p.SnId] == scene.sceneId { + delete(v.TaskInviteList, p.SnId) + TaskSubjectSingleton.Touch(common.TaskTypeInvitePlay, &TaskData{ + SnId: v.SnId, + GameID: scene.gameId, + GameFreeID: scene.dbGameFree.GetId(), + Num: 1, + }) + } + } } case Invite_Refuse: logger.Logger.Trace("拒绝邀请") diff --git a/worldsrv/action_game.go b/worldsrv/action_game.go index 96e7e58..b93bdce 100644 --- a/worldsrv/action_game.go +++ b/worldsrv/action_game.go @@ -167,22 +167,6 @@ func (this *CSEnterRoomHandler) Process(s *netlib.Session, packetid int, data in if !scene.PlayerEnter(p, -1, true) { code = gamehall.OpResultCode_Game_OPRC_Error_Game - } else { - // 进入成功 - for _, v := range scene.players { - if v == nil || len(v.TaskInviteList) == 0 || v.SnId == p.SnId { - continue - } - if v.TaskInviteList[p.SnId] == scene.sceneId { - delete(v.TaskInviteList, p.SnId) - TaskSubjectSingleton.Touch(common.TaskTypeInvitePlay, &TaskData{ - SnId: v.SnId, - GameID: scene.gameId, - GameFreeID: scene.dbGameFree.GetId(), - Num: 1, - }) - } - } } failed: diff --git a/worldsrv/action_shop.go b/worldsrv/action_shop.go index 90ce8a8..1d64e6e 100644 --- a/worldsrv/action_shop.go +++ b/worldsrv/action_shop.go @@ -432,6 +432,13 @@ func (this *CSPayInfoHandler) Process(s *netlib.Session, packetid int, data inte return nil }*/ } + if shopInfo.Page == ShopPagePermit { + if p.GetIsPermit() { + logger.Logger.Error("已购买典藏通行证") + SendClient(shop.OpResultCode_OPRC_Error) + return nil + } + } ShopMgrSington.SendAPICreateOrder(p, msg.ConfigPayId, shopInfo, "shop_goods_xj") } else { diff --git a/worldsrv/action_task.go b/worldsrv/action_task.go index 30fa879..b62c7c2 100644 --- a/worldsrv/action_task.go +++ b/worldsrv/action_task.go @@ -77,7 +77,7 @@ func SendReward(p *Player, m map[int64]int64, tp int32) { var items []*Item for k, v := range m { if k == common.ItemIDPermit && isPermit { - v += v / 2 // 增加50% + v += int64(float64(v) * common.PermitAdd) } items = append(items, &Item{ ItemId: int32(k), @@ -186,7 +186,7 @@ func CSTaskReward(s *netlib.Session, packetId int, data interface{}, sid int64) SendReward(p, data.Award, msg.Tp) for k, vv := range data.GetAward() { if k == common.ItemIDPermit && isPermit { - vv += vv / 2 // 增加50% + vv += int64(float64(vv) * common.PermitAdd) } ret.Reward[k] = ret.Reward[k] + vv } diff --git a/worldsrv/etcd.go b/worldsrv/etcd.go index 4490274..d1c267a 100644 --- a/worldsrv/etcd.go +++ b/worldsrv/etcd.go @@ -5,6 +5,7 @@ import ( "encoding/json" "strconv" "strings" + "time" "go.etcd.io/etcd/client/v3" "mongo.games.com/goserver/core/basic" @@ -230,30 +231,37 @@ func platformConfigEvent(ctx context.Context, completeKey string, isInit bool, e PlatformMgrSingleton.GetConfig(config.Platform).PermitStartTs = startTs PlatformMgrSingleton.GetConfig(config.Platform).PermitEndTs = endTs } - task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { - if st.StartTs <= 0 || st.EndTs <= 0 { - return nil - } - b, err := json.Marshal(st) - if err != nil { - logger.Logger.Errorf("permit startts save error: %v", err) - } else { - logger.Logger.Infof("update permit startts: %v %v", st.StartTs, st.EndTs) - err := model.UptStrKVGameData(common.PermitStartTsKey+config.Platform, string(b)) - if err != nil { - logger.Logger.Errorf("permit startts update error:%v", err) + f := func() { + task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { + if st.StartTs <= 0 || st.EndTs <= 0 { + return nil } - } - return nil - }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { - if st.StartTs > 0 { - LogChannelSingleton.WriteLog(&model.BackendPermitCycle{ - Platform: config.Platform, - StartTs: st.StartTs, - EndTs: st.EndTs, - }) - } - })).StartByExecutor("permit_start_ts") + b, err := json.Marshal(st) + if err != nil { + logger.Logger.Errorf("permit startts save error: %v", err) + } else { + logger.Logger.Infof("update permit startts: %v %v", st.StartTs, st.EndTs) + err := model.UptStrKVGameData(common.PermitStartTsKey+config.Platform, string(b)) + if err != nil { + logger.Logger.Errorf("permit startts update error:%v", err) + } + } + return nil + }), task.CompleteNotifyWrapper(func(i interface{}, t task.Task) { + if st.StartTs > 0 { + LogChannelSingleton.WriteLog(&model.BackendPermitCycle{ + Platform: config.Platform, + StartTs: st.StartTs, + EndTs: st.EndTs, + }) + } + })).StartByExecutor("permit_start_ts") + } + if isInit { + time.AfterFunc(time.Second*5, f) //todo 优化 + } else { + f() + } default: logger.Logger.Errorf("etcd completeKey:%s, Not processed", completeKey) diff --git a/worldsrv/permitmgr.go b/worldsrv/permitmgr.go index ee6ebbb..e72db39 100644 --- a/worldsrv/permitmgr.go +++ b/worldsrv/permitmgr.go @@ -155,6 +155,9 @@ func (r *PermitMgr) OnDayTimer() { } PlatformMgrSingleton.GetConfig(platform).PermitStartTs = se.StartTs PlatformMgrSingleton.GetConfig(platform).PermitEndTs = se.EndTs + for _, v := range PlayerMgrSington.playerOfPlatform[platform] { + v.ResetPermit() + } b, err := json.Marshal(se) if err != nil { logger.Logger.Errorf("(this *PermitMgr) OnDayTimer json.Marshal err:%v", err) diff --git a/worldsrv/tournament.go b/worldsrv/tournament.go index e5e680b..55a5831 100644 --- a/worldsrv/tournament.go +++ b/worldsrv/tournament.go @@ -1546,10 +1546,12 @@ func (this *Tournament) MakeMatchLog(platform string, tmId int32, sortId int64) Item: items, Rank: rankId, }) - if rankId >= 10 { + if rankId >= 1 && rankId <= 10 { TaskSubjectSingleton.Touch(common.TaskTypeMatchRank10, &TaskData{ - SnId: v.p.SnId, - Num: 1, + GameID: int(v.tm.dbGameFree.GetGameId()), + GameFreeID: v.tm.dbGameFree.GetId(), + SnId: v.p.SnId, + Num: 1, }) } }