From aaf15d2b3d2c8747c9970455d57ecd4428b7fbfd Mon Sep 17 00:00:00 2001 From: sk <123456@qq.com> Date: Tue, 2 Jul 2024 18:33:28 +0800 Subject: [PATCH] =?UTF-8?q?=E9=BE=99=E5=B8=81=E5=8F=98=E5=8C=96=E9=80=9A?= =?UTF-8?q?=E7=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/DB_GameItem.dat | Bin 8958 -> 8958 bytes data/DB_GameItem.json | 2 +- data/DB_PropExchange.dat | Bin 384 -> 384 bytes data/DB_Task.dat | Bin 2441 -> 2441 bytes model/player.go | 1 + protocol/player/player.pb.go | 2316 +++++++++++++++++----------------- protocol/player/player.proto | 2 + public | 2 +- worldsrv/action_welfare.go | 26 +- worldsrv/bagmgr.go | 3 + worldsrv/permitmgr.go | 1 + worldsrv/player.go | 26 +- xlsx/DB_GameItem.xlsx | Bin 23736 -> 23766 bytes 13 files changed, 1206 insertions(+), 1173 deletions(-) diff --git a/data/DB_GameItem.dat b/data/DB_GameItem.dat index 4a0081f400cd1de9159db854c72976a30fc392f6..8aa980bdbd719074b854f9cf973447a2d34de6ef 100644 GIT binary patch delta 18 acmez8`ph($ diff --git a/data/DB_GameItem.json b/data/DB_GameItem.json index 5cd9737..5dc275c 100644 --- a/data/DB_GameItem.json +++ b/data/DB_GameItem.json @@ -801,7 +801,7 @@ 1, 0 ], - "Type": 13, + "Type": 19, "Effect0": [ 0, 0, diff --git a/data/DB_PropExchange.dat b/data/DB_PropExchange.dat index 87e9e17f77928c832e86f670fe276fd24eb6ce73..c59706a5f2c44b54ad2d0048ea099f6b89f58874 100644 GIT binary patch literal 384 zcmd-w<6snElw#w!+Qtl~uR-bSQ2H{Iz5=3^I5-yevI!h$vE|a^U;?YZ0hPZArEfv$ z+i2>;IUwf4%!TO#s{`7PVh;IUweP#ew$0>_IUf$sM@N1-na$6YP$LwU1c1VmVmA4neUPXwV&~L$G=TC=YWm X%ptG<09&lY&anvS(J#zg477y+X4*V8 diff --git a/data/DB_Task.dat b/data/DB_Task.dat index 8f2cd4ed4b42f93babf4680bc4d13715a2ea073a..98a04dd7c8920acdb50854baeb78b413491e2613 100644 GIT binary patch delta 252 zcmeAa?iAi|h0%bGV^J@g0HYNL$3h@|pv9I;jzd&{O@diLNQ29O(Ta`ZVjDADe#PO* zEKC8DMVN#X31FHnt z$O=`t;EjZrKo%pH9EYd?n*_6hkOr3lqZLGc#bHLE{KYnA zfypdP0Y(re6I61-LVhlJ4oLwnu%<7}a9tOc`apGYZEj=w$mjyGf*Gps!Ezx7MlNNJ zC36@BL?l=hST!d2!SyaUBnNd7D^QUN$5NmoDUhPc@$3?6V4-C|AqB9$1-)!QjS$mC zpr$u;R!#oNvSM-?yC5G}`L RankScore = 12; // 排位积分 int64 PhoneScore = 13; //手机积分 int64 InviteScore = 14; // 邀请积分 + int64 Long = 15; // 龙币 } //获取第三方玩家信息 diff --git a/public b/public index 8c59aeb..63eadb8 160000 --- a/public +++ b/public @@ -1 +1 @@ -Subproject commit 8c59aeb37871428f135c6423cde777c09ad0e3f0 +Subproject commit 63eadb869736b9d3e16c993cd99675c0e0de638c diff --git a/worldsrv/action_welfare.go b/worldsrv/action_welfare.go index 9806911..ecd8e72 100644 --- a/worldsrv/action_welfare.go +++ b/worldsrv/action_welfare.go @@ -595,7 +595,7 @@ func CSPermitInfo(s *netlib.Session, packetid int, data interface{}, sid int64) pack := &welfare.SCPermitInfo{ Exp: exp, Level: level, - Timestamp: []int64{startTs, endTs}, + Timestamp: []int64{startTs, endTs - 1}, IsPermit: p.GetIsPermit(), RefreshTs: common.GetDayNextStartTs(time.Now().Unix()), } @@ -777,8 +777,8 @@ func CSPermitAward(s *netlib.Session, packetid int, data interface{}, sid int64) p.WelfData.PermitAward[v.GetRank()*1000] = now.Unix() } } else { - if v.GetRank() == msg.GetId() { - if IsPermitCanReward(p, v.GetRank()*1000) { + if v.GetRank()*1000 == msg.GetId() { + if IsPermitCanReward(p, msg.GetId()) { for _, vv := range v.GetAward2() { pack.Award2 = append(pack.Award2, &welfare.PropInfo{ ItemId: vv.GetItemId(), @@ -1020,26 +1020,26 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int // 检查背包是否足够 var items []*Item var costItems []*Item - for k, v := range exchangeConfig.GetCost() { - item := BagMgrSingleton.GetItem(p.SnId, int32(k)) + for _, v := range exchangeConfig.GetCost() { + item := BagMgrSingleton.GetItem(p.SnId, v.GetItemId()) if item == nil || item.ItemNum < v.GetItemNum() { send(welfare.OpResultCode_OPRC_ErrCost) return nil } - info := srvdata.PBDB_GameItemMgr.GetData(int32(k)) + info := srvdata.PBDB_GameItemMgr.GetData(v.GetItemId()) if info != nil { costItems = append(costItems, &Item{ - ItemId: int32(k), + ItemId: v.GetItemId(), ItemNum: v.GetItemNum(), Name: info.Name, }) } } - for k, v := range exchangeConfig.GetGain() { - info := srvdata.PBDB_GameItemMgr.GetData(int32(k)) + for _, v := range exchangeConfig.GetGain() { + info := srvdata.PBDB_GameItemMgr.GetData(v.GetItemId()) if info != nil { items = append(items, &Item{ - ItemId: int32(k), + ItemId: v.GetItemId(), ItemNum: v.GetItemNum(), Name: info.Name, }) @@ -1055,11 +1055,7 @@ func CSPermitExchange(s *netlib.Session, packetid int, data interface{}, sid int } } - if !isExchange { - pack.OpRetCode = welfare.OpResultCode_OPRC_Error - } - p.SendToClient(int(welfare.SPacketID_PACKET_SCPermitExchange), pack) - logger.Logger.Tracef("SCPermitExchange: %v", pack) + send(welfare.OpResultCode_OPRC_Sucess) return nil } diff --git a/worldsrv/bagmgr.go b/worldsrv/bagmgr.go index cd91af7..abf8d40 100644 --- a/worldsrv/bagmgr.go +++ b/worldsrv/bagmgr.go @@ -314,6 +314,9 @@ func (this *BagMgr) AddItems(p *Player, addItems []*Item, add int64, gainWay int }) } } + if v == common.ItemIDLong { + p.SendDiffData() + } } if code != bag.OpResultCode_OPRC_Sucess { diff --git a/worldsrv/permitmgr.go b/worldsrv/permitmgr.go index ecba445..d0d67c8 100644 --- a/worldsrv/permitmgr.go +++ b/worldsrv/permitmgr.go @@ -99,6 +99,7 @@ func (r *PermitMgr) OnDayTimer() { if len(items) == 0 { break } + logger.Logger.Infof("PermitMgr rank award snid:%v rank:%v", player.SnId, rank) // 发邮件 var newMsg *model.Message task.New(nil, task.CallableWrapper(func(o *basic.Object) interface{} { diff --git a/worldsrv/player.go b/worldsrv/player.go index da5ec0f..aa9051f 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -60,6 +60,7 @@ const ( UpdateField_RankScore UpdateField_PhoneScore UpdateField_InviteScore + UpdateField_Long ) const ( @@ -2269,6 +2270,10 @@ func (this *Player) ResetPermit() { permitStartTs := PlatformMgrSingleton.GetConfig(this.Platform).PermitStartTs if (this.PermitStartTs == 0 || this.PermitStartTs < permitStartTs) && permitStartTs > 0 { this.PermitStartTs = permitStartTs + this.Permit = time.Time{} + this.WelfData.PermitAward = make(map[int32]int64) + this.WelfData.PermitExchange = make(map[int32][]int64) + this.dirty = true // 清理数据 bag := BagMgrSingleton.GetBagInfo(this.SnId) if bag != nil { @@ -2281,13 +2286,10 @@ func (this *Player) ResetPermit() { ItemNum: model.GameParamData.PermitInitScore, ObtainTime: time.Now().Unix(), } + this.Permit = time.Now() } } } - this.Permit = time.Time{} - this.WelfData.PermitAward = make(map[int32]int64) - this.WelfData.PermitExchange = make(map[int32][]int64) - this.dirty = true } } @@ -2557,6 +2559,14 @@ func (this *Player) SendDiffData() { if len(pack.RankScore) == 0 { pack.RankScore = nil } + // 龙币 + itemLong := BagMgrSingleton.GetItem(this.SnId, common.ItemIDLong) + if itemLong != nil && this.diffData.Long != itemLong.ItemNum { + dirty = true + pack.Long = proto.Int64(itemLong.ItemNum) + this.diffData.Long = itemLong.ItemNum + pack.UpdateField += UpdateField_Long + } if dirty { FriendMgrSington.UpdateInfo(this.Platform, this.SnId) @@ -2996,10 +3006,12 @@ func (this *Player) SendPlayerInfo() { scPlayerData.Data.ReliefFundTimes = this.WelfData.ReliefFundTimes } if item := BagMgrSingleton.GetItem(this.SnId, VCard); item != nil { - scPlayerData.Data.VCoin = int64(item.ItemNum) //V卡 - + scPlayerData.Data.VCoin = item.ItemNum //V卡 + } + // 龙币 + if item := BagMgrSingleton.GetItem(this.SnId, common.ItemIDLong); item != nil { + scPlayerData.Data.Long = item.ItemNum } - // 排位积分 scPlayerData.Data.RankScore = RankMgrSingleton.GetPlayerRankScore(this.SnId) diff --git a/xlsx/DB_GameItem.xlsx b/xlsx/DB_GameItem.xlsx index b6efdb70f7a303288e47c9a07d415389b49c8c01..69910f2eb8a5f3b66a00ddb44c37166a7114fa66 100644 GIT binary patch delta 7499 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 JqxYBP{{ce2{5=2w