diff --git a/src/server/conf/charge/ChargeCfg.go b/src/server/conf/charge/ChargeCfg.go index 50c5ff33..6898a60f 100644 --- a/src/server/conf/charge/ChargeCfg.go +++ b/src/server/conf/charge/ChargeCfg.go @@ -10,14 +10,15 @@ import ( const ( CFG_CHARGE = "Charge" - CFG_DIAMOND_SHOP = "DiamondShop" - CFG_ENERGY_SHOP = "EnergyShop" - CFG_SEPCIAL_SHOP = "SpecialShop" - CFG_FREE_SHOP = "FreeShop" - CFG_CHARGE_CONST = "ChargeConst" - CFG_CHARGE_GIFT = "ChargeGift" - CFG_CHARGE_WISH = "ChargeWish" + CFG_DIAMOND_SHOP = "DiamondShop" // 钻石商店 + CFG_ENERGY_SHOP = "EnergyShop" // 体力商店 + CFG_SEPCIAL_SHOP = "SpecialShop" // 特惠商店 + CFG_FREE_SHOP = "FreeShop" // 免费商店 + CFG_CHARGE_CONST = "ChargeConst" // 充值常量配置 + CFG_CHARGE_GIFT = "ChargeGift" // 充值礼包 + CFG_CHARGE_WISH = "ChargeWish" // 许愿配置 CFG_CHARGE_PETCOIN = "ChargePetCoin" // 宠物币充值配置 + CFG_CHARGE_AD = "ChargeAD" // 广告充值配置 ) func init() { @@ -30,6 +31,20 @@ func init() { gamedata.InitCfg(CFG_CHARGE_GIFT) gamedata.InitCfg(CFG_CHARGE_WISH) gamedata.InitCfg(CFG_CHARGE_PETCOIN) + gamedata.InitCfg(CFG_CHARGE_AD) +} + +func GetADReward(ChargeId int) ([]*item.Item, int) { + data, err := gamedata.GetData(CFG_CHARGE_AD) + if err != nil { + return nil, 0 + } + for _, v := range data { + if gamedata.GetIntValue(v, "ChargeId") == ChargeId { + return item.ParseItem(gamedata.GetValue(v, "Items")), gamedata.GetIntValue(v, "PetWork") + } + } + return nil, 0 } func GetMoneyCharge(ChargeId int) float64 { diff --git a/src/server/conf/mergeData/MergeDataCfg.go b/src/server/conf/mergeData/MergeDataCfg.go index 5f2d79cf..205b5d5d 100644 --- a/src/server/conf/mergeData/MergeDataCfg.go +++ b/src/server/conf/mergeData/MergeDataCfg.go @@ -473,13 +473,24 @@ func DynamicLev2(Lv int, EmitId int, Color1 string, Color2 string) int { return Lv } -func DynamicAdjust(EmitId int, Color string) int { +func DynamicAdjust(EmitId int, Color string, EnergyMul int) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) return 0 } - DynamicLv := gamedata.GetStringValue(data, "Dynamic") + DynamicLv := "" + switch EnergyMul { + case 0: + DynamicLv = gamedata.GetStringValue(data, "Dynamic") + case 1, 2: + DynamicLv = gamedata.GetStringValue(data, "Dynamic1") + case 3, 4: + DynamicLv = gamedata.GetStringValue(data, "Dynamic2") + default: + DynamicLv = gamedata.GetStringValue(data, "Dynamic3") + } + if DynamicLv == "" { return 0 } @@ -497,13 +508,23 @@ func DynamicAdjust(EmitId int, Color string) int { return 0 } -func GetAdjust(EmitId int, Color string) int { +func GetAdjust(EmitId int, Color string, EnergyMul int) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) return 0 } - AdjustLv := gamedata.GetStringValue(data, "Dynamic") + AdjustLv := "" + switch EnergyMul { + case 0: + AdjustLv = gamedata.GetStringValue(data, "Dynamic") + case 1, 2: + AdjustLv = gamedata.GetStringValue(data, "Dynamic1") + case 3, 4: + AdjustLv = gamedata.GetStringValue(data, "Dynamic2") + default: + AdjustLv = gamedata.GetStringValue(data, "Dynamic3") + } if AdjustLv == "" { return 0 } diff --git a/src/server/conf/playroom/playroomCfg.go b/src/server/conf/playroom/playroomCfg.go index a2bd6ae8..312418cd 100644 --- a/src/server/conf/playroom/playroomCfg.go +++ b/src/server/conf/playroom/playroomCfg.go @@ -568,14 +568,59 @@ func GetOrderItem(Star int) map[int][]gamedata.PetOrderItem { log.Debug("GetOrderItem Id is 0, Type:%v", Type) continue } + GradeStr := gamedata.GetStringValue(v, "Grade") + Grade := make([]int, 0) + for _, v1 := range strings.Split(GradeStr, ",") { + v2 := GoUtil.Int(v1) + if v2 > 0 { + Grade = append(Grade, v2) + } + } r[Type] = append(r[Type], gamedata.PetOrderItem{ - Id: Id, - Star: ItemStar, + Id: Id, + Star: ItemStar, + Grade: Grade, }) } return r } +func GetOrderItemByGrade(Grade int) map[int][]int { + data, err := gamedata.GetData(CFG_PLAYROOM_ORDERITEM) + if err != nil { + log.Debug("GetOrderItemByGrade err:%v", err) + return nil + } + r := make(map[int][]int) + for k, v := range data { + GradeStr := gamedata.GetStringValue(v, "Grade") + GradeList := make([]int, 0) + for _, v1 := range strings.Split(GradeStr, ",") { + v2 := GoUtil.Int(v1) + if v2 > 0 { + GradeList = append(GradeList, v2) + } + } + if !GoUtil.InArray(Grade, GradeList) { + continue + } + Id := GoUtil.Int(k) + Type := gamedata.GetIntValue(v, "Type") + if Type == 0 { + continue + } + if _, ok := r[Type]; !ok { + r[Type] = make([]int, 0) + } + if Id == 0 { + log.Debug("GetOrderItemByGrade Id is 0, Type:%v", Type) + continue + } + r[Type] = append(r[Type], Id) + } + return r +} + func GetOrderItemList() []int { data, err := gamedata.GetData(CFG_PLAYROOM_ORDERITEM) if err != nil { @@ -648,3 +693,25 @@ func GetDailyTaskListById(Id int) []int { } return r } + +func GetItemAddPhysiology(Item map[int]int) int { + r := 0 + data, err := gamedata.GetData(CFG_PLAYROOM_MOOD) + if err != nil { + log.Debug("GetItemAddPhysiology err") + return 0 + } + for _, v := range data { + costItem := gamedata.GetItemList(v, "Cost2") + if len(costItem) < 1 { + continue + } + if costItem[0].Id == 0 { + continue + } + if val, ok := Item[costItem[0].Id]; ok { + r += gamedata.GetIntValue(v, "PEffect") * val + } + } + return r +} diff --git a/src/server/game/ChargeFunc.go b/src/server/game/ChargeFunc.go index b01e2912..b535d95f 100644 --- a/src/server/game/ChargeFunc.go +++ b/src/server/game/ChargeFunc.go @@ -17,6 +17,7 @@ func Charge(p *Player, ChargeId int) { PiggyBankFire(p, ChargeId) // 猪猪银行 PlayroomFire(p, ChargeId) // 游乐场 ActivityFire(p, ChargeId) // 活动礼包 + ADPetWorkFire(p, ChargeId) // 广告宠物工作 OrderMod := p.PlayMod.getOrderMod() OrderMod.SetIsCharge() // 设置订单模块为充值状态 p.QuestTrigger(&quest.Trigger{Label: quest.TRIGGER_LABEL_PURCHASE, A: []interface{}{}}) @@ -32,6 +33,21 @@ func SendCharge(p *Player, d *ChargeExtra) { }) } +func ADPetWorkFire(p *Player, ChargeId int) { + ChargeMod := p.PlayMod.getChargeMod() + Item := ChargeMod.FireAdReward(ChargeId) + if Item == nil { + return + } + err := p.HandleItem(Item, msg.ITEM_POP_LABEL_ActivityGift.String()) + if err != nil { + log.Debug("ChargeFire err : %s", err) + return + } + p.PlayMod.save() + p.PushClientRes(ChargeMod.BackData()) +} + func ActivityFire(p *Player, ChargeId int) { ActivityMod := p.PlayMod.getActivityMod() ActivityId := activityCfg.GetActivityGiftId(ChargeId) diff --git a/src/server/game/PlayerChessMod.go b/src/server/game/PlayerChessMod.go index 7e07467a..88f3765e 100644 --- a/src/server/game/PlayerChessMod.go +++ b/src/server/game/PlayerChessMod.go @@ -316,7 +316,7 @@ func checkChess(ChessId, EnergyMul int, Emit []int) bool { } } _, Max := getChesslvRange(EmitId, EnergyMul, false) - Adjust := mergeDataCfg.GetAdjust(EmitId, ChessIdColor) + Adjust := mergeDataCfg.GetAdjust(EmitId, ChessIdColor, EnergyMul) return ChessIdLv > Max-Adjust } func getChesslvRange(Emit int, EnergyMul int, IsCharge bool) (int, int) { diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index aa3f8fb7..225084e3 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -11,6 +11,7 @@ import ( cardCfg "server/conf/card" chargeCfg "server/conf/charge" decorateCfg "server/conf/decorate" + itemCfg "server/conf/item" limitedTimeEventCfg "server/conf/limitedTimeEvent" mailCfg "server/conf/mail" mergeDataCfg "server/conf/mergeData" @@ -1172,7 +1173,7 @@ func (player *Player) CreateNormalOrder() { } Items := make([]*item.Item, 0) Star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList()) - Star = int(float64(Star)*float64(OrderFactor)/1000) * 10 + // Star = int(float64(Star)*float64(OrderFactor)/1000) * 10 Items = player.GetPetOrderReward(Star, Items) if len(Items) == 1 && Items[0].Id == item.ITEM_STAR_ID { v.Type = order.Common_type @@ -1270,63 +1271,33 @@ func (player *Player) InitOrderItem() { } } func (player *Player) GetPetOrderReward(Star int, Items []*item.Item) []*item.Item { - OrderItem := playroomCfg.GetOrderItem(Star) - type sortData struct { - Type int - Num int + HighNum := Star / 225 + if HighNum > 0 { + HighNum = min(HighNum, 3) + Items = append(Items, item.NewItem(item.ITEM_PLAYROOM_BOX_HIGH_ID, HighNum)) + Star -= HighNum * 225 } - ItemMod := player.PlayMod.getItemMod() - sortList := make([]sortData, 0) - for k, v := range OrderItem { - ids := make([]int, 0) - for _, v1 := range v { - if v1.Id == 0 { - continue - } - ids = append(ids, v1.Id) - } - Num := ItemMod.GetItemNumByList(ids) - sortList = append(sortList, sortData{ - Type: k, - Num: Num, - }) + + MidNum := Star / 150 + if MidNum > 0 { + MidNum = min(MidNum, 3) + Items = append(Items, item.NewItem(item.ITEM_PLAYROOM_BOX_MID_ID, MidNum)) + Star -= MidNum * 150 } - if len(sortList) == 0 && Star > 0 { + if len(Items) >= 2 { Items = append(Items, item.NewItem(item.ITEM_STAR_ID, Star)) return Items } - - sort.Slice(sortList, func(i, j int) bool { - return sortList[i].Num < sortList[j].Num - }) - - ItemsId := OrderItem[sortList[0].Type] - if len(ItemsId) == 0 { - return Items + LowNum := Star / 75 + if LowNum > 0 { + LowNum = min(LowNum, 3) + Items = append(Items, item.NewItem(item.ITEM_PLAYROOM_BOX_LOW_ID, LowNum)) + Star -= LowNum * 75 } - - for k, v := range ItemsId { - ItemNum := ItemMod.GetItem(v.Id) - for _, v1 := range Items { - if v1.Id == v.Id { - ItemNum += v1.Num - } - } - v.Num = ItemNum - ItemsId[k] = v + if Star > 0 { + Items = append(Items, item.NewItem(item.ITEM_STAR_ID, Star)) } - sort.Slice(ItemsId, func(i, j int) bool { - return ItemsId[i].Num < ItemsId[j].Num - }) - Items = append(Items, item.NewItem(ItemsId[0].Id, 1)) - Star -= ItemsId[0].Star - if Star <= 0 { - return Items - } - if len(Items) >= 2 { - return Items - } - return player.GetPetOrderReward(Star, Items) + return Items } func ExcludeCardStar(CardList []int) []int { @@ -1492,3 +1463,79 @@ func (p *Player) AddHighOrder2() { } } } + +func (p *Player) FormatPetOrderItem(Items []*item.Item) []*item.Item { + NewItems := make([]*item.Item, 0) + PlayroomMod := p.PlayMod.getPlayroomMod() + for _, v := range Items { + if v.Id != item.ITEM_PLAYROOM_BOX_LOW_ID && v.Id != item.ITEM_PLAYROOM_BOX_MID_ID && v.Id != item.ITEM_PLAYROOM_BOX_HIGH_ID { + NewItems = append(NewItems, v) + continue + } + var OrderItem map[int][]int + switch v.Id { + case item.ITEM_PLAYROOM_BOX_LOW_ID: + OrderItem = playroomCfg.GetOrderItemByGrade(1) + case item.ITEM_PLAYROOM_BOX_MID_ID: + OrderItem = playroomCfg.GetOrderItemByGrade(2) + default: + OrderItem = playroomCfg.GetOrderItemByGrade(3) + } + feed := PlayroomMod.GetPhysiology(playroom.PHYSIOLOGY_TYPE_FEED) + feedItem := p.GetPlayroomFood() + feedPlo := playroomCfg.GetItemAddPhysiology(feedItem) + if feed.Num+feedPlo <= 1 { + RandList := OrderItem[1] + NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1)) + continue + } + clean := PlayroomMod.GetPhysiology(playroom.PHYSIOLOGY_TYPE_CLEAN) + cleanItem := p.GetPlayroomClean() + cleanPlo := playroomCfg.GetItemAddPhysiology(cleanItem) + // 卫生值低于等于5点,优先产出清洁类物品 + if clean.Num+cleanPlo <= 5 { + RandList := OrderItem[2] + NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1)) + continue + } + RandList := make([]int, 0) + for k, v1 := range OrderItem { + if k == 1 || k == 2 { + continue + } + RandList = append(RandList, v1...) + } + NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1)) + } + return NewItems +} + +func (player *Player) GetPlayroomFood() map[int]int { + ItemMod := player.PlayMod.getItemMod() + Item := make(map[int]int) + for k, v := range ItemMod.Data { + ItemType := itemCfg.GetItemType(k) + if ItemType == item.ITEM_TYPE_PLAYROOM_PET { + Effect := itemCfg.GetItemEffect(k) + if Effect == 1 { + Item[k] = v + } + } + } + return Item +} + +func (player *Player) GetPlayroomClean() map[int]int { + ItemMod := player.PlayMod.getItemMod() + Item := make(map[int]int) + for k, v := range ItemMod.Data { + ItemType := itemCfg.GetItemType(k) + if ItemType == item.ITEM_TYPE_PLAYROOM_PET { + Effect := itemCfg.GetItemEffect(k) + if Effect == 2 { + Item[k] = v + } + } + } + return Item +} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 6281cad2..49394a8a 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -235,6 +235,9 @@ func ReqRewardOrder(player *Player, buf []byte) error { ChessMod := player.PlayMod.getChessMod() LimitedTimeEventMod := player.PlayMod.getLimitedTimeEventMod() Item, mergeList, OrderType, Star, err := OrderMod.RewardOrder(int(req.OrderId)) + if OrderType == order.Pet_type { + Item = player.FormatPetOrderItem(Item) + } ActItem := GetActivityItem(player, GoUtil.Int32ToInt(req.ActType)) Item = item.Merge(Item, ActItem) if !OrderMod.CheckSuperOrder() { diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index 6f46332e..a8eb4b4f 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -263,7 +263,7 @@ func UnitOrder2(p *Player, Lv, EnergyMul int) float64 { Color := mergeDataCfg.GetColorById(v1) Lv := mergeDataCfg.GetLvById(v1) EmitId := order.GetEmitByColor(Emit, Color) - AdjustLv := mergeDataCfg.GetAdjust(EmitId, Color) + AdjustLv := mergeDataCfg.GetAdjust(EmitId, Color, EnergyMul) Energy += math.Pow(2, float64(Lv-1+AdjustLv)) } } @@ -353,3 +353,12 @@ func UnitOrderExtra(p *Player) error { fmt.Print(Update) return nil } + +func UnitOrderPetReward(p *Player) error { + OrderMod := p.PlayMod.getOrderMod() + Item, _, OrderType, _, _ := OrderMod.RewardOrder(10015) + if OrderType == order.Pet_type { + Item = p.FormatPetOrderItem(Item) + } + return nil +} diff --git a/src/server/game/admin.go b/src/server/game/admin.go index c1bed79c..11d6d871 100644 --- a/src/server/game/admin.go +++ b/src/server/game/admin.go @@ -122,6 +122,7 @@ func AdminPlayerInfo(args []interface{}) error { res["Name"] = player.PlayMod.getBaseMod().NickName res["Uid"] = player.M_DwUin res["AreaId"] = player.PlayMod.getDecorateMod().GetAreaId() + res["Face"] = player.PlayMod.getFaceMod().SetId res["Charge"] = player.PlayMod.getChargeMod().Charge res["Level"] = player.GetPlayerBaseMod().GetLevel() res["Diamond"] = player.GetPlayerBaseMod().GetDiamond() @@ -140,6 +141,7 @@ func AdminPlayerInfo(args []interface{}) error { } res["Bonus"] = player.PlayMod.getLimitedTimeEventMod().Progress res["Code"] = player.PlayMod.getBaseMod().AddCode + res["ChessMap"] = player.PlayMod.getChessMod().ChessMap OrderMap := make(map[int]interface{}) Index := 0 for k, v := range player.PlayMod.getOrderMod().OrderList { diff --git a/src/server/game/mod/charge/Charge.go b/src/server/game/mod/charge/Charge.go index 629a10b3..538f4030 100644 --- a/src/server/game/mod/charge/Charge.go +++ b/src/server/game/mod/charge/Charge.go @@ -32,9 +32,9 @@ type ChargeMod struct { Gift map[int]int // 礼包 - Ad bool // 是否购买免广告 - - WishList *WishList + Ad bool // 是否购买免广告 + AdEndTime int64 + WishList *WishList } type WishList struct { @@ -243,6 +243,21 @@ func (c *ChargeMod) FireAd(ChargeId int) []*item.Item { return nil } +// 免广告礼包 +func (c *ChargeMod) FireAdReward(ChargeId int) []*item.Item { + Items, PetWorkDay := chargeCfg.GetADReward(ChargeId) + if PetWorkDay != 0 { + Now := GoUtil.Now() + if c.AdEndTime < Now { + c.AdEndTime = Now + int64(PetWorkDay*24*3600) + } else { + c.AdEndTime += int64(PetWorkDay * 24 * 3600) + } + c.Ad = true + } + return Items +} + // 免费商店 func (c *ChargeMod) FireFreeShop() ([]*item.Item, error) { if c.FreeShop >= 2 { @@ -292,6 +307,7 @@ func (c *ChargeMod) BackData() *msg.ResCharge { TodayCharge: float32(c.TodayCharge), MonthCharge: float32(c.MonthCharge), Wish: resWish, + AdEndTime: c.AdEndTime, } } @@ -307,21 +323,16 @@ func (c *ChargeMod) InitChessShop(Emit []int) { ProduceList := mergeDataCfg.GetEmitProduceType(v) for _, p := range ProduceList { ChessList := order.GetChessByDiff(v, 1, order.DIFF_MID, p) - ColorType := mergeDataCfg.GetColorType(p) + //ColorType := mergeDataCfg.GetColorType(p) for _, c := range ChessList { if c == 0 { continue } ChessLv := mergeDataCfg.GetLvById(c) - Diamond := int(math.Pow(2, float64(ChessLv-1)) / 2.5) - if ColorType == mergeDataCfg.CHESS_PRODUCT_SUB_TYPE { - Diamond = int(math.Pow(2, float64(ChessLv-1))/2.5 + 6.4) - } - Diamond = max(1, Diamond) - if ColorType == mergeDataCfg.CHESS_PRODUCT_SECONDARY_TYPE { - Diamond *= 2 - } - RandList = append(RandList, &Rand{ChessId: c, Diamond: Diamond}) + DynamicLv := mergeDataCfg.GetAdjust(v, p, 0) + ChessLv += DynamicLv + Diamond := math.Round(math.Pow(2, float64(ChessLv-1)) / 18) + RandList = append(RandList, &Rand{ChessId: c, Diamond: int(Diamond)}) } } //ColorList = append(ColorList, ProduceList...) diff --git a/src/server/game/mod/charge/ChargeFunc.go b/src/server/game/mod/charge/ChargeFunc.go index 48e7482e..cd243096 100644 --- a/src/server/game/mod/charge/ChargeFunc.go +++ b/src/server/game/mod/charge/ChargeFunc.go @@ -2,7 +2,6 @@ package charge import ( "math" - mergeDataCfg "server/conf/mergeData" ) func GetChessDiamond(Lv, Type int) int { @@ -22,41 +21,41 @@ func GetChessDiamond(Lv, Type int) int { return max(1, d) } -func getChessMainRand(Color string) []*Rand { - r := make([]*Rand, 0) - for i := 6; i <= 10; i++ { - Diamond := int(math.Pow(2, float64(i-1)) / 2.5) - ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color) - if ChessId == 0 { - continue - } - r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond}) - } - return r -} +// func getChessMainRand(Color string) []*Rand { +// r := make([]*Rand, 0) +// for i := 6; i <= 10; i++ { +// Diamond := int(math.Pow(2, float64(i-1)) / 2.5) +// ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color) +// if ChessId == 0 { +// continue +// } +// r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond}) +// } +// return r +// } -func getChessSecondaryRand(Color string) []*Rand { - r := make([]*Rand, 0) - for i := 5; i <= 9; i++ { - Diamond := int((math.Pow(2, float64(i-1)) / 2.5) * 2) - ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color) - if ChessId == 0 { - continue - } - r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond}) - } - return r -} +// func getChessSecondaryRand(Color string) []*Rand { +// r := make([]*Rand, 0) +// for i := 5; i <= 9; i++ { +// Diamond := int((math.Pow(2, float64(i-1)) / 2.5) * 2) +// ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color) +// if ChessId == 0 { +// continue +// } +// r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond}) +// } +// return r +// } -func getChessSubRand(Color string) []*Rand { - r := make([]*Rand, 0) - for i := 5; i <= 9; i++ { - Diamond := int(math.Pow(2, float64(i-1))/2.5 + 6.4) - ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color) - if ChessId == 0 { - continue - } - r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond}) - } - return r -} +// func getChessSubRand(Color string) []*Rand { +// r := make([]*Rand, 0) +// for i := 5; i <= 9; i++ { +// Diamond := int(math.Pow(2, float64(i-1))/2.5 + 6.4) +// ChessId := mergeDataCfg.GetChessIdByLvAndColor(i, Color) +// if ChessId == 0 { +// continue +// } +// r = append(r, &Rand{ChessId: ChessId, Diamond: Diamond}) +// } +// return r +// } diff --git a/src/server/game/mod/face/Face.go b/src/server/game/mod/face/Face.go index 7d93d123..816b0772 100644 --- a/src/server/game/mod/face/Face.go +++ b/src/server/game/mod/face/Face.go @@ -32,7 +32,6 @@ func (f *FaceMod) InitData() { if f.List == nil || !f.Init { f.Init = true f.List = make(map[int]*Face) - f.SetId = 1 } InitId := faceCfg.GetInitList() diff --git a/src/server/game/mod/item/Item.go b/src/server/game/mod/item/Item.go index 583584a5..f878440c 100644 --- a/src/server/game/mod/item/Item.go +++ b/src/server/game/mod/item/Item.go @@ -16,15 +16,18 @@ type ItemMod struct { } const ( - ITEM_ENERGY_ID = 100001 - ITEM_STAR_ID = 100002 - ITEM_DIAMOND_ID = 100003 - ITEM_FIVE_STAR_CARD_PACK = 100008 - ITEM_RACING_BATTERY_ID = 100027 - ITEM_LAUNCHER_ID = 1602 - ITEM_LAUNCHER_lOW_ID = 1601 - ITEM_ENERGY_GIFT_ID = 562 - ITEM_DIAMOND_LV2_ID = 502 + ITEM_ENERGY_ID = 100001 + ITEM_STAR_ID = 100002 + ITEM_DIAMOND_ID = 100003 + ITEM_FIVE_STAR_CARD_PACK = 100008 + ITEM_RACING_BATTERY_ID = 100027 + ITEM_LAUNCHER_ID = 1602 + ITEM_LAUNCHER_lOW_ID = 1601 + ITEM_ENERGY_GIFT_ID = 562 + ITEM_DIAMOND_LV2_ID = 502 + ITEM_PLAYROOM_BOX_LOW_ID = 101445 + ITEM_PLAYROOM_BOX_MID_ID = 101446 + ITEM_PLAYROOM_BOX_HIGH_ID = 101447 ) const ( @@ -52,6 +55,7 @@ const ( ITEM_TYPE_PLAYROOM_DRESS = 112 // playroom服饰 ITEM_TYPE_PLAYROOM_DECORATION_SET = 113 // playroom装饰套装 ITEM_TYPE_PLAYROOM_DRESS_SET = 114 // playroom服饰套装 + ITEM_TYPE_PLAYROOM_BOX = 115 // playroom宝箱 ) func (i *ItemMod) InitData() { diff --git a/src/server/game/mod/mail/Mail.go b/src/server/game/mod/mail/Mail.go index af0517c2..963920f9 100644 --- a/src/server/game/mod/mail/Mail.go +++ b/src/server/game/mod/mail/Mail.go @@ -161,12 +161,17 @@ func (m *MailMod) NotifyMail(Id int) *msg.MailNotify { mailInfo := m.List[Id] return &msg.MailNotify{ Info: &msg.MailInfo{ - Id: int32(Id), - Title: mailInfo.Title, - Content: mailInfo.Content, - Items: item.ItemToMsg(mailInfo.Items), - Status: int32(mailInfo.Status), - Time: int32(mailInfo.Send), + Id: int32(Id), + Title: mailInfo.Title, + Content: mailInfo.Content, + ContentEn: mailInfo.ContentEn, + SubTitle: mailInfo.SubTitle, + SubTitleEn: mailInfo.SubTitleEn, + TitleEn: mailInfo.TitleEn, + Type: int32(mailInfo.Type), + Items: item.ItemToMsg(mailInfo.Items), + Status: int32(mailInfo.Status), + Time: int32(mailInfo.Send), }, } } diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index fbe4ed05..24356935 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -436,18 +436,11 @@ func (o *OrderMod) CreateNormalOrder(lv int, Emit []int, EnergyMul, OrderType in } break } - // if len(mergeList) == 2 { - // ColorMap := make(map[string]int) - // for _, v := range mergeList { - // Color := mergeDataCfg.GetColorById(v) - // ColorMap[Color]++ - // if ColorMap[Color] > 1 { - // log.Printf("CreateNormalOrder: %v, %v, %v", mergeList, OrderDiff, err) - // return fmt.Errorf("订单生成失败,重复颜色") - // } - // } - - // } + for _, v := range mergeList { + if v == 0 { + return nil + } + } o.addOrder(mergeList, OrderDiff, OrderType) return nil } @@ -673,7 +666,7 @@ func (o *OrderMod) ChangeEnergyMul(lv int, Emit []int, EnergyMul int, ChessList Color := mergeDataCfg.GetColorById(vv) EmitId := GetEmitByColor(Emit, Color) _, Max := getChesslvRange(EmitId, EnergyMul, o.IsCharge) - Adjust := mergeDataCfg.GetAdjust(EmitId, Color) + Adjust := mergeDataCfg.GetAdjust(EmitId, Color, EnergyMul) if Lv >= EnergyMul+1 && Lv <= Max-Adjust { continue } diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index e4dffa4f..41847480 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -90,13 +90,13 @@ type orderConfigInfo struct { } // 订单棋子数量 -func getChessNumRand(OrderN int) map[int]int { - return map[int]int{ - 1: int(70 - 2*OrderN), - 2: int(25 + OrderN), - 3: int(5 + OrderN), - } -} +// func getChessNumRand(OrderN int) map[int]int { +// return map[int]int{ +// 1: int(70 - 2*OrderN), +// 2: int(25 + OrderN), +// 3: int(5 + OrderN), +// } +// } // 根据上一个订单难度和系数 生成订单难度 func getOrderDiffRand(Lv, Diff, OrderN int) map[int]int { @@ -501,25 +501,6 @@ func randOrderChess(o *OrderMod, lv int, Emit []int, EnergyMul, OrderType int) ( //获取订单体力范围和棋子数量 MinEnergy, MaxEnergy, ChessNum := getChessByDiff(lv, OrderDiff, OrderType) mergeList := getChessFromPoolByEnergy(o, MinEnergy, MaxEnergy, ChessNum, Emit, EnergyMul, OrderDiff) - // // 根据订单棋子难度生成棋子 - // for _, v := range ChessDiff { - // ChessId := 0 - // Num := 0 - // for { - // Num++ - // if Num > 50 { - // break - // } - // ChessId = getChessFromPoolByDiff(o, v, Emit, EnergyMul) - // if ChessId == 0 { - // continue - // } - // if !GoUtil.InArray(ChessId, mergeList) { - // break - // } - // } - // mergeList = append(mergeList, ChessId) - // } return mergeList, OrderDiff, nil } @@ -568,6 +549,9 @@ func filterPool(o *OrderMod) { } func ShuffleColor(List []string, Last string) []string { + if len(List) <= 1 { + return List + } Break := 0 List2 := make([]string, len(List)) List3 := make([]string, len(List)) @@ -753,34 +737,34 @@ func (o *OrderMod) getChessLvFromConfig1(MinEnergy, MaxEnergy, MinLv, MaxLv, Las return rand } -func (o *OrderMod) getChessLvFromConfig2(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) []int { - rand := []int{} - for _, v := range orderCfgMap { - if MinEnergy >= v.Min && MaxEnergy <= v.Max { - for _, info := range v.Pool { - if MinLv <= info.lv && MaxLv >= info.lv { - rand = append(rand, info.lv) - } - } +// func (o *OrderMod) getChessLvFromConfig2(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) []int { +// rand := []int{} +// for _, v := range orderCfgMap { +// if MinEnergy >= v.Min && MaxEnergy <= v.Max { +// for _, info := range v.Pool { +// if MinLv <= info.lv && MaxLv >= info.lv { +// rand = append(rand, info.lv) +// } +// } - } - } - return rand -} -func (o *OrderMod) getChessLvFromConfig3(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) []int { - rand := []int{} - for _, v := range orderCfgMap { - if MinEnergy >= v.Min && MaxEnergy <= v.Max { - for _, info := range v.Pool { - if MinLv <= info.lv && MaxLv >= info.lv && LastEnergy+info.energy <= MaxEnergy && LastEnergy+info.energy >= MinEnergy { - rand = append(rand, info.lv) - } - } +// } +// } +// return rand +// } +// func (o *OrderMod) getChessLvFromConfig3(MinEnergy, MaxEnergy, MinLv, MaxLv, LastEnergy int) []int { +// rand := []int{} +// for _, v := range orderCfgMap { +// if MinEnergy >= v.Min && MaxEnergy <= v.Max { +// for _, info := range v.Pool { +// if MinLv <= info.lv && MaxLv >= info.lv && LastEnergy+info.energy <= MaxEnergy && LastEnergy+info.energy >= MinEnergy { +// rand = append(rand, info.lv) +// } +// } - } - } - return rand -} +// } +// } +// return rand +// } func (o *OrderMod) ChessPoolChess(Color string, Lv int) bool { for _, v := range o.ChessPool2[Color] { @@ -965,19 +949,19 @@ func initReflectChess(Emits []int, EnergyMul int) { Start = ChessMinLv End = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3 - 1 for _, v := range Product { - Adjust := mergeDataCfg.DynamicAdjust(Emit, v) + Adjust := mergeDataCfg.DynamicAdjust(Emit, v, EnergyMul) initReflectChess2(v, Start, End, DIFF_LOW, Adjust) } Start = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3 End = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3*2 - 1 for _, v := range Product { - Adjust := mergeDataCfg.DynamicAdjust(Emit, v) + Adjust := mergeDataCfg.DynamicAdjust(Emit, v, EnergyMul) initReflectChess2(v, Start, End, DIFF_MID, Adjust) } Start = ChessMinLv + (ChessMaxLv-ChessMinLv+1)/3*2 End = ChessMaxLv for _, v := range Product { - Adjust := mergeDataCfg.DynamicAdjust(Emit, v) + Adjust := mergeDataCfg.DynamicAdjust(Emit, v, EnergyMul) initReflectChess2(v, Start, End, DIFF_HIGH, Adjust) } } diff --git a/src/server/gamedata/type.go b/src/server/gamedata/type.go index 17400eac..487d8c85 100644 --- a/src/server/gamedata/type.go +++ b/src/server/gamedata/type.go @@ -62,7 +62,8 @@ type LimitedTimeEventData struct { } type PetOrderItem struct { - Id int - Star int - Num int + Id int + Star int + Num int + Grade []int } diff --git a/src/server/msg/Gameapi.pb.go b/src/server/msg/Gameapi.pb.go index 8c1ec525..ac857e30 100644 --- a/src/server/msg/Gameapi.pb.go +++ b/src/server/msg/Gameapi.pb.go @@ -15923,6 +15923,7 @@ type ResCharge struct { SpecialChargeWeek int32 `protobuf:"varint,11,opt,name=SpecialChargeWeek,proto3" json:"SpecialChargeWeek,omitempty"` // 距离现在多少周 TodayCharge float32 `protobuf:"fixed32,12,opt,name=TodayCharge,proto3" json:"TodayCharge,omitempty"` // 今日充值金额 MonthCharge float32 `protobuf:"fixed32,13,opt,name=MonthCharge,proto3" json:"MonthCharge,omitempty"` // 本月充值金额 + AdEndTime int64 `protobuf:"varint,14,opt,name=AdEndTime,proto3" json:"AdEndTime,omitempty"` // 广告礼包结束时间 unknownFields protoimpl.UnknownFields sizeCache protoimpl.SizeCache } @@ -16048,6 +16049,13 @@ func (x *ResCharge) GetMonthCharge() float32 { return 0 } +func (x *ResCharge) GetAdEndTime() int64 { + if x != nil { + return x.AdEndTime + } + return 0 +} + type WishList struct { state protoimpl.MessageState `protogen:"open.v1"` Id int32 `protobuf:"varint,1,opt,name=Id,proto3" json:"Id,omitempty"` // 物品id @@ -27010,7 +27018,7 @@ const file_proto_Gameapi_proto_rawDesc = "" + "\rResDeleteMail\x12&\n" + "\x04Code\x18\x01 \x01(\x0e2\x12.tutorial.RES_CODER\x04Code\x12\x10\n" + "\x03Msg\x18\x02 \x01(\tR\x03Msg\x12\x0e\n" + - "\x02Id\x18\x03 \x01(\x05R\x02Id\"\xe1\x05\n" + + "\x02Id\x18\x03 \x01(\x05R\x02Id\"\xff\x05\n" + "\tResCharge\x12\x16\n" + "\x06Charge\x18\x01 \x01(\x02R\x06Charge\x12\x14\n" + "\x05Total\x18\x02 \x01(\x05R\x05Total\x12\x14\n" + @@ -27025,7 +27033,8 @@ const file_proto_Gameapi_proto_rawDesc = "" + " \x01(\x02R\rSpecialCharge\x12,\n" + "\x11SpecialChargeWeek\x18\v \x01(\x05R\x11SpecialChargeWeek\x12 \n" + "\vTodayCharge\x18\f \x01(\x02R\vTodayCharge\x12 \n" + - "\vMonthCharge\x18\r \x01(\x02R\vMonthCharge\x1aX\n" + + "\vMonthCharge\x18\r \x01(\x02R\vMonthCharge\x12\x1c\n" + + "\tAdEndTime\x18\x0e \x01(\x03R\tAdEndTime\x1aX\n" + "\x10SpecialShopEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\x05R\x03key\x12.\n" + "\x05value\x18\x02 \x01(\v2\x18.tutorial.ResSpecialShopR\x05value:\x028\x01\x1aT\n" +