diff --git a/src/server/conf/avatar/avatar_cfg.go b/src/server/conf/avatar/avatar_cfg.go index b35231aa..2ed0811e 100644 --- a/src/server/conf/avatar/avatar_cfg.go +++ b/src/server/conf/avatar/avatar_cfg.go @@ -1,6 +1,7 @@ package avatarCfg import ( + "math/rand" "server/gamedata" "server/pkg/github.com/name5566/leaf/log" "strconv" @@ -31,6 +32,15 @@ func GetInitList() []int { return r } +func GetRandInitId() int { + list := GetInitList() + if len(list) == 0 { + return 0 + } + index := rand.Intn(len(list)) + return list[index] +} + func CheckExist(Id int) bool { data, err := gamedata.GetData(CFG_AVATAR) if err != nil { diff --git a/src/server/conf/champship/champship_cfg.go b/src/server/conf/champship/champship_cfg.go index f873fe07..b10be54c 100644 --- a/src/server/conf/champship/champship_cfg.go +++ b/src/server/conf/champship/champship_cfg.go @@ -47,7 +47,7 @@ func GetChessScore(ChessLv int) int { return gamedata.GetIntValue(data, "Score") } -func GetReward(Reward, Score, activityId int) (int, []*item.Item) { +func GetReward(Reward, Score, activityId, orderFactor int) (int, []*item.Item) { data, err := gamedata.GetData(CFG_CHAMPSHIP_JACKPOT) if err != nil { log.Debug("GetReward err:%v, Reward=%d, Score=%d", err, Reward, Score) @@ -64,10 +64,18 @@ func GetReward(Reward, Score, activityId int) (int, []*item.Item) { if Reward >= Id { continue } - if Score >= gamedata.GetIntValue(v, "Total") { - Items := item.ParseItem(gamedata.GetValue(v, "Items")) - r = item.Merge(r, Items) - NewReward = max(NewReward, Id) + if Score < gamedata.GetIntValue(v, "Total") { + continue + } + Items := item.ParseItem(gamedata.GetValue(v, "Items")) + r = item.Merge(r, Items) + NewReward = max(NewReward, Id) + starReward := gamedata.GetIntValue(v, "StarReward") + if starReward > 0 { + starnum := int((float64(starReward) * float64(orderFactor) / 500)) * 5 + if starnum > 0 { + r = append(r, item.NewItem(item.ITEM_STAR_ID, starnum)) + } } } return NewReward, r diff --git a/src/server/conf/decorate/decorate_cfg.go b/src/server/conf/decorate/decorate_cfg.go index 557189f0..f767ad26 100644 --- a/src/server/conf/decorate/decorate_cfg.go +++ b/src/server/conf/decorate/decorate_cfg.go @@ -36,6 +36,21 @@ func GetStarCost(AreaId, SortId int) int { return 0 } +func GetStarCostByAreaId(AreaId int) int { + data, err := gamedata.GetData(DECORATE_COST) + if err != nil { + log.Debug("GetStarCost err:%v, AreaId=%d", err, AreaId) + return 0 + } + var total int + for _, v := range data { + if gamedata.GetIntValue(v, "AreaId") == AreaId { + total += gamedata.GetIntValue(v, "CostCount") + } + } + return total +} + func GetAreaId(id int) int { value, err := gamedata.GetDataByIntKey("DecorateCost", id) if err != nil { diff --git a/src/server/conf/face/face_cfg.go b/src/server/conf/face/face_cfg.go index c662a969..6f4e783b 100644 --- a/src/server/conf/face/face_cfg.go +++ b/src/server/conf/face/face_cfg.go @@ -1,6 +1,7 @@ package faceCfg import ( + "math/rand" "server/gamedata" "server/pkg/github.com/name5566/leaf/log" "strconv" @@ -35,6 +36,15 @@ func GetInitList() []int { return r } +func GetRandInitId() int { + list := GetInitList() + if len(list) == 0 { + return 0 + } + index := rand.Intn(len(list)) + return list[index] +} + func CheckExist(Id int) bool { data, err := gamedata.GetData(CFG_FACE) if err != nil { diff --git a/src/server/conf/mining/mining_cfg.go b/src/server/conf/mining/mining_cfg.go index 6ce840f3..1a55ae83 100644 --- a/src/server/conf/mining/mining_cfg.go +++ b/src/server/conf/mining/mining_cfg.go @@ -46,6 +46,14 @@ func GetLoseItem(Id int) []*item.Item { return gamedata.GetItemList(data, "ItemCost") } +func GetStartItemNum(Id int) int { + data, err := gamedata.GetDataByIntKey(CFG_MINING_TEMPLATE, Id) + if err != nil { + return 0 + } + return gamedata.GetIntValue(data, "StartItemNum") +} + func GetPassArea(Id int) int { data, err := gamedata.GetDataByIntKey(CFG_MINING_PASS, Id) if err != nil { @@ -88,7 +96,7 @@ func GetRandItem() []*item.Item { return gamedata.GetItemList(Info, "Items") } -func GetPassItem(Id int, needStar int) []*item.Item { +func GetPassItem(Id int, orderFactor int) []*item.Item { data, err := gamedata.GetDataByIntKey(CFG_MINING_PASS, Id) if err != nil { return nil @@ -97,7 +105,7 @@ func GetPassItem(Id int, needStar int) []*item.Item { starReward := gamedata.GetIntValue(data, "StarReward") var starnum int if starReward > 0 { - starnum = int(needStar * starReward / 100) + starnum = int((float64(starReward) * float64(orderFactor) / 500)) * 5 if starnum > 0 { items = append(items, &item.Item{ Id: item.ITEM_STAR_ID, @@ -108,7 +116,7 @@ func GetPassItem(Id int, needStar int) []*item.Item { return items } -func GetPassItemList(needStar int) map[int][]*item.Item { +func GetPassItemList(orderFactor int) map[int][]*item.Item { data, err := gamedata.GetData(CFG_MINING_PASS) if err != nil { return nil @@ -116,7 +124,7 @@ func GetPassItemList(needStar int) map[int][]*item.Item { result := make(map[int][]*item.Item) for k := range data { Id := GoUtil.Int(k) - result[Id] = GetPassItem(Id, needStar) + result[Id] = GetPassItem(Id, orderFactor) } return result } diff --git a/src/server/conf/order/order_cfg.go b/src/server/conf/order/order_cfg.go index 80101af2..27c64a43 100644 --- a/src/server/conf/order/order_cfg.go +++ b/src/server/conf/order/order_cfg.go @@ -1,6 +1,7 @@ package orderCfg import ( + "math" "server/gamedata" "sort" "strconv" @@ -33,8 +34,7 @@ func GetOrderK(Lv int) int { } Energy := gamedata.GetIntValue(data, "Energy") K := gamedata.GetFloatValue(data, "K") - a := float64(Energy)*K/10 + 0.5 - return int(a) * 10 + return int(math.Round(float64(Energy)*K/10) * 10) } func GetOrderFactor(Scene int) int { diff --git a/src/server/db/Redis.go b/src/server/db/Redis.go index bc5ab33d..b2b79719 100644 --- a/src/server/db/Redis.go +++ b/src/server/db/Redis.go @@ -219,6 +219,20 @@ func RedisZRevRangeWithScores(key string, start, stop int64) ([]redis.Z, error) return val, nil } +func RedisZGetByIndexWithScore(key string, index int64) (*redis.Z, error) { + if RdbRead == nil { + return nil, nil + } + val, err := RdbRead.ZRangeWithScores(ctx, key, index, index).Result() + if err != nil { + return nil, err + } + if len(val) == 0 { + return nil, nil + } + return &val[0], nil +} + func RedisZRankWithScores(key, member string) (int64, float64, error) { if RdbRead == nil { return 0, 0, nil @@ -234,6 +248,17 @@ func RedisZRankWithScores(key, member string) (int64, float64, error) { return val, score, nil } +func RedisZCard(key string) (int64, error) { + if RdbRead == nil { + return 0, nil + } + val, err := RdbRead.ZCard(ctx, key).Result() + if err != nil { + return 0, err + } + return val, nil +} + func RedisDel(key string) { if RdbWrite == nil { log.Debug("redis write client is nil") diff --git a/src/server/game/activity_func.go b/src/server/game/activity_func.go index 377eceda..cfce0658 100644 --- a/src/server/game/activity_func.go +++ b/src/server/game/activity_func.go @@ -9,6 +9,7 @@ import ( guesscolorCfg "server/conf/guess_color" languageCfg "server/conf/language" miningCfg "server/conf/mining" + orderCfg "server/conf/order" passCfg "server/conf/pass" raceCfg "server/conf/race" "server/game/mod/activity" @@ -16,6 +17,7 @@ import ( "server/game/mod/mail" GoUtil "server/game_util" "server/msg" + "server/pkg/github.com/name5566/leaf/log" ) // 活动模块 登录 @@ -77,6 +79,16 @@ func (p *Player) ActivityLogin() { p.SendActivityMail(ItemId, ItemNum, PassActivityId, RewardItems) } } + + // 初始化活动道具 + initItem := p.GetMiningMod().GetInitItem() + if len(initItem) > 0 { + err := p.HandleItem(initItem, "") + if err != nil { + log.Debug("ActivityLogin initItem err : %s", err) + } + } + } // 发送活动邮件 @@ -188,8 +200,8 @@ func (p *Player) MiningBackData() { Status := p.GetActivityStatus(activity.ACT_TYPE_MINING) Template := miningCfg.GetTemplate(ActivityInfo.Id) DecorateMod := p.PlayMod.getDecorateMod() - needStar := DecorateMod.GetNextNeedStar() - passRewardList := miningCfg.GetPassItemList(needStar) + orderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId()) + passRewardList := miningCfg.GetPassItemList(orderFactor) resPassRewardList := make(map[int32]*msg.ItemList) for k, v := range passRewardList { resPassRewardList[int32(k)] = item.ItemListToMsg(v) diff --git a/src/server/game/champship_mgr.go b/src/server/game/champship_mgr.go index 2fa7ded2..8a8c2ad6 100644 --- a/src/server/game/champship_mgr.go +++ b/src/server/game/champship_mgr.go @@ -3,9 +3,14 @@ package game import ( "fmt" "math" + "math/rand" + + avatarCfg "server/conf/avatar" champshipCfg "server/conf/champship" + faceCfg "server/conf/face" randnameCfg "server/conf/randname" "server/db" + "server/game/mod/friend" "server/game/mod/msg" GoUtil "server/game_util" proto "server/msg" @@ -55,6 +60,11 @@ type ChampshipRobot struct { Time int64 Score float64 PerScore float64 + Playroom map[int]int + DressSet map[int]int + FurSet int + ActLog *friend.ActLogInfo + PetName string } type GroupInfo struct { @@ -276,28 +286,54 @@ func (c *ChampshipMgr) GetPreRankMsg(Uid int) *proto.ResChampshipPreRank { if Robot == nil { continue } + last := &proto.ActLog{} + if Robot.ActLog != nil { + last = &proto.ActLog{ + Type: int32(Robot.ActLog.Type), + Time: Robot.ActLog.Time, + Param: Robot.ActLog.Param, + } + } RL[int32(k+1)] = &proto.ResPlayerRank{ - Uid: int64(v.Uid), - Score: float32(v.Score), - Name: Robot.Name, - Avatar: int32(Robot.Avatar), - Face: int32(Robot.Face), - Level: int32(Robot.Level), - Type: int32(v.Type), + Uid: int64(v.Uid), + Score: float32(v.Score), + Name: Robot.Name, + Avatar: int32(Robot.Avatar), + Face: int32(Robot.Face), + Level: int32(Robot.Level), + Type: int32(v.Type), + PlayroomSet: GoUtil.MapIntToInt32(Robot.Playroom), + DressSet: GoUtil.MapIntToInt32(Robot.DressSet), + FurSet: int32(Robot.FurSet), + PetName: Robot.PetName, + Last: last, } } else { - SimplePlayer := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) + SimplePlayer := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) if SimplePlayer == nil { continue } + last := &proto.ActLog{} + if SimplePlayer.ActLog != nil { + last = &proto.ActLog{ + Type: int32(SimplePlayer.ActLog.Type), + Time: SimplePlayer.ActLog.Time, + Param: SimplePlayer.ActLog.Param, + } + } RL[int32(k+1)] = &proto.ResPlayerRank{ - Uid: int64(v.Uid), - Score: float32(v.Score), - Name: SimplePlayer.Name, - Avatar: int32(SimplePlayer.Avatar), - Face: int32(SimplePlayer.Face), - Level: int32(SimplePlayer.Level), - Type: int32(v.Type), + Uid: int64(v.Uid), + Score: float32(v.Score), + Name: SimplePlayer.Name, + Avatar: int32(SimplePlayer.Avatar), + Face: int32(SimplePlayer.Face), + Level: int32(SimplePlayer.Level), + Type: int32(v.Type), + PlayroomSet: GoUtil.MapIntToInt32(SimplePlayer.Playroom), + DressSet: GoUtil.MapIntToInt32(SimplePlayer.DressSet), + FurSet: int32(SimplePlayer.PetFur), + PetName: SimplePlayer.PetName, + Last: last, } } } @@ -335,28 +371,54 @@ func (c *ChampshipMgr) GetRankMsg(Uid int) *proto.ResChampshipRank { if Robot == nil { continue } + last := &proto.ActLog{} + if Robot.ActLog != nil { + last = &proto.ActLog{ + Type: int32(Robot.ActLog.Type), + Time: Robot.ActLog.Time, + Param: Robot.ActLog.Param, + } + } RL[int32(k+1)] = &proto.ResPlayerRank{ - Uid: int64(v.Uid), - Score: float32(v.Score), - Name: Robot.Name, - Avatar: int32(Robot.Avatar), - Face: int32(Robot.Face), - Level: int32(Robot.Level), - Type: int32(v.Type), + Uid: int64(v.Uid), + Score: float32(v.Score), + Name: Robot.Name, + Avatar: int32(Robot.Avatar), + Face: int32(Robot.Face), + Level: int32(Robot.Level), + Type: int32(v.Type), + PlayroomSet: GoUtil.MapIntToInt32(Robot.Playroom), + DressSet: GoUtil.MapIntToInt32(Robot.DressSet), + FurSet: int32(Robot.FurSet), + PetName: Robot.PetName, + Last: last, } } else { - SimplePlayer := G_GameLogicPtr.GetResSimplePlayerByUid(v.Uid) + SimplePlayer := G_GameLogicPtr.GetSimplePlayerByUid(v.Uid) if SimplePlayer == nil { continue } + last := &proto.ActLog{} + if SimplePlayer.ActLog != nil { + last = &proto.ActLog{ + Type: int32(SimplePlayer.ActLog.Type), + Time: SimplePlayer.ActLog.Time, + Param: SimplePlayer.ActLog.Param, + } + } RL[int32(k+1)] = &proto.ResPlayerRank{ - Uid: int64(v.Uid), - Score: float32(v.Score), - Name: SimplePlayer.Name, - Avatar: int32(SimplePlayer.Avatar), - Face: int32(SimplePlayer.Face), - Level: int32(SimplePlayer.Level), - Type: int32(v.Type), + Uid: int64(v.Uid), + Score: float32(v.Score), + Name: SimplePlayer.Name, + Avatar: int32(SimplePlayer.Avatar), + Face: int32(SimplePlayer.Face), + Level: int32(SimplePlayer.Level), + Type: int32(v.Type), + PlayroomSet: GoUtil.MapIntToInt32(SimplePlayer.Playroom), + DressSet: GoUtil.MapIntToInt32(SimplePlayer.DressSet), + FurSet: int32(SimplePlayer.PetFur), + PetName: SimplePlayer.PetName, + Last: last, } } } @@ -434,6 +496,9 @@ func (c *ChampshipMgr) group(iszero bool) (interface{}, error) { for j := StartId; j <= ChampshipData.AutoId; j++ { // 填充机器人 RobotNum := 30 - len(ChampshipData.Rank[j]) RobotList := CreateRobotList(i, RobotNum, j) + for i := 0; i < RobotNum; i++ { + FormatRobotInfo(RobotList[i], i+1) + } for _, v := range RobotList { ChampshipData.Robot[ChampshipData.RobotId] = v ChampshipData.Rank[j] = append(ChampshipData.Rank[j], &ChampshipRank{ @@ -837,21 +902,68 @@ func CreateRobot(M float64, GroupId int) *ChampshipRobot { PerScore = math.Round((M/10*0.34)/(float64(GoUtil.NextZeroTimestampDuration())/1800)*100) / 100 Score = 2 } - + num, err := db.RedisZCard(RANK_USER) + if err != nil { + num = 0 + } + id := rand.Intn(int(num)) + 1 + rinfo, err := db.RedisZGetByIndexWithScore(RANK_USER, int64(id)) + playerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(GoUtil.Int(rinfo.Member)) return &ChampshipRobot{ Max: M / 10, Type: Type, Name: randnameCfg.GetRandName(), - Avatar: GoUtil.RandNum(1, 10), - Face: GoUtil.RandNum(1, 10), + Avatar: avatarCfg.GetRandInitId(), + Face: faceCfg.GetRandInitId(), Level: GoUtil.RandNum(1, 10), GroupId: GroupId, Time: GoUtil.Now(), Score: Score, PerScore: PerScore, + Playroom: playerSimpleData.Playroom, + DressSet: playerSimpleData.DressSet, + FurSet: playerSimpleData.PetFur, } } +func FormatRobotInfo(Robot *ChampshipRobot, index int) { + num, err := db.RedisZCard(RANK_USER) + if err != nil { + num = 0 + } + x := int(num) / 30 + if index > int(x) { + index = int(x) + } + start := int64((index - 1) * x) + end := int64(index*x - 1) + rinfo, err := db.RedisZRevRangeWithScores(RANK_USER, start, end) + if err != nil { + log.Error("FormatRobotInfo RedisZRevRangeWithScores error: %v, start %d, end %d", err, start, end) + return + } + if len(rinfo) == 0 { + log.Error("FormatRobotInfo RedisZRevRangeWithScores no data, start %d, end %d", start, end) + return + } + id := rand.Intn(len(rinfo)) + if id >= len(rinfo) { + id = len(rinfo) - 1 + } + playerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(GoUtil.Int(rinfo[id].Member)) + if playerSimpleData == nil { + return + } + Robot.Level = playerSimpleData.Level + Robot.Avatar = playerSimpleData.Avatar + Robot.Face = playerSimpleData.Face + Robot.Playroom = playerSimpleData.Playroom + Robot.DressSet = playerSimpleData.DressSet + Robot.FurSet = playerSimpleData.PetFur + Robot.ActLog = playerSimpleData.ActLog + Robot.PetName = playerSimpleData.PetName +} + func (c *ChampshipMgr) SetRankCache(Uid int) { PreRank := c.unsafe_getLastMyRank(Uid) Rank := c.unsafe_getMyRank(Uid) diff --git a/src/server/game/charge_func.go b/src/server/game/charge_func.go index 3603cb55..52fecc2e 100644 --- a/src/server/game/charge_func.go +++ b/src/server/game/charge_func.go @@ -80,7 +80,7 @@ func (p *Player) ActivityFire(ChargeId int) { return } p.PlayMod.save() - p.initAcitivity() + p.initActivity() p.BackDataActivity() } diff --git a/src/server/game/gm_handler.go b/src/server/game/gm_handler.go index 55584f52..c5f5fc00 100644 --- a/src/server/game/gm_handler.go +++ b/src/server/game/gm_handler.go @@ -101,7 +101,7 @@ func ReqGmCommand_(player *Player, Command string) error { player.PlayMod.getBaseMod().Level = num player.PlayMod.getBaseMod().Exp = 0 player.PushClientRes(player.PlayerBaseMod.BackAsset()) - player.initAcitivity() + player.initActivity() player.PlayMod.getGuideTaskMod().Unlock(num) player.PlayMod.getOrderMod().TriggerOrder(num, order.TRIGGER_TYPE_LV, nil, 1) player.PushClientRes(player.PlayMod.getOrderMod().BackData()) @@ -124,7 +124,7 @@ func ReqGmCommand_(player *Player, Command string) error { ActivityMod.Var = nil ActivityMod.InitData() player.PlayMod.save() - player.initAcitivity() + player.initActivity() player.BackDataActivity() case "weekUpdate": VarMod := player.PlayMod.getVarMod() @@ -417,7 +417,7 @@ func ReqGmCommand_(player *Player, Command string) error { FriendMod.Npc = nil FriendMod.Id = 0 FriendMod.Log = nil - FriendMod.InitData() + FriendMod.InitData(player.M_DwUin) player.FriendListBackData() player.FriendLogBackData() case "addFriend": diff --git a/src/server/game/message_handler.go b/src/server/game/message_handler.go index 61f4eff2..2d17c6f6 100644 --- a/src/server/game/message_handler.go +++ b/src/server/game/message_handler.go @@ -553,6 +553,7 @@ func (p *Player) handle(m *msg.Msg) error { Face: GoUtil.IntToInt32(faceList), Count: GoUtil.Int32(info["apply_count"]), FacebookPic: facebookPic, + Uids: applyUids, }) } otherUids, ok := info["other_uids"].([]int64) @@ -574,6 +575,7 @@ func (p *Player) handle(m *msg.Msg) error { Face: GoUtil.IntToInt32(faceList), Count: GoUtil.Int32(info["other_count"]), FacebookPic: facebookPic, + Uids: otherUids, }) } default: @@ -631,7 +633,7 @@ func ClusterSendMsg(ServerId int, m *msg.Msg) { func GetCardInfoMsg(CardInfo *card.CardInfo) *proto.ResFriendCard { Uid := 0 if CardInfo.Type == card.TYPE_CARD_SEND { - Uid = CardInfo.BUid + Uid = CardInfo.AUid } if CardInfo.Type == card.TYPE_CARD_GIVE { @@ -1133,7 +1135,7 @@ func (player *Player) InitOrderItem() { continue } Star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList()) - Star = int(float64(Star)*float64(OrderFactor)/1000+0.5) * 10 + Star = int(float64(Star)*float64(OrderFactor)/1000) * 10 v.Items = []*item.Item{{Id: item.ITEM_STAR_ID, Num: Star}} OrderMod.OrderList[k] = v } @@ -1273,13 +1275,18 @@ func (p *Player) AddHighOrder() { ChessMap[Color] = v } } - + RetireProduceColor := ChessMod.GetRetireProduceColor() for Color, ChessId := range ChessMap { EmitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), Color) _, ChessMaxLv := getChesslvRange(EmitId, BaseMod.GetEnergyMul(), OrderMod.IsCharge) NewLev2 := mergeDataCfg.DynamicLev(ChessMaxLv, EmitId, Color) NewLev3 := order.AdjustLev(NewLev2, BaseMod.GetEnergyMul()) ChessLv := mergeDataCfg.GetLvById(ChessId) + chessColor := mergeDataCfg.GetColorById(ChessId) + // 退役产物不生成订单 + if GoUtil.InStringArray(chessColor, RetireProduceColor) { + continue + } if NewLev3 >= ChessLv { continue } @@ -1318,10 +1325,16 @@ func (p *Player) AddHighOrder2() { } ChessMap[v]++ } + RetireProduceColor := ChessMod.GetRetireProduceColor() for ChessId, Num := range ChessMap { if Num < 2 { continue } + chessColor := mergeDataCfg.GetColorById(ChessId) + // 退役产物不生成订单 + if GoUtil.InStringArray(chessColor, RetireProduceColor) { + continue + } add := true for _, v := range OrderMod.GetOrderList() { if GoUtil.SliceEqual(v.MergeId, []int{ChessId, ChessId}) || GoUtil.SliceEqual(v.MergeId, []int{ChessId, ChessId, ChessId}) { diff --git a/src/server/game/mod/activity/activity_gift.go b/src/server/game/mod/activity/activity_gift.go index 61dc9651..8f287eda 100644 --- a/src/server/game/mod/activity/activity_gift.go +++ b/src/server/game/mod/activity/activity_gift.go @@ -1,20 +1,18 @@ package activity import ( - "fmt" activityCfg "server/conf/activity" "server/game/mod/item" - GoUtil "server/game_util" ) // 活动礼包 func (a *Activity) Fire(Id int) ([]*item.Item, error) { - AId := activityCfg.GetActivityGiftId(Id) - Var := a.getGiftVar(AId) - if Var.Buy { - return nil, fmt.Errorf("Id%d已购买", Id) - } - Var.Buy = true - Var.Time = GoUtil.Now() + // AId := activityCfg.GetActivityGiftId(Id) + // Var := a.getGiftVar(AId) + // if Var.Buy { + // return nil, fmt.Errorf("Id%d已购买", Id) + // } + // Var.Buy = true + // Var.Time = GoUtil.Now() return activityCfg.GetActivityGiftItems(Id), nil } diff --git a/src/server/game/mod/champship/Champship.go b/src/server/game/mod/champship/Champship.go index 827ccb6d..91154502 100644 --- a/src/server/game/mod/champship/Champship.go +++ b/src/server/game/mod/champship/Champship.go @@ -56,8 +56,8 @@ func (c *ChampshipMod) AddScore(Chess []int) { c.Score += score } -func (c *ChampshipMod) GetReward(activityId int) []*item.Item { - Reward, Items := champshipCfg.GetReward(c.Reward, c.Score, activityId) +func (c *ChampshipMod) GetReward(activityId, orderFactor int) []*item.Item { + Reward, Items := champshipCfg.GetReward(c.Reward, c.Score, activityId, orderFactor) c.Reward = Reward c.Max = max(c.Max, c.Reward) return Items diff --git a/src/server/game/mod/charge/Charge.go b/src/server/game/mod/charge/Charge.go index 113a9be0..876ca8e6 100644 --- a/src/server/game/mod/charge/Charge.go +++ b/src/server/game/mod/charge/Charge.go @@ -288,6 +288,26 @@ func (c *ChargeMod) FireAdReward(ChargeId int) []*item.Item { return Items } +func (c *ChargeMod) AddAdTime(PetWorkDay int) { + if PetWorkDay > 0 { + Now := GoUtil.Now() + if c.AdEndTime < Now { + c.AdEndTime = Now + int64(PetWorkDay*secondsIn1Day) + } else { + c.AdEndTime += int64(PetWorkDay * secondsIn1Day) + } + c.PetWorkTime += int64(PetWorkDay * secondsIn1Day) + c.Ad = true + } +} + +func (c *ChargeMod) CheckAd() bool { + if !c.Ad { + return false + } + return true +} + // 免费商店 func (c *ChargeMod) FireFreeShop() ([]*item.Item, error) { if c.FreeShop >= 2 { diff --git a/src/server/game/mod/chess/Chess.go b/src/server/game/mod/chess/Chess.go index 34a4d226..3c42a208 100644 --- a/src/server/game/mod/chess/Chess.go +++ b/src/server/game/mod/chess/Chess.go @@ -725,3 +725,13 @@ func (cb *ChessBorad) GetRetireReward(Id string) ([]*item.Item, error) { cb.RetireReward[Id] = true return mergeDataCfg.GetRetireReward(), nil } + +func (cb *ChessBorad) GetRetireProduceColor() []string { + color := make([]string, 0, len(cb.Retire)) + for k, v := range cb.Retire { + if v == EMIT_RETIRE_ING { + color = append(color, mergeDataCfg.GetEmitTypeByColor(k)) + } + } + return color +} diff --git a/src/server/game/mod/decorate/Decorate.go b/src/server/game/mod/decorate/Decorate.go index 430b66ae..e7eead07 100644 --- a/src/server/game/mod/decorate/Decorate.go +++ b/src/server/game/mod/decorate/Decorate.go @@ -132,6 +132,10 @@ func (d *Decorate) GetNextNeedStar() int { return 0 } +func (d *Decorate) GetAreaCost() int { + return decorateCfg.GetStarCostByAreaId(d.AreaId) +} + // 一键装饰 func (d *Decorate) DecorateAll(Star int, DecorateOffIsExist bool) ([]*item.Item, []*item.Item, int, []int, []interface{}, int) { DecorateAll := decorateCfg.GetAllSortIdByAreaId(d.AreaId) diff --git a/src/server/game/mod/friend/Friend.go b/src/server/game/mod/friend/Friend.go index dcf4a19f..97525533 100644 --- a/src/server/game/mod/friend/Friend.go +++ b/src/server/game/mod/friend/Friend.go @@ -189,7 +189,7 @@ type LogInfo struct { } // 初始化数据 -func (f *FriendMod) InitData() { +func (f *FriendMod) InitData(M_DwUin int64) { if f.FriendList == nil { f.FriendList = make(map[int]struct{}) } @@ -224,6 +224,26 @@ func (f *FriendMod) InitData() { if f.NewApplyList == nil { f.NewApplyList = make(map[int]*ApplyInfo) } + for k, v := range f.Card { + if v.AUid != 0 && !f.CheckFriend(v.AUid) && v.AUid != int(M_DwUin) { + delete(f.Card, k) + continue + } + if v.BUid != 0 && !f.CheckFriend(v.BUid) && v.BUid != int(M_DwUin) { + delete(f.Card, k) + continue + } + } + + if len(f.ReplyList) > 0 { + validReplyList := make([]*ReplyInfo, 0, len(f.ReplyList)) + for _, v := range f.ReplyList { + if f.CheckFriend(v.Uid) { + validReplyList = append(validReplyList, v) + } + } + f.ReplyList = validReplyList + } f.version() } @@ -302,6 +322,9 @@ func (f *FriendMod) Interact(id, t int, T int64) { VisitTime: T, Type: t, }) + if len(f.NewFriendList[id].Interact) > 30 { + f.NewFriendList[id].Interact = f.NewFriendList[id].Interact[len(f.NewFriendList[id].Interact)-30:] + } } // 获取好友交互时间 diff --git a/src/server/game/mod/item/Item.go b/src/server/game/mod/item/Item.go index 3d65dd1d..23eccc73 100644 --- a/src/server/game/mod/item/Item.go +++ b/src/server/game/mod/item/Item.go @@ -59,6 +59,7 @@ const ( ITEM_TYPE_PLAYROOM_BOX = 115 // playroom宝箱 ITEM_TYPE_ACT_PASS = 116 // 通行证活动道具 ITEM_TYPE_PET_FUR = 117 // 宠物毛皮 + ITEM_TYPE_AD_CARD = 118 // 免广告卡 ) func (i *Item) String() string { diff --git a/src/server/game/mod/limited_time_event/limited_time_event.go b/src/server/game/mod/limited_time_event/limited_time_event.go index 40ce7c65..fa12fe2c 100644 --- a/src/server/game/mod/limited_time_event/limited_time_event.go +++ b/src/server/game/mod/limited_time_event/limited_time_event.go @@ -274,7 +274,19 @@ func (l *LimitedTimeEventMod) GetChestReward(MergeList, EmitList []int) []*item. } // 获取场景冲刺奖励 -func (l *LimitedTimeEventMod) GetSceneDashReward() (int, []*item.Item) { +func (l *LimitedTimeEventMod) GetSceneDashReward() (int, []*item.Item, error) { + limitInfo, ok := l.EventList[EVENT_TYPE_SENCE_DASH] + if !ok { + return 0, nil, fmt.Errorf("sence dash not active") + } + if limitInfo.Info == nil { + return 0, nil, fmt.Errorf("sence dash info error") + } + times := GoUtil.Int(limitInfo.Info["Times"]) + if times <= 0 { + return 0, nil, fmt.Errorf("no dash times") + } + limitInfo.Info["Times"] = times - 1 ProbList := limitedTimeEventCfg.GetSenceJackpotProb() Id := GoUtil.RandMap(ProbList) Items := limitedTimeEventCfg.GetSenceJackpotReward(Id) @@ -282,7 +294,7 @@ func (l *LimitedTimeEventMod) GetSceneDashReward() (int, []*item.Item) { // 多个奖励时,随机选择一个 Items = []*item.Item{GoUtil.RandItem(Items)} } - return Id, Items + return Id, Items, nil } // 获取连击快手奖励 @@ -434,6 +446,10 @@ func (l *LimitedTimeEventMod) GetCatTrickReward() ([]*item.Item, error) { // #region 事件信息初始化 func initEventInfo(E *LTEInfo, EventType int) { switch EventType { + case EVENT_TYPE_SENCE_DASH: + E.Info = map[string]interface{}{ + "Times": 0, + } case EVENT_TYPE_FAST_PRODUCE: E.Info = map[string]interface{}{ "Times": 0, @@ -515,6 +531,9 @@ func getLimitEventMsg(t int, e *LTEInfo) *msg.LimitEvent { case EVENT_TYPE_PAYBACK_DAY: d := e.D.(*PaybackDay) Param[msg.LimitEventParam_PAYBACK_DAY_COUNT.String()] = int32(d.Count) + case EVENT_TYPE_SENCE_DASH: + Times := GoUtil.Int(e.Info["Times"]) + Param[msg.LimitEventParam_SENCE_DASH_TIMES.String()] = int32(Times) } return &msg.LimitEvent{ EndTime: EndTime, @@ -537,3 +556,15 @@ func (l *LimitedTimeEventMod) GetCatDaySaleEndTime() int64 { } return v.StartT + v.Remian } + +func (l *LimitedTimeEventMod) AddSenceDashTimes() bool { + SenceInfo, ok := l.EventList[EVENT_TYPE_SENCE_DASH] + if !ok { + return false + } + if SenceInfo.Info == nil { + return false + } + SenceInfo.Info["Times"] = GoUtil.Int(SenceInfo.Info["Times"]) + 1 + return true +} diff --git a/src/server/game/mod/mining/mining.go b/src/server/game/mod/mining/mining.go index 8a020f0d..1d63c060 100644 --- a/src/server/game/mod/mining/mining.go +++ b/src/server/game/mod/mining/mining.go @@ -7,11 +7,12 @@ import ( ) type MiningMod struct { - Id int - Map map[int32]string - Gem []int - Pass int - Mining int + Id int + Map map[int32]string + Gem []int + Pass int + Mining int + InitItem bool } func (m *MiningMod) InitData() { @@ -34,9 +35,26 @@ func (m *MiningMod) Login(Id int) int { m.Gem = nil m.Pass = 1 m.Mining = 0 + m.InitItem = false return OldId } +func (m *MiningMod) GetInitItem() []*item.Item { + if m.InitItem { + return nil + } + if m.Id == 0 { + return nil + } + initItemNum := miningCfg.GetStartItemNum(m.Id) + initItemId := miningCfg.GetActivityItemId(m.Id) + if initItemNum > 0 && initItemId > 0 { + m.InitItem = true + return []*item.Item{item.NewItem(initItemId, initItemNum)} + } + return nil +} + func (m *MiningMod) ZeroUpdate(Id int) { m.Login(Id) } @@ -81,12 +99,12 @@ func (m *MiningMod) Take(Map map[int32]string, Gem int) ([]*item.Item, error) { return Items, nil } -func (m *MiningMod) GetReward(needStar int) ([]*item.Item, int, error) { +func (m *MiningMod) GetReward(orderFactor int) ([]*item.Item, int, error) { GemList := miningCfg.GetPassGem(m.Pass) if len(m.Gem) < len(GemList) { return nil, 0, fmt.Errorf("gem is not full") } - Items := miningCfg.GetPassItem(m.Pass, needStar) + Items := miningCfg.GetPassItem(m.Pass, orderFactor) m.Pass++ Ming := m.Mining m.Mining = 0 diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index fe368138..467589d4 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -564,22 +564,22 @@ func (o *OrderMod) CreateExtraOrder(AddChess, AddNewEmit, ChessList []int, Energ } b3 := false //额外订单补充2;当玩家的棋盘中出现2个相同的满级产物时,立刻生成一个对应的收购订单; - for k := range MaxLvChess { - ChessNum := GoUtil.GetElemNum(ChessList, k) - if ChessNum >= 2 && Level >= 12 { - b2 := true - for _, v := range o.OrderList { - if GoUtil.SliceEqual(v.MergeId, []int{k, k}) { - b2 = false - break - } - } - if b2 { - b3 = true - o.addOrder([]int{k, k}, DIFF_LOW, Extra_type) - } - } - } + // for k := range MaxLvChess { + // ChessNum := GoUtil.GetElemNum(ChessList, k) + // if ChessNum >= 2 && Level >= 12 { + // b2 := true + // for _, v := range o.OrderList { + // if GoUtil.SliceEqual(v.MergeId, []int{k, k}) { + // b2 = false + // break + // } + // } + // if b2 { + // b3 = true + // o.addOrder([]int{k, k}, DIFF_LOW, Extra_type) + // } + // } + // } //额外订单补充1;CDEG发射器首次合成时,生成其对应2及棋子订单,完成后生成3及,再完成生成4及的; if b1 { ChessColor := mergeDataCfg.GetEmitProduceChessType(OrderEmit) diff --git a/src/server/game/mod_factory.go b/src/server/game/mod_factory.go index f7ba48bd..12118ed9 100644 --- a/src/server/game/mod_factory.go +++ b/src/server/game/mod_factory.go @@ -12,6 +12,7 @@ import ( "server/game/mod/face" "server/game/mod/friend" "server/game/mod/fur" + "server/game/mod/item" limitedTimeEvent "server/game/mod/limited_time_event" "server/game/mod/mail" "server/game/mod/mining" @@ -90,3 +91,7 @@ func (p *Player) GetMiningMod() *mining.MiningMod { func (p *Player) GetDailyTaskMod() *dailyTask.DailyTaskMod { return p.PlayMod.getDailyTaskMod() } + +func (p *Player) GetItemMod() *item.ItemMod { + return p.PlayMod.getItemMod() +} diff --git a/src/server/game/player_back.go b/src/server/game/player_back.go index 005a8eb9..73666247 100644 --- a/src/server/game/player_back.go +++ b/src/server/game/player_back.go @@ -394,6 +394,9 @@ func (p *Player) FriendLogBackData() { Uid: int64(v.Uid), } } + if !FriendMod.CheckFriend(v.Uid) && v.Uid > 10000 { + continue + } reply = append(reply, &proto.ResFriendReply{ Player: ps, Type: int32(v.Type), @@ -414,6 +417,12 @@ func (p *Player) FriendCardBackData() { FriendMod := p.PlayMod.getFriendMod() msgList := make([]*proto.ResFriendCard, 0, len(FriendMod.Card)) for _, v := range FriendMod.Card { + if !FriendMod.CheckFriend(v.AUid) && v.AUid != int(p.M_DwUin) { + continue + } + if !FriendMod.CheckFriend(v.BUid) && v.BUid != int(p.M_DwUin) { + continue + } msgList = append(msgList, GetCardInfoMsg(v)) } p.PushClientRes(&proto.ResFriendCardMsg{ diff --git a/src/server/game/player_base_mod.go b/src/server/game/player_base_mod.go index 83e5557a..8f0628f7 100644 --- a/src/server/game/player_base_mod.go +++ b/src/server/game/player_base_mod.go @@ -561,7 +561,7 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error) player.TriggerOrder(BaseMod.Level, order.TRIGGER_TYPE_LV, ChessMod.GetOrderEmit(), player.PlayMod.getBaseMod().GetEnergyMul()) player.PushClientRes(OrderMod.BackData()) // 重载活动 - player.initAcitivity() + player.initActivity() player.BackDataActivity() player.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_UPLV}) player.TeLog("level_up", map[string]interface{}{ diff --git a/src/server/game/player_data.go b/src/server/game/player_data.go index 69841604..011ed567 100644 --- a/src/server/game/player_data.go +++ b/src/server/game/player_data.go @@ -248,7 +248,7 @@ func (p *Player) InitPlayer(UserName string) error { log.Debug("AddFunc failed:", err) } p.McronSave.Start() - p.initAcitivity() + p.initActivity() p.ZeroUpdate(nil) p.NoonUpdate(nil) p.Login() @@ -307,7 +307,7 @@ func (p *Player) InitPlayerByUid(Uid int) error { log.Debug("AddFunc failed:", err) } p.McronSave.Start() - p.initAcitivity() + p.initActivity() p.ZeroUpdate(nil) p.NoonUpdate(nil) p.Login() @@ -384,7 +384,7 @@ func (p *Player) ZeroUpdate(a []interface{}) { } p.PlayroomBackData() p.PlayMod.getChampshipMod().ZeroUpdate() - p.initAcitivity() + p.initActivity() p.ActivityZeroUpdate() // 每日任务 @@ -907,6 +907,11 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { "fur_coin_cost": fur_cfg.GetFurShopCostNum(v.Id), "pet_fur_get_type": Label, }) + case item.ITEM_TYPE_AD_CARD: // 广告卡 + ChargeMod := p.PlayMod.getChargeMod() + Effect := itemCfg.GetItemEffect(v.Id) + ChargeMod.AddAdTime(Effect) + BackDataType[item.ITEM_TYPE_AD_CARD] = struct{}{} default: err := ItemMod.AddItem(v.Id, v.Num) p.TeLog("asset_change", map[string]interface{}{ @@ -949,6 +954,8 @@ func (p *Player) HandleItem(itemList []*item.Item, Label string) error { case item.ITEM_TYPE_PET_FUR: FurMod := p.PlayMod.getFurMod() p.PushClientRes(FurMod.BackData()) + case item.ITEM_TYPE_AD_CARD: + p.ChargeBackData() } } p.PetItemUseLog(itemList) @@ -1164,7 +1171,7 @@ func (p *Player) TeLog(Type string, Param map[string]interface{}) { } // 初始化活动 -func (p *Player) initAcitivity() { +func (p *Player) initActivity() { p.activity = make(map[int]*ActivityInfo) ActivityList := activityCfg.GetActivityList() Level := p.GetPlayerBaseMod().GetLevel() @@ -1186,6 +1193,7 @@ func (p *Player) initAcitivity() { Title: v.Title, } } + p.ActivityLogin() } func (p *Player) BackDataActivity() { diff --git a/src/server/game/player_mod.go b/src/server/game/player_mod.go index 89b19f69..22c0f8b9 100644 --- a/src/server/game/player_mod.go +++ b/src/server/game/player_mod.go @@ -206,7 +206,7 @@ func (p *PlayerModData) InitMod(player *Player) (bool, error) { p.ModList.Base.InitData(int(p.Data.DwUin), Ip) p.ModList.SevenLogin.InitData() p.ModList.LimitedTimeEvent.InitData(BaseMod.GetLevel()) - p.ModList.Friend.InitData() + p.ModList.Friend.InitData(p.ModList.Base.Uid) p.ModList.Mail.InitData() p.ModList.Charge.InitData() p.ModList.Endless.InitData() diff --git a/src/server/game/register_network_func.go b/src/server/game/register_network_func.go index bafc2800..3d7d15d3 100644 --- a/src/server/game/register_network_func.go +++ b/src/server/game/register_network_func.go @@ -539,7 +539,12 @@ func ReqDecorate(player *Player, buf []byte) error { "item_list": AddItem, }) } + // 跨越场景 if DecorateMod.GetAreaId() != AreaId { // 解锁上报 + LimitEventMod := player.PlayMod.getLimitedTimeEventMod() + if LimitEventMod.AddSenceDashTimes() { + player.PushClientRes(LimitEventMod.BackData()) + } player.TeLog("plot_unlock", map[string]interface{}{ "plot_id": DecorateMod.GetAreaId(), }) @@ -636,6 +641,15 @@ func ReqDecorateAll(player *Player, buf []byte) error { player.TeLog("scene_reward", v.(map[string]interface{})) } } + if DecorateMod.GetAreaId() != AreaId { // 解锁上报 + LimitEventMod := player.PlayMod.getLimitedTimeEventMod() + if LimitEventMod.AddSenceDashTimes() { + player.PushClientRes(LimitEventMod.BackData()) + } + player.TeLog("plot_unlock", map[string]interface{}{ + "plot_id": DecorateMod.GetAreaId(), + }) + } player.PlayMod.save() player.PushClientRes(DecorateMod.BackData()) @@ -1755,9 +1769,16 @@ func ReqLimitSenceReward(player *Player, buf []byte) error { return fmt.Errorf("not exist") } - Id, Items := limitedTimeEventMod.GetSceneDashReward() + Id, Items, err := limitedTimeEventMod.GetSceneDashReward() + if err != nil { + player.SendErrClienRes(&msg.ResLimitSenceReward{ + Code: msg.RES_CODE_FAIL, + Msg: err.Error(), + }) + return err + } player.args["ResItemPopId"] = Id - err := player.HandleItem(Items, msg.ITEM_POP_LABEL_LimitSenceReward.String()) + err = player.HandleItem(Items, msg.ITEM_POP_LABEL_LimitSenceReward.String()) if err != nil { player.SendErrClienRes(&msg.ResLimitSenceReward{ Code: msg.RES_CODE_FAIL, @@ -2739,8 +2760,10 @@ func ReqShippingOrder(player *Player, buf []byte) error { func ReqChampshipReward(player *Player, buf []byte) error { ChampshipMod := player.PlayMod.getChampshipMod() todayActivityId, _ := player.GetChampshipActivityId() + DecorateMod := player.PlayMod.getDecorateMod() + orderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId()) RewardId := ChampshipMod.Reward - itemList := ChampshipMod.GetReward(todayActivityId) + itemList := ChampshipMod.GetReward(todayActivityId, orderFactor) err := player.HandleItem(itemList, msg.ITEM_POP_LABEL_ChampshipReward.String()) if err != nil { player.SendErrClienRes(&msg.ResChampshipReward{ @@ -3165,8 +3188,8 @@ func ReqMiningReward(player *Player, buf []byte) error { return fmt.Errorf("activity not start") } DecorateMod := player.PlayMod.getDecorateMod() - needStar := DecorateMod.GetNextNeedStar() - itemList, Mining, err := MiningMod.GetReward(needStar) + orderFactor := orderCfg.GetOrderFactor(DecorateMod.GetAreaId()) + itemList, Mining, err := MiningMod.GetReward(orderFactor) if err != nil { player.SendErrClienRes(&msg.ResMiningReward{ Code: msg.RES_CODE_FAIL, @@ -3417,12 +3440,12 @@ func ReqPlayroomInfo(player *Player, buf []byte) error { } else { PlayroomMod.SetGameId(playroom.GAME_TYPE_FILP) DecorateMod := player.PlayMod.getDecorateMod() - needStar := DecorateMod.GetNextNeedStar() + needStar := DecorateMod.GetAreaCost() highReward := int(float64(needStar) * 0.75) if highReward < PlayerData.Star { - PlayroomMod.SetGameRewardFlip(max(int(float64(needStar)*0.1), 10), max(int(float64(needStar)*0.3), 10), max(int(float64(needStar)*0.75), 10)) + PlayroomMod.SetGameRewardFlip(max(int(float64(needStar)*0.1), 10), max(int(float64(needStar)*0.3), 50), max(int(float64(needStar)*0.75), 100)) } else { - PlayroomMod.SetGameRewardFlip(max(10, int(float64(PlayerData.Star)*0.1)), max(10, int(float64(PlayerData.Star)*0.5)), max(PlayerData.Star, 10)) + PlayroomMod.SetGameRewardFlip(max(10, int(float64(PlayerData.Star)*0.1)), max(50, int(float64(PlayerData.Star)*0.5)), max(PlayerData.Star, 100)) } } player.PlayMod.save() @@ -4622,7 +4645,7 @@ func ReqActivityReward(player *Player, buf []byte) error { "Items": Items, }) player.PlayMod.save() - player.initAcitivity() + player.initActivity() player.BackDataActivity() player.PushClientRes(&msg.ResActivityReward{ Code: msg.RES_CODE_SUCCESS, diff --git a/src/server/test/champship_test.go b/src/server/test/champship_test.go index 431d3a2e..6a636f7d 100644 --- a/src/server/test/champship_test.go +++ b/src/server/test/champship_test.go @@ -1,6 +1,7 @@ package test import ( + "fmt" champshipCfg "server/conf/champship" "server/game" "testing" @@ -35,3 +36,14 @@ func TestReqChampshipReward(t *testing.T) { ChampshipMod.Score = 1000 game.ReqChampshipReward(p1, nil) } + +func TestChampionshipCreateRobot(t *testing.T) { + RobotNum := 30 + i := 5 + j := 1 + RobotList := game.CreateRobotList(i, RobotNum, j) + for i := 0; i < RobotNum; i++ { + game.FormatRobotInfo(RobotList[i], i+1) + } + fmt.Print("success") +} diff --git a/src/server/test/chess_test.go b/src/server/test/chess_test.go index 9f2fe5d3..f960504c 100644 --- a/src/server/test/chess_test.go +++ b/src/server/test/chess_test.go @@ -15,7 +15,7 @@ func TestGetStarEmitList(t *testing.T) { OrderMod := p1.GetOrderMod() OrderMod.OrderList = map[int]order.Order{ 1: { - MergeId: []int{25, 25}, + MergeId: []int{15, 15}, }, } p1.InitOrderItem() diff --git a/src/server/test/fix_test.go b/src/server/test/fix_test.go index 12adb328..2ec8125e 100644 --- a/src/server/test/fix_test.go +++ b/src/server/test/fix_test.go @@ -3,7 +3,9 @@ package test import ( "fmt" "server/backend" + avatarCfg "server/conf/avatar" decorateCfg "server/conf/decorate" + faceCfg "server/conf/face" languageCfg "server/conf/language" notification_cfg "server/conf/notification" "server/db" @@ -256,3 +258,14 @@ func TestMsgFormat(t *testing.T) { } fmt.Printf("Msg: %v\n", m) } + +func TestRandFace(t *testing.T) { + face := faceCfg.GetRandInitId() + avatar := avatarCfg.GetRandInitId() + fmt.Printf("Random Face ID: %d, Random Avatar ID: %d\n", face, avatar) +} + +func TestChampionShipCreateRobot(t *testing.T) { + robot := game.CreateRobot(1.0, 1) + fmt.Printf("Created Robot: %v\n", robot) +} diff --git a/src/server/test/friend_test.go b/src/server/test/friend_test.go index aaef53f3..866a2b67 100644 --- a/src/server/test/friend_test.go +++ b/src/server/test/friend_test.go @@ -46,3 +46,11 @@ func TestReqApplyFriend(t *testing.T) { game.ReqApplyFriend(p1, buf) p1.FriendListBackData() } + +func TestFriendBackData(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayerByUid(100001) + p1.M_DwUin = 100100129 + p1.FriendLogBackData() + p1.FriendCardBackData() +} diff --git a/src/server/test/limit_test.go b/src/server/test/limit_test.go index 9d10a98f..39ade1dd 100644 --- a/src/server/test/limit_test.go +++ b/src/server/test/limit_test.go @@ -28,3 +28,17 @@ func TestFast(t *testing.T) { } t.Logf("Fast produce items: %v", items) } + +func TestSenceDash(t *testing.T) { + p := new(game.Player) + p.InitPlayer("3625212") + LimitEventMod := p.GetLimitEventMod() + LimitEventMod.AddEvent(limitedTimeEvent.EVENT_TYPE_SENCE_DASH, 60) + LimitEventMod.AddSenceDashTimes() // 模拟一次场景冲刺 + Id, items, err := LimitEventMod.GetSceneDashReward() + if err != nil { + t.Errorf("GetSceneDashReward error: %v", err) + return + } + t.Logf("Scene dash reward: Id=%d, items=%v", Id, items) +} diff --git a/src/server/test/mining_test.go b/src/server/test/mining_test.go index 35b7b500..858a6fe1 100644 --- a/src/server/test/mining_test.go +++ b/src/server/test/mining_test.go @@ -18,3 +18,9 @@ func TestGetPassReward(t *testing.T) { } player.MiningBackData() } + +func TestInitActivityItem(t *testing.T) { + player := new(game.Player) + player.GetBaseMod().Level = 15 + player.Login() +} diff --git a/src/server/test/order_test.go b/src/server/test/order_test.go index 3624ef70..a6941e28 100644 --- a/src/server/test/order_test.go +++ b/src/server/test/order_test.go @@ -40,3 +40,15 @@ func TestChestRain(t *testing.T) { f := LimitEventMod.GetMeteorReward([]int{226}, ChessMod.GetStarEmitList()) fmt.Printf("chest rain reward:%v", f) } + +func TestInitOrderItem(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayer("3625212") + OrderMod := p1.GetOrderMod() + OrderMod.OrderList = make(map[int]order.Order) + OrderMod.OrderList[1] = order.Order{ + MergeId: []int{15, 15}, + } + p1.InitOrderItem() + fmt.Printf("order item:%v", OrderMod.OrderList[1].Items) +} diff --git a/src/server/test/playroom_test.go b/src/server/test/playroom_test.go new file mode 100644 index 00000000..56409d9b --- /dev/null +++ b/src/server/test/playroom_test.go @@ -0,0 +1,16 @@ +package test + +import ( + "fmt" + "server/game" + "testing" +) + +func TestPlayroomFlipGame(t *testing.T) { + p1 := new(game.Player) + p1.InitPlayerByUid(100001) + DecorateMod := p1.GetDecorateMod() + needStar := DecorateMod.GetAreaCost() + highReward := int(float64(needStar) * 0.75) + fmt.Printf("needStar: %d, highReward: %d\n", needStar, highReward) +}