一.在哪里

商店配置相关文件在Resources\ExcelOutput\ShopGoodsConfig.json文件中

二.功能解析

结构化的商品配置数据文件,主要用于游戏或应用内商店系统的商品管理

三.关键字段数据解析

1.GoodsID

功能作用

  • 商品分类:首位数字定义大类(1=材料,2=装备,3=皮肤)
  • 库存分区:第2-3位标识库存池,实现跨商店库存共享
  • 变体管理:末两位区分颜色/款式等变体,共享基础属性

示例:

// 根据GoodsID获取变体系列
public List<Goods> getVariants(long baseId) {
    return goodsRepo.findByBaseId(baseId / 100 * 100); 
}

2.PurchaseType

功能矩阵

类型 支付流程 适用场景
DIRECT 立即扣款 → 发货 普通商品
BUNDLE 验证捆绑项完整性 → 组合折扣 礼包类商品
SUBSCRIPTION 创建周期扣款协议 → 按需发货 月卡/订阅服务
RENTAL 冻结押金 → 按时间计费 租赁类商品

3.LimitConditions

功能实现

  • 多条件嵌套
  • 动态加载器
  • 缓存优化

4.CurrencyCost

功能逻辑

  1. 多币种支付:允许混合支付(如50%钻石+50%金币)
  2. 汇率转换:基于实时牌价计算等价金额
  3. 优先级系统:按配置顺序尝试扣款,首可用货币完成支付

执行流程

graph LR
    开始 --> 解析货币列表
    解析货币列表 --> 遍历货币项
    遍历货币项 --> 检查余额是否充足
    检查余额是否充足 -->|是| 执行扣款
    执行扣款 --> 结束
    检查余额是否充足 -->|否| 下一货币项

5.DynamicPricing

功能组件

  • 公式解析器:支持数学函数(Max/Min/Log等)
  • 变量注入器:实时插入玩家属性/市场数据
  • 沙箱执行:防止恶意公式导致系统崩溃

示例公式

// 根据玩家消费能力动态定价
price = BasePrice * (1 - PlayerTier/10) 
       * (VIPLevel >=5 ? 0.9 : 1.0) 
       + TimeSensitiveBonus

四.关键字段数据解析

GoodsName

数据结构

interface I18NName {
    [locale: string]: string; // zh_CN|en_US|ja_JP...
    default: string;
}

存储示例

"GoodsName": {
    "zh_CN": "123",
    "en_US": "123",
    "default": "123" 
}

五.数据结构示例

[
  {
    // 商品基础信息
    "GoodsID": 102023,            // 商品唯一标识ID
    "ShopID": 102,                // 所属商店ID(例如:102=材料商店)
    "GoodsSortID": 5,             // 商品在商店内的排序位置(数值越小显示越靠前)

    // 购买限制条件
    "LimitType1": "Level",        // 限制类型1:玩家等级限制
    "LimitValue1List": [30],      // 限制值1:需达到30级才能购买
    "LimitValue2List": [],        // 限制值2:无额外限制(字段保留)
    "LimitTimes": 30,             // 总限购次数(结合RefreshType生效)

    // 货币与定价
    "CurrencyList": [251],        // 支付货币类型ID(251=星琼(例)
    "CurrencyCostList": [18],     // 支付货币数量(需消耗18星琼(例)

    // 商品内容
    "ItemID": 110142,             // 售卖物品ID(例如:110142=传奇武器箱)
    "ItemCount": 1,               // 售卖物品数量(购买获得1个)

    // 刷新规则
    "RefreshType": "MONTH",       // 库存刷新周期:每月重置限购次数
    "OnShelfValue1List": [],      // 上架时间限制(空表示永久上架)

    // 运营配置
    "ScheduleDataID": 10102023    // 关联活动排期ID(对应运营活动配置)
  },
  {
    // 商品基础信息
    "GoodsID": 102024,            // 商品唯一标识ID(同商店不同商品)
    "ShopID": 102,                // 所属商店ID(与上商品同一商店)
    "GoodsSortID": 5,             // 排序相同,可能为同分类商品

    // 购买限制条件(与上商品相同规则)
    "LimitType1": "Level",        // 等级限制
    "LimitValue1List": [30],      // 需30级
    "LimitValue2List": [],        // 无额外限制
    "LimitTimes": 30,             // 限购30次

    // 货币与定价(相同价格体系)
    "CurrencyList": [251],        // 支付货币:星琼(例
    "CurrencyCostList": [18],     // 价格:18星琼(例

    // 商品内容(不同物品)
    "ItemID": 110152,             // 售卖物品ID(例如:110152=史诗防具箱)
    "ItemCount": 1,               // 数量1个

    // 刷新规则(相同周期)
    "RefreshType": "MONTH",       // 每月重置
    "OnShelfValue1List": [],      // 永久上架

    // 运营配置(不同活动关联)
    "ScheduleDataID": 10102024    // 不同活动排期ID
  }
]
  1. 等级限制联动规则
    LimitType1 + LimitValue1List 共同作用,需要同时满足:
if player.level >= LimitValue1List[0] and remaining_purchase > 0:
    allow_purchase()

限购逻辑实现
RefreshType 与 LimitTimes 配合:

| 刷新类型   | 重置周期                | 典型场景              |
|------------|-------------------------|-----------------------|
| MONTH      | 每月1日0点重置购买次数   | 月度限量商品          |
| WEEK       | 每周一5点重置           | 周常补给包            |
| NEVER      | 永不重置                | 永久限购1次的商品     |

货币支付逻辑
CurrencyList包含多个货币时,表示混合支付

"CurrencyList": [251, 201],     // 钻石+金币(例
"CurrencyCostList": [18, 2000]  // 18钻石 + 2000金币

六.运行逻辑

购买事务流程图

@startuml
start -> 输入商品ID
-> 加载商品配置
-> 验证玩家权限
if (条件满足?) then
  -> 计算最终价格
  -> 发起支付请求
  if (支付成功?) then
    -> 扣除库存
    -> 发放物品
  else
    -> 返回错误
  endif
else
  -> 显示未满足条件
endif
-> 结束
@enduml

七.示例修改解析

{
  "GoodsID": 11010101,
  "PurchaseType": "BUNDLE",
  "LimitConditions": {
    "PlayerLevel": 1,
    "MaxPurchase": 1,
    "NewPlayerOnly": true
  },
  "Pricing": {
    "CurrencyCost": [
      {"Diamond": 10},
      {"Gold": 500}
    ],
    "DiscountFormula": "0.1 * RegDays" // 注册天数越多折扣越大
  },
  "Delivery": {
    "StagedRelease": [
      {"Day": 1, "Items": [{"ID": 101, "Amount": 1}]},
      {"Day": 3, "Items": [{"ID": 102, "Amount": 2}]}
    ]
  }
}

实现效果

  • 仅限新玩家购买一次
  • 注册第1天获得基础道具,第3天追加奖励
  • 价格随注册天数递减,最低可至1折

提示

本商店修改教程应当配合以下教程食用

崩铁服务端修改系列之商店内容的配置4-承心识梦
崩铁服务端修改系列之商店内容的配置5-承心识梦

综合讲解看以下文章

崩铁服务端修改系列之商店内容的配置6-承心识梦
温馨提示: 本文最后更新于2025-03-08 08:40:57,某些文章具有时效性,若有错误或已失效,请在下方留言或联系承心识梦
© 版权声明
评论 抢沙发

请登录后发表评论

    暂无评论内容