From 144d30df98e0363c3fce6e3db00d9dad1b35bb90 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 29 Sep 2025 09:46:56 +0800 Subject: [PATCH 01/17] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/order/OrderFunc.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index 45100746..e4dffa4f 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -573,9 +573,9 @@ func ShuffleColor(List []string, Last string) []string { List3 := make([]string, len(List)) for _, v := range List { if mergeDataCfg.GetEmitProductNumByColor(v) == 1 { - List2 = append(List2, v) - } else { List3 = append(List3, v) + } else { + List2 = append(List2, v) } } From b2ea831498b4f338d76f20da605a414dfe7d2d4c Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 29 Sep 2025 16:23:04 +0800 Subject: [PATCH 02/17] =?UTF-8?q?=E6=97=A5=E5=BF=97=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/PlayerBaseMod.go | 2 +- src/server/game/RegisterNetworkFunc.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/game/PlayerBaseMod.go b/src/server/game/PlayerBaseMod.go index 04e0c630..86b7b8ce 100644 --- a/src/server/game/PlayerBaseMod.go +++ b/src/server/game/PlayerBaseMod.go @@ -528,7 +528,7 @@ func (p *PlayerBaseData) AddExp(player *Player, exp int, pexp int) (int, error) ChargeMod.TriggerChargeUnlock(int(BaseMod.Level), ChessMod.GetEmitList()) player.PushClientRes(ChargeMod.BackData()) OrderMod := player.PlayMod.getOrderMod() - OrderMod.TriggerOrder(BaseMod.Level, order.TRIGGER_TYPE_LV, ChessMod.GetOrderEmit(), player.PlayMod.getBaseMod().GetEnergyMul()) + player.TriggerOrder(BaseMod.Level, order.TRIGGER_TYPE_LV, ChessMod.GetOrderEmit(), player.PlayMod.getBaseMod().GetEnergyMul()) player.PushClientRes(OrderMod.BackData()) // 重载活动 player.initAcitivity() diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index 9b27574b..f58f07bd 100644 --- a/src/server/game/RegisterNetworkFunc.go +++ b/src/server/game/RegisterNetworkFunc.go @@ -364,7 +364,7 @@ func ReqRewardOrder(player *Player, buf []byte) error { // } else { // OrderMod.CreateOrderSeed(NewOrder) // } - OrderMod.TriggerOrder(Lv, order.TRIGGER_TYPE_ORDER, Emit, EnergyMul) + player.TriggerOrder(Lv, order.TRIGGER_TYPE_ORDER, Emit, EnergyMul) player.AddOrder() player.AddHighOrder() player.AddHighOrder2() From ff78509bc08197b695a214d2ca09d7532e5cbdd3 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 29 Sep 2025 16:23:29 +0800 Subject: [PATCH 03/17] =?UTF-8?q?=E5=85=8D=E5=B9=BF=E5=91=8A=E7=A4=BC?= =?UTF-8?q?=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/charge/ChargeCfg.go | 29 +++++++++++++++++++++------- src/server/game/ChargeFunc.go | 9 +++++++++ src/server/game/mod/charge/Charge.go | 22 ++++++++++++--------- 3 files changed, 44 insertions(+), 16 deletions(-) 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/game/ChargeFunc.go b/src/server/game/ChargeFunc.go index b01e2912..9ee8e820 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,14 @@ func SendCharge(p *Player, d *ChargeExtra) { }) } +func ADPetWorkFire(p *Player, ChargeId int) { + ChargeMod := p.PlayMod.getChargeMod() + Item := ChargeMod.FireAd(ChargeId) + if Item == nil { + return + } +} + func ActivityFire(p *Player, ChargeId int) { ActivityMod := p.PlayMod.getActivityMod() ActivityId := activityCfg.GetActivityGiftId(ChargeId) diff --git a/src/server/game/mod/charge/Charge.go b/src/server/game/mod/charge/Charge.go index 629a10b3..2cf79867 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 { @@ -181,7 +181,6 @@ func (c *ChargeMod) Fire(ChargeId int) (Item []*item.Item) { return } Item = c.FireGift(ChargeId) - c.FireAd(ChargeId) return } @@ -235,12 +234,17 @@ func (c *ChargeMod) FireGift(ChargeId int) []*item.Item { // 免广告礼包 func (c *ChargeMod) FireAd(ChargeId int) []*item.Item { - AdChargeId := chargeCfg.GetAdChargeId() - if ChargeId != AdChargeId { - return nil + 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 } - c.Ad = true - return nil + return Items } // 免费商店 From 74a8ba6d1b95478bf44d87662aac67b67f450d6f Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 29 Sep 2025 17:20:09 +0800 Subject: [PATCH 04/17] =?UTF-8?q?=E5=85=8D=E5=B9=BF=E5=91=8A=E7=A4=BC?= =?UTF-8?q?=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/charge/Charge.go | 1 + src/server/msg/Gameapi.pb.go | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/server/game/mod/charge/Charge.go b/src/server/game/mod/charge/Charge.go index 2cf79867..4c5c9016 100644 --- a/src/server/game/mod/charge/Charge.go +++ b/src/server/game/mod/charge/Charge.go @@ -296,6 +296,7 @@ func (c *ChargeMod) BackData() *msg.ResCharge { TodayCharge: float32(c.TodayCharge), MonthCharge: float32(c.MonthCharge), Wish: resWish, + AdEndTime: c.AdEndTime, } } 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" + From 8ee4ed3e933954f55fd78c5cccabb4dcdd118f92 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 29 Sep 2025 17:34:04 +0800 Subject: [PATCH 05/17] =?UTF-8?q?=E5=85=8D=E5=B9=BF=E5=91=8A=E7=A4=BC?= =?UTF-8?q?=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/ChargeFunc.go | 9 ++++++++- src/server/game/mod/charge/Charge.go | 11 +++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/server/game/ChargeFunc.go b/src/server/game/ChargeFunc.go index 9ee8e820..b535d95f 100644 --- a/src/server/game/ChargeFunc.go +++ b/src/server/game/ChargeFunc.go @@ -35,10 +35,17 @@ func SendCharge(p *Player, d *ChargeExtra) { func ADPetWorkFire(p *Player, ChargeId int) { ChargeMod := p.PlayMod.getChargeMod() - Item := ChargeMod.FireAd(ChargeId) + 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) { diff --git a/src/server/game/mod/charge/Charge.go b/src/server/game/mod/charge/Charge.go index 4c5c9016..05953ea0 100644 --- a/src/server/game/mod/charge/Charge.go +++ b/src/server/game/mod/charge/Charge.go @@ -181,6 +181,7 @@ func (c *ChargeMod) Fire(ChargeId int) (Item []*item.Item) { return } Item = c.FireGift(ChargeId) + c.FireAd(ChargeId) return } @@ -234,6 +235,16 @@ func (c *ChargeMod) FireGift(ChargeId int) []*item.Item { // 免广告礼包 func (c *ChargeMod) FireAd(ChargeId int) []*item.Item { + AdChargeId := chargeCfg.GetAdChargeId() + if ChargeId != AdChargeId { + return nil + } + c.Ad = true + return nil +} + +// 免广告礼包 +func (c *ChargeMod) FireAdReward(ChargeId int) []*item.Item { Items, PetWorkDay := chargeCfg.GetADReward(ChargeId) if PetWorkDay != 0 { Now := GoUtil.Now() From 04c33850c0ba5dd05a7ec0ab115a02709d814d4b Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 30 Sep 2025 10:23:30 +0800 Subject: [PATCH 06/17] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/face/Face.go | 1 - src/server/game/mod/order/Order.go | 17 +++++------------ src/server/game/mod/order/OrderFunc.go | 22 +++------------------- 3 files changed, 8 insertions(+), 32 deletions(-) diff --git a/src/server/game/mod/face/Face.go b/src/server/game/mod/face/Face.go index bde96eb3..51264fec 100644 --- a/src/server/game/mod/face/Face.go +++ b/src/server/game/mod/face/Face.go @@ -30,7 +30,6 @@ func (f *FaceMod) InitData() { now := GoUtil.Now() if f.List == nil { f.List = make(map[int]*Face) - f.SetId = 1 } InitId := faceCfg.GetInitList() diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index fbe4ed05..5ca9e842 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 } diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index e4dffa4f..4c0fa88f 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -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)) From 3992d23f462eb7809fcc9388dec2f6785a32bef9 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 10 Oct 2025 11:29:18 +0800 Subject: [PATCH 07/17] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E6=89=93=E7=82=B9?= =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/PlayerFunc.go | 13 +++++++------ src/server/game/Trigger.go | 2 +- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 1f1f076d..c6e95e59 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -1022,14 +1022,9 @@ func (player *Player) TriggerOrder(lv int, Type string, Emit []int, EnergyMul in if v.Preview != "" && !exists && !GoUtil.InArray(v.Id, OrderMod.FinishOrder) { if OrderMod.CheckCondition(lv, v.Preview, Type, Emit, FixedOrder, OrderList) { OrderMod.AddFixOrder(v.Id, v.MergeList, order.Preview_type, v.Items) - player.TeLog("preset_order_birth", map[string]interface{}{ - "order_id": v.Id, - "order_item_id": v.MergeList, - "preset_order_group": v.Group, - "preset_order_step": v.Step, - }) } } + if v.Appear != "" { if OrderMod.CheckCondition(lv, v.Appear, Type, Emit, FixedOrder, OrderList) { Type := order.Fixed_type @@ -1037,6 +1032,12 @@ func (player *Player) TriggerOrder(lv int, Type string, Emit []int, EnergyMul in if OrderType != 0 { Type = OrderType } + player.TeLog("preset_order_birth", map[string]interface{}{ + "order_id": v.Id, + "order_item_id": v.MergeList, + "preset_order_group": v.Group, + "preset_order_step": v.Step, + }) if exists { orderInfo.Type = order.Fixed_type OrderMod.OrderList[v.Id] = orderInfo diff --git a/src/server/game/Trigger.go b/src/server/game/Trigger.go index 30e71db5..f6638f9c 100644 --- a/src/server/game/Trigger.go +++ b/src/server/game/Trigger.go @@ -111,7 +111,7 @@ func TriggerShippingOrder(player *Player, req *msg.ReqShippingOrder) { } } if OrderData == nil { - GoUtil.SendFeishuFatal(int(player.M_DwUin), "GoogleVerify支付校验异常", fmt.Sprintf("GoogleVerify parmas OrderSn:%s; ProduceId:%s; Token:%s", OrderSn, req.ProduceId, req.Token)) + GoUtil.SendFeishuFatal(int(player.M_DwUin), "GoogleVerify支付校验异常", fmt.Sprintf("GoogleVerify parmas OrderSn:%s; ProduceId:%s; Token:%s; err: %v", OrderSn, req.ProduceId, req.Token, err)) log.Debug("[order data nil] Uid:%d;OrderSn:%s;PayOrder:%s;", player.M_DwUin, OrderSn, req.ProduceId) return } else { From 78221562cf1c3b71afae9415b1c0fb10ef014b59 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Fri, 10 Oct 2025 16:08:14 +0800 Subject: [PATCH 08/17] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=89=93=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/Player.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/server/game/Player.go b/src/server/game/Player.go index 09cd8732..ffe6c8a3 100644 --- a/src/server/game/Player.go +++ b/src/server/game/Player.go @@ -408,6 +408,12 @@ func (p *Player) Outline() { BaseMod := p.PlayMod.getBaseMod() BaseMod.Outline(int(Cacumulative)) p.PlayMod.save() + p.TeLog("logout", map[string]interface{}{ + "order_list": p.PlayMod.getOrderMod().GetOrderList(), + "after_level": p.PlayMod.getBaseMod().GetLevel(), + "tmp_diamond": p.PlayMod.getBaseMod().GetDiamond(), + "tmp_energy": p.PlayMod.getBaseMod().GetEnergy(), + }) p.UpdateUserInfo() } From 808e3ebf1b934d4c8f548964f3ef3328b01c26d6 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Sat, 11 Oct 2025 10:22:35 +0800 Subject: [PATCH 09/17] =?UTF-8?q?=E4=BA=A7=E7=89=A9=E5=95=86=E5=BA=97?= =?UTF-8?q?=E4=BB=B7=E6=A0=BC=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/charge/Charge.go | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/server/game/mod/charge/Charge.go b/src/server/game/mod/charge/Charge.go index 05953ea0..b937f41f 100644 --- a/src/server/game/mod/charge/Charge.go +++ b/src/server/game/mod/charge/Charge.go @@ -323,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) + ChessLv += DynamicLv + Diamond := math.Round(math.Pow(2, float64(ChessLv)) / 18) + RandList = append(RandList, &Rand{ChessId: c, Diamond: int(Diamond)}) } } //ColorList = append(ColorList, ProduceList...) From 0dc7af251557b6227709f636d060aa9df5814749 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Sat, 11 Oct 2025 11:06:13 +0800 Subject: [PATCH 10/17] =?UTF-8?q?=E5=8A=A8=E6=80=81=E9=9A=BE=E5=BA=A6?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/mergeData/MergeDataCfg.go | 29 +++++++-- src/server/game/PlayerChessMod.go | 2 +- src/server/game/UnitTest.go | 2 +- src/server/game/mod/charge/Charge.go | 2 +- src/server/game/mod/charge/ChargeFunc.go | 73 +++++++++++------------ src/server/game/mod/order/Order.go | 2 +- src/server/game/mod/order/OrderFunc.go | 72 +++++++++++----------- 7 files changed, 101 insertions(+), 81 deletions(-) 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/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/UnitTest.go b/src/server/game/UnitTest.go index 6f46332e..41166570 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)) } } diff --git a/src/server/game/mod/charge/Charge.go b/src/server/game/mod/charge/Charge.go index b937f41f..0e3d5155 100644 --- a/src/server/game/mod/charge/Charge.go +++ b/src/server/game/mod/charge/Charge.go @@ -329,7 +329,7 @@ func (c *ChargeMod) InitChessShop(Emit []int) { continue } ChessLv := mergeDataCfg.GetLvById(c) - DynamicLv := mergeDataCfg.GetAdjust(v, p) + DynamicLv := mergeDataCfg.GetAdjust(v, p, 0) ChessLv += DynamicLv Diamond := math.Round(math.Pow(2, float64(ChessLv)) / 18) RandList = append(RandList, &Rand{ChessId: c, Diamond: int(Diamond)}) 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/order/Order.go b/src/server/game/mod/order/Order.go index 5ca9e842..24356935 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -666,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 4c0fa88f..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 { @@ -737,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] { @@ -949,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) } } From dfb54e70f7f7f0273efc226c6bf635a95a4ef4a6 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Sat, 11 Oct 2025 14:23:10 +0800 Subject: [PATCH 11/17] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/admin.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/game/admin.go b/src/server/game/admin.go index c1bed79c..46937a11 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() From b49d7dbec3f3e122dffe2129972e27d70b0c392c Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Sat, 11 Oct 2025 16:36:07 +0800 Subject: [PATCH 12/17] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/admin.go | 1 + 1 file changed, 1 insertion(+) diff --git a/src/server/game/admin.go b/src/server/game/admin.go index 46937a11..11d6d871 100644 --- a/src/server/game/admin.go +++ b/src/server/game/admin.go @@ -141,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 { From 2149ee404b1278f435d8feb1f60688fec08bdad3 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Tue, 14 Oct 2025 10:46:23 +0800 Subject: [PATCH 13/17] =?UTF-8?q?=E6=B6=88=E8=80=97=E5=93=81=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/playroom/playroomCfg.go | 49 ++++++++++- src/server/game/PlayerFunc.go | 110 +++++++++++++----------- src/server/game/RegisterNetworkFunc.go | 3 + src/server/game/mod/item/Item.go | 22 +++-- src/server/gamedata/type.go | 7 +- 5 files changed, 126 insertions(+), 65 deletions(-) diff --git a/src/server/conf/playroom/playroomCfg.go b/src/server/conf/playroom/playroomCfg.go index a2bd6ae8..04f77c2b 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 { diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index c6e95e59..7c8ea637 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -1169,7 +1169,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 @@ -1267,63 +1267,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 { @@ -1489,3 +1459,41 @@ 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) + if feed.Num <= 1 { + RandList := OrderItem[1] + NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1)) + continue + } + clean := PlayroomMod.GetPhysiology(playroom.PHYSIOLOGY_TYPE_CLEAN) + if clean.Num <= 5 { + RandList := OrderItem[2] + NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1)) + continue + } + RandList := make([]int, 0) + for _, v1 := range OrderItem { + RandList = append(RandList, v1...) + } + NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1)) + } + return NewItems +} diff --git a/src/server/game/RegisterNetworkFunc.go b/src/server/game/RegisterNetworkFunc.go index f58f07bd..e72934f4 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/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/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 } From 551afa682afc7036cb37a39da87112fa260078b4 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 15 Oct 2025 17:47:16 +0800 Subject: [PATCH 14/17] =?UTF-8?q?=E6=A3=8B=E5=AD=90=E5=95=86=E5=BA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/charge/Charge.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/mod/charge/Charge.go b/src/server/game/mod/charge/Charge.go index 0e3d5155..538f4030 100644 --- a/src/server/game/mod/charge/Charge.go +++ b/src/server/game/mod/charge/Charge.go @@ -331,7 +331,7 @@ func (c *ChargeMod) InitChessShop(Emit []int) { ChessLv := mergeDataCfg.GetLvById(c) DynamicLv := mergeDataCfg.GetAdjust(v, p, 0) ChessLv += DynamicLv - Diamond := math.Round(math.Pow(2, float64(ChessLv)) / 18) + Diamond := math.Round(math.Pow(2, float64(ChessLv-1)) / 18) RandList = append(RandList, &Rand{ChessId: c, Diamond: int(Diamond)}) } } From e038ca4ad4631f357debdf10c84e641a295c69e5 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 15 Oct 2025 18:35:34 +0800 Subject: [PATCH 15/17] =?UTF-8?q?=E6=B6=88=E8=80=97=E5=93=81=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/playroom/playroomCfg.go | 22 ++++++++++++++ src/server/game/PlayerFunc.go | 40 +++++++++++++++++++++++-- src/server/game/UnitTest.go | 9 ++++++ 3 files changed, 69 insertions(+), 2 deletions(-) diff --git a/src/server/conf/playroom/playroomCfg.go b/src/server/conf/playroom/playroomCfg.go index 04f77c2b..312418cd 100644 --- a/src/server/conf/playroom/playroomCfg.go +++ b/src/server/conf/playroom/playroomCfg.go @@ -693,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/PlayerFunc.go b/src/server/game/PlayerFunc.go index 7c8ea637..c46108c7 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" @@ -1478,13 +1479,18 @@ func (p *Player) FormatPetOrderItem(Items []*item.Item) []*item.Item { OrderItem = playroomCfg.GetOrderItemByGrade(3) } feed := PlayroomMod.GetPhysiology(playroom.PHYSIOLOGY_TYPE_FEED) - if feed.Num <= 1 { + 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) - if clean.Num <= 5 { + 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 @@ -1497,3 +1503,33 @@ func (p *Player) FormatPetOrderItem(Items []*item.Item) []*item.Item { } 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/UnitTest.go b/src/server/game/UnitTest.go index 41166570..a8eb4b4f 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -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 +} From f04b58b0917336f1e44c9a5ef78cfcee928590e0 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Wed, 15 Oct 2025 18:54:24 +0800 Subject: [PATCH 16/17] =?UTF-8?q?=E6=B6=88=E8=80=97=E5=93=81=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/PlayerFunc.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index c46108c7..f04c771a 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -1496,7 +1496,10 @@ func (p *Player) FormatPetOrderItem(Items []*item.Item) []*item.Item { continue } RandList := make([]int, 0) - for _, v1 := range OrderItem { + for k, v1 := range OrderItem { + if k == 1 || k == 2 { + continue + } RandList = append(RandList, v1...) } NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1)) From 2d68b7e2afa36647a3737e90e98e31e19d157101 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Thu, 16 Oct 2025 10:36:07 +0800 Subject: [PATCH 17/17] =?UTF-8?q?=E9=82=AE=E4=BB=B6=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/game/mod/mail/Mail.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) 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), }, } }