商业化上线
网络服里用钻石/绿宝石购买的商品,必须走商品审核,通过后才能上架;商品在游戏里生效,要配合官方商城插件(neteaseShop)。
商品提审
- 开发者平台【PE 商品管理】添加商品,填基本信息后保存
- 实现指令:开发者自定义的指令,每次购买执行 1 次
- 首充内容:勾选后玩家首次购买有额外发货;首充实现指令首次购买执行 1 次
- 在【查看详情 → 库存编辑】提交审核
- 审核通过的商品出现在【橱窗编辑】,点上架即可在客户端显示(未过审无法在橱窗展示)
关联商城插件
强烈推荐用官方商城插件实现发货。
打开道具商店
| 端 | 配置 |
|---|---|
| 仅 PE 端 | 可用引擎自带商店(use_custom_shop=false)或插件自定义商店(true) |
| 需支持 PC 端 | PC 引擎无自带商店,必须用插件自定义商店(use_custom_shop=true) |
实现发货逻辑
- 无特殊发货:自动发货(
auto_detect=true),监听ServerShipItemsEvent处理 - 有特殊发货(如到特定 NPC 对话):关闭自动发货(
auto_detect=false),用 APIStartShipProcess触发查单
python
class TestServerSystem(ServerSystem):
def __init__(self, namespace, systemName):
self.ListenForEvent("neteaseShop", "neteaseShopDev",
"ServerShipItemsEvent", self, self.OnServerShipItems)
def OnServerShipItems(self, args):
# args["entities"] 每项含 uuid、item_num、orderid、cmd、buy_time 等
for entity in args["entities"]:
itemNum = entity["item_num"]
cmd = entity["cmd"]
# TODO: 根据 cmd 给玩家发货
self.ShipSuccess(args) # 发完货必须通知 Apollo
def ShipSuccess(self, args):
shop = serverApi.GetSystem("neteaseShop", "neteaseShopDev")
shop.ShipOrderSuccess(args) # 通知发货成功entities 里每笔订单的 uuid 形如 8a0886b5-xxxx-xxxx-xxxx-xxxxxxxxxxxx(玩家唯一编号),发完货必须回调 ShipOrderSuccess 告知 Apollo,否则订单不闭环。
Spigot 开服的商城
用 Spigot 框架开服时,商城插件实现不同,参考第三方框架章节。
测试
- 申请测试货币:MC Studio【管理 → PC 组件管理】申请,只在测试环境生效
- 移动端:测试版登录器进游戏,左上角商店入口购买
- PC 端:【开发测试】开客户端,必须用插件自定义商店(
use_custom_shop=true),左上角【打开商店】 - MC Studio:【线上服务器 → 更多 → 商店】打开测试商店界面
