diff --git a/src/server/conf/daily_task/daily_task_cfg.go b/src/server/conf/daily_task/daily_task_cfg.go index c969b437..a3971b03 100644 --- a/src/server/conf/daily_task/daily_task_cfg.go +++ b/src/server/conf/daily_task/daily_task_cfg.go @@ -24,7 +24,7 @@ func init() { gamedata.InitCfg(DAILY_TASK_REWARD) } -func GetDailyTaskReward(Id, factory, activityId int) []*item.Item { +func GetDailyTaskReward(Id, activityId int) []*item.Item { data, err := gamedata.GetData(DAILY_TASK_REWARD) if err != nil { log.Debug("GetDailyTaskReward err:%v", err) @@ -37,11 +37,9 @@ func GetDailyTaskReward(Id, factory, activityId int) []*item.Item { items := gamedata.GetItemList(v, "ItemID") petCoinBase := gamedata.GetIntValue(v, "PetCoinBase") if petCoinBase > 0 { - petCoinNum := int(float64(petCoinBase) * (float64(factory)/1000 + 1)) - petCoinNum = (petCoinNum/5 + 1) * 5 // 向上取整到5的倍数 items = append(items, &item.Item{ Id: item.ITEM_STAR_ID, - Num: petCoinNum, + Num: petCoinBase, }) } return items diff --git a/src/server/game/mod/collect/Collect.go b/src/server/game/mod/collect/Collect.go index d85c5f44..d8e27941 100644 --- a/src/server/game/mod/collect/Collect.go +++ b/src/server/game/mod/collect/Collect.go @@ -43,43 +43,46 @@ func (c *Collect) ensureJackpot() { } // 获取收集奖励 -func (c *Collect) GetReward(Id, Num int) ([]*item.Item, error) { +func (c *Collect) GetReward(id, num, factor int) ([]*item.Item, error) { // 判断是否已领取 for _, v := range c.Reward { - if v == Id { - return nil, fmt.Errorf("id : %d;已领取", Id) + if v == id { + return nil, fmt.Errorf("id : %d;已领取", id) } } - Need := collectCfg.GetRewardNeed(Id) - if Num < Need { - return nil, fmt.Errorf("id : %d;收集数量不足 %d", Id, Need) + need := collectCfg.GetRewardNeed(id) + if num < need { + return nil, fmt.Errorf("id : %d;收集数量不足 %d", id, need) } // 领取奖励 - c.Reward = append(c.Reward, Id) - JackpotId := 0 - JackpotId, c.Jackpot = GoUtil.PopSlice(c.Jackpot) + c.Reward = append(c.Reward, id) + jackpotId := 0 + jackpotId, c.Jackpot = GoUtil.PopSlice(c.Jackpot) c.ensureJackpot() - return collectCfg.GetJackpotItems(JackpotId), nil + items := collectCfg.GetJackpotItems(jackpotId) + items = GoUtil.FormatStarItem(items, factor) + return items, nil } -func (c *Collect) BackData() *msg.ResCollectInfo { - ItemsMsg := make([]*msg.CollectItem, 0, jackpotPreviewSize) +func (c *Collect) BackData(factor int) *msg.ResCollectInfo { + itemsMsg := make([]*msg.CollectItem, 0, jackpotPreviewSize) for i := 0; i < jackpotPreviewSize; i++ { - Items := collectCfg.GetJackpotItems(c.Jackpot[i]) - ItemsMsg = append(ItemsMsg, &msg.CollectItem{ + items := collectCfg.GetJackpotItems(c.Jackpot[i]) + items = GoUtil.FormatStarItem(items, factor) + itemsMsg = append(itemsMsg, &msg.CollectItem{ Id: int32(i + 1), - Items: item.ItemToMsg(Items), + Items: item.ItemToMsg(items), }) } return &msg.ResCollectInfo{ Id: GoUtil.IntToInt32(c.Reward), - Items: ItemsMsg, + Items: itemsMsg, } } func initJackpot2(r1 []int) []int { - Ids := collectCfg.GetJackpotId() - r2 := GoUtil.ShuffleArray(Ids) + ids := collectCfg.GetJackpotId() + r2 := GoUtil.ShuffleArray(ids) return append(r1, r2...) } diff --git a/src/server/game/mod/daily_task/DailyTask.go b/src/server/game/mod/daily_task/DailyTask.go index aadee80a..84406ce0 100644 --- a/src/server/game/mod/daily_task/DailyTask.go +++ b/src/server/game/mod/daily_task/DailyTask.go @@ -2,7 +2,6 @@ package dailyTask import ( "fmt" - "math" dailyTaskCfg "server/conf/daily_task" "server/game/mod/item" "server/game/mod/quest" @@ -73,7 +72,8 @@ func (dt *DailyTaskMod) ZeroUpdate(lv, factor, activityId int) { if err != nil { log.Debug("parse quest err str : %s", questStr) } - items := dailyTaskCfg.GetDailyTaskReward(id, factor, activityId) + items := dailyTaskCfg.GetDailyTaskReward(id, activityId) + items = GoUtil.FormatStarItem(items, factor) dt.DayTask[id] = DailyTask{ Items: items, UnLock: id == 1, @@ -109,12 +109,7 @@ func (dt *DailyTaskMod) WeekUpdate(factor int) { func formatWeekReward(reward map[int]WeekReward, factor int) map[int]WeekReward { for k, v := range reward { - for _, v := range v.Items { - if v.Id == item.ITEM_STAR_ID { - Num := math.Round(float64(v.Num) * float64(factor) / 100) - v.Num = int(Num) / 5 * 5 - } - } + v.Items = GoUtil.FormatStarItem(v.Items, factor) reward[k] = v } return reward diff --git a/src/server/game/mod/friend_treasure.go/friend_treasure.go b/src/server/game/mod/friend_treasure.go/friend_treasure.go index 42689985..05209023 100644 --- a/src/server/game/mod/friend_treasure.go/friend_treasure.go +++ b/src/server/game/mod/friend_treasure.go/friend_treasure.go @@ -66,20 +66,23 @@ func (f *FriendTreasureMod) Flip(Pos int) ([]*item.Item, int64, error) { return nil, 0, fmt.Errorf("game not start") } f.Shift++ - Info := f.List[Pos] - Info.Status = GAME_STATUS_START - if Info.Uid != 0 { - log.Debug("uid:%v", Info.Uid) - f.Uids = append(f.Uids, Info.Uid) + info, ok := f.List[Pos] + if !ok { + return nil, 0, fmt.Errorf("invalid position") } - if Info.Type == FRIEND_TYPE_ALIVE { - ProbMap := friendTreasureCfg.GetChestProb() - Prob := GoUtil.RandMap(ProbMap) - Items := friendTreasureCfg.GetChestItems(Prob) - if Items != nil { - f.BoxItems = append(f.BoxItems, Items...) + info.Status = GAME_STATUS_START + if info.Uid != 0 { + log.Debug("uid:%v", info.Uid) + f.Uids = append(f.Uids, info.Uid) + } + if info.Type == FRIEND_TYPE_ALIVE { + probMap := friendTreasureCfg.GetChestProb() + prob := GoUtil.RandMap(probMap) + items := friendTreasureCfg.GetChestItems(prob) + if items != nil { + f.BoxItems = append(f.BoxItems, items...) } - return Items, Info.Uid, nil + return items, info.Uid, nil } return nil, 0, nil } @@ -90,19 +93,18 @@ func (f *FriendTreasureMod) EndGame(factor int) ([]*item.Item, int, error) { return nil, 0, fmt.Errorf("game is over") } // f.Shift++ - ProbAdd := friendTreasureCfg.GetProbAdd(f.Shift) - ItemNum := int(float64(f.Star) * (100.0 + float64(ProbAdd)) / 100.0) - ItemNum = int(float64(ItemNum)*float64(factor)/100/5) * 5 - FriendItemNum := ItemNum / 10 - Reward := []*item.Item{ - {Id: item.ITEM_STAR_ID, Num: ItemNum}, + probAdd := friendTreasureCfg.GetProbAdd(f.Shift) + itemNum := int(float64(f.Star) * (100.0 + float64(probAdd)) / 100.0) + friendItemNum := itemNum / 10 + reward := []*item.Item{ + {Id: item.ITEM_STAR_ID, Num: itemNum}, } if f.Shift == 9 { - BigReward := friendTreasureCfg.GetBigReward() - Reward = append(Reward, BigReward...) + bigReward := friendTreasureCfg.GetBigReward() + reward = append(reward, bigReward...) } - - return Reward, FriendItemNum, nil + reward = GoUtil.FormatStarItem(reward, factor) + return reward, friendItemNum, nil } // 重置游戏数据 @@ -120,15 +122,13 @@ func (f *FriendTreasureMod) NotifyStar() *msg.ResFriendTreasureStar { } func (f *FriendTreasureMod) BackData() *msg.ResFriendTreasure { - TreasureInfoList := make([]*msg.TreasureInfo, 0, len(f.List)) - + treasureInfoList := make([]*msg.TreasureInfo, 0, len(f.List)) for _, v := range f.List { - TreasureInfoList = append(TreasureInfoList, v) + treasureInfoList = append(treasureInfoList, v) } - return &msg.ResFriendTreasure{ Status: int32(f.Status), - List: TreasureInfoList, + List: treasureInfoList, List2: f.List2, Star: int32(f.Star), Shift: int32(f.Shift), diff --git a/src/server/game/mod/seven_login/seven_login.go b/src/server/game/mod/seven_login/seven_login.go index 59361c61..ae523bc8 100644 --- a/src/server/game/mod/seven_login/seven_login.go +++ b/src/server/game/mod/seven_login/seven_login.go @@ -2,7 +2,6 @@ package sevenLogin import ( "fmt" - "math" sevenLoginCfg "server/conf/seven_login" "server/game/mod/item" GoUtil "server/game_util" @@ -130,24 +129,9 @@ func (s *SevenLoginMod) BackData() *msg.ResSevenLogin { func formatSevenReward(reward map[int]Reward, factor int) map[int]Reward { for k, v := range reward { - for _, v := range v.Item1 { - if v.Id == item.ITEM_STAR_ID { - Num := math.Round(float64(v.Num) * float64(factor) / 100) - v.Num = int(Num) / 5 * 5 - } - } - for _, v := range v.Item2 { - if v.Id == item.ITEM_STAR_ID { - Num := math.Round(float64(v.Num) * float64(factor) / 100) - v.Num = int(Num) / 5 * 5 - } - } - for _, v := range v.Item3 { - if v.Id == item.ITEM_STAR_ID { - Num := math.Round(float64(v.Num) * float64(factor) / 100) - v.Num = int(Num) / 5 * 5 - } - } + v.Item1 = GoUtil.FormatStarItem(v.Item1, factor) + v.Item2 = GoUtil.FormatStarItem(v.Item2, factor) + v.Item3 = GoUtil.FormatStarItem(v.Item3, factor) reward[k] = v } return reward diff --git a/src/server/game/mod_factory.go b/src/server/game/mod_factory.go index c8d83363..cf3ef97b 100644 --- a/src/server/game/mod_factory.go +++ b/src/server/game/mod_factory.go @@ -7,6 +7,7 @@ import ( "server/game/mod/champship" "server/game/mod/charge" "server/game/mod/chess" + "server/game/mod/collect" dailyTask "server/game/mod/daily_task" "server/game/mod/decorate" "server/game/mod/endless" @@ -105,3 +106,7 @@ func (p *Player) GetFriendTreasureMod() *friendTreasure.FriendTreasureMod { func (p *Player) GetActivityMod() *activity.Activity { return p.PlayMod.getActivityMod() } + +func (p *Player) GetCollectMod() *collect.Collect { + return p.PlayMod.getCollectMod() +} diff --git a/src/server/game/player_data.go b/src/server/game/player_data.go index 9b1b196b..1126587d 100644 --- a/src/server/game/player_data.go +++ b/src/server/game/player_data.go @@ -402,7 +402,7 @@ func (p *Player) ZeroUpdate(a []interface{}) { p.ActivityZeroUpdate() // 每日任务 - p.PlayMod.getDailyTaskMod().ZeroUpdate(p.GetPlayerBaseMod().GetLevel(), p.PlayMod.getDecorateMod().GetAreaId(), p.GetDailyTaskActivityId()) + p.PlayMod.getDailyTaskMod().ZeroUpdate(p.GetPlayerBaseMod().GetLevel(), p.GetOrderFactor(), p.GetDailyTaskActivityId()) p.PushClientRes(p.PlayMod.getDailyTaskMod().BackData()) p.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_LOGIN}) diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index d7905d0f..dc29880f 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -4449,7 +4449,7 @@ func ReqSetEmoji(player *Player, buf []byte) error { // 请求收藏室内 func ReqCollectInfo(player *Player, buf []byte) error { CollectMod := player.PlayMod.getCollectMod() - player.PushClientRes(CollectMod.BackData()) + player.PushClientRes(CollectMod.BackData(player.GetOrderFactor())) return nil } @@ -4475,7 +4475,7 @@ func ReqCollect(player *Player, buf []byte) error { AreaType = "avatar" Num = player.PlayMod.getAvatarMod().GetAvatarNum() } - Items, err := CollectMod.GetReward(int(req.Id), Num) + Items, err := CollectMod.GetReward(int(req.Id), Num, player.GetOrderFactor()) if err != nil { player.SendErrClienRes(&msg.ResCollect{ Code: msg.RES_CODE_FAIL, @@ -4492,7 +4492,7 @@ func ReqCollect(player *Player, buf []byte) error { return err } player.PlayMod.save() - player.PushClientRes(CollectMod.BackData()) + player.PushClientRes(CollectMod.BackData(player.GetOrderFactor())) player.PushClientRes(&msg.ResCollect{ Code: msg.RES_CODE_SUCCESS, }) diff --git a/src/server/game_util/GoUtil.go b/src/server/game_util/GoUtil.go index f6e46086..114e5a21 100644 --- a/src/server/game_util/GoUtil.go +++ b/src/server/game_util/GoUtil.go @@ -12,10 +12,12 @@ import ( "encoding/hex" "fmt" "io" + "math" "math/rand" "net" "net/http" "reflect" + "server/game/mod/item" "server/pkg/github.com/name5566/leaf/log" "sort" "strconv" @@ -721,3 +723,13 @@ func GetGeoInfo(ip string) (string, string, error) { return countryCode, record.Country.IsoCode, nil } + +func FormatStarItem(items []*item.Item, factor int) []*item.Item { + for _, v := range items { + if v.Id == item.ITEM_STAR_ID { + Num := math.Round(float64(v.Num) * float64(factor) / 100) + v.Num = int(Num) / 5 * 5 + } + } + return items +} diff --git a/src/server/test/collect_test.go b/src/server/test/collect_test.go new file mode 100644 index 00000000..884a6758 --- /dev/null +++ b/src/server/test/collect_test.go @@ -0,0 +1,14 @@ +package test + +import ( + "server/game" + "testing" +) + +func TestCollectBack(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("3625212") + CollectMod := p1.GetCollectMod() + res := CollectMod.BackData(p1.GetOrderFactor()) + t.Logf("res:%v", res) +}