diff --git a/worldsrv/player.go b/worldsrv/player.go index 1c27216..5a5ed82 100644 --- a/worldsrv/player.go +++ b/worldsrv/player.go @@ -3771,15 +3771,20 @@ func (this *Player) SCVIPInfo() { ShopId7: cfg.ShopId7, MatchFreeTimes: cfg.MatchFreeTimes + this.GetSkillAdd(common.SkillIdVipTimes), } - money := cfg.Privilege1[0] - // 皮肤技能加成 - add := this.GetSkillAdd(common.SkillIdVipGift) - if add > 0 { - money += int32((float64(money) * float64(add)) / 100.00) - } data.Privilege1 = make([]int32, len(cfg.Privilege1)) copy(data.Privilege1, cfg.Privilege1) - data.Privilege1[0] = money + for i := 0; i < len(cfg.Privilege1); { + if cfg.Privilege1[i] == common.ItemIDCoin && i+1 < len(cfg.Privilege1) { + money := cfg.Privilege1[i+1] + // 皮肤技能加成 + add := this.GetSkillAdd(common.SkillIdVipGift) + if add > 0 { + money += int32((float64(money) * float64(add)) / 100.00) + } + cfg.Privilege1[i+1] = money + } + i += 2 + } for itemId, itemNum := range cfg.Award { data.Item = append(data.Item, &playerproto.ItemInfo{ ItemId: int32(itemId), @@ -3848,17 +3853,38 @@ func (this *Player) VIPDraw(id int32) { if data.VipId == this.VIP { pack.OpRetCode = playerproto.OpResultCode_OPRC_Sucess this.WelfData.VIPBag[this.VIP][0] = 1 - //金币数量 - money := data.Privilege1[0] - // 皮肤技能加成 - add := this.GetSkillAdd(common.SkillIdVipGift) - if add > 0 { - money += int32((float64(money) * float64(add)) / 100.00) + var money, addVipExp int64 + for i := 0; i < len(data.Privilege1); { + if i+1 < len(data.Privilege1) { + switch data.Privilege1[i] { + case common.ItemIDCoin: + money = int64(data.Privilege1[i+1]) + // 皮肤技能加成 + add := this.GetSkillAdd(common.SkillIdVipGift) + if add > 0 { + money += int64((float64(money) * float64(add)) / 100.00) + } + this.AddCoin(money, 0, common.GainWay_VIPGift, "sys", "VIP每日礼包") + case common.ItemIDVipExp: + addVipExp = int64(float64(data.Privilege1[i+1]) / vips.MoneyRatio) + this.AddMoneyPayTotal(addVipExp) + default: + BagMgrSingleton.AddItemsV2(&ItemParam{ + P: this, + Change: []*Item{ + { + ItemId: data.Privilege1[i], + ItemNum: int64(data.Privilege1[i+1]), + }, + }, + GainWay: common.GainWay_VIPGift, + Operator: "system", + Remark: "VIP每日礼包", + }) + } + } + i += 2 } - //vip经验 - addVipExp := int64(float64(data.Privilege1[1]) / vips.MoneyRatio) - this.AddCoin(int64(money), 0, common.GainWay_VIPGift, "sys", "VIP每日礼包") - this.AddMoneyPayTotal(addVipExp) pack.Vip = this.VIP logger.Logger.Tracef("玩家领取VIP每日礼包成功!snid = %v,Vip = %v,金币数量 = %v,addVipEx = %v", this.SnId, this.VIP, money, addVipExp) //VIP礼包统计数据