修改宠物币根据膨胀系数变化功能
This commit is contained in:
parent
31e41bab0f
commit
7270808f80
@ -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
|
||||
|
||||
@ -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...)
|
||||
}
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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),
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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()
|
||||
}
|
||||
|
||||
@ -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})
|
||||
|
||||
@ -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,
|
||||
})
|
||||
|
||||
@ -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
|
||||
}
|
||||
|
||||
14
src/server/test/collect_test.go
Normal file
14
src/server/test/collect_test.go
Normal file
@ -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)
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user