From dddf7d39533b074ce9224d25f5e5ad917c01a810 Mon Sep 17 00:00:00 2001 From: hahwu <31872165+hahwu@users.noreply.github.com> Date: Mon, 22 Sep 2025 10:56:35 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E4=BB=B7=E6=A0=BC=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/server/conf/mergeData/MergeDataCfg.go | 24 +++++++++++++++++- src/server/conf/order/orderCfg.go | 12 +++++++++ src/server/game/PlayerFunc.go | 31 +++++++++++++++++++---- src/server/game/UnitTest.go | 6 ++--- src/server/game/mod/order/Order.go | 9 ++----- src/server/game/mod/order/OrderFunc.go | 11 ++++++-- 6 files changed, 75 insertions(+), 18 deletions(-) diff --git a/src/server/conf/mergeData/MergeDataCfg.go b/src/server/conf/mergeData/MergeDataCfg.go index dc33ca16..8f2f34cf 100644 --- a/src/server/conf/mergeData/MergeDataCfg.go +++ b/src/server/conf/mergeData/MergeDataCfg.go @@ -377,7 +377,29 @@ func GetHighSourceChestItem() []*item.Item { r = append(r, item.NewItem(item.ITEM_ENERGY_ID, B4)) return r } - +func DynamicLevRev(Lv int, EmitId int, Color string) int { + data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) + if err != nil { + log.Debug("DynamicLev GetOne EmitId:%v not found", EmitId) + return Lv + } + DynamicLv := gamedata.GetStringValue(data, "Dynamic") + if DynamicLv == "" { + return Lv + } + Arr := strings.Split(DynamicLv, ",") + for _, v := range Arr { + Arr2 := strings.Split(v, "=") + if len(Arr2) != 2 { + continue + } + if Color == Arr2[0] { + NewLv, _ := strconv.Atoi(Arr2[1]) + return Lv + NewLv + } + } + return Lv +} func DynamicLev(Lv int, EmitId int, Color string) int { data, err := gamedata.GetDataByIntKey(CFG_NAME, EmitId) if err != nil { diff --git a/src/server/conf/order/orderCfg.go b/src/server/conf/order/orderCfg.go index bcbfe680..b786ee05 100644 --- a/src/server/conf/order/orderCfg.go +++ b/src/server/conf/order/orderCfg.go @@ -13,6 +13,7 @@ const ( CFG_START_ORDER = "StartOrder" CFG_CONST = "OrderConst" CFG_ORDER_SCENE = "OrderScene" + CFG_ORDER_K = "OrderK" ) func init() { @@ -22,6 +23,17 @@ func init() { gamedata.InitCfg(CFG_START_ORDER) gamedata.InitCfg(CFG_CONST) gamedata.InitCfg(CFG_ORDER_SCENE) + gamedata.InitCfg(CFG_ORDER_K) +} + +func GetOrderK(Lv int) int { + data, err := gamedata.GetDataByIntKey(CFG_ORDER_K, Lv) + if err != nil { + return 0 + } + Energy := gamedata.GetIntValue(data, "Energy") + K := gamedata.GetFloatValue(data, "K") + return int(float64((Energy/10)*10) * K) } func GetOrderFactor(Scene int) int { diff --git a/src/server/game/PlayerFunc.go b/src/server/game/PlayerFunc.go index 99e26c8e..e86bc0e9 100644 --- a/src/server/game/PlayerFunc.go +++ b/src/server/game/PlayerFunc.go @@ -103,7 +103,10 @@ func handle(p *Player, m *msg.Msg) error { p.PushClientRes(CardMod.NotifyCard()) p.PushClientRes(CardMod.NotifyTimes()) case msg.HANDLE_TYPE_EX_CARD_TIMEOUT: // B收到A同意置换卡牌超时 - CardInfo := m.Extra.(card.CardInfo) + CardInfo, ok := m.Extra.(card.CardInfo) + if !ok { + return nil + } CardMod := p.PlayMod.getCardMod() p.AddCard(CardInfo.ExId) p.PushClientRes(CardMod.NotifyCard()) @@ -267,7 +270,13 @@ func handle(p *Player, m *msg.Msg) error { p.AddLog(m.From, friend.LOG_TYPE_TREASURE_HELP, "", m.SendT) p.HandleItem(Items, proto.ITEM_POP_LABEL_Friendtreasure.String()) case msg.HANDLE_TYPE_HANDBOOK_COLLECTION: // 图鉴收集奖励 - data := m.Extra.(msg.HandbookMsg) + if m.Extra != nil { + return nil + } + data, ok := m.Extra.(msg.HandbookMsg) + if !ok { + return nil + } p.AddLog(m.From, friend.LOG_TYPE_HANDBOOK, data.Type, m.SendT) case msg.HANDLE_TYPE_HANDBOOK_UPVOTE: // 图鉴点赞 FriendMod := p.PlayMod.getFriendMod() @@ -1050,6 +1059,7 @@ func (player *Player) TriggerOrder(lv int, Type string, Emit []int, EnergyMul in func (player *Player) AddOrder() { BaseMod := player.PlayMod.getBaseMod() OrderMod := player.PlayMod.getOrderMod() + ChessMod := player.PlayMod.getChessMod() MaxOrderNum := orderCfg.GetOrderNum(BaseMod.GetLevel()) n := 0 if OrderMod.LastOrder.Type == order.Preheat_type { @@ -1061,7 +1071,7 @@ func (player *Player) AddOrder() { OrderMod.PreheatStep[ChessColor]++ Items, ok := order.PreheatItems[OrderMod.PreheatStep[ChessColor]] if !ok { - Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, order.GetOrderStar([]int{NewChessId}))} + Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, order.GetOrderStar([]int{NewChessId}, ChessMod.GetOrderEmit()))} } OrderMod.AddPreheatOrder([]int{NewChessId}, order.DIFF_LOW, order.Preheat_type, Items) } @@ -1074,6 +1084,17 @@ func (player *Player) AddOrder() { for i := n; i < MaxOrderNum; i++ { player.CreateNormalOrder() } + for k, v := range OrderMod.OrderList { + if v.Type == order.Super_type { + continue + } + if len(v.Items) > 0 { + continue + } + Star := order.GetOrderStar(v.MergeId, ChessMod.GetOrderEmit()) + v.Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, Star)} + OrderMod.OrderList[k] = v + } } func (player *Player) CreateNormalOrder() { Exp, PExp := userCfg.GetLevUpExp(player.GetPlayerBaseMod().GetLevel()) @@ -1111,7 +1132,7 @@ func (player *Player) CreateNormalOrder() { continue } Items := make([]*item.Item, 0) - Star := order.GetOrderStar(v.MergeId) + Star := order.GetOrderStar(v.MergeId, ChessMod.GetOrderEmit()) Star = int(float64(Star)*float64(OrderFactor)/1000) * 10 Items = player.GetPetOrderReward(Star, Items) if len(Items) == 1 && Items[0].Id == item.ITEM_STAR_ID { @@ -1194,7 +1215,7 @@ func (player *Player) CreateNormalOrder() { continue } Items := make([]*item.Item, 0) - Star := order.GetOrderStar(v.MergeId) + Star := order.GetOrderStar(v.MergeId, ChessMod.GetOrderEmit()) Star = int(float64(Star)*float64(OrderFactor)/1000) * 10 v.Items = append(Items, &item.Item{Id: item.ITEM_STAR_ID, Num: Star}) OrderMod.OrderList[k] = v diff --git a/src/server/game/UnitTest.go b/src/server/game/UnitTest.go index dfe3c02d..bd84afb1 100644 --- a/src/server/game/UnitTest.go +++ b/src/server/game/UnitTest.go @@ -289,9 +289,9 @@ func UnitPlayroomOrder(p *Player) error { } func UnitPetOrder(p *Player) error { - VarMod := p.PlayMod.getVarMod() - VarMod.DailyResetTime = 0 - p.ZeroUpdate(nil) + ChessMod := p.PlayMod.getChessMod() + a := order.GetOrderStar([]int{246, 15}, ChessMod.GetOrderEmit()) + fmt.Print(a) return nil } diff --git a/src/server/game/mod/order/Order.go b/src/server/game/mod/order/Order.go index 6df55534..5581041a 100644 --- a/src/server/game/mod/order/Order.go +++ b/src/server/game/mod/order/Order.go @@ -478,17 +478,12 @@ func (o *OrderMod) CreateSuperOrder(lv int, Emit []int, EnergyMul int) error { } func (o *OrderMod) addOrder(ChessList []int, Diff int, Type int) int { o.Auto_id++ - Star := GetOrderStar(ChessList) - Items := make([]*item.Item, 0) - if Type != Super_type { - Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, Star)} - } Order := Order{ MergeId: ChessList, Diff: Diff, Type: Type, Timestamp: time.Now().Unix(), - Items: Items, + Items: nil, } o.OrderList[o.Auto_id] = Order if Type == Common_type { @@ -651,7 +646,7 @@ func (o *OrderMod) ChangeEnergyMul(lv int, Emit []int, EnergyMul int, ChessList delete(o.OrderList, k) Items, ok := PreheatItems[PreheatStep] if !ok { - Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, GetOrderStar(ChessList))} + Items = []*item.Item{item.NewItem(item.ITEM_STAR_ID, GetOrderStar(ChessList, Emit))} } o.addPreheatOrder([]int{NewChessId}, DIFF_LOW, Preheat_type, Items) } diff --git a/src/server/game/mod/order/OrderFunc.go b/src/server/game/mod/order/OrderFunc.go index 26a4367f..b8dfb1e2 100644 --- a/src/server/game/mod/order/OrderFunc.go +++ b/src/server/game/mod/order/OrderFunc.go @@ -657,10 +657,17 @@ func getEmitSeries(o *OrderMod, Emit []int) string { } // 订单能获取的宠物币 -func GetOrderStar(ChessList []int) int { +func GetOrderStar(ChessList []int, EmitList []int) int { Star := 0 for _, v := range ChessList { - Star += mergeDataCfg.GetStarById(v) + ChessLv := mergeDataCfg.GetLvById(v) + Color := mergeDataCfg.GetColorById(v) + EmitId := GetEmitByColor(EmitList, Color) + if EmitId == 0 { + continue + } + NewChessLv := mergeDataCfg.DynamicLevRev(ChessLv, EmitId, Color) + Star += orderCfg.GetOrderK(NewChessLv) } return Star }